Harry's Engineering



An on-demand high-powered Jupyter notebook server

By: Andrea Heyman

Introduction Here on the Analytics team at Harry’s, we frequently found ourselves training machine learning models on data coming from the entirety of Harry’s existence (4+ years and counting!) in...
Read On >>


Atomic Increment/Decrement operations in SQL and fun with locks

By: Pierre Jambet

Intro We recently rewrote our inventory management system and managed to improve the performance while reducing the operational complexity by taking advantage of native SQL increment & decrement operations. In...
Read On >>


Matching Cities for Small Sample Experiments

By: Michael Kaminsky

Our marketing team wanted to run an experiment on the impact of a certain type of advertising. Because of the difficulties in cross-device attribution, we decided to isolate the test...
Read On >>


Democratizing Kaplan-Meier

By: Michael Kaminsky

At Harry’s, we strive to have a robust understanding of our customers, and we’re particularly interested in identifying features of customers and their behavior that increase retention and reduce churn....
Read On >>


Kontrast: Fast automated visual QA for your website

By: Ilya Rubnich

Here at Harry’s we’re crazy about testing. We write unit tests, feature tests, integration tests, model tests, controller tests, JavaScript tests, oh my. We even wrote a Jasmine helper that...
Read On >>


Hacking your Bundler groups for fun and profit

By: Daniel Schwartz

By default, Bundler groups in Rails are set up by environment. While this might not be a problem for single server applications, it starts to become a problem for multi-server...
Read On >>


Don't Launch to Crickets

By: Daniel Schwartz

Right before launching at Harry’s, we created buzz around our brand with a prelaunch campaign that, to put it lightly, was pretty successful. In just under seven days, the campaign...
Read On >>


Cronut - Sweeten up your day

By: Sunny Ng

Like it or not, we always end up having to schedule tasks that mysteriously run throughout the day. Whether they’re clean-up jobs that run every hour or heavy-duty critical jobs...
Read On >>


SeedMigrations. Like schema migrations, but for your data

By: Pierre Jambet

The problem Many projects rely on some kind of initial data, a list of products for an e-commerce shop, a list of post categories in a blog, or a set...
Read On >>


Mock Authorize.net CIM Gateway for ActiveMerchant

By: Andy O'Neill

Harry’s is currently using the venerable Authorize.net as our payment gateway for ecommerce. We don’t want to host our own credit card data, so we are using the Authorize.net “Customer...
Read On >>