reading k2000 / k2500 / k2600 / k2661 cdroms on a pc for free

Not too long ago my last SCSI CD-ROM drive failed. I still have a number of Kurzweil CDROM discs with useful sample libraries on them that I’ve been unable to read as a result – they were made prior to the 3.61 update that added ISO-9660 support.

Marc Halbruegge wrote a fantastic program, KCDRead.exe, that lets you read these older CDROMs and dump the files to a folder on a Win 95/NT/2000 machine. Sadly it didn’t work on XP or newer 32- or 64-bit Windows releases…until now.

In newer Windows, there is a SCSI PassThrough Interface (SPTI) that replaces the old ASPI interface. Someone wrote an ASPI-to-SPTI converter called FrogASPI that runs in usermode and requires no kernel module or driver.

To make this work with kcdread.exe:

0) Download KCDRead from .

1) Download FrogASPI from .

2) Extract the frogaspi.dll file. Rename it to wnaspi32.dll and copy it to the same directory as kcdread.exe.

3) Run kcdread.exe. It will be able to directly read Kurzweil CDROMs in your physical CDROM drive.

Thanks to Marc again for creating such a useful program!

part 1: MH3000 / RoVa3D tools & setup

A while back I went in halfsies on an MH3000 KickStarter printer from ORD Solutions, just down the road in Cambridge, ON. As there’s still under 100 of these printers out there, it can be a bit hard to find information on how to get going with one. Here’s some tips from my first 100 hours of operation.

Links are not affiliate-type, so if you want to thank me for putting this together, send me a tweet @wohali or reply to this post.

Essential Tools

You absolutely need these tools, or you’ll be pulling your hair out in short order. Buy them while you’re waiting for your printer to ship. I keep all of these right by the printer.

  1. Protective safety gloves. I recommend: one, two. Don’t burn your hands on 240C nozzles or 70-100C beds. Your fingers are more precious than a $2000 printer.
  2. Calipers, analogue or digital, with metric readout. I recommend: one, two. $20-$30. You’ll be using these all the time to measure all sorts of machine tolerances, printer parts, filament width, things you want to replicate with your printer, things you print out, etc.
  3. Hobbyist long nose pliers. I recommend: one, two. $5-30. These are great for getting in underneath the print head and pulling off globs of melted filament, and keeping your fingers far away, safe and not burned. I use these all the time to deal with oozing PLA just prior to a print.
  4. Hobbyist diagonal cutters, full or semi flush cut. Many options, here’s one. $5-30. I use these to cut filament, wires, strip wires (carefully), and sometimes stray printed filament off of a print in progress. You need this more often than you realize, and small cutters are easier to use than scissors or a larger pair.
  5. Hobby knife with extra #11 blades. I recommend: one. These are useful to clean up printed items, but more importantly these help keep your nozzles clean if they drag through printed parts accdentially as you can scrape off the filament easily. You can also use the blades (carefully!!!) to lift parts from the print bed. If you do this, remove the blade from the knife and place the entire blade edge flat against the print bed at a low angle. Work the blade slowly under the part until it detaches. Do this at multiple points around the perimeter of the part.
  6. Feeler gauges. I recommend: one, two. $10-25. You’ll need these to “gap” the space between the print bed and the nozzles, and to re-validate anytime you adjust the print carriage. The Lee Valley set here is superior because they’re 5 1/2″ long and focuses on thinner sizes, even though you’ll need to convert from imperial to metric. (Most sets at e.g. auto supply shops are only 2-3″ long.)
  7. 5″ (short) 10mm wrench. I recommend: one. This is required for adjusting the height of the print nozzles. I believe KS2 backers now get this included, but I might be wrong.
  8. 6″ adjustable wrench. I recommend: one, though mine is thinner. For tweaking all the various nuts on the printer without needing a full wrench set.
  9. Some clean rags / washcloths
  10. 100% Acetone. $5-10. Available at any paint store.
  11. Window cleaner in a spray bottle. $5. You’ll want this to apply Kapton tape to your print bed. Mine’s citrus based because it smells nicer than melted plastic. :)
  12. Old / inactive / promotional credit card. I use an empty Tim Hortons gift card (they’re free!) You’ll use this to “squeegee” the tape.

Filament storage

One thing that I had to figure out for myself is that PLA and ABS both like to absorb moisture from the air. Have a drying solution figured out before you unseal the filament from the bags as they arrive. This means a resealable air-tight container with a dessicant large enough to hold the filament spools – the ORD spools are 10″ in diameter.

I assembled containers from buckets to keep my filament dry. The cost is about $25. You need:

  1. A clean bucket, anything from 3.5 to 7 gallon works
  2. Gamma Seal Lid
  3. Reusable SIlica Gel Dehumidifier
  4. 5cm of hook and loop tape (e.g. Velcro)
  5. Your filament, of course!

