• Production Engineering at OVO

    It’s been 8 months since our Tech Director, Ed Conolly, wrote a blog post about our technology culture at OVO, describing the way we enable both product and technical autonomy through our take on a host of Agile and Lean patterns. This month I open recruitment for a new team and function at OVO: Production Engineering, and I wanted to share how this intends to support the continued success of that culture.

  • SRECon17

    A couple of weeks ago I went to SRECon17 in Dublin to learn some more about what it is, why companies do it, and to talk to some of the people who have been involved in leading the SRE charge over the last couple of years.

  • Interactive testing with Wallaby.js

    Here at OVO Energy, we like to keep our test coverage as high as we feasibly can. This obviously involves writing a lot of tests, which can sometimes become difficult and lead to some pain points that I’m sure you’ve felt before:

  • OVO Hosts Bristol Girl Geek Dinner

    Last month we saw our Tech team play host to the June Girl Geek Dinner in our new Temple Back office.

  • Validated Configurations with Ciris

    The need for configuration arises in almost every application, as we want to be able to run in different environments – for example, local, testing, and production environments. Configurations are also used as a way to keep secrets, like passwords and keys, out of source code and version control. By having configurations as untyped structured data in files, we can change and override settings without having to recompile our software.

  • Free vs tagless final with Chris Birchall

    Just a few days ago our very own Chris Birchall gave a talk at CodeNode regarding tagless final and how that compares to Free Monads.

  • On Refactoring. Part 1: Data sources

    OVO’s iOS mobile application is - on the surface - very straight forward: a user can log in, submit a meter reading, download their statements and compare their energy usages with national averages. However, the app was built in such a way that we found ourselves with difficulty adding new features, and difficulty debugging customer issues. We’ll see how we managed to create a separation between UI and Data…

  • Technology Culture at OVO

    Attempting to define a culture in words is challenging, often when we discuss tech culture we’re really talking about a set of behaviours that we ask ourselves and our teams to exhibit. Creating the right environment to work in is arguably the most important thing any technology company can do. We take it really quite seriously here, and truly believe that creating a forward thinking, leading technology culture enables us to perform at our best and attract, develop and retain top talent. This translates to a faster, more agile organisation that consistently delivers products and experiences that customers value, ultimately enabling us to build a successful business.

  • Hackathon 3.0

    Hackathons are a great opportunity to innovate and produce crazy yet exciting products. A group of people from different technical backgrounds and domains come together and apply their skills to create an MVP for a real-life problem.

    The theme for our 3rd Hackathon at OVO Energy was ‘From Insight to Innovation’ - create something both innovative and useful to help our customers in just 24 hours.

  • Working with Shapeless

    If you are Scala, Java, C# or similar strongly typed language user, there is a high chance that you like types. You like the assurance that the stuff that you pass around meets the contract. If different types hold common traits then you would probably create a common subclass.

    But what happens when those constraints become an overhead?

  • Introducing blue-green deployment for Hippo CMS

    As a growing company, we have decided to switch from externally managed CMS solution towards our own internally managed one. In this article, we will take you through our short journey of providing zero-downtime releases for our CMS in the world, where maintenance windows are they default options.

  • Deploying AWS Elastic Beanstalk applications with Terraform

    To facilitate our migration from EC2/Chef environments to Docker/ElasticBeanstalk, we wanted to automate provisioning of an AWS Elastic Beanstalk (EB) environment and reuse it to build other environments. This article discussed how we achieved this infrastructure-as-code approach using HashiCorp Terraform with the following topics covered:

  • Migrating to TypeScript with Angular 1.x

    This is a post for you who have built your fair share of Angular 1 projects and noticed that when it gets big it gets harder and harder to keep track of.

  • Why you should switch to Aurelia

    This article assumes you have been working with Angular 1, and especially es5, for a while and felt the pain points. The idea is to first describe the problems surrounding Angular 1 one which ultimately led to the creation of Aurelia. Lastly I will try to highlight Aurelias approach to solving these problems, and hopefully convince you that Aurelia is elegant and worth trying out.

  • Effective Tests for Spark Streaming

    At OVO we are heavily relying on Spark in both it’s batch and stream processing capability to successfully master the challenge of smart meter and real time energy usage data and provide increasing insights for our customers and business.

    Streaming solutions come with their own challenges, the biggest of them being able to continuously operate them 24/7 and still maintaining the ability continuously update them. While we can (and will) reason about message delivery patterns, failure handling, state recovery and more sophisticated aspects of building a resilient stream based solution, let’s start with the most important one: How can we structure our Spark application in a way, so it’s easily testable?

  • 10 things you should know about Scala.js

    It has been a few years since Scala started its rapid expansion as a mainstream programming language for server-side application development.

    In early 2016, Scala.js, a transpiler that translates your Scala code into (as claimed) highly performant and optimised JavaScript, has been announced to be no longer in experimental.

    Therefore in this blog I will briefly introduce a few reasons why you should consider using Scala.js for your next project and will present some potential concerns you should keep in mind.

  • Augmenting reality with CoderDojo Ninjas

    Last year we partnered with CoderDojo (a global network that organises free, volunteer-led, coding clubs for children aged 7 and 17) and started to run regular coding sessions for young people from the local community.

    After the success of the last CoderDojo sessions in London in Bristol, we ran another simultaneous session last weekend, centered around augmented reality.

    In about 2 hours over 46 kids and a bunch of us adults graduated our dojo session after creating and playing augmented reality games!

  • A Brief Tour of Haskell for Scala Programmers

    Haskell is a purely functional programming language, it’s interesting to draw a comparison between Scala and Haskell to see how Scala’s hybrid functional / OO approach alters the way it expresses problems. Here’s a (very) brief overview of the language and how it compares against Scala.

  • Migrating to Elastic Beanstalk and Docker

    Some time ago we migrated all our services to AWS. This had many benefits, but we were still using the same deployment processes as before. As the number of services grew and our deployment process became more expensive, we decided to explore other options provided by AWS and try out Elastic Beanstalk.

  • Robot-taming, website-wrangling CoderDojo Ninjas

    Last year we partnered with CoderDojo (a global network that organises free, volunteer-led, coding clubs for children aged 7 and 17) and started to run regular coding sessions for young people from the local community.

    After the success of the first Bristol CoderDojo last year, we hosted our second (and third!) CoderDojo in both the London and Bristol office on Saturday 30 January.

    In under 2 hours over 47 kids graduated our dojo session after battling with a wide range activities including vintage game development, Star Wars, Minecraft and Frozen puzzles, OhBot robotic human head, OzoBot miniature cars and more!

  • Testing the UI as a service

    I’m going to touch on a few things we are doing around the UI testing of our websites, tracking features, perceptual difference testing, continuous delivery…. brace yourselves.

  • iOS UI Automation - A Christmas Tale

    T’was the night before Christmas, when all through the office, not a dev was stirring, not even through our VPN service. The UI tests were set up on our CI server with care, In hopes that a release would soon be there.

  • The Flux pattern, with Angular 2 and Observables

    I’m going to run through how to implement the flux pattern in Angular 2 using observables.

    In particular I hope the post conveys the following key concepts:

    • Views only generate actions, and are not two way data bound to data models.
    • Actions use a dispatcher to centralise the distribution of events.
    • Data stores subscribe to the dispatcher and update themselves when relevant events are raised.
    • Views subscribe to changes in the data store and update when the stores update.
    • The pub / sub model for the dispatcher and data stores are implemented using RxJS observables.

    Update: This was built with an alpha version of Angular 2, and some of the angular semantics have changed since the beta release. However the key principles still hold.

  • Field trip to AngularConnect

    A couple of weeks ago the team and I made the trip to the other side of London to attend AngularConnect, the largest Angular conference in the world to date. I’m slightly biased about the event as I’m one of the organisers but the vibe was great and the speakers all did an amazing job getting everybody excited about Angular 2. I strongly recommend you check out some of the videos from the conference, the highlights for me were the keynote and talks about observables (Jeff Cross and Ben Lesh both gave talks about them).

subscribe via RSS