Your leaking thatched hut during the restoration of a pre-Enlightenment state.


Hello, my name is Judas Gutenberg and this is my blaag (pronounced as you would the vomit noise "hyroop-bleuach").


decay & ruin
Biosphere II
dead malls
Irving housing

got that wrong

appropriate tech
Arduino μcontrollers
Backwoods Home
Fractal antenna

fun social media stuff

(nobody does!)

Like my brownhouse:
   birthday #55
Thursday, February 16 2023

high up a hill just northwest of the center of Santa Teresa, Nicoya Peninsula, Costa Rica

I awoke today on my 55th birthday and went about it like any other workday. I've been struggling with a new (to me) code base that isn't designed for deployment in multiple environments. It includes HTML files (which are completely static and thus cannot be modified really at any point) that have META tags that refresh to the live site. Obviously this would break QA, because a tester would need to see a development site to see proposed changes before they are live. The solution is to patch the code in the QA environment so it doesn't do these meta-refreshes. But to do the patching, I'd want to use a quick and dirty scripting language with excellent string support like Python. Unfortunately, I was having trouble installing Python on my Amazon Workspace (my virtual workplace computer that is fully "in the cloud"). (Later today I would realize my problem, all I had to do was install it as an administrator, duh!)
So then this morning I was trying to set up an Azure DevOps build pipleline, similar to the successful one I'd implemented about a year ago as my first big win on my Boston-area web development team. Unfortunately, I'd forgotten some of the details of how I'd set up that pipeline and Microsoft may have also slightly changed the interface. In the Linux world, complex systems are always configured with text files, and if you're reimplementing something you once implemented, it's usually a simple matter to copy the configuration file and change just a few things that are different in the new implementation and, Bob's your uncle, it just fucking works. With these bu ild pipelines, I'd tried to keep things working as much like the Linux model as possible, avoiding the stupid wizards and graphical pipeline design interfaces and sticking to YAML, a hierarchical text format similar to JSON and (more remotely) XML that can also be used to configure build pipelines. But the YAML is not quite enough. If you simply copy the YAML from a working pipeline and make a few changes, the build stage will work but the release stage will not. You still have to go through the bother of making a build stage using the confusing and poorly-designed graphical release pipeline builder. After that, the YAML for the build stage will suddenly start working, evidently ignoring the configuration busy work done in the graphical builder.
Then I had a whole other problem stemming from the turducken of computers I was using. The turkey in this metaphor was Bunny, my work-issued laptop. On that I had a window open to my Amazon Workspace, which is a totally different Windows computer hosted in the cloud. I am forced to use that because it is the only computer with access to development web and database servers (machines I once accessed via VPN). That's the duck in this metaphor. The chicken is a Windows server reached via Remote Desktop. All three of these computers have their own distinct desktops and Start menus (actually that last one kind of lacks a Start menu because it runs the abomination known as Windows Server 2012, which dates to when Microsoft thought sunsetting the Start menu would be a stroke of genius). My problem from this arrangement came when I'd open a PowerShell window for the wrong computer and enter the magical incantations designed to associate the release process with a specific destination computer. Somehow I did this wrong and associated my Amazon Workspace with the release and not the Windows Server 2012 machine. The name of that Workspace is a ramble of mostly random characters, and it took me a prolonged period of frustration and unhelpful Google searches to realize that the stupid pipeline was trying to deploy to it.
Another problem was an inane limitation of Azure DevOps itself. Once you set up a server in an "environment" for it, no other server with that same name can be added to any of your environments. This is true even from a different Azure DevOps "project." That would be fine if multiple projects could use the same environment, but they can't. Basically, what's happening is that it disallows a name-collision when creating environments while at the same time permitting name-collisions when trying to use environments. This makes it difficult to have multiple Azure DevOps projects deploy to the same server. Fortunately, there is a workaround if you hack the incantation that Azure DevOps gives you to run in Powershell on the server (all you have to do is use an --agent parameter).
There was also a problem with the ASP.NET project itself that allowed me to debug it but prevented it from building, but I'm getting pretty good at fixing those problems.
All of this is to say that this morning I was aggravated and anxious because of how badly things were going, but by late this afternoon I'd solved all the day's problems and had a working Azure DevOps build pipeline set up that was automatically patching code for QA using a Python script. Because it was my birthday, I also took a long break in the middle of the day (when I had still yet to solve most of my problems) and treated myself to cheap Costa Rican rum that had been supercooling in the freezer.

This evening after language school, Gretchen drove out to the health food store Green World again to buy more of those super soft teeshirts. I'd been loving how soft mine was so much that it was the only one I'd been wearing. Gretchen returned to the casita this evening with three more of them for me, saying "Happy birthday!" and at least one for herself. We'd thought they were made from bamboo fibre, but it turns out they're actually made from a very soft form of cotton.
At 4:00pm the ATV rental guys came back to pick up the vehicle they'd rented us for the past seven days, leaving us with no form of transportation except the kind God gave us. But the plan for tonight was just to walk to the pizza place Muzza, which isn't far from where our small unnamed street intersects with Calle Cóbano.
We walked down the hill a little before sunset so we could go out to the beach to watch it happen there. I got the feeling that most people in Santa Teresa with an interest in the sunset go out to the beaches to watch it, as there were many hundreds of people visible up and down it. There were also a fair number of surfers out catching the waves, though the part of the beach nearest our casita isn't as popular with surfers as parts of it to the north and south. There were also a good number of dogs, some of whom didn't seem to be with any humans. One of them was an older laborador mix whom might have been the same dog as the one we'd encountered standing in the roadway to our casita just a little uphill from Osa the other day. He was very happy when Gretchen went to pet him, rolling around on the sand as a small hermit crab scuttled out of the way.
At Muzza, we both ordered vegan pizzas and this time there was cashew cheese available. I'd expected the cheese to be more like a spread, but it really seemed like cheese, with that elusive rubbery cohesiveness that's so difficult to fake. Additionally, I ordered a gin tonic (there was no "and" between those two words) and was surprisingly big when it appeared.
Over our pizza, I described what my workday had been like, with a beginning so full of frustration that I'd been wondering if I was working in the right industry. But I then added that the elation I felt from overcoming those challenges made the whole thing worthwhile. Gretchen wondered if I really needed to be working on a job that generated such anxiety and stress and I responded that it was probably a perfect job for me, since most people in situations like I was in this morning would've given up, but I powered through, and my ability to do that is what puts my skills in demand. I went on to explain that the amount of suffering I experience when doing this sort of work depends on the length of the alter-compile-and-test cycle. With the Azure DevOps pipeline it wasn't too bad, with me typically having to wait only about three minutes to see whether or not my changes had an effect. With the Angular code I'd been working on powering the ill-fated web-based software built by the Ukrainian outsourcers, though, sometimes that cycle was fifteen or twenty minutes, long enough for me to fall out of the mental space I needed to be in, which makes working on such code nearly impossible. "But in that case," I said, "I didn't let it bother me. I couldn't." Gretchen was happy to hear that I have psychic limits with such work.

As we had last time, Gretchen and I left Muzza just as the live music was about to replace the reggæ classics that they otherwise play. On the walk northwestward on Calle Cóbano, we saw some flashing blue lights coming up behind us and turned around to behold a sight we'd never seen on the Nicoya Peninsula: a pickup truck labled "POLICIA." The truck was making U-turn, perhaps to crack down on an ATV driver who wasn't wearing a helmet (something we'd quickly stopped wearing as well).

Us on the beach at sunset. Click to enlarge.

For linking purposes this article's URL is:

previous | next