Paul Swingle

Love of math, computers, space, and physics.

Projects

Moon Chat · moon-chat.com

Global, anonymous, ephemeral chat-room.

Axon · github.com/PCSwingle/Axon

Compiler for a low-level, aesthetically pleasing, memory-safe programming language similar to Rust. WIP.

Thoughts

09/21/26 · Against Event Loops

Program-wide event loops have a time and a place; in my mind, however, their time and place is similar to Python: small projects or scripts where you don't have to worry about maintainability or comprehensibility. In broad cases, program-wide event loops are far too leaky an abstraction to have as a built-in. Whenever you use asyncio, or tokio, or the good old built-in JS event loop, you are adding incomprehensible control flow statements to your code. You are saying: I don't care what happens here; I just want some work to get done on my CPU. But this is inherently impossible to reason about. You have no clue when anything or what is happening! Things only get worse when you take into account error handling; where do the errors propagate up to? The nebulous 'event loop' above all? What if an error actually should bring down the whole app? Or shouldn't? And I haven't even mentioned function coloring! The root problem is that you have no control over the top level of your app anymore. Instead, your app is completely owned by the 'event loop'. The solution is to use localized, self-owned event loops, that call out to individual tasks. Need to load and process X files at once? No problem, spin up a minimal event loop that calls out to the loading tasks. Need to run X http workers at once? Again, easily accomplished with a minimal event loop. The only 'challenging' part is having to manually add the i/o breakpoints to return to the upper-level loop if you aren't in a nice language with Future abstractions (like Rust!). With event loops that are specific to each required task, there is no risk of misusing the event loop. You always know exactly where you are and whats happening. You can easily add whatever error-handling mechanism is correct for your use-case. If you're working in nice language with Future abstractions (like Rust!), you can color your functions however you please.

09/18/26 · On Caring

Unsure how to phrase this. I have become increasingly of the belief that the primary differentiator between those who perform well and those who don't is how much they *care*. The vast majority of problems you encounter in, say, a product, would be unthinkable if the people in charge of said product cared *at all*! In general, I believe you can become top percentile at any task or field purely based on your ability to genuinely care about it. Among my friends and coworkers I've noticed this. The friends I want to be around are the ones with a true passion for something, even if I don't share it, who are willing to step up and solve problems because they really, truly care. Among my coworkers, across multiple jobs, it often seems almost like a binary split between those who care and those who don't. And you can tell! (Or at least I can). I am not blameless myself; on certain projects or sections of work I find it hard to care sometimes. Sometimes it scares me a little. I know that I wouldn't be accepting this quality of work from others; so why am I pushing it? Fortunately I feel motivated by my current work most of the time. It makes me wonder if it is possible to emulate care at all.

09/11/26 · On Software Engineering

A year ago, my career was writing code. It was a shock this year to realize that my job is now reading code. My coworker asked me to review a k8s config PR today. I scrolled several hundred lines of obtuse yaml before it struck me. A year ago, somebody would've written it by hand! I am glad that that software engineering is gone, even as I mourn that *my* software engineering is gone also. Interestingly, while models have vastly improved this last year (enough that I then never used them, and I now only use them), they still fail at basic tasks and architecture. Even newer models like Astra; I wonder if the RL is generalizing at all. But they have also improved so much in such a short timeframe. I suppose only time can tell.

Books

09/26/26 · The Book of the New Sun by Gene Wolfe · 0.95

Despite the rating, unsure if I would recommend it; can be difficult to get through at times. At the same time it is an incredible book.

06/17/26 · The Three-Body Problem by Liu Cixin · 0.82

+ sequels.

05/17/26 · The Quantum Thief by Hannu Rajaniemi · 0.90

+ sequels. (Although the first was best)

07/05/25 · Children of Time by Adrian Tchaikovsky · 0.35

Didn't finish. (Depressing)

02/29/24 · Assassin's Apprentice by Robin Hobb · 1.00

+ (15!) sequels. My favorite series of all time; Fitz's character development and writing is not comparable to any other book I've read.

02/25/24 · Oceanic by Greg Egan · 0.99

Short story collection; Crystal Nights is a must-read.

01/27/24 · The Name of the Wind by Patrick Rothfuss · 0.89

+ sequel. Would be higher if I had any hope of The Doors of Stone ever releasing!

01/21/24 · The Wheel of Time by Robert Jordan · 0.69

Didn't finish. Stopped around the third or fourth book; I can see why it's so highly regarded, but man does it drag on!

10/25/23 · Accelerando by Charles Stross · 0.30

Didn't finish. (Bored)

10/10/23 · Foundation by Isaac Asimov · 0.93

+ sequels + prequels. The original 3 and prequels were amazing; wasn't the hugest fan of the 2 later sequels.

08/19/12 · The Chronicles of Prydain by Lloyd Alexander · 1.00

It wouldn't be a complete list without this. These books had an enormous impact on my life.

GitHub
Twitter