MaterialApp using initialRoute and onGenerateRoute

What you might not notice (or you may have done and been really frustrated by it like me!), particularly if you have performant or lightweight pages, is that what happens in this situation is that the first route pushed is ‘/’, then another route is…


Getting up and running with Firebase Analytics for Flutter is pretty simple and is well described in the documentation, so I won’t repeat it all here. Once your project is setup the code to track page views is as simple as:


Simple right, so what’s the problem? Well, the problem is if you navigate using anything like these approaches, then you won’t actually see any `screen_view` events in your dashboard:

So why is that? What’s the problem? In short, the problem is that these are not named routes. …

Yesterday at Flutter Live, Google announced the 1.0 release of Flutter. On top of all the great pre-release work this brings: pixel-perfect iOS support, the ability to add Flutter into existing apps, browser view, Google Maps and UI localisation into 50 languages.


In addition to having ported the Google Ads mobile apps for iOS and Android entirely to Flutter, Google talked about other apps that are written in Flutter including: Abbey Road Studios, Alibaba, Capital One, Groupon, Hamilton,, Philips Hue, Reflectly, and Tencent.

We were treated to a live coding demo of a photo capture clock app and…

Caveat: I’d still consider myself to be pretty new to Flutter, so apologies if I’m saying something that everyone else considers to be common knowledge :)

I’ve just finished debugging an issue in my app and thought I’d share what I found. The app has a home screen with a TabBarView on it. One tab is a Timeline widget (which is just a custom Stepper) containing a number of items and the other tab is essentially a ListView. …

About 6 or 7 years ago I made the move from a series of small companies to Skype in Stockholm. I joined as a Senior Software Engineer but quickly moved into a Dev Lead role leading half of the team (about 5 people). I was still hands-on coding for the majority of my time but spreading my wings as a line manager. This post isn’t about the transition from being an individual contributor (IC) to line manager, it’s about the next step after that: managing managers.

I was Dev Lead on Skype for Windows Phone, Skype for Xbox One and…

London, Thames sunrise by Mike Rolls

One of the important tasks for a manager to undertake when taking on new direct reports is to set expectations (which is a two way thing, by the way!). Having recently taken on a new tribe* and a new set of direct reports, I’ve been through this process verbally with a lot of people now, so when I read a blog post by Matt Newkirk I was inspired to capture the two in my own Manager README:

(* If you’re not familiar with the squads and tribes model, check out Scaling Agile @ Spotify with Tribes, Squads, Chapters & Guilds

Nothing says farewell like a box of donuts!

Today marks the end of an era (not quite for me, but close enough) as Microsoft close down the Skype office at Waterhouse Square in London. The consultation period is officially over and my team, along with many other people, have officially been made redundant. This marks the end of careers long and short with Microsoft for a lot of people. Fortunately, my direct team have all found new homes to go to or have something lined up; mostly external, but a couple have found new teams within Microsoft. …


This Movember I’ve committed my upper lip to help change the face of men’s health. I’m growing my moustache for 30 days, and I need your support:

I’m passionate about this because too many men are dying unnecessarily from testicular cancer, the most common cancer in young men. The Movember Foundation is funding research and health services so that fewer men die of testicular cancer, and to improve quality of life for men living with the disease.

There are two ways you can contribute to my Mo growing effort: Donate online at -OR- Write a check to…

Sometimes you want a button that doesn’t like all the other buttons. Sometimes, you want a UI element to act like a button, but look like something else[1]. In these circumstances, here’s the DataTemplate and Style that I use to wrap my content in a Button:

[1]: I actually came across this recently where a Grid was being used for some content and the Tapped event was being used to handle the user’s action. However, the screen reading APIs don’t understand Tapped on a Grid, just Click on a ButtonBase.

I’m expanding my horizons somewhat by dipping my toe into the water with NodeJS (if you know me, you’ll know that this is a big change from my usual technology stack!). Thanks to the awesome support of my good friend (and all round guru!) Paul Jackson, I’ve managed to make some pretty rapid success getting going with Express, EJS and Passport. However, I got stuck for a day or so trying to get “Remember Me” functionality working with the Passport strategies.

My first instinct was to check out npm and the Passport site for existing strategies and to my delight…

Derek Lakin

The seemingly random musings of a Software Engineering Manager at Facebook.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store