Just installed Ubuntu

I just installed Ubuntu (8.04), which I believe to basically be Debian with a nice interface.

There’s a neat utility called Wubi which handles the move from Windows to Ubuntu. It installs Ubuntu through Windows, handling partitioning, boot loader, and everything. It uses the Windows boot loader, adding Ubuntu as an option. It also shows up as an item in the “Uninstall Programs” menu, so you can get rid of it quickly — good if you’re just trying it out.

Right now I’m looking for a good virtual machine option. If I can dual boot into Windows from inside Ubuntu, I’m set! Any recommendations?

Drumming and the Bass Pedal

I’m slowly learning to play the drums. Right now I’m working on practicing syncopation, which is basically a technique of either playing a beat where there isn’t otherwise one, or not playing a beat where one should be. It seems to be what is used to mix up a beat somewhat so that it’s not so boring.

It’s a bit difficult to teach my feet to hit a beat that’s not there, so I was looking up some resources for bass pedal/foot positioning, to give myself the best chance possible. There is a good explanation and pictures on this generic-sounding domain. I believe that having the heel up is the way to go; I’ve seen it mentioned in a lot of places, and I can feel the difference.

I’m going to go and attempt to adjust the spring. I think it’s too loose.

Viagra spam filtering

My buddy Kevin saw my previous post on training Gmail to deliver only Viagra spam, as well as the part about how Pfizer must handle their spam filtering.

Being an enterprising person, he emailed Pfizer. Here’s their reply:

From: pfizer@pfizer.com
Date: April 15, 2008 12:53:23 PM EDT

Subject: RE:Email Validation

This email is sent by the Pfizer server. In order for us to

respond to your inquiry, we need to verify your email address.

Please complete this process by clicking on the link below.

Once you have completed this process, you will receive

a confirmation email


Thank you for contacting Pfizer.


A bit of a pain, but I can understand why. Good job.

Training Gmail: Sit. Stay. Good Gmail.

At the end of my presentation on Bayes’ Theorem at BarCampOrlando, there was some Q&A time.

I was asked a question about automatically training a spam filter, and I got into explaining how Bayesian filtering isn’t a “spam test” per-se. The simplest way to think about Bayesian filtering is that you sort email you’ve already received into two piles: email you don’t consider spam, and email you do consider spam. Then, through the magic of Bayes, new emails automatically get put in one of the two piles, based on which pile the new email most resembles.

Then I mentioned — as a bit of an oddity — that you could theoretically train Gmail to deliver nothing but Viagra spam to your Inbox. “Heh,” I thought, “that would be a neat trick.”

Hence: viagraspamtest@gmail.com

I’m trying to sign up for as many shady email newsletters and web forms as possible. I’m posting the email address here, as a fully-qualified mailto: link. Anything I can to start getting spam as fast as possible.  I’m planning on marking everything that mentions Viagra as “not spam”, even “1337-speak” emails like “V1agra”. Depending on how it goes, I hope to post results here.

(On a side note: I wonder how the IT dept at Pfizer handle spam. They must get a ton of false negatives for Viagra spam.)

BarCamp Came, BarCamp Saw, BarCamp was awesome.

It happened. BarCampOrlando 2008 is over, and it freakin’ rocked.

There were a lot of really good presentations. I took some notes and thoughts down, and I’ll probably do a followup post in a day or two with some notes. There were tons of awesome people, and I liked it even more than last year since it was much easier to socialize with these awesome people.

I also did do the presentation on Bayes’ Theorem. I think it went well — even though I barely remember the first 15 minutes. I was asked to do another presentation on the topic by a gentlemen (Chad?) for a sciencey-group he’s trying to put together in the area. To which, of course, I’m totally down with. I think I’ll rearrange the content somewhat, people seemed more interested at the end, when I was talking about the applications, rather than the intuitive explanation of it. So next time, I’ll start with selling people on the idea of why it’s awesome, then explain how it’s done.

And of course the afterparty by Izea, which I’m sure everyone will talk about. I know they were doing it because they wanted to encourage people to talk about them, and to hopefully find a few new people to help them in their world domination. :) But I was fairly impressed. They’ve got a nice office, and I talked to a lot of cool people who worked for Izea.

At the party I also talked with some recruiters, who told me that there is something like 2% unemployment among IT jobs right now. I’ve heard similar things from other people, and I’d say that it’s accurate. Actually, the fact that I was told this by a third party at a recruiting party for a company makes it seem all the more true.

BarCamp Orlando

It’s almost here! BarCamp Orlando 2008!

I’m thinking about doing a presentation on Bayesian probability. I’ve learned some stuff about it from the Loud3r project that I’ve been working on, and it’s pretty fascinating stuff. It’s a very elegant way of quickly computing the odds of something happening given a few basic pieces of information. I figure a short introduction to the concept is good, and it’ll give me something to talk about further with people if they are interested.

It’s hard to know what people might want to hear. Last BarCamp was so diverse on topics; people did things including geographical/topographical mapping, OpenID, open source robotics (Arduino), and the open source cell phone. I personally like it because it’s a good survey of interesting ideas — you can pick what’s interesting and learn more about it later.

So if you’re not going yet, sign up and check it out. It’s gonna be awesome.

Insert where not exists

If you want to insert values into a MySQL table, but only if those values don’t already exist, and you don’t want to use a primary key on the table (and deal with the resulting error suppression ), here’s an elegant one-query method of doing so.

INSERT INTO [table name] SELECT '[value1]', '[value2]' FROM DUAL
    SELECT [column1] FROM [same table name]
    WHERE [column1]='[value1]'
    AND [column2]='[value2]' LIMIT 1

OK, technically it’s not a single query. But it is only one round trip to the MySQL server.

Hat tip to Matt Mongeau