§ Stream
The Goddess of Everything Else
Just got reminded (via the LessWrong Community Weekend) of this wonderful piece: The Goddess of Everything Else (Video Version)
Nice talk about Deutsche Bahn.
Weaving Threads
At the DSA, I made a promise:
When the first attendant of one of my programming workshops would be finished with reading the first book for Learning to Program I proposed, I would start to draft the guide to Software Engineering I would’ve liked to have when I was younger.
That happened nine days after the DSA finished.
So now I find myself writing this guide (still on here for now)—and I’m really enjoying it so far.
No more commit hashes
Lol. Today I learned that you can reference commits in git by searching through their messages:
In this commit graph:
* 30997b5 (HEAD -> main, bugFix) Add lala* ceeae15 Add hehe* c4a2cd2 Add hoho* b2627b3 Add a
git show :/hoho
does the thing you’d expect—it shows commit c4a2cd2
. Nice!
Keyboard Shortcuts
TIL that holding Ctrl
on https://chatgpt.com shows all avaliable keyboard shortcuts.
That’s actually pretty nice UX :)
Minus me not knowing that until now (which clearly is bad UX)—but hey, you can’t have everything, I guess. It would have been nice of them to indicate that somewhere.
NAND to Tetris
We’re currently thinking about which course to teach at a possible next SchülerAkademie next year.
We thought a course that traverses a sizeable chunk of the abstraction stack of Computer Science could be pretty nice, and I had a website that did that in mind for starting my investigation into course materials. However, I didn’t do that immediately, and found NAND to Tetris on one of Eli Tyre‘s links first. This somehow felt familiar.
And I’m still not sure where I saw it/read about it first, but just today I sorted some links about Supernuclear into my personal knowledge base, one of which was a guest post by one of the Fractal University (which I already knew) people, which taught NAND to Tetris before.
I love it when I find out a graph is connected like that.
cmdchallenge
TIL about a nice new thing: cmdchallenge
- Twelve Days of Shell (easy)
- Command Challenge (mid)
- Without /bin version (hard)
There are pretty cool ways to learn how to navigate the shell.
Netscape
Just got reminded of a real gem by Joel Spolsky: Things You Should Never Do, Part I
(You shouldn’t rewrite your software from scratch.)
Techne
And oh my god, he’s got a list of his Personal systems, protocols, workflows, policies, methods, and checklists he calls Techne (nice word, by the way!).
So looking forward to studying them.
Capital
Just got recommended Eli Tyre—and he’s got a nice write-up of types of Capital (I already thought in those three types of Capital before, though—probably not the most novel idea on earth ^^)
But then, I went on a roaming the web research spree encompassing
And then branched off to his books, Project Lawful, and to finally downloading the Functional Decision Theory papers (1, 2)
Ah, I love roaming the web.
Joey Savoie
I mean, I knew him from him being mentioned in Moral Ambition for founding the Charity Entrepreneurship stuff, but: He’s also got a website where he tries (or tried?) to outline his values.
Unfortunately, it’s only little content, but from what I can see it’s pretty neat
The Hydrogen Sonata
I’ve just finished reading The Hydrogen Sonata, the now sixth (? I think) Culture book I’ve read.
Pretty nice book, although I would sort it into the middle of all the culture books I’ve read so far.
(Doesn’t surpass Player of Games or Consider Phloebas, for example)
And I think I’m at the point where I find the Culture books all a bit too similar—but hey, what can you do when you still very much enjoy reading them.
Oh, and the lean
packaged in Doom Emacs appears to be the Lean 3 Mode. So you can’t use that, and instead need to use the Doom Emacs section of lean4-mode.
Trying Lean
Day 2 of the Zurihac 2025, and I’m trying out Lean.
As regularly is the case, since I’m on NixOS, things don’t work directly out of the box.
This guide in particular doesn’t work anymore since the official Nix Flake got deprecated.
Luckily, there is a new one that just works™.
Up to some Functional Programming with it.
Currently at ZuriHac setting up a PureScipt development environment with Nix—and of course, it’s not issue-free.
nix shell nixpkgs#purescript nixpkgs#spagospago initspago build
errors. (Throws a pretty cryptic git error.) You need:
nix shell nixpkgs#purescript nixpkgs#nodejs_24npm install spago@nextnpx spago initnpx spago runnpx spago test
That works!
Local-first conf day #1
Aaand I’ve just had my first day at local-first conf!
What a great crowd.
My day started with talks about some pretty nice topics, followed by a lunch with an absolutely amazing range of topics.
We went from Clojure to Emacs to Semantic Zooming to Simon Willison to llm
to Bret Victor and Dynamicland (and a new talk of him being online!), to Stephen Wolfram‘s personal setup, all interleaved with local-first stuff.
And that was only until just after lunch.
<3
Local-first Unconf
I just came home from my first day of Local-first Conference—the less official Unconference part, and I had a pretty great day.
I’ve worked a bit more with jazz.tools, and had so many interesting conversations.
Today, I:
- read Project Cambria
- thought a lot about bidirectional lenses
- learned where the Software as Aircraft Carriers, not Bicycles quote is coming from
- got reminded of Darklang
- learned more properly about iroh
- and got reminded of how weird/hard Schema Migration and Identity actually are.
10/10.
Can recommend.
😁
Productivity
Over the last few weeks, I’ve grown more and more unocomfortable with the amount of different tasks I’ve been keeping in my head right now. I played around with a bunch of todo apps, and none of them has been really satisfactory.
All I want(ed) is a an app with:
- fast UI
- nice search with filtering
- nice search for scheduling
- I can use as my inbox for everything, also things to read. It should integrate with the sharing menu of my phone.
- I can use from anywhere I can access the internet
- I can use without Internet
- That never, ever produces any sync weirdness between devices.
Shouldn’t be that hard, right?
So far, it sounds like I probably could make Amazing Marvin do what I want.
But I’m definitely also using this as an example application to try out local-first software frameworks.
https://stopa.io
I’ve just reread some of Stepan Parunashvili’s articles, and damn, he’s good.
He talks about local-first software(here), Antifragility (here), and progress. Gotta love it.
nix-tree
I just learned about nix-tree
. What a nice tool!
It shows you a searchable dependency tree of your flake(s) + their sizes: Super nice to analyze what’s taking so long when you’re rebuilding your home environment, for example. (It was my humongous nvf config)
You can run it like this:
nix run nixpkgs#nix-tree
Roaming the Web
I’ve just had my latest hour-long Roaming the Web-spree. It started off with reading this great article on relationhips (How Relationships Actually Work), and went on with me reading half of her blog.
Then I found out she’s together with Eliezer, which made me go reading some nice LessWrong articles.
Specifically those two from Duncan Sabien:
It’s probably fair to say I’m in the general vicinity of an Information Monster.
Mastering 42
When first encountering this whole Writing Online idea, I really didn’t consider myself a writer in any capacity.
I even thought something among the lines of “Wow, that would be crazy”/“Wow, that would be so not you.”
Well, turns out when I thought that I forgot I had already been writing courses for the Hacker School and walkthroughs/guides for 42 School for quite some time already.
Brains are interesting.
Progress Bars
One of the pretty nice things about writing my own Digital Garden is how much I’m able to just implement everything I would’ve liked to have on other websites.
I’ve just implemented something I really would’ve liked to have on other websites:
A reading progress bar that indicates both the progress and the total reading time of the note by highlighting the part of the bar that you can currently see.
It’s a relatively minor thing, I know—but what can I say: I really like those small and simple solutions.
Cryptocurrencies
Aand he got me convinced to at least give Cryptocurrencies another chance:
Why Cryptocurrencies is on my reading list now.
Optimizing around
Lately, I had the impression that my workflows somehow stabilized.
I’ve been relatively happy with my window manager combined with gnome-magic-window, and haven’t been tweaking my keybinds for applications much lately.
I’ve been using Doom Emacs for quite some time now and spend less and less time customizing some behavior of it.
Compared to this, my keyboard layout feels almost completely stable with only minor changes in the whole of 2024, for example.
But lately, I’ve feel like I’ve hit a few ceilings at the same time—and now
- I can type
-
and_
faster -
vsplits
are more natural in Emacs - Moving around S-Expressions is cleaner
- And for the first time in ages, I now play around with pure, non-Home Row Mod Shift buttons on my keyboard.
Well, what can I say? I do like being in a state of Flow—and am definitely willing to pay the price for it.
CSS Weirdness
I just corrected my <CodeBlock />
component and it inexplicably blew out of its enclosing element.
Nothing ordinary helped until I found this comment.
CSS is, indeed, quite weird sometimes.
(The problem is that grid
s try to accomodate to the size of their elements. The solution is to apply min-w-0
to all of the elements.)
Oh, and it also doesn’t have a REPL nor a typeof function by default, as far as I can see.
May this help me for now:
type theType = TheType
let t = (thing: theType) => { thing }
t("hoho")t(5)t(5.)
Pedantic Typers
I’m currently and finally getting my feet wet with ReScript.
And I must say, I really do like what I see so far. The website is clear about what you get, the Docs look nice, and it’s got good and readable error messages.
But what on earth is this?
@react.componentlet make = () => { let (count, setCount) = React.useState(() => 0)
<div className="p-6"> <h1 className="text-3xl font-semibold"> {"What is this about?" -> React.string} </h1> <p> {React.string("This is a simple template for a Vite project using ReScript & Tailwind CSS.")} </p> <Button onClick={_ => setCount(count => count + 1)}> {React.string(`count is ${count->Int.toString}`)} </Button> </div>}
Yep, you see that right. One has to explicitly cast every string
to a React.string
.
(Sounds like it’s due to it not having the ability to form Union Types with Base Types. Hmm.)