Damien Sullivan -- Software Developer
Linkedin: https://www.linkedin.com/in/damien-sullivan-4567665
|
Github: https://github.com/zdamien
Programming blog:
http://mindstalk.livejournal.com/tag/programming |
Math blog:
http://mindstalk.livejournal.com/tag/math
Objective: Software engineering roles on Unix, languages flexible but
strongest in C++ and Python. Strengths in systems and algorithms.
Skills:
- Languages: C, C++ (C++14) and STL, Python, Java, Perl; Ocaml, SQL, Haskell, Scheme
- Object-oriented and functional programming
- Network and multi-threaded programming
- Environment and tools: Unix/Linux, make, CVS, GIT
- Comfortable with calculus, linear algebra, differential equations, and algorithmic analysis
- Excellent writing skills
- Test-driven development
- Consultant for Fluidbase; Jan 2016-March 2016. Part-time C consulting for a
short-lived telepresence robotics startup.
- Teaching assistant at Indiana University Bloomington; August 2002-May
2010.
TAed classes in assembly language and computer architecture.
- Subcontractor for BSI; April 2001-August 2001. Learned Turbine and Velocity
web server and templating systems (with Java); rewrote an admin web page
within this framework; wrote a business events handling module; worked on
customer subscription handling.
- Contractor for Silk Route Technology; April 2001. Helped
develop, and implemented as a Java prototype, an important optimization
algorithm, and helped explain it to non-scientist members of the company.
- Software Engineer at Cogit Corporation; July 1998--September 2001.
Managed a suite of Perl/CGI scripts acting as a GUI for the core C++
application. Debugged and enhanced components of the core code and
algorithms. 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
- Integraft; Contractor; June 1996-August 1996: The project was a body suit
to capture and display movement, using Visual C++.
- 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
Seismological Laboratory.
- Caltech; data visualization; June 1994-September 1994: Created an AVS
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 page.
- Caltech; untitled; June 1993-September 1993: Miscellaneous data processing
in Caltech's Seismo Lab.
- Corbody 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.)
- B.S., Planetary Science, California Institute of Technology, September
1992-June 1997.
- 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.
threaded)
- 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
school.
- 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.