Papers I like
This started out on Twitter and I expected having to write up maybe 50 or so, but then it made the rounds. I don’t think I have 1200+ papers that I’d recommend reading, and even if I di…
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 14,540 posts.
This started out on Twitter and I expected having to write up maybe 50 or so, but then it made the rounds. I don’t think I have 1200+ papers that I’d recommend reading, and even if I di…
The programming profession is blessed with a number of gifted essayists. Today I will pick on three of my favorites — Eric Raymond, Paul Graham, and Steve Yegge — because they all seem to disagree about why (and whether) mathematics is relevant to the practicing programmer. Their attitudes might be summarized as:
Last year I created Pomodone , a small time tracking application based on the Pomodoro technique of working in 25 minute intervals. It's a pretty basic app; it has a 25 minute timer (that runs in a Web Worker) and saves a history of your "poms" to a small Firebase database. I initially built it using React (well…
Interruptions are one of the biggest sources of inefficiency for programmers. Now, to be fair, they’re probably a big source of inefficiency for everyone, but relatively speaking, they’re worse for programmers. To understand what I mean, let’s take someone whose job is in sales. A lot of the day is probably spent on…
Understand the mechanics of dynamic dispatch implementation in CPython
I am about to turn forty-six. This means I have been programming for forty years, half of them professionally. During most of that time, I used a "standard" setup with 104 keyboard, a flat mouse, and a sitting desk.
Touring the ORM and Postgres landscape in Go, and why sqlc is today’s top pick.
Deploying web applications is hard. No shiny continuous deployment talk and no DevOps coolness can change that. Or to use DevOps Borat’s words: “Is all fun and game until you are need of put it in production.“ There are some mistakes I see people doing again and again so I’d like to address them here.
Why a filter is slowest when it keeps half of random input, and what a branchless rewrite gains there and loses at 1%.
Author: Alexey Makhotkin squadette@gmail.com. Introduction In this database design tutorial (~9000 words) I’m going to show how to design the database tables for a real-world project of substantial complexity. We’ll design a clone of Google Calendar. We will model as much as possible of the functionality that is…
There’s a proposal to add Software Transactional Memory , or STM , to the Ruby programming language. This is part of a wider effort to add better support for concurrency and parallelism in Ruby, and in particular the idea of ractors . A concept has been proposed and implemented by Koichi Sasada.
In this tutorial we will learn about the concepts behind the SQL syntax. We will go through the basics of how to use the FROM and WHERE clauses, and move on to more advanced topics like joins, aggregations and subqueries.
Understanding the fundamental building blocks of Bitcoin can be daunting for some developers. The purpose of this guide is to explain through simple pieces of code, how Bitcoin works.
Structures allow us to combine several variables to create a new data type. Some other languages support the same concept but call it “records”. If you come from object-oriented program…
A pragmatic way for you to start automating deployments of a Legacy system.
This started out as a list of top Computer Science blogs, but it more closely resembles a set: the order is irrelevant and there are no duplicate elements; membership of this set of blogs satisfies…
Literate programming is the idea that code should be intermingled with prose such that an uninformed reader could read a code base as a narrative, and come away with an understanding of how it works and what it does. Although I have long been intrigued by this idea, and have found uses for it in a couple1 of different…
.NET 10 GC tuning shows how stack allocations, DATAS, and region sizing cut allocations, improve latency, and reduce your cloud cost.
There is an area of Python that many developers have problems with. This is an area that has seen many different solutions pop up over the years, with many different opinions, wars, and attempts to solve it. Many have complained about the packaging ecosystem and tools making their lives harder. Many beginners are…
In 2025, playing your own music on an iPhone is surprisingly hard, unless you pay Apple or navigate a maze of limitations. So I built my own player from scratch, with full text search, iCloud support, …
To answer this question, let me take you a few years back, when I worked with a small high tech startup. We were working on a pretty complex augmented reality system spanning all layers from low-level computer vision components to cross-platform mobile and web apps. Especially for the lower-level components, a good…
A simple ray tracer written in pure CMake
Great web applications boot up fast and stay silky smooth once they've started. In other contexts, applications can choose quick loading or responsiveness once they've loaded. Great games can get away with a long loading bar as long as they react instantly once the gamer gets going. In
Translating Rob Pike's simple and elegant C regex matcher to Go.
DegenCity Casino for New Zealand players: 30 free spins with no deposit, an NZ$6,000 welcome package, a four-tier VIP program, Apple Pay, cards and crypto, payouts within 24 hours.
The Ivory Tower is a blog about software engineering and development philosophy by Anders Sundman.