I was downloading Fedora 8 yesterday with every intention of (eventually) upgrading Demeter, our Linux box, currently running Fedora Core 5. I say “eventually” because finding time to back everything up, install the new OS, restore all the files and third-party apps, and then spend hours debugging what went wrong is the hardest part of the whole process.
Anyhoo, I thought I’d put good ol’ WinHasher to use to verify the SHA-1 hash and make sure the download was successful. That was, after all, the primary reason I wrote the thing. But then I noticed something incredibly annoying. The DVD ISO for Fedora 8 weighs in at around 3.18GB. WinHasher has no problems hashing such a file as it hashes the file stream as it reads it, so it can hash any file of arbitrary size. But while it’s doing so, there’s absolutely no feedback to the user. In fact, if you use the right-click “Send To” shortcut, unless you go into the Windows Task Manager and check the process list, you won’t even know the thing is running. It seems to go off into la-la land until mysteriously, a minute or two later, it comes back with a mysterious pop-up box with a cryptographic hash in it.
Bad programmer! Bad!
Well, this annoyed me enough to fix it, so I’ve tweaked it now so it actually runs multi-threaded. This is ridiculously easy to do when you use the System.ComponentModel.BackgroundWorker object in .NET. You just create the object, create a few event handlers for it, and tell it to go do its thing. The hardest part is if you want it to report its progress; then you have to tweak your working code to generate a percentage complete so it has something to display. I learned this trick when I was working on Mandelbrot Madness! 2.0; I have no idea why it never occurred to me to incorporate it here. The annoying part about this addition, though, is that there’s no way to report on the progress of an individual hash. System.Security.Cryptography.HashAlgorithm doesn’t provide a way for you to know how far it’s gone, so there’s nothing to feed to BackgroundWorker.ReportProgress(). The comparison feature does, however, let you know how many of the files have been processed so far in the batch.
So if you’re one of the few brave souls who downloaded WinHasher 1.0, please grab 1.1 at the official site. It officially goes up tomorrow (a delay caused by Keenspot‘s parsing to insert the advertising codes). If you haven’t already downloaded it, why not give it a try?
I’m not sure if anyone cares, but I’ve been doing a tiny bit of dabbling in releasing Open Source software lately. Since I don’t particularly care to announce them on the GPF News (it isn’t, after all, GPF news), I’ll announce them here. For those of you who might complain that working on these has taken precious time away from the comic, fret not. The tiny bit of time I’ve been able to squeeze in here and there to work on these have been during periods when working on the comic would be impossible, so there’s no way for there to be any conflict.
The first one I’ll announce is the most recent. WinHasher is a Microsoft .NET Framework 2.0 application for generating cryptographic hashes of files. It is both a Windows GUI applet and a console (command line) program, and it operates in two possible modes. The first mode generates the hash of a single file, which you can then use to verify a download or check to see if a file has been tampered with. The second mode takes the hashes of multiple files and compares them; in this way, you can see if two or more files have the same binary contents regardless of their names, locations, and time stamps. The Windows app supports drag-and-drop functionality, and the installer lets you also build shortcuts in your Windows Explorer “Send To” context menu so you can just right-click a file and get its hash.
So why did I build this? Well, the full details are on the site, but the quick version is that I’ve grown tired of not being able to validate the hashes of downloaded files because Windows doesn’t have a built-in hashing program. Linux and the other free UNIX clones have OpenSSL; heck, even Mac OS has OpenSSL under the hood. Not Windows… of course. So instead of downloading a file on a Windows machine, copying it to the Linux box, validating the hash, and moving it back (or worse, just not even validating the hash at all and taking my chances), I hacked together this little program. Then I thought it might be useful enough to share, so I did. If you find it useful, please let me know.
For the really technically inclined out there, most of the hashes are built-in to .NET 2.0, so this was obscenely easy to implement. In fact, 2.0 has an abstract hash algorithm class (System.Security.Cryptography.HashAlgorithm) that all of the built-in hashes implement. The two non-standard hashes, Whirlpool and Tiger, were taken from the Legion of the Bouncy Castle Crypto API, which is actually .NET 1.1 based. I (rather crudely) ported these classes to be subclasses of HashAlgorithm, so they can technically be used as a drop-in replacement of any .NET 2.0 hash. I plan to add additional hashes over time, provided that (a) the original source code is free and (b) I can port it to be a HashAlgorithm subclass.
The second program to mention is actually a bit of an oldie now. (I actually released it back in June.) The Windows version of Mandelbrot Madness! is back, also in a .NET 2.0 edition. I wrote the original in Visual C++ 4.x, but have long since lost the source code. Then the Java version came into being and rapidly surpassed the Windows version, leaving it to suffer from bit rot. Both eventually languished as I lost time to work on them. Well, in December of 2005, I released the not-quite-complete-but-close-enough 4.0 version of Mandelbrot Madness JAVA!, declaring it abandoned. It always bugged me that I never went back and revisited the Visual C++ code, but without the source I was stuck.
Well, to make a long story short, my new job had me learning a new programming language: C#. That had me programing Web sites, but I knew you could also do Windows GUI apps in it as well. So somewhere down the line I got a wild hair and started the agonizing work of porting the Java code from the last version of MMJ! to C#. Actually, Java and C# are similar enough that the porting work wasn’t all that hard. Not only is MM! 2.0 now pretty much identical in functionality to MMJ! 4.0, but I introduced a number of new features that I hope to eventually port back to the Java version. While I still prefer the platform independence of Java, I’ll readily admit that the .NET version is a lot faster on Windows. I think that anyone on that platform that has actually bothered to play with the Java version (both of you) should make the switch. Anyone still using the decrepit old 1.0 version of Win32 MM! should enter the 21st century and upgrade too.
Both programs have been released under version 2 of the GPL (haven’t had time to really review version 3 yet), so the sources are also available. If you have any suggested changes, feel free to pass them along and I might incorporate them into the official builds (giving you credit, of course).
Ordinarily, I don’t go about announcing underlying technology upgrades (for example, I just upgraded iptables and Apache this morning), but I thought this was mildly amusing and I thought I’d share. As the observant among you probably know, I’m running WordPress, which just released version 2.3, nicknamed “Dexter”. It is so named after the “great tenor saxophonist Dexter Gordon.” Darn… I was being hopeful….
If you’re seeing this post, then welcome to the new server! Our new host is Slicehost, a small hosting service that caters specifically to online developers. I have to say that so far, I’m pretty impressed. I had a few bumpy points getting SSH started and the initial setup was so bare-bones I had to install a ton of packages just to get functional (including fundamentals like tar and which), but it’s moving a lot faster than the old site sitting behind the cable modem.
Slicehost does one thing that I think is really pretty slick, especially from a hard-core geek’s point of view: Unlike most web hosts who give you a little sandbox to play in and tie your hands on what you can and cannot do, the “slicers” give you your own virtual server with root access. That’s right, you have the keys to the virtual kingdom. That means you decide what gets installed on your box, from the Linux distro (no other OSes are supported at the moment, but they do offer several distros) to the individual server applications. Want a LAMP box? You got it. Prefer Fedora to Ubuntu? (Me! Me!) Here you go. You decide what gets installed. The caveat to such permissiveness, of course, is that if you screw it up, it’s your own darn fault. That’s okay, though, because your virtual server shouldn’t affect anyone else sharing the box and you can rebuild your “slice” at any time, wiping it clean and restoring it to its original pristine state. Pay a nominal extra fee and you’ve got backup snapshots that you can also restore in the case of catastrophic failure.
One thing to watch out for is the waiting list. They appear to allocate hardware dynamically based on their current user base (keeping some servers in reserve for redundancy) and then purchase new machines based on their projected demand. If you sign up for the smallest package with the minimum prepayment plan, you could be looking at several weeks of wait time. However, if you’re willing to pay a little more in advance, you’ll be moved up the list. I decided to prepay for six months instead of three and was told I’d have my “slice” in “less than a week.” I ended up getting it in a few hours. Yep, that’s technically less than a week.
Initial annoyances (I’m not sure I’d call them complaints):
All in all, though, I think I’m going to like this new home. If you’re interested in checking them out, click the link in the first paragraph and poke around. If you decide to sign up, though, come back here and click my referral link. A little kickback is always nice.
Of course, now that we’ve moved, commenting should be re-enabled. If you created an account before the move, it should have been ported over. (The internal user ID numbers got switched around, but since no one was able to post after I switched to WordPress, I don’t think that really matters.) Feel free to log in and make sure your account is accessible.
Feed readers: Please update your feed links now. You’ll find the new RSS and Atom links in the “Feed Me” section of the sidebar. Remember, the old “domain:port” URLs will no longer work.
Been meaning to blog about this for a while, but I just haven’t gotten around to it. I mentioned my new job a while back and gave you updates about the resulting move throughout that process, but I never really mentioned much about the job itself.
I work (as a contractor) for a company called ManTech. I’m currently working on a number of projects, all of which either directly interface with or are satellites of our main project, which consists of computer based training for the Navy Reserve. We’ve used a standard called SCORM to develop a Web-based learning management system. We then take a series of computerized training courses–some developed by a partner company and converted by us to a Web format, and some developed in-house–and provide the necessary back-end to maintain the learner’s training history and progress. My first project was actually to build a content management system to manage photographs and other content that support our artists while they generate graphics for these lessons. I’ve now moved more deeply into some of the other projects directly interfacing with the LMS, and I’ve been tapped to become our resident expert on CORDRA.
The real meat of where I’m going with this, however, is that I’ve had to learn a whole new programming language. I’ve worked with a number of languages over the years, most notably Perl, Java, and SQL. The complete list is actually quite lengthy, but many languages I “know” (like C/C++) I haven’t touched since college or I’ve taught myself to use for my personal amusement and have little to no professional experience with. Perl fit into the latter category until my last contract assignment; technically, so does Java, as I’ve mostly used it for personal projects. (I did do some Java work on the early GPF site though, but mostly behind the scenes.) Unfortunately, a good chunk of my professional work since college was tied up in report writing using technologies such as BusinessObjects and FOCUS, a realm of the IT industry I’m thankfully starting to escape from. (I graduated from college expecting to program, not build reports with pre-packaged tools.)
When I applied for this job, I knew they were looking for someone with Java (or some other object-oriented programming) experience. What surprised me was that while they seemed to be looking specifically for someone with a little Java know-how, the real language they were planning to use was C# .NET.
Now anyone who has followed GPF long enough should know by now that I’m not a big fan of Microsoft. Yes, I use their products (one almost has to if they want to function in the computer world), but their history and business practices speak volumes about their corporate ethics. I’ve dabbled a little in Windows programming over the years; I’ve toyed a little with Visual Basic and took a course in Visual C++ back in college but never did much with that beyond a little playing with fractals. In general, though, I prefer to focus on technologies with strong cross-platform capabilities, mostly because I feel that users should not be discriminated against due to their personal choice or corporate mandate of operating system. This, among many other factors, often makes me lean toward open source.
The Reserve, however, like many government and corporate technology departments has mandated a “standard” platform for use within their organization. This platform, as you might guess, is largely based on Microsoft technologies. Thus, almost all of ManTech’s development work (at least on this family of projects) is done in Visual Studio 2005. Many of our projects are Web-based, so we do a lot of ASP .NET work with C# as the chosen language. (.NET uses a common language infrastructure so it doesn’t matter what language you actually use to build your application in. It all compiles to the same bytecode, which the runtime then executes.)
Now I had heard a lot of comparisons between Microsoft’s .NET and Sun‘s Java platform; indeed, a Google search turns up a ton of them (over four million results at this writing). I remember when Microsoft first announced .NET, and recall the buzz that it would destroy Java much like how Internet Explorer decimated Netscape in the browser wars of the 1990s. (Personally, I don’t see that happening, especially since .NET is only available on Windows, but projects like Mono could help bring .NET to other platforms while biting into markets that Java currently has dominion over.) So I was quite curious to see what .NET could do, and whether or not I might find myself on the other side of the fence once this was all over.
Well, I’m not over–or even on–the fence, but I’ve learned to appreciate the various tints of green on either side. My previous experience with Java made jumping into C# and .NET relatively easy, and I found myself writing real, useful code quicker than I expected. There are even some things that are much easier to do in C# that they are in Java, like designing the GUI. (This, though, is more a function of the IDE than the language, and is one place where Microsoft has always shined. Visual Studio can sure make a programmer lazy, which isn’t necessarily a bad thing. Then again, I’m also trying out Eclipse for Java work, so that might swing that factor into balance.)
My experiences with C# these past few months haven’t killed off my interest in Java, but it did prompt me to download Visual C# Express to do some off-the-clock experimentation. It even reinvigorated one of my old side projects; there’s a chance that Mandelbrot Madness! may get a new .NET 2.0 Windows version that is roughly comparable to the much more up-to-date Java version. I’m curious to see where .NET is going to eventually end up. If I can keep up with it, I’ll try and post more thoughts on these technologies when I can.

