Summary of Qualifications
- 10 years experience in designing and developing software applications on over 25 different engagements, focused primarily on enterprise-scale J2EE systems and components.
- Proficient with concepts and techniques of OOA, OOD, AOP, Design Patterns, and agile development processes like XP and Scrum.
- Interested in making software not just functional, but usable; administered and coordinated usability tests on 3 different engagements.
- Enjoys challenges, thrives in teams, hard worker, dedicated to quality work, excellent communicator, and strong writing skills.
Professional Experience
Education
Certifications
- Sun certified Programmer for the Java 2 platform
- Sun certified Web Component Developer
- Brain Bench certified Object Oriented Concepts
- IBM Rational Unified Process 7.0
Side Projects
-
CodersCV
(2008
-
2010):
Creating this site (!!), a better visualization of a developer's skills than the traditional resume.
(Java, iBATIS, Spring MVC, JSP)
-
CRM and Scheduling System
(2006
-
2007):
Designed and implemented a web-based system to help a local fire protection business track inventory and route technicians to customer sites. The system was intended to reduce operational costs and increase customer retention, thereby increasing revenue.
(Java, Struts, Hibernate, JSP, Javascript)
-
FHLB Toolbox
(2007
-
2007):
Rewrote an existing web application used to manage internal banking documents using Java-based technologies to keep consistent with IT standards. The site was used by 200+ users located in different FHLB branches around the country.
(Java, Webwork, Hibernate, MySQL, Javascript)
-
KIWI Bulimia Database
(1998
-
1999):
For a Software Engineering class at Carnegie Mellon, a team of 5 were tasked with creating a database to track the results of an international study on anorexia and bulimia for the Western Psychiatric Institute in Pittsburgh. The project lasted one semester, and afterwards I was hired on by the Institute for 6 more months as an independent contractor to maintain and enhance the database.
(MS Access)
-
RealStats Website
(2004
-
2004):
I created a basic web site for a local small business that distributes statistical reports on real estate transactions in Allegheny county. The site provides potential customers the ability to generate sample reports online, demonstrating the power of the RealSTATs data set.
(PHP, MySQL)
-
Classic Clips Website
(2004
-
2004):
For the College of Arts and Sciences, I developed a very simple web site to showcase their distinguished faculty. The site consisted of two parts: the web site itself, containing instructional videos and teaching resources, and an administrative console where the web site content could be updated.
(PHP, MySQL)
-
Accounting System
(2003
-
2005):
Made improvements to an off-the-shelf accounting system to better manage customers and inventory.
(MS Access)
-
CRIMP
(1997
-
1998):
When I was in college, I worked the desk at the local rock climbing wall. The database we used to track customers and sales was pretty limited, so I began to make enhancements here and there. After about 7 months, I had completely gutted the old system and replaced it with a fully featured database management system. They still use it today.
(FileMaker Pro)
-
Customer DB
(1998
-
1998):
Between my junior and senior years in college, GymKhana Gymnastics hired me as an independent consultant to build them a database to track their customers, inventory, and sales. I finished the project in 100 hours, and they still use it today.
(FileMaker Pro)
Open Source Contributions
-
PMDReports
(2006
-
2008):
PMDReports is a wrapper around the popular open-source Java code analysis and bug detection tool, PMD. Whereas PMD generates and displays code quality statistics at a source code level, PMDReports persists and aggregates these statistics so that code quality can be viewed from a more macro, component level. From this elevated perspective, development team members can begin to better understand: (1) Which components in a project have the best or worst code quality? (2) As development continues, is code quality improving? Or getting worse? (3) How does code quality in this project compare to other projects?
(Java, XSL)
-
Euclidean Geometry Theorem Checker
(2007
-
2008):
Collaborating with Dr. Jeremy Avigad and Dr. John Mumma, I built an automated theorem checker for a formal system of Euclidean Geometry. A user enters facts about a diagram, and the tool generates a list of logical entailments - i.e. conclusions that could be deduced using pre-defined logical rules.
(Java, JavaCC)
-
BUMP
(2001
-
2001):
An intelligent MP3 player that learns your music preferences and then optimally plays songs based on your current mood and tastes. To my knowledge, there's nothing out there quite like this. Most MP3 players will allow you to create custom playlists or play songs randomly. This is different. BUMP allows you to define a song's genre, mood, and how much you like it. It then uses a basic statistical algorithm to select an "optimal" group of songs to play for you at that time. I literally use this every day - if you're interested, let me know.
(Java, JMF)
-
BUMP 2.0
(2004
-
2005):
This is version 2.0 of an intelligent MP3 player that I created a few years ago. Other MP3 players that I've seen are usually of one of two flavors: the playlist model or the random model. With the first, you're forced to manually create playlists, which gets very tedious. With the second, you end up listening to songs you don't like as much as songs you do - since it's completely random. What I created is the best of both of these worlds - a player that intelligently selects songs based on your mood and preferences. If you're interested in trying it out, contact me.
(Java, Swing, JMF)
Publications
-
Is it Irrational to Comment your Code?, Blog
:
We know we should comment code, but will we? Game Theory's Prisoner's Dilemma says, "probably not".
-
7 Strategies for Unit Testing DAOs and other Database Code, Blog
:
Creating repeatably passing unit tests for an enterprise application is hard work, mostly because of the reliance on volatile data. Here are 7 common approaches for testing database code.
-
SOA and Authorization (Part 1) - What's so hard about it anyway?, Summa Blog
:
Part 1 of a series of posts on SOA and Authorization, laying the conceptual groundwork.