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.
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?
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.
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…
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
The keyboard navigation order (commonly called the “tab order”) is important for users who can’t necessarily use a mouse or control a pointer to navigate a website. However, the tab order is traditionally defined by the order in which elements appear in the HTML document, which can become quite different to the order in which the elements visually appear when a site is built using Responsive Web Design principles.
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.
Redbubble recently hosted an event called “How do you manage products?” in conjunction with Product Anonymous (a Melbourne based product group), with a focus on the art of product management, both from a digital and physical perspective. Redbubble welcomed speakers from Redbubble, Envato & Zendesk and played to a packed house of over 70 people. Redbubble is a two-sided marketplace with over 350,000 Artists, 13 Million designs, delivering to over 236 countries. This involves physical product development and digital product development, building a world-class digital user experience.
Every day hundreds of thousands of users come to Redbubble searching for art works. Given the large number of works on Redbubble – we host millions of works for our ever-growing community of artists – it’s important that our search engine return good results, because our users sure ain’t going to paginate through millions of works! Standing between us and our quest to produce relevant search results was our 3-year old Solr 3.6. It’s not so much the age that was bothering us, but rather its lack of boolean and relevance functions. Add in the fact that Solr 3.6’s higher memory demand was causing occasional performance problems, we had a solid case to say goodbye to this fella. So we