Konrad Hinsen
06/26/2025, 5:19 AMKartik Agaram
Navigating a HyperDoc
pane, in the Computed text
section, it would be good to show an example of computed text with the dashed underlines. Maybe have 7*6
compute to 42.
• Meta lesson from the previous bullet: would it be possible to create publicly accessible hyperlinks to specific sections in a HyperDoc? 🙂
Continuing to read..Kartik Agaram
Influenza epidemics in France
, could you link to a definition for relative incidence? Should it go to https://en.wikipedia.org/wiki/Relative_risk?Kartik Agaram
Kartik Agaram
ari-incidence-france
, I wish each checkbox/line would have a consistent color.Konrad Hinsen
06/26/2025, 6:31 PMKartik Agaram
Konrad Hinsen
06/26/2025, 6:40 PMKonrad Hinsen
06/26/2025, 6:41 PMAh cool. How can I find the URL for a section?In the URL tab on class hyperdoc. Assuming that's what you mean by section.
Kartik Agaram
Enabling or disabling the playground is done via a flag when starting the server (development=nil).I imagine there are security issues involved? Maybe just tweak the message to say it will be available when running locally, and point readers at the repo.
Konrad Hinsen
06/26/2025, 6:44 PMKonrad Hinsen
06/26/2025, 6:46 PMKartik Agaram
Kartik Agaram
Konrad Hinsen
06/27/2025, 6:17 AM(require 'asdf)
and then (asdf:load-system "hyperdoc-demo")
.
• Software catalogs and package managers take care of downloading dependencies from the right places. There are the system-wide ones (Debian, Guix, ...), but also a few Lisp-specific ones, out of which Quicklisp is by far the most popular. It's very easy to install, and mostly just works. But its default software catalog is updated only about twice per year. If you want bleeding-edge code (such as mine), you have to add a second catalog, Ultralisp, which is easy to add as well. If you have those two, and followed their advice of activating Quicklisp on startup (in $HOME/.sbclrc for SBCL), then (ql:quickload "hyperdoc-demo")
will download and load everything you need.
I provide instructions for Quicklisp (which I use on my old Mac) and for Guix (which I used under Linux). I have tested my system with SBCL and ECL, the two Lisp implementations well supported by Guix.
Philosophical note: Common Lisp is fortunate to have ASDF separate from Quicklisp and other package managers. The fusion of their Python or JS equivalents makes it a pain to assemble polyglot software. With Lisp, any package manager can delegate the Lisp-specific stuff to ASDF. And Lisp developers don't have to know about anything else than ASDF.Kartik Agaram
I provide instructions for QuicklispOh did I miss this? I don't see where you do.
Kartik Agaram
Konrad Hinsen
06/27/2025, 8:48 AMsbcl --disable-debugger \
--eval '(require :asdf)' \
--eval '(asdf:load-system "hyperdoc-demo")' \
--eval '(hyperdoc-demo:serve :port 9000)' \
--eval '(sleep most-positive-fixnum)'
Kartik Agaram
Konrad Hinsen
06/28/2025, 4:22 PMKartik Agaram
curl |sh
on a http rather than https URL.. I might wait a bit to try running this.. definitely on my radar, though.Konrad Hinsen
06/29/2025, 7:38 AMcurl | sh
. The closest moral equivalent I see is using npm
. Installing Ultralisp is low-risk, but there's a subsequent risk in installing packages from Ultralisp, which is a mostly uncurated software catalog. http
then seems like a minor additional risk. My understanding is that it's due to Quicklisp not handling encryption for some reason. So if it's http
you are worrying about, you shouldn't be using Quicklisp at all. Which is one reason why my main Lisp development environment is managed by Guix.Kartik Agaram
http
URLs. This is going to require rethinking my Quicklisp setup..
(I personally don't see much difference between curl |sh
and the npm eco-system. But they do seem to benefit some from at least pervasively using https. I like the idea of supporting http
and tend to be on balance slightly against https. But there have been too many cases of intermediaries inserting data into payloads to justify downloading code over http
, IMO.
Minor story: back when I launched lines.love in Mar 2022, akkartik.name used to be served over just http
. So I hosted my download link at https://tilde.club. When I realized certbot was now push-button easy, I added https
as well, but made it a point to keep http
working. But now I notice http://akkartik.name redirects to https://akkartik.name 😬 Gotta debug that some time..)Kartik Agaram
Konrad Hinsen
06/30/2025, 6:27 AMhttp
vs. https
as well. Bot-in-the-middle attacks are real enough to worry about downloading code via http
. But https
implies serious dependencies on Big Tech. Let's Encrypt is what makes https
accessible to most of us small players. But it's backed by the big ones, and they can pull out any time once http
support in browsers and other tools starts to disappear or become unusable.
Guix (and others) provide a better solution to code trust: it's not based on the source, but on cryptographic verification of the code itself. Nothing fancier than checksums, but applied systematically across the whole dependency chain, including build scripts.
Of course, no technology is more secure than the people who run it. It is conceivable that someone puts malware into popular code (the xz
story), and that can happen at all levels, including Guix' build scripts. Perhaps the best protection of the Common Lisp ecosystem is its small size: it's simply not attractive as a medium to spread malware.Konrad Hinsen
06/30/2025, 8:10 AMhttps
but with another certificate hierarchy than what browsers use. Perhaps P2P: everyone can be a certificate authority for anyone else. Decide for yourself who you trust. That's not realistic for a large public, but among technophiles it could work fine.