Why is Jepsen written in Clojure?
People keep asking why Jepsen is written in Clojure , so I figure it’s worth having a referencable answer. I’ve programmed in something like twenty languages. Why choose a Weird Lisp?
The latest blog posts to take off on Hacker News. 14,540 posts.
People keep asking why Jepsen is written in Clojure , so I figure it’s worth having a referencable answer. I’ve programmed in something like twenty languages. Why choose a Weird Lisp?
I opened GopherCon Australia in early November with the talk “Go Testing By Example”. Being the first talk, there were some A/V issues, so I re-recorded it at home and have posted it here:
The C++ library has long been organized around stream classes, at least when it comes to reading and parsing strings. But streams can be surprisingly slow. For example, if you want to parse numbers, then this C++ routine is close to being the worst possible choice for performance: std::stringstream in(mystring)…
Ever wanted more different ways to understand what’s going on in a program? Here I catalogue a huge variety of tracing methods you can use for varying types of problems. Tracing has been such a long-standing interest (and job) of mine that some of these will novel and interesting to anyone who reads this. I’ll…
This blog post is going to be a cursory overview of the internals iMessage, as I’ve discovered during my work on pypush, an open source project that reimplements iMessage.
Your phone's ability to identify any song it listens to is pure technological magic. In this article, I'll show you how one of the most popular apps, Shazam , does it. The founders of Shazam released a paper in 2003 documenting how it works, and I have been working on an implementation of that paper, abracadabra .
A study of Google's code review tooling (Critique), AI-powered improvements, and recent statistics
There is no denying that containers have taken over the mindset of most modern teams. With containers, comes the need to have orchestration to run those containers and currently there is no real alternative to Kubernetes. Love it or hate it, it has become the standard platform we have largely
In my day job, I work on a JavaScript framework (LWC). And although I’ve been working on it for almost three years, I still feel like a dilettante. When I read…
Why I joined my company's CI team to fix Jenkins, the two options we weighed, and what I learned about developer-productivity work.
It all started with Instagram Reels showing me too many yummy cooking videos. I wanted to try some recipes out myself. But I didn’t want to have to keep my phone in the kitchen, and I didn’t want to have to keep unlocking it to see the next step. I wanted to print the recipe out, and have it on the counter while I was…
October 1982 TR-03.214 A PERSONAL HISTORY OF APL by Michael S. Montalbano International Business Machines Corporation General Products Division Santa Teresa Laboratory San Jose, California A PERSONAL HISTORY OF APL Introduction I have several reasons for calling this talk a personal history. For one, I want to make it…
Splitting code into files can scatter related logic. Jimmy Koppel on cognitive load, design reconstruction, and a third way to organize code.
Or, about the virtue of exactly one phrase.
Code is read more than written, code is run more than read. I think this line of thought can be extended beyond code-writing, and used as a rule of thumb to identify problems and make decisions.
It is often said that Imitation is the Sincerest Form of Flattery. Also, remember libcrurl? That was the name of the thing Google once planned to do: reimplement the libcurl API on top of their Chrome networking library. Flattery or not, it never went anywhere. The other day I received an email asking me about ……
Achieving Data Freedom Through Open Source and Rust
This is an attempt to write down a very simple example I’ve been using to explain the profound impact the language we use has on thought, discussion and ultimately code. Imagine you have a co…
Another explainer on a fun, esoteric topic: optimizing code with SIMD (single instruction multiple data, also sometimes called vectorization ). Designing a good, fast, portable SIMD algorithm is not a simple matter and requires thinking a little bit like a circuit designer.
Salvatore Sanfilippo, aka antirez released a telegram bot library in C recently. While I'm not at all interested in a telegram bot library, I always like to read Salvatore's code, which is uniformly superb.
For most people I interact with, I’m just another text-based program for the most of the time. If input and output are so simple, could I be replaced by the model? For this to work, the model would need to not only understand my writing style but also know a lot about me. The best source for this is my Telegram…
Web components can dramatically loosen the coupling of JavaScript frameworks. To prove it, we're going to do something kinda crazy: build an app where every single component is written in a different JavaScript framework.
Python and Go have distinct qualities that can complement each other.
Some notes on storing data in pointers and the impact of >48-bit virtual addresses
A modest defense of the rodent So, Emacs and the mouse. This is an unexpectedly contentious topic, with discussions that end, at best, with careless dismissal. More often they turn into arguments with folks talking past one another. The advantages of using the mouse for common actions in Emacs are immediate and…