New
The latest blog posts to take off on Hacker News. 14,544 posts.
Zero-allocation Trie Traversal
As part of a demonstration in an upcoming article , I wrote a simple trie implementation. A trie is a search tree where the keys are a sequence of symbols (i.e. strings). Strings with a common prefix share an initial path down the trie, and the keys themselves are stored implicitly by the structure of the trie. It’s…
My Subconscious Is a Better Developer Than I Am
In which I wonder if my subconscious is a better developer than I am, as solutions seem to come to mind, bypassing the work I consciously put in.
Moving from Native Apps to Progressive Web Apps
From now on, I won’t be building any more native apps. All my apps going forward will be progressive web apps. Progressive web apps are web…
How to accept Bitcoin payments without running a full node
Accepting Bitcoin payments for an online service can be daunting at first (I worked out how to do it, for SMS Privacy , a couple of months ago). What I describe is not the only way to accept Bitcoin payments - it's not even the best way to accept Bitcoin payments - but it works for me. And it might work for you, too.
TDD Doesn't Work
Yeah, an in-depth study that repeated another study that was done a few years back. Both showed that TDD doesn’t work. The new one uses a multi-site, blind analysis, approach. It looks conclusive.
Lumo – A fast, standalone ClojureScript REPL that runs on Node.js and V8
One common complaint of Clojure REPLs is their [startup time](http://puredanger.github.io/tech.puredanger.com/2013/12/01/clj-problems/). Although that complaint is often somewhat unfounded (and related to tooling), it still takes the bare Clojure JAR about 1 second to start on new hardware…
Dijkstra's Algorithm
I was at SCNA the other day, and someone approached me about TDD and Dijkstra’s algorithm. He wondered if you could find a sequence of tests that would lead you to the algorithm. This sounded like a fun little exercise, so I decided to give it a try here.
Elm is Wrong
A few weeks ago, on a whim my friend and I decided to hackathon our way through an app to help us learn how to play guitar . In a stroke of inspiration, we decided to learn something new, and do the project in the Elm programming language , about which I had heard many good things.
A bug story: data alignment on x86
This sounds unusual. Who ever wants to do this in real life? Normally, we only see code like this as primary school assignments or compiler benchmarks. However, this time it happened in real life.
Some thoughts on asynchronous Python API design in a post-async/await world
I've recently been exploring the exciting new world of asynchronous I/O libraries in Python 3 – specifically asyncio and curio . These two libraries make some different design choices. This is an essay that I wrote to try to explain to myself what those differences are and why I think they matter, and distill some…
Docker in Production: A retort
This blog covers various issues I encounter and the (sometimes creative) solutions I apply.
How to contribute to an open source project on GitHub
If this is your domain name you must renew it immediately before it is deleted and permanently removed from your account. To renew this domain name visit NameBright.com
Fast Fibonacci Algorithms (2015)
Definition: The Fibonacci sequence is defined as \(F(0) = 0\), \(F(1) = 1\), and \(F(n) = F(n-1) + F(n-2)\) for \(n ≥ 2\). So the sequence (starting with \(F(0)\)) is 0, 1, 1, 2, 3, 5, 8, 13, 21, ….
Rules for Writing Safety Critical Code (2006)
Ten rules for writing safety critical code, to facilitate analysis and increase software reliability
Emacs standing alone on a Linux Kernel (2004)
Nano How-To explaining how to setup a root file system with only emacs.
“Design Patterns” Aren't (2002)
The "design patterns" movement in software claims to have been inspired by the works of architect Christopher Alexander. But an examination of Alexander's books reveals that he was actually talking about something much more interesting.
X86 Register Encoding
If you've ever look at the disassembly output for C or C++ code, you'll probably notice that there are a lot of push/pop instructions. And if you pay close enough attention, you'll notice that the compiler prefers to use certain registers over others. In particular, compilers will prefer pushing "old" registers like…
I don't understand Python's Asyncio
A little confession that I have no idea how asyncio works in Python 3.
Liskov's Reading List for Computer Scientists
Barbara Liskov pointed us in her talk at Heidelberg Laureate Forum to some interesting “must-reads” for computer scientists. The talks will be available here: http://www.heidelberg-laureate-forum.org/ . I strongly recommend to watch many talks – including hers.