Topics /
Software Engineering
The most popular blog posts about software engineering on Hacker News. 14,540 posts.
What’s your API’s “Time To 200”?
M'colleague Charles has introduced me to the most spectacular phrase - "Time To 200". That's a measurement of the length of time it takes a new user to go from signing up to your API to getting their first HTTP 200 response. Think about the last time you started using a new API... Fill in a tediously long registration…
Modern Extreme Programming
There was a recent discussion on the Extreme Programming mailing list kicked off by Ron Jeffries saying he wants his XP back. The implication being that Extreme Programming is no longer practised, and that most “Agile” organisations are actually practising Flaccid Scrum – some agile process but little of the technical…
Designing command-line interfaces
There are few articles on the design of command-line interfaces (CLIs), even if plenty of articles on designing graphical user interfaces (GUIs) exist. This article is an attempt at presenting some of the most important guidelines for CLI design.
Using TLA+ in the Real World to Understand a Glibc Bug
TLA+ is a formal specification language that you can use to verify programs. It’s different from other formal verification systems in that it’s very pragmatic. Instead of writing proofs…
CoreRT – A .NET Runtime for AOT
Firstly, what exactly is CoreRT? From its GitHub repo .. a .NET Core runtime optimized for AOT (ahead of time compilation) scenarios, with the accompanying .NET native compiler toolchain
Programmer as wizard, programmer as engineer (2018)
Context matters. Sometimes we need to get things done, sometimes we need to build things to last.
The Isolation Trap: Erlang
Erlang's mailbox design is more disciplined than Go's channels: only the owning process can read from a mailbox, and sends are asynchronous. Yet the four failure modes of shared mutable state still show up, just in different shapes.
JVM exceptions are weird: a decompiler perspective
Some time ago, I played around with decompiling Java class files in a more efficient manner than traditional solutions like Vineflower allow. Eventually, I wrote an article on my approach to decompiling control flow, which was a great performance boost for my prototype. At the time, I believed that this method can be…
Parallelism and concurrency need different tools
In this piece, I disagree with Joe Armstrong and Rob Pike, basing my argument on the differences between vending machines and gift boxes (illustrated with drawings carefully prepared in Microsoft Paint).
How to write a programming book
Aquiles Carattino helps technical founders and scientists transition from academia to entrepreneurship. Actionable advice on deep tech strategy, product management, and commercializing science.
Bug finding is slow in spite of many eyeballs
"given enough eyeballs, all bugs are shallow" The saying (also known as Linus' law) doesn't say that the bugs are found fast and neither does it say who finds them. My version of the law would be much more cynical, something like: "eventually, bugs are found", emphasizing the 'eventually' part. (Jim Zemlin apparently…
Eighteen Years of ABI Stability
It has been eighteen years of libcurl ABI stability.
A hundred million cars run curl
One of my hobbies is to collect information about where curl is used. The following car brands feature devices, infotainment and/or navigation systems that use curl - in one or more of their models. These are all brands about which I've found information online (for example curl license information), received photos…
Building OS X Apps with JavaScript
OS X Yosemite introduced JavaScript for Automation. This makes it possible to build native OS X apps using good ol’ JS. This article covers the basics and walks through building an example app.
Matrix multiplication in O(n^2.373)
For twenty years, the fastest known algorithm to multiply two n-by-n matrices, due to Coppersmith and Winograd, took a leisurely O(n2.376) steps. Last year, though, in his PhD thesis, Andrew Stot…
Getting decent error reports in Bash when you're using 'set -e'
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…
Decision Tables
I really like decision tables but they’ve fallen out of common knowledge. Let’s fix that. A decision table is a means of concisely representing branching and conditional computations. In the most basic form, you have some columns that represent the “inputs” as booleans and some columns that represent outputs and…
How well do you know CSS display?
This article has been translated to Japanese by Kana Takahashi on POSTD. The display property is one of the most important CSS properties we use for layout.…
Practical guide to solving hard problems
I sometimes find myself in a position of needing to write some code that I’m just not sure how to write. Been there have you? Here are the steps I take when I’m stumped. No huge revelations here, just hard-earned advice.
Instapaper's backup method
I mentioned earlier on Twitter that my home computer downloaded a 22 GB database dump every three days as part of Instapaper’s backup method, and a lot of people expressed interest in knowing the full setup.
Git can't be made consistent
This post complains about Git lacking eventual consistency. I have a little secret for you: Git can't be made to have eventual consistency. Everybody seems to think the problem is a technical one, of complexity vs. simplicity of implementation. They're wrong. The problem is semantics. Git follows…
Evolution of Rust Compiler Errors
Blog about programming stuff.
Accurate Image Alignment and Registration Using OpenCV
The image alignment and registration pipeline takes two input images that contain the same scene from slightly different viewing angles. The picture above displays both input images side by side with the common scene (object) being the painting Las Meninas (1656) by Velázquez, currently at the Museo del Prado in…