Who’s got two thumbs and got engaged yesterday? This guy.
So yesterday I took my NRA basic pistol course and at the range finally got to break out my brand new Kimber 1911. I ran 195 rounds through it with only a couple of minor feed problems. My accuracy needs work, but I feel reasonably good given the fact that it was my first time shooting ever (any gun, much less my .45). After a solid hour of cleaning this morning it looks brand new again so I have to say: I’m pleased.
Perhaps I’m being over critical, but I don’t think I could ever cast my vote for a candidate whose website is almost entirely in Comic Sans.
Not too bad for my first attempt.
So for the past several months I’ve been remarkably good at doing nothing in the small amount of free time I’ve had. Although I do enjoy starting at the wall from time to time I decided it was time for a new project. Strictly speaking it was time for a new software project. I would like to do some hardware projects too but I’ve become too accustomed to the $100k+ worth of tools I use at work to be happy with cheap/free alternatives at home. Anyway, I decided that I don’t necessarily need to do something that is useful to me or others. I just need something that will be enjoyable to work on. Normally when I reach this place I start working on a new version of CDXTRACT. It’s always fun to write a new version, but I think I milked all the intellectual stimulation out of it working on version 4. That said, there’s nothing to stop me from revisiting other old projects, now that I’m more experienced and can better design the implementations. So I started mentally running down the list of programs I’ve written throughout the years:
1992 – Rating 3 – At this point I was only writing programs in BASIC and having recently obtained a copy of Visual BASIC 3, I decided to go all out and write a table tennis rating management program since I was spending some time at the Table Tennis Center with my dad and saw what I considered at the time to be great deficiencies with the software Dana was using to track ratings and matches. After some time (I don’t remember if it was weeks or months) I’d crafted a program which managed the players, matches, scheduling, charting, and reporting of ratings for an arbitrary number of people with an Access database. Dana seemed impressed but never switched. In fact I was talking with him last Thursday about how he needed the guy who wrote his software (he still uses the same stuff) to update it for Windows XP as there was no longer an ANSI.SYS included.
1994 – FM S3M Player – I don’t remember the exact time I was introduced to module files (of the Amiga variety) but I was immediately fascinated by them. When Scream Tracker 3 came out with support for FM channels I took the opportunity to craft an Adlib S3M player (in Pascal). At the time I didn’t really understand how players worked, but I faked it enough to make the modules sound like they did in Scream Tracker.
1995 – CDTSR – I was trying my hand out at learning assembly language and decided that writing a TSR was a good way to learn. CDTSR was a Desqview compatible pop-up CD player with programmability like you see in component CD players. This is probably the first program of mine to end up documented somewhere on earth. If you dig up a copy of Ralf Brown’s interrupt list you can see my ID CPH1995/CDTSR in the alternate multiplex interrupt section. Of all the programs I’ve written, this is the one that I wish I still had the source for.
1995 – Plutonium 239 Intro – Back when I thought I was a much better programmer than I was, (although still probably pretty good for an untrained teenager) my friend Curtis and I decided to start a demo group (Plutonium 239) and released an intro (code by me, music by Curtis) at about 1.2kB (all assembly language) with a simple distorted plasma/lens effect and adlib music. (coming from my knowledge writing the FM S3M player)
1995 – ATMP – Being unsatisfied with FM S3M playback, I decided it was time to write a proper software mixing module player. This one was written mostly in assembly language with some pascal for the user interface bits. It supported Sound Blaster 16 only. At the time I was particularly impressed with myself as I considered it a non-trivial task to mix 16 channel music on my 486 at the time.
1996 – ATMP2 – After getting a part-time job and earning a little income I invested in an essential bit of hardware for a demo lover, a Gravis Ultrasound. (mine was an Ultrasound PnP using an AMD Interwave chip but was hardware compatible) I decided to write a new version of ATMP which supported multiple output drivers and ended up with a version supporting Ultrasound, Interwave (enhancements turned on), and Sound Blaster 16. This one was written mostly in pascal with the exceptions being the interrupt handlers and the software mixing routines in assembly. I had realized by this point that writing non speed critical routines in assembly was just a time sink and maintenance headache. The last change to ATMP2 would actually come in late 1997 when I added a driver for the ESS1688 Audiodrive chip in the Extensa 660CD laptop that everyone in the Rose-Hulman freshman class bought.
1996 – Pointillistic – We (Curtis and I) decided to take a stab at creating a megademo after I had ATMP working well. The only effect ever implemented was a pseudo-3D water effect.
1997 – PRPG – Sometime in 1997 I became intrigued with the design an implementation of compilers. I decided to write a simple language that I hoped would be well suited to implementing MUDs. I crated the PRPG compiler, linker, and runner in pascal. (its output was bytecode-ish) My friend Curtis (of Plutonium 239) and I starting writing the reference game, Transcendants of Time. At the start of my freshman year in college I started writing the MUD server in C++ but never really got anywhere.
1997 – ATMPMINI – Curtis and I decided that working on a megademo was probably beyond our means and switched focus to a 64k intro. At the time, the competition rules stated that the 64k size had to include a music player for UltraSound, but the multi-soundcard release could be larger. For this purpose I developed ATMPMINI, a GUS-only pure assembly 32-bit module player designed to be linked against a Watcom C++ program. We never got around to doing anything useful in the intro, but ATMPMINI worked quite well.
1997 – COS – How hard could it be to write an operating system? As it turns out, it’s not hard to write a shitty one, and that’s what I started.
1998 – CDXTRACT – In the summer of 1998 I got a pair of Plextor drives, an UltraPlex and a PlexWriter 4/12. These were the cream of the crop at the time for audio ripping. I didn’t want to pay the $30 for what seemed to be the only good option at the time (WinDAC), so I rolled my own in Watcom C++. A couple of days work and I submitted it to maz-sound.com. Maz said he would post it if I had a GUI, so fast forward a couple of days and I whipped up a really bad one in Delphi. This is what was submitted to the world as CDXTRACT 1. To this day it’s probably one of my worst efforts that made it into public distribution.
1998-1999 – CDXTRACT 2 – Being disappointed with the quality of CDXTRACT I decided to rewrite it. To this day, CDXTRACT 2 had more options than any other CD ripper I’ve ever seen, almost all of which were useless and hard to use given the lack of GUI. I don’t think that anyone will dispute that the best feature was fly-ninja action.
1999 – COS 2 – Surely it’ll be easier this time, I thought. It was easier, and still shitty.
2000 – CDXTRACT 3 – My first try at writing cross-platform software. It was available on Win32, BeOS, and Linux, with a GUI on Windows.
2001 – Premaster/CDPBurn – I wanted to write CD-Text with projects coming from CD Architect. I wrote some tools to do it and released them to the world. To this day, on the internet I am best known for CDPBurn. It faded into obscurity when Sonic Foundry (now Sony) released CDA with CD-Text support but there are still occasional inquiries.
2001 – ATMP – I decided to relaunch ATMP as free software with the help of Mike Melanson who shared my fondness of modules and the demo scene with the hopes of making a cross platform player/tracker with old school visualizations. We didn’t get very far because Mike never finished the 669 loader. Well, not really. I didn’t really like the way the architecture was turning out and abandoned the project. A minimal version which will play a few types of module files is on SourceForge.
2006-2007 – CDXTRACT 4 – I decided to engage in some mental masturbation and architecture astronomy and write a new version of CDXTRACT. I have no doubt that this is the best version I ever created, but I don’t even use it myself. It came as close to my goal of dynamically loadable pluggable everything as is practical.
In this list I’ve left out innumerable small programs and tools I’ve written for myself and others, most of which are inconsequential. What really amazes me looking back at the list is that I have the source code for everything but Rating 3 and CDTSR. Quite frankly that’s the only way I could get some of the years right.
Anyway, back to projects: I’ve decided to do a new implementation of ATMP purely for the joy. I’ll start it myself and then may or may not elect to release it as free software again. I’ve got tons of ideas about how to make it better than any of the previous version and can hopefully use it to fulfill my long-time dream of actually releasing my own tracker.
Random thought: Still enamored with the demo scene I’ve contemplated building a clean-room clone of a GF1 or Interwave based audio card on a PCI-E FPGA development board. Anybody interested in helping out or getting one?
Anyway, a toast to the future of ATMP and to my longest post ever.
To start with: I’ve still got nothing to say. However, in accordance with my policy of doing things because I can, I’ve created a twitter account. I’ve done this because today’s release of the Sonos software supports twittering (or is it tweeting? I’ve got no idea) what’s currently playing on my system. I have no misconceptions about people caring, (They don’t) but if anyone is morbidly curious you can follow here. Don’t expect any non-Sonos related updates though. I’m still far too lazy for that.
I’ve got nothing else to say.