Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 21,843 posts.
Optimized Go gzip/zip packages, 30-50% faster
I have worked on optimizing the standard library deflate function, and I am happy to announce revised gzip/zip packages, that on x64 is about 30-50% faster with slightly improved compression. Project: https://github.com/klauspost/compress All packages are drop-in replacements for the standard libraries, so you can use…
The Importance of End-to-End Thinking in System Design
I once attended a talk by Yoky Matsuoka when I was young – so young, in fact, that I don’t remember when or where the talk was. What I do remember is her telling the story of designing…
Writing a competitive BZip2 encoder in Ada from scratch in a few days – part 2
Note for subscribers: if you are interested in my Ada programming articles only, you can use this RSS feed link. Link to Part 3 here . As ...
Verifying GCC optimizations using an SMT solver
This post describes the implementation of pysmtgcc. See “GCC Translation Validation” for background information.
LLVM 3.0 Type System Rewrite
One of the most pervasive IR (and thus compiler API) changes in LLVM 3.0 was a complete reimplementation of the LLVM IR type system. This change was long overdue (the original type system lasted from LLVM 1.
The Geometry Behind Normal Maps
Tangent space is often presented as a confusing block of shader math. This is a deep dive into what tangent vectors actually mean, how they emerge from UVs to bridge 2D and 3D space, and the geometry that makes normal mapping possible.
Progressive Locks: fast, upgradable read/write locks
Context A few years after I created the Elastic Binary Trees (ebtree) , I started to get some feedback from users who needed to use the...
A Rust shaped hole
Without writing a single line of Rust, why I feel it might be right
Introducing passkeys in Chrome
We announced in October that passkey support was available in Chrome Canary. Today, we are pleased to announce that passkey support is now ...
Linux Sucks 2022
"This time it's personal."
The truth about Lisp (2006)
In which the truth about lisp is revealed, and some alternatives are enumerated.
Mtime comparison considered harmful
tl;dr: Rebuilding a target because its mtime is older than the mtimes of its dependencies, like `make` does, is very error prone. redo does...
Revisiting 64-bit-ness in Visual Studio and elsewhere (2015)
Access to this page requires authorization. You can try signing in or changing directories .
Unsigned sizes: A five year mistake
C3 is the ergonomic, safe evolution of C. Familiar syntax, full ABI compatibility, optionals, slices, contracts and zero-cost abstractions.
Reasons to Learn Redux as a JavaScript Developer
Redux greatly shaped how we develop modern JavaScript applications nowadays. Here I want to give a walkthrough on all the mindset changes we went through as JavaScript developers ...
Using the switch(true) pattern in JavaScript
The switch true pattern isn't well known but it is incredibly useful. It's not a JavaScript specific pattern, but I use it in almost every single project.
Effortless Performance Improvements in C++: std:unordered_map
This is the second post in the series about effortless performance improvements in C++. Check the first post to get the full story!
Write Posix Shell
write posix shell 2023-03-10 /\ {.-} ;_.-'\ { _.}_ \.-' / `, \ | / \ | ,/ [0] \|_/ what is shell? most people in tech are familiar with shell scripts. but shell is a language! ... shit. actually. wait, let me rephrase- most people _use_ shell. most people _avoid_ shell. but mostly most people _hate_ shell. but should…
Unsafe Rust is harder than C
Or: The Most Expensive Linked List I’ve Ever Written
We switched to cursor-based pagination
Earlier this month, we migrated from offset pagination to cursor-based pagination for our API. In this journal, we walk through the basics of these methods of pagination and why we’re making this switch.
No LLM Code in Dependencies
I've spent about 100 hours of work over the past month to make sure git-annex can build without dependencies that contain LLM generated code. At least so far.