Damien Sullivan -- Software Developer
Objective: Contract or FTE software engineering roles on Unix; I'm
strongest in C++ and Python, with some Perl, and Java, but can learn others quickly on the
job. Strengths in server-side, systems, and algorithms.
- Languages: Python, C, C++ (C++17) and STL, SQL, shell; Java, Perl; Rust, Ocaml, SQL, Haskell, Scheme
- Object-oriented and functional programming
- Network and multi-threaded programming
- Environment and tools: Unix/Linux, make, GIT
- Comfortable with calculus, linear algebra, differential equations, and algorithmic analysis
- Excellent writing skills
- Test-driven development
- Software Engineer at Kinnami Software Corporation, March 2017-present.
Responsibilities cover Dev, QA, and Ops.
- Back-end Python development, on Linux; wsgi/Django REST services and
standalone programs; Amazon EC2 and S3.
- Main responsibility for 20-30K lines of Python code.
- Introduced pervasive logging.
- Developed new REST services and APIs as needed.
- Researched and implemented publication to the Ethereum blockchain.
- Testing and QA of all code; proofreading of website text.
- Deployment and monitoring on AWS. Administration of development and
production Linux machines.
- Wrote automation shell scripts for cluster tasks.
- Assisting other developers with dev tools such as Linux, vim, shell, and
git, including mentoring an intern.
- Teaching assistant at Indiana University Bloomington; August 2002-May
- TAed classes in assembly language and computer architecture, where the
students programmed turtle robots.
- Mindstalk Consulting; 2001-2002.
- Self-employed software contracting, Java and C++.
- Software Engineer at Cogit Corporation; July 1998--September 2001.
- Managed a suite of Perl/CGI scripts acting as a GUI for the core machine
- Debugged and enhanced components of the core code and algorithms (C++).
- Acted as a 'fireman' solving other people's urgent problems.
- Wrote a networked service dispatcher in C++ with dynamically loaded plug-in modules, which was the middle tier of the company's three-tiered web services product, and designed the interfaces and configuration for the dispatcher and modules.
- Participated in intermittent pair programming and peer review, trained junior developers, helped supervise the automated build and test system, and helped guide the company Unix sysadmin.
- Caltech; webmaster; February 1997--June 1998:
- Webmastering and design in the Planetary Science department at Caltech.
- Helped run my advisor's experimental HyperForum site.
- Integraft; Contractor; June 1996-August 1996:
- My employers had a body suit to capture and display movement; I used Visual C++ to analyze and visualize the data.
- Caltech; webmaster; September 1995-December 1995:
- Worked on a Web site for a geology/environment class at Caltech.
- Caltech; web designer; June 1995-September 1995:
- Designed and provided
graphics for the Earthquakes in Southern Calfornia page of Caltech's
- Caltech; data visualization; June 1994-September 1994:
- Learned AVS and
used it to create an animation of the Northridge Earthquake, which was used in
a public information kiosk in the lobby of the Seismo Lab and on a SCEC Web
- Caltech; untitled; June 1993-September 1993:
- Miscellaneous data wrangling and processing in Caltech's Seismo Lab.
- Corboy and Demetrio; database manager; June 1992-September 1992: Learned
and wrote queries for a law firm's database.
- Loyola University of Chicago; Teaching Assistant; June 1991-August 1991:
Advanced Placement Computer Science (in Pascal) Teaching Assistant.
- 2015-current: independent study of algorithms, design patterns,
networking, and new or updated languages.
- M.S., Computer Science, Indiana University Bloomington, August 2002-June
2005. (Part of a comp sci/cognitive science PhD program through 2010, studying
models of analogy making under Douglas Hofstadter.)
- B.S., Planetary Science, California Institute of Technology, September
- Some graduate school courses: computer theory (automata, computability,
complexity); analysis of algorithms; computer graphics; operating systems;
scientific computing; Bayesian analysis; group theory visualization; quantum
computing; mind and evolution; fundamentals of computer languages; agent-based
simulation; concepts and categories.
- 2015-current, educational projects, too varied to comprehensively list:
- chat server/client in multiple languages and style (select loop vs.
- Simple algorithm refreshers, and implementation of newly learned ones
- Ditto for data structures (e.g. AVL tree).
- Sundry small personal tools over the years:
- Dice roller
- Finance data wrangling script
- Simple web templating
- Number puzzle generators.
- Mailing list management scripts.
- 2003: Co-wrote a simple NACHOS operating system in C++ for class in grad
- 2000: Wrote an incompetence interview
test, which got used in Cogit's (and Google's) hiring processes.
- (College) Wrote a personal e-mail client in Perl. Code at http://mindstalk.net/mash/
References available on request.