Hindsight is 2020!
Hahaha, I’m sorry. Let’s start that again.
Wow, what a year.
January was filled with business trips, hotels, planes, and gatherings. I remember seeing a couple coming from Europe in the Atlanta airport getting off a plane wearing masks. It was the first time I ever really stopped and thought about catching anything serious in a long time. The Coronavirus was the only thing on the news as I sat eating my usual turkey and cheese sandwich from the Boar’s Head Cafe while waiting to catch my flight. I remember thinking about when I picked up H1N1 back in 2009 while I was living in DC and was probably the sickest I’ve ever been. That flu was a bad time.
If one thing’s clear, it’s that this year has given me more perspective and made me more grateful for my family and the little things in life.
To the cloud!
As everything shut down on March 15th. My focus switched to helping my organization transition to fully remote and my local community’s businesses transition to mobile ordering, curbside pickup, and in general just how in the world to use technology to not go out of business. The companies who had made the transition to allowing for curbside pickup before the pandemic were weathering ok, and the ones who thought everything would blow over continued to decline. It hurts my heart to see so many businesses I loved visiting shutting their doors. The virus has taken both lives and livelihoods, and I’ve felt fortunate to be in a line of work that can basically do 100% of everything from home.
Volunteer Work Pivots
Last year, I joined the executive board of FoundersForge, a local non-profit focused on helping entrepreneurs in NorthEast Tennessee build scalable, high-growth businesses. We mostly run in-person events, and that completely changed. We re-focused our efforts into directly calling and working with entrepreneurs and helping them get connected with the resources they need. We planned a huge 2021 roadmap that I’m so excited about. Plus, we recently raised enough money to execute a good chunk of those plans. Using business as a way to do good in the world is something I’m passionate about, and working with such a great team here who shares that vision is truly inspiring.
TriDev, the developer meetup that Jeff Rainey and I have run for years, went full-remote. At first, we had about the same number of in-person people, but Zoom fatigue quickly set in. Even I feel it. After 10+ years of screencasts and virtual meetings, at the end of the day, I just want to go outside. I’m fortunate to live in the mountains where we have plenty of places to go, but my outdoor time has even gone down this year. RIP my Strava premium account.
Last Year as a Microsoft MVP
I’m grateful to have been awarded a Microsoft MVP award nine times. This year was my last and was bittersweet, but the program needed some fresh blood and I’ve become less directly invested in Microsoft-specific tech in recent years as the web has spread out more and I use a wider variety of tech to build software. Nine is the number of seasons Seinfeld had, and the number of years the Beatles were together, so I guess it seems like a good time to end it anyway. 😅 I’ll miss the MVP Summits, though (the in-person ones), and seeing everyone more frequently.
I don’t speak for the org I work at all here, in any stretch of the imagination. Opinions are my own, etc.
I’m incredibly proud of a new thing we built this year.
I’m a big believer that the principles that make a great startup a great startup are the same principles that make large, enterprise-size organizations great. Not least of these principles is laser-focus on bringing value to customers with everything you do.
Our org builds software for K-12 cafeterias, among other things, and COVID-19 changed the expected behavior of almost every single one of our users. As part of the work I did internally, we went from brainstorm to idea, to prototype, to shipped product with paying customers in about 6 months.
We essentially built a Doordash for K-12 schools called Heartland Meal Orders.
While doing so, we laid the groundwork for a new design system, built with Figma and Storybook and React components, and I’ve internally joined the design community of practice. While I’ve traditionally been a backend/API developer, designing and building great user interfaces are critically important and expected by the average person.
This leads to…
Things I Intentionally Learned
Every year, I pick a couple of technologies and go deep.
CSS (architecture and systems)
I’ve always known enough CSS to get the job done. Mostly based completely on Bootstrap or Foundation with everything overriding those controls. This has always served me and my teams well starting out, until we wanted to do anything custom and then everything fell apart trying to keep up with the Bootstrap upgrades. Custom CSS has its own problems, but doing it right, particularly when you have a design spec and are using a modern, component-based framework like React or Vue, it pays significant dividends later in your ability to reuse code and execute on changes quickly.
The new project we built at work had a near completely custom design, didn’t support IE11, and I was the font-end lead on the project. It was a great opportunity to really solidify my front-end skills. Parts use CSS Grid, but the majority is Flexbox. Honestly as much as CSS Grid gets talked about, Flexbox is the real workhorse of the web, and I have a deep understanding of it and edge cases now.
I’ve only ever really used relational databases for apps. While I’ve used Redis for caching, and MongoDB for side projects in the past (does Firebase count in non-production toy projects?), I’ve never used [shipped] them as the primary database for a project – until now.
CosmosDB has its warts. While it touts a MongoDB API and others, only the SQL API is truly ready for a production application. It has a steep learning curve, and many foot-guns that can cost you thousands of dollars in Azure fees. It’s dangerous. But it’s fast.
Wow, is it fast.
The speed is yours to lose and having shipped a fully production, customer-paying app on CosmosDB, it’s been fun to see the extremes of the benefits and the dangers of this technology.
Next.js and GraphQL
I tend to tell new developers that the first thing they should do is start a personal website, since you can do one very important thing: Learn a technology in context from start to finish. From git to builds, to staging, to prod, to monitoring, to performance. You can learn everything and build something in production with real users and real feedback. And it’s all yours.
This year I rebuilt my website (previously Gatsby) in Next.js. I hated GraphQL in the context of Gatsby, and Next.js gave me routing conventions and more flexibility over where the content was coming from.
I went from markdown (which ended up being GraphQL on top…again), to Contentful (also GraphQL), and finally to WordPress GraphQL, since my content has all of its history there. It was fun to see all that Next.js has to offer, and what a powerful frontend platform it is for building sites and apps.
I spent a big part of mid-year’s free time building a side-project in Redwood.js. Redwood is trying to be the modern version of Rails, and adding conventions and glue on top of Prisma, Node, React, etc, to make a single platform. I love the direction, but it’s built in JS instead of TypeScript, which means that there was no intellisense and type support for a very long time. It’s still coming, and I ended up spending an inordinate amount of time writing tests just for types and in the forums. I eventually gave up and have been looking at Blitz.js for the new year.
This is probably the biggest thing I started this year that I’m carrying into 2021. Bullet Journaling is a daily practice.
BuJo is part task management, part diary, part note-taking, part art notebook, etc. Most importantly bullet journaling is intentionally slow. So much of my life had become fast and fleeting. I was becoming forgetful. Not that I couldn’t remember things. I have a decent memory. It’s just that I wasn’t remembering, or doing, the right things.
The act of pen and paper note-taking has forced me to remember and focus on what’s important. Since my hand will cramp if I write too much, I only use my pen strokes for the most important things. It’s helped me focus on the things that truly matter. I attribute the majority of productivity, clarity, and not spiraling into a mental health disaster this year on intentionally removing the screens in the morning and key times of the day, and being mindful of the gift that time is.
A side benefit has been that it’s made articles like this, where I review what I’ve done much easier. It feels sometimes like the year just goes by and I don’t accomplish much, but writing down the things I learn, the takeaways of the seemingly tossed away side projects, the small joys of time with my kids, and having a record to pass to them someday puts more life in my years.
The Year of the Mac
Ok, I promise that it’s not where I’m not an MVP anymore, but I do feel like I have more freedom to say this, but I switched to a Macbook Pro this year. I still use Windows and Visual Studio for some things I can’t get away from (dashboards and reports that require full framework .NET and Visual Studio proper for a report builder). Everything else, though is all Mac OS for day job work.
Visual Studio Code with the right plugins is a joy to use, and as much as WSL/WSL 2 has overcome so many of the
npm install type of Windows-only errors there ends up just being different, more esoteric errors to replace them. .NET 5+ and of course anything Node.js and more simply work better, faster, and more consistently on Mac OS.
I hate it, but it’s true for me.
In addition, for the same reason Mac folks used to have a Windows VM to test for the IE users, I now need access to a Mac to test for weird Safari bugs. MS Edge is my daily browser driver, but with a Mac I can get in and out without much fuss or additional VMs tying up my machine. I still own a desktop PC for personal code work and any Twitch/Video work, but everything else now is either my iPad Pro or Mac.
I’m a big believer in mentorship and freely giving of the wisdom we collect over the years. Life has some curveballs, and it’s important to pass on what we’ve learned, for better or worse, to the next generation.
At work, we have a program I’m a part of called “Future Leaders”. It’s a two-year executive leadership mentor program, where you’re paired with a VP or higher to learn the ins and outs of the business and help train you to be a better leader. The title is kind of a misnomer, since almost is everyone is a leader for something, whether we feel like it or not. But it’s been insightful being able to see behind the scenes of how things work during a year like 2020.
The biggest takeaway from this is that openness has been so important for me to be able to make good decisions for the business and also feel like my work matters (there should always be a way to trace back your work to a “why does this matter?”). In closed-communication organizations, it’s hard sometimes to understand where particular stories or tasks fit into the bigger picture, and understanding the business side of the technical work helps flesh out the “why”.
As 2021 rolls in, and a vaccine is on the horizon, I’m excited for the new year as we slowly move back to some form of normal that involves people. Even an introvert like me can’t wait to see people and regain the ability to just go sit in a freezing cold Starbucks and listen to the hum of life and overly loud indie music.