You may have seen some very confusing explanations of what a monad is. Or maybe you’ve never heard of monads before. Either way, monads don’t have to be complicated or mysterious. Let’s take a more concrete look at what a monad is. By making abstract concepts concrete, we can build up our understanding. A Thing (value), an Operation and a Container Here’s a book: In a dispatch warehouse for an…
A Big Idea in System Design The pretext library made a big splash on tech Twitter/X the other week. There are lots of cool demos of what the library unlocks, and I think the library itself demonstrates a number of important lessons about software design. The creator of the library @_chenglou touched briefly on a big idea in a long post - here's an excerpt: [...snip...] The idea of laying out text…
This article is part of a series exploring concurrency through concrete, visual mental models for Swift Concurrency. Concurrency is hard. Clear pictures help. Scope note: This post focuses on data races in shared memory. We won't cover other concurrency issues like deadlocks or race conditions (where the order of operations matters, even without data corruption). One ToddlerBot, One Page…
When a Swift task hits an await, it’s like going into cryosleep at the end of Aliens . Ripley closes her eyes — and wakes up in Alien 3 . The world has changed. Her crew is gone. Everything she thought was true before the sleep is no longer safe to assume. That’s what can happen at every suspension point in Swift Concurrency. What’s a Suspension Point? In Swift, any time you await something, your…
Recently I’ve been playing around with Swift outside of the usual Apple developer setup. Instead of Xcode and the iOS simulator, I’ve been: using swiftly to install and manage Swift versions creating packages from the command line editing code in Zed building small servers and command-line tools with no Apple UI frameworks. It’s a lighter, faster way to work. It’s a great way to explore Swift…
I love looking at artists (and other creators) sketchbooks. Love seeing the process behind the work, the half-finished ideas, the unexplored concepts. Sometimes I enjoy these things more than the finished, polished final artefact. Needless to say I have many such sketchbooks - full of ideas, code, designs, writing, apps. A lack of ideas is not a problem I usually contend with. But... sharing and…
Note: This is a sketch, a WIP blog post, an exploration . I listen to a fair amount of audio content using my iPhone and iPad. Think podcasts, audiobooks, voice notes + journals . And of course music. But I find myself deeply unsatisfied with the UI of pretty much every audio playback app I use. Music Apps - Main Playback Podcast & Audio Book Apps - Main Playback Audio book apps Playback screen in…
When I draw with charcoal, the marks practically leap onto the page. The medium demands loose, expressive strokes. Trying to render fine details feels like fighting the tool itself. Switch to a sharp pencil, and suddenly I'm drawn toward precision, spending minutes perfecting each line and curve. The medium shapes the message. Programming languages work the same way. They don't just provide…
Your friend says AI will steal their job, diminish art and lead to a world drowning in broken systems and slop. Another friend says it's the greatest opportunity of our lifetime, will lead to a creative and technological renaissance that accelerates the progress of our civilisation. They're both standing in the same room, looking at the same technology, seeing completely different futures. Who's…
Nike's infamous slogan extolls us to "Just Do It". Don't over think it. Take action. Just Do It. In Karl Zylinski's great blog post about the Odin Programming Language , he writes: By the way, I discourage anyone who is making their own video game from making an ECS. It’s usually not a good idea. Perhaps it’s a good idea for some massive game engines. But for a small project it might just make…