The current state of the art in comment spam

Write, geek! gets a fair amount of spam replies. This sur­prised me at first, when it began hap­pen­ing almost imme­di­ate­ly after the blog was set up and con­tent was post­ed. I should have known bet­ter; there’s almost no cost to spam­mers in spam­ming even unpop­u­lar blogs, so why would they make an excep­tion for mine?

I’m using the Akismet plu­g­in for Word­Press, so it’s not like any of these com­ments actu­al­ly make it to my blog. In fact, I’d nev­er even have to see them, if not for the fact that I reg­u­lar­ly clean these com­ments out of my spam fold­er by hand. I do this part­ly to ensure that noth­ing legit­i­mate gets fil­tered incor­rect­ly (which hap­pens some­times) and part­ly because I like to sort of keep tabs on the cur­rent ‘state of the art’ in spamming.

The cur­rent state of the art in spam­ming is this: the com­ments are get­ting bet­ter. No longer are com­ments jam-packed with dozens of links com­mon­place (one par­tic­u­lar default Word­Press set­ting prob­a­bly made those almost 100% inef­fec­tive), but they’ve been large­ly replaced with com­ments that mas­quer­ade as… actu­al comments!

The idea of noise dis­guised as sig­nal is noth­ing new if you’ve used e‑mail in the last 15 years, but that the noise is get­ting bet­ter (read: more dif­fi­cult for humans to detect) is some­what sur­pris­ing. Of course, these com­ments are no match for a large, dis­trib­uted sys­tem like Akismet, which all-knowingly sees what’s being post­ed to prob­a­bly mil­lions of blogs, but the well-disguised, large­ly pseudo-flattering com­ments are prob­a­bly now designed to get human blog authors to click the “Not Spam” but­ton, free­ing them the com­ments the spam box so that they can do their SEO-based dirty work.

Of course, gen­tle read­ers, I’m far too smart to fall for that, but not so blind­ed by my hatred for spam to be unable to appre­ci­ate a well-crafted work of author­ship, like this one I just found:

Spam that reads "Excellent read, I just passed this onto a colleague who was doing a little research on that. And he actually bought me lunch because I found it for him smile So let me rephrase that: Thanks for lunch!"

Sure, it’s not per­fect, but some­one out there put some mod­icum of thought into it, which is the least you could ask of the author of a work that’s going to be dis­trib­uted on a mas­sive scale.

Plus, it’s a lot bet­ter than this anti-gem I also just found:

Spam that reads "Why jesus allows this sort of thing to continue is a mystery"

Can you get more unin­ten­tion­al­ly self-referential than that? (No, you can­not… and yes, that was a challenge.)

How to transfer photos from a Game Boy Camera to a computer (in Linux)

A few days ago, I found a Flickr group thread that was prac­ti­cal­ly beg­ging for my input. It read some­thing like “Hey Everett, you’re sur­pris­ing­ly enough not the only per­son out there with these two inter­ests (one obscure and the oth­er semi-so). Would you be will­ing to help out quite pos­si­bly the only oth­er per­son in the world who cares about these things?”

Not only was I like, “Heck  yeah!,” but I decid­ed that this was wor­thy of blog­ging, in case a third indi­vid­ual hap­pens to devel­op these inter­ests. (If this is you, welcome!)

So, in case you find your­self want­i­ng to get crap­py pho­tos—a term I use most affec­tion­ate­ly — like these:

off of one of these:

red Game Boy Camera

and you use Linux:

(I kid!)

…like I do, read on.

The hard­ware I’m using to down­load pho­tos over USB is Smart­Boy USB car­tridge read­er (which is made by these peo­ple). And there just so hap­pens to be a great open-source pro­gram for facil­i­tat­ing this task using this device (or a sim­i­lar car­tridge read­er): gbcflsh.

So what’s the prob­lem? gbcflsh is only dis­trib­uted as source, and the source fails to com­pile under recent releas­es of Ubun­tu. I con­tact­ed the devel­op­ers of gbcflsh, and one gave me some sug­ges­tions for fix­ing the source code. They have yet to pub­lish the fixed source, so I’ll doc­u­ment how I got it to compile.

(If you don’t care about this, just grab the bina­ry I made: gbcflsh 32-bit, md5sum: 85b185706c3d5fe45b7787787f8510bd; gbcflsh 64-bit, md5sum: 4326e08fcfb5be39004c290df2a71988)

  1. Down­load and extract the source code.
  2. Install the fol­low­ing packages:
    gcc 4.3.3, qt4-dev-tools, libftdi-dev 
  3. Focus on the fol­low­ing files:
    src/Logic.cpp
    src/ReadFlashThread.cpp
    src/ReadRamThread.cpp
    src/WriteFlashThread.cpp
    src/WriteRamThread.cpp
  4. Add the fol­low­ing to the bot­tom of the #include sec­tion of each file:
    #include <cst­dio>
  5. That’s it! Com­pile it like you already know how to do (which I won’t get into here).

