Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 14,544 posts.
2D Global Illumination in Godot (2020)
Hello. This is the first of a series of blog posts I plan to write, breaking apart the algorithms and implementation of a custom 2D global illumination (or p...
Model Predictive Control in the Browser with WebAssembly
wrenfold is a framework for converting symbolic mathematical expressions (written in Python) into generated numerical code in other languages (C++, Rust, Python). It aims to bridge the gap between prototyping of functions in expressive symbolic form, and performant production code. wrenfold is particularly relevant to…
Bipartite Matching Is in NC
Since I’m a good mood today—at a beautiful science camp with my kids, high in the mountains near Big Bear Lake in California—I thought I’d blog about something positive. Las…
Modeling Git Internals in Alloy, Part 2: Commits and Tags
Understanding Git better by using lightweight formal methods
Implementing a JIT-compiler with Rust
I am writing Dora, a simple JIT-compiler with Rust. Dora is both the name of the custom programming language and of the JIT-compiler. After some time working on it, I want to write about the experiences I made. I started this project to get a better understanding of the low-level implementation details of a…
GCC Explorer
Introducing a new way to stare at the disassembly of your compiled C and C++
Simulating Chutes and Ladders in Python
Edit 12/19/2017: added a new subsection on analyzing Chutes & Ladders as an Absorbing Markov Chain.
Spotify Codes – Part 2
In part 1 I dove into Spotify Codes and explained the general technical concepts of how they work. If you haven’t read that post you should check it out. I shared it on reddit where it generated a lot of interesting discussion. Ludvig Strigeus, a key early developer at Spotify and the person who invented Spotify…
Render Multimedia in Pure C
In a previous article I demonstrated video filtering with C and a unix pipeline . Thanks to the ubiquitous support for the ridiculously simple Netpbm formats — specifically the “Portable PixMap” ( .ppm , P6 ) binary format — it’s trivial to parse and produce image data in any language without image libraries. Video…
Modeling Adversaries with TLA+
A common question I get about specs is how to model bad actors. Usually this is one of two contexts: The spec involves several interacting agents sharing a protocol, but some of the nodes are faulty or malicious: they will intentionally try to subvert the system. The spec involves an agent subject to outside forces…
Making Generative Art with Rust
Artists as technical experts and an interview with generative artist Alexis André
A working D compiler on OpenBSD
I got GDC , the GNU D Compiler, working on OpenBSD . Supporting D has been a very long time coming. Here's the story of how we got here and where we need to go next.
Implementing a Convolutional Neural Network Using Only NumPy
A simple walkthrough of deriving backpropagation for CNNs and implementing it from scratch in Python.
What Vale taught me about linear types, borrowing, and memory safety
I've had some pretty surreal experiences while making Vale. 0 The weirdest was when I realized the hidden fundamental truth beneath a lot of the programming languages we use today.
You need much less memory than time
Just as I was complaining that we haven't seen many surprising breakthroughs in complexity recently, we get an earthquake of a result to st...
Succinct Data Structures: Cramming 80,000 words into a Javascript file
<img src="http://zwibbler.com/shared/1024.png"/> jQuery creator John Resig needs a little help storing lists of words in his side project. Let's go overkill and explore a little known branch of computer science called Succinct Data Structures.
Writing a simple evaluator and type-checker in Haskell
This tutorial serves as a very short and quick summary of the first few chapters of TAPL. Huge thanks to the ##dependent@freenode community (pgiarrusso, lyxia, mietek, …) for clearing all my …
Explaining RNNs without neural networks
This article explains how recurrent neural networks (RNN's) work without using the neural network metaphor. It uses a visually-focused data-transformation perspective to show how RNNs encode variable-length input vectors as fixed-length embeddings. Included are PyTorch implementation notebooks that use just linear…
Rust in 2022
In previous years, the core team have asked the community to write new years blog posts about Rust in the coming year. They haven't this year, but I wanted to write one anyway. However, it turned out to be harder than expected. Perhaps that's due to Rust being in an
A Rant about Front-end Development
I am a front-end developer who is FED up about front-end development. If you write front-end, this isn't about you personally. It's about how your choices make me angry. Also this is about how my choices have made me angry. Also this is mostly just about choices, the technologies are incidental. Note: The views…
Programs are dead, and JavaScript has killed them
And JavaScript has killed them.
The Case for Bash (2021)
Bash is oft-maligned: you hear it sneered at in sentences like “our continuous integration pipeline is just a pile of bash scripts .” It is commonly regarded as unintelligible and thus unmaintainable. The pile of bash scripts are the toxic byproduct of an infrastructure team understaffed, pressed for time, unwilling…
Malloc Never Fails (2012)
Here’s a fun bit of trivia: malloc on Linux never fails [due to the obvious cause]. In this post, we’ll show that this indeed is the case, and explore why…
Some sanity for C and C++ development on Windows
A hard reality of C and C++ software development on Windows is that there has never been a good, native C or C++ standard library implementation for the platform. A standard library should abstract over the underlying host facilities in order to ease portable software development. On Windows, C and C++ is so poorly…
Getting Started with Lisp in 2019
A quick guide on how to get started with LISP development in 2019. TLDR: install <a href="https://github.com/roswell/roswell">roswell</a>.