Step-by-step Core Data Migration

November 30, 2017

This post is now out-of-date, please instead see: "Progressive Core Data Migration". People really care about their possessions. Nowhere do you see this more than on public transport. It's not unusual to see bags occupying seats while people stand. As a Brit, we have developed a powerful non-verbal based form of communication to indicate that you want someone to move their bag - maybe a slight shuffle, eye contact with other standing commuters and tutting. Even with these clear signs some people…

Roadblocks when repaying tech debt

August 30, 2017

I've found that talking about tech debt is a favourite subject among developers (especially if the developer responsible for introducing that tech debt is no longer on the project 😉). However, often talk is all that happens. As with any potentially ambiguous and daunting task it is easier to talk about it than to actually do it. In this post I want to explore some of the roadblocks that can come up during these tech debt discussions, what the motivations for those roadblocks could be and how we can overco…

Casting my vote in the great CI election

July 09, 2017

Last year we started using Swift for any new features that we were developing at Memrise. Swift has a lot of great language features however the tooling support still leaves a lot to be desired and by introducing Swift into our existing Objective-C project we seen a significant increase in our build times. A quick search on Google brought up a lot of articles and talks about workarounds to try and reduce compilation time (an especially good talk is by Uber). We implemented a lot of the recommendations and d…

SwiftLint easing conflict

April 30, 2017

Anyone who has ever worked in a team knows only too well that there is no such thing as one true way of formatting code. Everyone has their own way of formatting and provided it compiles, all of those formatting choices are valid. So when it comes to formatting, it really is a personal choice based on some aesthetic. Often one of the first questions I ask when joining a new team is: "Can I see the coding style guide?" However, even when there is a style guide and I've read and followed it, I wi…

Coincidental duplication costs really add up

April 26, 2017

No matter what route you have taken to becoming a developer you will have spent a considerable period of time on that route improving your ability to think abstractly - to see how a set of real world requirements can be transformed into a working model that you can build a system around. Two key components in our abstraction thought training involve: Looking for common functionality Joining the dots between processes/functionality By no means is the above a complete list of the competences of abstract thin…

Firefighting developers

April 21, 2017

Firefighters are portrayed, quite rightly, in our society as heroes. They courageous run into dangerous situations and save people. However, let's think about why we need firefighters. We need firefighters because our man-made environment has been built up over hundreds (or even thousands) of years, by many different hands with differing ideas on what's important. This legacy of inconsistent design, coupled with our differing attitudes to fire safety has meant that we need a professional fire service in co…