Brushing up on operating systems and C programming
If you were like me in college, you first learned about the C programming language in an introductory computer science course. Then, perhaps you took a really hard course in operating systems. Then, y
Inheritance Often Doesn't Make Sense
There are three different types of inheritance going on. Ontological inheritance is about specialisation: this thing is a specific variety of that thing (a football is a sphere and it has this radius) Abstract data type inheritance is about substitution: this thing behaves in all the ways that thing does and has this…
How I gained commit access to Homebrew in 30 minutes
This issue was publicly disclosed on the Homebrew blog at https://brew.sh/2018/08/05/security-incident-disclosure/
Why Create a New Unix Shell?
Please read this update instead: Why Create a New Unix Shell? (2021) . This page is obsolete!
Fortran is still a thing
A short essay about Fortran in the modern world.
How I Wrote a Modern C++ Library in Rust
Since version 56, Firefox has had a new character encoding conversion library called encoding_rs. It is written in Rust and replaced the old C++ character encoding conversion library called uconv that dated from early 1999. Initially, all the callers of the character encoding conversion library were C++ code, so the…
Fibonacci Hashing: The Optimization That the World Forgot
I recently posted a blog post about a new hash table, and whenever I do something like that, I learn at least one new thing from my comments. In my last comment section Rich Geldreich talks about h…
Not Lisp again (2009)
A blog about computers, functional languages, Lisp, and Scheme.
Writing an OS in Rust: Hardware Interrupts
In this post, we set up the programmable interrupt controller to correctly forward hardware interrupts to the CPU. To handle these interrupts, we add …
Postgres 11 – A First Look
Postgres 11 is almost here, in fact the latest beta shipped today, and it features a lot of exciting improvements. If you want to get the full list of features it is definitely worth checking out the release notes, but for those who don’t read the release notes I put together a run down of some what I consider the…
A new fast hash table in response to Google’s new fast hash table
Hi, I wrote my new favorite hash table. This came about because last year I wrote the fastest hash table (I still make that claim) and this year one of the organizers of the C++Now conference asked…
Functional core, imperative shell (2012)
Purely functional code makes some things easier to understand: because values don't change, you can call functions and know that only their return value matters—they don't change anything outside themselves. But this makes many real-world applications difficult: how do you write to a database, or to the screen? In…
Async and Await in Rust: a full proposal
I’m really excited to announce the culmination of much of our work over the last four months: a pair of RFCs for supporting async & await notation in Rust. This will be very impactful for Rust in the network services space. The change is proposed as two RFCs: RFC #2394: which adds async & await notation to the…
Why Is Front-End Development So Unstable?
Developing Opinions - A blog by Jimmy Breck-McKye
Exercises in Programming Style
In the book club at work, we recently finished reading Exercises in Programming Style by Cristina Videira Lopes. The book consists of a simple program implemented in 33 different programming styles…
In Pursuit of Production Minimalism
Practicing minimalism with the lofty goal of total ephemeralization to build coherent, stable, and operable stacks.
Breaking a Wine Glass in Python by Detecting the Resonant Frequency
Detecting the Resonant Frequency of an Object with
Web application from scratch, part I
This is the first in a series of posts in which I'm going to go through the process of building a web application (and its web server) from scratch in Python. For the purposes of this series, I'm going to solely rely on the Python standard library and I'm going to ignore the WSGI standard.
The Various Kinds of IO – Blocking, Non-Blocking, Multiplexed and Async
A blog where I write down my thoughts, ideas and notions, as an exercise to cement them in my memory and improve on their concepts.
Modern SAT solvers: fast, neat and underused
Before I started doing research, I saw SAT solvers as academically interesting but without practical uses ouside of other academic applications. I've since then changed my mind, and I want to change yours, because modern SAT solvers are neat, fast and almost criminally underused by the industry.
The Bulk of Software Engineering in 2018 Is Just Plumbing
I read a post online recently about how some software engineer was asked to complete a technically complex, jargon-filled coding challenge over the...
Embedded in Rust: Brave new I/O
A blog about Rust and embedded stuff
Minimalist C Libraries
In the past year I’ve written a number of minimalist C libraries, particularly header libraries. The distinction for “minimalist” is, of course, completely arbitrary and subjective. My definition in this context isn’t about the library’s functionality being stupidly trivial or even necessarily simple. I’m talking…