September 19th, 2018

Welcome to my soapbox, hit the down arrow (or use your arrow keys) to see the FAQ or the right arrow to move on to the experience section

If you came here looking for trakr, sorry, trakr has been discontinued as of September 2018

Try all of the keyboard shortcuts: "o" produces an overview, "b" and "." pauses/unpauses, "f" fullscreens (ESC to un-fullscreen)

This website in no way reflects the views of my employer; the opinions expressed here are solely my own.


November 14th, 2017

  • What's your favorite language?
    • I'm a strong believer in "the right tool for the job," though when programming for the web I think Ruby on Rails is my favorite, mostly due to the semantic sugar of active_support. I also have a strong fondness for Python, which does a great job at being practically universally available, sane, and fast (for most tasks). I have recently started working on Node (and in fact this website was rebuilt using npm/Node recently).

      My educational and professional background also includes Java, with some C/C++ thrown in.

      In my spare time you can find me hacking away in JavaScript (jQuery, NodeJS), and Python (Django).
  • What's your favorite flavor of Linux?
    • Again, the right tool for the job. That being said, my favorite is Debian. The variety of packages available, the existence of backports, and the sanity with which they put together the structure of packages is what's sold me.

      I also have a strong understanding/expertise in Amazon Linux/CentOS (and RHEL in a previous life), but my heart is still with Debian, and this is what I use for all personal projects.
  • In what context should I contact you / how can I reach you?
    • My preferred way of connecting is through LinkedIn; please see the account at the top right corner of this website to send me an invitation. For anything else you can reach me via email. If you've somehow gotten my number, do not call me unless you are on fire and I am the only person who can put you out.

      I am not currently looking for work but I'm happy to connect. If you are sending me a message related to a particular job please at least include all available details.
  • Why this site?
    • The original idea of this site (back in 2012) was to create a simple CMS and blog front-end, partially as an exercise to become more familiar with Python/Django, and partially to build myself a soapbox.

      There are also other websites that I use to various ends: look to the links above to see my LinkedIn (includes a more complete work history, as well as my publications), or go to the hobbies section.

      Since it's inception, I've moved from Python/Django to Ruby on Rails, back to Python/Django, and I'm now onto NodeJS.


Hit the down arrow to look through a brief synopsis of my work experience, or hit the right arrow to move on to the hobbies section


Senior Manager (November 2017-Present)

I am now leading a team of engineers in the "Einstein" division of the Commerce Cloud at Salesforce. This team is focused on using artificial intelligence/machine learning to improve the online retail experience, focusing mainly on product recommendations. In my tenure here so far I have:

  • Reduced cost by writing custom tooling to analyze reserved instance needs and forecast them for major events (Black Friday)
  • Created ramp-up guide for new hires covering first three months of expectations
  • Created runbooks for engineers on our support rotation after extensive work with the support team
  • Managed patching process, tracking patch completion rates and working directly with security and Einstein engineering teams to reduce vulnerabilities (e.g., Spectre/Meltdown)
  • Wrote production software guidelines
  • Contributed meaningful code to many (11) NodeJS projects
  • Worked with security teams and Einstein engineering to integrate CloudAware (automated AWS resource scanning), Sonatype (automated static code scanning), OSQuery (automated system-level log and application scanning), Nessus (automated system-level vulnerability scanning)
  • Managed AWS IAM / SOC2 compliance auditing on behalf of legal/security
  • Worked towards becoming a Salesforce “security champion,” completing the internal CTF
  • Worked towards becoming a Salesforce “security compliance liaison,” attending trainings and identifying people in Einstein engineering to fit roles related to security compliance
  • Created, managed, and updated several different projects’ AWS infrastructure (e.g., move to ASG from static machines, automate rollout using custom tooling, etc.)
  • Implemented mechanism to track total number of “ML interactions,” e.g., number of products recommended by Einstein
  • Prototyped migration from TravisCI to Codebuild, providing migration documentation, and then drove the process to completion across all repositories
  • Presented quarterly on progress of security initiatives and future plan to security leadership team
  • Wrote custom tooling to track requests and latency for monthly reporting and ad-hoc benchmarking
  • Wrote basic pass/fail tests for Einstein integration with SFCC APIs, later used as documentation for the SFCC API team
  • Planned, tracked, and oversaw the release of three large pilots and one project (VisualSearch, Einstein Labs/Outfitter, Einstein Catalog Management, and Einstein SelfService, respectively)
  • Sat on Education Committee, working with various organizations to help underserved communities (Bottom Line, BoSTEM, and Sociedad Latina through UnitedWay), organizing a career panel and two STEM events, working with kids middle-school aged through college-aged

