Flutter Warsaw interview with Thomas Burkhart

Intro

Before Flutter Warsaw #15, we interviewed our speakers, and asked them about their development path in Flutter, what was the most challenging for them while using this technology, and who is their biggest Flutter inspiration.

💙 Thomas is the Flutter and Dart GDE. He could be seen almost as a legacy system. Being almost 30 years in this industry led him to a lot of different technologies, like C++ with mfc, C#, microcontrollers in C and currently mobile App development with Flutter and Dart.
What only view people know that he was also a professional magician and bakes his own bread.

Speakers

Mateusz Wojtczak

LeanCode

Senior Flutter Developer @matiwojt

Thomas Burkhart

@ThomasBurkhartB

Interview

[Mateusz Wojtczak] What is your background as a developer? I’ve been seeing you in the community since Xamarin times :) Tell us about your most bizarre/interesting experience as a developer you’ve ever got, and your developer story?

[Thomas Burkhart] They often joke that I am a legacy system in the Community because I am now almost 30 years in IT with some “interruptions”. I started really early with Commodore 64. I started writing programs on the Commodore Amiga. From there on I did different things - I did C++ programming at this time on Windows with the MFC Framework. I did some embedded programming microcontrollers In C and C ++ - which was quite fun and also I tried Xamarin with C# for about 2 years. I did some projects there and finally actually I had some longer time out after the Xamarin part. When I got back I wanted to continue on a Xamarin project and optimistically I updated Visual Studio and updated all packages and after this nothing worked anymore. 2 hours later I was still not able to build anything - I was really pissed off and it was exactly the same time, the same day when Flutter announced the open beta. And so I downloaded SDK and had my first app running in about 15 minutes. And I thought “Hmm.. This looks interesting” (laughs). And from there on there was no way back. It’s just too much fun and it does what I want to do. I like Dart as a language. I never did any web stuff. I have to say it because I despise Javascript. I need a typed language. I never got into the web stuff . That’s the story.

So what about this most bizarre developer experience you had?

The most bizarre one? Ugh…(thinks) I just think if I have something that could count under this description. It’s maybe not so bizarre but also very interesting experience that in one of our last projects for an American startup, which I did with 2 other developers and the startup from the beginning said : “OK, I want the idea to take off so fast and our solution has to be scalable” With this in mind we said “ OK, let’s go for what was in fashion at this time, we go full microservices on Microsoft Azure, Cosmos DB and connect gRPC to our App. Which actually worked, but the problem was that we took way too much time. The whole communication infrastructure between the microservices was too much and at the end the startup ran out of money. So since then when somebody asks me what I would recommend for the backend - I would always say go, unless you’re like Netflix with a really big team and a lot of budget, start with a monolithic web application on the backend - it can be added up on the cloud or some cheap virtual server. Because if your idea really takes off, then you still have time, you see how fast your user base grows and spending more money on faster virtual machines, you can cover quite some time between it. If you really come to a million concurrent users then it's time to rebuild your architecture. That was really interesting because interestingly in the meantime if you follow blogs and social media - the trend goes away from microservices again. A lot of people say “No, don’t do it” (laughs). So that was quite interesting.

You chose RVMS as a topic for the meetup. Why this and not some of your libraries, e.g. get_it? I think get_it is the most popular thing that you could be known of. Why not?

Actually you will get your part of get_it in this talk (laughs). But to be honest I am very happy to have possibilities to talk about this, because if I look at conferences at the last time, and applications I only see Provider or Riverpod. I really love Remi - he is a really great guy but I just think that people should also see alternatives to what you can do. That’s why I say RVMS. One of the things I want to show people how they structure the whole app because state management packages only address a small part of the thing. And then I want to show people what they can do with a combination of flutter_command and get_it. What can the app look like?

About get_it: why service locator? Isn’t it widely considered an anti-pattern? Why did you do this? I also saw the conversation on Reddit on r/FlutterDev one day - I think that were early times of get_it, and already there was a bit of flamewar about “to use or not to use service locator”. So why did you decide on that?

