Top posts
Every blog post that took off on Hacker News, ranked by the votes of its best submission. 21,842 posts.
Mining JIT traces for missing optimizations with Z3
In my last post I've described how to use Z3 to find simple local peephole optimization patterns for the integer operations in PyPy's JIT. An example is int_and(x, 0) -> 0. In this post I want to scal
A retrospective on Requests
After writing my thoughts on github3.py down here, someone was asking about Python libraries that people recommend new Python developers read for learning how to structure code and use the packaging systems. My initial reaction was "Don't listen to folks that tell you to read python-requests as a good example." When…
Exploring Emacs
The Recurse Center is a self-directed, community-driven educational retreat for programmers in New York City.
Finding Goroutine Bugs with TLA+
My job these days is teaching TLA+ and formal methods: specifying designs to find bugs in them. But just knowing the syntax isn’t enough to write specs, and it helps to have examples to draw from. I recently read Chris Siebenmann’s Even in Go, concurrency is still not easy and thought it would make a good case study…
/usr/bin/env -S uv run
This is a really neat pattern. Start your Python script like this: #!/usr/bin/env -S uv run # /// script # requires-python = ">=3.12" # dependencies = [ # "flask==3.*", # …
Who invented vector clocks?
Back in spring 2020, I was wrapping up the distributed systems course I was teaching, and for the last lecture, decided to spend a little time poking at the question of who actually invented vector clocks. Most people who need something to cite for vector clocks cite Friedemann Mattern’s “Virtual Time and Global…
Making PyPI's test suite faster
See how we slashed PyPI’s test suite runtime from 163 to 30 seconds. The techniques we share can help you dramatically improve your own project’s testing performance without sacrificing coverage.
Solving First Order Differential Equations with Julia
In this tutorial, we will learn about solving Differential Equations with Julia. Differential Equations are everywhere in Science and Engineering problems. And, being able to solve Differential Equations using computers is very convenient. We will use the DifferentialEquations.jl package for solving Differential…
40% off Pragmatic Programmers books this week
In honor of this week’s Agile 2011 conference, our titles are on sale for 40% off both paperback and ebook formats. Use the coupon code AGILEWEEK , expires 8/12/11.
Schedule cronjob for the first Monday of every month, the funky way
The crontab man page ("man 5 crontab" or read online) contains this bit: Note: The day of a command's execution can be specified by two fields — day of month, and day of week. If both fields are restricted (i.e., don't start with *), the command will be run when either field matches the current [...]
The Grammar of Vim
Like a lot of people, I have gone retro when it comes to editors, using Vim for most of my day to day work. I’ve been doing most of my development these days in a terminal window, logged directly into a VM where I test my code. For more, see this article. I have been a somewhat casual vi user for at least 15 years…
Python 3.6 – Asynchronous Comprehensions
PEP 492 and PEP 525 introduce support for native coroutines and asynchronous generators using async / await syntax. This PEP proposes to add asynchronous versions of list, set, dict comprehensions and generator expressions.
V8 Garbage Collector
wingolog: article: the last couple years in v8's garbage collector
Effective harnesses for long-running agents
How an initializer agent and an incremental coding agent help the Claude Agent SDK make steady progress across many context windows.
Eager Execution: An imperative, define-by-run interface to TensorFlow
Posted by Asim Shankar and Wolff Dobson, Google Brain Team UPDATE, April 3 2018: Please see the official user guide for more up-to-date code examp...
Java’s Mysterious Interrupt
One of the lesser known parts of Java is InterruptedException. With its vague-sounding name and non-committal Javadoc, few people are able to figure out what they need to do with it. Since I myself didn’t really grok it, I decided to put together a post explaining how interruption works. If you are looking for a more…
Lisp moving Forth moving Lisp
This chapter is a culmination of many macro techniques we have looked at so far in this book. Using macro abstractions we have developed, we create an implementation of one of my favourite programming languages: forth . Although this implementation embodies most of the important ideas of forth, it is very different…
The Changes for the 2nd Edition of “Code”
Whenever a 2nd edition of a book is published, people ask “I already have the 1st edition. Do I need to get the 2nd?” It’s a legitimate question and I’ve asked it myself. Reading a 2nd edition after the 1st is not trivial: It’s a commitment of both additional money and additional time.
Metaprogramming in Elixir
In this article, we cover metaprogramming and macros in Elixir. Discover how you can use Elixir to write code that writes code.
Erlang 16B Released
The official home of the Erlang Programming Language
Beautiful Code
O’Reilly just published Beautiful Code. I was invited to contribute, but I just could not go along with the premise. I disagree that beauty is a guiding principle of programming. Here is how …
Iterating on Testing in Rust
With the release of rust 1.70, there was some surprise and frustration that unstable test features now require nightly , like all other unstable features in Rust. One of the features most affected is --format json which has been in limbo for 5 years . This drew attention to a feeling I've had: the testing story in…
How hard is it to check for whitespace?
A journey through Unicode's whitespace characters and perfect hashing.