mirror of
https://github.com/alanorth/cgspace-notes.git
synced 2024-12-18 19:22:18 +01:00
440 lines
19 KiB
HTML
440 lines
19 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" >
|
|
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
|
|
|
|
<meta property="og:title" content="February, 2021" />
|
|
<meta property="og:description" content="2021-02-01
|
|
|
|
Abenet said that CIP found more duplicate records in their export from AReS
|
|
|
|
I re-opened the issue on OpenRXV where we had previously noticed this
|
|
The shared link where the duplicates are is here: https://cgspace.cgiar.org/explorer/shared/heEOz3YBnXdK69bR2ra6
|
|
|
|
|
|
I had a call with CodeObia to discuss the work on OpenRXV
|
|
Check the results of the AReS harvesting from last night:
|
|
|
|
$ curl -s 'http://localhost:9200/openrxv-items-temp/_count?q=*&pretty'
|
|
{
|
|
"count" : 100875,
|
|
"_shards" : {
|
|
"total" : 1,
|
|
"successful" : 1,
|
|
"skipped" : 0,
|
|
"failed" : 0
|
|
}
|
|
}
|
|
" />
|
|
<meta property="og:type" content="article" />
|
|
<meta property="og:url" content="https://alanorth.github.io/cgspace-notes/2021-02/" />
|
|
<meta property="article:published_time" content="2021-02-01T10:13:54+02:00" />
|
|
<meta property="article:modified_time" content="2021-02-01T12:28:54+02:00" />
|
|
|
|
|
|
|
|
<meta name="twitter:card" content="summary"/>
|
|
<meta name="twitter:title" content="February, 2021"/>
|
|
<meta name="twitter:description" content="2021-02-01
|
|
|
|
Abenet said that CIP found more duplicate records in their export from AReS
|
|
|
|
I re-opened the issue on OpenRXV where we had previously noticed this
|
|
The shared link where the duplicates are is here: https://cgspace.cgiar.org/explorer/shared/heEOz3YBnXdK69bR2ra6
|
|
|
|
|
|
I had a call with CodeObia to discuss the work on OpenRXV
|
|
Check the results of the AReS harvesting from last night:
|
|
|
|
$ curl -s 'http://localhost:9200/openrxv-items-temp/_count?q=*&pretty'
|
|
{
|
|
"count" : 100875,
|
|
"_shards" : {
|
|
"total" : 1,
|
|
"successful" : 1,
|
|
"skipped" : 0,
|
|
"failed" : 0
|
|
}
|
|
}
|
|
"/>
|
|
<meta name="generator" content="Hugo 0.80.0" />
|
|
|
|
|
|
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "http://schema.org",
|
|
"@type": "BlogPosting",
|
|
"headline": "February, 2021",
|
|
"url": "https://alanorth.github.io/cgspace-notes/2021-02/",
|
|
"wordCount": "1355",
|
|
"datePublished": "2021-02-01T10:13:54+02:00",
|
|
"dateModified": "2021-02-01T12:28:54+02:00",
|
|
"author": {
|
|
"@type": "Person",
|
|
"name": "Alan Orth"
|
|
},
|
|
"keywords": "Notes"
|
|
}
|
|
</script>
|
|
|
|
|
|
|
|
<link rel="canonical" href="https://alanorth.github.io/cgspace-notes/2021-02/">
|
|
|
|
<title>February, 2021 | CGSpace Notes</title>
|
|
|
|
|
|
<!-- combined, minified CSS -->
|
|
|
|
<link href="https://alanorth.github.io/cgspace-notes/css/style.beb8012edc08ba10be012f079d618dc243812267efe62e11f22fe49618f976a4.css" rel="stylesheet" integrity="sha256-vrgBLtwIuhC+AS8HnWGNwkOBImfv5i4R8i/klhj5dqQ=" crossorigin="anonymous">
|
|
|
|
|
|
<!-- minified Font Awesome for SVG icons -->
|
|
|
|
<script defer src="https://alanorth.github.io/cgspace-notes/js/fontawesome.min.ffbfea088a9a1666ec65c3a8cb4906e2a0e4f92dc70dbbf400a125ad2422123a.js" integrity="sha256-/7/qCIqaFmbsZcOoy0kG4qDk+S3HDbv0AKElrSQiEjo=" crossorigin="anonymous"></script>
|
|
|
|
<!-- RSS 2.0 feed -->
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
|
|
<div class="blog-masthead">
|
|
<div class="container">
|
|
<nav class="nav blog-nav">
|
|
<a class="nav-link " href="https://alanorth.github.io/cgspace-notes/">Home</a>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<header class="blog-header">
|
|
<div class="container">
|
|
<h1 class="blog-title" dir="auto"><a href="https://alanorth.github.io/cgspace-notes/" rel="home">CGSpace Notes</a></h1>
|
|
<p class="lead blog-description" dir="auto">Documenting day-to-day work on the <a href="https://cgspace.cgiar.org">CGSpace</a> repository.</p>
|
|
</div>
|
|
</header>
|
|
|
|
|
|
|
|
|
|
<div class="container">
|
|
<div class="row">
|
|
<div class="col-sm-8 blog-main">
|
|
|
|
|
|
|
|
|
|
<article class="blog-post">
|
|
<header>
|
|
<h2 class="blog-post-title" dir="auto"><a href="https://alanorth.github.io/cgspace-notes/2021-02/">February, 2021</a></h2>
|
|
<p class="blog-post-meta">
|
|
<time datetime="2021-02-01T10:13:54+02:00">Mon Feb 01, 2021</time>
|
|
in
|
|
<span class="fas fa-folder" aria-hidden="true"></span> <a href="/cgspace-notes/categories/notes/" rel="category tag">Notes</a>
|
|
|
|
|
|
</p>
|
|
</header>
|
|
<h2 id="2021-02-01">2021-02-01</h2>
|
|
<ul>
|
|
<li>Abenet said that CIP found more duplicate records in their export from AReS
|
|
<ul>
|
|
<li>I re-opened <a href="https://github.com/ilri/OpenRXV/issues/67">the issue</a> on OpenRXV where we had previously noticed this</li>
|
|
<li>The shared link where the duplicates are is here: <a href="https://cgspace.cgiar.org/explorer/shared/heEOz3YBnXdK69bR2ra6">https://cgspace.cgiar.org/explorer/shared/heEOz3YBnXdK69bR2ra6</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>I had a call with CodeObia to discuss the work on OpenRXV</li>
|
|
<li>Check the results of the AReS harvesting from last night:</li>
|
|
</ul>
|
|
<pre><code class="language-console" data-lang="console">$ curl -s 'http://localhost:9200/openrxv-items-temp/_count?q=*&pretty'
|
|
{
|
|
"count" : 100875,
|
|
"_shards" : {
|
|
"total" : 1,
|
|
"successful" : 1,
|
|
"skipped" : 0,
|
|
"failed" : 0
|
|
}
|
|
}
|
|
</code></pre><ul>
|
|
<li>Set the current items index to read only and make a backup:</li>
|
|
</ul>
|
|
<pre><code class="language-console" data-lang="console">$ curl -X PUT "localhost:9200/openrxv-items/_settings" -H 'Content-Type: application/json' -d'
|
|
{"settings": {"index.blocks.write":true}}'
|
|
$ curl -s -X POST http://localhost:9200/openrxv-items/_clone/openrxv-items-2021-02-01
|
|
</code></pre><ul>
|
|
<li>Delete the current items index and clone the temp one to it:</li>
|
|
</ul>
|
|
<pre><code class="language-console" data-lang="console">$ curl -XDELETE 'http://localhost:9200/openrxv-items'
|
|
$ curl -X PUT "localhost:9200/openrxv-items-temp/_settings" -H 'Content-Type: application/json' -d'{"settings": {"index.blocks.write": true}}'
|
|
$ curl -s -X POST http://localhost:9200/openrxv-items-temp/_clone/openrxv-items
|
|
</code></pre><ul>
|
|
<li>Then delete the temp and backup:</li>
|
|
</ul>
|
|
<pre><code class="language-console" data-lang="console">$ curl -XDELETE 'http://localhost:9200/openrxv-items-temp'
|
|
{"acknowledged":true}%
|
|
$ curl -XDELETE 'http://localhost:9200/openrxv-items-2021-02-01'
|
|
</code></pre><ul>
|
|
<li>Meeting with Peter and Abenet about CGSpace goals and progress</li>
|
|
<li>Test submission to DSpace via REST API to see if Abenet can fix / reject it (submit workflow?)</li>
|
|
<li>Get Peter a list of users who have submitted or approved on DSpace everrrrrrr, so he can remove some</li>
|
|
<li>Ask MEL for a dump of their types to reconcile with ours and CG Core</li>
|
|
<li>Need to tag ILRI collection with license!! For pre-2010 use “Other” unless a license is already there; 2010-2020 do the ilri content in batches (2010-2015: CC-BY-NC-SA; 2016-onwards: CC-BY);
|
|
<ul>
|
|
<li>ONLY if ILRI / International Livestock Research Institute is the publisher, no journal articles, no book chapters…</li>
|
|
</ul>
|
|
</li>
|
|
<li>I tried to export the ILRI community from CGSpace but I got an error:</li>
|
|
</ul>
|
|
<pre><code class="language-console" data-lang="console">$ dspace metadata-export -i 10568/1 -f /tmp/2021-02-01-ILRI.csv
|
|
Loading @mire database changes for module MQM
|
|
Changes have been processed
|
|
Exporting community 'International Livestock Research Institute (ILRI)' (10568/1)
|
|
Exception: null
|
|
java.lang.NullPointerException
|
|
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:212)
|
|
at com.google.common.collect.Iterators.concat(Iterators.java:464)
|
|
at org.dspace.app.bulkedit.MetadataExport.addItemsToResult(MetadataExport.java:136)
|
|
at org.dspace.app.bulkedit.MetadataExport.buildFromCommunity(MetadataExport.java:125)
|
|
at org.dspace.app.bulkedit.MetadataExport.<init>(MetadataExport.java:77)
|
|
at org.dspace.app.bulkedit.MetadataExport.main(MetadataExport.java:282)
|
|
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
|
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
|
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
|
at java.lang.reflect.Method.invoke(Method.java:498)
|
|
at org.dspace.app.launcher.ScriptLauncher.runOneCommand(ScriptLauncher.java:229)
|
|
at org.dspace.app.launcher.ScriptLauncher.main(ScriptLauncher.java:81)
|
|
</code></pre><ul>
|
|
<li>I imported the production database to my local development environment and I get the same error… WTF is this?
|
|
<ul>
|
|
<li>I was able to export another smaller community</li>
|
|
<li>I filed <a href="https://tracker.atmire.com/tickets-cgiar-ilri/view-ticket?id=919">an issue</a> with Atmire to see if it is likely something of theirs, or if I need to ask on the dspace-tech mailing list</li>
|
|
</ul>
|
|
</li>
|
|
<li>CodeObia sent a <a href="https://github.com/ilri/OpenRXV/pull/71">pull request</a> with fixes for several issues we highlighted in OpenRXV
|
|
<ul>
|
|
<li>I deployed the fixes on production, as they only affect minor parts of the frontend, and two of the four are working</li>
|
|
<li>I sent feedback to CodeObia</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<h2 id="2021-02-02">2021-02-02</h2>
|
|
<ul>
|
|
<li>Communicate more with CodeObia about some fixes for OpenRXV</li>
|
|
<li>Maria Garruccio sent me some new ORCID iDs for Bioversity authors, as well as a correction for Stefan Burkart’s iD</li>
|
|
<li>I saved the new ones to a text file, combined them with the others, extracted the ORCID iDs themselves, and updated the names using <code>resolve-orcids.py</code>:</li>
|
|
<li>Then for the rest, I saved them to a text file, combined them with the others, extracted the ORCID iDs themselves, and updated the names using <code>resolve-orcids.py</code>:</li>
|
|
</ul>
|
|
<pre><code class="language-console" data-lang="console">$ cat ~/src/git/DSpace/dspace/config/controlled-vocabularies/cg-creator-id.xml /tmp/bioversity-orcid-ids.txt | grep -oE '[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}' | sort | uniq > /tmp/2021-02-02-combined-orcids.txt
|
|
$ ./ilri/resolve-orcids.py -i /tmp/2021-02-02-combined-orcids.txt -o /tmp/2021-02-02-combined-orcid-names.txt
|
|
</code></pre><ul>
|
|
<li>I sorted the names and added the XML formatting in vim, then ran it through tidy:</li>
|
|
</ul>
|
|
<pre><code class="language-console" data-lang="console">$ tidy -xml -utf8 -m -iq -w 0 dspace/config/controlled-vocabularies/cg-creator-id.xml
|
|
</code></pre><ul>
|
|
<li>Then I added all the changed names plus Stefan’s incorrect ones to a CSV and processed them with <code>fix-metadata-values.py</code>:</li>
|
|
</ul>
|
|
<pre><code class="language-console" data-lang="console">$ cat 2021-02-02-fix-orcid-ids.csv
|
|
cg.creator.id,correct
|
|
Burkart Stefan: 0000-0001-5297-2184,Stefan Burkart: 0000-0001-5297-2184
|
|
Burkart Stefan: 0000-0002-7558-9177,Stefan Burkart: 0000-0001-5297-2184
|
|
Stefan Burkart: 0000-0001-5297-2184,Stefan Burkart: 0000-0001-5297-2184
|
|
Stefan Burkart: 0000-0002-7558-9177,Stefan Burkart: 0000-0001-5297-2184
|
|
Adina Chain Guadarrama: 0000-0002-6944-2064,Adina Chain-Guadarrama: 0000-0002-6944-2064
|
|
Bedru: 0000-0002-7344-5743,Bedru B. Balana: 0000-0002-7344-5743
|
|
Leigh Winowiecki: 0000-0001-5572-1284,Leigh Ann Winowiecki: 0000-0001-5572-1284
|
|
Sander J. Zwart: 0000-0002-5091-1801,Sander Zwart: 0000-0002-5091-1801
|
|
saul lozano-fuentes: 0000-0003-1517-6853,Saul Lozano: 0000-0003-1517-6853
|
|
$ ./ilri/fix-metadata-values.py -i 2021-02-02-fix-orcid-ids.csv -db dspace63 -u dspace -p 'fuuu' -f cg.creator.id -t 'correct' -m 240
|
|
</code></pre><ul>
|
|
<li>I also looked up which of these new authors might have existing items that are missing ORCID iDs</li>
|
|
<li>I had to port my <code>add-orcid-identifiers-csv.py</code> to DSpace 6 UUIDs and I think it’s working but I want to do a few more tests because it uses a sequence for the metadata_value_id</li>
|
|
</ul>
|
|
<h2 id="2021-02-03">2021-02-03</h2>
|
|
<ul>
|
|
<li>Tag forty-three items from Bioversity’s new authors with ORCID iDs using <code>add-orcid-identifiers-csv.py</code>:</li>
|
|
</ul>
|
|
<pre><code class="language-console" data-lang="console">$ cat /tmp/2021-02-02-add-orcid-ids.csv
|
|
dc.contributor.author,cg.creator.id
|
|
"Nchanji, E.",Eileen Bogweh Nchanji: 0000-0002-6859-0962
|
|
"Nchanji, Eileen",Eileen Bogweh Nchanji: 0000-0002-6859-0962
|
|
"Nchanji, Eileen Bogweh",Eileen Bogweh Nchanji: 0000-0002-6859-0962
|
|
"Machida, Lewis",Lewis Machida: 0000-0002-0012-3997
|
|
"Mockshell, Jonathan",Jonathan Mockshell: 0000-0003-1990-6657"
|
|
"Aubert, C.",Celine Aubert: 0000-0001-6284-4821
|
|
"Aubert, Céline",Celine Aubert: 0000-0001-6284-4821
|
|
"Devare, M.",Medha Devare: 0000-0003-0041-4812
|
|
"Devare, Medha",Medha Devare: 0000-0003-0041-4812
|
|
"Benites-Alfaro, O.E.",Omar E. Benites-Alfaro: 0000-0002-6852-9598
|
|
"Benites-Alfaro, Omar Eduardo",Omar E. Benites-Alfaro: 0000-0002-6852-9598
|
|
"Johnson, Vincent",VINCENT JOHNSON: 0000-0001-7874-178X
|
|
"Lesueur, Didier",didier lesueur: 0000-0002-6694-0869
|
|
$ ./ilri/add-orcid-identifiers-csv.py -i /tmp/2021-02-02-add-orcid-ids.csv -db dspace -u dspace -p 'fuuu' -d
|
|
</code></pre><ul>
|
|
<li>I’m working on the CGSpace accession for Karl Rich’s <a href="https://github.com/ilri/vietnam-pig-model-2018">Viet Nam Pig Model 2018</a> and I noticed his ORCID iD is missing from CGSpace
|
|
<ul>
|
|
<li>I added it and tagged 141 items of his with the iD</li>
|
|
</ul>
|
|
</li>
|
|
<li>I <a href="https://hdl.handle.net/10568/111126">uploaded a metadata-only accession</a> for the impact of ILRI book by John McIntire and Delia Grace to CGSpace
|
|
<ul>
|
|
<li>The source code itself is here: <a href="https://github.com/ilri/impact-book">https://github.com/ilri/impact-book</a></li>
|
|
</ul>
|
|
</li>
|
|
<li>A little bit more work on CG Core v2</li>
|
|
</ul>
|
|
<h2 id="2021-02-04">2021-02-04</h2>
|
|
<ul>
|
|
<li>Re-sync CGSpace database and Solr to DSpace Test to start a public test of CG Core v2
|
|
<ul>
|
|
<li>Afterwards I updated Discovery and OAI:</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<pre><code class="language-console" data-lang="console">$ time chrt -b 0 dspace index-discovery -b
|
|
$ dspace oai import -c
|
|
</code></pre><ul>
|
|
<li>Attend Accenture meeting for repository managers
|
|
<ul>
|
|
<li>Not clear what the SMO wants to get out of us</li>
|
|
</ul>
|
|
</li>
|
|
<li>Enrico asked for some notes about our work on AReS in 2020 for CRP Livestock reporting
|
|
<ul>
|
|
<li>Abenet and I came up with the following:</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<blockquote>
|
|
<p>In 2020 we funded the third phase of development on the OpenRXV platform that powers AReS. This phase focused mainly on improving the search filtering, graphical visualizations, and reporting capabilities. It is now possible to create custom reports in Excel, Word, and PDF formats using a templating system. We also concentrated on making the vanilla OpenRXV platform easier to deploy and administer in hopes that other organizations would begin using it. Lastly, we identified and fixed a handful of bugs in the system. All development takes place publicly on GitHub: <a href="https://github.com/ilri/OpenRXV">https://github.com/ilri/OpenRXV</a>.</p>
|
|
</blockquote>
|
|
<blockquote>
|
|
<p>In the last quarter of 2020, ILRI conducted a briefing for nearly 100 scientists and communications staff on how to use ARes as a visualization tool for repository outputs and as a reporting tool (<a href="https://hdl.handle.net/10568/110527)">https://hdl.handle.net/10568/110527)</a>. Staff will begin using AReS to generate lists of their outputs to upload in the performance evaluation system to assist in their performance evaluation. The list of publications they will upload from AReS to Performax will indicate the open access status of each publication to help start discussion why some outputs are not open access given the open access policies of the CGIAR.</p>
|
|
</blockquote>
|
|
<ul>
|
|
<li>Call Moayad to discuss OpenRXV development
|
|
<ul>
|
|
<li>We talked about the “reporting period” (date-based statistics) and some of the issues Abdullah is working on on GitHub</li>
|
|
<li>I suggested that we offer the date-range statistics in a modal dialog with other sorting and grouping options during report generation</li>
|
|
</ul>
|
|
</li>
|
|
<li>Peter sent me the cleaned up series that I had originally sent him in 2020-10
|
|
<ul>
|
|
<li>I quickly applied all the deletions on CGSpace:</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<pre><code class="language-console" data-lang="console">$ ./ilri/delete-metadata-values.py -i /tmp/2020-10-28-Series-PB.csv -db dspace -u dspace -p 'fuuu' -f dc.relation.ispartofseries -m 43
|
|
</code></pre><ul>
|
|
<li>The corrected versions have a lot of encoding issues so I asked Peter to give me the correct ones so I can search/replace them:
|
|
<ul>
|
|
<li>CIAT Publicaçao</li>
|
|
<li>CIAT Publicación</li>
|
|
<li>CIAT Série</li>
|
|
<li>CIAT Séries</li>
|
|
<li>Colección investigación y desarrollo</li>
|
|
<li>CTA Guias práticos</li>
|
|
<li>CTA Guias técnicas</li>
|
|
<li>Curso de adiestramiento en producción y utilización de pastos tropicales</li>
|
|
<li>Folheto Técnico</li>
|
|
<li>ILRI Nota Informativa de Investigação</li>
|
|
<li>Influencia de los actores sociales en América Central</li>
|
|
<li>Institutionalization of quality assurance mechanism and dissemination of top quality commercial products to increase crop yields and improve food security of smallholder farmers in sub-Saharan Africa – COMPRO-II</li>
|
|
<li>Manuel pour les Banques de Gènes;1</li>
|
|
<li>Sistematización de experiencias Proyecto ACORDAR</li>
|
|
<li>Strüngmann Forum</li>
|
|
<li>Unité de Recherche</li>
|
|
</ul>
|
|
</li>
|
|
<li>Help Peter debug an issue with one of Alan Duncan’s new FEAST Data reports on CGSpace
|
|
<ul>
|
|
<li>For some reason the default policy for the item was “COLLECTION_492_DEFAULT_READ” group, which had zero members</li>
|
|
<li>I changed them all to Anonymous and the item was accessible</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<!-- raw HTML omitted -->
|
|
|
|
|
|
|
|
|
|
|
|
</article>
|
|
|
|
|
|
|
|
</div> <!-- /.blog-main -->
|
|
|
|
<aside class="col-sm-3 ml-auto blog-sidebar">
|
|
|
|
|
|
|
|
<section class="sidebar-module">
|
|
<h4>Recent Posts</h4>
|
|
<ol class="list-unstyled">
|
|
|
|
|
|
<li><a href="/cgspace-notes/2021-02/">February, 2021</a></li>
|
|
|
|
<li><a href="/cgspace-notes/2021-01/">January, 2021</a></li>
|
|
|
|
<li><a href="/cgspace-notes/2020-12/">December, 2020</a></li>
|
|
|
|
<li><a href="/cgspace-notes/cgspace-dspace6-upgrade/">CGSpace DSpace 6 Upgrade</a></li>
|
|
|
|
<li><a href="/cgspace-notes/2020-11/">November, 2020</a></li>
|
|
|
|
</ol>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<section class="sidebar-module">
|
|
<h4>Links</h4>
|
|
<ol class="list-unstyled">
|
|
|
|
<li><a href="https://cgspace.cgiar.org">CGSpace</a></li>
|
|
|
|
<li><a href="https://dspacetest.cgiar.org">DSpace Test</a></li>
|
|
|
|
<li><a href="https://github.com/ilri/DSpace">CGSpace @ GitHub</a></li>
|
|
|
|
</ol>
|
|
</section>
|
|
|
|
</aside>
|
|
|
|
|
|
</div> <!-- /.row -->
|
|
</div> <!-- /.container -->
|
|
|
|
|
|
|
|
<footer class="blog-footer">
|
|
<p dir="auto">
|
|
|
|
Blog template created by <a href="https://twitter.com/mdo">@mdo</a>, ported to Hugo by <a href='https://twitter.com/mralanorth'>@mralanorth</a>.
|
|
|
|
</p>
|
|
<p>
|
|
<a href="#">Back to top</a>
|
|
</p>
|
|
</footer>
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|