Plumbee engineering

Building a Bot

| Comments


One problem that I’ve encountered in many of the jobs that I’ve had is that of keeping the builds green. Even intelligent and well-intentioned developers can sometimes drop the ball on this.

London Elm Meetup @ Plumbee Games

| Comments

At Plumbee, we are proud of our strong engineering culture. Although we mostly work with a Java/Actionscript tech stack, we often play with other technologies. It is always interesting to see how problems are solved in different languages, libraries, frameworks and tools.

I recently discovered Elm, the functional programming language created by Evan Czaplicki. It looks like a friendlier version of Haskell and compiles to Javascript. Elm is a language with Functional Reactive Programming baked in. It comes with an architecture to build applications too. Building interactive UIs is therefore very different from the common MVC and Events/Callbacks architecture.

Last week, the first official London Elm meetup was organised at the Plumbee office. Elm is a young language, few companies use it in production and the community of Elm developers is still small. However the RSVP page maxed out only a night after registration opened and sadly there were 70 people on the waiting list who were not able to attend.

Taking advantage of interface segregation

| Comments

What is the Interface Segregation Principle?

The interface segregation principle states that no client should be forced to depend on methods that it does not use.

Following this principle makes you split fat interfaces into specific ones that will only show methods that are required for the clients.

This leads to a decoupled system that is easier to refactor, change and understand.

Using Interface Segregation to add functionality to the UI

When writing a UI many times similar functionality is shown in different views, like playing of an animation, playing a sound or handling a timer.

Usually, UI frameworks have a controller or mediator that handles the logic of the view. So if we don’t take care of this carefully we can end repeating the same logic in different mediators.

In our team we use Robotlegs as MVC framework and we already faced this problem, so lets show you a real example.

Preprocessing Analytics Events

| Comments

At Plumbee we value constant improvement: even if something works, we keep asking how it can be done better. Previously, we discussed how we use Apache Flume NG to read analytics events from SQS, partition them and finally store them in S3. In this blog post we will analyse how we separated the responsibilities and improved our data processing by introducing a preprocessing step.

London Mobile Forum 3.0

| Comments

In February a few Plumbee engineers had the chance to attend the London Mobile Forum organised by Facebook. This conference has been running for three years, and is one of our favourite events in the mobile community.

This year the event took place in the Ace Hotel Shoreditch, in the heart of London’s Silicon Roundabout hub, where many tech companies are placed.

The Mobile London Forum is a one-day event with a morning and afternoon session. In each, five facilitators start with a short presentation on their topic followed by discussions in separate groups, which the attendees are free to join. The facilitators return to stage for a Q&A session in which everyone has the chance to participate.

Analytics Event Collection and Storage with Apache Flume NG

| Comments

At Plumbee we take a data driven approach to analysing our business and hold strongly to the belief that you can never have enough data. As a result a significant proportion of our workforce are dedicated to the analysis of events from sources as diverse as Customer Relationship Management (CRM), advertising, database writes and Remote Procedure Calls (RPCs). On any given day we collect approximately 450 million events adding 166GB of compressed data to our existing warehouse of 87TB, all of which is stored in Amazon’s cloud based storage solution S3 (Simple Storage Service).

In a previous blog post we discussed our approach to logging analytics events represented in JSON into Amazon’s Simple Queue Service (SQS), a highly scalable, reliable and fast cloud based message queue. In this post we cover the consumer side of that story focusing on how we process and store those events in S3 using Apache Flume NG.

Tech Talk Night: Transforming Mobile Push Notifications with Big Data

| Comments

After the recent foray into the exciting worlds of Clojure and Elixir, we’re delighted to announce a second Plumbee Tech Talk Night!

The event will take place at our offices on Tuesday 18 November 2014 from 6:45pm, with the first talk starting at 7pm.

Our speakers on the night will be Pablo Varela (Systems Engineering) and Dennis Waldron (Data Engineering). Dennis and Pablo will explain how we at Plumbee collect and process data at scale (existing warehouse of 87TB with around 450 million events added daily), and how we use this data to send relevant push notifications to our players to keep them engaged. Example notifications include beginnings and ends of weekly challenge features in our games, and promotional gifts targeted at specific audiences.

