Blog

  • Workshop - Ruby Performance Test

    Sep 14, 2016 - Alex Malkov

    The goal of this workshop is to highlight how you can archive better performance of your Ruby applications. We can choose different ways of writing code, but which one works faster? I did some benchmarks the other day, so just want to share results with you. Don’t create unnecessary objects, use merge! require 'benchmark' def merge!(array) array.inject({}) { |h, e| h.merge!(e => e) } end def merge(array) array.inject({}) { |h, e| h.merge(e => e) }...
    read more...
  • Workshop - Redux, Redux, Redux

    Aug 9, 2016 - Victor Vila

    And here we go with another Reevoo Workshop. This time the topic is Redux: what it is, how it works and how we want to use it. The recording failed by the end, but you won’t miss anything important. It would be awesome if this talk helps anyone to understand Redux a bit better.
    read more...
  • Workshop - First contact with ES6 and React

    Jul 28, 2016 - Victor Vila

    At Reevoo we like sharing knowledge, that’s why we decided to start a series of weekly workshops. Depending on the week we will be playing with new tools, looking at how a framework works or studying how to architect a project. As a workshop is a session that doesn’t make sense to keep repeating, we thought that would be nice to record them and share what we are doing with the world. Without further ado,...
    read more...
  • React Europe 2016 - A reevoolver in Paris

    Jul 1, 2016 - Victor Vila

    Almost a month ago, I attended the ReactEurope 2016 conference in Paris. It was my first time on an event of this kind, and I was very surprised by the vibe and energy of all the attendants and speakers. Some of the them were authors of libraries that we use at Reevoo or people who I follow on Twitter. It was interesting seeing the RealWorld™ people instead of their digital versions for a change. The...
    read more...
  • Protractor or Intern ?

    Jun 8, 2016 - Alexandru Anca

    We’ve been looking into different ways of doing integration tests. This post outlines how we found using Protractor and Intern. Current Implementation Currently the application is tested using the Ruby-based Capybara framework but we found that using this combination to test a single page application is very flaky. Typically, out of 3 CI runs only 1 is successful, the rest is the result of flakiness. Another downside of this is that you need to install...
    read more...
  • From Node module to CLI

    Apr 12, 2016 - Victor Vila

    Today I have a quick tip. Did you ever found an awesome Node module that you want or need to use from the command line but the author forgot (or didn’t have time) to create a CLI interface? That’s not a problem if you use commander. After you install commander with npm install commander, you just need to create a script like this: // my-awesome-script.js var program = require('commander'); // This is the commander module...
    read more...
  • Web Components for widget creators

    Nov 6, 2015 - Victor Vila

    Web Components seem to be ‘The Next Big Thing’™ for the web. They try to solve an old problem with a new approach: having reusable components on the web. There are lots of articles explaining what they are and how they work, but this is not the goal of this post. Explaining the problem When you are building a full site or web application you have a huge advantage: you control everything. That means you...
    read more...
  • Upgrading Node.js

    Oct 29, 2015 - Victor Vila

    Upgrading to Node.js 4 Nowadays there are lots of projects using tools like npm, grunt, gulp, webpack, jspm, karma, mocha, jasmine… All of these tools run by using Node.js (Node). At the beginning of September, Node was upgraded to version 4 from version 0.12, including tons of useful features and fixing a big community fracture. A short Node history lesson. You might be asking now where are versions 1, 2 and 3. Node has a...
    read more...
  • EuRuKo 2015 Impressions

    Oct 19, 2015 - David Sevcik

    Flying back from rainy Salzburg I’ve decided to spend some time to summarize my impressions from from the recently finished EuRuKo conference. I was nicely surprised by the wide range of topics from the ruby internals to physics and art. From a technical point of view the most interesting talks for me were from the two main people behind Ruby: Yukihiro “Matz” Matsumoto and Koichi Sasada. Matz spoke about the new concurrency model in Ruby...
    read more...
  • How we chose React

    Sep 22, 2015 - Richard Batty

    How we chose React In a recent project to build a comments widget, we decided to experiment with different approaches and frameworks. This post explains what we did and how we ended up choosing React. What we didn’t want Angular We knew we didn’t like Angular from previous experience. Firstly, it took ages to learn - there are lots of unnecessarily confusing parts like the differences between service, factory, and provider or what @, &,...
    read more...
  • Being Lonely (Reprise)

    Jul 17, 2015 - Jonny Arnold

    Last month I wrote an article explaining how you can isolate your JavaScript. In this article I want to explain why you should ignore that article completely and how we used ES6 modules to provide the isolation we needed. What I Said Before Was Wrong In the last article I spent a lot of time showing how to isolate your JavaScript from a client site using a single global variable and some well-prepared external libraries....
    read more...
  • Being Lonely - Isolating Widgets on Client Sites

    Jun 15, 2015 - Jonny Arnold

    At Reevoo we’ve been working on a few exciting things that we’ll hopefully get to show you very soon. What we can tell you now is that the things we’ve been building (let’s call them widgets for now) will live on our clients’ websites, not ours. This comes with one big challenge: how can we deliver an awesome widget without destroying the client’s website? This article outlines the experiences we’ve had building such an awesome...
    read more...
  • Reevoo's 20% time experiment

    Jun 9, 2015 - Richard Batty

    We’ve found that we keep neglecting projects that have high payoff, but aren’t urgent. You know the kinds of things - contributing to open source, building tools for internal use, improving our skills. At companies like 3M, Atlassian, and formerly at Google people have used 15% or 20% time to start projects that have turned into valuable business opportunities such as Post-it notes. So we decided to try it. Jonny came up with a manifesto:...
    read more...
  • Your Code as a Crime Scene

    May 21, 2015

    I first heard of Adam Tornhill when I attended his talk at QCon London 2015. His talk, titled [Your Code as a Crime Scene][crime-scene-talk], was a well-delivered presentation highlighting the untapped potential of version control systems (VCS). In what I felt was the best talk of the day, Tornhill showed the wealth of information we provide to our VCS as well as some simple techniques to extract and use it. The promise of the talk...
    read more...
  • Enjoying JavaScript

    Mar 17, 2015

    At Reevoo we have started working on some large applications based on AngularJS. Over the last few weeks we have had a raising tension with JavaScript as we try to come to terms with its unusual quirks. JavaScript has some big quirks, but underneath its imperfections is a useful programming language. Its prevalence means it won’t be going away for a while, so you might as well learn how to use it well. In this...
    read more...
  • Monday Musings

    Dec 1, 2014

    Every week the team here at Reevoo Engineering share the best the Internet has to offer. Today, for the first time, we bring these tidbits to you. Blogposts Short Lived Branches What would happen if your branch only lasted a day? FP vs OO Is Functional Programming and Object Orientation mutually exclusive? Flaky crusts: Good for pies; bad for test suites A nice overview of the root causes of flaky tests. Eradicating Non-Determinism in Tests...
    read more...
  • How Helpful Are Reviews?

    Oct 31, 2014

    On every review we give users the opportunity to say whether the review was helpful to them or not - a value that I have unimaginatively coined as Helpfulness. An upvote/downvote system is used for this, and users can sort their reviews from most to least helpful in the hope of bringing quality reviews first. Whilst researching around Helpfulness for another article I started crunching some numbers to answer a question: is there a correlation...
    read more...
  • Putting Quality Reviews First

    Oct 27, 2014

    At Reevoo we get thousands of reviews a day for many different products. Some reviews are better than others, in terms of quality rather than score. How can we make sure that our users see reviews that will help them make the right decision? Can we create an algorithm that sorts our reviews in such a way that high quality reviews are shown first? This article hopes to identify what needs to go into this...
    read more...
  • HTTP Shooting Party

    Sep 12, 2014

    Here at reevoo we have been busy building an API for our data, part of this process involved a large refactoring of our core front end app reevoomark to use the new API. Recently I have been looking for simple ways to improve the performance of this application and a quick look at new relic confirmed that we were spending a large proportion of our wallclock time connecting to our API over HTTP. Looking at...
    read more...
  • Shadow Stress Test

    Aug 19, 2014

    In my previous blog post “Refactoring without good test coverage” I mentioned using Shadow Stress Test at Reevoo - real time stress testing under live mirrored traffic. Therefore we are able to test new code with real clients traffic without affecting clients. Our production servers hosted at Amazon EC2 allow us to create a snapshot of server instance. One of our live instances configured to send a copy of live traffic into copied (shadow) instance....
    read more...
  • The quest for our best personal match!

    Aug 8, 2014 - Diana Bicazan

    I am Diana, a recent graduate in Computer Science, and I was lucky to join a very enthusiastic tech start-up company called Reevoo. In this post I want to describe what I think Reevoo is all about. First think for a bit about the amount of products and services that are around you and about the time you spend buying the goods you desire/afford. Now, have you heard about Barry Schwartz? He is one of...
    read more...
  • Stress driven development

    Aug 4, 2014 - Philip Stevens

    Grady Booch wrote about this a long time ago. It was written as a response to Test Driven Development (TDD). He spoke about architecture decisions, language choices, and library choices. He talked of the importance of prototyping your system, stress testing alpha builds, and making decisions on scale vs power early on and throughout the lifecycle. If you are moving to Service Orientated Architecture and Micro Architecture you need to have your infrastructure at the...
    read more...
  • Rollback Party!

    Jul 30, 2014 - Ed Robinson


    read more...
  • Git Bisect For Great Good

    Jul 30, 2014 - Ed Robinson

    Git bisect is an awesome way to quickly find a regression that might have found its way into your code. While benchmarking ruby HTTP libraries I found that at some point a performance regression had been introduced into excon. That bugged me and I wanted to find out what had caused the issue. Luckily the authors of excon had included a benchmarking suite to test the performance of the library. With a bit of fiddling...
    read more...
  • Domain-driven design on Rails - Part 1

    Jul 28, 2014 - David Sevcik

    Welcome to the first part from the series of articles about practical use of Domain-driven in Ruby on Rails applications. I would like to tackle the challenges that we experience in Reevoo with design and development of software solving complex business requirements. I believe that combination of tools like Domain-driven design and Ruby on Rails can give you both a robust architecture built on domain knowledge and a flexibility supporting further changes of business rules...
    read more...
  • Who does the Testing?

    Jul 28, 2014 - Cian Leahy

    One of the provocative arguments regularly undertaken when staffing R&D teams is the dreaded Development to QA ratio. It’s always entertaining to hear project management entrenching themselves with a pre-ordained view that it should be 3:1 or 5:1 or 1:1 or 1:2 or whatever! It’s a balance that’s difficult to get right and carving off designated roles inevitably creates a bottleneck of some sort. You either can’t get the software out because there aren’t enough...
    read more...
  • Easier Reevoo Assets Integration

    Jul 28, 2014 - Jesus Lara

    Adding Reevoo content into customer sites (badges, embedded reviews and purchase tracking), can sometimes become challenging for the less technical customers, which can result in delay of integration and increased support time devoted by the development team to help troubleshoot this integration. As an example, looking at the current technical documentation being handed to customers, they could end up in situations like the one described in the following steps: They decide they want to add...
    read more...
  • Refactoring without good test coverage

    Jul 28, 2014 - Alex Malkov

    Any system will degrade eventually - new practices, software updates, new requirements, number of implemented features, number of people working on the application etc. In fact, with every single line of the code you make your system more complex and therefore the system ultimately degrades. Not optimistic, right? Also, as time passes by you lose knowledge about some features and edge cases in the system. People moving in and out of the company, working on...
    read more...

subscribe via RSS