I have found a new obsession. Its name is DOSBox.
Back in college, my friends and I used to spend endless hours playing whatever latest computer game we could get our grubby little hands on. (What? Did you actually expect us to study?) While shoot-em-ups like Doom and Scorched Earth were certainly popular, I think we ended up playing more fantasy role-playing adventures than anything else. Eye of the Beholder, The Elder Scrolls: Arena… why, there could have even been a little bit of Nethack thrown in there somewhere. But the game I will probably remember most from back in those days, the game that I think every single one of my buddies played (and finished, IIRC), was World of Xeen.
For the uninitiated, in the early 1990s, New World Computing released a series of RPGs called Might and Magic. (No, no subtle rip-offs of Dungeons & Dragons here, folks….) While I missed the first three installments, in college one of my friends introduced me to Might and Magic IV: Clouds of Xeen. I was instantly hooked. Surely more “sophisticated” gamers of today would scoff at its 320 x 200 graphics, primitive digital sound, and turn-based game play, but hey, it was actually pretty innovative for its time. What really sucked me in was the depth of game play, from the vastness of the world to the ingenuity of some of the puzzles. It had just the right balance of intelligent puzzle solving, tricky spell casting, and brain-dead skull smashing to make a nigh perfect game. But then New World did something to make it even better….
A year later, they released Might and Magic V: Darkside of Xeen. This wasn’t just a sequel, but a continuation of the previous game. In fact, if you installed MMV on the same hard drive as you installed MMIV, the two games would combine to form one big gaming world. Not only was there a whole new world (or side of the world, to get technical) to explore, but forbidden locations in the first game were suddenly opened by new quests from the second. Other games of the time let you import your characters from previous games, but none did anything quite like this. I think we all ended up beating World of Xeen at least twice each. For the longest time, I had to play the game on other people’s computers because the game took up virtually every megabyte of space on my dinky little laptop’s hard drive. Save games were precious jewels to be backed up on multiple redundant floppies.
Ah, alas, time has a habit of marching on. Years and one college degree later, I bought a copy of MM 3-5 on a single disc to have a copy all my own. Unfortunately, by this time DOS was passé and Windows had passed from version numbers to year of (intended) release. Getting Xeen to run was iffy; the generic sound card in more modern systems didn’t like pandering to old Sound Blaster settings so the sound was horrible, while the faster speed of the CPU started leaving the skid marks all over the graphics. (It was if all the monsters had overdosed on sugar, caffeine, and a few illegal stimulants.) I tried playing Xeen this way for a little while (even got my wife to give a try once), but it just wasn’t the same. When my wife and I eBay-ed a bunch of old games while cleaning house in anticipation of our move, I struggled with whether or not I should keep Xeen around or sell it as well. I gave in to sentimentality and chucked the CD into a box so it would make its way to WV.
Then, lo and behold, what did I discover last week? A nifty little program called DOSBox. What is it? An x86 emulator that runs a built-in DOS. That’s right, folks; you can emulate an old style x86 processor running DOS under Mac OS, Linux, or even (gasp) an x86 running DOS-descendent Windows. Imagine that. What’s really interesting about this app is that it emulates hardware like CD-ROMs and sound cards as well, so you can listen to games in their Sound Blaster glory while playing them from ISO images on your hard drive. You can even capture screenshots, sounds, and (with the right codecs installed) short video clips of your game in progress. I couldn’t resist the temptation. I download the program and as soon as I got home I hunted around the office until I found my Xeen CD. It took a little bit of settings tweaking, but I now have a bunch of decade-old memories flooding back to me as I “step right up to the exciting treasure-filled mines of the Red Dwarf Range!” (If you’ve never played the game, you wouldn’t appreciate the reference.)
On the downbeat, it’s bad enough that moving and caring for a newborn child are such huge time sinks. It’s not like I have time to really play this game anymore. But, oh, am I so tempted….
Okay, so I paraphrased Isaiah 11:6, but it did come immediately to mind….
Every so often, I like to spin through the Firefox extensions site, just to see what interesting things are out there. Most often, I don’t see anything particularly useful. I mean, I make extensive use of the Web Developer extension, and I’ve got a few others (User Agent Switcher, DictionarySearch) that I use on rare occasions. I use a few others for Thunderbird, but that’s a different application. Most of the extensions out there, though, don’t seem very practical or are too site-specific. But every once in a while there’s something so out there, you just have to give it a spin.
The extension in question is IE Tab. In a nutshell, it’s a plugin/extension that imbeds an Internet Explorer window in a Firefox tab. It’s freaky. The site shows a screenshot of a Taiwanese copy of Firefox running Windows Update. I couldn’t help myself. I installed the plugin and tried it myself. It took a little bit of copying and pasting to get the right URL; by default, the plugin accesses a site with Firefox, which obviously won’t work with Windows Update and Firefox. But you can configure this thing to always open certain sites in the embedded IE, and sure enough, it worked like a charm. (Of course, I run WU at least once a week anyway, but that’s another post.)
Some people would probably scratch their heads over this. Why in the heck would anyone want to do this? Everyone who uses an “alternative” (i.e., not IE) browser knows there are still sites out there that are IE-specific, refusing to comply with Internet standards. But why not just fire up an IE window and just browse those sites there? (After all, there’s an extension to make that easier too.) Of course, doing that completely removes the benefits of Firefox, like the tabbed browsing. Imagine that… IE with tabs. Essentially, with this plugin, that’s what you get. No taskbar clutter. It’s downright spiffy.
Of course, turnabout is fair play. But personally, I doubt I’ll ever use that one.
Anyone who’s paid serious attention to the behind the scenes stuff at GPF knows I’m a big Paint Shop Pro fan. I have been for years. I first tried PSP (back before Sony appropriated the acronym) back around version 3.x, and ended up using it 420+ days into my 30-day trial. By the time version 5.x came around, I sprung for the under $100 price tag to buy the full version. Compared to Photoshop’s $500+ price tag, it was a steal. The combination of power and features for the low price made it my primary recommendation to webcartoonists looking for a cheap image editing tool. I’ve used PSP for years now, and with the exception of a few tiny little things that it doesn’t do so well (like saving CMYK TIFFs for print), I’ve used it exclusively to produce 2000+ comics and five books. (Yes, Book #5 is finally on the way.)
However, times, they are a changin’. I’ve been using PSP 7.04 for a couple years now. I skipped version 8 at first because I was too cheap to spring for a new version, and then when I finally saw a copy of it at Plan Nine I wasn’t that impressed. They moved things around so much I had problems finding the tools I wanted. Combine that with the fact that I didn’t see any new features that seemed useful and I decided to sit back and wait. The next thing I know, version 9 zooms out and, seemingly the next day, Corel has bought out my beloved Jasc and PSP is now part of their line-up. The price has jumped steadily since the last copy I bought and now hovers around $130. While that’s still more reasonable than Photoshop’s $600 (that’s 4.5 times as much for virtually the same set of features), it’s still getting pricier.
Mind you, I haven’t tried the new Paint Shop Pro X. (Curse you, Steve Jobs. Now everyone thinks Roman numerals are the “it” thing for version numbers. At least it’s better than using the year….) I haven’t even seen it in a store yet, just on Corel’s website, so I can’t really speak intelligently about the product. But I’m starting feel the Technology Mudslide catching up with me. You know, that’s that sinking feeling that technology is advancing so quickly around you that you feel like you’re falling further and further behind, and no matter what you try, you’ll never catch up. I’ve encountered that a few times in my professional career when I’ve been stuck using version x of a product because of customer requirements, while the vendor is on version x + 2 and all the new job postings only want the latest and greatest. I never thought I’d hit that with PSP, but apparently I have.
So now, the quandary. Do I shell out $130 for the latest and greatest version of a product that has dramatically changed over three version numbers and a change of hands, unsure if I’ll still be able to do the simplest of tasks that I currently take for granted? Do I keep using the same rapidly aging version I’m accustomed to and hope when Windows eXPlotive2 (or whatever the next version of Microsoft taxation is called when it comes out) hits it will still work? Or do I jump ship and try something totally new? I’ve still got that coupon from Wacom to get Photoshop CS at half price… but if $130 is too expensive in my opinion, can I really justify $300…?
Of course, the obvious answer that any Open Source-minded computer/art geek will mention is… the GIMP. Lest you think I’ve been living under the proverbial cyber rock for too long, the GIMP’s been on my radar for quite some time. The first time I installed Linux on one of my boxes I made sure GIMP was there and I ran a few experiments with it. Unfortunately, that old machine (Pandora, for the curious) was rather underpowered and ineffectual at running X Windows, let alone something as hefty as the GIMP. When we upgraded machines and I had something more beefy to play with, I tried again, but had trouble finding the right tool do do the task I wanted to perform. I have a few GIMP books here and there, but other than skimming them, I haven’t done much else with them. After all, why should I spend valuable time learning a totally new tool when I’ve grown quite adept at the one I use all the time?
Wipe that smirk off your face. I recognize the irony.
On a whim, I swung by the GIMP site yesterday, just to see what version they were on. 2.2.8. The last version I had was 1.2.x (and that one had only been loaded up a couple times). Might as well give it a try. So I downloaded it and the latest GTK+ for Windows and installed it on Apollo, the ThinkPad that handles 99.9% of all GPF work now. (It’s already installed on Demeter, the current top of the Linux boxen, but I rarely use her for workstation type duties.)
I was pleasantly surprised. They’ve improved the interface a good bit and made finding options for some of the tools easier. The greatest of all surprises, though, is it recognizes my Intous3′s pressure sensitivity. PSP 7.x doesn’t. As a test, I opened up the raw scanned line art for the October 31, 2005 strip and started working on it. Although I was still unfamiliar with the toolset and I seriously missed some of my old PSP tricks, I was able to clean up the lines and completely color the first panel so it looked identical to the final version I recently did in PSP. It wasn’t a very thorough test, however, as that particular panel didn’t have any text or bizarre special effects in it, but it was still farther than I had gotten the last time I tried something like this. Maybe having the tablet helped a little (“drawing” selections right-handed with a mouse when you’re left handed isn’t easy), but maybe being more patient probably had a greater impact.
There’s been a nagging part of me that’s wanted for a long time to ditch Windows completely and go completely Open Source. I’m too realistic to go cold turkey, though, as there are far too many Windows-only apps that I rely on. PSP has been one of my primary anchors to Windows. But I’m impressed with how far the GIMP has come since I last worked with it. I think I’ll keep doing some experimentation and perhaps even try working some simple GPF strips exclusively in GIMP to see how they go. Who knows… maybe I won’t need PSP anymore after all….
Sometimes the tiniest little things annoy me. Some time ago, Keenspot switched operating systems from Linux to FreeBSD because supposedly FreeBSD is more stable for Web servers. This wasn’t a recent change; it’s been at least a year or two now. But ever since they made the change, a few other things changes as well. Most notably, my login shell switched from bash to tcsh.
I guess it could be said that a UNIX user’s shell says a lot about him or her. Me, I’ve used quite a few different shells over the years, but most of my experience is with bash. It’s what I use on Demeter (the machine this site is housed on) as it’s the default shell for Red Hat and Fedora. Of course, tcsh uses different configuration files (.login and .cshrc) than bash (.bash_profile and .bashrc), so for months now my login to the Keen server has been sufficiently screwed up, and none of my old settings have been working.
(Of course, the average Keenspotter probably wouldn’t be bothered by this. I’d say the vast majority of them simply use FTP to upload files and forget them. I’m probably one of the very few outside the Keen Tech Crew to actually use SSH to log in upon occasion. Leave it to me to be different, of course.)
Well, tweaking the $PATH was simple enough, but what’s really bothered me is that my prompt isn’t what I want. Having grown up on DOS, I’m used to seeing my current path as part of the prompt. So the first thing I do on a new UNIX account is tweak my prompt to show the current path if it doesn’t already. Simple enough to do in bash, apparently, but not tcsh. I’ve been pouring over my UNIX books for the past couple days, trying every thing I could to get it to work. It was starting to really bother me. Fortunately a quick Google search turned up this site, and the tcsh trick worked like a charm.
I suppose I’m too obsessive about these things.
Every now and then, I wonder if my geek license should be revoked. You know, those times when you come across a technological problem and you do everything you can think of–including and especially over-analyzing the problem to the point of pursuing the most extreme and obscure solution–only to find out it’s something incredibly simple or mundane.
The other times I think I should hand in my geek credentials are when I realize (or worse, I already knew but didn’t want to publicly admit) that I don’t quite know enough about something that I probably should know. Of course, not everyone can be a Fooker and know everything there is know about technology; geeks are often far too specialized, and while it’s good to know something about topics outside your field of expertise, you don’t have to be an expert. But I like to consider myself a UNIX geek. I have a Linux box (several boxen, in fact, and you’re reading pages served by one right now). At work I’ve been hacking out shell scripts, setting up cron jobs, etc. As I stated previously, I just spent a significant amount of time setting Apache’s virtual hosting just to give this site a new domain. But I have one little dirty secret I’ve been hiding for years, and now I must finally admit I have a problem.
I’m only just now learning vi.
You see, early on, I was introduced to Pico. Hold on a minute, don’t run away. Just hear me out. I was but a mere geeklet, a fledgling still being molded. At that time in college, I think I was still majoring in chemical engineering, so my computer was still mostly just a tool and a platform to play games. I had heard on the news about this “Internet” thing, and I wanted to try out “e-mail” and “browse” the “World Wide Web.” So I got an account on the school servers. This was still before they set up PPP networking, so I couldn’t e-mail or browse the Web from GUI apps on my personal machine. Instead, I had to log into the UNIX server and do things from there. And the e-mail client installed was Pine. Pico is a part of Pine (when you read or edit a message, Pine puts you into Pico), and so it was the first UNIX editor I had any experience with.
I liked Pico. I still like Pico. It’s nice and simple to use. In a lot of ways, it reminded me of Notepad or DOS Edit, which was comforting to someone familiar to DOS & Windows but new to UNIX. (Yes, kiddies, this was back when Windows ran on top of MS-DOS, when Microsoft actually used version numbers instead of dates.) I liked it so much that I was comforted when I set up first Red Hat Linux box and found Pico part of the standard install. I was also a bit concerned when I migrated to Fedora and found that it was not. It turns out since Pico is not considered free software, Red Hat decided not to include it. Not to worry, of course; I promptly downloaded it from the official site, compiled it, and installed it manually. All was right with the world. I’ve even surreptitiously compiled and installed Pico in a hidden place in my account on the Keenspot servers, just on the off chance I needed to edit a file directly there. (Just don’t tell Darren Bleuel.)
But sometimes you don’t have the luxury of installing your own software. Sometimes you don’t even have the luxury of editing a file on your PC and FTPing it to the server. You have to edit the file right there, and you have to work with the tools at hand. Such has been my recent situation at work. Technically, I’ve been developing in a production environment (instead of a dedicated development environment, for shame), and since I’m not allowed to know the production passwords, someone else has to log me in. Ergo FTP is out of the question. The C compilers on these machines are either crippled or non-existent (i.e., the customer won’t pay the UNIX vendor to install a full compiler and the SAs are too lazy/clueless/difficult to install a free compiler), so installing my own software is moot.
So here I am, learning vi.
I, of course, know the legends of vi. It’s cryptic commands, it’s arcane interface, the eternal holy war with Emacs… I’m certainly geek enough to keep up with all that. I’ve just never sat down and actually learned how to use the darn thing. Fortunately I have a very handy book and a wife who happens to know more about vi than I do. I’ve become fairly competent with it, to the point of actually looking up commands in the aforementioned book just to make things easier (like using “D” to delete the rest of a line instead of repeatedly using “x”). And it’s become so much of a habit that I’ve caught myself automatically typing “vi filename” on Demeter (my main Linux box) instead of “pico filename.” It’s only when vim starts showing things in all different sorts of colors that I realize what I’ve done.
Perhaps some of the more technically inclined out there may think less of me for admitting this. (If you do, get over it; half of this has been a joke anyway. And if you’re an Emacs fan, I’ve been just as afraid of it as I’ve been of vi.) But the soul-searching and growth has been liberating. Maybe now I’ll be motivated to learn something else, like sed or awk.
Nah. I already know Perl. What’s the point?