I find posts from other hackers on their equipment to be rather interesting and figured I should share my latest Minimum Equipment List. Lately I haven’t been traveling, but I tend to move around Santa Rosa and the greater Bay Area with a fairly standard set of equipment regardless of the distance I’m traveling. My international trips usually necessitate a larger wardrobe, but the bag on my back remains very consistent.
Kubernetes is so hot right now. So hot. Not to brag, but the Jenkins has been using Kubernetes for a couple years, in production even! While Kubernetes is certainly worth the hype, so hot, I have traditionally done all of my development with Kubernetes resources using a personal Azure Kubernetes Service instance rather than running minikube locally. Recently I took some time to do some hobby-hacking, which included some Kubernetes work, and ended up revisiting using minikube on my local machine. It went…okay.
This year I got tired of my strapped bike pedals and decided to get a smidge more serious by purchasing clip-in pedals. Going into it, I knew that there was a high risk of falling over at a stop light or any number of the calamities other cyclists have experienced when their feet become attached to the bike frame.
This year I’ve been working on an ambitious new project referred to as Jenkins Evergreen. It is ambitious in that we’re aiming to significantly alter the way in which Jenkins is downloaded, updated, and used. In most visible ways Evergreen is the same as a traditional Jenkins installation, but the way it is assembled into a package and delivered is radically different. Among the many challenges which the Evergreen project must tackle, there is one problem in common with most other organizations: how do you take a big, complex system, and make it continuously deliverable.
You might not be surprised to know that among my many views and opinions, I have given serious consideration to writing instruments. While much of my day is consumed by typing away on the keyboard, I carry no fewer than three notebooks with me at all times, filling each with tasks, ideas, designs, and so on. The paper notebook for me is a scratchpad for my own thought process. There are numerous spiral bound pages in my office which hold early designs for many of the products I have built, and probably more from those more crazy designs which I was not able to build.
A link was sent my way to the Redis Labs “Commons Clause”, which definitely raised my eyebrow. While the Commons Clause, as defined by Redis Labs, does not apply to Redis itself, it is applied to their non-closed source software.
Somehow I have been blogging for over eleven years
now. When I first registered
unethicalblogger.com it more or less a joke in response to a deluge of
holier-than-thou rhetoric about the “ethics of blogging”, as if it were anything
more than soap-boxing on the internet.
- Configuration languages are too complex; YAML is much simpler and easier to understand.
- Declarative YAML configuration is brilliant.
- Lots of our things look similar, we have too much copy and pasted YAML.
- We’ve written a tool which uses templates and parameters to dynamically generate our YAML
- The declarative YAML format now supports conditional, iteration, and inheritance syntax; it is now turing complete.
This year I have started to see a new buzzword get thrown around, one which I can feel especially hipstery about: GitOps. While the folks over at WeaveWorks have made the term fashionable in the Kubernetes ecosystem, stodgy old-timer Puppet users might recognize the same practices they’ve used for a few years now by combining R10k and Git. In fact, I was first introduced to the concept by Gary Larizza, an absolutely loud, foul-mouthed, and wonderful hacker. The concepts Gary blogged about I rapidly introduced to the Jenkins project’s own Puppet-based infrastructure. This blog post isn’t about how sunglasses-at-night cool all us Puppet users have been, but instead I wished to clarify some areas where “GitOps” as a practice falls short, and what is needed to compensate.