Moving to a Startup: The Changing Role of Dev Manager

Moving from the corporate world to a startup can be an exciting and rewarding experience. As a technical leader, there is a lot to adjust to in terms of what the new environment demands from the role. That said, there are a number of valuable lessons that can be applied from the corporate world. Having made the move recently myself, I was invited to discuss this on the latest episode of the Venturi’s Voice podcast. Recorded in November 2017. Thanks to Andy Davis and the team for having me on the show.

Functional Design Patterns in Scala: Monads

Learning (and subsequently trying to explain) monads has become something of a rite of passage in functional programming. Like many developers, I struggled initially to understand precisely what type of thing monads are, despite using them on an almost daily basis. The most helpful description I have come across is given by Noel Welsh and Dave Gurnell in Scala with Cats:

“A monad is a mechanism for sequencing computations.”

Functional Design Patterns in Scala: Monoids

Monoids are used to describe an aggregation pattern: whenever we need to combine values of a particular type, a monoid instance helps abstract the mechanics of the aggregation from the program’s business logic. In this post, we will use the LCD Digits kata that we tackled previously as a motivating example for applying this pattern. The goal here is to transform a sequence of input digits into a string resembling their representation on an LCD display.

Scrap the Boilerplate in Scala with Lenses

Case classes provide a convenient way of working with immutable objects in scala. Manipulating fields within them can be tedious, however. In this post, we will look at how lenses can be used to abstract over this complexity while preserving the benefits of immutability.

Agile Estimation For Distributed Teams

The scrum teams I currently work with use Planning Poker to estimate the size of user stories. This has proved to be an extremely useful technique, and we rely on it to plan work for upcoming sprints. In the past, we used special card decks for these games, which worked well when everyone was based in the same room. However, with team members now distributed across two continents, this quickly became less effective.

Steve Reich’s Clapping Music with Scala and Akka

Using functions to express musical ideas is nothing new: Harmony, time signatures, the relations between notes in a scale and musical form all have their roots in mathematics, and composers have used mathematical abstractions for millennia (see Pythagorean Tuning for a 2500-year-old example). These abstractions, however, are not always obvious from they way that music is written down, leading to a potential disconnect between composer and performer. In this post, we will use Steve Reich’s 1972 Clapping Music to show how functional programming can be used to capture an underlying musical idea.