Ataraxia Consulting

Peace of mind for consulting

  • 04 Sep 2013 » Binary addon design

    When writing your application in Node you may need to communicate with an external library or device that may be impractical or impossible to do from pure JavaScript. It may be that the overhead added from ffi is also too much for your application. Or – the least likely scenario – you have demonstrable proof that your compiler can generate a faster version of your algorithm than the V8 JIT can (while this might be easy to confirm on the micro case, it’s quite unlikely to be true for everyone given the varying CPUs and compiler combinations in use). If you find yourself in one of these rare cases, it is necessary to write a binary addon.

  • 06 Jul 2013 » You're going to have to rewrite it anyway

    Node v1.0 is approaching, and v0.12 is imminent (as far as that goes for FOSS projects). As we work towards getting v0.12 out the door, there have been a lot of changes happening for node’s primary dependency v8. Ben is working on moving us to the 3.20 branch, follow his progress here.

  • 09 May 2012 » Limit access to only Google Maps using Squid

    Recently I needed a small kiosk for some truck drivers to easily use google maps to verify their routes. But I wanted to make sure that’s all they were using the kiosk for. I had considered writing my own google maps portal, and I may still yet, but for now I implemented the limitation as an acl in squid.

  • 01 Mar 2012 » Query specific DNS server in nodejs with native-dns

    The DNS options available to node.js are a little slim. They only provide a wrapper to c-ares to the point of doing the simplest of record type lookups. There’s not a useful or more granular interface for customizing your queries than to modify your platform’s equivalent of /etc/resolv.conf.

  • 01 May 2011 » Giganews VyprVpn on Linux with IPSEC and L2TP

    I’m not a fan of PPTP, but unfortunately that’s the only listed configuration option for giganews’ VpyVpn service ( So the following are a few configuration files you can use to connect to vyprvpn using ipsec and l2tp. I tested with Ubuntu 10.04, OpenSWAN, and xl2tpd.

  • 29 Apr 2011 » Steve Earle -- Every Part Of Me

    Steve Earle recently released a new album entitled “I’ll Never Get Out of This World Alive” (the title of an old Hank Williams song). I’m particularly infatuated with this album. Mostly for its simplicity. All the songs were recorded live, with little overdubbing. Just reinforcing that music doesn’t have to be complicated and layered to be enjoyable and moving. The song that represents this ethos the best is “Every Part Of Me”, the following are the lyrics and chords as I interpret them. Here’s a video with him performing it and a brief audio clip of me playing the two major themes.

  • 24 Mar 2011 » Linsides - LinCached - 3rd Party Linode Service

    Prior to today I had considered this site, while not terribly popular (or frequently updated), to be relatively quick with little effort on my part. I may not host many high traffic sites, but I have my personal sites and a handful of others. I have a server specifically to handle the HTTP traffic, and a server to handle RDBMS. They use the private network afforded to me by (my VPS provider of choice) so communication between the two servers is quick and doesn’t count against my monthly bandwidth quota. It’s worked for years, so I’ve had little desire to muck with the formula.

  • 21 Nov 2010 » Automatically generate AirPrint Avahi service files for CUPS printers

    Last weekend I read Ryan Finnie’s excellent article about getting CUPS printers to work with AirPrint ( I got a bit angry at Ubuntu/avahi/CUPS/Apple regarding some silliness involving the APIs that are used by CUPS internally for DNSSD announcement (like the fact it’s broken in 10.04 and 10.10 because Apple changed APIs and the new API calls weren’t packaged (yet?)). So after I finished ranting to myself I created the service file and boom, I could print from my iPhone.

  • 05 Aug 2010 » Linode API Python3 and GitHub

    Josh Wright today contributed a Python3 branch of the API. I’ve pushed this to the repo and cherry picked a few of the commits that apply to master as well. I’ve also created a github repo that will serve as the main access point for the repo from here on out. Please if you have issues, file them. Also you hopefully will find the examples useful, I’ll be moving those over to the wiki as well. If you want to contribute please don’t hesitate, Josh already identified the need for unit tests. Thanks to Linode for being a great resource, and thanks to everyone who has used and/or contributed to the bindings!

  • 09 Feb 2010 » Updated Linode API

    I’ve updated the python bindings to support the new Linode StackScripts method calls. An excellent feature to aid in the deployment of your new nodes. The documentation is also up to date, albeit in need of some verbosity. You can browse the source at my gitweb, or as usual you can access the source directly with git git clone git://

  • 12 Dec 2009 » Monitor All Network Traffic On A Virtual Host Within A Virtual Machine On That Host

    Recently I was asked to explore means to monitor/audit network traffic of a virtual host (i.e. all traffic on the Dom0 and DomUs) without the monitoring software running inside the privileged domain (Dom0). If you are ok with running the monitoring software inside the privileged domain then you need not read the rest of this blog.

  • 05 Dec 2009 » Muppet Movie -- Im Going to Go Back There Someday -- Guitar Tabs Chords

    I’ve been in a Muppet mood recently, as such I’ve found myself playing along with soundtracks. I was quite unsatisfied with the chords I found for Gonzo’s lament from The Muppet Movie so here is my transcription, the end of the bridge may not be 100% but it doesn’t sound terrible

  • 23 Jun 2009 » Making imaplib simple

    Not long ago I wrote an imap polling script for work that used Python’s imaplib. Shortly after that HoopyCat wrote an excellent imap backup script that also used imaplib. We exchanged some stories and opined on wanting a simpler mechanism to get imaplib to return an email.Message object (a feature that should be available from the core).

  • 01 Jun 2009 » twuuenc the uuencode of web2.0

    For far too long now, you have been limited by those 140 characters of microblogging sites like twitter. I present you with twuuenc, take your tweet that is longer than 140 characters and stuff it into fewer unicode characters.

  • 20 Jun 2008 » Dr. Horrible Lyrics -- Slipping -- Guitar Chords Tabs

    Now for the Act III tension builder where our favorite villain (anti-hero?) gets caught monologuing, these are the tabs for “Slipping”

  • 19 Jun 2008 » Dr. Horrible Lyrics -- So They Say -- Guitar Chords Tabs

    Act III the phenomenal finish to Dr Horrible starts off with this catchy ditty “So They Say”, thanks again to all the folks at for starting me off with the lyrics

  • 19 Jun 2008 » Dr. Horrible Lyrics -- Everyones A Hero -- Guitar Chords Tabs

    The very triumphant second song from Act III “Everyone’s A Hero”

  • 18 Jun 2008 » Dr. Horrible -- Brand New Day -- Guitar Chords Tabs

    To finish off Act II here is “Brand New Day” from Dr. Horrible’s Sing-Along Blog. Not the best I’ve done in the series, would probably sound better if I played guitar. Everything is mostly in fifths and not full chords I don’t know if that equates to power chords or not. The slow section talking about Penny needs some more attention as well.

  • 17 Jun 2008 » Dr. Horrible -- Pennys Song -- Guitar Chords Tabs

    Act II’s sentimental sexual-tension building Penny’s Song has now been transcribed, it has a nice and easy “Seasons of Love”(Rent)/”What’s going to happen”(Scrubs) feel to it. The opening chords are the same to “Will You Lend a Hand” sung by Penny in Act I, it wasn’t long enough song for me to transcribe, but I was glad the theme was reprised in Act II there are certainly good elements of musical theater in this show.

  • 17 Jun 2008 » Dr. Horrible -- On The Rise -- Guitar Chords Tabs

    Continuing our series of Dr. Horrible’s Sing-Along Blog lyrics and chords/tabs I present the first song from Act II: On The Rise. I found some other like minded folks transcribing the lyrics at they make getting the words right the first time easy. I’ve also decided to try the more inline approach of the dueling lyrics, hopefully this will make changes clearer.

  • 17 Jun 2008 » Dr. Horrible -- Bad Horse Phonecall -- Guitar Chords Tabs

    The Bad Horse Theme Phonecall/Reprise, same chords as in Act I, different lyrics

  • 17 Jun 2008 » Dr. Horrible -- A Mans Gotta Do -- Guitar Chords Tabs

    And the Pièce de résistance in the series of Dr. Horrible Act I lyrics and chords/tabs: A Man’s Gotta Do, What a Man’s Gotta Do. (wikipedia suggests that this page is related)

  • 16 Jun 2008 » Dr. Horrible -- With My Freeze Ray -- Guitar Chords Tabs

    If you’ve not seen and enjoyed the newest Joss Whedon creation Dr. Horrible, you should certainly check it out. What can be better than a musical with Neil Patrick Harris? I’ve spent a bit of time to write out the lyrics and guitar chords/tabs to the first song that appears in Act I which I would imagine is entitled: “With My Freeze Ray” The chords aren’t by any means perfect, but if you fake like I do on the piano you’ll have no problem convincing people you’re right.

  • 16 Jun 2008 » Dr. Horrible -- Bad Horse -- Guitar Chords Tabs

    Here are lyrics and tabs/chords for the second song from Dr Horrible Act I, presumably entitled: Bad Horse

  • 12 Jun 2008 » linode-api-python-part-3

    In part 1 I discussed the creation of the base api, in part 2 the creation of the interactive shell, and now in part 3 the creation of the previously mentioned command line driver. To wet your whistle here’s how you could create a specific A record query it and update it

  • 10 Jun 2008 » linode-api-python-part-2

    Some of us are CLI junkies, and would prefer their hands never have to leave the keyboard to perform tasks. With that in mind I did a quick work up of an interactive shell for the API. One of the goals I had for the bindings was to introduce as few dependencies outside the core python libraries as possible, so the interactive console logically inherits from code.InteractiveConsole, which is for the most part a modified version of HistoryConsole from this example. The example claims that the console (presumably when used with .interact()) would have tab complete and history enabled. Much to my dismay and wasted time debugging, this is not the case. The reality is the console is sufficiently sandboxed (my guess) as to not inherit what you may setup of readline by the time you need it (as far as I could tell). The solution I came up with was to force my will upon the new interactive shell before the user enters it.

  • 05 Jun 2008 » linode-api-python-part-1

    The great Linode is preparing an api for customers to manipulate their account and twiddle their dns zone settings etc. Apparently I was supposed to write the Python bindings, the reality is somewhere between volunteer and victim I suspect. So I spent a little bit time working up an example how they might work.

  • 09 May 2008 » Free clamd scanning on Linode Dallas private network

    From my forum post: