View profile

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

123dev #43: Skills, stories, and software every dev should know
By Justin Garrison • Issue #43 • View online

Sabrina crumples her laptop and throws it away
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.
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 Beta
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.
Did you enjoy this issue?
Justin Garrison

1 gif, 2 comments, and 3 links to make you a better developer and person

In order to unsubscribe, click here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Powered by Revue
Los Angeles, CA