Category: Uncategorized

Bye bye Diesel, Hello Volt

About 7 years ago, I began the search for a new car to replace my aging Volvo S60. I really wanted to go greener than a straight-up gas car, but I wasn’t terribly happy with most of the hybrid options that were available at the time. On the other hand, since most of my personal driving is just a couple of miles back and forth to work every day, I couldn’t really justify something very expensive/luxurious, it just wouldn’t get used enough. Audi, however, was promising the release of an A3 with this revolutionary new “Clean Diesel” technology that would push over 40MPG on the highway with drastically reduced emissions. Long story short, that’s I wound up buying.
Fast forward to today, and we all know how that ended, with one of the biggest class action settlements in history finalized just last week, for Volkswagen/Audi’s blatantly fraudulent advertising claims and NOx emissions up to 40x the legal limit. Not only were they not “clean”, but far dirtier than anyone could possibly have imagined.
With my personal settlement payment pending shortly, I decided the replacement for the A3 SuperPolluter needed to go full electric to try to exact a little bit of karmic payback for my unwitting years of complicity in the Dieselgate disaster. There are lots of better hybrids now, but still – what about something that could go full electric for most of my daily driving? Sure, I’d love a Tesla Model S, but the luxury pricing again makes no sense for someone who only drives 10-20 miles a day most of the time. How about a Leaf? Well, yes, it’d work great most of the time…but… there’s still that nagging range anxiety. What about those days where I really do need to go somewhere, or make multiple short trips that will exceed the battery-only range? It was starting to seem like I should consider researching the one car living squarely in feared territory: The American alternative, the Chevy Volt.
When I was a kid, my Dad owned a succession of Buicks. Evidently he got good pricing from one of his medical patients, who owned the local dealership and was willing to cut him a deal. My recollection of those Buicks, though, is classic 1970’s GM: Heavy, stodgy, gas guzzling, and thoroughly unreliable. He drove his last Buick with a gaping hole in the dashboard for years after the speedometer broke, and the dealership was somehow unable to successfully fix or replace it. My only recent experience with GM cars in the last two decades has been the occasional car rental on vacation, where I’ve usually been left relatively unimpressed by the experience. Nothing bad happened, but “boring”, “plastic”, and “unimaginative” are the words that leap most readily to mind.
So it was really on somewhat of a lark that I headed to the local dealer a few months back to take a look at the Volt. I definitely went in with low expectations, but a short test drive left me pleasantly surprised. The 2017 car was quiet even with the engine running, and had snappy acceleration, comfortable leather seats, and crisp handling. It wasn’t thoroughly ugly, nor as unappealingly “concept”-like as the original Volt body style from 2011, and while it still suffered a bit by using too much plastic in the interior fittings, it wasn’t so much that the balance was tipped towards an overly cheapened feeling. I came away far more intrigued than I expected to be. This was not, to steal a line from a different GM division, my father’s Buick.
The Volt holds a somewhat unique position as the only car on the market today that has a significant all-electric range (53 miles in the 2016/17 model years), but also has a gas engine whose purpose is not to drive the wheels directly (in most cases), but rather to run a generator that extends the electric range of the car as needed, even if the primary battery’s capacity has been essentially fully exhausted. Unlike most hybrids, where the gas engine generally can be expected to kick in after at most a few miles of ordinary driving, the Volt will happily run its full 53 electric miles before the engine ever even starts up. So on my typical workdays, with a full charge overnight, I would still be using zero gas, just as if I had settled on the Leaf or the (overpriced, in my opinion) BMW i3. But if I need to go further, or even take a bit of a roadtrip, then I’ll have no limits to how far I can go, as long as I’m willing to put some gas in the tank on those rare occasions.
I did finally pull the trigger on the Volt, choosing to make a detailed selection of options from the dealer’s menu and have a car manufactured to my particular specs, rather than picking one off the lot.  For example, lots of the available inventory included the $500 in-car GPS option, but I’ve essentially given up using the GPS in my Audi in favor of running Waze on my iPhone, for its much better local traffic reporting. Since I saw no particular reason to change that behavior, why would I want to spend the money for a GPS I’d never use? Further, the Volt includes a Carplay-capable touchscreen, so if I really need to have the map in view, and I can stomach using Apple’s own Maps app (which is the only CarPlay compatible map option at the moment) I can still do that. I also wanted to load the car up with the optional safety and convenience features. The 2017 Volt has the many of the recent technical advancements, such as:

  • Automatic forward braking if it detects that a crash is imminent.
  • Obstacle and rear-crossing sensors
  • Lane-change and fast-approaching-from-the-rear warnings in the side mirrors.
  • Adaptive cruise control and computer-vision lane-keeping assistance. You barely have to steer on the highway at all if you’re not changing lanes, and the car will seamlessly maintain a steady distance behind the car in front of you if your cruise speed exceeds what the car in front is doing.
  • The usual ABS, traction control, and directional stability systems.
  • Auto-dimming bright headlights, again based on computer-vision detection of cars in front of you travelling either direction.

