This is my résumé. If you wish, you can also download a copy here.
- Passionate, hard-working problem-solver with strong Computer Science background.
- Follower of good engineering practices such as Test-Driven Design, Pair Programming, Continuous Integration, and Refactoring. Committed to good coding principles such as SOLID, DRY, and YAGNI.
- Over a decade of experience developing back-end server applications, web applications, web services, applets, and client applications.
- Polyglot programmer comfortable with variety of procedural, object-oriented, and functional programming languages.
- Advanced: REST, Linux, Spring, Oracle Database, Maven, MySQL, PHP, EJBs, OS X, Tomcat, Eclipse, Windows, SOAP, Python
- Novice: Lift, SBT, PostgreSQL, JSF
Senior Web Developer - Time Warner Cable - 2011-Present
- Cross-Platform team member, working on multi-dependency Common Services Tier as well as various customer-facing web-based applications. [Scala, SBT]
- Introduced Git and trained team on it's usage, greatly improving productivity and enabling smoother releases
Java Web Applications Developer - Rally Software - 2008-2011
- Created Rallydroid, an Open Source Rally client for Android operating system. [Java, Eclipse, Android SDK]
- Developed test-driven data migration to move customers out of a legacy mode in the product, resulting in the deletion of over 20,000 lines of code, reducing development and testing effort by 50%.
- Refactored large legacy application to remove running container dependency on tests, simplify deployment infrastructure, and use standard JPA-style annotations for domain objects.
Software Engineer - OpenLogic, Inc - 2007-2008
- Created RESTful web services used by Open Source Census initiative. Web services provided all data functionality to the site, including complex reports that aggregated immense amounts of data stored in a warehouse schema. [Ruby, Rails, MySQL]
- Contributed to company-sponsored open source OSS Discovery 2.0 application. Discovery used a set of rules, fingerprints, and heuristics to scan machines for open source software and report to the Open Source Census. [JRuby, Java]
- Received Most Valuable Player Award - January 2008
Senior Software Developer - Acxiom/InsightAmerica - 2004-2007
- Developed e-DriverData, a system for processing multi-state driver history records. e-DriverData seamlessly interacted with 44 different states for driver history, each using different protocols and technologies. [Java, SQL Server, ColdFusion]
- Refactored multi-dependency enterprise application to reduce system coupling. Improved performance by 600% through multithreading, reduced errors/instability almost entirely, and halved development time for system changes. Identified and fixed numerous security vulnerabilities in system.
- Architected centralized data access layer used by company's 10+ enterprise ColdFusion applications. Helped design a Java/ColdFusion bridge library to allow interaction with layer, improving system performance and stability and increasing level of code reuse between applications. [Java, ColdFusion]
- Led developer workshops on topics including thread safety, computational arithmetic, and regular expressions.
- Received Special Recognition Award for Outstanding Performance - September, 2006.
Lead Software Developer - Truth-N-Beauty Software - 2001-2004
- Developed over 40 educational physics and astronomy simulations written as Java applets and Flash interactives for inclusion with science textbooks. Simulations allowed students to manipulate experimental parameters in virtual environment to see real-time changes. Customers included McGraw-Hill, Brooks-Cole, and NASA. [Java, Applets, Flash, ActionScript]
- Led team for a number of multi-component projects. Assigned work, kept people on task, and integrated final products. Was responsible for managing deadlines and releases, and maintained a record of consistent on-time delivery.
- Created a powerful framework for all products that performed essential common tasks. Functionality included customized Java classloader for applets that detected the user's system capabilities and adjusted the features of the simulation accordingly as well as a universal loading screen. [Java, Applets]
- Created an AWT-based graphical toolkit for use in all applications to provide for company-wide consistency in separately developed applications as well as speedy GUI development. [Java, AWT]
- Developed company web site and portfolio sites used to land new customers and allow existing customers to easily browser work-in-progress simulations and make suggestions, streamlining the code/revise process. [ASP, VBScript]
Computer Science Teaching Assistant - University of Rochester - 2001-2004
- Teaching Assistant and Workshop Leader for three different Computer Science classes over 6 semesters.
- Led workshops on procedural programming, object-oriented programming, algorithms, run-time analysis, inductive proofs, and data structures. Workshop became so popular that it had to be split into two separate sessions.
- Helped professors refine their lessons based on student feedback to help focus on problem-areas for students. Was partially responsible for one of the highest pass-through rates for the introductory C.S. classes in school history.
- Led groups of students in semester projects; responsible for guiding students through UML design work, assigning tasks, and integrating final projects.
- Certified ScrumMaster - 2009
- Sun Certified Java Developer - J2SE 5.0 - 2008
- Sun Certified Web Component Developer - J2EE 1.4 - 2006
- Sun Certified Java Programmer - J2SE 5.0 - 2005
Ph.D., Computer Science - University of Colorado at Denver (Anticipated 2016)
- Specialization in Theory and Algorithms
- Coursework: Graduate Algorithms, Theory of Distributed Computing, Theory of Automata, Computer Security, Artificial Intelligence, Computational Complexity, Applied Graph Theory
M.S., Software Engineering - Regis University (2009)
- Thesis: Quantitatively Evaluating Test-Driven Development by Applying Object-Oriented Quality Metrics to Open Source Projects
- Coursework: Information Systems Concepts, Information Systems Architecture, Object-Oriented Software Engineering, Software Requirements and Processes, Software Design, Enterprise Java Programming with Servlets/JSPs, Advanced Enterprise Java Programming with EJBs.
B.S., Computer Science - University of Rochester (2004)
- Focus on Systems
- Coursework: Data Structures, Computation and Formal Systems, Computer Networks, Operating Systems, Language Design and Implementation, Parallel and Distributed Systems, Cryptography, Computer Organization, Computer Models and Limitations, Design and Analysis of Efficient Algorithms.