It started with some dates. An important aspect of the online shopping experience is that you cannot immediately receive your purchase. In Redbubble’s case it has to be both manufactured and shipped before reaching the buyer. Our customer service department frequently handles requests regarding arrival dates and possible late items. As such, we felt we could give customers a clearer understanding of the delivery time frame by providing this information (previously only on the shipping & delivery page) in more places. We decided we would build a new application that would take an item, shipping time and delivery location and return an estimated delivery date based on that data. Why build a new application? As part of the work page (where
Tag Archives: code

Reducing code drudgery with generators
There are some tasks in a programmer’s life that come up again and again. Creating classes in an often-repeated pattern. Adding entries to some boring but important list defined in code. Those tasks that make you think “This is so tedious! I do this over and over! There has to be a better way!” Fortunately, there is.

Replacing Cucumber with RSpec + Page Object
I have a love and hate relationship with Cucumber. I’m not talking about cucumbers we see on a dining table, but the one that we see when we’re talking about software testing! I’ve worked with Cucumber on a number of projects since I started working as a full-time Ruby developer back in 2009. It could be a very useful tool when we needed a tool to aid us in keeping our written requirements (that are also executable) to make sure the software behaves the way business intended. This kind of testing is often called User Acceptance Testing. We asked ourselves, is this the best approach?

Applying a mask to an image with transparencies in RMagick
Every programmer knows that when you meet a problem that you don’t know how to solve, you just search for the answer online. And this works 99% of the time. But occasionally you don’t find a solution, and you have to figure it out yourself. Hopefully this blog post means some other programmer doesn’t have to do the hard yards we have done. Our problem was simple. We wanted to show artwork on a hoodie where the drawstrings hang over the artwork.

Keeping better secrets with Amazon’s KMS
It is well-known that it’s a poor idea to store your application secrets in plaintext files, especially if they get committed to version control. So what should you do instead? Previously, we have attempted to solve this problem by having a file that only exists on the live environments, but that is tricky to support. In this post, we describe how we use Amazon’s Key Management Service to safely encrypt our precious secrets…

Sticker Effect on Transparent PNGs with HTML5 Canvas
Previously, when artists uploaded an artwork to Redbubble, we used the same image for all of the clothing styles and the sticker style. Both worked best with a PNG with transparency, and stickers don’t offer any options for editing, so it seemed an obvious choice. But artists have long been asking for these to be split out. And we’ve focused on adding more clothing styles lately, so we decided now was a good time to separate the sticker upload. The problem was that in the uploader we wanted to show the artist a preview of what the sticker would look like after we add the white border to it, and we wanted to do this in the browser in HTML5
Video: Functional Programming – Experiences in the Real World
Many of us have heard of Functional Programming, and all the benefits it brings to our code. But how can it be applied to real-world, running, production software?

Docker DNS & Service Discovery with Consul and Registrator
Consul is awesome, and super powerful, but takes a bit of understanding and setting up. We are looking at it now, because it could let us keep the same mechanism in place in development as we might use in production.

Automated infrastructure testing with ServerSpec
By using automated rspec testing of our real infrastructure systems, Redbubble has reduced the uncertainty around its operating environments, and decreased the amount of manual correctness checking that engineers have to do when provisioning new systems.

Generating font icon files from the command line
Here at Redbubble, all of our icons are fonts. The vector goodness give us lovely sharp images on even the highest resolution displays. Up until now, we’ve used the excellent fontello.com to generate our font files from a number of icon sets, but our growing team has made managing our configuration file difficult. I’m a big fan of using robots for repetitive tasks, so I threw together a rake task that automates the process! This task allows us to drop individual SVG files into a folder, and automagically generates all of our font files in TTF, WOFF and EOT formats. It is even smart enough to generate a SCSS file with all of the mappings. Robots!