PCH / Media

Assoc. Director of Engineering (May 2017-November 2017)

Engineering Manager (April 2016-May 2017)

Senior Engineer (October 2015-April 2016)

In my position at PCH I led the core engineering team at Liquid PCH / Media, the digital advertising arm of Publishers Clearing House (PCH). I worked to add stability and scalability to existing systems and migrated to new systems (both created in-house and using vendors) where that wasn't possible. I managed a team of seven full-time resources. My small team included dev ops for PCH / Media, Product Engineering (which included Solutions Engineering), and Prototype Engineering (which included data projects).

In my tenior at PCH / Media I accomplished:

  • Responsible for long-term engineering vision across three small teams and short-term execution planning
  • Rebuilt monolithic LAMP architecture into four scalable services (Service Oriented Architecture), the most-used of which sees 6-10M requests daily
  • Oversaw implementation of queuing for all new services to ensure no downtime during database maintenance or external service outages for business-critical services, which uses SQS as the queue backing
  • Updated AWS infrastructure from manually managed resources to auto-scaled resources and completely overhauled existing infrastructure in terms of alerting, scaling, and security
  • Oversaw and helped to implement the complete automation pipeline for builds, tests, and deployments of new core services using Ansible and TeamCity
  • Integrated Akamai CDN and associated automation pipeline
  • Integrated SumoLogic for combined logging, analytics, and alerting
  • Integrated NewRelic for service-based analytics
  • Oversaw testing and development of new video stack for desktop video
  • Investigated and analyzed fraud and malware, working with vendors and developing custom site solutions to combat threats, including tracking malicious advertising back to source.
  • Implemented on-call schedules using OpsGenie after overhauling existing alerts and metrics-gathering
  • Overhauled engineering process for Agile SCRUM, as well as code development process
  • Transitioned all of PCH / Media engineering from SVN to Git
  • Wrote minimum software requirements guide for production software used by all of PCH / Media engineering
  • Wrote software lifecycle guide used by all of PCH / Media engineering and product
  • Implemented career development rubrics for software and dev ops engineers
  • Implemented 360 reviews for the first time at PCH / Media
  • Oversaw implementation of cutting edge technologies such as AWS Lambda, API Gateway, and Kinesis Firehose
  • Implemented SMARTR, quarterly goals for PCH / Media (now being adopted across all of platform team)
  • Worked with PCH engineering to create account and password guidelines
  • Implemented and integrated Tableau server with an Aurora backing for reporting and visualization
  • Started the Boston chapter of PCH Gives Back, an internal charity program that volunteers monthly at different non-profits in Boston


Senior Application Engineer (November 2014-October 2015)

Application Engineer (May 2013-November 2014)

I worked for an innovative, big-data oriented, technology in advertising company called DataXu, located near South Station, Boston, MA. DataXu makes real-time bidding software for online ad-space, amongst other things, and has developed patented technology in this area for internal use as well as for external customers. That previous sentence is often confused for selling or creating ads, but this is not the case, though DataXu now also has an ad server. DataXu uses real-time decisioning to choose what ad-space (in your browser on a given site) on which to bid, which ad for our many customers best fits that space, how much to bid, and then serves that ad if the space is won.

