Dart's popularity has surged in the past few years, as it's the language behind Flutter - Google's cross platform front end framework. That's now driving a notion of 'Full Stack Dart', where if you've spent time learning Dart for the front end, why not also use it for the back end. The Dart tool chain has some great features for back ends, such as the ability to create ahead of time (AOT) compiled binaries, or just in time (JIT) snapshots. But those features lead to some interesting trade offs around packaging, cold start times, observability and longer term performance optimization. This presentation will provide an overview of Dart as a back end language, then dive into those trade offs to look at the pros and cons of different choices.
What is the focus of your work these days?
I'm working on the stability, scalability and reliability of our platform for personal data stores that we call atSigns.
And what's the motivation behind your talk?
I'm going to be talking about Dart on the back end, which we use. We build the personal data stores using Dart. At the moment, each of those runs as an ahead of time (AOT) compiled binary. But AOT compilation, although it gives us a lightweight, fast starting binary, robs us of the ability to observe what's going on inside of those personal data stores in terms of memory management. We don't actually see what's happening with the data because that's all encrypted. So I'm going to be talking a lot about snapshots, which is a cool feature of Dart, where it's kind of the best of both worlds. So you get to have Just in Time (JIT) compiler optimizations from the VM, but the snapshot means that you get a warm start rather than a cold start. It gets over that cold start problem that we're all familiar with from running things on Java, and so I think it's a really cool feature of Dart, one that's sort of underappreciated. I hope to raise awareness of Dart as a programming language and especially some of the things that can be done with it on the back end.
How would you describe the persona and level of the target audience for your session?
I think it's pretty wide. There'll be folks out there working with Dart already, maybe doing stuff in Flutter who want to see what they can do with Dart on the back end. There'll also be people using Java at the moment who might be interested in a similar but different virtual machine language; and then I think there will be startups doing observability, monitoring, security and things like feature flags where they've got an interest in Dart as a language especially now that it’s hit the top 20 in the popularity, and want to learn more about what's going on with it, how people are using it, and what the opportunities are for their platforms to support it.
Is there anything in particular that you would like the folks that go to see your session to walk away with after seeing your presentation?
I'd like them to try it out if they've not tried Dart before, and if they're a little more into Dart, I'd like them to try out things like snapshot for some backend services and see if that gives them the best of both worlds of quick starting applications that have a full observability tool suite associated with them.
Chris Swan is an Engineer at Atsign, building the atPlatform, a technology that is putting people in control of their data and removing the frictions and surveillance associated with today’s Internet. He was previously a Fellow at DXC Technology where he held various CTO roles. Before that he held CTO and Director of R&D roles at Cohesive Networks, UBS, Capital SCF and Credit Suisse, where he worked on app servers, compute grids, security, mobile, cloud, networking and containers. Chris co-hosts the Tech Debt Burndown Podcast and is a Dart Google Developer Expert (GDE).