Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 21,830 posts.
How Clang Compiles a Function
Minor nit: printing the predecessors of a basic block is a feature of the IL printer, not Clang. It is just visualizing information that is implicit in the IR anyway.
Shipping a compiler every six weeks
This blog post is a slightly edited version of the live transcript of the talk I gave at RustFest 2019 in Barcelona on November 10th, 2019. As it's a transcript some parts of it are a bit repetitive or badly worded, but I hope the message behind the talk will be conveyed by this post anyway.
Elliptical Python Programming
One thing I love about Python is how it comes with its very own built-in zen. In moments of tribulations, when I am wrestling with crooked code and tangled thoughts, I often find solace in its timeless wisdom. Here's a glimpse of the clarity it provides:
How to build a diffusion language model
An introduction to diffusion language models and the research advances that underlie today's diffusion LLMs. We describe the building blocks of recent open-source models, starting from simple masking diffusion, and including techniques for iterative refinement, post-training, and variable-length generation. Material…
Deep code search
Deep code search Gu et al., ICSE’18 The problem with searching for code is that the query, e.g. “read an object from xml,” doesn’t look very much like the source code snippets tha…
Intuitively Understanding Harris Corner Detector
If you ever tried to learn how the Harris corner detection algorithm works, you might have noticed that the process is not intuitive at all. First, you start with an energy function, approximate it using Taylor approximation, get a matrix from that, then find the eigenvalues of that matrix, etc. But when you come to…
Phrases in computing that might need retiring
The upcoming issue of the SICPers newsletter is all about phrases that were introduced to computing to mean one thing, but seem to get used in practice to mean another. This annoys purists, pedants, and historians: it also annoys the kind of software engineer who dives into the literature to see how ideas were…
The art of interrupting software engineers
Earlier this month, Broadcom published findings from our frontier model research initiative examining what frontier AI models can do when applied to vulnerability discovery and...
Why not tell people to “simply” use pyenv, poetry or anaconda
You keep using that word. I don’t think it means what you think it means.
Two Vexing Problems in Functional Programming
Matthew Butterick
My review of the C standard library in practice
In general, when working in C I avoid the standard library, libc, as much as possible. If possible I won’t even link it. For people not used to working and thinking this way, the typical response is confusion. Isn’t that like re-inventing the wheel? For me, libc is a wheel barely worth using — too many deficiencies in…
Philosophy of science books every computer scientist should read
When I tell my fellow computer scientists or software developers that I'm interested in philosophy of science, they first look a bit confused, then we have a really interesting discussion about it and then they ask me for some interesting books they could read about it. So, I thought I should turn my answer into a…
Embracing Common Lisp in the modern world
Explore how Common Lisp and Clojure shape modern programming, and discover why understanding these foundations is crucial for tech choices today
Tips on adding JSON output to your CLI app
Best practices when adding a JSON output option to your command-line application.
A “Better C” Benchmark
An unusual benchmark for programming languages, designed to replace C. Unlike many other benchmarks, this one measures developer productivity and performance.
"Useless Ruby sugar": Argument forwarding
Or, how the feature that allows to write less names might make the code more explicit.
Intel C/C++ compilers complete adoption of LLVM
Find software and development products, explore tools and technologies, connect with other developers and more. Sign up to manage your products.
IRCv3 Spec round-up
IRCv3 Development Community
Go: Sentinel errors and errors.Is() slow your code down by 3000%
An exhaustive set of benchmarks on different ways to approach error handling in Golang. We demonstrate that common sentinel error idioms are slow your code down by 5x.
The bane of my existence: Supporting both async and sync code in Rust
Sit beside me and hear this crazy old man's tale of when I asked Rust for too much
Enabling the Future of GitHub's REST API with API Versioning
We’re introducing calendar-based versioning for our REST API, so we can keep evolving our API, whilst still giving integrators a smooth migration path and plenty of time to update their integrations.
GCC's new fortification level: The gains and costs (2022)
Discover the gains and costs of GCC’s enhanced runtime buffer overflow protection. Level 3 _FORTIFY_SOURCE preprocessor macro may detect more buffer overflows, but there’s a cost.
My Reaction to React
EDIT: Some people were rightly complaining about the code snippets being screen captures rather than <code> blocks. I’ve updated accordingly. Also, many have rightfully commented that t…
Comparisons in C++20
Now that the Cologne meeting is over and we’ve more or less finalized (at least before the NB comments come in) C++20, I wanted to take the time to describe in detail one of the new language features we can look forward to. The feature is typically referred to as operator<=> (defined in the language as “three-way…
Replacing Protobuf with Rust
Forking pg_query.rs to replace Protobuf with bindgen-generated direct C-to-Rust struct mappings, yielding 5x faster query parsing and 10x faster deparsing in PgDog.
Why your first Rust FizzBuzz implementation may not work
An exploration into some initially surprising but great parts of Rust (though you still may not like them).
Sadly, I must say goodbye to Leaf, my programming language
This is hard to write, or rather, it’s a hard decision to make. After investing many years on Leaf — a programming language, a major life project — I need to take a break from it. It’s no longer fulfilling my goals, and it’s not as fun as it once was. It’s interfering with my […]