Creează un cont pentru a te abona la acest blog și a-i urmări articolele pe pagina Lectură.
-
How should we think about error-handling in concurrent programs?
-
For a while now, I’ve been fascinated by Z3 and by SMT solving more broadly.
-
While investigating the performance of the new Python 3.14 tail-calling interpreter, I learned (via this very informative comment from Sam Gross) new (to me) piece of performance trivia: Modern CPUs mostly no longer struggle to predict the bytecode-dispat…
-
About a month ago, the CPython project merged a new implementation strategy for their bytecode interpreter.
-
Earlier this month, I used Claude to port (parts of) an Emacs package into Rust, shrinking the execution time by a factor of 1000 or more (in one concrete case: from 90s to about 15ms).
-
Suppose we have a large collection of documents, and we wish you identify which documents are approximately the same as each other.
-
I worked at Stripe for about seven years, from 2012 to 2019.
-
I was recently introduced to the paper “Seeing the Invisible: Perceptual-Cognitive Aspects of Expertise” by Gary Klein and Robert Hoffman.
-
This December, the imp of the perverse struck me, and I decided to see how many days of Advent of Code I could do purely in compile-time C++ metaprogramming.
-
I have spent many years as an software engineer who was a total outsider to machine-learning, but with some curiosity and occasional peripheral interactions with it.
-
Suppose we’ve got a service.
-
What’s the “right” level of CPU utilization for a server?
-
Ever since its introduction in the 2017 paper, Attention is All You Need, the Transformer model architecture has taken the deep-learning world by storm.
-
In my day job at Anthropic, we run relatively large distributed systems to train large language models.
-
CPU cycles are cheaper than they have ever been, and cloud computing has never been more ubiquitous.
-
Last week, Frederic Cambus wrote about building LLVM quickly on some very large machines, culminating in a 2m37s build on a 160-core ARM machine.
-
People who work with me tend to realize that I have Opinions about databases, and SQL databases in particular.
-
Summary: Read about my efforts to solve the game of Ultimate Tic Tac Toe.
-
Alex Gaynor recently asked this question in an IRC channel I hang out in (a channel which contains several software engineers nearly as obsessed with software testing as I am): uhh, so I’m writing some code to handle an econnreset… how do I test this?
-
Suppose we have some codebase we’re considering applying some patch to, and which has a robust and maintained test suite.
-
Last week, I wrote about the mindset that computer systems can be understood, and behaviors can be explained, if we’re willing to dig deep enough into the stack of abstractions our software is built atop.
-
Introduction This post attempts to describe a mindset I’ve come to realize I bring to essentially all of my work with software.
-
At this point in my career, I’ve worked on at least three projects where performance was a defining characteristic: Livegrep, Taktician, and Sorbet (I discussed sorbet in particular last time, and livegrep in an earlier post).
-
This is the second in an indefinite series of posts about things that I think went well in the Sorbet project.
-
Testing and feedback loops This post tries to set out one mental model I have for thinking about testing and the purpose testing serves in software engineering, and to explore some of the suggestions of this model.
-
In 2017 and 2018, I (along with Paul Tarjan and Dmitry Petrashko) was a founding member of the Sorbet project at Stripe to build a gradual static typechecking system for Ruby, with the aim of enhancing productivity on Stripe’s millions of lines of Ruby, a…
-
While talking about thinking about tests and testing in software engineering recently, I’ve come to the conclusion that there are (at least) two major ideas and goals that people have when they test or talk about testing.
-
With the ongoing move towards “infrastructure-as-code” and similar notions, there’s been an ongoing increase in the number and popularity of declarative configuration management tools.
-
Writing a Go/C polyglot Someone on a Slack I’m on recently raised the question of how you might write a source file that’s both valid C and Go, commenting that it wasn’t immediately obvious if this was even possible.
-
Abstract In writer-priority reader/writer locks, as soon as a single writer enters the acquisition queue, all future accesses block behind any in-flight reads.
-
Over the last few years — perhaps not that unusually among the nerds I know — I’ve become increasingly fascinated by the Apollo program (and early space program more generally), and been reading my way through a growing number of books and documentaries w…
-
So, you’ve got a program that’s using more and more over time as it runs.
-
In my last last post, I argued that property-based testing and fuzzing are essentially the same practice, or at least share a lot of commonality.
-
“Property-based testing” refers to the idea of writing statements that should be true of your code (“properties”), and then using automated tooling to generate test inputs (typically, randomly-generated inputs of an appropriate type), and observe whether…
-
tl;dr “Transparent Hugepages” is a Linux kernel feature intended to improve performance by making more efficient use of your processor’s memory-mapping hardware.
-
Back when I was an undergraduate, as part of a class called “Computer Systems Engineering”, we read numerous classic papers of systems design.
-
I’ve been spending some time learning deep learning and tensorflow recently, and as part of that project I wanted to be able to train models using GPUs on EC2.
-
I spent a while the last week porting livegrep.com from running directly AWS to running on Kubernetes on Google’s Cloud Platform (specifically, the google container engine, which provisions and manages the cluster for me).
-
(This post is cross-posted from Honeycomb’s instrumentation series).
-
The longer I spend as a software engineer, the more obsessive I get about testing.
-
When designing a new software project, one is often faced with a glut of choices about how to structure it.
-
MongoDB is perhaps the most-widely-mocked piece of software out there right now.
-
If you’re familiar with nearly any mainstream programming language, and I asked you to draw a diagram of an array, the array indices, and the array elements, odds are good you’d produce a diagram something like this: In this post, I want to persuade you to
-
Back in January of 2012, Russ Cox posted an excellent blog post detailing how Google Code Search had worked, using a trigram index.
-
Ever since I wrote reptyr, I’ve been frustrated by a number of issues in reptyr that I fundamentally didn’t know how to solve within the reptyr model.
-
I don’t do a ton of Linux kernel development these days, but I’ve done a fair bit in the past, and picked up a number of useful techniques for doing kernel development in a relatively painless fashion.
-
At Stripe, we rely heavily on ruby and EventMachine to power various internal and external services.
-
For the past N months, it seems like there is no new technology stack that is either hotter or more controversial than node.js. node.js is cancer!
-
I’ve posted the final slides from my talk this year at DEFCON and Black Hat, on breaking out of the KVM Kernel Virtual Machine on Linux.
-
If you program in Python, you’re probably familiar with the pickle serialization library, which provides for efficient binary serialization and loading of Python datatypes.