Quite possibly my favorite part about working on open source infrastructure is that I can share as much as I want! Contrary to corporate infrastructures, where most of it is closed source and hidden away, open source project infrastructure is by its very nature open. From a pedagogic standpoint, this allows me to teach others without needing to create contrived demonstrations or examples, but we can instead refer to the real code being used to deploy the Jenkins project.
Howdy!
Welcome to my blog where I write about software
development, cycling, and other random nonsense. This is not
the only place I write, you can find more words I typed on the Buoyant Data blog, Scribd tech blog, and GitHub.
They will blame you
Over the past decade two things have become increasingly clear: practically every modern industry is part of “the software industry,” in one way or another, and “the software industry” is rife with shortcuts and technical debt. Working in an Operations or Systems Administration capacity provides a front-row seat to many of these dysfunctional behaviors. But it’s not just sysadmins, many developers are also called to engage in or allow: half-baked product launches, poor-quality code deployments, or subpar patch lifecycle management.
Don't get water on the leaves
“For vegetables, your best bet is to get some drip lines ‘cause you don’t want to get water on the leaves” said the helpful employee at a local farm supply store. I have heard this “advice” numerous times over the past few years, and it gets a little deeper under my skin each time I hear it. Like most advice handed out in this fashion, there’s a kernel of truth hiding somewhere behind layers of indirection associated with such old wive’s tales.
Replacing Coastguard
I have tremendous difficulty with decommissioning electronics. I only recently stopped using my Galaxy Nexus, an almost five year old cell phone. Earlier this year I recycled a 32-bit x86-based Thinkpad T41, only because its overheating issues made it impractical to continue running workloads. And up until today, the lowest powered device actively running a Unix in my office, was a 266Mhz AMD Geode-based Soekris.
I am working with a management coach
Practically every professional developer can name a great, and a terrible, manager they have worked with in the past. Good Engineering Managers are kind of like the bass line in a song, you might not notice them when they’re there, but something will definitely sound wrong if they’re absent. For one reason or another, I have somehow ended up leading a team or acting as an Engineering Manager at each of the four companies I have worked for over the past decade. As time has progressed, I have become increasingly aware of “management” as a skill, rather than some intristic talent. A skill which can be practiced, honed, and improved upon.
What I have learned about growing tomatoes
To say that I’m an expert gardener would be an extraordinary stretching of the truth; capable, yes, expert, not even close. While I tend to focus on what crops fail outright, or produce lower-than-desired yields, my neighbors and some of the folks I know online seem to be impressed with my results.
Why bother with Docker (on FreeBSD)?
Yesterday I participated in a very fun and productive Docker Hack Day, wherein a few folks (myself included) spent the day hacking on porting Docker to FreeBSD. After which, I had a nice relaxing beer (or two) on my boat/train rides home and enjoyed one of my favorite past-times: shit-posting on Twitter.
I am *not* speaking at Jenkins World
Jenkins World 2017 is nearly upon us, and I must admit that I am not actually presenting a talk at the event. I haven’t been speaking as much this year, compared to 2016, since I have been very busy building the Evangelism team at CloudBees. Three new hires and one transfer later and it’s already time for Jenkins World! Eep!
Making the Azure Dashboard Useful with Markdown
Azure has started to grow on me. I could imagine myself, a couple years ago, lamenting their poor non-Windows support, clumsy user interfaces (and APIs), and overall “beta dog” performance. Fortunately for cloud users like myself, Microsoft is hungry, and has heavily invested in Azure, becoming very competitive in a very short amount of time. One aspect of Azure I didn’t expect to like however, was their web UI. If you’re already familiar with the AWS web dashboard, you’re probably accustomed to…low expectations, so just about any web interface designed later than 2008 would be an improvement in comparision. Fortunately for me (and you if you use Azure), the Azure “blade UI” was designed more recently, and was clearly created by a team of thoughtful UI designers rather than engineers.
A genuinely terrible abuse of Jenkins Pipeline
I consider myself one of the world’s foremost experts in terrible ways to use Jenkins, partially because my brain is awash with awful ideas, but also because I have been around the project long enough to see hundreds of different “clever” (ab)uses of Jenkins. Today I thought I would share something I came up with a few weeks ago which, to date, might be one of my more deplorable creations.
Overriding steps in Pipeline with Shared Library sleight of hand
Jenkins Pipeline has rapidly become one of my favorite tools in the entire Jenkins ecosystem. Part of my job at CloudBees has been advocating for its use, but I can confidently state that I would be a passionate user of Jenkins Pipeline regardless of who was paying me; it is simply better than what preceded it. As Pipeline has evolved and matured, I have pushed for its unilateral adoption within the Jenkins project’s own Jenkins environment. Wielding Pipeline as a developer is one thing, managing infrastructure which utilizes it is quite another.
Do not disable the Groovy Sandbox
One of the things I have worked on this week has been documenting the “In-process Script Approval” and some of sandboxing features in Jenkins Pipeline. While waiting for some pull requests to be reviewed I had the thought “how bad could disabling the sandbox be?”
Jenkins in seconds with Azure Container Instances
Recently Microsoft announced an interesting new addition to their public cloud offering: Azure Container Instances. Azure Container Instances are fast and billed by the second, which is quite compelling on its own. They are interesting in that they provide two novel levels of container orchestration, the first is rather basic:”take this container and run it.” The second is an integration with Kubernetes which allows the Kubernetes cluster, most likely one an Azure Container Service, to schedule container workloads through Azure Container Instances rather than on the existing Kubernetes agents )VMs) via the “ACI connector.” As this service matures, this could enable some very novel load-based bursting, or cost-saving, deployment patterns on top of Kubernetes in Azure.
Developing Groovy Scripts to Automate Jenkins
Automation is a wonderful thing, and for the past eight or so years, I have been a heavy user of [Jenkins](https://jenkins.io() as my hammer of choice for just about every nail I needed to automate. There’s one dirty little secret about Jenkins however: it’s a godawful nightmare to try to automate.
They don't always grow right
This year’s growing season has been the most challenging to date, partially due to the increased square footage, but also due to events outside of my control. Thus far: deer have devoured the tops off some of my strawberries and bush beans. The native soil in the Sebastopol is so chock-full of grass and clover seed that the only way the beets have had a chance has been to tediously hand-weed the bed. When transplants should have been soaking up sun to kick-start growth, the weather turned and stalled growth with sporadic days of rain. Once, it hailed in the west crop.
The philosophical motivations of putting things into and, later pulling different things, out of the ground.
Based on my records, which is really just an orange spiral notebook, I have been gardening for a bit over three years. During that time, I have learned a tremendous amount about the biology that sustains us, and the tasks necessary to produce edible, and at times even tasty, food from soil, seed, and sunshine. This season is my most ambitious yet, I added an extra 200 sq ft. in the West Crop and I planted a variety of plants which I’ve never planted before including bush beans, summer squash, potatoes, leeks, beets, pumpkin, strawberries, okra, brussel sprouts, and scallions. Despite working at a frenetic pace to get everything going, I have had time to reflect and wanted to share some of the motivations for my gardening zeal.
Introducing the West Crop
This season I have been expanding my gardening with more variety, which I mentioned in my last post, and now with some more space. Thanks to a family member, who has generously granted me use of part of her property, I have prepared and planted a 20x10 foot plot with additional vegetables.
Starting an ambitious 2017 growing season
Spring has officially erupted in Sonoma county, with the immense amount of biological activity we have come to expect from one of the more productive regions of the country. On our meager parcel we have more plants, with more variety, than ever before going into the ground. With two seasons under our belts in the “south crop” and one season with the “north crop,” I absolutely couldn’t wait for the cold nights to pass, and am pleased beyond belief that Spring is finally upon us.
Collecting rain, an on-going experiment
My neighbors must surely think that I am some kind of lunatic. Last spring I dug up half of the dying sod in the front yard and installed three 8x4 foot raised garden beds. Then, last fall, I started banging around with a few, bright blue, 55 gallon food-grade steel drums, in the car port, which I picked up to catch rainfall for my garden. In this post, I will detail my initial results using a home-brew system using these metal barrels.
Drive like a life depends on it
Somewhere along the line, safety became a crucial part of my decision-making process. I always wear my bike helmet. I put on my protective safety glasses when wielding an axe or doing something which might splinter or launch debris. In my tool closet I have a big bag of ear plugs which I put in whenever working with a power tool bigger than my cordless drill. When riding a motorcycle I always wear my full-face helmet, armored jacket, and sturdy gloves. And of course, when I am driving a car, I always check my blind spots.