Is soliciting a review commercial or transactional?

I’ve booked rooms through a few times, and they always send me followup emails asking me to rate the stay and so forth. In my view this is commercial/marketing email, not transactional, and I should be able to opt out of it. I don’t want to get the emails and I don’t want to rate the hotels, in part because I don’t believe in the validity of such ratings/reviews (reference, reference).

» Continue Reading (about 600 words)

Continuous integration and deployment

I’ve been talking to some smart people about deployment. First a little background. One of my colleagues was working on a project that ultimately didn’t bear fruit. It was a system for continuous delivery, and involved reacting to git push by building and shipping to production. But it felt as if the problem shouldn’t be separated from provisioning, and from setting up a development environment, and so these things got folded in, and the effort became a boil-the-ocean project that had to be set aside.

» Continue Reading (about 1200 words)

More Notebooks and Journals!

Something interesting happened after I published my ultimate notebook and journal face-off blog post a couple of months ago. I received an email from a company called Grandluxe, asking if I’d like to receive some stationery products in hopes that if I liked them, I’d write a review on them. I had never heard of them before, but they’ve been making paper products for 68 years, and apparently are trying to break out of the Asian market into international territory.

» Continue Reading (about 600 words)

Early-Warning Is an Unknown Unknown

This post originally appeared on O’Reilly Radar. In 2002, US Secretary of State Donald Rumsfeld told a reporter that not only don’t we know everything important, but sometimes we don’t even know what knowledge we lack: There are known knowns; there are things we know we know. We also know there are known unknowns; that is to say we know there are some things we do not know. But there are also unknown unknowns – the ones we don’t know we don’t know.

» Continue Reading (about 1700 words)

MySQL isn't limited to nested-loop joins

I have followed the “Use the Index, Luke!” blog for a while. Today Marcus wrote that (I’ll paraphrase) MongoDB disgraces NoSQL the same way that MySQL disgraces SQL. I agree with a lot of this, actually, although I’m not sure I’d put it so strongly. People often like products for good reasons, and to think that legions of developers are stupid or ill-educated is suspect, in my opinion. But that wasn’t what I meant to write about.

» Continue Reading (about 500 words)

It happened again

Oracle released a bunch of MySQL stuff they’ve been working on since the last huge release, and my blog reader filled up with a few dozen posts I’m gonna have to read through so I don’t feel ignorant. Dear MySQL Engineering Team, could you take pity on me and release these gradually over the course of a month or so next time? Especially since Google discontinued Reader, and I’m using Feedly now, and it has a bug that I can’t figure out how to report, which result in articles being marked as read when I scroll, which makes me feel super-paranoid-insecure that I’m gonna miss an article that I scrolled over without having read yet.

» Continue Reading (about 200 words)

Sending the query to the data

It’s common wisdom that large-scale database systems require distributing the data across machines. But what seems to be missing in a lot of discussions is distributing the query processing too. By this I mean the actual computation that’s performed on the data. I just had a conversation with Peter Zaitsev yesterday that helped make concrete some thoughts I’ve been having about Cassandra for a while. Because Cassandra doesn’t allow you to really do any computation in the data (aggregating, evaluating expressions, and so on), if you’re going to use it for truly Big data, you’re going to fetch enormous amounts of data across the network.

» Continue Reading (about 500 words)

Features I'd like in MySQL: windowing functions

Continuing with my wishlist, I’ll add windowing functions. They’re enormously powerful. They allow you to extend relational logic beyond the strict boundaries of tuples. In MySQL at present, one must use ugly hacks to preserve state from one row to the next, such as user variables – which are not guaranteed to work if the optimizer changes the query plan. And yeah, PostgreSQL and SQL Server have windowing functions too, and once you’ve used them it’s a little hard to go back.

» Continue Reading (about 200 words)

Features I'd like to see in MySQL: CTEs

The pace of MySQL engineering has been pretty brisk for the last few years. I think that most of the credit is due to Oracle, but one should not ignore Percona, Monty Program, Facebook, Google, Twitter, and others. Not only are these organizations (and the individuals I haven’t mentioned) innovating a lot, they’re providing pressure on Oracle to keep up the improvements, too. But if you look back over the last few years, MySQL is still functionally a lot like it used to be.

» Continue Reading (about 300 words)

Can TokuDB replace partitioning?

I’ve been considering using TokuDB for a large dataset, primarily because of its high compression. The data is append-only, never updated, rarely read, and purged after a configurable time. I use partitions to drop old data a day at a time. It’s much more efficient than deleting rows, and it lets me avoid indexing the data on the time dimension. Partitioning serves as a crude form of indexing, as well as helping purge old data.

» Continue Reading (about 300 words)

Free talk on MySQL and Go at Percona MySQL University DC

