John Flanagan
413 N Carpenter #2C
Chicago, IL 60642
(773) 206-1249
flanagan@freeshell.org
http://flanagan.freeshell.org/resume.html
Objective
I am seeking a senior position in software development
where I can use my broad array of technical skills and domain knowlege to
create efficient and profitable systems.
Skills
Technical experience
- Unix experience
- Linux installation and system administration
- Mysql installation and administration
- NIS
- NFS and Samba
- Source code control with Subversion
- C/C++ experience
- Client and server development on Solaris, Linux, and Windows
- COM development in Visual C++
- Embedded HC11 development in C
- STL
- Boost
- Perl experience
- C/C++ to Perl interface modules using SWIG
- GUI development with Perl/Tk
- Administrative scripting
- Data mining and report generation
- Java experience
- Multithreaded client and server development
- JDBC
- SSL
- Market data feed experience
- ISE option API
- OPRA and NASDAQ multicast data feed
- Bloomberg API
- FIX Protocol
- Hotspot API
- Deutsche Bank FX API
- RBS FX API
- Dresdner FX API
- Currenex API
- Trading Technologies XTAPI
- EBS API
- eSpeed API
- Activ API
Education
BS in Computer Engineering from University of Illinois, Urbana-Champaign,
December 1997
GPA 3.58 of 4.0
Significant coursework
- Computer Architecture
- Operating Systems
- Computing Theory
- Software Engineering
Work History
Contract Developer, 9/2008 - 9/2009
Scott Weber
4205 Whitewater Creek Rd
Atlanta, GA 30327
Wrote a custom option trading system in C++ from scratch, providing
interfaces for Weber to write his own C# GUIs and Perl maintenance scripts
to interact with the system. I maintain ownership of the infrastructure code
from this project, so I am free to reuse or build upon it.
Features:
- Livedb, a custom MySQL server module, which allowed normal SQL inserts,updates, and deletes, to be broadcast in real time to subscribing clients.
- Incoming prices via Activ API
- Trade interface via TradeSpeed FIX API
- Theoserver, an option greeks service
- Eyeserver, which ran the "electronic eye" to shoot at options which crossed the trader's theoretical values with sufficient edge.
Developer, 6/2007 - 5/2008
Sun Trading, LLC
100 S Wacker, Suite 300
Chicago, IL 60606
Responsible for support of trading operations as part of a team of 4.
Responsible for nightly software builds and distribution. Designed scalable
software distribution scripts for pushing the nightly release to 600+ servers
worldwide within a 90 minute downtime window. Wrote an interface to
Bloomberg for easy data access within Perl scripts. Wrote several maintenance
scripts for handling database update requests from traders. Wrote two one-shot
C++ apps for custom data collection for FE team.
Developer, 11/2006 - 2/2007
Convexus Advisors
1 Ferry Building, Suite 255
San Francisco, CA
Designed and implemented a FIX interface to Convexus' prime
brokerage, with an internal order book for managing the orders and
positions generated by the in-house Convexus trading model. Wrote tools
for easy, automated data extraction from Bloomberg data feeds.
Developer, 6/2006 - 8/2006
Knight Equity Markets
4699 Old Ironsides Drive, Suite 300
Santa Clara, CA
Performed support and debugging for KEM's trading system. Wrote a
FIX interface to DirectEdge ECN for TOM, the group's next-generation
trading engine.
Sabbatical, 8/2005 - 6/2006
Chief Systems Architect, 10/2004 - 8/2005
Gelber Group
141 W. Jackson, 21st floor
Chicago, IL
Designed and built a complete foreign currency trading system. The
traders wrote their own trading applications using a Perl module I
provided them.
- Assembled an 8-machine cluster of production Linux servers.
- Did system administration for the cluster, including supporting 8 regular system users.
- Wrote feed connections to HotSpot, Currenex, Deutsche Bank, Dresdner, RBS, eSpeed, TT XTAPI, and EBS.
- Wrote "PTS" (Price/Trade Server), which had the following features:
- Forwarded market data from feeds to all subscribed clients
- Archived all tick data to a Mysql database
- Forwarded client orders to the appropriate feeds
- Recorded all order state changes and fills to the database,
including millisecond time resolution for system performance analysis
- Provided client-to-client message passing functionality, allowing clients to inform other clients of state changes
- Provided clients with live-updating database table
subscriptions, where updates to watched Mysql tables would result in
all subscribed clients being informed of the updates.
- Provided detailed logging of all order traffic, for debugging and auditing purposes
Systems Analyst, 10/2002 - 9/2004
Error Free Software, LLC
200 S. Wacker, 24th floor
Chicago, IL
Worked very closely with traders to develop tools and system
improvements for them, as well as assist the traders with their own
Perl programming.
- Implemented high-performance data feeds for OPRA and Nasdaq
multicast feeds (processing approximately 80,000 price updates a
second).
- Wrote "TLib", a perl module which allowed traders to write Perl
scripts which could access Archelon's custom database to receive price
and record updates, as well as use Archelon's theoretical valuation
libraries to generate live theoretical data for options. The module was
also capable of updating price and record updates, which allowed it to
be used for a wide variety of administrative tasks.
- Extended the functionality of Archelon's ISE interface for combo options.
- Tracked down and fixed very subtle data corruption bugs in Archelon's custom database.
Software Engineer, 5/2002 - 10/2002
Bear Stearns
311 S. Wacker, Suite 5440
Chicago, IL
Worked as a server-side Solaris developer on Bear Stearns's proprietary market making system.
- Developed a modular "glue application" which gathered instrument
and fill information from external sources and inserted this
information into the market making system's database.
- Reworked perl scripts for trading server startup/shutdown to improve clarity and portability.
- Performed maintenance, bug fixes, and wrote documentation for two legacy proprietary Windows applications.
Support/Development Engineer, 12/1999 - 11/2001
The Hull Group, LLC
311 S. Wacker, Suite 1400
Chicago, IL
Performed technical support and feature development for Hull's proprietary
market making system.
- Daily morning startup duties consisted of assisting the Operations team
in bringing the trading system up and troubleshooting problems before
market open.
- Trading hours support duties included diagnosing and correcting system
problems in real time. Extreme emphasis on solving problems quickly and correctly.
- Development duties included fixing code responsible for known system
problems, and developing new features.
- Developed a system to mine trade files and tick data to generate customer
reports for option order flow business.
- Developed an interface to allow sharing of stock positions between Hull and
SLK (a firm Hull merged with), to allow both firms to correctly mark short
sales of stock to comply with SEC short sales rules. Also developed auxiliary
verification tools for the compliance officers overseeing the project.
- Modified existing trading algorithms for option order flow business to
support integrating the option order flow system into the main option trading
system.
- Performed a script and code audit to identify system redundancies for
the purpose of reducing load.
- Worked as part of a team assigned the task of splitting the main option
trading system into two separate networks in order to manage system load.
Software Engineer, 12/1997 - 12/1999
Motorola
Secure Design Center
Schaumburg, IL
Participated in the development of the Universal Crypto Module, an ARM-based
encryption device for use in Motorola land-mobile radios.
-
Refined and debugged preliminary design of the UCM SCI and SPI subsystems.
-
Rewrote and updated the SCI and SPI protocol documentation.
-
Assisted in the coding and testing of the SCI and SPI subsystems.
Led technical development of the Auto Test Platform (ATP), a department-internal
project to perform automated regression testing for the UCM and standards-compliance
testing for the UCM. ATP allows the user to write high-level scripts in
Tcl on a PC to test hardware devices external to the PC. The project's
scope was later extended to provide automated testing for other modules
in the lab. By the end of the project, automated testing was being
done on three additional hardware modules; the RNC, the DIU, and the KVL.
-
Wrote embedded code to control an HC11-based Test Fixture, which translates
serial-line commands from the PC into SCI/SPI commands to target modules.
Test Fixture capabilities include timestamping of commands and responses,
accurately timed delivery of commands, monitoring of all the target module's
output lines, and individual control of all the target module's input lines.
-
Designed a distributed architecture using a client-server Tcl application
and DCOM to allow remote testing of equipent anywhere in the lab, and to
allow both NT and HPUX machines to use ATP.
-
Designed the main ATP GUI client, which provides a high-level user interface
allowing the test engineer to easily manage and organize large batches
of test scripts and their associated result data.
-
Designed a Programming Station GUI client, which provides a simpler interface
for the routine task of programming and testing new UCM modules after they
are built in the factory.
-
Assisted in the design and prototyping of a new version of Test Fixture,
adding several new features to the design while retaining reverse-compatibility
with the old Test Fixture.
-
Implemented a network-accessible encryption service, to provide convenient
in-lab access to hardware-only Motorola-proprietary encryption devices.
-
Supervised the work of two summer interns on the project, and two consultants
hired to replace the interns.
-
Wrote extensive user and developer documentation.
Co-op Engineer, 4/1996 - 1/1997
Siemens Medical Systems
Hoffman Estates, IL
Participated in the development of ACOM.PC, a Windows 95/NT medical
imaging display product.
-
Performed testing, debugging, and implementation of new features.
-
Wrote technical documentation and test plans for new features.
-
Extensive use of VC++ and MFC, including multithreading, DirectX, and graphics
format translation
-
Maintained batch scripts for night builds