In the just-released riemann-java-client 0.0.6, riemann-clojure-client 0.0.6, riemann-ruby-client 0.0.8, and the upcoming riemann 0.1.4 (presently in master), Riemann will support two new types of metrics for events.

https://github.com/aphyr/riemann-java-client/blob/master/src/main/proto/riemann/proto.proto#L24

# signed 64-bit integers (variable-width-encoded)
optional sint64 metric_sint64 = 13;
# double-precision IEEE 754 floats
optional double metric_d = 14;

Continue reading (261 words)

Nassim Nicholas Taleb has written a piece on futurism which is making me feel, well, contradictory. Apologies for my writing: fighting a killer headache this week.

Taleb asserts that the present has changed little from the past; that “futurists always get it wrong”, and that if we wish to envision the future we should subtract from the present things which do not belong. I believe the present is so different from the past that it would be shocking to humans from even a few centuries ago. Technology is culture, and our immersion in culture makes it quite difficult to understand just how unusual we are.

My great-grandparents were immigrant farmers. Most people were: prior to industrialization in the late 1700s, the vast majority of humans grew their own food or were engaged in providing it to others. Now worldwide, only a third of our workers grow food. The US’s agricultural output has almost tripled over the past sixty years, a result of phenomenal improvements in efficiency made possible by the widespread use of petrochemicals–an energy-dense store only accessible for the past few hundred years. That same industrial revolution cut the fraction of our population employed in agriculture from 75% to only 3%.

Continue reading (1416 words)

Update, 2018-09-01: Hi folks! I’ve gotten a lot of email and comments here, and I appreciate your enthusiasm, but this is a blog post about a table I built in my free time. Like I say in the post, I’m not a professional woodworker; I’m a hobbyist. I am also not a lumber mill. I’m a software engineer: I don’t have any tables or wood to sell. Try a local woodworker! If you’re in the San Francisco Bay Area, I can recommend Tree to Table. Cheers!

When Tyler and I rented this apartment together, we knew we wanted a table. Our common room has a linear kitchen at one end and the couch & coffee table at the other. Our plan (and in concordance with FARMHOUSE KITCHEN, DIFFERENT CHAIRS, and HALF-FILLED WALL) was to divide the two spaces with the dining table–and to get some extra counter and storage space. With tons of natural light, white walls, and blond flooring, we knew we wanted a solid, darker piece to balance the room–something with rough, warm materials. It also needed to be unusually high, to provide a standing work surface. After rejecting a few expensive and ill-sized pieces from craigslist, catalogs and furniture stores, we decided to build one ourselves.

I saw my first live-edge table freshman year at Carleton; an acquaintance had completed one as a part of their woodworking study, and invited a small group to dinner to celebrate. Oak, I believe–roughly eight feet by 40 inches, a beautiful pair of book-matched slabs cleaved perfectly from bark to core, and polished to a fine sheen. The top rest on legs only 18 inches in height; we sat on the floor or cushions. For seven years the feeling of that table resonated in my memory. Now I had the workshop and living space to make one myself.

Continue reading (2895 words)

William Morris

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 http://aphyr.github.com/riemann/

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)

library.jpg

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 (2652 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.

site.jpg

Continue reading (217 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.

Site

site.jpg

Continue reading (1281 words)

Saltillo

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)