Assembly instructions:

  1. Spin ring off of Gamma Seal lid. Place on top of bucket. Invert and apply mallet or foot until well seated.
  2. Attach dehumidifier to lid using strip of hook and loop tape.
  3. Place spools of filament into bucket. A 5 gallon bucket will hold 4 ORD Solutions spools.
  4. Spin on lid.

Here’s a short video of the finished product. The dehumidifier crystals turn clear when saturated with water, and can be “recharged” in an oven for 3h at 300F. They last indefinitely.

If you leave your filament out for even just 24h, it can start to become water logged. You’ll know this happens when you are extruding and you see steam rising or hear a quiet “popping” sound, or for transulcent filament you see bubbles in the extruded filament. To fix this, you can put the spool in a 150-170F oven for 1-3h, and let thoroughly cool before use. Be careful to calibrate your oven before trying this!

Optional tools

I have all of these – you can get by without them if on a budget, but for best results I recommend them. Sorted in priority order:

  1. Den-On 70-51-00 Cleaning Pin Set. $6. Picture here. This is an incredible tool, which is effectively 3 14cm long wires, of 0.8, 1.0 and 1.5 mm gauge, held together by a soft green rubber. You can use these to clear blockages in the hot ends while they’re still hot and push stuck filament out of the extruders.
  2. 9/32″ socket driver. $5. I use a screwdriver that takes various bits and a socket from a kit similar to this one. This is the exact size for the nuts underneath the print bed. With a screwdriver handle you can more easily give all 3 printer bed nuts the same amount of turn and raise the print bed evenly, or offset by 1/8 of a turn if you want to tilt it just slightly.
  3. Zip and twist ties. I use quite a few of these for cable management.
  4. 12″ / 30cm metal ruler. $5-10. I have a cork-backed Westcott R590-12 that I probably bought for school years ago. For general measuring.
  5. IR Thermometer. I recommend the Pro Exotics PE-2. $40 with free US shipping. This unit has an adjustable emissivity setting, which you can use to adjust for the different properties of materials you’re measuring.
  6. 12″ Starrett straight edge or rule. I recommend: one, two. $60. You can’t buy a better straight edge, as these are accurate to ±0.0002″ per foot. This plus feeler gauges will help you determine any warp, bump or cup in your printer bed. I find this a faster approach than mounting a dial indicator to the print carriage and measuring values all over the bed.
  7. Dial indicator + optional metal base. I recommend: one. I used this prior to getting the Starrett straight edge for checking bed flatness. They’re still useful for checking out-of-round for various metal printer parts, but this is an advanced step that many of you won’t need. You can print a holder that mounts to the X carriage to measure flatness of the bed. I don’t recommend this approach anymore, as dial indicators are both more expensive and more fiddly than using a straight edge plus feeler gauges.


These videos and the text below them walk you through the most salient points. I picked up my printer from the factory, so I skipped the first 3 videos.

Setup tips and tricks

  1. I had a hard time figuring out how to use the lint-free cloth to act as a filament wiper. First, save your twist ties as you unbundle cables. Cut the provided cloth into strips. After feeding filament into the extruder, below the short tube that’s below the extruder, wrap the cloth around and around the filament like you’re wrapping a sprained ankle. Use the twist tie to hold the cloth against the filament. I wrap the tie around 5 or 6 times, then leave about 3cm free for twisting together to apply sufficient friction. You want to tighten the twist tie enough so that, as the filament feeds, most of the cloth stays below the tubing.
  2. When feeding the filament, note that the hole in the extruder is smaller than the hole in the mounting plate. As a result you may find the filament gets stuck in that lip. Don’t force it! I lost a huge piece of my thumbnail when my hand flew up into the extruder gear. You could probably epoxy/fill in the lip to have a smoother infill, but I’ve not tried this yet.

My next article will be about the software stack.

Understanding race-induced conflicts in CouchDB 2.x

Update: This was originally written about BigCouch and Buttant, prior to the release of CouchDB 2.0. Everything in this writeup applies to CouchDB 2.x as well.

Distributed databases with a near-real-time multi-master configuration – such as BigCouch, coming soon to Apache CouchDB – must deal with the potential of simultaneous modifications of a single resource. While the approach taken by multiple single-machine Apache CouchDB servers using regular HTTP replication is well understood, the situation changes a little bit when dealing with BigCouch-style internal replication inside a cluster.

I think it’s time to have a better understanding of what this means, and what impact this has on you as an application developer. Most of the time, there’s no change – to your app, a BigCouch-style cluster looks and feels like a single Apache CouchDB node. But when making near-simultaneous writes to the same document from different clients, you may experience document conflicts that you wouldn’t have with an Apache CouchDB 1.x single server.

How does this happen? Bear with me – this gets a bit complex. Hopefully this diagram will help.

Continue reading

on the workbench: kurzweil k2500(sw)x

I’ve owned my Kurzweil K2500SWx since shortly after it was released in the summer of 1998. It’s always been my primary controller keyboard for the studio, usually sitting between the monitor and the computer keyboard tray. When I lived in Japan for two years, it was the only synth to come with me; the rest went into deep storage or were loaned to friends. I find its VAST architecture very flexible, and it’s still nice to have a hardware sampler, even if it’s limited to 16-bit 48kHz.

Waynemanor Studios 2.0, circa May 2010.

So it’s no surprise that it’s had a few mishaps over the years. And while Sweetwater graciously offers “lifetime free technical support,” there’s the hassle of shipping the unit across an international border, and the scarcity of parts to deal with.

This holiday weekend I fixed 4 nagging problems: a digital jitter, a failed front-panel button, failed aftertouch and a fading front-panel display. Here’s how, since it took me a while to research and maybe you’ll need to do it yourself someday.

Continue reading

how NOT to publish a game

A game I tried out at PAX East 2012, Orion: Dino Beatdown, was just released. While the game felt fairly unpolished on the convention floor, I felt it might be a good (and hopefully cheap!) time-waster for my small group of friendson release  – the way we used to take 30 minutes for a few rounds of CounterStrike:Source or Left 4 Dead.

My friend bought the game at release and confirmed my worst fears: it’s buggier than any other initial release he’s seen, including the venerable ArmA series. Other games recently have been released with some bad bugs, but nothing compares to this massive list, provided by my friend LeeT on IRC:

  • When you run it the first time it does the usual install redist 3rd party stuff. However, the game does not wait for that to finish and launches anyway.
  • It only randomly saves any key bindings, audio or video options.
  • 80% of the time, it never even populates the server list.
  • When it does populate the server list, it will often misreport servers as being full.
  • The server list has clickable headings (map, pop, ping time etc) but doesn’t sort.
  • Refresh button on the server list does nothing.
  • If you join a full server (or server it thinks it’s full) it will show you a dialog saying it’s full with 2 buttons (OK and Close) that do the same thing.
  • The server list has scroll bars that don’t adjust dynamically to the size of the list, so it’s always the same ‘length’
  • On the off chance that it will let you try to join a server, it will usually crash.
  • Assuming you get IN to the game:
  • Lots of crashes to desktop, at random.
  • Sound effects randomly cut out entirely
  • There are 3 classes, but if you select auto-select, it will always set you to assault
  • Balance is off: Wave 1 will be a breeze, wave 2 is like 50 T-rexes.
  • The maps are huge, but the waves are fast and intense so there’s no reason to move from base.
  • In the base, there are objects (equipment stations, etc.) that you can walk right through – no collision.
  • Part of the mechanic is each base has its own generators (out in the open?) and the dinos try to eat them. However, only the raptors will attack them.
  • Dinos clilp halfway into buildings when they’re trying to eat you (and if you’re too close, yes they will attack you, through the wall, and vice versa)
  • Sometimes the hordes of T-rexes etc, will suddenly just wander off for a while (they eventually come back). Bored, I guess?
  • The flying dinos (Pterodactyl things, but they look different) occasionally fly backwards, hover, etc.
  • Vehicles can climb trees
  • AI pathing is beyond broken.
  • The raptors usually jump when they attack you; for hilarity, stand at the edge of a base door opening and watch them try to jump through it
  • If you die, you go into spectator mode and everything is at a 1960s Batman 45 degree angle.
  • When dinos die, they make a human ‘uhh’ sound
  • You’re also supposed to re0spawn at the next wave but that doesn’t work either
  • And the truly ugly:
  • It shipped with parts of the Unreal SDK that are not supposed to be redistributed (MakeISO, “ExampleGame.exe”, etc)
  • If you think that’s bad, it shipped with Maya and Max tool scripts too!
  • Bits of artwork assets (for dinos, equipment and achivements) were allegedly stolen from deviantart and other games. (N.B. They’re supposedly being replaced in today’s “miracle patch.”)

The official Spiral Game Studios explanation for all of this is “a game directory name was changed resulting in some links and connectivity breaking.” No comment.

happy friends pet clinic

Apparently Microsoft thinks you want to install Windows XP Mode just so you can run the Happy Friends Pet Clinic application. (I bet it’s written in Microsoft Access 2.0.)

Microsoft Windows XP mode running the Happy Friends Pet Clinit application.

Microsoft Windows XP mode running the Happy Friends Pet Clinit application.

P.S. How can this be the ONLY hit on google for “happy friends pet clinic”? Seriously?