An Intuition for Lisp Syntax
Every lisp hacker I ever met, myself included, thought that all those brackets in Lisp were off-putting and weird. At first, of course. Soon after we all came to the same epiphany: lisp’s power lies in those brackets ! In this essay, we’ll go on a journey to that epiphany.
On Coding, Ego and Attention
My thoughts on coding, ego and attention. How I learned to get out of my own way by learning about this link between ego and attention.
Reverse Engineering the Source Code of the BioNTech/Pfizer SARS-CoV-2 Vaccine
Translations: ελληνικά / عربى / 中文 (Weixin video, Youtube video) / 粵文 / bahasa Indonesia / český / Català / český / Deutsch / Español / 2فارسی / فارسی / Français / עִברִית / Hrvatski / Italiano / Magyar / Nederlands / 日本語 / 日本語 2 / नेपाली / Polskie / русский / Português / Română / Slovensky / Slovenščina / Srpski /…
Xi-Editor Retrospective
A bit more than four years ago I started the xi-editor project. Now I have placed it on the back burner (though there is still some activity from the open source community). The original goal was to deliver a very high quality editing experience. To this end, the project spent a rather large number of “novelty…
A possible new back end for Rust
So typically when you want to make your own compiled language you need a compiler to.. well.. compile it into something useful. Then making it work across a wide range of operating systems and CPU architectures is a huge effort, let alone having it be performant. This is where LLVM comes in.
How to publish Git repos that cannot be republished to GitHub
So here's an interesting thing. Certain commit hashes are rapidly heading toward being illegal on Github .
The most remarkable legacy system I have seen
There was one remarkable legacy system when I was working in a bank sometime back. This could be summarized as an internal AWS lambda equivalent. The offering was complete with full CI, CD, unit te…
There Are No Bugs, Just TODOs
One of my life’s traumas is the bug trackers, the issue trackers, the project management tools. The toolset that completes the version control log to form the development equivalent of double-entry bookkeeping .
A Theory of Software Architecture
Take Uncle Bob's Clean Architecture and map its correspondences with Gary Bernhardt's thin imperative shell around a functional core, and you get an understanding of how to cheaply maintain and scale software! This is what Mr. Brandon Rhodes did. It's not every day that I find such clear insight. I …
Fun with IP address parsing
A quick rundown of the many text representations of IP addresses.
Unit Testing Is Overrated
The importance of testing in modern software development is really hard to overstate. Delivering a successful product is not something you do once and forget about, but is rather a continuous and recurring process. With every line of code that changes,…
Guide to Python Debugging
<p> Even if you write clear and readable code, even if you cover your code with tests, even if you are very experienced developer, weird bugs will inevitab...
The Hardest Program I've Ever Written – How a code formatter works (2015)
The hardest program I’ve ever written, once you strip out the whitespace, is 3,835 lines long. That handful of code took me almost a year to write. Granted, that doesn’t take into account the code that didn’t make it. The commit history shows that I deleted 20,704 lines of code over that time. Every surviving line has…
Moving from TypeScript to Rust / WebAssembly
My experience with both languages.
Build tools around workflows, not workflows around tools
While I was there, I thought a lot about tools – mechanical tools, software tools, tools that last, and tools that are fragile. The somber snow-covered scenery made me think about how quickly most of the tools we use today get outdated or replaced, and I thought about the kinds of tools that I’ve been building for…
Minimal safe Bash script template
A minimal template for a safe Bash script. It includes error handling, parameter parsing, and cleanup.
It's not what programming languages do, it's what they shepherd you to
How many of you have listened, read or taken part in a discussion about programming languages that goes like the following: Person A: "Pro...
How to Run a Live Coding Stream on Twitch Using OBS
If you’re reading this post, you might be interested in trying your hand at live coding on stream, as a way of sharing your projects in a more relatable, immediate way than a polished blog post, teaching others about programming, or just as a way to have fun. I think that live coding and streams in general are an…
Escaping strings in Bash using !:q
TIL this trick, via Pascal Hirsch on Twitter. Enter a line of Bash starting with a # comment, then run !:q on the next line to see what that would be with proper Bash escaping applied.
Zsh and Fish’s simple but clever trick for highlighting missing linefeeds
tl;dr: We look at how Zsh and Fish is able to indicate a missing terminating linefeed in program output when the Unix programming model precludes examining the output itself.
Async Python is not faster
Async Python is slower than "sync" Python under a realistic benchmark. A bigger worry is that async frameworks go a bit wobbly under load.
How to Make Your Code Reviewer Fall in Love with You
Best practices for code review when you’re the author.
Bloom filters debunked: Dispelling 30 Years of bad math with Coq
There's this rather nifty feature of modern web browsers (such as Firefox or Chrome ) where the browser will automatically warn the user if they happen to navigate to a " malicious " URL:
Please stop recommending Gitflow
Git-flow is a branching and merging methodology popularized by this blog post, entitled “A Successful Git branching model”. In the last ten years, countless teams have been snookered by…