College Adventures in Open Source: Fraginator edition

Back in 2000, I had just finished my freshman year of college at Washington State University and was back at the best summer job you could possibly imagine: sales associate at the local OfficeMax (office supplies store). Now, by “best” I really mean “boring” but it wasn’t a bad job, especially for a 19 year old (at least I wasn’t flipping burgers, right?). Selling printer ink and paper wasn’t the best use of my time, but maybe there’s an analogy with Einstein working at the patent office (we can all dream).

Anyway, to pass the time I decided to see if I could write a fully professional-quality Windows utility from start to finish in just a few weeks. I had recently read an article by Mark Russinovich about the new Windows 2000 defragmentation APIs, and it had source code for a Contig command-line utility that would defragment 1 file. (Back then I remember there being some source code but I can’t find that now.) Using that information as a basis I decide to write my own disk defragmenter, because clearly a college sophomore knows how to do this stuff. It would have a GUI version (“Fraginator”) and a command-line version (unfrag.exe), full CHM documentation, and a mascot. I wrote it in some mangled form of Visual C++ 6.0 with STL, if I remember correctly.

“Defrag, baby!” The Fraginator was not joking around with your data (I was a bit goofier with my coding back then). The picture is actually stolen from Something Awful’s satirical Jeff K from one of his comics where he thinks he’s a buff super hero or something (warning: those links may not be safe for work, or even safe for life, but they are at least occasionally hilarious). Hopefully Lowtax won’t come after me for that.

I finished the project up, put it up with source code (GPL) on my podunk of a website (I think it was hosted at, a small Seattle ISP), and mostly just forgot about it…

… until last week when I searched around for it and discovered that the ReactOS guys had started to include it in the applications distro about, oh, 6 years ago. They had even converted it to Unicode and translated it to a dozen languages or so. I thought, hey that’s great, someone actually likes it and is maybe even using it! I certainly was not expecting to find anything of the sort.

I was browsing through their “new” source code tree for it and immediately found a relic in the dialog resource file, clearly from a goofier moment:

I think I had this label control in there for layout purposes only, as it clearly doesn’t show up in the UI when you boot it up. But wait, it gets better. They haven’t removed this (not a bad thing), and in fact they’ve translated it.

So there you go. “I am a monkey, here me eeK” in Norwegian (I think). If you scout around with a web search you should be able to find a bunch of other translations. The French one is probably the most romantic pick-up line you’ll ever find, and there’s no need to thank me for your next success at the bars.

The last timestamp on the Fraginator.exe sitting on my hard drive is from 2003 and it doesn’t seem to work on Windows 7 anymore, unless you use it on a FAT32 USB stick. I doubt it’ll even compile in Visual Studio 2010. Oh well Smile I’m glad the ReactOS guys are having use and fun with it. If you want the source, you’re better off checking out their copy of it. I don’t know if I even have a ZIP of that lying around anymore, and they’ve made decent improvements since then anyway.


Thank you, Akimset spam detector

One of the most popular plugins for WordPress blogs is the Akimset spam detector. Mine says it has found and squashed 93,860 spam posts since it was installed. I’m always amazed at what type of spam the robots try and sneak through every day.

Here’s a recent spam post:


Thanks for the comment! I’ll be sure to raise that issue with management the next time I see them.

LOLcats with Paint.NET: Stella needs a caption!

There was an article on Slashdot last week titled, “Alternatives to Adobe’s Creative Suite?” There was a good discussion about various alternatives to the various pieces of Creative Suite, and Paint.NET was mentioned numerous times. Every single mention was very positive! So, thank you Slashdot! You’ve come a long way since the December 2004 story titled, “Paint.NET: The Anti-GIMP?J

I particularly liked one of the comments by hkmarks (emphasis added by me):

“I just heard about Paint.NET a few weeks ago, and I now use it more than Photoshop. Photoshop has superior text capability (Paint.NET rasterizes text and leaves it uneditable) and a kajillion other features that make it indispensable for serious work, but Paint.NET is much faster for things like adjusting color levels, cropping and resizing photos. Or gluing captions to cats. It’s not a total replacement, but for some applications it might be enough.”

Apparently the crew behind I CAN HAS CHEEZEBURGER? are fans of Paint.NET too, as witnessed by the comment on another one of today’s posts:

cheezburger Says:
June 12th, 2007 at 3:46 pm

i uses when i needz quick captions!

This brings me to the main topic of “LOLcats”, as popularized by sites like that. In December I got a cat for Christmas and I named her Stella at the suggestion of my friend Emily (“she looks like a Stella!”). True to form, I took the following picture yesterday and glued a caption on it:

Quick story behind it: no, she didn’t eat the food, I did! She jumped up and started licking the wrapper that had leftover cheese on it, and I thought it was funny so I took a picture. No Stellas were harmed in the making of this LOLcat, she didn’t get a chance to snarf down too much of it.

I used Ed Harvey’s Fragment effect plugin to make the shadow behind the text. I typed the text in white, the duplicated the layer and used Adjustments -> Invert Colors on the bottom layer so that it would be colored black. Then I used the plugin on that layer, duplicated it several times to get the right amount of contrast, and then flattened the layers together with Merge Layer Down. (You’d think text effects would be built-in to Paint.NET … uh oh, am I foreshadowing future features again?)

Unfortunately, I can’t think of a good caption for the following picture, so maybe someone can help me out J

Here’s another one that’s ripe for tagging, maybe something like “Shh, I’m hunting wabbits!” :

And that concludes today’s necessary stupidity.