Justin Garrison
October 26, 2021

Skills, stories, and software every dev should know - 123dev #43

Posted on October 26, 2021  •  3 minutes  • 504 words
Sabrina crumples her laptop and throws it away


Continuous frustration

Continuous integration and deployment systems have gone through a lot of changes. What started as shared bash scripts and Makefiles changed into central systems that could be shared by multiple developers and teams. This shift allows for more repeatable, scalable, and more secure systems.

As systems optimize globally they can negatively impact local optimizations. This is a usually a win for an organization because they consolidate expertise and reduce overhead costs, but they reduce flexibility and can become a bottleneck.

There are trade-offs in system design but fundamentally when you push dummy commits to test CI/CD with long feedback loops it’s likely a problem with your org chart. Or maybe it’s not a problem at all and your fast feedback loops are not as important as the other benefits of centralization.

Continuous learning

One of the best and worst parts about being a developer is learning new things all the time. The amount you learn varies throughout your career but if you’ve gone a couple weeks or months without learning new things at work you should check to see if you still want to be a developer and if you’re working on the right things in the right place.

Thankfully, you’re subscribed to this newsletter which attempts to teach you some new things too. 😊

Anything I can do to get faster feedback loops in continuous integration (CI) the better. I have had so many commits like this git commit --allow-empty -m "trigger build" && git push just to trigger CI systems. It looks like act can help with that and still allow for centralized systems in GitHub Actions to improve global optimizations.

GitHub - nektos/act: Run your GitHub Actions locally 🚀 Run your GitHub Actions locally 🚀. Contribute to nektos/act development by creating an account on GitHub.

HashiConf had a lot of announcements for improvements to the HashiCorp tools. I especially liked this improvement to making consul multi-tenant aware. Instead of needing to manage lots of control planes you can manage multiple partitions with a single control plane.

This is a good example of a centralized optimization which can greatly reduce overhead and benefit all users. It can also be an example of consolidating failure impact and being careful about things that can be “too big to fail” when everyone and everything depends on them.

Announcing HashiCorp Consul 1.11 Betawww.hashicorp.com HashiCorp Consul 1.11 adds important new features: multi-tenancy with administrative partitions and a new installation-and-management Consul Kubernetes CLI.

I’ve used a lot of different libraries for CLI tools. Python argparse is the first one I really loved because of how flexible it was. Go has a wide range of highly opinionated (eg cobra) and do whatever you want (eg flag). I found go-arg while working on my latest open source CLI tool and I like the balance of simplicity and configuration in a struct.

GitHub - alexflint/go-arg: Struct-based argument parsing in Go Struct-based argument parsing in Go. Contribute to alexflint/go-arg development by creating an account on GitHub.

Follow me

Here's where I hang out in social media