Software Engineer with more than fourteen years developing maintainable, resilient software. Demonstrated strength as a technical leader and promoter of a learning culture. Numerous projects optimizing existing code, eliminating defects, and adding new functionality. Comfortable with highly independent and self-directed work, with a focus on good communication. Proven track record of learning and evaluating new technology. Through
Software Engineer with more than fourteen years developing maintainable, resilient software. Demonstrated strength as a technical leader and promoter of a learning culture. Numerous projects optimizing existing code, eliminating defects, and adding new functionality. Comfortable with highly independent and self-directed work, with a focus on good communication. Proven track record of learning and evaluating new technology. Through direct contact with clients, have played an important role in shaping the direction of products to improve and expand features to meet their needs. Experience working with several flavors of agile development. Conversational in Japanese.
Interests: distributed systems, scalability, Clojure, Erlang, functional programming, data
NO interest: management-track, relocation or long commutes
Software Development Engineer @ Developer on the Seller Apps and Services team, focused on maintaining and extending seller-based services and the web-based UI.
- Rewrote legacy PHP services in Java. Benefits included enabling server-side paging and improving read performance for large customers.
- Added validation services and UI alerting to prevent customers from creating invalid rules.
- Optimize fee calculation script to correctly track income without burdening other systems relying on the same data. From July 2015 to Present (6 months) Greater Los Angeles AreaSoftware Developer @ Develop and extend the server backing the Whisper anonymous social mobile app. An Erlang application spread across multiple AWS deployed servers to manage the uploading, filtering, administration, and viewing of user-posted content.
- Added caching over Cassandra data access.
- Extended API endpoints to support new features.
- Helped separate out systems to run services independently. From February 2015 to June 2015 (5 months) Greater Los Angeles AreaLead Software Engineer @ Develop and support the Nexpose vulnerability management application as a technical lead of the Sustaining and Core teams. Strong advocate for a learning culture in the company, organizing lunch-and-learns, code katas, book clubs, and training sessions.
* Develop and maintain Nexpose, a Java application, deployed into the customer's environment, accessed through a web interface, and connecting to remote engines in order to scan client networks for potential vulnerabilities.
- Refactored the integration and assessment of assets to more closely align with customer expectations of how assets are defined, while enabling the further growth of product's capabilities.
- Addressed deficiencies in the update mechanism to ensure that customers taking weekly product updates are able to continue scanning with minimal interruption.
- Acted as third-tier support. This included directly assisting customers in workarounds and identifying defects to quickly address problems in the product.
- Optimized the product to save space on existing installations, include file system usage and PostgreSQL database size.
- Aid in bringing a customer perspective into general product development, as well as making the product more maintainable for the Support organization.
- Spearheaded the introduction of behavior-driven development using the Cucumber framework, which evolved into a core safety net for release.
* Took ownership of the nexpose-client gem, a Ruby library, which enables customers to interact with and automate against their Nexpose installation.
- Expanded coverage to the full Nexpose public API, as well as introducing convenience methods for accessing parts of the product not exposed otherwise.
- Respond to user issues and professional services requests to keep the gem robust and up to date.
- Reworked the overall interface of the gem to provide a uniform experience across the various methods and classes, thus reducing the learning curve for new users. From November 2011 to February 2015 (3 years 4 months) Senior Software Engineer @ Developed monitoring and support applications for company-internal use as part of the Tools and Frameworks group.
* Developed and supported the Belvedere log-monitoring tool, an essential tool for first-line production support throughout company's offices worldwide. A Java application deployed on JBoss, using JMS to communicate between a light-weight front-end and a message processing server to alert on potential issues before customers are affected. The server configuration is maintained through JMX technology, allowing for on-the-fly configuration changes to respond to problems or load, making for a more robust and stable user experience.
- Developed significant performance improvements, such as introducing optimizations in the rule-processing engine.
- Converted internal messaging to JSON for performance improvements, version compatibility, and readability.
- Provided around-the-clock technical support as well as in-person and remote training to users worldwide.
- Applied TDD as much as possible, including integrating unit testing into automated CruiseControl builds.
- Extracted general use utilities and MBeans to external libraries for other products to take advantage of.
* Developed the System Monitor tool for use by internal support personnel. It is a C# client application that collects data from different sources on the company BUS to allow support to trace orphaned orders and rejects as well as watch for unexpected fluctuations in market data streams, with the potential to plug other support tools into a single entry point via Lua scripts.
- Took an unstable internal tool and improved stability to the satisfaction of the support staff relying on it.
- Converted from .NET 2.0 to 4.0 so that other developers might integrate and maintain the code more easily.
* Maintained the Cerberus performance monitoring tool, a Perl-based CGI application. Began work on a Java-based re-implementation, with the goal of creating a more maintainable code base. From March 2007 to August 2011 (4 years 6 months) Quality Assurance Analyst II @ Implemented automated testing suites for web, stand-alone, and server applications. Developed and implemented test cases for production release of products (post-trade analysis tools and internal system monitoring tools). Developed FitNesse automation tests and fixtures. Developed WinRunner scripts for automated testing.
* Tested and implemented an automated testing framework for the Belvedere log-monitoring tool.
- Spearhead one of company's first uses of FitNesse, implementing Java interface code as well as test cases.
- Successfully brought automated test coverage against the product up to an estimated 95%.
- Served as an Agile coach focused on increasing automated testing, particularly using Fit and FitNesse.
* Tested and oversaw deployment of the Transaction Cost Analysis (TCA) tool, a flagship research tool for the company depended upon by its most important clients.
- Developed WinRunner automated testing, dramatically reducing regression testing time on a complex interface.
- Developed numerous Perl and shell scripts for automated validation of data from separate Market Data servers. From April 2001 to February 2007 (5 years 11 months)
Certificate in Applications Programming @ University of California Los Angeles Extension From 2002 to 2004 Master's @ University of California, Los Angeles From 1996 to 1998 Bachelor's @ University of Chicago From 1992 to 1996 Lancaster High School From 1989 to 1992