New
The latest blog posts to take off on Hacker News. 1,517 posts.
Reflections on 10k Hours of Programming
I'm certainly not a world-class expert, but I have put my 10,000 hours of deliberate practice into programming. Here are 31 of my reflections on programming.
Firefox: Performance in Progress
In the last six months the Firefox performance team has implemented changes to improve startup, responsiveness, security (Fission), and web standards. Startup and perceived startup Doug Thayer and Emma Malysz ...
How PostgreSQL aggregation works and how it inspired our hyperfunctions’ design
A discussion of aggregation in PostgreSQL and how it integrates with the design of Timescale’s hyperfunctions.
Slitter: A slab allocator that trusts, but verifies
Slitter is Backtrace’s deliberately middle-of-the-road thread-caching slab allocator, with explicit allocation class tags (rather than derived from the object’s size class). It’s mostly written in Rust, and we use it in our C backend server. Slitter’s design is about as standard as it gets: we hope to dedicate the…
Good Design is Imperfect Design, Part 1: Honest Names
by Eric Evans Perfectionism is a pitfall. For those who, like me, love elegant design and see its utility, there is a slippery slope waiting when a satisfying design does not emerge in a reasonable time. It takes constant self-discipline to recognize this and accept, let go, ship and move on – or return in...
Simple Systems Have Less Downtime (2020)
The Maersk Triple-E Class container ship is 1,300 feet long, carries over 18,000 containers across 11,000 miles between Europe and Asia, and… Its entire crew can fit inside a passenger van. As a former naval architect and a current marketing consultant to startups, I found that
Knuth on Dijkstra (2014)
An excerpt from my book Coders at Work that I frequently find myself wanting to cite mostly because I get a kick out of someone having standing to call BS on Dijkstra:
SQLite Is Dynamically Typed (2020)
A small, cool fact about SQLite is that its columns are flexibly typed. You can store any value in any column! Try it out: sqlite> create table t1 (v1 int, v2 varchar(10)); sqlite> insert into t1 values ("abc", "this string is longer than 10 characters!"); sqlite> select * from t1; abc|this string is longer than 10…
Emacs' org-mode gets citation support
Introducing citations!
Introduction to Convolutional Neural Networks
This beginner guide will help you understand how convolution neural networks (CNNs) work and what they are useful for.
Malicious PyPI packages stealing credit cards and injecting code
JFrog finds a new supply chain attack targeting python developers using the PyPI repository
Leap seconds: Causing bugs even when they don’t happen
Some new minor leap second drama is coming up, and for once we can
Full-time open source with Andrew Kelley
Today’s show: How to quit your job and work on open source full time. This story has it all -- balancing side projects and full-time employment, building up enough supports to leave your job, and explaining quitting to your family and friends. And also: what do you do if your project succeeds, and then someone forks…
A Bestiary of Functions for Systems Designers
Whether your game surfaces its numbers to the player or not, odds are it has underlying systems that rely on them, and you use functions to determine how those numbers affect each other. In other words, a mathematical function is usually at the core of the answer to a bunch of frequent game design questions.
Six Years of Professional Clojure
TL;DR Clojure is a great programming languages due to its functional nature, lack of objects / concentration on primitive values
Building a Django driver for Psycopg 3
Psycopg is the most popular PostgreSQL adapter for the Python programming language.
Beautiful ideas in programming: generators and continuations
Science, programming, books, and other interesting stuff
How to write slow Rust code
I have recently published a blog post that, as I had expected (actually, hoped for, as that would attract people to contribute to the “study”), generated quite some polemic on the Internet!
Extracting Objects Recursively with Jq
The Algolia-powered Hacker News API returns nested comment threads that look like this: https://hn.algolia.com/api/v1/items/27941108
Learning that you can use unions in C for grouping things into namespaces
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
New in Git: switch and restore
To my surprise, I recently found out about 2 new additions to the list of high-level commands: git restore and git switch
Faster CRDTs: An Adventure in Optimization
Some researchers in France put together a comparison showing lots of ways you could implement realtime collaborative editing (like Google Docs). They implemented lots of algorithms - CRDTs and OT algorithms and stuff. And they benchmarked them all to see how they perform. (Cool!!) Some algorithms worked reasonably…
Sorbet Compiler: An experimental, ahead-of-time compiler for Ruby
For the past year, the [Sorbet](https://sorbet.org/) team has been working on an experimental, ahead-of-time compiler for Ruby, powered by Sorbet and LLVM. Today we're sharing the source code for it. It lives alongside the existing code for Sorbet on GitHub, mostly in the `compiler/` folder:
The journey to controlling external monitors on M1 Macs
When M1 Macs were launched, a new GPU with iOS-like architecture started driving the external monitors. This meant that the old method for controlling monitors using DDC wouldn't work anymore. Apps like Lunar and MonitorControl had to find other ways to change the brightness of the monitors.