$ cat post/yaml-indent-wrong-/-the-firewall-rule-was-too-strict-/-it-ran-in-the-dark.md

yaml indent wrong / the firewall rule was too strict / it ran in the dark


Title: May 11, 2020: Reflections on Remote Work, Platform Engineering, and the Unpredictable


Hey folks,

It’s been a whirlwind since I sat down to write this blog. The world has shifted in ways we couldn’t have imagined just a few months ago. I’m taking a moment to reflect on how these changes are impacting my work, both as an engineer and a manager.

Remote Work: A New Normal

Remote work is here to stay, at least for now. Twitter’s decision to allow employees to work from home indefinitely is just one data point confirming what we all suspected: the office isn’t always necessary. As an engineering manager, this has forced us to think more deeply about how we manage teams and collaborate across time zones.

One of the challenges I’ve wrestled with is ensuring that our internal developer portal (Backstage) remains functional despite everyone being remote. The last thing we need right now is for key services to go down due to a misconfigured load balancer or a flaky database. We’re ramping up on SLOs and monitoring to keep the lights on, even if everyone’s in their home office.

Platform Engineering: Formalizing Complexity

Platform engineering is formalizing around us. The complexity of Kubernetes deployments has started to make some engineers groan. While tools like ArgoCD and Flux are making it easier to manage stateful applications, there’s still a lot of manual work involved in setting up and maintaining these systems.

We’ve been experimenting with eBPF as a way to optimize our infrastructure. It’s fascinating how much you can do with just another layer in the Linux stack. For example, we’ve used it for tracing metrics and troubleshooting network issues, which has saved us countless hours of digging through logs.

The Great Tech Debate: Deno 1.0

Deno 1.0 is a fresh breeze in a sea of static languages. I’ve been playing around with it to see if it can replace Node.js in some of our microservices. The simplicity and security features are compelling, but the community support is still maturing. We’ll likely give it a try in some smaller projects first before committing fully.

Kubernetes Complexity Fatigue

Kubernetes is great for managing containerized applications, but it’s not exactly user-friendly. As we onboard more teams, we’re starting to see the cracks in our system. The complexity fatigue is real, and I’ve found myself advocating for simpler solutions where possible. Sometimes, a well-architected VM might be a better choice than yet another Kubernetes cluster.

Reflections on Our Work

Debugging issues related to remote work setups has been a common theme lately. Network connectivity, tooling availability, and time zone differences can all play tricks with your mind. One particularly funny incident was when I spent two days debugging an issue that turned out to be due to my home internet provider’s DNS server misconfiguration. Classic.

We’ve also had some heated debates around whether we should fully embrace GitOps or stick with more traditional DevOps practices. While the automation and self-service aspects of GitOps are appealing, there’s a risk of over-engineering our infrastructure just for the sake of it. We’re trying to find a balance that works for us.

A Silver Lining

Amidst all the challenges, there’s been a silver lining: I’ve had more one-on-one time with my team members this month than ever before. It’s been great to get to know them on a deeper level and to see how everyone is holding up under these unprecedented circumstances.

In short, May 2020 has been a mixed bag of triumphs and trials. But that’s the beauty of tech: it never stays still, and you’re always learning something new. Here’s to hoping we can navigate this storm together!

Stay safe out there.

Best, Brandon