Percona Live Recap

I had a great time at Percona Live. I think this was the best MySQL conference I’ve ever been to. (The food was excellent too. The fastest way to a man’s heart is through his stomach.) The talks I attended were very good. Jay Janssen’s tutorial on Percona XtraDB Cluster was impressive. I can’t imagine how much time he must have spent preparing for that. I was very happy that Oracle, MariaDB, and WebScaleSQL had a strong presence, too.

» Continue Reading (about 400 words)

Time-Series Databases and InfluxDB

Time-series databases are of particular interest to me these days. Not only is VividCortex working with large-scale time-series data, but it’s a growing trend in the technology world in general. What’s perhaps most surprising is the dearth of native time-series databases, either commercial or opensource.

No Time to Say Hello

The World is Time-Series

The data we gather is increasingly timestamped and dealt with in time-series ways. For the last 10 years, I’ve worked with “roll-up” or “summary” tables almost constantly. I built, and saw others build, the same types of solutions over and over. For example, I probably consulted with over a dozen companies who do search-engine marketing and advertising. Cost tables are a given, and there’s usually cost-per-ad-per-day and half a dozen other summary tables. In my case I saw these things in the MySQL context, but you can pick your technology and someone’s trying to do time-series tasks on top of it.

» Continue Reading (about 1700 words)

The Barnes and Noble Nook HD+

I consider myself a very slow adopter with regard to tablets. I’m too picky. I think the iPad is inconveniently large, and there are a lot of devices that have the same screen size, which eliminated many of the popular ones from my consideration. Many of the devices out there are 7-inch screens, and that’s too small. A while ago I tried using a 7-inch device but after a while I stopped using it. Now I’ve found a tablet I really like.


» Continue Reading (about 700 words)

MySQL falls with the decline of PHP

Sometimes people’s perspective can be so interesting. I mean this with absolutely no irony. Josh Berkus wrote recently in a post about upcoming JSON improvements in PostgreSQL 9.4:

MySQL largely rose on the success of PHP, and it fell as PHP became marginalized.

This is an aside in the blog post, off-topic. But it’s interesting to discuss because it reveals the completely different things people see when they look at something. It’s like the proverbial story about the blind men describing an elephant. We have such a variety of perceptions.


This post, by the way, is not yet another flame war about MySQL versus PostgreSQL. To the contrary, it is very important for MySQL users and community members to understand that there are other communities who do not share the same assumptions, values, and beliefs at all. In my experience, many arguments about things like MySQL versus PostgreSQL result from people (or groups of people) holding such differences but being unaware of them, and therefore misinterpreting words and actions from a group who doesn’t share the same worldview, believing them to be dishonest, irrational, or hostile.

» Continue Reading (about 700 words)

Respectful Introductions and Recommendations

In the last few years of my career, I’ve increasingly been involved in meeting people. This often involves requests or offers for recommendations, introductions, and so forth.

I’ve learned to be very careful about making or accepting such offers or requests, and I’d like to share my current thoughts about that with you, because a lot of trouble can come of a seemingly innocent request or offer.


The Stakes Are High

“Martha, that’s so great that you are starting a business in the diabetes care industry! You should really meet my friend Jack. He could be extremely helpful to you, and I am sure he would appreciate knowing about your startup.”

Does that sound so dangerous? Believe me, it is. A lot is on the line for you, Martha, and Jack. Consider:

» Continue Reading (about 2300 words)

Amber Alert: Worse Than Nothing?

In the last few years, there’s been a lot of discussion about alerts in the circles I move in. There’s general agreement that a lot of tools don’t provide good alerting mechanisms, including problems such as unclear alerts, alerts that can’t be acted upon, and alerts that lack context. Yesterday and today at the Strata conference, my phone and lots of phones around me started blaring klaxon sounds. When I looked at my phone, I saw something like this (the screenshot is from a later update, but otherwise similar):

» Continue Reading (about 500 words)

Bloom Filters Made Easy

I mentioned Bloom Filters in my talk today at Strata. Afterwards, someone told me it was the first time he’d heard of Bloom Filters, so I thought I’d write a little explanation of what they are, what they do, and how they work. But then I found that Jason Davies already wrote a great article about it. Play with his live demo. I was able to get a false positive through luck in a few keystrokes: add alice, bob, and carol to the filter, then test the filter for candiceaklda.

» Continue Reading (about 200 words)

MySQL, SQL, NoSQL, Open Source And Beyond: a Google Tech Talk

I’ve been invited to give a Tech Talk at Google next Thursday, February 13th, from 11:00 to 12:30 Pacific time. Unfortunately the talk won’t be streamed live, nor is it open to the general public, but it will be recorded and hosted on YouTube afterwards. I’ve also been told that a small number of individuals might be allowed to attend from outside Google. If you would like me to try to get a guest pass for you, please tweet that to @xaprb.

» Continue Reading (about 300 words)

A simple rule for sane timestamps in MySQL

Do you store date or time values in MySQL? Would you like to know how to avoid many possible types of pain, most of which you cannot even begin to imagine until you experience them in really fun ways? Then this blog post is for you. Here is a complete set of rules for how you can avoid aforementioned pain: All date and time columns shall be INT UNSIGNED NOT NULL, and shall store a Unix timestamp in UTC.

» Continue Reading (about 100 words)

Generating Realistic Time Series Data

I am interested in compiling a list of techniques to generate fake time-series data that looks and behaves realistically. The goal is to make a mock API for developers to work against, without needing bulky sets of real data, which are annoying to deal with, especially as things change and new types of data are needed. To achieve this, I think several specific things need to be addressed: What common classes or categories of time-series data are there?

» Continue Reading (about 500 words)

Speaking at Percona Live

