SoundPusher v1.0.0

And we have a release (which is fairly untested, but it works for me). This is first time I’ve released something post-Gatekeeper, so I hope I signed all the things correctly. Also the first time I’ve attempted an installer.

I’ve redone the synchronisation between the input and output thread about 5 times now, let’s hope this variant works out. It’s easy if you don’t care about latency, but trying to get that as low as possible without glitching and staying real-time is quite hard. By default, only AC3 encoding is enabled as DTS support in libavcodec is only experimental. EAC3 seems to distribute packets over multiple SPDIF frames, and thus seems to be a bad choice due to further increased latency.

Diablo 3 sounds quite different with 5.1 sound for example, as the different screen corners map to in front or behind your character (and thus the listener) due to the isometric perspective.

Report any issues or suggestions on the GitHub page. Happy multi-channel audio-ing! :-)


I’ve been on a bit of a coding spree during my time off work, and managed to make some progress on my old attempt to provide a virtual 5.1 sound-card that does real-time AC3 encoding to a digital output connection. This time around, I didn’t actually stop a third of the way in and it actually works (and quite well at that — at least on my system — if I may say so).

The code is on GitHub. If you’re interested helping with testing, feel free to get in touch.

For some internals, I reduced the number of components to two, as I eschewed AudioUnits (and thus the separate encoder) altogether. There’s now just the user-space LoopbackAudio driver (AudioServerPlugIn) and the SoundPusher application that reads from the loopback-driver, compresses that and then sends it to the real digital output stream. Latency is reasonable from my experiments, as is CPU usage.

Puzzle Games

I really enjoy puzzle games. Here’s a list of some I’ve enjoyed:

  • 3D
    • Antichamber
    • Kairo
    • Portal (2)
    • The Talos Principle
  •  Platforming
    • Braid
    • FEZ
    • The Swapper
  • Pure
    • Hexcells (Plus / Infinite)
    • Picross 3D
    • Slitherlink
    • SpaceChem

All of these are well worth buying.

Things I learnt about my Synology NAS