OK. First of all in my opinion this whole discussion that sees the locator as anti-pattern is a purely academic discussion. Because in the end what counts is shipping an app and service locators do their job very very well, they are easy to understand and Martin Fowler has a very interesting article blogpost on service locator and he makes clearly the point that it's not an anti-pattern. And so the reason why I wrote a get_it in the first place, was that when I started with Flutter and I tried to get InheritedWidgets to work I wasn’t able to do it, and actually I wasn’t the only one at this time. Brian Egan also said he didn’t really manage to get it working in a way that it updated the UI tree automatically. As coming from Xamarin I was using Reactive UI - RxUI - and I knew the service locator Splat and also Dart has streams, I know streams from reactive UI, so let’s create a service locator and I’m done, yeah? (laughs) And I can go from there, so it was pretty easy and also what would we try if not the service locator? We have things that are bound to the build context in a way, they are all almost also service locators, yeah? It’s not much different, and because we don’t have reflection, real IoC containers are not easy to implement and in my opinion IOC containers have too much black magic, especially if you try to explore the codebase, and you want to know - oh, where does this come from? It’s easier with the service locator. I know - some people still think it’s a bad pattern, but it works! (laughs)

Another question is from another domain I was thinking about the meaning of your nickname and recently have found it. Could you elaborate on that? :)

You mean escamoteur The thing is I worked for about four years as a professional magician. And escamoteur is a very very old word for magician. In Germany in the 1890’s it was totally normal to say: “An escamoteur is coming!”

I thought it was a French word because I actually searched for it.

It has a French origin, that’s why. But even there it’s not totally clear where it really comes from. But it was said in Germany and Austria it was a totally normal word at this time for a magician. And actually I had a business card that had only written “Escamoteur” on the front side with my name, and nothing else and on the back side - the address. So it’s a little bit like the card from “Men in Black”. And it really worked well because I got the question almost every time: “What’s this Escamoteur?”. People could remember it really well after this.

You are a great contributor on Github, with 306 contributions in the last year, a lot of libraries, and created issues, and I have a question. Do you also contribute to the Flutter repository? If so, why, if not, why not?

Actually I did so in the past already. I made an extension to the dropdown widget, a dropdown box for example, that makes it much easier to handle and two or three other things. In recent times I haven’t done much in this area because my own packages have gotten way over my head in the meantime. And, um, luckily I’ve got some co-maintainers now for some of them. And to be honest, one of the things that I really don’t like about contributing to Flutter repository is the amount of tests that you have to write for everything. And Hixie is extremely nit-picky with every wrong space or comma (laughs) and so I didn't do much at the moment here.

What are your plans for the future regarding Flutter? Any ideas for libraries you can uncover for us? :)

Actually more ideas than I have time. I have an unfinished package for creating Forms and one that will allow you to show dialogs from non UI layers although for the latter one I still have to have a closer look if Navigator 2.0 might make this easier. Also, I want to start a video channel to show how to use my packages.

What’s the best library you’ve discovered lately? :)

I found several packages interesting. There is sa_liquid which creates awesome Lava lamp-like images. Also, device_preview is amazing.

One feature you crave the most in Flutter or Dart is…?

Unions is dart to make Null safety really usable

The talk

RVMS - a practical reactive architecture for Flutter Apps

Today Thomas Burkhart introduces you to RxVMS- the practical reactive architecture for Flutter applications. There is a high possibility you may ask: "Why another architecture? We already have few of them and they are doing quite well ! " Is it so? Thomas makes a discussion in this topic and he shows you what this RxVMS (Rx-View-Managers-Services) is and answears why is it a perfect architecture for Flutter.

Read more

The Powers of Immutable State

Managing a state can be a stressful ordeal if you dive into it without any thought. This kind of monstrous code can be tamed with the principles of immutability. And as if cleaning your code wasn't enough in itself, immutable state comes with a handful of hidden superpowers! Come along for the journey to find out how to use them.

Using Flutter in the Enterprise environment

Building one of the biggest Fintech applications in Flutter was very challenging. Jakub Biliński is responsible for the architecture, approach and development of a new version of the mobile application for strategic and corporate clients of the bank. In his, he shows how his team had to adjust to FinTech security compliance,  write a custom HTTP client, maintain application scalability and more.

Implementing live whiteboard with Flutter and Firestore database

In this blog post, we will explore a possible implementation of such a whiteboard using Flutter to create a mobile application and Firestore database as backend.

Why Firestore, Part I: reasons to love it

Firestore & Firebase suite are great technologies. They allow us to build some features really fast. However, Firestore has also many pain points that outweigh the pros in most of the more advanced cases.
logo

Case studies

Technologies

Flutter

.NET Core

logo

We build communities

No match for you?

No problem, send us your resume, we constantly look for new talents. Write on office@leancode.pl