02/10 - present |
SpringSource, Palo Alto, CA
SENIOR MEMBER OF THE TECHNICAL STAFF
Core Grails team member.
|
 |
06/09 - 02/10 |
GRAILS CONSULTANT
Development, support, and mentoring services for various clients using Grails.
|
 |
01/08 - 10/09 |
Students Only / Edhance, Cambridge, MA
SENIOR SOFTWARE ENGINEER
- One of two developers
- Wrote a live chat application using the Grails framework for web-based technical support
- Integrated Shibboleth-based authentication for universities in the InCommon federation to automate student enrollment verification
- Wrote significant portions of the Edhance web site, a new site that helps college students save money at participating merchants, including
- Merchant signup
- Payment and cashback processing, integration with credit card payment processors
- Site security (using Spring Security)
- Data analysis
- Reporting engine
- MySQL DBA
- Tomcat server clustering for high availability
|
 |
03/07 - 01/08 |
American Well, Boston, MA
SENIOR SOFTWARE ENGINEER
Senior developer for the CareTalks web application.
- Implemented much of the early development infrastructure including Subversion server over HTTP using Windows domain authentication, Cruise Control, Ant build process, unit test process, Spring and Hibernate configuration, and core code
- Implemented form-based application security using Acegi, and SSO using CAS and Acegi
- Created a database upgrade facility to configure and apply DDL and DML scripts to any existing release version of a schema to update to the current version, including an event-based notification subsystem that was the prototype for an application-wide event subsystem
- Implemented I18N, extended to allow customized messages, images, and CSS for a hierarchy of customers both per-Locale and per-customer
- Data access development using Hibernate, JDBC, PL/SQL stored procedures
- Performance and scalability tuning, object caching
- Mentored other developers
|
 |
10/06 - 03/07 |
JumpTap, Cambridge, MA
SENIOR SOFTWARE ENGINEER
Developed enhancements and extensions for a Java-based reporting engine used to generate weekly, monthly, and ad-hoc reports tracking usage, trends, and metrics for JumpTap's mobile phone search engines. Tasks include custom report development, automation via custom Ant tasks, and optimization of MySQL database structure, schema, and SQL for performance and scalability.
|
 |
06/05 - 10/06 |
Primera Biosystems, Mansfield, MA
PRINCIPAL SOFTWARE ENGINEER
- Lead developer at Primera
- Wrote data analysis and visualization tool (a Swing-based desktop application using Spring and Hibernate) for Assay Development scientists that significantly reduced repetitive tasks and streamlined workflows
- Implemented enhanced algorithms for electropherogram peak detection and quantitation, enhancing or replacing those in the device software (GeneMapper)
- Implemented data export to image files, PDF, and Excel workbooks with experiment data, summary charts, and statistical calculations that function as a report and as a "what if" analysis and prediction tool
- Created a web-based auto-analysis workflow tool that monitors electropherogram device output, generating initial GeneMapper analysis, then applying custom algorithms and exporting results to Excel. The autoanalysis application automatically creates a Wiki page with an analysis summary and the Excel workbook attached, as a form of electronic lab notebook
- Implemented application auto-update to ensure users have the latest version
- Implemented application access outside the firewall by tunneling database and file requests through SSH, including a SOAP web service to serialize Oracle queries to work around the known issue of Oracle's thin driver's inability to tunnel over SSH
- Purchased and configured development/bioinformatics/intranet servers running Fedora Core Linux, MySQL, Apache, CVS, Bugzilla (replaced with Atlassian JIRA), Wiki (Atlassian Confluence), Samba, SSH
- Implemented a web-based application for monitoring and administrating compliance and quality assurance, using Ajax, Hibernate, and Spring
|
 |
12/04 - 05/05 |
Wellington Management, Boston, MA
SENIOR SOFTWARE ENGINEER (contract)
Senior developer for the Global Trading System application, a WebLogic-based server application and Swing client for internal trading. Refactored server-side event handling mechanism to batch logical groups of asynchronous events to accurately synchronize the client with the server and fix timing issues that resulted in temporary error states. Various performance and scalability fixes and enhancements. Developed an aspect-oriented performance and scalability monitoring framework for benchmarking. Developed Swing panels and J2EE integration code for new FX (Foreign Exchange) trade editing functionality.
|
 |
05/04 - 11/04 |
National Leisure Group, Woburn, MA
SENIOR SOFTWARE ENGINEER
Senior developer on the Dynamic Packaging System (DPS) team. DPS is a high volume, J2EE-based (JBoss) real-time availability and booking engine for vacation packages. The application powers the Vacation tabs on the Orbitz and Yahoo! travel web sites. Implemented various bug fixes and enhancements in the DPS system. Completely rewrote an in-house server farm monitoring system (the "OpCenter") which uses Apache JMeter to test server availability, health, response times, and various other metrics. Designed and implemented a role-based security system for web-based administrative applications, including single signon between applications across servers. Implemented various build script and process improvements.
|
 |
