Compiling to λ-calculus
Though it contains forms only for function applications, variable references and anonymous functions, it is equivalent to a Turing machine.
Topics /
The most popular blog posts about software engineering on Hacker News. 14,544 posts.
Though it contains forms only for function applications, variable references and anonymous functions, it is equivalent to a Turing machine.
So there's a thing we use at work which I call a ratchet. In our codebase, there are "patterns" which we used to use all the time, but we decided to stop using them, but removing all of the existing instances at once is too much work. We want to remove all of these instances eve...
Sometimes we start things but decide midway through that we would prefer to rather not be doing them. That process is sometimes referred to as cancellation. Say we accidentally clicked "download" on a large file in the browser. We should have a way to tell the computer to stop downloading it.
A very common adage in ODE solvers is that if you run into trouble with an explicit method, usually some explicit Runge-Kutta method like RK4, then you should try an implicit method. Implicit methods, because they are doing more work, solving an implicit system via a Newton method having “better” stability, should be…
Optimizing a breadth-first search of an implicit graph for secondary storage, and memory use in general.
This essay explores the cost of multitasking through computer science concepts like context switching and advocates for the focus found in single-threaded moments.
Peter Bourgon has a web site, and this is that web site.
Why nextest runs each test in its own process: a game-theoretic view.
Track and improve how AI assistants recommend your brand across ChatGPT, Gemini, Claude & more.
One of the most fascinating aspects of modern Formula 1 is the use of computer simulations to predict car performances and race strategies. By the early 1990s, teams like Benetton had begun to deve…
Overture to our small Lisp to x86-64 compiler
The aim of this course is to teach the basics of category theory, in a way that is accessible and relevant to computer scientists. The emphasis is on gaining a good understanding the basic definitions, examples, and techniques, so that students are equipped for further study on their own of more advanced topics if…
A new year is upon us. Before the world ends, let’s take a look back at what 2011 meant for everybody’s favorite programming language:
I use the Sherlock Holmes method of debugging software. This means working backwards from a symptom to the series of causes which tell a story of the entire bug. It works for production outages and during development. Something that recently happened at my startup should be instructive.
First entry on completing Cheat Engine's tutorial without Cheat Engine
If you’ve ever needed to hit a breakpoint programmatically in C++, you’ve probably written something like this: 1 2 3 4 5 6 7 8 9 #if defined(_MSC_VER) __debugbreak(); #elif defined(__clang__) __builtin_debugtrap(); #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) __asm__ volatile("int3"); #else…
A short list of common mistakes in Python web applications in terms of security and architecture.
A brief overview of our study of abstract-syntax-tree and bytecode interpreters on top of RPython and the GraalVM metacompilation systems.
Michael Snoyman's personal homepage and blog, featuring writing about programming, open source, health, finance, religion, and whatever else catches his interest.
Postgres(hereinafter mentioned as PG) is a pretty cool database with lots of nice features, one of them little known ones is the ability of having Foreign data wrappers (hereinafter mentioned as FDWs). Clickhouse(hereinafter mentioned as CH) is another amazing database with an altogether different set of features…
In this article you'll see how to run a PDP-11 simulator through Docker to interact with Unix as it was back in 1972.
Forget programs. The most important productivity tool for programming is your mind. And the next best set of software development tools are ones that take care of you. It isn’t about Git. Or Docker. Or testing frameworks. These are all useful tools. I use them daily. But they are not the most important software…
Recently piet-gpu has taken a big step towards realizing its vision, moving the computation of path clipping from partially being done on the CPU to entirely being done on the GPU.
Nearly all of Go’s distinctive design decisions were aimed at making software engineering simpler and easier. We’ve said this often. The canonical reference is Rob Pike’s 2012 article, “ Go at Google: Language Design in the Service of Software Engineering .” But what is software engineering?