ChibiHash: Small, Fast 64 bit hash function
Update Nov 30: I've added a version 2, which makes the benchmarks and design overview section in this article outdated. See the github repo for updated benchmarks.
Topics /
The most popular blog posts about software engineering on Hacker News. 1,535 posts.
Update Nov 30: I've added a version 2, which makes the benchmarks and design overview section in this article outdated. See the github repo for updated benchmarks.
I am using a very simple system for remembering commands and procedures, and for tracking what I work on. I have two plain text files called notes.txt and worktime.txt. In the notes file, I write d…
Within the LLVM project, MC is a library responsible for handling assembly, disassembly, and object file formats. Intro to the LLVM MC Project, which was written back in 2010, remains a good source to understand the high-level structures. In the latest release cycle, substantial effort has been dedicated to refining…
Grab your biggest mug of coffee and learn how the open-source programming language Rust supercharges our development time of the breakthrough Sonair 3D ultrasonic sensor. Claim to fame: Sonair is on track to be among the first to deploy a safety-certified Rust implementation.
One of the hardest things for people to understand with distributed systems is that eventual consistency is the same thing as eventual inconsistency. The very...
Generative Adversarial Networks (GANs), discovered by Ian Goodfellow in 2014, were an early method in the area of generative AI. I will focus on image generation as set out in the paper Generative Adversarial Nets 1 . This paper is the focal point of the post, I will guide you through the implementation of the paper…
We need a fast way to query multiple potentially large sets of data on-demand at interactive speeds. Sometimes the easiest solution to a hard problem is to build the right tool for the job.
A comprehensive look at the design of Polar, and how we enabled it to operate over distributed data.
Update: The paper version of this post is accepted at PLDI SOAP 2024. Take a look at the preprint (PDF).
Getting started with Zig's meta programming capabilities by leveraging a few useful functions
I just finished reading the paper Borrow checking Hylo . It outlines the basic design of Hylo . Hylo is an early-stage programming language, but unlike other contenders of C++, it provides memory safety like rust. Specifically it merges rust’s borrow checking ideas into the framework of moveable value semantics (MVS)…
Static or dynamic, a program's design is written in its types.
"Type-driven development"
Efficient software development benefits from local development, it enables faster iteration, better debugging and ensures consistency between local and production environments.
How I learnt Elm (its good parts and bad) by porting a medium-sized web frontend from React.
We announced JMAP 10 years ago, here is an update on its progress
Usually in C identifiers are not directly followed by strings. But when U prefixed literals were introduced in C. there still were some rare clashes with existing code. This happened were a macro U…
Academic website for Stefan Abi-Karam.
Three months ago, I wrote about why you might want to use panics for error handling. Even though it’s a catchy title, panics are hardly suited for this goal, even if you try to hack around with macros and libraries. The real star is the unwinding mechanism, which powers panics. This post is the first in a series…
In keeping with the Commodore tradition of cost cutting, most consumer models of their Amiga line of computers came with severely watered down documentation. The Amiga 500 was an exception from this rule, but owners of later machines - such as the A1200 - may not have gotten any documentation for the command line part…
And why it is so easy to get wrong...
Building an intuition for the mathematics behind the "TLA" in "TLA+"
Back in 2019, Nick Fitzgerald published always bump downwards, an article making the case that for bump allocators, bumping “down” (towards lower addresses) is better than bumping up. The biggest reasons for this are bumping up requires 3 branches vs 2 for bumping down and rounding down requires fewer instructions…
Exporting graph data to text file and SVG with Datalog
I’ve recently started a new job as a documentation engineer. While my work is largely the same as that of a technical writer, …
Can we make a Rust program that's as small as it's assembler equivalent?
Someone in one of my online communities recently asked about why their Node command was dropping output when piped to another command:
Most web content is displayed as a strict hierarchy, tree-based or otherwise. What if it wasn't?An exploration into the advantages of graph-based content design, the numerous pitfalls, and a few case studies along the way.