The following points have been observed on my Synology DS414, but I would think that most of them are due to the software stack, and not hardware specific.

  • DDNS updates with FreeDNS require explicit use of username and password, instead of allowing use of the authentication token.
  • DDNS update interval seems to be hardcoded and not configurable (through the DSM UI). I’d prefer the NAS remain hibernating at night.
  • The AFP (Apple Filing Protocol) implementation is based on the old-ish version 2.2.3 of Netatalk. Netatalk requires a separate database to record file to id mappings (managed by cnid_dbd) which is purged by the NAS on every reboot. This database is created as soon as a user connects to the volume via AFP and can take multiple hours to build if the volume contains many files. This makes all other accesses quite slow while the database is rebuilt.
  • Hibernation leaves fans running.
  • If your AFP connections to the NAS reproducibly crash and disconnect (with very flaky behaviour on the Mac, no clean dismount, endless reconnect retries and replays “AFP_VFS afpfs_DoReconnect” when attempting to create a Spotlight index on the NAS volume, a likely cause is problematic extended attributes on files on the volume. These can be removed (after ssh’ing onto the NAS and going to the correct shared folder) with 
    find . -type d -name "@eaDir" -print0 | xargs -0 rm -rf

Gone Home

Gone Home peaked my interest when I saw the trailers and reviews on its release but the asking price seemed a tad high, so I put it on my wish list and forgot about it. A few days back, it popped up in a Humble Store flash-sale and I went for it. In retrospect, I would’ve been happy paying full price, but it’s not as if waiting did any harm.

I really, really enjoyed it, but I can see why people dislike it (or think very little of it — in game terms). It uses many of the usual “tricks” for evoking emotion (great voice acting coupled with musical “riffs”, strong nostalgia, …) but despite knowing these things were used on me, they worked just fine and affected me. (As an aside: I also played The Stanley Parable, which seemed like it tried too hard to be clever, then you realise it actually is cleverer than you gave it credit for, but it remains an entirely left brain experience — sort of the opposite of Gone Home.)

Gone Home is like a puzzle game where you slowly assemble pieces of the story in your head from hints scattered around the house. While the main thrust of the plot is very “in-your-face” (but still well done), you might miss entire side-stories in the puzzle, but they’re there for you if you pay attention (and they make the game better by providing a more complete, internally consistent picture). The developer commentary is also interesting, especially how they’re coming from the “1st person interactive simulation” school of game design (e.g. Looking Glass’ classics, * Shock, Deus Ex, …).

I recommend it highly, but I’m not sure how much of my enjoyment of it stems from 1990 nostalgia of my own teenage years, so buyer beware.

Eizo Foris FS2333 and display sleep with a 2010 iMac

I’ve bought a new secondary monitor to replace / supplement my (ageing but still fine) Dell WFP 2407, and settled on the Eizo Foris FS2333 (requirements were: 1080p native, 23-24″, HDMI and DVI / DisplayPort inputs, IPS panel, preferably matte).

So far I’m very happy with the Eizo, but it has one problem: It would not stay in display sleep (power saving) mode when driving it via the Mini DisplayPort output of my 27″ iMac (Mid 2010). I have it connected via an Apple Mini DisplayPort to DVI adapter. As soon as the iMac sleeps its internal display, the external Eizo would wait for its 15 second signal timeout and then enter sleep mode with backlight off for about a second, then turn the backlight on again and wait for another 15 second signal timeout, enter sleep for 1 second, and so on. This is obviously not very power saving (and probably terrible for the back-light).

It turns out the manual (Page 37) is actually helpful in this case: You can fix this by changing “the exiting method from the power saving mode” via a the following button presses:

  1. Press the POWER button to turn the monitor OFF.
  2. Press the VOL– on the monitor for 5 seconds or more (which then turns on with the setting changed).

I have no idea what this setting actually changes, but the Foris now stays in sleep mode when it should! You can verify whether the setting is active by checking for a “*” suffix in the menu title of “Information” in the Setting menu. Repeat the same procedure above to change the setting back.

There is a second, similarly hidden setting for changing the authentication method for HDMI (which also doesn’t give any information about what it actually changes). The way to set this option is similar to the above, but instead of VOL– use the SIGNAL button; see Page 31 of the manual.


Mechanical Keyboards for the Mac

Any odd USB keyboard will of course work with a Mac (with Mac OS X allowing you to swap the modifier keys as you see fit), but if you’re after a mechanical keyboard that also has the Mac-specific symbols printed on its keycaps, then your options are more limited:

  • There’s the Das Keyboard, which has an odd-dual USB pass-through arrangement as well as a glossy black plastic finish, which attracts fingerprints rather nicely.
  • Another option is the Tactile Pro, whose look and design I just don’t get on with at all.
  • If you want to go for a keyboard with Buckling Spring switches instead of the usual assortment of Cherry MXs, the only option is the Unicomp Spacesaver M.
  • A rather custom option is provided by the WASD Keyboards: They build you a keyboard with laser etched or engraved custom keycaps from your design (and they have a pre-made Mac layout).

I have a few more thoughts to offer on both the Spacesaver M as well as WASD V2 keyboards, as I bought one of each. Note: Noise is no consideration as these are my “home” keyboards.

Unicomp Spacesaver M

The keyboard feels heavy and very solid, although the finish of the plastic is not of very high quality. The seams are uneven and if you put pressure on the case, you can hear the plastic creaking. The design of the Mac-specific keycaps is rather slap-dash and not done with much care (no symbols for ⌘ or ⌥, odd alignment of symbols and text on the function keys). The ugly Unicomp logo fits right in (but you can order a cheap Black No LED Overlay from them — just lift and detach the existing one with a sharp thin blade and put the neutral one in its place).

All that being said, I do actually like the look of the black case with the dark grey modifier keys with the lighter keys.Unicomp Spacesaver M (black)

The switches themselves are really nice and I enjoy typing on them. They keys are comparatively high and have a good amount of stroke depth.

The key-mapping enables the Mac-specific shortcuts (Expose, Volume, Media Keys) on the F-keys by default, and you have to hold the Function (fn) key to get to the normal F-keys. You can lock (and unlock) the fn-key state by pressing Left-Shift + fn if you prefer to mainly use the F-keys directly (but you need to remember to redo this after every sleep / wake cycle).

The USB-interface takes a fair amount of time to wake up from a sleep-state (even longer if you used the keyboard itself to wake the computer), so you’ll usually to wait 3-4 seconds without key presses for the keyboard to re-initialise itself.

After a few weeks, my Spacesaver M developed problems with certain keys not registering (usually after Sleep), but replugging the keyboard seemed to fix it. After a while a (different) set of keys stopped responding altogether, and no amount of rebooting, replugging or shaking would fix it. After contacting Unicomp, they thankfully offered to ship me a replacement keyboard (even though their warranty statement specifically excludes warranty for internationally shipped products: Thanks, Jeanne!). The replacement worked fine for a while, but then developed very similar problems with a subset of keys no longer registering at the host.

Last weekend I finally found the time (and the needed 5.5mm nut) to open one of those keyboards up, and it turns out that the internal plastic ribbon cable, onto which the keyboard controller board (which is labelled Ruffian_V4_2) is directly screwed on top of, is not making full contact. The holes in the plastic have been partly ripped out and the alignment between the contacts on the backside of the controller board and cabling plastic sheet was misaligned. After a few attempts at reseating and realigning the controller board and the plastic sheet (and not screwing the board back in place too tightly because that prevented contact again) I seem to have repaired keyboards. I don’t know whether the connection between the plastic sheet and controller is that failure-prone, or whether international transport played a role, but my two keyboards (original + replacement) failed with exactly the same symptoms (and similar internal damage to the ribbon cable’s screw holes from the affixing of the controller board).

WASD V2 87-Key Custom Keyboard

After the Spacesaver M repeatedly failed (and before I figured out that I was able to repair them), I was looking for alternatives, and via Jeff Atwood’s CODE keyboard found out about WASD Keyboards. The CODE keyboard itself was of no particular interest to me, as it has Windows-keycaps as well as a backlight. It did have a configurable key-mapping, though (via DIP-switches).

Nonetheless, a closer look revealed that WASD will make a keyboard with anything you want printed on it (by giving them an Adobe Illustrator or PDF file from a defined template), and that their “normal” (non-CODE) keyboards have the same configurable keyboard controller. I had no interest in making my own custom layout, but they provide a very decent pre-made Mac-layout.

After some back and forth between the normal (102 keys) or tenkeyless (87 keys) version (which unfortunately are the same price — I’d have thought buying less plastic, switches and keys would’ve resulted in some savings…) and then a short interlude in the customs office, I obtained my custom keyboard with Cherry MX Blues:

WASD V2 87-Keys Mac

The design is very understated, with sharp edges and very little flourish or extraneous plastic. The case and finish is of a very high quality and I was positively surprised with the quality of the lettering; it does not look custom or one-off at all. After configuring the DIP switches (1 and 6 to ON for enabling the Mac-layout and the fn-key), it behaves like a proper Mac keyboard. In contrast to the Spacesaver M, the Function-keys only map to the function keys (and not any Mac specific functions) which I actually prefer. fn + insert / home / delete / end keys control media playback and fn + f13 acts as ⏏. Also nice is that the controller initialises very quickly after a USB-wake event.

The feel of the key-switches is nice (although the odd key initially seemed a bit reluctant to return back to its resting state after releasing it) but not quite as satisfying the Spacesaver M. It’s taken a bit more effort to get used to a keyboard without a number block than I would’ve though,  even though I work at a laptop all day at work. This is mainly because the subtle cue from my right pinky of the right side of the keyboard ending used to indicate the start of the number block, not the navigation keys.

In closing

Now that both keyboards are in a working state (as I’d ordered the WASD as a replacement after the replacement Spacesaver broke down and before I’d managed to repair them), I’m typing this on the WASD keyboard. I do actually prefer the feel of the buckling springs to the Cherry switches, but overall the WASD feels like it has much more care put into it, with a better finish and USB controller. That said, it is also a fair bit more expensive.  Both are enjoyable keyboards, but you should not order a Spacesaver M expecting a high quality plastic case and finish — you can expect high quality switches, though.

Alastair Reynolds — On the Steel Breeze

I finished Alastair Reynolds’ “On the Steel Breeze” yesterday and I really enjoyed it (but then I also liked “Pushing Ice”…). It’s set after the events of “Blue Remembered Earth” but is supposedly readable stand-alone, but to be honest I wish it hadn’t been so long since I’d read that because there were a ton of cross-references.

This book seems to have more a Culture vibe to it (and it seems oddly optimistic), and starts to move events from Solar-scale in the last book to something slightly larger. It starts off a bit slow, but then turned into a real page-turner for me (and only rarely employed the usual “cliffhanger at end of chapter followed by perspective switch / narrative break” strategy).

There’s quite a few coincidences and odd choices about resource allocation (elephants…), but none of these dragged the story down in my opinion. An improvement on “Blue Remembered Earth” in every regard (and that wasn’t bad at all to start with).


Tomb Raider (Re-reboot?)

I received my copy early and have been looking forward to playing it over the last few days a whole damn lot. I ended on 91% completion, then came back and got 100% (which I do rarely – two challenges are a real bitch (Mine Sweeper and Sun Killer)).

Really enjoyed it, and it looks awesome (especially considering how old the 360 is by now). Combat feels good for the first time in a Tomb Raider game, but I’d still prefer more tombs / temples / puzzles. When I got the achievement for “All Optional Tombs completed!” I shed a little tear, because reviews said later tombs were better and I expected a few more, but they were all short single room deals. I could also do with less semi-QTE scrambling across disintegrating bridges / burning buildings / whatever. Leave that to Uncharted.

Somewhere between an 8/10 and a 9/10.


I quite enjoyed this. I think in parts it tries a bit too hard to be ‘artsy’, but it is a compelling, mind-fucking first person puzzle game. The art mostly screams ‘coder art’, but it kind of works.

Sometimes it’s easy to lose the progression path and (re-)find the place where you’re expected to progress now, and I’m sure I completed some puzzles by accident (or because of bugs) that I wasn’t meant to be able to complete yet.
Also, controls can be iffy due to the first-person nature (e.g. distinction between drawing into the ‘away from you’ direction and up/down).

Took me about 16hours to reach the end (without having completed everything obviously). 9/10 for me.

Halo 4

Some thoughts on the single-player campaign (because fuck paying for Xbox Live Gold with the amount I’ve been playing the Xbox recently):

  • Great art and rendering technology
  • Impressive engine cut-scenes (especially characters and skin-shaders / lighting)
  • Difficulty was manageable but quite frustrating on Heroic (yes, I’m terrible). After switching to Normal I actually had some fun. The shield scaling for Heroic feels slightly off, everything just takes way too many hits to kill (I’m looking at you, Watchers). Also, it feels as if the AI cheats and moves enemies as soon as I have a nice shot lined up. Heroic and Legendary would probably be fun in coop though.
  • I never thought I’d say this, but I feel that there’s too many weapon options. Human, Covenant and Prothean versions of pretty much everything. Of course there’s subtle differences between them all, but a lot feel rather pointless.
  • The levels themselves were not particularly memorable, but the reconfigurable geometry was a nice idea (although I’m not sure it really added anything). The Forerunner architecture reminded me of the style of P.N.03, a game I still dearly miss a sequel to. Too often the flow degenerates to “Go somewhere for some reason that only makes sense if you played all games 5 times and read all the books, and then do the same thing 2 to 3 times to progress” (go through portals, push buttons, activate light-bridges). Mostly push convenient buttons / Cortana insertion points.
  • As alluded to in the previous point, it feels to me as if the story is getting worse and worse with each game (ODST and Reach sort of aside): Halo 1 and 2’s was fine, simple Humans against aliens (with the Flood sort of popping up) and some mystery as to the forerunners / Halo rings. Now we have all sorts wawa that feels more like Matrix 2 and 3, instead of 1 (Reclaimer, Mantle, Composer, Didact, Librarian, …). All this Jesus-complex, 1000s of years leading up to Master Chief (and his armour!) and then on-the-spot gene-manipulation bullshit just went over the top. The mystery (and awe) is sort of gone.

In summary, an above average single-player game with a convoluted story that grasps higher than it can reach, with slightly repetitive level design that is saved by excellent tech and me wanting to see the next cut-scene (even if it is mostly gibberish). Nonetheless, I still hope there’s more Master Chief (and Cortana). :)


After getting it in the Steam Sale I just finished this after ~19 hours spent on it. Some thoughts after my stealth / nearly no killing run-though:

  • Excellent world and visual design
  • Nice gameplay (closest relative I can think of is Deus Ex, with the multiple approaches depending on the powers you’ve invested in) and good missions
  • Powers are almost too powerful (e.g. Dark Vision, Stop Time, Possess, …). It’s supposed to be balanced by their rune cost, but the normal exploratory collecting got me to have ~5 runes left over at the end after purchasing anything stealth relevant.
  • The “celebrity acquisition” (that’s a line from the credits) didn’t really improve the voices IMO, I rather got pulled out of the world. “Why is Cersei a maid / tutor?”
  • The ending was lacklustre (1 line from Emily + some static 3D environments according to some outcomes / side-missions). Not much in the way of explanations for the plague or resolution thereof.
  • Why on earth would you use a 20 year old video codec (Bink) and then use that to encode your scrolling credits? It seems no-one can code a scroller anymore… ;_;

So, definitely enjoyable (especially at half price), but not close to GOTY for me.