git » homepage.git » commit e4f7f83

Repair stale external links

author Alan Dipert
2026-07-16 16:43:02 UTC
committer Alan Dipert
2026-07-16 16:43:02 UTC
parent 91eefdf0ffb2884176bef646491df1c10b9ce753

Repair stale external links

md/GridCalc.md +1 -1
md/HomePhotos.md +1 -2
md/Lisp/GherkinHistory.md +1 -2
md/TechWorks.md +4 -5

diff --git a/md/GridCalc.md b/md/GridCalc.md
index 6adac97..341a567 100644
--- a/md/GridCalc.md
+++ b/md/GridCalc.md
@@ -98,7 +98,7 @@ If that way of thinking resonates, you can watch the [demo video](https://youtu.
 
 - [Constructive Reals background](https://chadnauseam.com/coding/random/calculator-app)
 - [creal.js](https://github.com/christianp/creal.js)
-- [CLP's Nice Calculator (inspiration)](https://www.chrisl.org/calculator/)
+- [CLP's Nice Calculator (inspiration)](https://somethingorotherwhatever.com/nice-calculator/)
 
 <figure style="margin: 1.5rem 0 0 0; max-width: 520px;">
   <img src="./GridCalc/byte_gridcalc.png" alt="GridCalc magazine cover mockup" width="100%" />
diff --git a/md/HomePhotos.md b/md/HomePhotos.md
index 26ffb6f..5f0809d 100644
--- a/md/HomePhotos.md
+++ b/md/HomePhotos.md
@@ -13,7 +13,7 @@ I run PhotoPrism on Fedora on my old Lenovo T430s laptop with a 1TB SSD. I was a
 * [PhotoSync](https://www.photosync-app.com/home.html) on Android and iOS to sync photos from devices to PhotoPrism.
 * Docker to run PhotoPrism in docker-compose, as a systemd unit ([tutorial](https://techoverflow.net/2020/10/24/create-a-systemd-service-for-your-docker-compose-project-in-10-seconds/)).
 * [Tailscale VPN](https://tailscale.com/) so photos can be accessed and uploaded even while mobile.
-* [Duplicity](http://duplicity.nongnu.org/) in cron (via [flock](https://linux.die.net/man/1/flock)) to back up regularly to AWS S3 Glacier Deep Archive. This is currently the cheapest way to store things in AWS long term. I started with [this tutorial](https://stuff.technology/making-offsite-backups-for-home-convenient-inexpensive-and-secure-4654680333e8) but ended up making my own Dockerfile and using a newer duplicity/requirements.txt:
+* [Duplicity](http://duplicity.nongnu.org/) in cron (via [flock](https://linux.die.net/man/1/flock)) to back up regularly to AWS S3 Glacier Deep Archive. This is currently the cheapest way to store things in AWS long term. I started with [this tutorial](https://medium.com/stuff-technology/making-offsite-backups-for-home-convenient-inexpensive-and-secure-4654680333e8) but ended up making my own Dockerfile and using a newer duplicity/requirements.txt:
 	* [Dockerfile](./HomePhotos/Dockerfile)
 	* [requirements.txt](https://gitlab.com/duplicity/duplicity/-/blob/d52fd888100b8fb105c696b38f2884c8173eb412/requirements.txt)
 	* I really like the look of [tarsnap](https://www.tarsnap.com/) but I find it a little too expensive for this use case. As far as I can tell, the killer feature it offers (beyond encryption) is incremental deletion. I hope to use it for system backups in the near future, though. I think it would also be good for storing recent security camera footage from [ZoneMinder](https://zoneminder.com/), once I get that set up.
@@ -31,4 +31,3 @@ Future plans
 In the future, I look forward to working with PhotoPrism more, and maybe even getting involved with its development. I'm interested in adding OCR indexing and full text search to navigate the many documents I photograph with my phone. In my prototype I had some success with [Tesseract](https://github.com/nguyenq/tess4j) and [SQLite FTS 5](https://sqlite.org/fts5.html) for this purpose. I would also enjoy a more powerful textual search language.
 
 A local healthcheck service would be nice too. I'd like to see a [ESP8266](https://en.wikipedia.org/wiki/ESP8266) or something somewhere in my office with a green LED glowing to know everything is fineā„¢.
-
diff --git a/md/Lisp/GherkinHistory.md b/md/Lisp/GherkinHistory.md
index 87f4f4a..f2ef53d 100644
--- a/md/Lisp/GherkinHistory.md
+++ b/md/Lisp/GherkinHistory.md
@@ -21,7 +21,7 @@ In a quest to become a **Real Lisp Hacker**, I bounced around Google search resu
 
 Of the stuff I read, [PAIP](https://amzn.to/3px57ZJ) probably propelled me the furthest along, but I struggled to develop a really solid comprehension of the basic implementation mechanics of things like closures. In retrospect, this is almost surely because I was experimenting in Clojure, but the examples were in [Common Lisp](./CommonLisp.md), a language I didn't know well.
 
-In the fall of 2013, in the month before Clojure/conj, I ran across [awklisp](https://github.com/darius/awklisp) by [Darius Bacon](http://wry.me/~darius/). I became obsessed with it.
+In the fall of 2013, in the month before Clojure/conj, I ran across [awklisp](https://github.com/darius/awklisp) by [Darius Bacon](https://web.archive.org/web/20200216105017/http://wry.me:80/~darius/). I became obsessed with it.
 
 awklisp had a few properties unique among available implementations at the time. I believe this set of properties made it especially compelling to me as a learning aid:
 
@@ -82,4 +82,3 @@ Proper BDFL attire
 
 Clinton Dreisbach made me an awesome Gherkin shirt in December of 2013, at the height of Gherkin-mania. Here I am modeling it. Thanks Clinton!
 ![](./GherkinHistory/alan_wearing_gherkin_shirt.jpg)
-
diff --git a/md/TechWorks.md b/md/TechWorks.md
index e62fc5a..40821b0 100644
--- a/md/TechWorks.md
+++ b/md/TechWorks.md
@@ -8,8 +8,8 @@
 | 2020-04-27 | [ELS](https://www.european-lisp-symposium.org/)                                               | [JACL: A Common Lisp for Developing Single-Page Web Applications](./TechWorks/jacl-demo-els-2020.pdf)                                                                                                                                                                       | Academic Paper | Author             |                            |
 | 2020-01-31 | rstudio::conf                                                                                 | [Integration Testing in Shiny Apps and Modules](./TechWorks/2020-01-28-RStudio-Conf-Integration-Testing-ePoster.pdf)                                                                                                                                                        | Poster         | Presenter          |                            |
 | 2019-12-11 | WWW                                                                                           | [Just Lisp Things](https://tailrecursion.com/jlt/)                                                                                                                                                                                                                          | Author         | Blog               |                            |
-| 2019-11-19 | [OCRUG](https://ocrug.org/)                                                                   | [Integrating React.js and Shiny](https://www.meetup.com/OC-RUG/events/265511792/), [code](https://github.com/alandipert/ocrug-2018-11-27)                                                                                                                                   | Presentation   | Presenter          |                            |
-| 2019-11-16 | [OCRUG](https://ocrug.org/)                                                                   | [Interview with Alan Dipert](https://ocrug.org/blog/2019/11/19/2019-11-19-interview-alan-dipert/)                                                                                                                                                                           | Interview      | Interviewee        |                            |
+| 2019-11-19 | [OCRUG](https://web.archive.org/web/20220123183238/https://ocrug.org/)                        | [Integrating React.js and Shiny](https://www.meetup.com/OC-RUG/events/265511792/), [code](https://github.com/alandipert/ocrug-2018-11-27)                                                                                                                                   | Presentation   | Presenter          |                            |
+| 2019-11-16 | [OCRUG](https://web.archive.org/web/20220123183238/https://ocrug.org/)                        | [Interview with Alan Dipert](https://web.archive.org/web/20220123191104/https://ocrug.org/blog/2019/11/19/2019-11-19-interview-alan-dipert/)                                                                                                                               | Interview      | Interviewee        |                            |
 | 2019-01-24 | rstudio::conf                                                                                 | [Integrating React.js and Shiny](https://rstudio.com/resources/rstudioconf-2019/integrating-react-js-and-shiny/)                                                                                                                                                            | Presentation   | Presenter          |                            |
 | 2018-12-17 | [Orange Combinator](https://www.meetup.com/fr-FR/orange-combinator/events/lxvjrpyxqbwb/)      | [Old School FP: A Common Lisp Experience Report](https://tailrecursion.com/~alan/documents/2018-12-17-CommonLispOrangeCombinator.pdf)                                                                                                                                       | Meetup         | Presenter          |                            |
 | 2018-09-06 | rstudio.com                                                                                   | [Load testing Shiny](https://rstudio.com/resources/webinars/load-testing-shiny/)                                                                                                                                                                                            | Webinar        | Presenter          |                            |
@@ -27,12 +27,11 @@
 | 2014-03-18 | [The Cognicast](https://www.cognitect.com/cognicast/)                                         | [Episode 52](https://www.cognitect.com/cognicast/052-alan-dipert)                                                                                                                                                                                                           | Interview      | Interviewee        | Craig Andera               |
 | 2013-11-14 | [Clojure/conj](https://web.archive.org/web/20131010003442/http://clojure-conj.org/)           | [Gherkin, a Lisp 1 in Bash 4](https://www.youtube.com/watch?v=bmHTFo2Rf2w#t=28m55s), [code](https://github.com/alandipert/gherkin)                                                                                                                                          | Lightning talk | Presenter          |                            |
 | 2013-03-18 | Clojure/West                                                                                  | [FRP in ClojureScript with Javelin](http://www.infoq.com/presentations/ClojureScript-Javelin), [slides](./TechWorks/Dipert-FRP_in_ClojureScript_with_Javelin.pdf)                                                                                                           | Presentation   | Presenter          |                            |
-| 2012-11-16 | [Clojure/conj](http://2012.clojure-conj.org/)                                                 | [FRP in ClojureScript with Flapjax](https://www.youtube.com/watch?v=xaxF5RDdVRE#t=22m21s), [code](https://www.youtube.com/watch?v[[https://github.com/alandipert/flapjax-demo), [demo](http://alandipert.github.io/flapjax-demo/)                                           | Lightning talk | Presenter          |                            |
+| 2012-11-16 | [Clojure/conj](https://web.archive.org/web/20210919060939/http://2012.clojure-conj.org/)             | [FRP in ClojureScript with Flapjax](https://www.youtube.com/watch?v=xaxF5RDdVRE#t=22m21s), [code](https://github.com/alandipert/flapjax-demo), [demo](http://alandipert.github.io/flapjax-demo/)                                                                         | Lightning talk | Presenter          |                            |
 | 2012-10-06 | BarCamp Rochester 10                                                                          | Your Own Compiler in 20 Minutes, [slides](https://github.com/alandipert/barcamp2012-jsonscript)                                                                                                                                                                             | Presentation   | Presenter          |                            |
 | 2012-07-19 | OSCON                                                                                         | Computing with Clojure, [slides](https://github.com/alandipert/oscon2012-clojure)                                                                                                                                                                                           | Workshop       | Trainer            | Clinton Dreisbach          |
 | 2012-07-13 | Pluralsight                                                                                   | [Clojure Fundamentals - Part 1](https://www.pluralsight.com/courses/clojure-fundamentals-part-one)                                                                                                                                                                          | Course         | Trainer            | Craig Andera               |
-| 2012-03-16 | Clojure/West                                                                                  | [Programming with Values in Clojure](https://www.infoq.com/presentations/Programming-with-Values-in-Clojure/), [slides](https://web.archive.org/web/20120216230608/http://clojurewest.org/[[.\\Dipert-ProgrammingWithValues.pdf)                                            | Presentation   | Presenter          |                            |
+| 2012-03-16 | Clojure/West                                                                                  | [Programming with Values in Clojure](https://www.infoq.com/presentations/Programming-with-Values-in-Clojure/), [slides](./TechWorks/Dipert-ProgrammingWithValues.pdf)                                                                                                    | Presentation   | Presenter          |                            |
 | 2011-11-12 | [Clojure/conj](https://web.archive.org/web/20111023154311/http://clojure-conj.org/)           | [Uberlisp, a Lisp for Arduino](https://www.youtube.com/watch?v=tSw3x0rVh88#t=18m30s), [code](https://github.com/alandipert/wombat)                                                                                                                                          | Lightning talk | Presenter          | Jon Distad                 |
 | 2011-08-25 | The Ruby Hoedown V                                                                            | Functional Programming with Ruby                                                                                                                                                                                                                                            | Presentation   | Presenter          |                            |
 | 2005-01-14 | Linux.com                                                                                     | [My workstation OS: NetBSD](https://web.archive.org/web/20080201010726/http://www.linux.com/articles/41523)                                                                                                                                                                 | Article        | Author             |                            |
-