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.

Join the Azure OpenDev Event

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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?”

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →

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.

Read more →