There was a strong focus on the "big-data" stack, and a great mixture of open-source and proprietary technology. My job was a jack-of-all-trades position in an organization called Application Engineering, working with Ruby on Rails, JavaScript, Solr, PostgreSQL and HQL, CentOS, Memcached, Qubole, BASH, and other technologies, and performing day-to-day tasks such as software architecture and development, technical writing, machine and code hardening, leading our Agile development, and technology planning. There were nuances to my role that allowed me to interact with data partners and vendors, external clients, and internally with business development, technical operations, developers, sales operations, and management.

My major projects at DataXu touched most of the business. Some of my larger projects included:
  • Drastic improvements to our custom business monitors.
  • Overhaul, update, and testing of our demo environment, for our sales, training, and product teams, bringing it back into permanent parity with the production system.
  • I created (as an innovation day project) an RFP search engine, which allowed users to upload question/answer sheets for RFPs/RFIs and have them indexed as part of a custom search engine (see the article here).
  • Creation of our Ruby-based API client (the start of an SDK) for our new API, currently only used internally, which has benefited several major customers.
  • I developed a custom, automated pipeline from many sources, including vendors, web data, and internal data, to a big-data analytics and visualization tool, writing the playbook for discovery and configuration of such a product for other customers.

I have also introduced standard development processes and best practices to both my team and other parts of the organization based on our core-engineering groups, including:

  • Engineering best practices for AE (code reviews, branching strategy, style guides, documentation, automation, etc.).
  • Wrote the AE rampup guide and had major contributions to the engineering developers guide.
  • Wrote the SQL style-guide employed by much of the organization.
  • Worked with warehouse to implement query reviews for all queries intended to run against the production clusters.

Most of my work was in Ruby on Rails, but also Python, and BASH, and a little Java.


Chief Technical Architect (March 2012-April 2013)

In March 2012 I began working for a Montreal-based startup called Merchlar, an augmented reality agency in which I was first and foremost responsible for the local and remote systems and network architecture, along with responsibilities including Android development, Python/Django web services, MySQL DB administration, and so on. As of November 2012 my primary task had been to lead the R&D department, which consisted of myself and Dr. Adolfo Rodriguez, in which we implemented image detection and tracking software in C/C++ for mobile devices. This search led to patent-pending technology in the field of real-time image segmentation. Along with Srini (our cloud guy) I helped to set up a prototype cloud environment and map the future backend implementation.

Upon joining Merchlar my first major responsibility was the creation of a maintenable infrastructure for the company, for both development and production. Within my first month I had wiped out the mismatched Windows 2008 dev and Ubuntu prod environment for Debian min for both. I set up all essential services (Git, (S)FTP/SSH, Samba, OpenVPN, Apache, NginX, postfix, Dovecot, Roundcube, etc.), and was responsible for major hardware purchases and server security.

As the database administrator I was responsible for the implementation of all MySQL databases (either through Django models or otherwise), and often provide schema/mappings for any complex implementation. I have administered many MySQL databases for Merchlar and otherwise, and have now had the opportunity to learn about and begin to implement MongoDB.

As the resident Python and Java/Android developer I wrote most of the Django services (routing, models, etc.) and the associated underlying configurations, as well as the Android version of any augmented reality applications.

Otherwise I was working on tasks related to project management, UI/UX development, and technical writing and documentation.


PLM Consultant (January 2011-March 2012)

The first company to make me an offer before graduation from University was a PLM consulting firm called PCO Innovation, which specialized in the implementation of and education regarding PLM solutions. Because of my American citizenship they wanted me to begin immediately, I would shortly find out this was in order to acquire resources for PLM implementations that touched upon sensitive military projects. My specific forte became Enovia V6, but they were pretty loose on the training, so I ended up also learning some Enovia/Catia V5. I was trained formally in Enovia V6 by a specialist from the vendor, and learned a good deal about J2EE at the same time. I was sent on my first "mission" two months after joining (one month before my probation period ended), to fly to California to aid Parker Hannifin's aerospace group in moving all of their divisions to Enovia V6. Needless to say it was demanding, and a great learning experience, and I found out first-hand what it's like to be dropped into a completely different environment alone, required to meet the challenges of an enterprise software implementation. This project, all of three months of work, culminated in a divisional mapping and pages of related documentation. The people I worked with here were, for the most part, highly competent, highly motivated people from engineering backgrounds, and this made it possible for me to learn and educate simultaneously.

