The evolution of a Scheme programmer (2020)
For a real-life implementation, see how Racket's math/number-theory does it here .
The latest blog posts to take off on Hacker News. 14,540 posts.
For a real-life implementation, see how Racket's math/number-theory does it here .
How I build a website for choosing movies
When Simplicity is Preferrable to Efficiency
Štar is a concise and extensible iteration construct for Common Lisp which aims to be pleasant to use, easy to understand, fast if needed, general, and not to look like Fortran....
APT 2.9.3 introduces the first iteration of the new solver codenamed solver3, and now available with the –solver 3.0 option. The new solver works fundamentally different from the old one. How does it work? Solver3 is a fully backtracking dependency solving algorithm that defers choices to as late as possible. It…
Or the 'Matt Godbolt shows us some compiler magic' edition!
Using linked lists to optimize performance in a JSON schema validator.
I sometimes find myself asked to give advice on how organisations should go about creating software, but often my advice doesn’t gel with those who sought it. Sometimes that’s because only one answer was ever considered acceptable; sometimes I am ignorant of important wider context and my answer is unworthy of…
Maximizing Postgres connection economy by using a single connection per program to receive and distribute all listen/notify notifications.
Learning about the subtle gotcha with ARG and FROM instruction ordering in Dockerfile definitions.
There are a couple of version control commands that deserve wider appreciation: SCCS what and RCS ident . They allow you to find out what source a binary was built from, without having to run it – handy if it is a library! They basically scan a file looking for magic strings that contain version control metadata and…
I had free access to GitHub Copilot for about a year, I used it, got used to it, and slowly started to take it for granted, until one day it was taken away. I had to re-adapt to a life without Copilot, but it also gave me a chance to look back at how I used Copilot, and reflect - had Copilot actually been helpful to…
Garbage collectors are expected to be invisible: if programmers (or even users) notice them, something is wrong. Usually, such problems are are performance problems, but there could be correctness issues as well. This makes implementing them a bit scary.
Okay, promises, promises. Here's the first of my bucket list projects I'm completing which I've intermittently worked on for literally two d...
Window management in Emacs gets a bad rap. Some of this is deserved, but mostly this is a consequence of combining a very flexible and granular layout system with rather coarse controls. This leaves the door open to creating and using tools for handling windows that employ and provide better metaphors and affordances…
Random thoughts, articles and projects by a chronic overengineer.
Multiprocessor Synchronization was one of my favorite classes during my undergrad — it had a clear progression from theory to practice, starting at the theory of consensus numbers and moving onto atomic operations and then synchronization primitives and lock-free data structures, all from first principles. With…
A story of finding, understanding, and fixing a memory leak in our Rails app. With graphs and code!
In this post I want to create a single file C file program to open a windows inside Linux without using xlib or any similar libraries. The idea is to explore X11 protocol and see how it is used to interact with X server to create windows.
How we designed xkcd's massive rube goldberg machine game in 3 weeks.
I've been involved in the Rust project in some form or another since 2016, and it's a language I'm very comfortable using. Many Rust programmers could say the same . But, if we take a step back and are honest with ourselves, we'd admit that the road to getting to that level of comfort was difficult.
Many years ago, Kragen complained about the implementation and performance of Java regexes , and suggested that an implementation that emitted JVM bytecode could perform better. It's been a minute, but I'm happy to report that complaining on the Internet has served its purpose.
15 years ago (2007-2011) I was at Yahoo! working with Map/Reduce and Apache Pig, which was the better Map/Reduce at the time. The Dremel paper just came out and, as everything I worked with seemed to be inspired from Google papers, I read it. I could see it applying to what we were doing at Yahoo! and this was to…
Learn how asyncio works by recreating it from scratch with Python generators and using the __await__ dunder method for the async/await keywords.
The code is a bit "experimental" but it's available in the arena-fixes branch (make sure to enable --features=development if you run it from a Git repo).