gbcflshWhen you run gbcflsh (you’ll need to do so as root, by the way), it’ll look a lit­tle bit like what you see to the right. Select the vis­i­ble options (USB, Auto, Ram: 128 KB) and click “Read RAM.”

If all goes well, you’ll end up with the con­tents of your cam­er­a’s RAM in the form of a .sav file. Great! The hard part is behind us, but we’re not quite done yet.

Next, you’ll need a pro­gram that will extract pho­tos from the save file. I believe there are a few, but they all seem to be for Win­dows. For­tu­nate­ly, the one I use works per­fect­ly under Wine. gbcameradumpIt’s called GBCameraDump.exe, and it can cur­rent­ly be found here. Down­load it, run it via Wine and select the .sav file you got from gbcflsh. You’ll have some­thing that looks like this screen­shot (except hope­ful­ly with bet­ter photos).

I would also advise you to — if this sort of thing mat­ters to you — check the order of the saved images. They’re like­ly to be out of order due to, it seems, the way Nin­ten­do decid­ed to han­dle the sav­ing of images to the car­tridge. (Also, you’re like­ly to find some pho­tos you thought were delet­ed, which may come as a surprise.)

So there you have it: how to get pho­tos off of this cam­era of the past, using the oper­at­ing sys­tem of the (sigh) future.

Upgraded to WordPress 3.0

The old adage (which I think I made up) about spend­ing more time geek­ing around with a Word­Press instal­la­tion than actu­al­ly writ­ing in the damned blog holds true, ladies and gentlemen.

I just fin­ished upgrad­ing this fine blog to the newly-stable Word­Press 3.0.

In case you were won­der­ing and/or sit­ting on the edge of your seats, I took great care to:

  1. Dis­able all of my plu­g­ins
  2. Dump a copy of my Word­Press MySQL data­base using the aptly-titled mysqldump
  3. tar a copy of my Word­Press directory
  4. Do the upgrade!
  5. Re-enable the plu­g­ins one-by-one, mak­ing sure each works (or at least does­n’t break anything)

While I know not every­one is so lucky, I’m glad to see that every­thing appears to work here, because I’d be death­ly embar­rassed if, you know, Google or Bing’s webcrawler came by and things weren’t look­ing up to my usu­al standards.

Fine wine games

There is a cer­tain class of video game whose exis­tence I’ve been slow­ly dis­cov­er­ing over the last few years. Let’s call these fine wine games.

My idea of a fine wine game1 is one that is best expe­ri­enced a bit at a time. You know, enjoyed in mod­er­a­tion. The kind you only pick up and play every once in a while… because it’s just that good.

Does that sound counter-intuitive? Why would you want to take it so slow­ly with some­thing so great? Well, here’s oth­er side of the coin: this sort of game also has an ele­ment of rar­i­ty, or scarci­ty to it. It’s not the sort of game that prints mon­ey, sell­ing mil­lions of copies, so the chances of a sequel being made aren’t very good.

So enjoy the game itself. Savor it as you go. Don’t cry because there won’t be a sequel; think of how lucky you are to play it in the first place! Wring every drop of enjoy­ment from the expe­ri­ence that you can.

Here are a few games you’ll find in my cask:

Zack & Wiki (Nin­ten­do Wii) The orig­i­nal fine wine game in my book. Crit­i­cal­ly acclaimed; sold quite poor­ly. Chance of sequel? Slim-to-none. Thus, I decid­ed that I’d only play Zack & Wiki sparingly.

With save dates as my basis, I’d esti­mate that I would pick it up every cou­ple of months, play for a day or two (enough time to strug­gle through my cur­rent lev­el feel­ing like the world’s biggest moron until final­ly feel­ing like the world’s great­est genius, which is what this game does to you). And then, back on the shelf it would go, to wait for the next time I’m in the mood for savory gam­ing greatness.

Thus, despite hav­ing bought this game in 2008, I only com­plet­ed it this past week­end. $40 so very, very well spent.

Soul Bub­bles (Nin­ten­do DS) While I bought my copy from an Ama­zon Mar­ket­place sell­er, this game was released in the U.S. as a Toys R Us-exclusive title. If this arti­fi­cial­ly lim­it­ed its audi­ence, that’s sim­ply unfor­tu­nate, because this is a beau­ti­ful game… one that I tend to for­get all about for months on end before redis­cov­er­ing it anew every time.

