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 office.example.com need not be the same person as the user joe who connects from home.example.com.

» Continue Reading (about 300 words)

Quantifying Abnormal Behavior in System Metrics

I’ve posted slides for my Velocity talk on VividCortex’s blog. The talk explained how we use exponentially weighted moving statistics to generate a meta-metric of abnormality for the time-series metrics measured from MySQL. That’s kind of a mouthful. Maybe you had to be there :-)

» Continue Reading (about 100 words)

Djancocon 2013 call for papers open

Are you a Django user? There’s an upcoming Django conference in Chicago in a few months, and I know they’re looking for speakers with MySQL experience in particular. One suggestion the organizers have floated is a talk on MySQL: I’m looking for someone to give at least one MySQL talk there. In particular, I would love a (friendly but vigorous) “Why you should use MySQL instead of PostgreSQL talk”, as PostgreSQL tends to get a lot of love and attention at Django events, and MySQL not so much.

» Continue Reading (about 200 words)

The moment I first held my newborn daughter in my arms

This is a personal post, not a technical one. We tell ourselves a lot of lies that are not okay. I want to out one of them. It is important to be real, to be true to oneself. This matters. The lie starts something like this: the moment I held my newborn child in my arms, I looked into her tiny face and felt an all-encompassing, pure love. I was breathless.

» Continue Reading (about 700 words)

A great talk on Go concurrency patterns

This 35-minute video from the recent Google I/O conference explains how to use Go’s concurrency primitives – goroutines, channels, and the select statement – to do things elegantly, correctly, and safely in a few lines of Go, which would otherwise turn your brain into a pretzel in most programming languages. My favorite thing about Go is that a good Go program looks self-evident and obvious, even when it may be doing things that would be insanely complex in another language.

» Continue Reading (about 300 words)

Agile project management tools

Wow, talk about an industry that’s overcrowded with look-alike me-too products. Online agile project management tools are a dime a dozen, which makes me think that they are probably all very similar and probably don’t solve most people’s needs. I’ve observed that when this is true, nearly-indistinguishable tools get reinvented, until the burden of evaluating the options is greater than the burden of just building yet another one, thus perpetuating the cycle.

» Continue Reading (about 200 words)

Why building a free service can be a disservice

Like many others, I don’t think that RSS is dead. It’s my favorite way to keep up with highly valuable content on the Web. So I’m in the market for a replacement for Google Reader, along with millions of others. As I’ve evaluated options, I’ve had to eliminate some of them because I’m not sure they’re serious about what they’re doing. This post is about my thought process and why I think entrepreneurs should challenge themselves to get serious, and signal that intent, by not building free services.

» Continue Reading (about 1500 words)

What's the lesson from daily deals sites?

I found myself in a, ahem, lively discussion with someone recently. It started when I said “there was always something wrong about the daily deals businesses (i.e. Groupon), but I’m sure they’ll teach us what’s really needed.” Turns out this person ran a local daily-deals site. Oops. My feeling is that anytime something doesn’t take root and grow into a lasting business, there’s a lesson to learn. Early social-networking sites weren’t quite a match with needs.

» Continue Reading (about 1000 words)

The difference between concurrency and parallelism

This confuses lots of people, including most recently Todd Hoff of HighScalability fame, who wrote in last week’s summary post, Have to say, this distinction has never made sense to me: Concurrency is not parallelism: concurrency is the composition of independently executing processes, while parallelism is the simultaneous execution of (possibly related) computations. Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once.

» Continue Reading (about 200 words)

What TokuDB might mean for MongoDB

Last week Tokutek announced that they’re open-sourcing their TokuDB storage engine for MySQL. If you’re not familiar with TokuDB, it’s an ACID-compliant storage engine with a high-performance index technology known as fractal tree indexing. Fractal trees have a number of nice characteristics, but perhaps the most interesting is that they deliver consistently high performance under varying conditions, such as when data grows much larger than memory or is updated frequently. B-tree indexes tend to get fragmented over time, and exhibit a performance cliff when data doesn’t fit in memory anymore.

