From a hopelessly optimistic Socialist speech, a kernel of the Arts and Crafts movement I believe to be wholly true:

I think that to all living things there is a pleasure in the exercise of their energies, and that even beasts rejoice in being lithe and swift and strong. But a man at work, making something which he feels will exist because he is working at it and wills it, is exercising the energies of his mind and soul as well as of his body. Memory and imagination help him as he works. Not only his own thoughts, but the thoughts of the men of past ages guide his hands; and, as a part of the human race, he creates. If we work thus we shall be men, and our days will be happy and eventful.

William Morris, Useful Work versus Useless Toil, 1883.

Continue reading (144 words)

Ready? Grab the tarball or deb from

0.1.3 is a consolidation release, comprising 2812 insertions and 1425 deletions. It includes numerous bugfixes, performance improvements, features–especially integration with third-party tools–and clearer code. This release includes the work of dozens of contributors over the past few months, who pointed out bugs, cleaned up documentation, smoothed over rough spots in the codebase, and added whole new features. I can’t say thank you enough, to everyone who sent me pull requests, talked through designs, or just asked for help. You guys rock!

I also want to say thanks to Boundary, Blue Mountain Capital, Librato, and Netflix for contributing code, time, money, and design discussions to this release. You’ve done me a great kindness.

Continue reading (652 words)

For the last three years Riemann (and its predecessors) has been a side project: I sketched designs, wrote code, tested features, and supported the community through nights and weekends. I was lucky to have supportive employers which allowed me to write new features for Riemann as we needed them. And yet, I’ve fallen behind.

Dozens of people have asked for sensible, achievable Riemann improvements that would help them monitor their systems, and I have a long list of my own. In the next year or two I’d like to build:

  • Protocol enhancements: high-resolution times, groups, pubsub, UDP drop-rate estimation
  • Expanding the websockets dashboard
  • Maintain index state through restarts
  • Expanded documentation
  • Configuration reloading
  • SQL-backed indexes for faster querying and synchronizing state between multiple Riemann servers
  • High-availability Riemann clusters using Zookeeper
  • Some kind of historical data store, and a query interface for it
  • Improve throughput by an order of magnitude

Continue reading (595 words)


Write contention occurs when two people try to update the same piece of data at the same time.

We know several ways to handle write contention, and they fall along a spectrum. For strong consistency (or what CAP might term “CP”) you can use explicit locking, perhaps provided by a central server; or optimistic concurrency where writes proceed through independent transactions, but can fail on conflicting commits. These approaches need not be centralized: consensus protocols like Paxos or two-phase-commit allow a cluster of machines to agree on an isolated transaction–either with pessimistic or optimistic locking, even in the face of some failures and partitions.

Continue reading (2651 words)

This is the house I grew up in. It was particularly challenging to render in one-meter increments, especially while preserving the positions of walls and staircases. The entire structure wanted to shift around in various dimensions; a tension which is only partly resolved by resizing the stair and kitchen.

I chose a site on a hill, facing west; echoing the original lot.


Continue reading (217 words)

Violating every principle of book conservation, CELL is a library designed to evoke the impermanence and chaos of cellular biology.


CELL is situated in the middle of a marsh (intercellular matrix); readers arrive by boat to any of four landings (alpha-hemolysin complexes).

Continue reading (191 words)

Typically my taste in architecture is functional, spartan, and modern–but there’s a great deal to be said for “A Pattern Language”. As I approach the end of the book, I’ve started to question, apply, and practice these patterns in Minecraft structures. This structure is a cabin for a small family or group of friends.


The local climate is a temperate grassland and oak forest. A small sandy pool lies between two groves, providing ACCESS TO WATER. The site was chosen for its fantastic views, and situated such that the forest shielded it from a nearby castle; there is no developed land visible from the site itself. Concordant with SITE REPAIR, I chose a mildly sloping, uninterrupted stretch of land close to, but not interfering with, TREE PLACES or the water. Locally sourced timber and cobblestone were the primary building supplies, obtained by thinning one oak forest repeatedly and replanting. Careful effort was made not to disturb the local ecology while allowing ready access to nature.

Continue reading (1281 words)

You guys, we have to talk about Saltillo.

This dude is nuts. He emits high-octane nightmare fuel as a byproduct from an inexplicable process of self-discovery the likes of which I’ve never seen. His art is disturbing as fuck. But the music–oh man, this is good stuff.

Continue reading (329 words)

This is total conjecture; please correct me in the comments, because I don’t understand finance at all. This is from a physics standpoint.

In markets, money flows against an information gradient. Traders with perfect knowledge of a stock’s value in the future can make trades with no risk, yielding the highest expectation values of returns E[R]. Traders with zero knowledge of the stock’s value have the worst expectation value. If the market is conservative–that is to say, there is no money added or lost inside the market itself; a stock sells for x dollars and is purchased for x dollars in each transaction, the sum of all expectation values over traders

S = Σ0n E[R(tradern)]

Continue reading (681 words)

In response to Results of the 2012 State of Clojure Survey:

The idea of having a primary language honestly comes off to me as a sign that the developer hasn’t spent much time programming yet: the real world has so many languages in it, and many times the practical choice is constrained by that of the platform or existing code to interoperate with.

I’ve been writing code for ~18 years, ~10 professionally. I’ve programmed in (chronological order here) Modula-2, C, Basic, the HTML constellation, Perl, XSLT, Ruby, PHP, Java, Mathematica, Prolog, C++, Python, ML, Erlang, Haskell, Clojure, and Scala. I can state unambiguously that Clojure is my primary language: it is the most powerful, the most fun, and has the fewest tradeoffs.

Continue reading (282 words)

More from Hacker News. I figure this might be of interest to folks working on parallel systems. I’ll let KirinDave kick us off with:

Go scales quite well across multiple cores iff you decompose the problem in a way that’s amenable to Go’s strategy. Same with Erlang. No one is making “excuses”. It’s important to understand these problems. Not understanding concurrency, parallelism, their relationship, and Amdahl’s Law is what has Node.js in such trouble right now.

Ryah responds:

Continue reading (1028 words)

Copyright © 2018 Kyle Kingsbury.
Non-commercial re-use with attribution encouraged; all other rights reserved.
Comments are the property of respective posters.