I’m excited to be speaking at the Percona Live MySQL Conference again this year. I’ll present two sessions: Developing MySQL Applications with Go and Knowing the Unknowable: Per-Query Metrics. The first is a walk-through of everything I’ve learned over the last 18 months writing large-scale MySQL-backed applications with Google’s Go language. The second is about using statistical techniques to find out things you can’t even measure, such as how much CPU a query really causes MySQL to use.

» Continue Reading (about 200 words)

On Crossfit and Safety

I’ve been a happy CrossFiter for a few years now. I met my co-founder and many friends in CrossFit Charlottesville, completely changed my level of fitness and many key indicators of health such as my hemoglobin A1C and vitamin D levels, am stronger than I’ve ever been, feel great, and now my wife does CrossFit too. It’s fantastic. It’s community, fun, health, fitness. It’s the antidote to the boring gyms I forced myself to go to for years and hated every minute.


But there is a fringe element in CrossFit, which unfortunately looks mainstream to some who don’t really have enough context to judge. From the outside, CrossFit can look almost cult-like. It’s easy to get an impression of people doing dangerous things with little caution or training. To hear people talk about it, everyone in CrossFit works out insanely until they vomit, pushing themselves until their muscles break down and vital organs go into failure modes.

» Continue Reading (about 2800 words)

How to Tune A Guitar (Or Any Instrument)

Do you know how to tune a guitar? I mean, do you really know how to tune a guitar?

Guitar Closeup

I’ve met very few people who do. Most people pick some notes, crank the tuners, play some chords, and endlessly fidget back and forth until they either get something that doesn’t sound awful to their ears, or they give up. I can’t recall ever seeing a professional musician look like a tuning pro on stage, either. This really ought to be embarrassing to someone who makes music for a career.

There’s a secret to tuning an instrument. Very few people seem to know it. It’s surprisingly simple, it isn’t at all what you might expect, and it makes it easy and quick to tune an instrument accurately without guesswork. However, even though it’s simple and logical, it is difficult and subtle at first, and requires training your ear. This is a neurological, physical, and mental process that takes some time and practice. It does not require “perfect pitch,” however.

In this blog post I’ll explain how it works. There’s a surprising amount of depth to it, which appeals to the nerd in me. If you’re looking for “the short version,” you won’t find it here, because I find the math, physics, and theory of tuning to be fascinating, and I want to share that and not just the quick how-to.

» Continue Reading (about 8700 words)

A review of Bose, Sony, and Sennheiser noise-cancelling headphones

I’ve used active noise-cancelling headphones for over ten years now, and have owned several pairs of Bose, one of Sony, and most recently a pair of Sennheiser headphones.

Sennheiser PXC 450 NoiseGard Active Noise-Canceling Headphones

The Sennheisers are my favorites. I thought I’d write down why I’ve gone through so many sets of cans and what I like and dislike about them.

» Continue Reading (about 1000 words)

Xaprb now uses Hugo

I’ve switched this blog from Wordpress to Hugo. If you see any broken links or other problems, let me know. I’ll re-enable comments and other features in the coming days. Why not Wordpress? I’ve used Wordpress since very early days, but I’ve had my fill of security problems, the need to worry about whether a database is up and available, backups, plugin compatibility problems, upgrades, and performance issues. In fact, while converting the content from Wordpress to Markdown, I found a half-dozen pages that had been hacked by some link-farm since around 2007.

» Continue Reading (about 500 words)

Immutability, MVCC, and Garbage Collection

Not long ago I attended a talk about Datomic, which focused a lot on database immutability and its benefits. I hope to illustrate why many database designs are much more complicated than Datomic and its ilk. Although Datomic’s design can be presented as advanced, there’s another side to the story, which also holds true for similar databases such as CouchDB. It’s a really difficult problem space, and clean and elegant solutions without nasty edge cases are difficult to design and implement.


» Continue Reading (about 2200 words)

Early-access books: a double-edged sword

Many technical publishers offer some kind of “early access” to unfinished versions of books. Manning has MEAP, for example, and there’s even LeanPub which is centered on this idea. I’m not a fan of buying these, in most circumstances. Why not? Many authors never finish their books. A prominent example: Nathan Marz’s book on Big Data was supposed to be published in 2012; the date has been pushed back to March 2014 now.

» Continue Reading (about 500 words)

Napkin math: How much waste does Celestial Seasonings save?

I was idly reading the Celestial Seasonings box today while I made tea. Here’s the end flap: It seemed hard to believe that they really save 3.5 million pounds of waste just by not including that extra packaging, so I decided to do some back-of-the-napkin math. How much paper is in each package of non-Celestial-Seasonings tea? The little bag is about 2 inches by 2 inches, it’s two-sided, and there’s a tag, staple, and string.

» Continue Reading (about 400 words)

Staying Secure Online

This is a public service announcement. Many people I know are not taking important steps necessary to secure their online accounts and devices (computers, cellphones) against malicious people and software. It’s a matter of time before something seriously harmful happens to them.


This article will urge you to use higher security than popular advice you’ll hear. It really, really, really is necessary to use strong measures to secure your digital life. The technology being used to attack you is very advanced, operates at a large scale, and you probably stand to lose much more than you realize.

However, it’s also much easier than you think to do the basics right.

» Continue Reading (about 3200 words)

How is the MariaDB Knowledge Base licensed?

I clicked around for a few moments but didn’t immediately see a license mentioned for the MariaDB knowledgebase. As far as I know, the MySQL documentation is not licensed in a way that would allow copying or derivative works, but at least some of the MariaDB Knowledge Base seems to be pretty similar to the corresponding MySQL documentation. See for example LOAD DATA LOCAL INFILE: MariaDB, MySQL. Oracle’s MySQL documentation has a licensing notice that states:

» Continue Reading (about 300 words)