My 2019 in Review

For the reboot of my blog, I thought I'd do a quick recap some of my professional learnings of the last year.

Modern C++

The last time I used C++ on the regular was 2007. Well, a lot has changed since then. C++0x became C++11, marking the beginning of the “Modern C++” era. I picked up a copy of A Tour of C++ to reacquaint myself with the language. I also subscribed to the CppCast and cpp.chat podcasts.

Why subject myself to C++ in a world with true modern languages like Rust and Swift? C++ and C are the only tried and true ways to create compact, performant, library-level code that can run on both iOS and Android. Rust and Kotlin-Native are promising but not there yet. I have a lot more thoughts on this topic. Stay tuned.

CMake

Most modern C++ projects use CMake as the build system. I had been exposed to CMake before, but I didn't really “get” it. I would just google and stackoverflow and swear my way through minor edits. This year, I decided I wanted to actually try to learn it. I came across a great interview with Craig Scott on CppCast which led me to his book on CMake. That, along with online guides such as Effective Modern CMake has been immensely helpful.

Flutter

Flutter is a cross-platform mobile (and web and desktop) framework from Google. We used it to develop some sales tools at work. My experience was… mixed.

Full disclosure, I have not written a line of Dart myself yet. Rather, I was responsible for a team that was writing Dart and the CI/CD pipeline for the project. I was hoping to see much faster iteration than we experienced with separate native iOS and Android codebases. This didn't really pan out, but I'm not sure we gave it a fair shot either.

First, we integrated Flutter into existing iOS and Android projects, instead of letting Flutter “own” the project. This broke a lot of the advantages of Flutter, like hot-code reloading. Kind of the worst of both worlds. Also we had to integrate heavily with our own native framework, which is a often a weak point of cross-platform tools.

However, I hope to learn to try Flutter again in a more standard way. Hopefully my experience will be better.

Modern JavaScript & React

I never cared much for JavaScript (I'm looking at you, var). However, ECMAScript 6 (aka EMCMAScript 2015, aka ES6) has fixed that with the addition of let and const, among many other things. Also, JS is pretty hard to ignore these days. So, I bit the bullet and jumped into the wild world of modern frontend web development. And actually, it's not that bad! The frameworks and tooling have come quite a long way. I'm working my way through Modern JavaScript From The Beginning on Udemy and enjoying it.

For frameworks, React seems like it's here to stay. I've been using it a bit at work and it's productive and enjoyable so far. I'm also curious React Native, but mostly as a opportunity to play with ClojureScript.

Books

These are the tech, management and leadership books I added to by brain last year. I didn't necessarily read them all cover to cover โ€“ most of them are not that kind of book.

๐Ÿ“– = Physical or eBook, ๐ŸŽง= Audiobook

What's Next

They say always say that starting is the hardest part. I'm happy to be writing again and I hope to have a lot more to share with you in the year to come.