07/02 - 5/04 |
Biogen Idec, Cambridge, MA
SENIOR SOFTWARE ENGINEER (contract)
Senior Java developer with the Bioinformatics group. Primary duties involved development for the Biogen Annotation Tool (BAT) project, a web-based warehouse application that unifies many heterogeneous Bioinformatics data sources into a common interface for use in gene research. Wrote the database API for accessing the BAT database. Wrote the database search engine, including seven different search modes. Wrote the gene list import facility. Created several JSP custom tags. Wrote a help system for context-sensitive help throughout the site. Mentored other Java developers. Automated the build and deployment process using Ant. Wrote various developer utilities including JSP precompilation, administration JSPs, database connection pool, standardized logging. Refactored significant portions of the existing code base for performance, reuse, and consistency. Also designed and wrote a Swing-based port of a VB6 desktop application used for visualization and analysis of Mass Spectrometry data. The tool allows scientists to import mass spec data from a variety of data formats. Users utilize 2-dimensional and 3-dimensional views of the data coupled with database integration to identify peptides and proteins.
|
 |
06/01 - 07/02 |
Element K, Rochester, New York
SOFTWARE ENGINEER
Senior Java developer for the KnowledgeHub Learning Management System (LMS), an EJB-based ASP solution. Designed and implemented enhancement features in small teams, including a Web Services framework to expose KnowledgeHub functionality to clients and partners via SOAP. Technologies included EJB, JavaBeans, Servlets, JSPs/JSP TagLibs. Part of a team chartered to improve performance and scalability of the application, as well as the maintainability of the codebase. Took the initiative to become a subject matter expert in several areas, including J2EE technologies, CVS source control process and administration, SCM process, build process, Ant tool, and WebLogic configuration. Re-engineered the software build process, decreasing build time by over 75%. Wrote custom Ant extensions. Took the initiative to write utility software for the development team, including a GUI front-end for Ant and a GUI tool to manage multiple local WebLogic server configurations. Took the initiative to bring JUnit unit testing to the organization, initiating training the development team and participation in a small team formalizing and documenting the unit testing process. Wrote a book on J2EE technologies and WebLogic Server for the Element K jCert certification series.
|
 |
10/00 - 6/01 |
Xerox Corporation, Rochester, New York
SOFTWARE ENGINEER (contract)
Senior Java developer for the WebXpress solution. Project was a distributed web-based Java application using Jini & JavaSpaces, JDBC, XML, JSP, JSP Tag Libraries, Servlets and Applets to provide customized document conversion and print job routing via the web for Xerox customers. Used JIntegra to automate applications in Java via DCOM to convert documents to PDF/PostScript for printing. Technologies included Apache web server, Tomcat, MySQL, CVS, and the Xerces XML parser. Also developed Swing-based Java utilities.
|
 |
9/99 - 10/00 |
Auragen Communications, Rochester, New York
APPLICATIONS DEVELOPER
Web and database programming for client web sites; technologies include JSP, Servlets, JavaBeans, JDBC, ASP/VBScript, ADO, JavaScript/DHTML, XML, HTML; databases include Oracle, SQL Server, Informix; installation and administration of Apache web server and JRun application server. Sites include Zap.com's Zapbox, my.Wegmans.com, and the job search sitelet at www.Kodak.com.
|
 |
OTHER EXPERIENCE: |
 |
03/08 - present |
Grails Plugin Developer
- Currently the primary developer of the Spring Security (Acegi) plugin (since the 0.2.1 release); features added include
- upgrade to Spring Security 2.0
- support for LDAP/ActiveDirectory, OpenID, CAS, Kerberos, NTLM, and Facebook Connect logins
- many bug fixes
- extra configurability
- extensive the documentation
- added a large suite of unit and functional tests
- Created the Datasources plugin to let GORM connect to two or more databases
- Created the UI Performance plugin to help implement the Yahoo Performance Team's 14 rules
- Created the Spring MVC plugin to allow usage of Spring MVC Controllers written in Java and using JSPs to render views in a Grails application
- Created the Twitter plugin to provide access to the Twitter API
- Created the CodeNarc plugin for static analysis of Groovy code, using the CodeNarc library
|
 |
10/06 - 03/07 |
Primera Biosystems, Mansfield, MA
CONSULTANT
Consulting, support, and development services. Services include adding new features to products that I developed while a full-time employee, bug fixes, documentation, and helping new developers.
|
 |
04/04 - 05/06 07/07 - present |
Panther Informatics, Somerville, MA
CONSULTANT
- Principal developer for bioinformatics and data management projects.
- Primary developer for a nearly complete rewrite of DrGeneS, an existing web-based application at Massachusetts General Hospital (Psychiatric and Neurodevelopmental Genetics group). Implemented missing and fixed broken features, reworked all database access and added data caching to achieve up to 6000% speed increases, and reworked the web tier in Struts (from simple single-threaded servlets) for maintainability.
- Wrote an XML querying subsystem for Panther's PAWS workflow system which allows SQL-like joins layered over XPath queries between heterogeneous XML data sources (file or database).
- Wrote a full-featured prototype workflow execution and routing engine for PAWS to facilitate further development.
- Imported entire PubMed citation library (>50GB of XML) into relational database (Oracle and MySQL) and wrote Hibernate application to query the database.
- Wrote the prototype application (database access, Spring configuration, web MVC framework, Ant build system) for scilink.com, a social networking web site for scientists
|
 |