Curtis Jones - Resume 13977 Sunfish Bend Alpharetta, GA 30004 404.492.6437 curtis.jones@gmail.com curtisjones.us/resume Introduction Accomplished systems architect and project lead, specializing in scalability, security, network programming and client / server design. Successfully designed and deployed a network security application for Mac OS X, a web & print publishing system for The Atlanta Journal-Constitution and Cox Interactive, a stress analysis library for Differential Solutions, Inc., a distributed communication framework for Avienda, a commercial real estate data management and research system for the Dorey Publishing Company, infrastructure optimizations related to processing financial data, exchange feeds and more for Bloomberg LP, an iPhone application for The Wall Street Journal and a custom network protocol, server and database for JamCloud. Objectives My work is an extension of who I am, and I am meticulous in the design and execution of every project of which I am a part. I seek work that is challenging and as a consequence, rewarding. I am interested in full-time and consulting (corp-to-corp) work for challenging, non-trivial projects in a developer-friendly environment that fosters creativity, productivity and pride in one’s work. I have experience as a project and team lead. I can work well as part of a team or independently and I expect to have to solve problems and research solutions without imposing on others. Experience Succeeded as the lead designer and developer on projects developed with Java, Objective-C, Perl, JavaScript, C, C++, AppleScript, XML / XSLT / DTDs, Bash, and Make, targeted for Mac OS X, Linux, FreeBSD and Solaris using Cocoa, Perl/Tk, Gtk, Glib, Swing, AWT, Qt and “raw” X11 / Xlib. • Worked with products from MapInfo, Software Construction Company (SCC), Digital Technology (DTI), Macromedia, Apple and AutoDesk. • Worked with databases from PostgreSQL Group, Sybase, MySQL AB, Oracle, SQLite and Microsoft (using DBI, JDBC). • Developed projects using Xcode, JBuilder, Eclipse and VI. • Experienced with source revisioning using Subversion, CVS, ClearCase, Git and SourceSafe. • Accomplished in object oriented design, relational database design, newspaper publishing systems, mobile applications, unix administration and network protocol design & implementation. The Wall Street Journal (Jul ’08 - Feb ‘09) Lead the development of The Wall Street Journal’s first iPhone application based on Apple’s iPhone SDK. Worked with a small team to assess requirements for this project, demonstrated various interface features of the iPhone SDK to managers and designers with example applications and interface mockups. • Implemented custom RSS feed parser using the push API in libxml2, • added support for saving stories locally and performing real-time, full-text searches of saved content using SQLite, • devised a challenge-response based authentication mechanism (based on OpenSSL) for (mostly) restricting backend access to our iPhone application, • worked with our in-house J2EE developer to create services for improving our application performance, • assessed the competition to ensure that our application was technologically superior. JamCloud (Jul ’08 - Present) Lead the development of the core backend infrastructure, including database schema design, development of the NIO based scalable, multi-threaded Java server (including implementations of AMF and RTMP). The server design focused around consuming minimal resources per socket and that of not allowing slow sockets to monopolize threads. • Subsequently designed and developed a replacement C based server with an emphasis on efficiency by minimizing dynamic memory allocation. • Created a prototype client implementation for the purpose of verifying server functionality, locating memory leaks and simulating load. • Proposed, designed and implemented an efficient and suitable binary protocol for client/server communication. • Worked with the PostgreSQL DBA to design a suitable database. • Assisted in the development of stored procedures using PL/pgSQL, which provided a clean, consistent interface for the C server and minimized the complexity of the SQL found in the server code. Lime Wire LLC (Nov ’07 - Jun ‘08) Member of the development team for the LimeWire distributed p2p file sharing application. Worked with internal project management tools such as JIRA (ticket tracking), FishEye (revision management) and Crucible (code reviews). Specific responsibilities include network programming, extending the file sharing protocol to improve features and performance, and improving platform native integration for Mac OS X through the JNI. • Removed all 32-bit dependencies (i.e., Carbon, libObjcJava); ported many features to Cocoa; updated all libraries with 32/64-bit versions; and finally got LimeWire working under Java SE6 on Mac OS X • Added Growl support. • Streamlined the installation process. • Significantly reduced the size of the installer by modifying the build system and installer scripts to use pack200. • Performed the initial design and coding for the core-as-a-service initiative which will allow for platform native GUIs that communicate with the Core using XML-over-HTTP with Restlet on the Core side. Primarily worked with Java, C and Objective-C. Bloomberg LP (Mar ’07 - Nov ‘07) Member of the team that designs, implements and supports the infrastructure of the financial data systems at Bloomberg. • Analyzed performance issues with heavily used libraries using collect and analyzer on Solaris. Implemented a replacement function in one such library that provided a 31x speed improvement and which doubled the performance of several applications which depended upon it. • Performed initial design research for a replacement for the primary data processing application, which is presently the foremost bottleneck, with a goal of 10x improvement in overall throughput. • Worked with the Reuters SDK to implement parsers for new exchange feeds. • Designed, implemented, tested and deployed a Power-related exchange parser in C for Solaris based on the OMX platform. Researched and selected third-party libraries (curl, libxml2, OpenSSL) to expedite development. Coordinated the efforts of teams in New York, London and Portugal. Diagnosed and assisted in correcting feed network connectivity issues over the Internet and leased lines. • Daily assisted other in-house developers with the use of internal tools, libraries and systems. Life Style Reflection (Mar ’07 - Present) Designed and developed a Perl and PostgreSQL based backend for Linux, including • an administration interface, • PayPal integration, • a purchase and payment verification system, • incorporation of business rules and • a templating system for easy customization of website look and feel. • Created design documents, including a database schema, based on “loose” specifications received verbally. • Installed and deployed final product, including database setup, on client’s web server. • Completed project to the satisfaction of the client, before the deadline and under budget. In Jan ’09, produced and published an iPhone application for client which provides some of the client’s content plus self-analysis quizzes in an easy-to-navigate and visually appealing interface. GlowWorm FW (Sep ‘06 - Mar ‘07) Developed a Mac OS X kernel extension which uses kauth and tcp4, udp4 and ip4 filters to monitor and control the creation of incoming and outgoing sockets and the transfer of data across those sockets. • Implemented a rule evaluation system in the kernel extension based on socket and process information, • an ElGamal signature and SHA2-512 based registration key system with a web frontend, Perl, C and Postgres backend with the ability to receive and verify PayPal payments automatically, • an arbitrary precision arithmetic library (see ‘Example Code’, below), in C, supporting addition, subtraction, multiplication, division, mod, mod-pow, mod-inv, gcd, pow, cmp, rand and various bit operations, • a transaction oriented, asynchronous messaging protocol with an Objective-C based Framework implementation for sending commands to the kernel extension and receiving event notifications, • a plugin-based Mac OS X Cocoa application for controlling the system and plugins for viewing and editing the firewall rules, authorizing connection and data events and viewing system network activity. • GlowWorm FW provides a level of network security and process control not otherwise available on Mac OS X. Differential Solutions, Inc. (Feb ’04 – Dec ‘05) Developed a C++ library which performs load stress analysis based on the AISI specs for Cold Formed Steel (with GTStrudl output serving as library input). • Designed suitable object model based on limited specifications. • Performed rigorous optimization and result verification on non-trivial data sets. • The library serves as a key component of their AutoCAD based product. • Subsequently completed second contract extending the library’s functionality, implementing additional optimizations and extending the object model based on updated specifications. Dorey Publishing Company (Feb ‘04 - Jun ‘08) Lead the design and development of a web based commercial real estate data management system with five people in my group. • Designed and developed a Cocoa based application for managing and monitoring the server and assisting with debugging. • Responsibilities included server hardware setup, • all server-side coding (Java), • database administration (compilation, installation, configuration, performance tuning, schema design and conversion, indexing, query optimization, etc.), • network protocol design, • security (intrusion detection, IP based restrictions, security alerts, server statistics, etc.), • scalability, • logging, • relationship based access management system (business rules), • flexible user permissions system, • spatial search capabilities, • XML feed for third parties, etc. • Assisted front-end developers, using ActionScript 2.0 / Flash MX 2004. • Set up, configured and maintained Linux, Apache, BigFaceless (for PDF report rendering), Subversion and WebSVN (for source versioning), Mantis (for bug tracking), MapInfo MapXtreme (for mapping), and later worked with FlashMaps Geospatial (for SOAP based Geocoding and map rendering). Authored ~200 page book (using LaTeX) documenting system design, functionality and administration. • Implemented another data management system frontend based on AJAX. The Atlanta Journal-Constitution (May ’01 – Aug ’04) Worked closely with the lead DBA of the Publishing Technologies department in writing tools to import 250+ gigabytes (2.25 billion rows) of 2000 Census Data into Sybase (on Solaris) for News Research. Assisted users in writing non-trivial SQL queries. • Developed data migration tools for DTI DT 4 to DT 5 and SCC system conversion, including an application to pull DT 4 data (images, stories, etc.) from Sybase, perform character set conversions, image manipulation (resizing, rotation, format conversion, etc.) via ImageMagick / JMagick and push into the SCC archive system. • Developed a Java / Swing application for non-SQL savvy users to create complex SQL queries. • Developed Java based GIS prototype mapping application. • Designed and deployed various solutions to automate tasks throughout the department. • Coordinated efforts with numerous departments for over a year while developing The Big-A List event publishing system - a Java-based transactional backend running on Linux. • Developed a language for describing published events incorporating all of the nuances of the newspaper’s style guidelines. • Developed an algorithm for transforming a list of event dates into a concise English representation of those dates following the newspaper’s style guidelines, and thereby automating what was previously a labor-intensive manual process. • Provided user support and maintenance for publishing system hardware and software. • Publishing system continues to perform smoothly, maintenance free, after nearly three years. • Assisted and mentored other developers. Avienda / Silverpop (Jan ‘00 – Jan ‘01) Developer and technical lead. • Coordinated the efforts of eight other developers. • Worked with VA Linux to design a scalable server solution for our network. • Designed and implemented a Perl, C++ and MySQL based fault-tolerant, distributed communication framework which included advanced data caching, self-replicating file system, bandwidth optimizations and encryption. • Designed and supported the database schema. • Worked closely with senior management, and quickly adapted design specifications to meet constantly changing market conditions. • Worked through the night to meet deadlines such as spur-of-the-moment investor demos and other presentations. • Worked with the admins to coordinate the distribution of new builds to the many hundreds of servers in dozens of POPs throughout the world. • Using third party libraries, added server-side support for a multi-protocol (AIM, ICQ, Yahoo, MSN, IRC) chat transport system supporting encrypted communication, offline-messaging, and integration with the mail system. Auto Auction Services Corp (Jul ‘99 - Jan ‘00) Designed and developed an Oracle / Solaris based automobile auction system, largely in Perl, for this Cox subsidiary. System included features for inventory management, auction tracking, customer access and provided facilities for third party importing/exporting of data. • Inherited initial code base with very limited documentation. Analyzed code, produced documentation and started making modifications. SunTrust Bank (Jul ’99 - Jul ‘99) Contracted to debug a critical problem in a Perl based web system for customer application processing. Due to the nature of bank security, the debugging had to be done with pen and paper (and a print-out of the suspect code). • Completed three month contract in one day. BannerFusion (Jan ’99 - Jul ’99) Designed and developed a Perl-based CGI banner advertising management and tracking system. BannerFusion was suitable for the management of advertising for a single web site, or as a service to other web sites with the ability to take a certain percentage of the ad impressions as payment (ie, LinkExchange). A simple web-based interface provided access to manage banners, customize the rotation weight of a banner and view impression and click-through statistics. BannerFusion continues to see limited use as of 2007. Projects AIMSpy - A Mac OS X / Cocoa application that has as its purpose to “listen” on a user-selected ethernet interface, using a raw socket, for any and all packets, and analyze, parse and display in an orderly fashion all packets related to AIM chats. • Chat transcripts are grouped by the local participant’s IP address and then the remote participant’s screen name. • Modularized parser support with an abstract interface. BigMath - An arbitrary precision arithmetic library, written in C, based on Knuth’s algorithms (see The Art of Computer Programming, vol. 2, 3rd ed). This library formed the basis for the cryptographic registration system in GlowWorm FW. Supported operations include add, sub, mul, div, mod, modpow, modinv, pow, gcd, factorial (lazy), n-th root, radix conversion, scientific notation, string-to-bignum and equality comparisons. iCast - A reverse engineering effort of Apple’s iTunes TCP/IP based Digital Audio Access Protocol (DAAP) and Rendezvous (Bonjour) protocols. • Implemented an MPEG audio frame parser for determining audio length, sample rate, frame count, bit rate, etc., • and an ID3 v2.2 tag parser. • The multi-threaded C based iCast server uses pthreads and gzip stream compression via zlib. Llama - A framework for rapidly designing and deploying light-weight web applications and other transaction oriented protocols. • Includes highly scalable threading model, • JDBC based connection pooling system, • HTTP and SMTP implementations, • XML based database schema system for object-oriented SQL query generation, • and an abstract interface for defining database specific nuances with implementations for MySQL, Oracle, PostgreSQL, Sybase and SQL Server. • Based several substantial projects on this framework and licensed it to third parties. Mapster - Initially a personal project that was subsequently adopted by my then employer who desired a proof-of-concept for future projects. • Mapster includes utilities for downloading, parsing and importing the “raw” line-segment mapping data (such as the Tiger/Line Census Data) into a MySQL database. • Additional utilities ran optimizations on the line-segment data to greatly improve query performance. • Supported the drawing of roads, county lines, state borders, bodies of water and hundreds of other boundary types and landmarks, all in real-time. • Added support for tracking and displaying multiple, simultaneous input sources, such as a directly attached GPS device or a network-based feed, including on-screen telemetry data. • Implemented a canvas-based drawing method that used buffered 4-byte ABGR images, drawing each layer to a separate image, which images were then alpha-blended together, creating the final map. Pandora - Designed and implemented a network protocol and Java based framework for secure, anonymous and reliable communication across a completely distributed, fault-tolerant and self-optimizing TCP/IP based virtual network. • Pandora allows one to create a virtual network akin to a traditional VPN but without centralized structure and with guaranteed anonymity. • It was also necessary to implement the Blowfish (for encrypted communication) and Diffie-Hellman (for key exchange) algorithms, which was done so by referencing various online and printed resources. Static - A scalable, multi-threaded discrete time signal analysis program written in C with a Posix core and Objective-C / OS X / Cocoa gui. Presently in the early stages of development, Static supports abstractions over drivers, devices and protocols, output methods such as planar and history graphs and the RF Space SDR-IQ (via the libusb based FTDI driver) for input. Signal data is manipulated via per-output processing chains. Future development will include various demodulators (am, fm, ssb, etc.), signal recording and playback, additional input methods and other graphs. The performance-oriented design includes pre-allocated objects with reference counting, atomic data structures, read- and write-buffered data streams, a device-event dispatching system, and fftw3 and ooura fourier support. Screenshots and additional details available at: http://curtisjones.us/static Triangulate - A proof-of-concept application. The concept is one related to being able to establish one’s exact location with only a receiver, using the transmission of known “beacons”. This involved the design of a communication protocol for the beacons to establish their relative positions to each other and for the receiver to determine its location using trigonometry. • Objects within the proof-of-concept application were draggable to simulate a real-world environment. • Demonstrated application and presented results, algorithms and protocols to client. XGroove - An X11 based network application (written for POSIX systems in C) for controlling multiple computers with a single keyboard and mouse. • XGroove also supports a copy-and-paste clipboard mechanism which follows the mouse (i.e., copy on one machine, paste on another). Additionally - Implemented the client and server sides of the HTTP, DNS & ICMP, SMTP, POP3 and various other protocols. • The DNS resolver was implemented using the Java Native Interface (JNI) which allowed for ICMP packets to be sent/received via a raw socket. The library included functions for dropping root privileges after the socket was created. The DNS resolver itself implements its own result caching, which caching expires results based on their respective TTLs, • can automatically perform recursive resolves for MX lookups and other CNAME based DNS answers. • The HTTP server implements keep-alive connections, • gzip stream compression and • CGI input types GET, POST and multipart/form-data POSTs. Input parsing includes timeouts and strict buffer size limits to prevent malicious clients from hanging or flooding the server. • The SMTP client’s overall design and threading model allow it to sort and prioritize emails in a manner which maximizes its ability to deliver email quickly and efficiently. • The XML server module uses dom4j for xml parsing, which interface is chiefly used by the corresponding Flash client. The protocol supports binary file transfers within the XML stream through an OOB-style extension. Certifications Technician Class - Received a perfect score on the FCC Amateur Radio Technician Class Element 2 exam on Jan 28, 2008 (KC2SUS). Interests Mountaineering - I enjoy various outdoor activities, mountaineering in particular. I’ve climbed Pikes Peak (Colorado) via Barr Trail, Mauna Loa (Hawaii), Mt. Rainier (Washington) via Liberty Ridge, Mt. McKinley (Alaska; May-2008 (guided), May-2009 (solo)) via the West Buttress, Cotopaxi and Cayambe (Ecuador), and many small peaks in the North Georgia Mountains. • Successfully accomplished a "Death March" in the Grand Canyon (2008, 2009). • I’ve also done two seasons of ice climbing in Adirondack Park. Example Code BigMath - Arbitrary precision arithmetic library. Released under the BSD License. http://curtisjones.us/bigmath Locator - An end-to-end location tracking project for use with the FindMeSpot personal locator. http://curtisjones.us/locator (http://whereiscurtis.com) Summary While my experience is broad, my passion lies in distributed systems, network programming and security, operating systems (network kernel extensions) and nearly any communication related technology I can get ahold of. • I am primarily interested in contract (corp-to-corp) opportunities. Please contact me if you are interested in discussing such an opportunity. • Please find the latest version of my resume at http://curtisjones.us/resume. I do not have a Word version of my resume. • References available upon request.