A couple of months later I was told that I would be leaving at the end of the week for Sikorsky Global Helicopter in Connecticut. I was tasked with implementation support, once again the only representative of my company, which mostly meant QA and bug reports, system implementation tuning, and sitting next to an administrator guiding them through installs. This particular implementation was severely muddled: many contractors had been in and out, and the group itself would consistently miss deadlines because the vast majority of resources were overutilized, pushed to accomplish more with less. When one entity would finally convince the larger group of the need for resources it was often too little too late to make the necessary progress. Meanwhile I often had little to do, and ended up helping another group of consultants towards the same goals.

I was glad when this contract finished, and had started seriously considering a change. I feared becoming typecast in the role of PLM consultant. For the next few months I wrote documentation, and actually started to itch for some real work, inquiring regularly about upcoming Enovia V6 projects in the works. Finally a contract came in for education, and I was selected to go to Massachusetts and teach a course on Enovia V6 (to employees of the vendor who created the software!). I quickly did the course myself (in a period of four days, as much time as I would have to teach it the next week), and came back up to speed on MQL (as the course focused around it), including TCL scripting. I ended up with a handful of students, all from different backgrounds, some of whom had programmed extensively, some of whom had been charged with writing the associated documentation without ever having touched the subject. For the most part things went well, and I was privileged to be there during their grand opening, enjoying a lavish party one evening after being tricked into letting all the students off early.

When I got back I was tasked with creating a conversion tool for Alstom (in France), working remotely from my office in Montreal. This was made to be extensible, and so I created a simple way of extending the app by making a concrete extension of an abstract class, and then adding the name of the class to a list that would be enumerated as options for conversion.


Linux Systems Administrator (October 2009-December 2010)

For more than a year before graduation I worked part-time as a Linux systems administrator for McGill's Network and Communication Services. The position required taking client needs and translating them into solutions, some already in place, others needing to be set up from the ground up. I was responsible for two powerful Linux clusters, one RHEL and one Debian, and learned a tremendous amount from my boss and mentor Jean Robertson, with whom I continue to share knowledge, and more recently in both directions. While there I learned about shell scripting, system automation (including automated installs), network and server security, and a host of other information gained from hands-on experience.


Student (September 2006-December 2010)

I attended McGill University starting in September 2006, originally entering the BioEngineering major in the Faculty of Engineering. It didn't take long before I decided to move into a more technical field and before the year was through applied to transfer to Computer Engineering. After spending a year in Computer Engineering (and failing the exams for introductory circuits), I applied for a switch to computer science in the Faculty of Science, and luckily, with the help of a very kind dean (who was thoroughly convinced of my motivations after I begged her to admit me) and a professor, the current head of the department (who had suggested I try to make to the switch), I was able to do so. That summer, thanks to that same professor, I ended up doing an internship at CIM (the Center for Intelligent Machines), working on vision for mobile robots, which encouraged my love of lasers.

Previously (1987-2006)

Around the age of 12 I became interested in web-design and learned basic HTML, building my first, terrible looking Geocities and Angelfile sites that year. I began programming at age 13 when my parents put my into a programming camp during the summer to learn C++. It was unfortunately boring, and actually put me off real programming for three years. Instead I turned to Photoshop, HTML, CSS, and when I began learning qbasic to make a simple scroller game, I knew I needed something more powerful. I started taking Java classes with a very, strict, teacher, who required that everything be programmed in Java 1.1, with few-to-no libraries allowed. I ended up making and then remaking a paint applet.

I spent the year after graduation working, first as a line cook full-time, and then, after moving to Boston, I worked as a computer technician for Lesley University. I was entirely comfortable with this, as I had been doing computer maintenance and repair jobs for the last two years already for friends and for profit.


Hit the down button to see a list of my hobbies and interests.



Favorites (in no particular order)

Other hobbies