This will be a technical talk in which we will deep dive into how we use Amazon services such as Elastic Map Reduce (EMR), Data Pipeline, Simple Notification Service (SNS) and Simple Workflow (SWF), among others. You will also have the chance to see the simple but effective internal tools that our Product Managers, CRM and Marketing teams use to target mobile players.

On the night, we will provide pizza and a selection of beers and soft drinks.

This event is open to all. For more information and to secure one of a limited number of places, please visit the event page.

Hope to see you there!

Extreme Startup

| Comments

At Plumbee we still consider ourselves to be a startup. Although we’ve grown rapidly I believe that we’ve managed to maintain a good degree of flexibility, and a high quality of people.

To test our ability to be flexible I decided to run Robert Chatley’s “Extreme Startup” workshop. The workshop requires the participants to respond in realtime to a changing market. Over the course of the workshop each team must get their code up and running and then use it to answer questions being asked by a central server. The central server acts as the marketplace and dictates the pace of the evening (under control of the organiser); firing off questions of increasing complexity and awarding points for correct answers.

The result is that the participants are coding rapidly to keep up with changing requirements. Standing still for too long is not an option, as the selection of questions changes over time and the participants have no control over what questions they will be asked, or when. Responding with the wrong answer, or failing to respond at all both result in points being deducted. At the end of the session, the team with the most points wins. To up the stakes, a bottle of Champagne was offered as a prize for the winning team (although we had beer and pizza freely available throughout the evening as well).

Although it is only a rough analogue of running a real startup, it is a very real test of one’s approach to rapid development. It’s also a lot of frantic fun.

Clojure, Beers and Pizza… and a bit of Elixir

| Comments

Here at Plumbee, we’re big believers in actively exposing ourselves to new ideas, and sharing what we’ve learnt. As engineers, we’re a diverse bunch with many interests, including new (and not-so-new) programming languages and paradigms.

We’re excited to announce that we’ll shortly be hosting two guest talks at our offices in Shoreditch, with a bit of pizza, beer and mingling to follow:

Clojure in Production - Jon Pither

Jon is a prominent member of the London Clojure community, a conference speaker and a battle-hardened Clojurist. He is a co-founder of JUXT, an aptly named Clojure consultancy. In this talk, Jon will consider the advantages of using an immutable functional approach for software development drawing upon lessons learnt on three large Clojure projects (an investment bank, an online newspaper, and a property portal). He’ll use live coding to cover some of the principles, demonstrating how a REPL based environment combined with Clojure’s powerful sequence library makes working with data a pleasant experience. He will also discuss in general working with large Clojure production codebases.

Elixir - An Engineer’s Potion - Chris Molozian

Chris is a Platform Engineer at Orchestrate, and an Elixir enthusiast. In this bonus ‘lightning talk’, Chris will give an overview of Elixir, a functional, concurrent language built on the Erlang Virtual Machine (BEAM).

Both are ‘taster’ talks and do not require significant previous exposure to either language.

The event will take place on Wednesday, 10 September 2014 at 7pm.

We have reserved a small number of places for external visitors. If you’d like to attend, just drop us an email at clojurebeerzandpizza at plumbee dot com, and let us know what led you to Plumbee.

Large-scale, fine-grained push notifications with Amazon Web Services

| Comments

How to efficiently send large numbers of push notifications – and have your players thank you for it!

One of the most popular parts of our Mirrorball Slots free-to-play mobile game is Challenges. During a Challenge, players can collect Symbols during non-winning spins, and the more Symbols a player collects, the more Mirrorballs she can earn. After the Challenge ends, the player can redeem her Mirrorballs for credits for a limited time.

After we added Challenges to our mobile app, our players asked us to remind them to come back to play, so they wouldn’t miss out on the chance to earn more credits. To do this, we needed to introduce mobile push notifications to the app. However, we felt that app developers often make the mistake of sending too many push notifications. We wanted to ensure that we had a lot of control over what we were sending, to ensure that the notifications were appreciated by our players and not just considered spam.

The push notifications had to be fine-grained so that we could target the right players with the right message at the right time. We also wanted to make it easy for our teams to target push notifications based on any information available in our analytics systems. In addition to this, the system had to scale linearly to support millions of players and messages.

In this blog post we will describe our solution for these requirements, which combines Amazon Simple Workflow, Amazon Simple Notification Service, and Amazon Redshift to send push notifications to millions of players divided into hundreds of arbitrarily-defined segments.