Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,544 posts.
Book of the Runtime – Internals of the .Net Runtime not in the documentation
The Microsoft Docs at https://docs.microsoft.com are really fantastic lately. ...
Examples of Parallel Algorithms from C++17
MSVC (VS 2017 15.7, end of June 2018) is as far as I know the only major compiler/STL implementation that has parallel algorithms. Not everything is done, but you can use a lot of algorithms and apply std::execution::par on them! Have a look at few examples I managed to run.
Parsing the C64 Bubble Bobble Wind Currents
This would be my website, I guess.
Lush: My favorite small programming language
I meant to write about this when I started my blog in 2009. Eventually Lush kind of faded out of my consciousness, as it was a lot easier to get work doing stuff in R or Matlab or whatever. The guy…
Things You Can Do with Python and POV-Ray
This post presents Vapory, a library I wrote to bring POV-Ray’s 3D rendering capabilities to Python. POV-ray is a popular 3D rendering software which …
Building Products at Stripe
What is Stripe’s product culture like? Interview with a Stripe product leader demonstrate an embrace of going deep, moving fast, and maintaining a multi-decade perspective.
Extending Rust's Effect System
This is the transcript of my RustConf 2023 talk: "Extending Rust's Effect System", presented on September 13th 2023 in Albuquerque, New Mexico and streamed online.
Introduction to strace
There will come a time when you will find yourself asking “What the heck is that process doing?”. To uncover the mysteries behind the behaviour of a process, we have a tool called strace .
Rebuilding the spellchecker
How I decided to write a spellchecker and almost died trying
Create a simple cross-platform desktop game with Go
A few months ago I fiddled around with writing Space Invaders using Go. I had a lot of fun writing it but the output only worked on iTerm2 because it used a specific feature of that terminal. In order to play the game you’d really have to download iTerm2 and run it on the command line. I thought it’d be fun to muck…
Unprojecting text with ellipses (2016)
Using transformed ellipses to estimate perspective transformations of text.
Bevy XPBD: A physics engine for the Bevy game engine
Bevy XPBD 0.1.0 has finally been released on crates.io!
Color.js Released
It has taken Lea and I far too long – there is always something more that really should be added, always some conversion that really needs an authoritive set of data to validate our code against – but we finally decided, time to actually release Color.js .
Thinking in Events: From Databases to Distributed Collaboration Software [video]
Keynote at 15th ACM International Conference on Distributed and Event-based Systems (DEBS) , Online (originally planned to be in Milan, Italy), July 2021.
A beginner's guide to extending Emacs
How to build a custom completion backend for emacs from scratch.
Writing a lunar lander game for an actual lunar lander
As it’s the 50th anniversary of the Apollo 11 moon landings, I thought this would be a great opportunity to live code a demonstration of using my new compiler to write a simple lunar lander game… but first, I’m going to port the compiler to generate code for an actual lunar lander. Yes, my target platform is the…
Continuations by example: Exceptions, time-traveling search, threads, and more
Continuations are the least understood of all control-flow constructs. This lack of understanding (or awareness) is unfortunate, given that continuations permit the programmer to implement powerful language features and algorithms, including exceptions, backtracking search, threads, generators and coroutines.
A Guide to Parsing: Algorithms and Terminology
An in-depth coverage of parsing terminology an issues, together with an explanation for each one of the major algorithms and when to use them
Building a “Simple” Distributed System – Formal Verification
In the last post , we described a protocol that should satisfy the requirements and invariants established in the first post . Today we will look at formal verification with TLA+. Formal verification is just another (niche) tool in the toolbox. Some tools require more skill than others to use. So
Visualizing SQL Plan Execution Time with FlameGraphs
Update: I wrote a follow-up article about adding Loop Counters and Row Counts to SQL Plan FlameGraphs. I also show some old examples of “Bookshelf Graph” visualizations there. Check it out after reading this post first. Introduction Brendan Gregg invented and popularized a way to profile & visualize program response…
The Reliability of Go
As part of the Canonical Cloud Sprint taking place in San Francisco last week I attended Dave Cheney's talk at the GoSF meetup on the...
Python's Type Checking Renaissance
You may have heard that TypeScript has been taking the web development space by storm in the last few years , bringing to it static types. I believe the same thing is starting to happen in the world of Python, where type checkers like mypy , Pyre , and Pyright are increasingly used, at least where Python is used by…
The cost of Go's panic and recover
TL;DR ¶ Some of the wisdom contained in Josh Bloch’s Effective Java book is relevant to Go. panic and recover are best reserved for exceptional circumstances. Reliance on panic and recover can noticeably slow down execution, incurs heap allocations, and precludes inlining. Internal handling of failure cases via panic…
What if we'd had better HTML-in-JS syntax all along?
I have a theory that a grave mistake was made in 1995 - the decision not to have a neat, succinct and declarative way of representing html elements in javascript. [On reading the hacker news comments this is pretty historically inaccurate, however, I think this article still stands as "look just how close javascript…
JavaScript broke the web (and called it progress)
We replaced simple websites with complex apps nobody asked for. Now it takes a complex build pipeline just to change a headline.