If you’re in the Washington, DC area on Sept 12th, be sure to attend Percona University. This is a free 1-day mini-conference to bring developers and system architects up to speed on the latest MySQL products, services and technologies. Some of the topics being covered include Continuent Tungsten; Percona XtraDB Cluster; MySQL Backups in the Real World; MariaDB 10.0; MySQL 5.6 and Percona Server 5.6; Apache Hadoop. I’ll be speaking about using MySQL with Go.

» Continue Reading (about 200 words)

Speaking at Percona University Sept 12th

I’ll be joining Percona for a free day of MySQL education and insight at their upcoming Percona University Washington DC event on September 12th. My topic is accessing MySQL from Google’s Go programming language. I’ve learned a lot about this over the past year or so, and hopefully I can help you get a quick-start. If you’re not familiar with Go, it’s the darling of the Hacker News crowd these days.

» Continue Reading (about 300 words)

Speaking at Strata NYC: Making Big Data Small

I’m off to my first Strata conference, and I’m speaking! I’ve always wanted to attend Strata. (OSCON too, but I haven’t yet made it there.) My session will be about ways to make big data small, in both the storage and processing dimensions, without losing much of the value. If you’re familiar with Bloom Filters, this is an example. Bloom Filters let you answer the question, Is value X a member of this data set?

» Continue Reading (about 200 words)

Using encryption? You're suspicious

Yesterday more details on the NSA’s secret and illegal monitoring activities were revealed. (Yes, the NSA revealed some things themselves, but as far as I can tell, that was only a conciliatory effort and didn’t actually reveal more details – just more talk.) Remember my recent series of blog posts, where I claimed that privacy in today’s world is impossible without trustworthy hardware/software, privacy is impossible unless it’s default, and privacy is essentially unachievable because of the scope of the problem, and the way we’ve built our society and technologies?

» Continue Reading (about 400 words)

Email snooping is a small fraction of the story

I wrote previously about why privacy and security require open-source, inspectable hardware and software to run on, and software that makes encryption the default so everyone uses it. My example application was email, and I concluded that it’s currently impractical to think that we can block government snooping on a large scale even in the domain of email. Now, think what a small fraction of people’s Internet-connected activities we’re talking about: email.

» Continue Reading (about 700 words)

The Ultimate Notebook

If you’re like me, you spend so much time typing on a computer that a good notebook or journal is one of life’s finer pleasures. I’ve kept a diary of my personal life for close to 30 years now, and I have a shelf full of journals. I’ve found a great many that I enjoy writing in, and choosing a different one each time is part of the fun.

But thus far, my quest for a notepad has been unsatisfying. Many notepads have loved me, but I’m sorry to say their love has been unrequited. I’ve tried all the usual things: Moleskine, loose-leaf paper, binders, what have you. But I never found something that is practical, functional, a joy to write on, and a pleasure to look at and hold. I just can’t settle into a long-term relationship with my notebook, because I haven’t met The Right One yet.


» Continue Reading (about 4300 words)

Privacy is impossible unless it's the default

This is a follow-up to my last post, in which I asserted that without free software and hardware, privacy is impossible. Suppose we have trustworthy, free hardware and software. What else is needed to thwart efforts to monitor our everyday behavior on a massive scale? Let’s look only at one activity that’s currently being monitored: email. How can we make email less vulnerable to prying eyes? Technology to encrypt email between ordinary citizens (PGP, OpenPGP, and GnuPG) has existed for years, and in a form strong enough to frustrate any known attempts at decryption.

» Continue Reading (about 900 words)

Without free software and hardware, privacy is impossible

The recent revelations about the NSA’s wide-ranging surveillance of Americans and non-Americans alike has spurred a lot of outcry. Of course, some people are crying for legal solutions, but there’s absolutely no chance of any present or future elected official changing or stopping it (it’s already completely illegal and always has been, so more laws can do nothing but poke loopholes in existing laws forbidding surveillance). We’re on a road that leads to only one place: total, absolute government monitoring of everything we do – and thus, to some extent, control of everything we do.

» Continue Reading (about 600 words)

My recipe for more enjoyable presentations

Since I started making my presentations more beautiful, people have often asked me my secret. It’s not a secret, and it’s really quite simple to do. First, realize that it’s not about you. It’s about your audience. Now, get and read a few good books on presentations. Your presentations, and your presentation skills, need to be good. You can’t just make things beautiful to compensate for badness in other areas. This is something I’m always working on.

» Continue Reading (about 400 words)

Eliminating duplicate users in MySQL

This is hypothetical. What would happen if I did the following? alter table mysql.user add unique key(User); I’m tossing this out there for people to think about because I’ve always thought that MySQL’s authentication model is a nuisance: MySQL considers both your host name and user name in identifying you because there is no reason to assume that a given user name belongs to the same person on all hosts. For example, the user joe who connects from need not be the same person as the user joe who connects from

» Continue Reading (about 300 words)