I am a software development leader with more than 15 years of hands-on experience. I have managed local and offshore teams of developers and producers, architected and developed web and mobile applications, backend and frontend, big data/recommendation engines, B2B and eCommerce platforms, and system tools and processes - often at the same time.
As an Architect, my experience has often led me to java stacks, but I have also selected and worked with various other stacks, languages and ecosystems like Flex, Google web toolkit and Python. My latest toolbox of choice for web app and services is Play/Scala and MongoDB, but I'm always researching and staying abreast of the latest technologies to find the best tool to solve the problem at hand. When the opportunity presents itself, I create or contribute to open source projects. One of them is an implementation of Google protocol buffers in action script for use in flex applications.
My role has often consisted in helping teams work and communicate together, particularly interfacing with product management to help define/refine requirements, build roadmaps and prioritize.
I am very familiar with scalability and high availability, I have architected several live distributed systems around those concepts, with various requirement sets ranging from millions of fast transactions, to thousands of concurrent long running operations. My contributions are at both the system and the software development/deployment process.
On the management side, I have lead teams up to 25, with responsibilities ranging from day-to-day management (one on ones, mentoring and conflict resolution), process (prioritization, scrum planning/retrospectives, demo), to comprehensive hiring plans (capacity, job descriptions, working with recruiters, setting interviews guidelines), retention (working with HR on regular assessments plans, motivation and employee development plans), and process definition and implementation.
A long time proponent of Agile methodologies, I have implemented Scrum successfully (at Jackson Square Ink, MediaZone), and continually improved upon Agile processes in my other tenures. I like to evangelize cross-functional teams, continuous integration and scrum or kanban processes.
Director, Engineering & Architecture
Jackson Square Ink (A Division of Harland Clarke)
Since March 2013
Jackson Square Ink owns and manages a portfolio of stationery eCommerce properties, including expressionery.com and walmartstationery.com. My role is to build the development team and frame the architecture for the next generation of these properties.
- Specified and implemented the IT infrastructure, tools and services for the new San Francisco office
- Consulted on ATG platform architecture and workforce needed to grow eCommerce brands
- Recruited technical, product, and production teams.
- Developed corporate website (Play/Scala) and various online tools for the office
San Francisco & Ho Chi Minh City
January 2012 to February 2013
Klamr is a SOcial-MObile-LOcal app (iOS/Android/Web) allowing users to organize events with their friends. Hooking up to the user's social graph (Facebook, Foursquare, Google, Twitter) and phone contact list, it offers places and guest recommendations, seamless communication with guests and participation tracking.
Manager of the server team (5 engineers in Saigon, Vietnam | 2 in US), with responsibilities for API design, infrastructure setup and server architecture, directly reporting to VP of Engineering. Key role of coordinating and collaborating between exec team, product management, project management, client development team, QA and system operation.
Coordinated and collaborated with:
- Exec team on product direction, vision, and how that translated to server development and infrastructure
- Product management on vetting technical feasibility of features requests, translating product requirement into technical specs, and prioritization of features tasks vs technical tasks
- Project management on sprint planning (product owner for the technical tasks)
- Client development team on API design to help improve product performance with minimal impact on server scalability and running cost
- QA on prioritizing test coverage areas, help test planning, lead automation technical solutions
- System operation on infrastructure blueprint, technology choices, monitoring, process, etc
Oversaw and participated in:
- Building and testing the server infrastructure to be secure, highly available, scalable and properly monitored. Using Zabbix, Pingdom, Scoutapp, Nginx, HAproxy, Pgpool-II
- Architecture and development of our new generation recommendation system. Using Mahout, Python ETL, MongDB
- Setup of an automated and safe deployment process, using Fabric, Ansible, Chef, CloudFormation
- Migration from subversion to git
- Development of an automated functional test framework
- Re-haul of the server logging to leverage rsyslogs with postgres for automated test support and Hadoop for metrics calculations with Hive
- Improvement of the development process within Scrum framework
Principal App Architect
Cloud 9 Analytics (C9)
November 2009 to January 2012
Cloud 9 is a suite of Salesforce applications designed to present a time based view of sales pipelines and forecast tools.
Architected and designed an SOA Framework based on Google Protocol Buffers (Protobuf), Spring and code generation. The framework allowed Cloud9 stack to be composed of loosely coupled service modules with strong contract and performant communications.
Refactoring of the current Cloud9 Flex UI to fit in a MVC (Selected PureMVC for the framework).
Freelance RIA/J2EE Architect Consultant
San Francisco Bay Area
January 2009 - November 2009
Owner and main developer of open source project [http://code.google.com/p/protobuf-actionscript3/] which provides an actionscript3 (flex) implementation of Google Protocol Buffers.
Architecture and implementation of 3 complex Flex/Air Rich Internet Applications (RIA) on top of a proprietary set of RESTful web services for Motorola. Implemented Google Protocol Buffers, SRP Authentication and Key Exchange System (RFC2945) and OAuth in actionscript3 (Flex) for the communication layer, and a complex MVC UI consisting of 100+ views with animated transitions and custom made components.
Architecture and implementation of a Recommendation Engine prototype for the BBC. Architected a flexible 2 stage solution allowing high performances despite heavy processing. Implemented a J2EE (JBoss/MySQL on Linux) server parsing, persisting and analyzing textual and relational data on the backend, fronted by SOAP web services and a servlet based web application. Used open source recommendation calculation APIs like Taste, and implemented a core API of sparse matrix calculations including cosine vector comparisons.
Architecture and development of a specialized social network website entirely in Flex UI on top of a J2EE SOA server platform.
Director Engineering and Production
November 2007 to January 2009
Head of the whole production side (25 employees, 4 teams) of MediaZone’s multi-channel online media offering, reporting to the VP of Operation.
Reorganized the Web Development (Tomcat/Struts on Linux Virtual Hosts) team into a group of 8 developers mentored by one team lead, keeping only one member from the original team. Introduced development tools and processes (Subversion, standardized branching, Scrum, automated build and release), targeted the refactoring of critical parts of the code base and strictly enforced good coding practices. Effectively transformed the team in about 6 months, from an inefficient group dealing with extremely hard to maintain code, into a very responsive unit able to cut down site bugs while implementing new features and pages. Started new Flash/Flex video player and preview widget projects.
Created the Web Services team of 3 senior developers to implement a SOA platform supporting registration and purchase management, feed ingestion/management, XMPP (Jabber, OpenFire) chat integration, Digital Asset Management (DAM) supporting the Flash player and universal commenting. Architected the platform around a clustered set of Linux virtual hosts running Jboss/MySQL.
Created the Data Production team of 3 producers supporting all Mediazone's sports channels with daily updating of content.
Oversight of the Video Production team and its manager in charge of live events, VODs, downloads, short form content, DRM settings, encoder prototyping and installation. Defined tools needed to simplify and automate the international production tasks, helping reducing the resources needed.
Managed two Project Managers assigned to web development and web services, and one Customer Support in charge of Mediazone’s offering.