<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="resume.xsl"?>
<!--
  This may fail to render properly if your browser doesn't support XSLT.

  If you need to download an HTML version or want it in another format, please
  email me.
-->
<resume>
  <author>
    <name>Jordan Sissel</name>
    <contact>
      <email>jls at semicomplete dot com</email>
    </contact>
    <location>
      <city>San Jose</city>
      <state>CA</state>
    </location>
  </author>
  <objectives>
    Research, education, cooperation, and experimentation. I want to employ
    both software engineering and systems administration skills to build
    reliable and sustainable systems while lowering the cost of maintenance and
    improving agility. I also want to learn and to teach.
  </objectives>

  <education>
    <school>
      <where> Rochester Institute of Technology </where>
      <major> Computer Science </major>
      <minor> Economics </minor>
    </school>
  </education>
  <skills>
    <skill type="Programming">Ruby, C, Java, Python, C++, Perl</skill>
    <skill type="Web Programming">HTML, XML, CSS, JavaScript </skill>
    <skill type="Platforms"> Linux, FreeBSD, Solaris, Windows </skill>
    <skill type="Scripting"> Bourne/Bash, PowerShell (WMI, .NET) </skill>
    <skill type="Data">MySQL, Berkeley DB, Bigtable, Hadoop</skill>
    <skill type="Networking">TCP/IP, debugging, various networking platforms (Cisco, etc) </skill>
    <skill type="XML">XSLT, XPath, DOM, SAX, XMLRPC, XSLFO, XUL</skill>
  </skills>
  <work>
    <job>
      <what> Open Source Projects </what>
      <where> Earth </where>
      <when> 2002-Current </when>
      <description>
        <p>
          I write lots of open source code. Many, including logstash, fpm, and
          xdotool are used by folks all over the world. I also have contributed to
          a few others in code, user support, etc, beyond my own projects such as
          FreeBSD, Puppet, mcollective, and more. I find open and collaborative
          problem solving to be pretty awesome.
        </p>

        <p>
          You can find most of my code online at: <a
          href="https://github.com/jordansissel/">https://github.com/jordansissel/</a>
        </p>
      </description>
    </job>

    <job>
      <what>Systems Engineer</what>
      <where> DreamHost </where>
      <when>07/2012-CURRENT</when>
      <description>
        <p>
          Have not had time to fill in this yet. if interested, please inquire.
        </p>
      </description>
    </job>
    <job>
      <what> Engineer</what>
      <where> Heroku </where>
      <when>01/2012-07/2012</when>
      <description>
        <p>
          Have not had time to fill in this yet. if interested, please inquire.
        </p>
      </description>
    </job>

    <job>
      <what> Software Engineer</what>
      <where> Loggly, Inc. </where>
      <when>08/2010-11/2011</when>
      <description>
        <p>
          Generalist engineering role with duties in operations, performance, and
          product features. Most of the time was spent on automating system
          operation and maintenance. Trained fellow engineers for on-call and
          general debugging and troubleshooting. Identified bottlenecks and
          other coding and design problems and recommended (and implemented)
          fixes. Also assisted customers with debugging problems and providing
          solutions in using the Loggly service.
        </p>

        <p>
          Helped build a new and automated infrastructure from what was
          originally an infrastructure poorly managed and operated with a mix
          of large and hard-to-maintain shell scripts. Put RightScale's API
          together with Puppet and some minimal bootstrap scripts to fully
          automate server lifecycles on EC2 in production and other
          environments. I devised and published fun new ways to use Puppet in
          both masterless and nodeless modes which reduced the number of moving
          parts in the Puppet deployment.
        </p>

        <p>
          Using data and experience with logstash (a successful open source
          log management), I provided guidance for improvements and new
          features to put into the Loggly product.  As an example, I was the
          primary driver of adding JSON and structured log data support into
          Loggly. This feature provided strong business value to Loggly while
          giving customers means to better analytics.
        </p>
      </description>
    </job>
    <job>
      <what> Senior Ground Control Operations </what>
      <where> Rocket Fuel, Inc.</where>
      <when>07/2009-09/2010</when>
      <description>
        <p>
          Multirole position mainly as lead systems administration and tools
          specialist, but also filled in as a generalist in areas such as build
          engineering, software engineering, architect, etc. I was primary
          point for managing systems and infrastructure and managed technical
          operations with our hosting providers. Also carried a pager for 24/7
          on-call for production systems with pages coming from nagios; pager load
          was low.
        </p>

        <p>
          Built Rocket Fuel's production infrastructure automation using tools
          such as puppet, hudson, ruby on rails, etc. Puppet and a small ruby
          on rails app are used to drive configuration management. Hudson is
          used for builds, tests, packaging, and deployments. These deployments
          were scheduled and run by engineers which greatly increased agility
          in testing, staging QA, and production deployments as ops was not a
          blocking gateway. Deployments did rolling upgrades with multiple
          sanity checks to ensure only one server was down at a time. Software
          and system configuration deployments were very common - multiple
          times per day across multiple projects up to 90 deployments in a
          single month. New systems took only a few minutes, unattended, to go
          from freshly imaged to active in production with a puppet-driven
          configuration.  Additionally, backups of databases, logs, and other
          production state were copied to our internal HDFS for long-term
          storage. This HDFS cluster was managed by puppet just like any other
          service. I created a staging environment managed with the same
          production tools. Puppet data is stored in subversion and deployed
          the same way as production applications.  Automated config generation
          was used for many services based on server attributes such as site,
          cluster, hardware configuration, etc.  Such services included nagios,
          mysql servers (master and slave), munin, quagga/ospfd, openvpn,
          apache, haproxy, dns, sudo, and more.  </p>

        <p>
          Wrote a display advertisement testing tool using headless X servers,
          firefox, WebDriver and Hadoop to test functionality of thousands of
          advertisements (flash and non-flash) verifying features such as click
          tracking and landing page pixels. This required extending WebDriver
          (both java and firefox extension) to include tracking network
          activity (FireBug-style) and querying browser history. 
        </p>

        <p>
          To help with various business needs and to improve application
          monitoring, I wrote various web automation testing for business
          analytics in addition to systems and application monitoring using
          WebDriver (Java) and mechanize (Ruby) for systems behind login portals. 
        </p>

        <p>
          Wrote a firefox extension for our ad operations team to provide
          insight into ad activity (impression, click, and other tracking).
          This tool removed the requirement that ad operations folks use
          firebug and other tools to inspect and verify advertisment activity.
        </p>
      </description>
    </job>
    <job>
      <what> Operations Systems Engineer </what>
      <where> OnLive, Inc. </where>
      <when>04/2008-07/2009</when>
      <description>
        <p>
          Production systems administrator/engineer on a small team. Shared
          responsibility for all areas of production network and systems
          administration, including design, implementation, and maintenance of
          production environments. My primary duties required design and
          implementation of practices, tools, and automation for a production
          system needing to scale to tens of thousands of hosts. Assisted and
          worked closely with IT, engineering, QA, and other groups in solving
          inter-group technology problems. Participated in and helped build
          on-call rotation.
        </p>

        <p>
        Automation with config management (svn, puppet, etc) and truth database
        to automate the system deployment and maintenance of both Linux (CentOS
        5) and Windows systems. Built a simple windows automation framework
        with powershell after failing to find a similar tool to perform the
        same tasks. Aided in operational and software archictecture design and
        policy creation. Designed and implemented tools to increase developer
        agility in deployment and debugging in a production environment. Drove
        effort to educate and ensure operational best practices were followed
        in all stages of software development. Participated in on-call
        rotation. Designed and lead implementation of a cross-platform service
        monitoring system to allow quick black-box health and stats monitoring
        of all business-critical production services. Assisted with production
        security risk management through secure network and software design.
        </p>

        <p>
        Project and technical lead of production windows system automation and
        deployment. Designed and built a system to automate configuration and
        maintenance of production Windows XP and Vista hosts; such maintenance
        includes device driver revisions, user profile configuration, automated
        application installation, and other system configuration. The automation
        included the full machine lifecycle including system imaging. This
        automation system increased reliability, repeatability, and performance
        of system maintenance and (re)installation and additionally effected a
        major boost in confidence of correctness in our windows systems which
        helped improve all stages of the product from development to QA to
        deployment.
        </p>

        <p>
        Designed and maintained engineer and QA tools to help in accessing
        and debugging production and staging systems without requiring
        users to have deep knowledge of production networking environments.
        Primary feature included automatic ssh tunneling to support remote
        debugging and inspection using tools like VNC, JMX, remote gdb, etc.
        To further hide complexity, this tool would upgrade itself if there was
        a newer version released. To ease use, it was primarily activated
        through a special url handler registered with Windows so the launch
        mechanism would be HTTP links. It was written in powershell and
        vbscript.
        </p>
      </description>
    </job>
    <job>
      <what>Site Reliability Engineer </what>
      <where>Google, Inc</where>
      <when>06/2006-04/2008</when>
      <description>
        <p>
        Cluster and scalable systems administrator for systems with multiple
        clients and usage patterns. Network and software troubleshooting and
        monitoring. Automation with shelli and python for myself and coworkers
        and via web interfaces for customers. Responsible for maintaining
        critical backend systems which power many Google products. Primary
        duties revolved around continued maintenance, monitoring, analysis, and
        improvement of multitenant clusters up to sizes of tens of thousands 
        and many datacenters. Helped design capacity planning tools and
        documents to guide new bigtable users on performance and capacity
        planning. Worked with bigtable engineers on improvements such as
        monitoring, multitenancy, and backups.
        </p>

        <p>
        Built a web-based self-service web application to help internal
        customers fulfill some requests instead of filing tickets. Was the
        "go to" guy on my team regarding information for many pieces of Google
        infrastructure. Mentored several members of my team, including those
        senior to me. Developed several tools to aid in troubleshooting and
        debugging. Prototyped tools and presented many ideas for improving the
        service my group provided.
        </p>

        <p>
        Skills used: Python, network diagnostics, shell scripting, perl,
        scaling services, on-call support. Clustered filesystems and databases
        (Bigtable, GFS, etc).
        </p>
      </description> 
    </job>
    <job>
      <what>Unix Systems Analyst</what>
      <where>Computer Science Department at Rochester Institute of Technology</where>
      <when>10/2005-05/2006</when>
      <description>
        Computer Science Department at Rochester Institute of Technology
        Configuration and deployment of Solaris-based servers with open
        source and commercial software. Troubleshoot software bugs and
        inconsistencies. Assist with faculty and student technical support.
        Skills used: Solaris, shell scripting, perl.
      </description>
    </job>
    <job>
      <what>Cluster Engineer</what>
      <where>College of Engineering, Rochester Institute of Technology</where>
      <when>06/2005-09/2005</when>
      <description>
        Administrative support for parallel computation research on a
        24-node Fedora/ Linux cluster. Instructed co-workers on use of
        revision control, use of community documentation, development with
        MPI, and working with Unix environments. Developed faster
        algorithms for existing software applications to meet research
        project needs. Skills used: Linux, C, MPICH, Subversion, software
        debugging.
      </description>
    </job>
    <job>
      <what>Systems Programmer</what>
      <where>ITS at Rochester Institute of Technology</where>
      <when>09/2004-03/2005</when>
      <description>
        Development and maintenance of user and network management systems.
        Improved existing account management systems for campus-wide
        deployment of LDAP, Active Directory, DCE, and VMS services.
        Debugged and improved network management system integrating dhcp
        and dns with computer registration. Skills used: C, PHP, m4, make,
        cvs, Oracle, Pro*C
      </description>
    </job>
    <job>
      <what>Unix Systems Analyst</what>
      <where>Computer Science Department at Rochester Institute of Technology</where>
      <when>07/2004-08/2004</when>
      <description>
        Design and deployment of GNOME-based Solaris desktop environment.
        Focused on security and ease of use. Supported faculty and students
        on Solaris 9 technical issues.
      </description>
    </job>
    <!--
    <job>
      <what>Network Engineer</what>
      <where>The Datastore (Maple Shades, NJ) </where>
      <when>07/2002-08/2002</when>
      <description>
        Configuration and upgrade of new networking hardware for
        Villanova University. Upgraded routers and switches for an
        academic network and installed switches for dormitories. 
      </description>
    </job>
    -->
    <job>
      <what>Business Systems Developer </what>
      <where>OnlySecure.com (Livingston, MT)</where>
      <when>12/2002-09/2005</when>
      <description>
        Developed an online store sales reporting and automation system
        from the ground up with an evolutionary development model. Provided
        service maintenance and support for mission critical systems across
        multiple systems. Skills used: Perl, C, PHP, mySQL
      </description>
    </job>
  </work>

  <projects>
    <project name="Systems Administrator Advent Calendar">
      <keywords>Technical writing</keywords>
      <description>
        I'd followed the Perl Advent Calendar for a few years, and in late 2008
        I decided that there needed to be a similar project with sysadmin
        topics; one article for each day of December up to Christmas. I
        gathered a few fellow sysadmin bloggers together to work on ideas and
        articles. The first year, I wrote 23 of the 25 articles. This project
        encompasses some of my best writing. URL: http://sysadvent.blogspot.com/
      </description>
    </project>
    <project name="logstash: open source log management">
      <keywords>Ruby, logs</keywords>
      <description>
        I deal with logs all the time as an engineer and over time have grown
        weary of the lack of good tools available for dealing with logs, so I
        started an open source tool for dealing with all kinds of log-related
        issues including transport, management, search, and analytics. To date,
        this is my most widely-used open source project. URL: <a
          href="http://logstash.net/">http://logstash.net</a>
      </description>
    </project>
    <project name="Grok: Log analysis and reporting tool">
      <keywords>Languages: Perl, C++, C, and Ruby. Regex: Perl, Boost Xpressive, and PCRE. Open Source</keywords>
      <description>
      Having grown tired of reading authentication and system logs looking
      for problems, I decided to make the process easier. If an event is
      predictable, then we can make a script handle it. This tool is a very
      configurable Expert-like system that allows you to define predicted
      patterns in log or program output aswell as reactions to those
      patterns. It will also process text and generate patterns which match
      that text. This tool was later rewritten in C++/Boost, and finally ended
      up in C using libpcre and has Ruby bindings.
      </description>
    </project>
    <project name="xdotool: X11 automation tool">
      <keywords>C, X11, automation. Open Source.</keywords>
      <description>
        Wrote an Xlib automation tool to aid in scriptability of the X11
        environment. Supports faking mouse and keyboard input and window
        management features. Has lots of users and is available in most 
        unix package systems (ubuntu, fedora, freebsd, etc). New releases
        focus on stronger testing and responding to community feedback.
      </description>
    </project>
    <project name="xboxproxy: Network proxy for xbox and itunes">
      <keywords>C, libpcap, libnet, networking. Open Source.</keywords>
      <description>
      In an effort to be able to play Halo 2 with some out of state friends,
      I wrote an xbox system link proxy that would essentially bridge
      only xbox network (broadcast) traffic across across layer 3 networks
      using UDP.  Written in C and uses libpcap and libnet. A later update
      added multicast support so Apple's Rendezvous (mdns) protocol could
      span networks segments.
      </description>
    </project>
    <project name="Firefox extensions">
      <keywords>JavaScript, XUL, CSS. Open Source</keywords>
      <description>To date I have written a few firefox extensions. One, to allow
      you to search your open tabs for keywords and another to allow you to
      trivially edit query parameters in the url bar. These extensions required
      the use of XUL (mozilla's toolkit language) and JavaScript.
      </description>
    </project>
    <!--
    <project name="FreeBSD Mouse Driver Rewrite">
      <keywords>C</keywords>
      <description>
      The FreeBSD ps/2 mouse driver and userland mouse drivers both support
      a number of specific mice in a nonmodular way. I rewrote the userland
      mouse tool completely from scratch and turned the kernel ps/2 driver
      into a simpler userland-device middleman. The userland mouse tool is
      capable of support any kind of mouse through a driver loadable at
      runtime. It also has ps/2 and other protocol libraries useful for
      talking to mouse devices from the userland.
      </description>
    </project>
    -->
    <!--
    <project name="XML Presenter">
      <keywords>XML, XSLT, HTML, JavaScript</keywords>
      <description>
      My lack of familiarity with presentation software such as PowerPoint
      led to the creation of an XML/XHTML-oriented slide show project. It
      uses technologies with which I am very familiar to create slideshows.
      Individual slides are XHTML subdocuments of a simple XML envelope.
      Presentations can be viewed with any modern web browser, eliminating
      the need for a proprietary slideshow viewing tool.
      </description>
    </project>
    -->
    <!--
    <project name="Java Instant Messenger Client">
      <keywords>Java, swing</keywords>
      <description>
      A network chat client similar to that of AIM and ICQ using a
      different protocol. It supports smilies, tabbed windows, and other
      features and is written in Java. (school project)
      </description>
    </project>
    -->
    <!--
    <project name="News Aggregation Service">
      <keywords>perl, xml/rss, mysql</keywords>
      <description>
      This perl-based news portal downloads news feeds from all around
      the web and allows them to be viewed from one location.  Supports
      multiple unique users with preferences on viewing. It's modular
      design allows multiple feed types (RSS/Atom/page scraping) to be
      used.
      </description>
    </project>
    <project name="Graphical File Browser">
      <keywords>perl, gtk2</keywords>
      <description>
      A group of 4 people, including myself, worked together to design
      and implement a graphical file browser using perl. It supports
      previews of images and mp3 files, basic operations including
      copy/paste/cut/delete, directory traversal, and traversal of
      archive files (tarballs, for example).
      </description>
    </project>
    -->
    <!--
    <project name="MP3 Jukebox">
      <keywords>python, xmlrpc, sqlite</keywords>
      <description>
      Web-based client/server model for a networked mp3 jukebox.
      Multithreaded design with XMLRPC and JSON client-to-server
      communication via AJAX Web interface. Http is served using a pure
      python web server and supports xmlrpc, simple GETs, and multimedia
      stream clients.
      </description>
    </project>
    -->
    <!--
    <project name="Ethernut i2c Bus Master">
      <keywords>C, i2c, networking</keywords>
      <description>
      This project made use of a small embedded device called an Ethernut.
      It was needed for an I2C (TWI) network controller by RIT'S DARPA 
      Grand Challenge Autonomous Racing Team. The software is written in 
      C and supports autodiscovery and an ethernet-to-i2c gateway so a computer
      can talk to the i2c devices over ethernet without needing to have an i2c
      interface.
      </description>
    </project>
    -->
  </projects>
  <misc>
    At RIT's Computer Science House I setup and maintain a computing lab of
    Sun Ultra1 systems using JumpStart. I also help maintain the servers of
    many different architectures including Sparc, x86, Alpha, and Mips.

    In my spare time I work on various web-based applications using perl's
    HTML::Mason, mod_perl, shell scripts, PHP, mySQL, and other tools. I
    also maintain several apache web servers which run varying services. I'm
    very familiar with developing of web-based applications and have been
    doing so professionally for over a year designing and maintaining a
    web-based business portal for OnlySecure.com. I am also very familiar
    with system administration of both Internet-end systems and intranet
    systems including web and database servers, firewalls, email systems,
    and network maintenance. I'm currently looking for an internship or
    co-op for this summer involving Internet system administration.

    I'm extremely interested in system administration, from system security,
    user management, implementing automated administration, etc. I try to
    find new ways to attack problems by using my own personal knowledge
    combined with researching existing solutions.  Recently, I've been
    focusing on automation, trying to minimize the time spent interacting
    with a system and maximizing the amount of work actually done. 
  </misc>
  <keywords>
    active-directory
    ajax
    autoconf
    automake
    bridging
    cvs
    darcs
    dhcp 
    dhtml
    dns
    dtrace
    ethernut
    freebsd
    glimpse
    gtk2
    html
    html::mason
    ipf
    javascript
    ksh
    libnet
    libpcap
    linux
    m4
    make
    mh
    mysql
    ncurses
    network
    oracle
    perforce
    perl
    pf
    postgres
    pro*c
    rcs
    rdf
    rrdtool
    rss
    security
    shell
    snort
    solaris
    subversion
    unix
    vi
    vim
    vmware
    vpn
    web-spidering
    xapply
    xlib
    xml
    xul
    xpath
    xslt
    zsh
  </keywords>

  <!-- Hello :) -->
</resume>
