The sparrow and the bat

Since about Sunday, a sparrow has been frantically chirping, for hours on end, outside our kitchen window. It’s that brief period of transition from spring into summer in Minnesota, when having the windows open is ideal, so the sparrow’s apparent distress extremely audible inside our house.

On Tuesday morning I decided to investigate the issue, mainly because we were concerned it was building a nest in our gutter. So I got out the extension ladder, made my way up to the second story of our house, and peered into the gutter.

Lots of muck. We really should have opted for the gutter guards when we had these new gutters installed last summer. But no signs of a nest.

Then I noticed where the sparrow always seemed to go when it was most agitated: the kitchen fan vent on the side of our neighbors’ house. The vent has three large louvers, with an opening that is definitely large enough for a small sparrow to fit in. But not large enough for a plump, ready-to-lay-eggs sparrow.

Now I think I understand why the sparrow is so agitated. It built its nest inside the vent. Now it needs to get back in there to lay its eggs, and it can’t. I’m not an ornithologist, so that’s just a guess. Maybe it already laid the eggs in there, and it’s gone out and fattened itself up for an extended period of incubation. Either way, it seems desperate to get into a space it can’t physically fit into, and is freaking out about it. Sparrows are not the smartest birds.

We’ve had run-ins with sparrows before. A decade ago, when I was renting a small storefront in our old neighborhood as an office for my web development business — back when I thought having employees and an office were things I wanted — a sparrow built its nest in the store’s awning. The chirping was incessant, as was the… uh… window washing.

Assured that the sparrow’s problems, poor thing, were not also about to become my own as a homeowner, I put away the ladder. Then, about a half hour later, my wife informed me that there was a bat trapped inside our deck umbrella.

We’ve had run-ins with bats before, too. A few years before I started renting that storefront, we came home from a week of holiday travel to discover a bat in our closet. That turned out to be a full-blown infestation that required contracting a wildlife control expert to seal all of our exterior gaps and install “exclusions” to get rid of the bats.

I do not like bats.

I do appreciate bats. I know they serve an important role in the ecosystem. And I know that contrary to common misconception, most of them are not rabid. But you never know. That’s why, if you come into physical contact with a bat, you have to get rabies shots. Also the skin of their wings creeps me out.

So, while my primary objective was to get the bat to leave the umbrella, avoiding contact with the bat was a close second.

This bat most likely was not rabid. Yes, it was daytime, but the bat was sleeping inside the closed umbrella. Nonetheless, we wanted — needed — it to be gone. So I timidly opened the umbrella, and the bat woke up and flew in my general direction. It’s movements reminded me of the muppet bats that are always hovering around the Count on Sesame Street.

I recoiled and staggered backwards, trying to avoid it. I lost my balance and fell, hard, slamming my back, just to the left of my spine, on the vertical edge of our patio door. The pain was instant and overwhelming. I couldn’t breathe for about 20 seconds.

I called the triage nurse at my clinic, and was reassured that I probably didn’t need to come in for an X-ray. And I mean, even if I did break a rib, the only real course of treatment is time. That, and opioid painkillers I wouldn’t want to take anyway. So, I may have a broken rib. Or I may just be having ongoing back pain and muscle spasms. Either way, I haven’t slept in a bed, or much at all really, since Monday night. (It’s Thursday as I write this.)

I turned 50 a few months ago. Not “old,” but definitely not “young.” I’m in good health, running regularly (until this week, that is), and way more fit than my dad ever was… at least since his discharge from the army in 1964. But these past couple of days of pain and limited mobility have given me a greater understanding of what he was going through in the final months of his life, last summer. He had fallen too, and broken ribs. He had been on blood thinning medication for decades, so his entire torso was one giant bruise. He refused to go to the hospital.

He fell a few more times. A year ago this week, while my sister-in-law was visiting us, I got a call from my dad’s cell phone. The voice on the other end wasn’t his, but that of an EMT, who informed me he was in my dad’s apartment. He had fallen in the bathroom, and was on the floor for hours before he managed to drag himself to his bedroom, reach for his phone and call 911.

He spent a week in the hospital. After that we moved him from his apartment in Rochester — the apartment my mom had only gotten to spend a couple of months in, the previous summer, before her cancer led to a hospitalization she never came home from — into an assisted living facility in a Minneapolis suburb, so we could see him more regularly. It was pretty much a steady decline for the next three months.

A couple of weeks after we moved him in, he had us buy him a lift chair. I had no intention of keeping it after he was gone. But I’ve wished the past couple of nights that I had it. We don’t even own a recliner. I’ve been sleeping awkwardly in an armchair with my legs up on an ottoman and a pillow behind my back. It’s not great.

What does this all have to do with the sparrow? Maybe not much. But I’m just thinking about the simultaneous fragility and resilience of life, and the ways that our poor choices can come back to haunt us.

Also, I think the sound of an agitated sparrow is probably going to trigger a Pavlovian response of back spasms and visions of bats flying at my face for the rest of my life.


Postscript: About an hour after I wrote this, my daughter noticed there was a wild turkey sitting on our fence, then it jumped to our neighbors’ garage roof. The wildlife adventures continue.

One document that encapsulates the Block Editor core team’s detachment from the reality of how most professionals actually use WordPress

That would be this document.

Establish early what content you expect to require updates

At a high level, it’s important to recognize that not every piece of content can be updated across the entire site and that the method of creation greatly impacts what’s possible. As a result, it’s critical to spend time ahead of creation determining what you expect to need updates and to put that content in the appropriate format. This will make a huge difference in terms of future maintenance.

Embrace theme design at the block level

