Welcome

December 2nd, 2016

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


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.

FAQ

October 6th, 2016

  • What's your favorite language?
    • The language in which I most enjoy programming has become Ruby (given the Rails framework) over the past few years. In my current role we have chosen to use Python / Django for all of engineering, but in my person projects I continue to develop using Rails. I was formally trained in Java during high school, university, and beyond, for a total of programming in Java for around 11 years. If I'm going for speed I will still try to get as much done in C as possible, and then C++, but my skills here are need-to-know only (and fading fast). When doing front-end work I like working with Javascript (given the jQuery framework), and have used it for multiple browser extensions using the Crossrider framework, which is now unfortunately deprecated (we had a good run!).
  • What's your flavor of Linux?
    • 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. At work we use Amazon Linux, 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. Do not call me unless you are on fire and I am the only person who can put you out.
  • Why this site?
    • The original idea of this site was to create a simple CMS and blog front-end, partially as an exercise 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), go to the hobbies section, or check out my curated view of the internet. I've since moved on to Ruby on Rails, and will not further develop this in terms of features, having finished the functional aspects of the blog system/CMS.

Experience

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

PCH / Media

Assoc. Director of Engineering

May 2017-Present

Engineering Manager

April 2016-May 2017

Senior Engineer

October 2015-April 2016

I'm now leading the core engineering team at Liquid PCH / Media, the digital advertising arm of Publishers Clearing House (PCH). I'm working to add stability and scalability to existing systems and migrate to new systems (both created in-house and using vendors) where that isn't possible. I manage a team of seven full-time resources. My small team includes dev ops for PCH / Media, Product Engineering (which includes Solutions Engineering), and Prototype Engineering (which includes data projects).

In my tenior at PCH / Media to date I have 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

DataXu

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.

Merchlar

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.

PCO

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.

NCS

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.

McGill

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.

Hobbies

Hit the down button to see a list of my hobbies and interests, or hit the right arrow to move on to the blog section.

Programming

Reading


Favorites (in no particular order)

Other hobbies

Blog

Hit the down entry to see what I've been doing lately. Warning, this may be out of date.