Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,547 posts.
How GNU Guile is 10x better (2021)
In Rust at Facebook by Fitzhardinge of the Mercurial team , Jeremy says that a new language must be 10x better at something than one of the (other) incumbent languages.
Evolution of tree data structures for indexing
I have to admit, my research blog posts are getting longer and longer. From one side I find it genuinely encouraging, because if one gets so much information just by scratching the topic, imagine what’s hidden beneath the surface! One university professor once said “what could be interesting in databases?”, and it…
Essential JavaScript design patterns
Learning JavaScript Design Patterns is a book with examples of JavaScript design patterns and how to apply them to your code.
Introduction to Metaprogramming in Nim
Metaprogramming is the writing of computer programs with the ability to treat programs as their data. It means that a program could be designed to read, generate, analyse and/or transform other programs, and even modify itself while running.
Maze Generation: Wilson's algorithm
Algorithms, circle mazes, hex grids, masking, weaving, braiding, 3D and 4D grids, spheres, and more!
Homegrown Closures for Uxn
For a week or so now, I've been writing niënor , a "lispy environment for uxn" . I did not want it to become a full-blown lisp but just another way of writing uxntal . Uxntal is a bit too dense for my liking, and I prefer lisp/scheme s-expression syntax. Niënor is just a compiler and a macroexpander that takes in…
My 2019 Mathematics a to Z: Linear Programming
Today’s A To Z term is another proposed by @aajohannas. I couldn’t find a place to fit this in the essay proper. But it’s too good to leave out. The simplex method, discussed with…
Learn Multiplatform Z80 Assembly Programming with Vampires
Platform Specific Series - Lets learn how the hardware of the systems work, so we can get it to do what we want... Covers Amsrad CPC,MSX,ZX Spectrum, TI-83,Enterprise 128/64 and Sam Coupe! Lesson P1 - Basic Firmware Text functions Lesson P2 - More Text Functions, Improvements... and the Sam Coupe! Lesson P3 - Bitmap…
Using JAX, numpy, and optimization techniques to improve separable image filters
By the end of this blog post, we aim to improve the results of my previous blog post of approximating circular bokeh with a sum of 4 separable filters and reducing its artifacts (left) through an o…
Subclassing in Python Redux
The conflict between subclassing and composition is as old as object-oriented programming. The latest crop of languages like Go or Rust prove that you don’t need subclassing to successfully write code. But what’s a pragmatic approach to subclassing in Python, specifically?
Cranelift, Part 3: Correctness in Register Allocation
This post is the last in a three-part series about Cranelift . In the first post , I covered overall context and the instruction-selection problem; in the second post , I took a deep dive into compiler performance via careful algorithmic design.
Data Parallelism in Rust
Rust currently has very strong support for concurrency in the form of actors which exchange messages and do not share memory. However, there are many tasks for which actors are not a good fit. The unbounded lifetime of actors means that they cannot safely access stack-allocated memory from another task, even if it is…
Programmer’s Guide to Performance Analysis and Tuning on Modern CPUs
They say “performance is king’… It was true a decade ago and it certainly is now. With more and more data the world generates each day, we need more and more computing power to process it. It used to be the case that some SW vendors preferred to wait for a new generation of HW to speed up their application and did not…
F*dging up a Racket
Source code can be found at: https://github.com/dyoo/brainfudge . The latest version of this document lives in http://hashcollision.org/brainfudge .
Portability of tar features
The tar format is one of the oldest archive formats in use. It comes as no surprise that it is ugly — built as layers of hacks on the older format versions to overcome their limitations. However, given the POSIX standarization in late 80s and the popularity of GNU tar, you would expect the interoperability problems to…
Anatomy of a High-Performance Convolution
It's no surprise that modern deep-learning libraries have production-level, highly-optimized implementations of most operations. But just what is the black magic that these libraries use that we mere mortals don't? What exactly does one do to "optimize" or accelerate neural networks operations?
Minimal Linux Bootloader debugging story
I maintain two builds of the Linux kernel, a linux/arm64 build for gokrazy, my Go appliance platform, which started out on the Raspberry Pi, and then a linux/amd64 one for router7, which runs on PCs. The update process for both of these builds is entirely automated, meaning new Linux kernel releases are automatically…
CamelCase vs. underscores revisited (2013)
It has been 2 years since I published “CamelCase vs underscores: Scientific showdown”, and it still is easily the most visited article on this blog. Yesterday alone it got 2,614 views t…
We might have been slower to abandon StackOverflow if it wasn't a toxic hellhole
What the **** does that mean?
OrmHate
Object-Relational Mappers get a lot of hate from people who misjudge the complexities of the task.
Against Pair Programming
Pair programming is where two programmers work together on a single computer. One writes the code, while the other observes and offers suggestions. I'm not talking about debugging or brainstorming together, but this p...
C++'s `noexcept` can sometimes help or hurt performance
Over the course of working on PSRayTracing (PSRT), I've been trying to find all sorts of tricks and techniques to squeeze out more performance from this C++ project. Most of it tends to be alternative algorithms, code rewriting, and adjusting data structures. I thought sprinkling the final keyword like an all purpose…
Linux doesn't have Photoshop
Linux doesn’t have Photoshop. One common rant I get to hear when I try to help someone to switch to Linux. It is almost 2020 and say what? people still agree with this statement.