I’ve been tak­ing my time with Soul Bub­bles, and have more than half of it (read: years of enjoy­ment) left to go!

Mother/EarthBound series (Nin­ten­do NES/SNES/GBA) Enough has been writ­ten about this series of quirky, rather un-RPG-like RPGs, which have attract­ed a cult-like fol­low­ing. Thus, I’ll offer only this quick assess­ment: the fact that English-speaking gamers have the oppor­tu­ni­ty to play any of the three games should be enough to make a fan thank their lucky stars.

While it could be said that three games released over the course of fif­teen years effec­tive­ly nul­li­fies any sup­posed rar­i­ty… hey, you know what? Fuck you. Nin­ten­do trans­lat­ed Moth­er and then prompt­ly shelved the Eng­lish ver­sion, Moth­er 2 (Earth­Bound) received one stinker of a U.S. mar­ket­ing cam­paign, and the Eng­lish trans­la­tion of Moth­er 3 had to be under­tak­en by a team of incred­i­bly devot­ed fans.

Moth­er games in Eng­lish are some mighty fine wine.

Cave Sto­ry (Win­dows, Wii­Ware, et al.) Cave Sto­ry is the work of one ded­i­cat­ed ama­teur over the course of five years… work that was sim­ply giv­en away for free as a Win­dows game, and lat­er port­ed to a hand­ful of pop­u­lar plat­forms by fans.

I start­ed Cave Sto­ry a few times over the years, but the lack­lus­ter Lin­ux port kept putting me off of it; I knew I should wait for a good port to be avail­able for a plat­form I use. The Wii­Ware ver­sion was released a few months back, and the rest is his­to­ry. After years of antic­i­pa­tion, I swilled this one down in a decid­ed­ly non-fine-wine manner.

Whoops.

Whether games or oth­er media, what do you con­sid­er to be your fine wine?

https://writegeek.com/wp-content/uploads/2010/06/prints_money.gifpr

  1. Ini­tial­ly, the idea I had was that a game of this sort (it was Zack & Wiki that brought this to mind) would be enjoy­able to play quite lit­er­al­ly with a glass of wine, as this is the sort of game that would be best enjoyed at a relax­ing pace, in a chill atmos­phere. But last week­end, I instead start­ed think­ing of these games metaphor­i­cal­ly; the game itself is the wine. I liked that thought, and knew I had to write this post.[]

How Windows ate my EXIF data (and how I mostly fixed it)

The background

As we’ve already estab­lished, I love to take pho­tos, and I have a strong bias toward dig­i­tal. While I received my first dig­i­tal cam­era (the afore­men­tioned Game Boy Cam­era) on my birth­day in 2000, it was­n’t until the fol­low­ing sum­mer that I got my first “real” digi­cam, a Nikon Coolpix 775.

From there, the flood of dig­i­tal pho­tos began. Ini­tial­ly, I just dumped every pho­to into a sin­gle fold­er on my shiny, new, gonna-help-me-do-well-in-college-this-fall lap­top, and let their sequen­tial file­names (DSCN0001.JPG, 0002, etc.) do the “sort­ing.”

This worked for a while, until it became clear that hav­ing all of my pho­tos in one fold­er was poor for both orga­ni­za­tion and per­for­mance, so I start­ed orga­niz­ing my pho­tos using dat­ed sub­fold­ers (e.g. photos/2001/2001 – 08-12/). This was all the orga­ni­za­tion I did for my pho­tos, and was also how  I viewed them, up until I began using pho­to man­ag­ing soft­ware (first Picasa on Win­dows, lat­er F‑Spot under Ubuntu).

The problem

While these apps excel at tak­ing pho­tos and turn­ing them into a well-organized stream based on date tak­en, I noticed that a small hand­ful of pho­tos were out-of-place in the time­line.1

After spend­ing some time puz­zled by this, it occurred to me that:

  1. none of these pho­tos had EXIF data
  2. all of these were tak­en in 2001
  3. all of these had been tak­en in “por­trait” mode (when you turn the cam­era side­ways), as opposed to “land­scape”

In an exam­ple of clear­ly mis­guid­ed, youth­ful indis­cre­tion, I had man­u­al­ly rotat­ed these pho­tos — remem­ber, cam­eras did­n’t have ori­en­ta­tion sen­sors back then — using Win­dows Pic­ture & Fax View­er (Win­dows ME/XP’s default), and it ate my pho­tos’ EXIF data! From then on, I start­ed using the cam­er­a’s built-in rotate functionality.

