Archive for July, 2006


That Voodoo that I do

Wednesday, July 26th, 2006

I was at DemoCamp 8 last night and as usual stayed later for the social networking. I got into a discussion with Pete Forde and others about who does what.

I have real trouble explaining to people what it is that I do. I often try to explain the nuance between being a scripter (which I am in spades) and a programmer (which I am not exactly) and the distinction falls short of conveying the gestalt that is the technical side of me.

I spend a lot of my time making a whole mess of things work together that were never meant to be integrated. It often takes a wide and deep range of knowledge to figure out the bits. I have variously called myself a technical spot-welder, a duct-taper, a spelunker, and a special-ops data diver, trained to get in under the wire and get out with the data.

Here’s an example – at one of my clients, something we do is give realtime tests against devices in the field. A diagnostic page could tell you, for instance, the contents of the ARP resolution table on a remote router. There is a bunch of magic that goes on behind the scenes to do this (simplified here):

  • the user presses the “get ARP table” button

    • the external portal web server (ASP.NET/Win2k3/MSSQL) makes a SOAP call to get the information
      • the soap call is received at an internal webservices server (Apache/PHP/BSD)
      • connection information is resolved against a PostgreSQL database
      • a shell script is invoked on the webservices server
        • the shell script uses ssh to connect over a secure tunnel to an API server at the customer premises that can route to the destination
        • a script is run on the API server (bourne shell, perl, telnet, curl, grep, sed, awk, lynx etc)
          • the script connects to the router, logs in, displays and parses information, logs out
      • info gets routed back to webservices server via the ssh connection
      • php assembles SOAP response
    • ASP.NET receves SOAP, builds result page
  • Result received by user

I make all that stuff happen.

Now how do I distill that into an elevator pitch?