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 http://www.marc-halbruegge.de/kcdread/kcdread.htm .

1) Download FrogASPI from http://www.softpedia.com/get/CD-DVD-Tools/CD-DVD-Rip-Other-Tools/FrogAspi.shtml .

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!

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

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?

how to fix couchdb in debian testing

Debian bug 644545 has been resolved in unstable (sid), finally. Debian couchdb is now in working order with package version 1.1.1-2. Thank you Laszlo!

As of 2012-03-30, the package has hit squeeze / testing. If you’re running this release, you don’t need to do anything special – just apt-get update; apt-get install couchdb

Previous pinning instructions below for posterity:

Continue reading

presentation at icel 09

so a couple of weeks ago i presented my third academic publication, this one titled “persisting chat for communities of practice.”

joan at icel 2009

joan at icel 2009

in layman’s terms, it’s a new logging system for online group chat (irc, jabber, etc.) with special integrations into non-synchronous systems such as web forums (academically often called asynchronous learning networks), blogs, etc. the goal is to make chat less transient and throwaway, to promote it to a first class citizen within the wide variety of mechanisms that can be used to help communities. it’s especially designed for communities of practise as described by lave and wenger out at xerox parc way back in the day. go read the linked article, it’s not half bad for wikipedia.

the system will be released under an open source license later this year. if you’d like to get involved, comment here using your real email address and i’ll get in touch.