2018-02-11 17:28:23 +01:00
<!DOCTYPE html>
2019-10-11 10:19:42 +02:00
< html lang = "en" >
2018-02-11 17:28:23 +01:00
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1, shrink-to-fit=no" >
2020-12-06 15:53:29 +01:00
2018-02-11 17:28:23 +01:00
< meta property = "og:title" content = "CGSpace Notes" / >
< meta property = "og:description" content = "Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." / >
< meta property = "og:type" content = "website" / >
< meta property = "og:url" content = "https://alanorth.github.io/cgspace-notes/" / >
2022-07-31 14:49:35 +02:00
< meta property = "og:updated_time" content = "2022-07-28T16:55:36+03:00" / >
2020-12-06 15:53:29 +01:00
2018-09-30 07:23:48 +02:00
2018-02-11 17:28:23 +01:00
< meta name = "twitter:card" content = "summary" / >
< meta name = "twitter:title" content = "CGSpace Notes" / >
< meta name = "twitter:description" content = "Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository." / >
2022-06-23 07:40:53 +02:00
< meta name = "generator" content = "Hugo 0.101.0" / >
2018-02-11 17:28:23 +01:00
< script type = "application/ld+json" >
{
"@context": "http://schema.org",
"@type": "Blog",
"headline": "CGSpace Notes",
2020-04-02 09:55:42 +02:00
"url" : "https://alanorth.github.io/cgspace-notes/",
2018-02-11 17:28:23 +01:00
"author": {
"@type": "Person",
"name": "Alan Orth"
},
2022-07-04 08:25:14 +02:00
"dateModified": "2022-07-02T14:07:36+03:00",
2020-11-16 09:54:00 +01:00
"keywords": "notes, migration, notes",
2020-04-02 09:55:42 +02:00
"description":"Documenting day-to-day work on the [CGSpace](https://cgspace.cgiar.org) repository."
2018-02-11 17:28:23 +01:00
}
< / script >
< link rel = "canonical" href = "https://alanorth.github.io/cgspace-notes/" >
< title > CGSpace Notes< / title >
2019-10-11 10:19:42 +02:00
2018-02-11 17:28:23 +01:00
<!-- combined, minified CSS -->
2020-01-23 19:19:38 +01:00
2021-01-24 08:46:27 +01:00
< link href = "https://alanorth.github.io/cgspace-notes/css/style.beb8012edc08ba10be012f079d618dc243812267efe62e11f22fe49618f976a4.css" rel = "stylesheet" integrity = "sha256-vrgBLtwIuhC+AS8HnWGNwkOBImfv5i4R8i/klhj5dqQ=" crossorigin = "anonymous" >
2019-10-11 10:19:42 +02:00
2018-02-11 17:28:23 +01:00
2020-01-28 11:01:42 +01:00
<!-- minified Font Awesome for SVG icons -->
2021-09-28 09:32:32 +02:00
< script defer src = "https://alanorth.github.io/cgspace-notes/js/fontawesome.min.f5072c55a0721857184db93a50561d7dc13975b4de2e19db7f81eb5f3fa57270.js" integrity = "sha256-9QcsVaByGFcYTbk6UFYdfcE5dbTeLhnbf4HrXz+lcnA=" crossorigin = "anonymous" > < / script >
2020-01-28 11:01:42 +01:00
2018-02-11 17:28:23 +01:00
<!-- RSS 2.0 feed -->
2019-04-14 15:59:47 +02:00
< link rel = "alternate" type = "application/rss+xml" href = "https://alanorth.github.io/cgspace-notes/index.xml" title = "CGSpace Notes" / >
2018-02-11 17:28:23 +01:00
< / head >
< body >
< div class = "blog-masthead" >
< div class = "container" >
< nav class = "nav blog-nav" >
< a class = "nav-link active" href = "https://alanorth.github.io/cgspace-notes/" > Home< / a >
< / nav >
< / div >
< / div >
2018-12-19 12:20:39 +01:00
2018-02-11 17:28:23 +01:00
< header class = "blog-header" >
< div class = "container" >
2019-10-11 10:19:42 +02:00
< 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 >
2018-02-11 17:28:23 +01:00
< / div >
< / header >
2018-12-19 12:20:39 +01:00
2018-02-11 17:28:23 +01:00
< div class = "container" >
< div class = "row" >
< div class = "col-sm-8 blog-main" >
2022-07-04 08:25:14 +02:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2022-07/" > July, 2022< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2022-07-02T14:07:36+03:00" > Sat Jul 02, 2022< / time > by Alan Orth in
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
< / p >
< / header >
< h2 id = "2022-07-02" > 2022-07-02< / h2 >
< ul >
< li > I learned how to use the Levenshtein functions in PostgreSQL
< ul >
< li > The thing is that there is a limit of 255 characters for these functions in PostgreSQL so you need to truncate the strings before comparing< / li >
< li > Also, the trgm functions I’ ve used before are case insensitive, but Levenshtein is not, so you need to make sure to lower case both strings first< / li >
< / ul >
< / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2022-07/' > Read more →< / a >
< / article >
2022-06-06 08:45:43 +02:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2022-06/" > June, 2022< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2022-06-06T09:01:36+03:00" > Mon Jun 06, 2022< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-06-06 08:45:43 +02:00
< / p >
< / header >
< h2 id = "2022-06-06" > 2022-06-06< / h2 >
< ul >
< li > Look at the Solr statistics on CGSpace
< ul >
< li > I see 167,000 hits from a bunch of Microsoft IPs with reverse DNS “ msnbot-” using the Solr query < code > dns:*msnbot* AND dns:*.msn.com< / code > < / li >
< li > I purged these first so I could see the other “ real” IPs in the Solr facets< / li >
< / ul >
< / li >
< li > I see 47,500 hits from 80.248.237.167 on a data center ISP in Sweden, using a normal user agent< / li >
< li > I see 13,000 hits from 163.237.216.11 on a data center ISP in Australia, using a normal user agent< / li >
< li > I see 7,300 hits from 208.185.238.57 from Britanica, using a normal user agent
< ul >
< li > There seem to be many more of these:< / li >
< / ul >
< / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2022-06/' > Read more →< / a >
< / article >
2022-05-04 10:09:45 +02:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2022-05/" > May, 2022< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2022-05-04T09:13:39+03:00" > Wed May 04, 2022< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-05-04 10:09:45 +02:00
< / p >
< / header >
< h2 id = "2022-05-04" > 2022-05-04< / h2 >
< ul >
< li > I found a few more IPs making requests using the shady Chrome 44 user agent in the last few days so I will add them to the block list too:
< ul >
< li > 18.207.136.176< / li >
< li > 185.189.36.248< / li >
< li > 50.118.223.78< / li >
< li > 52.70.76.123< / li >
< li > 3.236.10.11< / li >
< / ul >
< / li >
< li > Looking at the Solr statistics for 2022-04
< ul >
< li > 52.191.137.59 is Microsoft, but they are using a normal user agent and making tens of thousands of requests< / li >
< li > 64.39.98.62 is owned by Qualys, and all their requests are probing for /etc/passwd etc< / li >
< li > 185.192.69.15 is in the Netherlands and is using a normal user agent, but making excessive automated HTTP requests to paths forbidden in robots.txt< / li >
< li > 157.55.39.159 is owned by Microsoft and identifies as bingbot so I don’ t know why its requests were logged in Solr< / li >
< li > 52.233.67.176 is owned by Microsoft and uses a normal user agent, but making excessive automated HTTP requests< / li >
< li > 157.55.39.144 is owned by Microsoft and uses a normal user agent, but making excessive automated HTTP requests< / li >
< li > 207.46.13.177 is owned by Microsoft and identifies as bingbot so I don’ t know why its requests were logged in Solr< / li >
< li > If I query Solr for < code > time:2022-04* AND dns:*msnbot* AND dns:*.msn.com.< / code > I see a handful of IPs that made 41,000 requests< / li >
< / ul >
< / li >
< li > I purged 93,974 hits from these IPs using my < code > check-spider-ip-hits.sh< / code > script< / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2022-05/' > Read more →< / a >
< / article >
2022-03-01 15:48:40 +01:00
< article class = "blog-post" >
< header >
2022-04-27 08:58:45 +02:00
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2022-04/" > April, 2022< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2022-04-01T10:53:39+03:00" > Fri Apr 01, 2022< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-03-01 15:48:40 +01:00
< / p >
< / header >
2022-06-14 07:45:07 +02:00
2022-04-01 I did G1GC tests on DSpace Test (linode26) to compliment the CMS tests I did yesterday The Discovery indexing took this long: real 334m33.625s user 227m51.331s sys 3m43.037s 2022-04-04 Start a full harvest on AReS Help Marianne with submit/approve access on a new collection on CGSpace Go back in Gaia’ s batch reports to find records that she indicated for replacing on CGSpace (ie, those with better new copies, new versions, etc) Looking at the Solr statistics for 2022-03 on CGSpace I see 54.
2022-04-27 08:58:45 +02:00
< a href = 'https://alanorth.github.io/cgspace-notes/2022-04/' > Read more →< / a >
2022-03-01 15:48:40 +01:00
< / article >
2022-04-04 18:15:58 +02:00
< article class = "blog-post" >
< header >
2022-04-27 08:58:45 +02:00
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2022-03/" > March, 2022< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2022-03-01T16:46:54+03:00" > Tue Mar 01, 2022< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-04-04 18:15:58 +02:00
< / p >
< / header >
2022-04-27 08:58:45 +02:00
< h2 id = "2022-03-01" > 2022-03-01< / h2 >
< ul >
< li > Send Gaia the last batch of potential duplicates for items 701 to 980:< / li >
< / ul >
< div class = "highlight" > < pre tabindex = "0" style = "color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;" > < code class = "language-console" data-lang = "console" > < span style = "display:flex;" > < span > $ csvcut -c id,dc.title,dcterms.issued,dcterms.type ~/Downloads/2022-03-01-CGSpace-TAC-ICW-batch4-701-980.csv > /tmp/tac4.csv
< / span > < / span > < span style = "display:flex;" > < span > $ ./ilri/check-duplicates.py -i /tmp/tac4.csv -db dspace -u dspace -p < span style = "color:#e6db74" > ' fuuu' < / span > -o /tmp/2022-03-01-tac-batch4-701-980.csv
< / span > < / span > < span style = "display:flex;" > < span > $ csvcut -c id,filename ~/Downloads/2022-03-01-CGSpace-TAC-ICW-batch4-701-980.csv > /tmp/tac4-filenames.csv
< / span > < / span > < span style = "display:flex;" > < span > $ csvjoin -c id /tmp/2022-03-01-tac-batch4-701-980.csv /tmp/tac4-filenames.csv > /tmp/2022-03-01-tac-batch4-701-980-filenames.csv
< / span > < / span > < / code > < / pre > < / div >
2022-04-04 18:15:58 +02:00
< a href = 'https://alanorth.github.io/cgspace-notes/2022-03/' > Read more →< / a >
< / article >
2022-02-10 18:35:40 +01:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2022-02/" > February, 2022< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2022-02-01T14:06:54+02:00" > Tue Feb 01, 2022< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-02-10 18:35:40 +01:00
< / p >
< / header >
< h2 id = "2022-02-01" > 2022-02-01< / h2 >
< ul >
< li > Meeting with Peter and Abenet about CGSpace in the One CGIAR
< ul >
< li > We agreed to buy $5,000 worth of credits from Atmire for future upgrades< / li >
< li > We agreed to move CRPs and non-CGIAR communities off the home page, as well as some other things for the CGIAR System Organization< / li >
< li > We agreed to make a Discovery facet for CGIAR Action Areas above the existing CGIAR Impact Areas one< / li >
< li > We agreed to try to do more alignment of affiliations/funders with ROR< / li >
< / ul >
< / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2022-02/' > Read more →< / a >
< / article >
2022-01-01 14:21:47 +01:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2022-01/" > January, 2022< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2022-01-01T15:20:54+02:00" > Sat Jan 01, 2022< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2022-01-01 14:21:47 +01:00
< / p >
< / header >
< h2 id = "2022-01-01" > 2022-01-01< / h2 >
< ul >
< li > Start a full harvest on AReS< / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2022-01/' > Read more →< / a >
< / article >
2021-12-03 11:58:43 +01:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2021-12/" > December, 2021< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2021-12-01T16:07:07+02:00" > Wed Dec 01, 2021< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2021-12-03 11:58:43 +01:00
< / p >
< / header >
< h2 id = "2021-12-01" > 2021-12-01< / h2 >
< ul >
< li > Atmire merged some changes I had submitted to the COUNTER-Robots project< / li >
< li > I updated our local spider user agents and then re-ran the list with my < code > check-spider-hits.sh< / code > script on CGSpace:< / li >
< / ul >
2022-03-04 13:30:06 +01:00
< div class = "highlight" > < pre tabindex = "0" style = "color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;" > < code class = "language-console" data-lang = "console" > < span style = "display:flex;" > < span > $ ./ilri/check-spider-hits.sh -f /tmp/agents -p
< / span > < / span > < span style = "display:flex;" > < span > Purging 1989 hits from The Knowledge AI in statistics
< / span > < / span > < span style = "display:flex;" > < span > Purging 1235 hits from MaCoCu in statistics
< / span > < / span > < span style = "display:flex;" > < span > Purging 455 hits from WhatsApp in statistics
< / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#960050;background-color:#1e0010" >
< / span > < / span > < / span > < span style = "display:flex;" > < span > < span style = "color:#960050;background-color:#1e0010" > < / span > Total number of bot hits purged: 3679
< / span > < / span > < / code > < / pre > < / div >
2021-12-03 11:58:43 +01:00
< a href = 'https://alanorth.github.io/cgspace-notes/2021-12/' > Read more →< / a >
< / article >
2021-11-01 09:49:21 +01:00
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2021-11/" > November, 2021< / a > < / h2 >
2021-11-03 14:56:15 +01:00
< p class = "blog-post-meta" > < time datetime = "2021-11-02T22:27:07+02:00" > Tue Nov 02, 2021< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2021-11-01 09:49:21 +01:00
< / p >
< / header >
2021-11-03 14:56:15 +01:00
< h2 id = "2021-11-02" > 2021-11-02< / h2 >
< ul >
< li > I experimented with manually sharding the Solr statistics on DSpace Test< / li >
< li > First I exported all the 2019 stats from CGSpace:< / li >
< / ul >
2022-03-04 13:30:06 +01:00
< div class = "highlight" > < pre tabindex = "0" style = "color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;" > < code class = "language-console" data-lang = "console" > < span style = "display:flex;" > < span > $ ./run.sh -s http://localhost:8081/solr/statistics -f < span style = "color:#e6db74" > ' time:2019-*' < / span > -a export -o statistics-2019.json -k uid
< / span > < / span > < span style = "display:flex;" > < span > $ zstd statistics-2019.json
< / span > < / span > < / code > < / pre > < / div >
2021-11-01 09:49:21 +01:00
< a href = 'https://alanorth.github.io/cgspace-notes/2021-11/' > Read more →< / a >
< / article >
< article class = "blog-post" >
< header >
< h2 class = "blog-post-title" dir = "auto" > < a href = "https://alanorth.github.io/cgspace-notes/2021-10/" > October, 2021< / a > < / h2 >
< p class = "blog-post-meta" > < time datetime = "2021-10-01T11:14:07+03:00" > Fri Oct 01, 2021< / time > by Alan Orth in
2022-06-23 07:40:53 +02:00
< span class = "fas fa-folder" aria-hidden = "true" > < / span > < a href = "/categories/notes/" rel = "category tag" > Notes< / a >
2021-11-01 09:49:21 +01:00
< / p >
< / header >
< h2 id = "2021-10-01" > 2021-10-01< / h2 >
< ul >
< li > Export all affiliations on CGSpace and run them against the latest RoR data dump:< / li >
< / ul >
2022-03-04 13:30:06 +01:00
< div class = "highlight" > < pre tabindex = "0" style = "color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;" > < code class = "language-console" data-lang = "console" > < span style = "display:flex;" > < span > localhost/dspace63= > \COPY (SELECT DISTINCT text_value as " cg.contributor.affiliation" , count(*) FROM metadatavalue WHERE dspace_object_id IN (SELECT uuid FROM item) AND metadata_field_id = 211 GROUP BY text_value ORDER BY count DESC) to /tmp/2021-10-01-affiliations.csv WITH CSV HEADER;
< / span > < / span > < span style = "display:flex;" > < span > $ csvcut -c < span style = "color:#ae81ff" > 1< / span > /tmp/2021-10-01-affiliations.csv | sed 1d > /tmp/2021-10-01-affiliations.txt
< / span > < / span > < span style = "display:flex;" > < span > $ ./ilri/ror-lookup.py -i /tmp/2021-10-01-affiliations.txt -r 2021-09-23-ror-data.json -o /tmp/2021-10-01-affili
< / span > < / span > < span style = "display:flex;" > < span > ations-matching.csv
< / span > < / span > < span style = "display:flex;" > < span > $ csvgrep -c matched -m true /tmp/2021-10-01-affiliations-matching.csv | sed 1d | wc -l
< / span > < / span > < span style = "display:flex;" > < span > 1879
< / span > < / span > < span style = "display:flex;" > < span > $ wc -l /tmp/2021-10-01-affiliations.txt
< / span > < / span > < span style = "display:flex;" > < span > 7100 /tmp/2021-10-01-affiliations.txt
< / span > < / span > < / code > < / pre > < / div > < ul >
2021-11-01 09:49:21 +01:00
< li > So we have 1879/7100 (26.46%) matching already< / li >
< / ul >
< a href = 'https://alanorth.github.io/cgspace-notes/2021-10/' > Read more →< / a >
< / article >
2018-02-11 17:28:23 +01:00
< nav class = "blog-pagination" >
< a class = "btn btn-outline-primary disabled" href = "#" role = "button" aria-disabled = "true" > Previous page< / a >
< a class = "btn btn-outline-primary" href = "/cgspace-notes/page/2/" rel = "next" role = "button" > Next page< / a >
< / nav >
2018-04-23 17:09:26 +02:00
2018-02-11 17:28:23 +01:00
< / div > <!-- /.blog - main -->
< aside class = "col-sm-3 ml-auto blog-sidebar" >
< section class = "sidebar-module" >
< h4 > Recent Posts< / h4 >
< ol class = "list-unstyled" >
2022-07-04 08:25:14 +02:00
< li > < a href = "/cgspace-notes/2022-07/" > July, 2022< / a > < / li >
2022-06-06 08:45:43 +02:00
< li > < a href = "/cgspace-notes/2022-06/" > June, 2022< / a > < / li >
2022-05-04 10:09:45 +02:00
< li > < a href = "/cgspace-notes/2022-05/" > May, 2022< / a > < / li >
2022-04-27 08:58:45 +02:00
< li > < a href = "/cgspace-notes/2022-04/" > April, 2022< / a > < / li >
2022-03-01 15:48:40 +01:00
2022-04-27 08:58:45 +02:00
< li > < a href = "/cgspace-notes/2022-03/" > March, 2022< / a > < / li >
2022-04-04 18:15:58 +02:00
2018-02-11 17:28:23 +01:00
< / 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" >
2019-10-11 10:19:42 +02:00
< p dir = "auto" >
2018-02-11 17:28:23 +01:00
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 >