tCopy blog posts to plain text - adamsgaard.dk - my academic webpage
 (HTM) git clone git://src.adamsgaard.dk/adamsgaard.dk
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 39b67632c08b13f1b892ec47b8d4dae9de55497b
 (DIR) parent 82efdb7738215834fcabf6ea0b13c73521f117b7
 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Mon, 24 Feb 2020 13:47:16 +0100
       
       Copy blog posts to plain text
       
       Diffstat:
         M Makefile                            |      18 ++++++++++++++++++
         M common/pagebegin.html               |       1 +
         R pages/ideas.txt -> ideas.txt        |       0 
         A pages/001-new-homepage.txt          |      43 ++++++++++++++++++++++++++++++
         A pages/002-scholarref.txt            |     227 +++++++++++++++++++++++++++++++
         M pages/003-changelog.html            |       2 --
         A pages/003-changelog.txt             |      16 ++++++++++++++++
         M templates/contact.gph/header.gph    |       2 +-
         M templates/index.gph/footer.gph      |       2 +-
         M templates/index.gph/header.gph      |       6 +++---
         M templates/index.gph/item.gph        |       2 +-
         A templates/media.gph/footer.gph      |       0 
         A templates/media.gph/header.gph      |      52 +++++++++++++++++++++++++++++++
         A templates/media.gph/item.gph        |       0 
       
       14 files changed, 363 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/Makefile b/Makefile
       t@@ -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:
 (DIR) diff --git a/common/pagebegin.html b/common/pagebegin.html
       t@@ -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>
 (DIR) diff --git a/pages/ideas.txt b/ideas.txt
 (DIR) diff --git a/pages/001-new-homepage.txt b/pages/001-new-homepage.txt
       t@@ -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
 (DIR) diff --git a/pages/002-scholarref.txt b/pages/002-scholarref.txt
       t@@ -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
 (DIR) diff --git a/pages/003-changelog.html b/pages/003-changelog.html
       t@@ -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
 (DIR) diff --git a/pages/003-changelog.txt b/pages/003-changelog.txt
       t@@ -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
 (DIR) diff --git a/templates/contact.gph/header.gph b/templates/contact.gph/header.gph
       t@@ -1,4 +1,4 @@
       -CONTACT
       +--- Contact ---
        
        Anders Damsgaard
        anders@adamsgaard.dk
 (DIR) diff --git a/templates/index.gph/footer.gph b/templates/index.gph/footer.gph
       t@@ -1,2 +1,2 @@
        
       -[0|Atom feed|/atom.xml|${siteurl}|70]
       +[0|Atom feed|/atom.xml|server|port]
 (DIR) diff --git a/templates/index.gph/header.gph b/templates/index.gph/header.gph
       t@@ -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 ---
 (DIR) diff --git a/templates/index.gph/item.gph b/templates/index.gph/item.gph
       t@@ -1 +1 @@
       -[h|${created} ${title}|URL:${siteurl}/${filename}|${siteurl}|70]
       +[0|${created} ${title}|${filename}|server|port]
 (DIR) diff --git a/templates/media.gph/footer.gph b/templates/media.gph/footer.gph
 (DIR) diff --git a/templates/media.gph/header.gph b/templates/media.gph/header.gph
       t@@ -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]
 (DIR) diff --git a/templates/media.gph/item.gph b/templates/media.gph/item.gph