I used to be a computer programmer for around 8 years in my previous life and career which ended at the ripe old age of 23 when I was swayed over to the dark side that is the MBA. Despite my new career in finance (fund management), I still follow the tech world closely, though for obvious reasons, my primary interest is no longer core coding. Today, I’m especially interested in the human side of software development, the sociological side of software as well as questions of software design (including, say, usability and social interfaces, which I consider a design problem).
But anyways, enough about that. A few of my exploits from a zillion years ago, which I recently stumbled on, are here, in no particular order, and have some anecdotes to boot.
- Baptizer. A mass file renaming tool with a built-in primitive scripting language. The documentation ZIP contains the full command set supported by the run-time as well as an extensive documentation file which describes each syntax in detail. I’ve successfully written scripts to rename MP3 files from their IDv3 tags as well as use the text inside Project Gutenberg files to rename thousands of text files at a go. I’m pretty sure this will crash your system, but hey, that’s the price you pay to be baptized.
- Gandalf. A chess engine that can be hooked up to XBoard/WinBoard. I have a feeling that the code base is not mine: I had initially fooled around with another codebase to understand how chess engines were built and then subsequently built a distributed engine (it sounds more complicated that it is) which was mine. This was part of the ritual that was the course-end project for my Bachelor’s in computer science/engineering. I wrote a distributed version of a travelling salesman solver called TSMan in Java along with this. I’ll put that up when I’m back in India and have time to dig it up from my archives.
- MediaMagic. Still like the name, if nothing else. My second attempt at MFC/VC++ programming, and one involving ActiveX. Also tried skinning the interface which worked programmatically, but was an epic fail aesthetically. Supports playlists and Nullsoft-like “jump” controls. I used only MediaMagic for my music needs (not even WinAmp!), which lasted about four days. I flirted with the idea of learning DirectX and trying to write a visualization module, which is when I realized it would take me a couple of million man-hours to get that working. The interface is totally juvenile, but I learned a lot, so that more than makes up for it.
- Pirate and RATServer. A (very) primitive remote administration tool which belongs more in a professor’s notebook than a sysadmin’s backup drive. Pirate (which I think expands to proximity independent remote administration tool experience) is again a figment of the academic rite that is B. Tech and this is something I helped a few of my friends put together for their project. RATServer is, as advertised, the server version which talks to multiple clients, aka “pirate”s.
- RiSearch. I believe this was my very first VC++ experience. It does absolutely nothing useful except help the author write an MFC program and use InstallShield. You have to remember that this was way back in 1999/2000 when you find out that the program accepts a search term as its input and allows you to choose a search engine (ever heard of AltaVista or Ask Jeeves?) to get results from. Launches IE and passes the search term as arguments to the browser. Very unsophisticated, but believe me, I used only this for a while (a “while” lasted about a day).
- SigNow. A random signature generator which I put together one evening to use with Microsoft Outlook which can be configured to accept a text file as your outgoing signature. SigNow accepts two text files as inputs: a “constant” part (like your name) and a “variable” part (like a funny quote) and periodically writes to a text file (the signature file) which you can hook up with Outlook to get a random sig generator. This used to be very important in the days of Usenet. Well, at least to me.
- XCopy. In theory, XCopy helps you copy Audio/Video CDs/DVDs even if they had a few minor scratches, based on the premise that you wouldn’t mind if a few pixels were bent out of shape if you can watch the rest of your favorite Sienfeld episodes. The code tries to simply skip/emtyfill blocks that are unreadable in the hope that the media works fine without them. Obviously unsuitable for raw data/programs.
- Scarlet. A multi-threaded protected mode kernel for the Intel x86, complete with bootloader, filesystem and process and memory management. Doesn’t do anything much, but I learned a heck of a lot about OS development and why it’s almost sinful to not pay for Windows. I tweaked it for a while but the last time I checked, it wouldn’t even compile properly and I’m so out of touch with programming now that it’ll probably take me the better part of a decade to figure out what’s wrong.
- Skeleton. Does a low-level, byte by byte search of your hard-drive.
- Chronicler. A MS-DOS Batch-file based, quick and dirty content management system that I put together in a few hours to update my website when it first went live. I kept using it until WordPress became stable and added a ton of features.
- Other projects (which are proprietary) which I’ve worked on are a patient and medicine management system, an accident management system, an instant messaging client that (theoretically could) work without server-side software, an inventory management system, an accounting software (which was only WIP that never saw the light of day).
Very quick aside
As is evident, I’ve always primarily been a Windows developer and I’m not going to apologize for it. Those who think there is only one true system are merely engaging in bigotry and to me are ideologically software fundamentalists. I’m a software libertarian. Those who think one can learn more from Linux than from Windows are both intellectually dishonest and factually wrong. You learn different things from different systems.
(Oh, just in case you think I’m a Microsoft fanboy, I’m not: I’ve run almost all major Linux distros starting with Slackware (I still carry a copy of Ubuntu with me when I travel), all major Windows releases (except Windows ME), Plan 9, QNX/Neutrino, FreeBSD, BeOS and a few other minor systems for good measure.)