I picked up the car a few days ago and have put a bit over 100 miles on it since then, and I don’t regret it for a moment yet. No new surprises or disappointments in my choice have made themselves obvious yet, so I’m looking forward to several years of nearly emissionless driving. Bon voyage!


I have 4 unclaimed boards completed and ready to ship. This is also likely to be the last build I make, so when they’re gone, they’re gone.

Be one of the lucky owners and contact me to get yours.

In our last installment, I mentioned that XCOM 2 should be have been called “Tom Cruise’s Live, Die, Repeat:  The Game” for all the save-scumming required to beat the thing.  Last night I finally reached the end of the road and successfully completed the final mission, which sure felt like an achievement (of sorts.)

In the end, though, I had to restart the campaign three times to finally find the right mix of balanced buildup of squad armor, weapons, and miscellaneous capabilities to be able to survive into the later stages of the game where some of the nastier enemies start to show up, like the Sectopods and Gatekeepers.  A critical element of mission strategy was to always have a grenadier on hand with EMP Bombs or Gas Bombs gained from Experimental Grenade research.  These were good for inflicting large amounts of damage from range to the nastier groups as they arrived, rather than having to do protracted gun engagements with them to wear them down over time.  The latter was frequently a recipe for someone in the squad to wind up dead or heavily wounded.  I also didn’t start to train Psionic soldiers until relatively late in the game, but they became pretty indispensable for mind control once I did have them, allowing me to frequently pit enemies against each other and keep my own guys out of harm’s way.

The final game stats showed that I had won somewhat more slowly than average, in terms of simulated days of game time, and having spent nearly a thousand supplies (credits) less than average along the way, so I’ll consider that a compliment of extreme efficiency and thriftiness on my part.  The problem, in reality, was that I was slow to establish contact with new areas, which led to a low monthly income, and I wound up spending a lot of intel to purchase supplies on the black market.

So final verdict? Maddeningly frustrating, but very satisfying to finally beat, even if I did have to rely too much on restoring the game in the early stages, after particularly unlucky pronouncements from RNGesus.  As the troops leveled up, I found that I was being significantly more successful in-mission and not relying on restores nearly as much.

XCOM 2 is awfully hard!

I’ve played virtually all of the XCOM games, going back to a “lost weekend” in the early 90’s playing the original DOS version.  The new XCOM 2 better re-creates the urgency and “just one more mission” crack-addict feeling better than any installment since the original, with just one small difference:  this one is freakin’ hard.

I consider myself a reasonably good player, but they really could have called this one “Tom Cruise: Live. Die. Repeat: The Game.”  Even on just the “veteran” level, one up from “Rookie”, I’ve found myself having to play many missions out exactly as the movie unfolded:  Tom takes a turn.  Dies horribly.  Reloads.  Takes a slightly different turn.  Dies horribly.  Reload.  Repeat… until finally I’m able to just barely survive an encounter without half my squad being rendered unconscious or dying in the process, at which point I save again and edge forward to the next encounter.  Maybe several hours later, I can finally complete the mission in a reasonably successful manner after countless reloads.

Furthermore, the game heavily penalizes “mostly succeeding” in a mission, because it enforces lengthy game-clock delays to heal gravely wounded soldiers back to usable status for future missions.  Combined with the high “supplies” (currency) cost to add new soldiers to your roster, the penalty for allowing yourself to complete missions with wounded, killed,  or captured soldiers is very steep.  The overall result is that allowing soldiers to be killed or captured is a recipe for having to take on increasingly difficult missions with an understrength squad, and you dig yourself into an unretrievable deficit in the overall campaign.

