Skip to content

Mowing the grass

This week, beside my usual activities, I was busy with two quite disparate, yet in a sense similar tasks:

And... all that yak-shaving naturally got me reflecting about the scarcity of time, the ethics of work, the frailty of life, the downsides of laziness and all kinds of such deep and inspired topics 🙃

A penguin struggling with pushing a lawnmower into tall grass (made out of various software packages)

You see, I'm pretty sure that most people who know me would consider either of those activities completely pointless and an irresponsible waste of time. Grandma already contracts a friend-of-a-friend to mow the whole yard from time to time, and he does good work—though, granted, his services cost about as much as the electric lawnmower I had to get, and he never comes right away when called. And similarly, the recommended update process for Gentoo installations over 2 years out of date is to basically scrap the whole thing and start over from a clean install—not to slowly bring the old version into the present, an year at a time.

And yet, I insist that both mowing the grass and updating Gentoo were good works that I don't regret doing.

Exercise

To start, both kinds of maintenance were good exercise for me.

I tend to be, frankly, too sedentary, spending long hours in front of a computer screen. Mowing afforded me some much-needed hours of sweating out in the sun and forcing my muscles to work. Some of those muscles were cramped afterwards, but that's better than them slowly atrophying as I turn into an office chair potato.

In addition, for all my Linux experience, I've never had the opportunity to use Gentoo, nor the need to compile or configure my a Linux kernel on my own. Having to wade through the Gentoo documentation to execute a tricky update was a fun way to get introduced to all the subtleties of its package management system.

Maintenance can be a way to brushing up skills, building muscles for more ambitious later projects.

Benefit

Second, both of those exercises were actually beneficial—even if indirectly.

After mowing the grass, I could actually see a lot more of the things previously hidden by it. There were pieces of junk plastic scattered in the yard. A piece of PVC protecting the basement from rain was broken. Some sprawling ivy-like vines were trying to establish base in a corner.

Plus, the tall grass was a good excuse to not doing anything: why polish the brass of a barnacled ship? While I was yet to finish mowing the front yard, grandma joined in with house maintenance work that had been forgotten—trimming part of a grape vine, readjusting a rainwater pipe, even urging me to help prune a rose!

Earlier, all of those were practically invisible tasks compared to the tall grass looming around them, but with the elephant out of the room, both me and grandma could finally think about the real work still to be done.

I hope something similar will happen with the Gentoo server. The "tall grass" effect is a bit in reverse there, since I started updating the server only because it's a prerequisite for HTTPS support. Yet, I expect that once I'm done with the grunt-work of the update, everyone working on the websites hosted there would be reinvigorated to find good uses for the server.

As an example, we are planning to replace a PHP-powered website there with a static site built with Eleventy and versioned though Git. So far, we all mostly assumed that the Git repository would live on a large forge like GitHub or GitLab (or Codeberg 🥲)... but with the server cleaned up as it is—why not put the main Git repository on the server itself? Furthermore, I'm pretty sure I could also get rid of some earlier jury-rigged Google Forms systems, and replace them with even more featureful server-side forms, once I'm not dealing with old software versions... And so on: the list of possibilities unlocked by doing maintenance work just grows on and on.

Missed maintenance masks other problems and makes it harder to engage with a project. Walking the walk and doing the maintenance task places you in a position to address all the other problems, with less overhead.

Fulfillment

Thirdly, both mowing the lawn and updating Gentoo were rather fulfilling.

I won't get into theology (much) by linking garden work to the garden of Eden, but whenever I am outside, removing weeds and cutting nasty grasses, gets me feeling like I am a proper curator of the earth, walking around a global garden and picking which plants are allowed to stay and which ones have to go. You might say that one less nettle patch hardly makes a difference, but if it makes nature slightly more human-welcoming, then I'm all for it.

Meanwhile, with Gentoo, over this week, I set myself the additional challenge of carrying out the update in such a way that the live system keeps working as much as possible. And... I must say that I've been impressed with how stable a Gentoo system is! Other distributions I've used, be it Arch, Debian, or even haphazard Docker builds, would all happily install incompatible packages and watch them crash at runtime. However, with Gentoo, even though rebuilds can take hours, and some updates do break the system (if you skip the news), I've yet to experience any serious system breakage—this far, the worst I've had to do was rebuild a package that Apache depended on, once. And, to further cement that reliability in my mind, all my attempts to partially update singular packages have resulted in dependency conflicts—as they should—and not a broken system.

(As for the challenge, IIRC the system was down for no more than 30 minutes over the week; so at least 99.5% uptime has been met.)

As fulfilling finishing a project might be, finishing a maintenance task can be just as fulfilling, if you frame it right.

Alleviation

Finally, it is easier to mow a recently-mowed lawn an to update a recently-updated Gentoo. So, doing the maintenance now makes it easier to maintain things in the future.

The main difficulty of mowing the yard was not the yard's uneven terrain (even if grandma insisted it'd cause problems), nor was it the yard's randomly-scattered stone paths: the main difficulty was the tall grass itself! It is really hard to push a lawnmower into tall grass; it kept plugging up, and struggled with the quantity of grass it had to process at once. It is much easier to push a lawnmower through shorter grass, than it is to push it through knee-high grass—and worse when some of it is nettles, runaway blackberries, and plum offshoots.

Likewise, the major difficulty with upgrading Gentoo was not the long build times, nor the occasional tricky update process: the main trouble was that Gentoo updates are officially supported only going from ~an year old installation to present—not from an 8-year old install to present! But with the Gentoo update finished, it would be a lot easier to keep it updated in the future, than it was to update it now—it is literally just running ~six commands per annum. Plus, with fresh memories of the busywork of delaying updates, you can bet I'll keep updating it regularly! 😅

Not only is maintenance beneficial right away, but it makes future maintenance easier, accruing further benefit down the road.

Conclusion

Maintenance work is rarely glamorous. But sometimes, it pays to sit down for a week and actually do it.

Working on a project once maintenance tasks are finished is easy—you have a wide empty field of opportunity, where you can run and let ideas take flight. A well-maintained project is ready for integrating with the latest set of features; unmaintained projects are a struggle between framework/library incompatibilities, unmerged code, long overdue reworks, and the like.

Maintenance isn't simply doing bug fixes—it's enabling the bug fixes that matter, once the unmaintained parts aren't blocking the view.

Looking out today, I can see sparrows hopping around grandma's yard, picking at the freshly-mowed grass for seeds. Nearby, a black cat lazily watches them from afar. But there's something the cat would never quite understand: those sparrows would never come hop in tall grass.


This has been my 6th post of #100DaysToOffload. I can't seem to get a post under a thousand words, but there's hope yet 😂