» Continue Reading (about 1700 words)

MySQL's release process works

Years ago I complained bitterly about MySQL’s backwards development and release model, which made guinea pigs out of the paying customers. I think I’d be remiss if I didn’t say it’s been fixed for years. And it’s really fixed right in my opinion – much better than what I proposed. Congratulations, and thanks, to the MySQL team for superhuman software engineering, release engineering, documentation, bug triage and analysis, and doing a million things right – in other words, making a damn good database, which is hard.

» Continue Reading (about 200 words)

Introduction to VividCortex

We’re ironing out a kink that’s preventing Planet MySQL from aggregating VividCortex’s blog feed, so while that’s in progress, I’ll post a quick note on what we’re up to at VividCortex, for the Planet MySQL readers. VividCortex is a monitoring and analysis product for MySQL, provided as Software-As-A-Service, with agents that run in your systems and report back to our APIs. The agents are super-efficient and non-obtrusive (you’ve probably noticed my posts about Go recently).

» Continue Reading (about 300 words)

Model-view-controller considered harmful

In 2001 I created a PHP 4 web application framework from scratch as the backbone of a sophisticated application. Back then frameworks weren’t cool. Smarty templates were the hotness. My framework had URL routing, templates with a capable templating syntax similar to mustache, loosely coupled and tightly cohesive object-oriented design, an elegant way to access the database without dumbing it down, and nicely separated business logic and presentation layers – among many other nice things you find in good frameworks.

» Continue Reading (about 700 words)

Two upcoming Go-related talks I'm giving

I’m scheduled to talk about Go a couple times in the upcoming weeks. The first is May 4th in Arlington at A Day Of Foster.ly. I’ll be a participant in a panel titled Add To Your Programming Toolkit: Languages You Should Know About (Erlang, Clojure, R, Go, etc…). I’m talking about Go, naturally. The second May 7th is at my local technology guild, the Neon Guild. I’m going to be giving a “gentle introduction” to Go.

» Continue Reading (about 300 words)

Using AdBlock to clean up the UI on sites I use a lot

I use LinkedIn a lot. I also use various Google properties a lot. Both of them have a bunch of distracting and annoying UI features that just get in my way. I know Google and LinkedIn have a vested interest in catching my attention and trying to get me to use their products in the ways that will make them the most money, but as a user, I don’t care what they want.

» Continue Reading (about 600 words)

Percona Live MySQL Conference in a few weeks!

I’m really looking forward to Percona Live this year. I will be there, along with Kyle Redinger, my co-founder at VividCortex. I feel that this year the conference has come full circle. 2007 was my first year at the conference, and it was amazing. This year is tremendously exciting for me because it feels like we’re back on the 2007 trajectory. Those were the golden days. Things were a little sad in 2010 and 2011 as the MySQL community tried to figure out the new landscape and O’Reilly decided to stop running the event, but then in 2012 we all said “we’re back!” with the exception of Oracle, who instead arranged MySQL Connect, as part of Oracle Open World.

» Continue Reading (about 500 words)

New translations of High Performance MySQL

High Performance MySQL, 3rd Edition has been selling very well. It’s translated into many languages. O’Reilly sends me a hard-copy of the translations, and I have a whole section on my bookshelf dedicated to them. It’s really satisfying to look at it. Today I’m happy to announce that we’re moving forward with a new batch of translations. Demand has been so strong that we want to make the book accessible to as wide an audience as possible.

» Continue Reading (about 500 words)

A review of Republic Wireless's cellphone service

I’ve been trying out Republic Wireless, a startup that offers very inexpensive wireless service: $19 for unlimited talk, text, and data. In a nutshell: they resell Sprint’s network, and you agree to connect to wifi as much as possible; they use the Internet instead of the cell network when you’re on wifi. I thought for $19/month it wouldn’t hurt to give it a try. After several months, my experience has been that it isn’t worth using at all, no matter how cheap it is.

» Continue Reading (about 600 words)