I’m enjoying the game, but overall I just feel that the balance is tipped a smidge too far in favor of true diehard players – I honestly can’t imagine trying to play this game in the higher difficulty levels or in IronMan where there are no restores allowed.  I know there are 22 year olds who must laugh at my pain, but I think Firaxis missed the mark here.  #LoveHateRelationship

So far, I only have two firmly interested parties in an SP-4 card from the second batch, but I’m going to make at least 3, and I’ve ordered enough of the critical SCSI chip part to build up to 6 total.  That way I’d have a few on hand for ad-hoc orders in the future, or to sell on eBay or something.

Feel free to comment on this post or the previous one, if you’d like to add your name to the list.

Some parts are coming from China via The Slow Boat, and combined with PCB fabrication it takes roughly a month to get everything together, so I’ll post again when I’m about to start actually assembling the new batch.

Based on comments I’ve received over the last few months, I think I now have enough takers to build a second batch of Ensoniq-compatible “SP-4 Rewind” SCSI cards.  If you are interested in purchasing, what I need you to do is to post a comment in response to this post containing an email address that I can contact you at.  I will moderate the comments so that your email address doesn’t get posted publicly to the actual comment section, but that way I’ll have a way to get in touch with you about cost and timeframe for manufacturing the next batch.

Hope to hear from you all soon-



A few posts back I was whining heavily about the gyrations it was taking to get an arcade emulator running well on a Raspberry Pi.  This had nothing at all to do with the cpu capability of the Pi (especially since upgrading to a Pi 2), but was all about the nightmares of Linux configuration, and to some extent, the less than stellar support for Linux by the makers of the arcade control hardware.

The guy who runs the joystick company had convinced me to send back the stick’s circuit board so that it could be upgraded (one time process) to support user-reflashable firmware and better Linux support: no need to recompile a custom kernel and all that.  Well, it took a month for the round trip to England and back, but it did as he advertised. But of course, there’s a catch.  The new firmware uses a completely different technique to upload the joystick control maps than the old firmware version. 

This is where it gets technical and ugly: the old version sent USB control setup packets to the default control channel, while the new one uses HID output reports to the third of three separate endpoints and HID interfaces.  Worse, the guy who wrote the original Linux utility was no longer available to lend assistance.

I know a fair amount about USB, but this went way deeper than I was used to. I also hadn’t monkeyed with any C or C++ in a LONG time.  I had to download and read significant hunks of the USB spec, the hid spec, and some pretty sparse documentation for some abandoned Linux libraries, and restructure and rewrite some decent hunks of the original app.

Shortening this long story, in a few hours of tinkering on and off over the course of about a day, I was able to completely upgrade the original app to enumerate the correct HID interface, navigate the path to the correct report descriptor, and output the correct sequences of bytes to successfully reconfigure the stick on demand. At the same time, I preserved the original logic for anyone using the older stick firmware and made the whole thing completely transparent to the user, while at the same time adding more robust error checking and fixing one or two other small nits.

Then I wrapped the whole thing back up and posted it to github. 🙂 Not too shabby for this longtime program manager.  I have to say, it’s been teaching the APCS class for the last two years that has given me the confidence in my own coding skills again to tackle stuff like this.  Yes, my degree was in CS, but that was almost 25 years ago and boy, those muscles were a bit rusty.

Well, last time I posted I mentioned I’d put up a kickstarter to make some more SP-4 SCSI boards for other Ensoniq TS owners.  There may not be all that many of those people left – we didn’t make the 21 that I needed to be able to fund the kickstarter and to get the price down aggressively via volume.

But I did have enough real backers to fill some orders anyway: I funded the small run myself, and I’m happy to say that I just completed mailing the short run of 6 fully assembled units to people all over the world – France, England, Czech Republic, and the U.S.!

Here are my little babies, just before packing them up to go out the door:


That was a fun project!

As a side note: I was pretty surprised by the crazy Kickstarter “pyramid” that starts as soon as you put a project up there.  People start pledging a dollar to you, asking that you do the same for them, hopefully as a means of driving traffic back to their kickstarter, and hoping that yours won’t succeed so they’ll never have to pay up.  And the bullshit personalized spam for offers to sell you the magic secrets to getting the backers you need, and so forth.  What a nuisance.