Block theme design requires a mindset shift from the previous approach of designing large sections of a theme and controlling them via updates. While a holistic view of a design is still important when creating a custom theme project, blocks require that themers approach design on a more atomic level. This means starting from the block itself, typically through theme.json customizations. The goal is that each individual “atom” (i.e., block) can be moved around, edited, deleted, and put back together without the entire design falling apart.

The more that you approach design at the block level, the less need there is to propagate updates to things like patterns and templates across the entire site. If the atomic pieces are in place, their layout should not matter.

Gee that’s rich. My particular issue right now is that I need to make some updates to a block pattern I created for my client’s site. Unfortunately, that block pattern was already in use on about 40 pages of their site, but it involves an unanticipated design issue. (As it happens, yes I probably should have thought it through a bit more before it got propagated so extensively, but the practical reality of building websites is that sometimes you don’t know what will or will not be effective at the outset — especially when you’re simultaneously dealing with end users learning how to wrangle Gutenberg — and one of the great features of the web from its inception to today is that things are easy to change later on. In fact, that has been a driving force behind template-oriented CMS platforms from the beginning. It’s the separation of functionality, design and content that has been at the heart of most well-structured website editing platforms, including WordPress, until now.

It’s easy, when you believe that what you are creating is a blogging platform, that people only use it to create blog posts that are content-heavy with mostly one-off layouts. And yes, that’s how WordPress started. But the entire team must collectively have its heads deeply inserted up Matt Mullenweg’s ass (sorry for being crass, but I’m also being honest) if they think that’s how WordPress is predominantly used, if that’s what made WordPress as big as it is. Because it’s not.

I’ve been doing “block-based” design with WordPress sites (using Advanced Custom Fields and its wonderful Flexible Content field) since well before the Gutenberg project existed. But I had a much different, less “atomic” concept of blocks. This atomic approach is great (I guess) in concept, but it is too fine-grained to be a useful tool for the average web content editor, and it makes design and development orders of magnitude more difficult and time-consuming.

I have now completed four site projects using my own custom block-based theme, and have three more underway. While there are some really “cool” features of the Block Editor (Gutenberg), these projects have also taken me much longer and been far more maddening to build, and have left my clients much less confident in their ability to easily edit their content, than anything I had done in the previous decade of working primarily with WordPress.

And this last set of three projects is in many ways a rolling back of features, because after too many months of frustration with the limitations of block themes, “version 3” of my custom theme actually reverts from using the new HTML-based page templates to using PHP-based templates. It’s a regression in a way, but I never had any intention of using the Site Editor anyway, because it’s not an easier way for me to build sites, and it grants access to elements that should be 100% hands off for the clients who’ve hired me.

And now, once again, I’ve been derailed from my work by the need to spend 45 minutes venting my frustrations over this predicament in a blog post.

By the way, I'm aware of the irony of using Gutenberg in order to decry it, so don't bother pointing that out.


So… how did I end up resolving the issue of updating the block patterns that already appear in my content? Do you really want to know? I fired up phpMyAdmin, wrote a SQL query to find all of the affected instances, and manually copy-pasted the update into them. (Yes, I could’ve written a SQL statement that would just do the replacements; I tried that first, but the replacement text was really long and was generating a MySQL error that I couldn’t quickly pin down, so it was faster to just manually edit the 40 records.)

Near misses

Last night, while driving in a relatively unfamiliar area in the northern suburbs of St. Paul, I nearly died. Well, OK, I’m not sure I was that close to dying, but a fraction of a second was the difference between today being another ordinary day and being one spent in ICU or the morgue.

I was heading west on Ramsey County 96, about to make a left turn onto the southbound I-35W onramp. Highway 96 is a 4-lane divided highway at this point, and with some construction in the area, the interchange has recently been made into a 4-way stop. As I approached the intersection I stopped, observing a semi slowing to a stop in the oncoming right-hand lane. I arrived at the intersection first, so I began my left turn. Just as I was entering the intersection, an SUV blew through in the oncoming left-hand lane, oblivious to the stop sign, obscured by the semi. I slammed hard on my brakes (and almost as hard on the horn). They honked at me too, apparently blaming me for observing the stop sign they were unaware existed. I escaped unscathed, though I’m not sure how close we came to a collision. 4 or 5 feet, probably. Not a razor-thin margin, but with the SUV traveling at least 50 MPH, it was still too close for comfort. (And I don’t mean this.)

We all encounter varying degrees of “near misses” every day. Only rarely are they so clear and obvious that we are shaken by them, and even then, things quickly return to normal. We are a resilient species. We have to be, to survive. But there’s a downside to that resilience. It’s easy to forget just how precious our days are, and how soon they will be gone.

My near miss last night has me thinking more about what’s really important, and wanting to spend my time only on those important things as much as possible. That doesn’t mean working crazy hours or having life-changing experiences every moment. But it does mean spending less time worrying about things that don’t really matter, and making choices that make each day better instead of worse.

Don’t worry, and don’t regret. Take chances. Go after opportunities. Make things happen.

I’m still here. For now. And if you’re reading this, you are too. Let’s do this. Don’t stop. Except at stop signs.

Best Google Doodle yet

If you’re a regular user of Google, you probably know that Google likes to occasionally honor historical events by changing its logo for a day, in a way that symbolizes the event it’s honoring.

These are usually interesting (if for no other reason than simply what events the Google team deems worthy of their recognition), and sometimes quite artistic. But today’s Google Doodle is probably my favorite yet.

You see, today is the 25th anniversary of Tetris, one of the most iconic video games of all time.

And here’s the doodle:

Google Doodle: Tetris