2. Understand why that rule is in place before proceeding
This article deals with the second part, but not the first. So it is only about about half of Chesterton's fence at best.
In these examples, a rule (avoid blocking calls) is in place to guide the programmer to a performant system. Programmers apparently thought that if they found a way to avoid directly blocking calls, but managed to indirectly block, they had still obeyed the rule. And strictly by the most narrow reading of the rule they had obeyed it. But they had defeated the purpose of the rule.
So definitely Chesterton's Fence adjacent, but not Chesterton's Fence itself.
It's not about Chesterton's Fence, though I thought so at first due to the title wording. The developers Raymond is referring to actually weren't trying to circumvent a rule. They followed the rules to the letter, but whoever made the rule didn't adequately document the spirit of the rule. So when the letter of the rule turned out to be insufficient, the devs couldn't really know that their solution violated the intent behind the rule.
Maybe because every concept has some plonkers name associated with it. The ideas stand on their own. It does not matter who said what, when. I'm pretty sure the only reason people feel the urge to interrupt a conversation to drop names like that is to boast about their useless knowledge.
My kid was using trinket at school, and the fact that Python 2 was free but Python 3 was paid was so weird and annoying that I created trifling.org (disclaimer: hosted on a tiny Linux box in my laundry room over WiFi, on residential internet!)
It was the first thing I coded entirely with Claude, and absolutely blew me away. (Mostly, it turns out other people already did all the hard parts -- the inspiration was running across a reddit post where someone said they wired together pyiodide and the Ace editor in a few hundred lines of javascript).
This was my first experience of "if you know what you're doing, LLMs can build things well and incredibly quickly". I think MVP took one evening, and then two more rewrites pushed it out to a week or so. (One after I realized fully offline was a worthwhile idea, the second after I realized the backend could be a dumb key/value store with only prefix iteration.)
As mentioned, it's local-first: everything should work perfectly offline after loading it once. Saving is limited to my kid’s school domain at the moment, but it’s super simple to host: just compile the Go binary and put it behind Caddy or something.
The free Python 2 versus paid Python 3 split you ran into wasn't arbitrary pricing. Trinket ran Python 2 entirely in the browser through Skulpt https://skulpt.org, a JS reimplementation that costs nothing to serve, while Python 3 needed real CPython on their servers because Skulpt never fully covered 3.x. Pyodide compiling actual CPython to WASM is what changed that math, which is exactly why your trifling rewrite can offer real Python 3 offline for free.
Ah, interesting. Yeah, I looked at Skulpt a bit, and it looks really nice, although not as compatible as pyiodide, especially for python3. I did consider using it as a fallback if wasm is disabled.
Oh stop being silly. Yes, the programming language is technically irrelevant in that they’re all Turing complete.
In reality, the programming language tells you all kinds of subtle things: probabilities about the way the software will feel to use, how stable it’s likely to be, how fast, what the author is likely to focus on.
I found one of the best jobs of my life in 2015 by asking “who’s doing interesting things in Atlanta in Go?” Not because I was uncompromisingly settled on Go, but because in 2015, using Go (often) connoted a certain approach, a certain type of engineering, a certain constellation of values.
So please stop pretending the whole gestalt of programming languages and their communities don’t deeply affect the resulting software.
(I say this with no unkindness intended, mostly to all of hackernews)
> but because in 2015, using Go (often) connoted a certain approach, a certain type of engineering, a certain constellation of values
So called "The vibe". And the vibe emanating from Rust is sometimes unbearable. Like claiming the main feature of the project is that it's written in Rust.
I once tried to fully analyze the amazing NTSC emulation used in OpenEmulator. I went down a rabbit hole that involved losing motivation several lessons in to a signal processing class on YouTube, but for those interested, I did at least pull quite a lot of it apart here: https://observablehq.com/@zellyn/apple-ii-ntsc-emulation-ope...
I also ported it to JavaScript (linked from above page)
I educated anyone who asked about the NTSC filter over the years because I wanted to see less-optimized implementations of it, given how much faster hardware is than the mid 2000s (it precalculated the kernels for every color at every phase offset and did the signed RGB math during rendering). There's something satisfying about being able to recreate the peculiarities of old hardware we grew up with, as a way of demystifying it.
I had that keyboard! I actually really like the piano-ish touch. I remember being sad though, when I realized they’d crammed all the sounds into I think 16MB (or was it 8?) and realizing how bad that was even by the late 90s! I think I still have mine in the garage somewhere… good times!
My kids (12-year-old boy, 7-year-old girl) recently got Tin Can phones, as did several of their friends, and absolutely love them.
One note: you can authorize regular phone numbers for them to be able to call, but only if you pay the subscription ($10/month I think? We didn't do this...)
I know I could build the same thing out of esp32's but it would be a big hassle, and I'd have to build one for all their friends too!
I grew up with borrowed ZX Spectrum manuals that detailed the Z80 assembly language, (a clone of) a Red Book that came with the (clone of a) Apple II computer that had assembly listings, and fold-out circuit-board diagrams for the whole computer. I taught myself C++ from the manual that came with Borland Turbo C++ and the Waite Group C book. I laughed out loud at footnotes in the Camel book, which I read from the start through to where it becomes a reference. I read Sedgewick's Algorithms cover to cover for fun when I found it in a local library as a teenager. I borrowed the ancient "build a flight simulator" book from a friend in high school.
I've bought books by Kleppmann, Julia Evans, and Hillel Wayne's in-progress book on proofs. I owned the gang of four design patterns book (although I won't pretend -- like everyone else -- to have done more than skim a few patterns!)
And yet.
For many, many years now every time I've wondered into a bookstore, and meandered over to the fondly-remembered computer books section with a sense of nostalgia, I've just been deeply disappointed and sad. If you're lucky, you'll find one or two books that look worth reading, and the rest is just the product of some giant publishing machine whose sole purpose seems to be to fleece unsuspecting neophytes of their money by pushing on them hastily written books on whatever the current fad is. Often when you look at the publication date and compare it to the release date of the software, it's obvious you couldn't write a _good_ book that fast.
And they're all huge. The C Programming Language, Javascript: the good parts, and The Go Programming Language are just about the only three examples I know of where concision was considered a virtue. Most are just fluffy as hell, which is offensive to the kind of mind that wants to learn a programming language.
Add to that the observation in the article that paper books for programming languages are inherently weird.
So yeah, nobody cracks open a programming book anymore, but there are lots of compelling reasons beside AI, reasons that make you grateful if AI can save you from having to wade through an ocean of dreck.
I can imagine a heavily curated shelf of programming books, and it would be a thing of beauty, a collection of potent fireworks shot into the dark of the unknown. But, like, who would go to Barnes and Noble or whatever and actually see it, and actually buy something?
Thanks, this just reminded me to order some Klein Bottles. I realized right after I hit "Finish" that I should have included in the note a big thank you for both the Cuckoo's Egg (reading it and learning about unix systems and teletypes and worms made me feel like I was part of some secret nerdy club in the early 90s… although tbh getting my parents to drop me off every month at the Chattanooga BBS get-together brunch was probably enough nerd cred for the rest of my life!) but also for making Klein bottles and using robots to fetch them and everything: it makes me happy just knowing that the kind-hearted, perhaps slightly off-kilter, counter-cultural nerdery that is part of what drew me into computing is still alive in the world!
As we learn how to train smarter models on less data, it’ll become more and more interesting to see whether models like this can invent post-1930 math, science, etc. and make predictions.
[Edit: serves me right for not reading tfa. My points are well-covered]
Thanks for this! It's really fun. My older kid now has a vanilla sliderule bracelet. The younger is getting a smaller bracelet of the same design, but with dragons on it :-)
Happy to share source if you like, but it was nothing complicated:
- ask aistudio.google.com to draw a bunch of dragons
- trace one to svg
- make the bracelet a little smaller
reply