Reapin’ time and sheepin’ time.

Dear reader, I apologise for the lack of blogging recently. Here is a double helping.

First of all, I’ve been having great fun with Reaper. Digital audio workstation software written by the charmingly named Cockos Inc. I remember trying an early version years ago and hating it, but it has come a long way. I’ve tried most of the DAWs, and I think Reaper is now my favourite, especially when you can buy a personal-use license for 60 bucks! (I bought it.) It is available for Mac and Windows, and the bundled collection of plugins isn’t half bad.

My Reaper recording setup.

To all electronics experts reading, I apologise for placing the setup so near a radiator! 🙂

So that’s reaping time, but what about the sheeping time? My dad was looking for some way to run GeneJockey 2. This is a program for editing DNA sequences, and it only ran on Classic Mac OS. He kept an old PowerBook 1300 around to run it, but this was starting to get unreliable.

I obtained a copy of the SheepShaver Mac emulator for Windows, and a ROM file and ready-to-use Mac OS 9 disk image from I put it all on my old Windows laptop for a test. And, it werked!

GeneJockey 2 running in Mac OS 9 on the SheepShaver emulator.

Until next time, don’t fear the reaper!

Scripting fun: Rename files by date in Windows

When I’m working on a computer, I frequently make backups of what I’m doing. There are a lot of ways to do this, but the one I use is a bit ghetto.

1. Right click the folder with my work in it, and select “Send To > Compressed (zipped) folder”

2. Rename the resulting zip file so that the name includes the date in ISO format. You have to rename it in order to store multiple versions in the same place, so might as well add some useful data to the name.

3. Copy it to a backup drive somewhere.

I got fed up of doing the renaming manually, so I created (cobbled together from various Howtos) a batch file to do it for me. Here’s the code:
@echo off
FOR %%V IN (%1) DO FOR /F "tokens=1-6 delims=/: " %%J IN ("%%~tV") DO IF EXIST %%~nV-%%L%%K%%J-%%M%%N%%O%%~xV (ECHO Cannot rename %%V) ELSE (Rename %%V %%~nV-%%L%%K%%J-%%M%%N%%O%%~xV)

Paste that all into a text file (one long line!) and call it something like RenameByDate.bat.

Now, if you drag and drop another file onto this batch file’s icon, it should get renamed to its original name, plus the date and time of its timestamp.

If this doesn’t work, you may need to enter the following three commands at a command prompt, to enable drag and drop for batch files.
ftype batfile="%1" %*
assoc .bat=batfile
regsvr32 /i shell32.dll

(from here)

Finally, place the batch file in your Send To folder. (C:\Documents and Settings\YourUserName\SendTo)

Now you can rename any file, adding the date and time to the name, by right-clicking it and selecting “Send To > RenameByDate.bat”.

In other news, I’ve mostly been automating Bill Of Material generation with Perl.

Less is More: Pay More, Get Less

‘What can we design that makes our life better, not just “more”‘ –

I recently read Treehugger’s debate on Nikon’s decision to stop making film cameras. I think it summed up a lot of things I’ve been dealing with lately, so I decided to do some blogging about it.

If you live in the developed world in the 21st century, as I do, you probably know all about “more”. More megapixels, gigabytes and gigahertz every couple of years. Cell phones that can surf the net, whether you actually want to or not: I’ve covered this issue before.

But there’s another kind of more that I find even more insidious: More features on our software and consumer gadgets. Once a designer puts a microprocessor into a gadget, he can add extra features by just adding more computer code. These features add practically no manufacturing cost to the end product, while they can still be used as selling points by the advertising guys, so the result is a kind of feature arms race.

The downside of this is that buttons, knobs and large displays do add manufacturing cost, so if the designer wants to maximize features per unit cost, he ends up using a very deep and complicated menu system to control his features. Operating an instrument like this can feel like flying a Jumbo jet when your only access to the flight deck is a letterbox-sized hole and a pool cue. More might be better for the sales guys, but it’s definitely not better for the poor end user.

This is possibly the thing I hate most about the information age. Back in the good old days, instruments had one button per function. To listen to music, you grabbed a vinyl record, put it on a turntable, and lowered a stylus onto the track you wanted. The record deck did not suddenly turn into an address book because you accidentally double-clicked the 33rpm button, and make you spend 10 minutes figuring out how to transform it back. In short, each function had a real, material cost in terms of hardware. The result was that designers had to think hard about what functions to implement, and make sure they were really worthwhile.

I’ve never felt this more than in my dealings with electronic music. Synthesizers, samplers and recording software are powered by microprocessors, made for gearheads by gearheads, but a good musical performance needs an intuitive, gut-level connection between the musician and the instrument. There is very little time for double-clicks or multi-level menus, unless you’re Kraftwerk.

I’m “lucky” enough to own some of the worst excesses of the 90s, like the Yamaha A4000 sampler. It has the jumbo jet syndrome in spades: it took me a good six months to get comfortable working my way round the user interface, in so far as you could get comfortable at all. It bombed, to the extent that fully loaded examples can be found on Ebay for about $250. (I’m keeping mine.)

The polar opposite of this would be a “classic synth” that does one thing and does it very well. Sometimes this isn’t even what the designer intended it to do, as in the case of the legendary TB-303. Its built-in pattern sequencer was so awful that very few people had the patience to program more than a few two-bar loops. The tone generator only had five knobs to change the sound – six if you count the tuning – but those few adjustments were carefully chosen and delightfully tweakable.

These built-in limitations led to the birth of acid house music, and the 303 has kept its resale value a lot better than the A4000 🙂

OOP as in O_o :P

After years of programming in assembler, I’m finally forced to learn more modern stuff like Win32 and C++. And I’m hating it! Regular C under Win32 wasn’t too bad, but as soon as I tried to get into C++, I ran up against a huge block that I think of as the “WTF factor”.

Someone once said that language is not a vehicle for thought, but that it shapes thought. This goes for computer languages too. And by their nature, object-oriented languages have to express concepts that plain functional languages can’t. So, by definition, I will have no idea what I’m doing or whether it will work until my mind has been expanded by trial and error.

Perhaps this “WTF factor” is at the heart of all creative endeavour. But all I know is, I have to deliver a working prototype of the software in about one month’s time, and I haven’t even got one class working yet.

At least when I’m done, there’s a chance I might finally understand what OOP is good for.