Why Programming Is Hard to Fundamentally Improve (2017)
My thoughts on why programming hasn’t changed that much and where the next generation of improvements will come
PostgreSQL Templates
What are PostgreSQL templates and what are they used for?
Problems with TypeScript
I would like the jury to know that I am, for the most part, a TypeScript fan but I do have some nagging doubts that I would like to discuss in this post.
Syntax highlighting is a waste of an information channel
No newsletter next week Running the TLA+ workshop. No way I'm gonna have any brainpower after that. Syntax highlighting is a waste of an information channel...
The new Clang _ExtInt feature provides exact bitwidth integer types
Author: Erich Keane, Compiler Frontend Engineer, Intel Corporation Earlier this month I finally committed a patch to implement the extended-integer type class, _ExtInt after nearly two and a half years of design and implementation.
Plywood: A New Cross-Platform Open Source C++ Framework
For the past little while – OK, long while – I’ve been working on a custom game engine in C++. Today, I’m releasing part of that game engine as an open …
Guide to Concurrency in Python with Asyncio
A guide to Python's asyncio module covering async/await, event loops, tasks, and when to use asyncio vs threading or multiprocessing.
The Stack Monoid
(Updated 2020-09-06 with pointers to related work and a bit more explanation)
Vim Creep (2011)
It all started out innocently enough. You experimented with it once or twice in your first year of college, but Nano and Pico were easier—closer to what you had already been using during high school on the Windows machines and Macs. But as time went on and you got more experience under your belt in the college-level…
Cost of a thread in C++ under Linux
Almost all our computers are made of several processing cores. Thus it can be efficient to "parallelize" expensive processing in a multicore manner. That is, instead of using a single core to do all of the work, you divide the work among multiple cores. A standard way to approach this problem is to create threads. ……
How Big Technical Changes Happen at Slack
Most new things in technology turn out to be fads: patterns of talking and doing that come and go without leaving a permanent mark. Microkernels; EPIC architectures like IA-64; object request brokers; and 1990s’-style neural nets are gone, and will not return. Sorry for the deep throwbacks; only time proves which…
Want to call C from Python? Use D
In my last blog post I wrote about the power of D’s compile-time reflection and string mixins, showing how they could be used to call D from Python so easily it might as well be magic. As ama…
Your First THINK C Program
Welcome, child! Come in, come in! I have so few visitors to this little hut. Pull up a chair, and I’ll put on some tea.
Become a Better Developer by Reading Source Code
In this post, I share why I think that reading source code is an important technique which can be applied to become a better software developer.
Extreme Debugging
Debugging without source or symbols, alternatively, "Where there's a will there's a way"
Faster than radix sort: Kirkpatrick-Reisch sorting
Radix sort sorts n w-bit integers by splitting them up into chunks of logn\log nlogn bits each, and sorting each chunk in linear time. Thus it achieves O(nw/logn)O(nw/\log n)O(nw/logn) time.