commit 39b67632c08b13f1b892ec47b8d4dae9de55497b
parent 82efdb7738215834fcabf6ea0b13c73521f117b7
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Mon, 24 Feb 2020 13:47:16 +0100
Copy blog posts to plain text
Diffstat:
14 files changed, 363 insertions(+), 8 deletions(-)
diff --git a/Makefile b/Makefile
@@ -2,20 +2,38 @@ default: generate
output = output/
+# w3m -dump -T text/html
generate:
mkdir -p $(output)
saait `ls -1r pages/*.cfg`
+ for f in pages/[0-9][0-9][0-9]*.txt; do \
+ title="$$(sed -n 's/^title.*=//p' "$${f%%.txt}.cfg")"; \
+ out="$$(printf '%s' "$$f" | sed 's/[0-9][0-9][0-9]-//')"; \
+ out="$(output)$${out##pages}"; \
+ printf '--- %s ---\n\n' "$$title" > "$$out"; \
+ cat "$$f" >> "$$out"; \
+ done
+ sed -i 's,|\([A-Za-z-]*\)\.html|server|port,|/\1.txt|server|port,' $(output)/index.gph
cp style.css print.css $(output)/
view:
$(BROWSER) $(output)/index.html
+converthtml:
+ for f in pages/*.html; do \
+ title="$$(sed -n 's/^title.*=//p' "$${f%%.html}.cfg")"; \
+ out="$$(printf '%s' "$$f" | sed 's/[0-9][0-9][0-9]-//;s/\.html$$/.txt/')"; \
+ printf '--- %s ---\n\n' "$$title" > "$$out"; \
+ w3m -dump -T text/html -o display_link_number=1 "$$f" >> "$$out"; \
+ done
+
deploy: generate
rsync -rav --progress \
papers video img $(output)/ \
adamsgaard.dk:/var/www/domains/adamsgaard.dk/
rsync -rav --progress \
$(output)/ \
+ pages/*.txt \
adamsgaard.dk:/var/gopher/
clean:
diff --git a/common/pagebegin.html b/common/pagebegin.html
@@ -42,6 +42,7 @@
<a href="https://src.adamsgaard.dk" title="Software projects" class="btn">Code</a>
<a href="https://andersdamsgaard.com" title="Photography portfolio" class="btn">Photo</a>
<a href="files/" title="Public files" class="btn">Files</a>
+ <a href="gopher://adamsgaard.dk" title="Gopher Mirror" class="btn">Gopher</a>
</td>
</tr>
</table>
diff --git a/pages/ideas.txt b/ideas.txt
diff --git a/pages/001-new-homepage.txt b/pages/001-new-homepage.txt
@@ -0,0 +1,43 @@
+I have had my own webpage since 2002 (a-d-c.dk, cs.au.dk/~adc,
+adamsgaard.dk). I use a webpage as a place to keep my contact
+information, software, notes, and research. The previous iteration
+was inspired by the 2015 April 1st retro-version of of gentoo.org,
+bringing back memories of the computing of yesteryear.
+
+The previous backend was a Debian GNU/Linux virtual machine, first
+running at home and then in the cloud. It dynamically served the
+pages with Apache and PHP. However, PHP is notoriously insecure,
+as evident by the extensive list of vulnerabilities[0]. Apache
+is not much better[1].
+
+This weekend I finally made the long-overdue transition to a static
+web page, which improves security and performance. The backend is
+an OpenBSD instance at a cloud provider. There's a plethora of
+free static hosting providers available, but I prefer running and
+maintaining a server myself. The SSL certificate is provided by
+Let's Encrypt. The html front end is generated using Hiltjo
+Posthuma's saait[2] and stagit[3].
+
+I am keeping the retro theme, but all CSS is reduced to a bare
+minimum. The page is entirely free of cookies, javascript, and
+tracking. It is also 100% compatible with terminal browsers.
+
+I moved all of my personal software projects to my own git server
+at https://src.adamsgaard.dk. I do not trust corporations like
+Github (Microsoft), Gitlab, Sourceforce, etc., to always act in the
+users' best interest. However, for the time being I will continue
+to contribute to other software projects on these platforms.</p>
+My git server has a web interface which provides an overview of
+projects, commits, and files. Git access is possible through the
+git (read only), and ssh (r/w) protocols.
+
+Please let me know if you encounter any problems with the new
+infrastructure.
+
+
+References:
+
+[0] https://www.cvedetails.com/vulnerability-list.php?vendor_id=74&product_id=128
+[1] https://www.cvedetails.com/vulnerability-list/vendor_id-45/Apache.html
+[2] https://git.codemadness.nl/saait
+[3] https://git.codemadness.nl/stagit
diff --git a/pages/002-scholarref.txt b/pages/002-scholarref.txt
@@ -0,0 +1,227 @@
+-- Rationale --
+During the writing phase of an academic paper, common tasks include
+downloading PDFs of publications and getting their references into
+your bibliography. However, I am not a fan of navigating the slow,
+bloated, tracker-filled, and distracting webpages of academic
+journals and publication aggregators. For some reason, many
+publishers decided that clicking the "Download PDF" link should
+redirect the user to an unusable in-browser PDF viewer instead of
+providing the PDF file directly. While the majority of journal
+webpages provide formatted citations for their publications, these
+are inconsistent in style and content.
+
+For these reasons, I constructed a set of shell tools called
+"scholarref" that allow me to perform most of the tasks without
+having to open a web browser. As the title of this post indicates,
+the goal of the toolset is to provide as much functionality a person
+might need during scientific writing without leaving the command
+line. The tools are under continuous development[0]. At present
+I avoid roughly 90% of visits to journal webpages. I hope to get
+to 100% someday.
+
+The "scholarref" design goals are the following:
+
+ - Written as POSIX shell scripts with minimal external
+ dependencies: Ensures maximum flexibility and portability.
+
+ - Aim for simplicity:
+ Fewer lines of code make the programs easier to understand,
+ maintain, and debug.
+
+ - Each tool should do one thing, and do it well:
+ Let the users piece the components together to fit their
+ workflow.
+
+ - Return references in BibTeX format.
+
+DISCLAIMER: The functionality provided by these programs depends
+on communication with third party webpages, which may or may not
+be permitted by law and the terms of service upheld by the third
+parties. What is demonstrated here are examples only. Use of the
+tools is entirely your own responsibility.
+
+
+-- Installation --
+
+ $ git clone git://src.adamsgaard.dk/scholarref
+ $ cd scholarref
+ # make install
+
+The `make install` command may require superuser priviledges to
+install the tools to /usr/local. Prefix with doas(1) or sudo(1),
+whatever is appropriate for the target system.
+
+
+-- The scholarref toolset --
+
+The core functionality is provided by the scripts getdoi, getref,
+and shdl. All programs accept input as command-line arguments or
+from standard input (stdin). The programs come with several OPTIONS,
+and it is encouraged to explore the help text (invoke with option
+-h). The -t option may be of particular interest, since it tunnels
+all communication through Tor via torsocks(1) (if available on the
+system).
+
+- getdoi -
+This tool accepts either names of PDF files or arbitrary search
+queries. If a PDF file name is supplied, getdoi scans the PDF text
+in order to find the first occuring DOI entry, which typically is
+the DOI of the publication itself. If an arbitrary query is supplied,
+the CrossRef API[1] is used to find the DOI of the closest publication
+match. You can supply author names, parts of the title, ORCID,
+journal name, etc. Examples:
+
+ $ getdoi damsgaard2018.pdf
+ 10.1029/2018ms001299
+ $ getdoi 'damsgaard sergienko adcroft advances modeling earth systems'
+ 10.1029/2018ms001299
+
+The -o option will open the resultant DOI in the system web browser.
+
+- getref -
+The getref tool fetches the BibTeX citation for a given DOI from
+doi.org. By default, the journal names and author first names are
+abbreviated, which is what most journals want. I have taken
+abbreviations from the Caltech Library list of Journal Title
+Abbreviations[2]. The getref ruleset of journal-title abbreviations
+is incomplete, and is expanded on a per-need basis. If desired,
+the abbreviation functionality can be disabled. See `getref -h`
+for details.
+
+ $ getref 10.1029/2018ms001299
+ @article{Damsgaard2018,
+ doi = {10.1029/2018ms001299},
+ year = 2018,
+ publisher = {American Geophysical Union ({AGU})},
+ volume = {10},
+ number = {9},
+ pages = {2228--2244},
+ author = {A. Damsgaard and A. Adcroft and O. Sergienko},
+ title = {Application of Discrete Element Methods to Approximate Sea Ice Dynamics},
+ journal = {J. Adv. Mod. Earth Sys.}
+ }
+
+Do not abbreviate journal title with -j option:
+
+ $ getref -j 10.1029/2018ms001299
+ @article{Damsgaard2018,
+ doi = {10.1029/2018ms001299},
+ year = 2018,
+ publisher = {American Geophysical Union ({AGU})},
+ volume = {10},
+ number = {9},
+ pages = {2228--2244},
+ author = {A. Damsgaard and A. Adcroft and O. Sergienko},
+ title = {Application of Discrete Element Methods to Approximate Sea Ice Dynamics},
+ journal = {Journal of Advances in Modeling Earth Systems}
+ }
+
+
+- shdl -
+This tool takes a DOI as input and attempts to download the
+corresponding publication as a PDF through sci-hub[3]. Unfortunately,
+the sci-hub web interface often puts up captias to restrict automated
+downloads. If that's the case, shdl opens the tor browser (if
+installed) or the system web browser in order to manually complete
+the download. Output PDF files are saved in the present working
+directory.
+
+
+-- Usage examples --
+
+The scholarref tools are meant to be chained together. For example,
+if you want a BibTeX reference a search query, simply use UNIX pipes
+to send the getdoi output as input to getref:
+
+ $ getdoi 'damsgaard egholm ice flow dynamics' | getref
+ @article{Damsgaard2016,
+ doi = {10.1002/2016gl071579},
+ year = 2016,
+ publisher = {American Geophysical Union ({AGU})},
+ volume = {43},
+ number = {23},
+ pages = {12,165--12,173},
+ author = {A. Damsgaard and D. L. Egholm and L. H. Beem and S. Tulaczyk and N. K. Larsen and J. A. Piotrowski and M. R. Siegfried},
+ title = {Ice flow dynamics forced by water pressure variations in subglacial granular beds},
+ journal = {Geophys. Res. Lett.}
+ }
+
+The scholarref program itself is an aggregation of the getdoi and
+getref commands. If called with the -a option, the reference is
+directly inserted into the system bibliography. The full path to
+the bibliography file (.bib) is assumed to be set in the $BIB
+environment variable, for instance defined in the user ~/.profile.
+
+ $ echo $BIB
+ /home/ad/articles/own/BIBnew.bib
+ $ scholarref -a 'damsgaard egholm ice flow dynamics'
+ Citation Damsgaard2016 added to /home/ad/articles/own/BIBnew.bib
+
+
+-- Integrating into your favorite $EDITOR --
+
+The scholarref tool is particularly useful if called from within a
+text editor. Below I demonstrate how keyboard bindings can be bound
+in various editors to provide scholarref functionality.
+
+- vi -
+My editor of choice is the plain, old, and simple (n)vi(1). I have
+the following binding in my ~/.exrc, including a trailing space:
+
+ map qr :r !scholarref
+
+The rest of my editor configuration can be found under my dotfiles
+source code repository[4].
+
+- vim -
+You can add the following bindings to ~/.vimrc or ~/.vim/vimrc in
+order to get scholarref functionality within vim(1):
+
+ " insert reference into current buffer
+ nnoremap <leader>r :r !scholarref<space>
+ " append reference into $BIB file
+ nnoremap <leader>R :r !scholarref --add<space>
+
+- vis -
+The vis(1) editor[5] is an interesting combination of modal editing
+and structural regular expressions from the plan9 editor sam(1)[6].
+Add the following binding to ~/.config/vis/visrc.lua:
+
+ vis:map(vis.modes.NORMAL, leader..'r', '< scholarref ')
+
+- emacs -
+Don't know, figure it out yourself.
+
+
+-- Integrating into your pdf viewer --
+
+My PDF viewer of choice is zathura(1)[7], which has a minimal
+graphical user interface and is keyboard-centric. The following
+configuration calls getdoi on the currently open file if I press
+Ctrl-i. The resultant DOI is copied to the clipboard. Similarly,
+Ctrl-s tries to extract the DOI in the same manner, but fetches the
+accompanying reference and adds it directly to the bibliography.
+
+ map <C-i> feedkeys ":exec getdoi --notify --clip '$FILE'<Return>"
+ map <C-s> feedkeys ":exec scholarref --add '$FILE'<Return>"
+
+My full zathura configuration is available here: [8]
+
+
+-- Questions/bugs/feedback/improvements --
+
+Please get in touch if you encounter any. Improvement suggestions
+are best sent as patches by e-mail.
+
+
+References:
+
+[0] https://src.adamsgaard.dk/scholarref/log.html
+[1] http://api.crossref.org
+[2] https://www.library.caltech.edu/journal-title-abbreviations
+[3] https://sci-hub.tw
+[4] https://src.adamsgaard.dk/dotfiles/file/.exrc.html
+[5] https://github.com/martanne/vis
+[6] https://sam.cat-v.org/
+[7] https://pwmt.org/projects/zathura
+[8] https://src.adamsgaard.dk/dotfiles/file/.config/zathura/zathurarc.html
diff --git a/pages/003-changelog.html b/pages/003-changelog.html
@@ -1,5 +1,3 @@
-<h2>Appearance on The Changelog</h2>
-
<p>I recently had the chance to talk with
<a href="https://adamstacoviak.com/">Adam Stacoviak</a> and
<a href="https://twitter.com/jerodsanto">Jerod Santo</a> on their tech
diff --git a/pages/003-changelog.txt b/pages/003-changelog.txt
@@ -0,0 +1,16 @@
+I recently had the chance to talk with Adam Stacoviak[1] and Jerod
+Santo[2] on their tech podcast The Changelog"[3]. We discussed how
+open source software plays an important role in climate science,
+my scholarref[4] tools, and my (un)healthy scepticism of Github
+and social networks.
+
+Listen here... [5]
+
+
+References:
+
+[1] https://adamstacoviak.com/
+[2] https://twitter.com/jerodsanto
+[3] https://changelog.com/podcast
+[4] file:///home/ad/code/adamsgaard.dk/pages/scholarref.html
+[5] https://changelog.com/podcast/378
diff --git a/templates/contact.gph/header.gph b/templates/contact.gph/header.gph
@@ -1,4 +1,4 @@
-CONTACT
+--- Contact ---
Anders Damsgaard
anders@adamsgaard.dk
diff --git a/templates/index.gph/footer.gph b/templates/index.gph/footer.gph
@@ -1,2 +1,2 @@
-[0|Atom feed|/atom.xml|${siteurl}|70]
+[0|Atom feed|/atom.xml|server|port]
diff --git a/templates/index.gph/header.gph b/templates/index.gph/header.gph
@@ -2,12 +2,12 @@ Welcome to...
/\ _ _| _ _ _' _ _ _ |_ _ _|_ _ | _
/--\| |(_|(/_| _\ (_|(_)|_)| |(/_| | |(_)|(/_
_| |
-[i||Err||]
[1|Publications|/research.gph|server|port]
-[h|Media|URL:${siteurl}/media.html|https://adamsgaard.dk|70]
+[1|Media|/media.gph|server|port]
[1|Contact|/contact.gph|server|port]
[h|Code|URL:https://src.adamsgaard.dk|https://src.adamsgaard.dk|70]
[9|CV|/pub/cv.pdf|server|port]
-[h|Photography|URL:https://andersdamsgaard.com|https://andersdamsgaard.com|70]
+[h|Photography|URL:https://andersdamsgaard.com|andersdamsgaard.com|70]
+[h|WWW mirror|URL:${siteurl}|${siteurl}|70]
--- Posts ---
diff --git a/templates/index.gph/item.gph b/templates/index.gph/item.gph
@@ -1 +1 @@
-[h|${created} ${title}|URL:${siteurl}/${filename}|${siteurl}|70]
+[0|${created} ${title}|${filename}|server|port]
diff --git a/templates/media.gph/footer.gph b/templates/media.gph/footer.gph
diff --git a/templates/media.gph/header.gph b/templates/media.gph/header.gph
@@ -0,0 +1,52 @@
+--- Interviews and presentations ---
+
+A brief introduction to my research
+[9|video (ogv) 3.8 MB|/video/auff_interview_en.ogv|server|port]
+[9|video (webm) 4.4 MB|/video/auff_interview_en.webm|server|port]
+
+Keynote presentation at the CSDMS general meeting 2016
+[9|video (ogv) 46.2 MB|/video/csdms2016.ogv|server|port]
+[9|video (webm) 50.2 MB|/video/csdms2016.webm|server|port]
+
+
+--- Simulations using my software ---
+
+2D shear simulation of granular diffusion and segregation
+[9|video (ogv) 8.4 MB|/video/diffusion.ogv|server|port]
+[9|video (webm) 12.8 MB|/video/diffusion.webm|server|port]
+
+Elastic and plastic deformation of sea ice under compression
+[9|video (ogv) 272 KB|/video/seaice-ridging.ogv|server|port]
+[9|video (webm) 343 KB|/video/seaice-ridging.webm|server|port]
+
+Subglacial channel mechanics under different effective stresses
+[9|video (ogv) 815 KB|/video/channel-shape.ogv|server|port]
+[9|video (webm) 1.4 MB|/video/channel-shape.webm|server|port]
+
+Internal stress dynamics in sediment around subglacial channels
+[9|video (ogv) 738 KB|/video/channel-stress.ogv|server|port]
+[9|video (webm) 767 KB|/video/channel-stress.webm|server|port]
+
+Elastic wave propagation in 3D lattice
+[9|video (ogv) 457 KB|/video/elastic-wave-lem.ogv|server|port]
+[9|video (webm) 481 KB|/video/elastic-wave-lem.webm|server|port]
+
+Force chains during simple shear
+[9|video (ogv) 471 KB|/video/force-chains.ogv|server|port]
+[9|video (webm) 1.1 MB|/video/force-chains.webm|server|port]
+
+Closeup of granular jamming in sea ice
+[9|video (ogv) 775 KB|/video/seaice-jamming-closeup.ogv|server|port]
+[9|video (webm) 803 KB|/video/seaice-jamming-closeup.webm|server|port]
+
+Granular gamming of sea ice with different grain size distributions
+[9|video (ogv) 1.2 MB|/video/seaice-gsd.ogv|server|port]
+[9|video (webm) 926 KB|/video/seaice-gsd.webm|server|port]
+
+Granular jamming of sea ice with varying friction and cohesion
+[9|video (ogv) 949 KB|/video/seaice-friction-cohesion.ogv|server|port]
+[9|video (webm) 915 KB|/video/seaice-friction-cohesion.webm|server|port]
+
+Stick/slip under stress-controlled shear with variable water pressure
+[9|video (ogv) 1.7 MB|/video/stick-slip.ogv|server|port]
+[9|video (webm) 2.9 MB|/video/stick-slip.webm|server|port]
diff --git a/templates/media.gph/item.gph b/templates/media.gph/item.gph