But, ugh, I still had a bunch of old, messed up pho­tos. For­tu­nate­ly, I was­n’t total­ly in the dark about these pho­tos’ chronol­o­gy, as I knew the cor­rect dates that these pho­tos were tak­en, thanks to the sur­round­ing sequen­tial pho­tos still hav­ing their EXIF data.

The solution

For the last few years, I let these few pho­tos just be, annoyed that they would always show up in the wrong places. So today, I final­ly did some­thing about this: I gave them new EXIF data using the best infor­ma­tion I had at my disposal.

While I did­n’t know the pre­cise time tak­en, I did have dates for these pho­tos, so I fig­ured giv­ing them EXIF with the right date and wrong time was bet­ter than no date at all. I accom­plished this using a pair of Lin­ux pro­grams: jhead and touch. Here’s how:

First, I cre­at­ed an EXIF tag for a giv­en pho­to using jhead:

$ jhead -mkexif DSCN1282.JPG

Then, I touched the file (in Unix‑y par­lance, change the file’s “mod­i­fied” time­stamp) to mid­night (00:00:00) on the appro­pri­ate date (e.g. August 122001):

$ touch -t 200108120000.00 DSCN1228.JPG

Final­ly, I used jhead to change the file’s EXIF time­stamp to the newly-fixed mod­i­fied date:

$ jhead -dsft DSCN1282.JPG

Hav­ing re-added the prob­lem images to my F‑Spot library, the pho­tos now appear more-or-less in the place they should. They’re now good enough that I’ll nev­er again have to see those pho­tos mixed in with the wrong year!


  1. I know what you’re think­ing: that there were times when I for­got to set the date on my cam­era. Nope. No way. I nev­er for­get to set the date on my cam­era, because mak­ing sure my pho­tos have the cor­rect date and time is some­thing that I’m a bit obses­sive about, and the first thing I do after charg­ing my cam­er­a’s bat­tery is always check the date.[]

Warmth, fuzz at 60 MPH

Last Fri­day evening I was alone, dri­ving south on one of South Flori­da’s fine express­ways, when I had the strangest moment of, for lack of a bet­ter term, empathy.

(This is notable because the word with which I would expect myself to have end­ed that sen­tence is “con­tempt.”)

The dri­ver in front of me, pilot­ing a Mit­subishi that was either sil­ver or gold (dif­fi­cult to tell which in the half-light of the express­way’s over­heard street­lights), was­n’t dri­ving at a pace that was to my lik­ing, so I decid­ed I would pass them. I engaged my turn sig­nal and began merg­ing over to the next lane. They must have sensed, from the amount of time I had spent behind them, that they were not dri­ving at a pace that was to my lik­ing, so at the exact moment I start­ed mov­ing over, they too start­ed mov­ing over in the same direc­tion I was. (Of course, they did so with­out sig­nal­ing,1 which is the South Flori­da Stan­dard.) Just as simul­ta­ne­ous­ly as we began them, we abort­ed our lane changes, as we each noticed the oth­er’s attempt.

It was at this moment that I felt a warm, fuzzy feel­ing, the likes of which I almost nev­er expe­ri­ence while dri­ving down here. In that moment, I became quite aware that there was a per­son dri­ving that Mit­subishi. It’s easy to for­get that the oth­er cars on the road are dri­ven by peo­ple, espe­cial­ly at night when it’s not so easy to see them through their win­dows. But in that dri­ver’s moment of obvi­ous self-correction, it could not be clearer.

Also, I will not let it go unsaid: the events that unfold­ed made it clear that the per­son in front of me actu­al­ly looked in their mir­ror before attempt­ing to change lanes! Their care­ful con­sid­er­a­tion only makes me aware that they were at least a bit like me.

Around here, that’s say­ing something.


  1. That’s fine, real­ly. Had they sig­naled and done the oth­er not­ed things, I would not be writ­ing this post, because I would have died that night, from some sort of shock.[]

It’s fear, mostly.

Inc. Mag­a­zine: Why Is Busi­ness Writ­ing So Awful?

When you write like every­one else and sound like every­one else and act like every­one else, you’re say­ing, “Our prod­ucts are like every­one else’s, too.” Or think of it this way: Would you go to a din­ner par­ty and just repeat what the per­son to the right of you is say­ing all night long? Would that be inter­est­ing to any­body? So why are so many busi­ness­es say­ing the same things at the biggest par­ty on the plan­et —  the marketplace?

Fear, most­ly.

(via Ryan)