Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 21,843 posts.
Functional Imperative Programming with Elixir (2018)
Stuff about things
The Magic of Embeddings
Embeddings, why they’re useful, and how we can store and use them in Convex.
Google Zanzibar Through Our Eyes
Understanding Google's Zanzibar paper the way the Authzed team does.
Stack Overflow Users Rejoice as Pattern Matching Is Added to Python
Our on-the-ground reporter gauges developer reactions to the Python Steering Council's latest decision regarding pattern matching.
Dijkstra's Algorithm
I was at SCNA the other day, and someone approached me about TDD and Dijkstra’s algorithm. He wondered if you could find a sequence of tests that would lead you to the algorithm. This sounded like a fun little exercise, so I decided to give it a try here.
Sometimes Kill -9 Isn't Enough
If there’s one thing to know about distributed systems, it’s that they have to be designed with the expectation of failure. It’s also safe to say that most software these days is, in some form, distributed—whether it’s a database, mobile app, or enterprise SaaS. If you have two different processes talking to each…
Solving Programming Puzzles Without Using Your Brain
This post is a write-up of a solution to part of a programming puzzle I did yesterday. It’s a little different than the usual “solution + theory” approach, though: I’m going to talk about the actual steps you’d need to take to get to the solution (i.e. what to google, what intermediate code looks like, etc.). Often…
Postgres vs. Pinecone
We respond to Pinecone's recent blog post comparing Postgres and Pinecone. We show that Postgres can outperform Pinecone in the same benchmarks Pinecone covered in their article.
Anatomy of Linux Dynamic Libraries
Dynamically linked shared libraries are an important aspect of GNU/Linux. They allow executables to dynamically access external functionality at run time and thereby reduce their overall memory footprint (by bringing functionality in when it's needed). This article investigates the process of creating and using…
Move Fast, Don't Break Your API
Amber on Rails
Uber's Move Away from PostgreSQL
Last week, a blog post by an Uber engineer explained why Uber chose to move from PostgreSQL to MySQL . This article was widely reported and...
The Eudora Email Client Source Code
Electronic mail is one of “killer apps” of networked computing. The ability to quickly send and receive messages without having to be online at the same time created a new form of human communication. By now billions of people have used email.
Optimizers: The Low-Key MVP
The query optimizer is an important part of any analytical database system as it provides considerable performance improvements compared to hand-optimized queries, even as the state of your data changes.
Counting Clojure Code
For better or worse, we count lines of code. We (hopefully) feel a little dirty when we do it, because it's a flawed metric. But we do it . We do it on large codebases and small code snippets . Even badass hacker David Nolen does it .
Time-Travel Debugging for JavaScript/Node.js
Time-traveling in the execution history of a program during debugging enables a developer to precisely track and understand the sequence of statements and program values leading to an error. To provide this functionality to real world developers, we embarked on a two year journey to create a production quality…
Clip: Connecting Text and Images
We’re introducing a neural network called CLIP which efficiently learns visual concepts from natural language supervision. CLIP can be applied to any visual classification benchmark by simply providing the names of the visual categories to be recognized, similar to the “zero-shot” capabilities of GPT-2 and GPT-3.
An Introduction to ASCII Ray Marching
An introduction to raymarching in C++ with diffuse Phong shading and ASCII-terminal output.
Porting rr to x86-64
(TL;DR: rr from git can record and replay 64-bit programs. Try it for yourself !)
Emacs Solo: A Surprise System Crafters Live Demo
Rahul's Blog
Singular Value Decomposition for Programmers
Today's article is a short one. Not because Singular Value Decomposition (SVD) is not important, but because it is so ubiquitous that we'll touch it in other...
LLVM internals, part 4: attributes and attribute groups
This is the last post I plan to do on parsing LLVM’s bitcode, at least for a while. I’ll keep working on the various libraries that I’ve started under the mollusc umbrella, but they won’t be accompanied by regular posts anymore — I’d like to refocus on writing smaller, less dense (read: lower-pressure) posts for a…
Build a simple LSM-Tree storage engine in a week
A hands-on introduction to database internals. Build an LSM storage engine with SSTables, compaction, WAL recovery, MVCC, and transactions.
Camera Calibration from Scratch Using Rust
Learn the theory behind how to perform sensor and camera calibration.
Erlang: A Generalized TCP Server
In my last few articles about Erlang we've covered the basics of network programming with gen_tcp and Erlang/OTP's gen_server, or generic server, module. Let's combine the two.