Last week I got some more parts from which were added to the cardboard controller box without too much hassle.  The first was a weighted arcade spinner control for games like Tempest, Arkanoid, Warlords and anything else that had a paddle controller.  (In essence, it’s a one-axis mouse.) It feels great in the hand but you have to adjust each game’s sensitivity to fairly closely match the original hardware or it may not behave right, doing things like moving “backward” if you spin the knob too fast.  I found a great page to help with this here, which tells you the exact conversion factor for the 1200-pulses-per-rotation Ultimarc controller to most of the older games which typically had much lower resolution encoders.

I also got a full-size trackball (3″ diameter”), because let’s face it, playing Centipede, Crystal Castles, or Missile Command with a joystick is just wrong.

But that’s not what I’m here to talk about today.  What I really wanted to talk about was HDMI video on the Raspberry Pi.  If you’ve read this blog long enough (which is effectively nobody but me), you know that a few years ago I did a whole bunch of HDMI-related test system development at work.  So I know far more about the ins and outs of HDMI that anybody really should have to, but it didn’t really help today…

In figuring out what sort of display to put into this arcade build, the obvious solution is take advantage of the Pi’s built-in HDMI output, which provides an all-digital link directly to an LCD monitor and digital audio as well.  This is a good thing because the Pi’s analog headphone jack is well known for having a lot of noise, for arcane reasons that aren’t worth getting into here.  Adafruit, as a major US purveyor of RPi accessories, has several very nice little LCD displays perfectly suited to embedding into a project at various sizes and resolutions.  They’ve sourced the displays from various Chinese manufacturers and seem to have paired most of them with one from a family of little driver boards that they’re getting from another Chinese manufacturer that does the work of converting the HDMI input to the LVDS standard that the panels natively require.  In particular, the one I chose is 10.1″ diagonal and has a native resolution of 1280×800, which does not quite match the “HDTV” mid-range standard size of 1280×720. This mismatch seems to be typical for small LCDs for some reason.  This matters.

The driver board interrogates the connected LCD panel and determines its native resolution, and then in turn communicates the capabilities of the display back to the computer via the HDMI cable using a standard format called EDID that describes the pixel size of the display and various timing parameters so that the computer can generate video that the display will know how to deal with.  There are several “standard” modes defined by the HDMI spec at typical TV frame sizes, and there are also many other standard modes defined for computer monitors using the same method.  The difference is that the standard for computer monitors does not include audio, while HDMI does, so when a HDMI sender thinks it’s attached to a computer monitor, it stops sending audio.

So we hook this thing up to the Raspberry Pi, and it claims to be a computer monitor, so not surprisingly, no audio comes out.  Well, the Raspberry Pi people were pretty smart and figured this out a long time ago, and added a boot-time setting that is supposed to force the Pi to produce HDMI audio even if the monitor doesn’t claim to support it.  Trouble is, it doesn’t work.  At least not with this particular monitor.  Now, you can force the Pi to produce an “HDMI standard” resolution of video, and then the audio starts working the way it’s supposed to, except then the driver board produces a resized picture at something other than the panel’s native resolution, which while not awful, is not as sharp as it could be. I just want sharp video AND actual audio output. Not too much to ask for, is it?

After Adafruit’s recommended settings failed to produce the desired results after several hours of putzing around with this, trying in vain to use the settings recommended on their site, and a large quantity of unsuccessful reboots and experiments with other settings, I had to give up and settle for a little bit of scaling. Even Adafruit, the seller of the panel, hasn’t figured this part out, but neither do they warn anybody – their forum has a thread full of people wanting to return the monitor, who all think (like I almost did) that it’s defective because they can’t get any sound out of it (with the recommended settings).

I just wanna play some games now!

Well, there seem to be some people interested in getting a shiny new SP-4 clone of their very own, so I have launched a Kickstarter to fund the manufacturing of a new run.  By building in bulk, everyone gets them for a lower price – $110USD, which is far less than Ensoniq charged when they were new!  Shipping in the US will also be free, $15 anywhere else in the world.

There are 30 days to complete the funding (it’s an all or nothing proposition, like all Kickstarters).

See more details and back the project yourself at:

%d bloggers like this: