120-ish Days Later

It’s been a long while since I last wrote about my state of mind during the pandemic and almost as long since I posted some data, so I think this is somewhat overdue. And since today is also the last day of our fiscal year and I’m done with work for a few hours, I might as well use them for something that matters.

What The Data Tells Me

This is the simplest (and easiest to understand) chart I have put together. It smooths out the erratic raw data with a 7-day moving average and only covers mainland Portugal, but that’s where the action is regardless:

Case distribution per region. Observe as the Lisbon region (where I live) takes center stage as people become laxer about confinement.

The Government is (understandably) concerned with the economic impact, and lifted containment too soon and in the wrong regions. I found it especially telling that cases in the Lisbon area started growing steadily from the 15th of May onwards (that’s the local minima between May and June), two weeks (to the day) after the State of Emergency was canceled and shops re-opened (there’s a pretty decent summary of this in Wikipedia that is only missing a few minor things).

And as restrictions were further lifted in May 18th and June 1st (plus a spate of bank holidays starting on the 10th), many people went further afield and the infection spread both in the Lisbon area and towards Algarve.

There were some localized hotspots (some companies, construction works, a few nursing homes), but I blame the spread on warmer weather, the emphasis on tourism (the Government is still trying to paint Portugal as a “safe” holiday destination), and, overall, lax behavior and early de-confinement without things like public transportation being able to cope properly.

And there is a noticeable shift in demographics as younger people start contracting COVID-19 in larger numbers (especially in the 20-29yo segment, which seems especially immune to common sense).

In general, we should have locked down Lisbon, regardless of consequences to tourism, and it was internal tourism that caused the spate of cases in Alentejo and Algarve.

But that didn’t happen, and we’re paying the price–today one of Lisbon’s key hospitals reported a new internal hotspot, with 11 doctors, 8 nurses and 12 patients infected.

About The Data

Before going further, let me get something off my chest.

For 127 days now, practically every day, I’ve gone out to the National Health Service website, grabbed the manually generated PDF they put out at semi-random times1, copied the data by hand to this Excel sheet and refreshed this PowerBI dashboard (in Portuguese2), from which I took the chart above. And yes, I tried various approaches at screen scraping, the URLs are all over the place and it’s all hopelessly ad-hoc.

And I’m tired of it. And frustrated that, for one hundred and twenty-seven days, the Health Ministry has shown itself utterly unable to not just perform accurate automated reporting (because I keep finding errors and inconsistencies in the data almost every day), but also publish a proper API to let us get at the numbers.

All they have is a dinky Wordpress site and a dashboard that is a direct carbon-copy from the original OMS ArcGIS dashboard (they haven’t even kept up with the OMS redesigns), and which is also updated manually (and I know that for a fact because we keep catching it in mid-update, with incomplete values or duplicate rows).

I get that doctors have better things to do with their time. I get that the reporting chain is broken six ways from Sunday, and I most assuredly get that there are (or rather, were) other priorities.

But I don’t get that four months later they haven’t gotten their act together from a purely technical perspective, when it took me two whole hours to use free services to build that data table and that dashboard.

What I’ve Been Doing

We haven’t left the house for anything non-essential in months, which is taking its toll. Now that logistics and deliveries have normalized (and that we have a decontamination routine in place), there is much less need to, but it is impossible to stay indoors all of the time and I, for one, have found it near impossible to work for some days due to not having air conditioning in the office.

I also haven’t had a full nights’ sleep in quite a few weeks, due to a mixture of heat, allergies and various work-related topics that I might write about some day. I don’t really know when I’ll have vacations and am likely to keep working 10-hour days (or 12+ hours’ worth of “swiss cheese” meetings and useless 30m gaps between them), so most of my personal projects are stalled and I’ve focused on various home improvement doodads in order to feel productive.

(It’s really weird to use a 30-minute slot in the middle of a day crammed with wall-to-wall video calls to assemble IKEA furniture for your kids, but when that is the highlight of your day, believe me that you’ll feel entirely justified.)

Since normal TV is dismal and shows like Snowpiercer seem to have been serendipitously timed to coincide with the pandemic (and mirror a lot of the nastiness that has surfaced during it), I’ve kept playing games to relax around dinner time, but am trying to shift towards reading, since right now all I seem to manage is leafing through The Economist every Saturday and it’s just as depressing as the rest of the news.

Realistically, I expect this to take another year to shake itself out, and I fully expect things to get significantly worse–not in the next quarter, perhaps, but definitely about the time we swing into the New Year.

But at least things will be looking up by then, because we’re sure to hit rock bottom sometime soon.

Looking Forward

For starters, I intend to use July to recover from the past six months. Especially where it concerns the past week or so.

And I mean that in more ways than one, which is also why I’m posting this today–I’m drawing a line in the sand, as it were. Despite good progress at work in my new role (which is moderately good news for someone like me, who used to live for creative work and delivering actual product instead of dollops of slide-ware and high-brow strategy consulting), the overall situation is weighing me down a lot, and something has to give.

Where it regards putting my brains to good use (i.e., compensate for work with decent hobbies, preferably creating something), the situation is a bit different. I can’t practice music because it requires contiguous free time (and inspiration), and our podcast has filled in for that somewhat, but I need to do something new.

So I’ve been investigating things off my beaten track with some creative bent (mostly video production and VR, which are logical follow-ups to to games) and pondering taking up the challenge to develop a “serious” application for the Oculus Quest that was suggested to me the other day. I have the Android and Unity chops for it, but have yet to commit (it would certainly be “different” enough for me to enjoy it).

Besides that (and outside in general), the current plan is for the kids to have short outings (it’s impossible to keep them inside now that they’re on vacation as of this week), and as Summer progresses we will try to have some semblance of normal weekends. Far away from people, if at all possible.

That said, Portugal seems to have very few fundamentally stupid people (at least when comparing with daily news bulletins and reports of anti-mask, “freedom” protests hailing from the US) but is (by nature) a friendly and lax sort of environment.

That laxness (and the way the Government has managed the pandemic after the first 50 days, which were rather promising) means that Portugal is currently quite far from being mostly harmless…

  1. Yes, you read that right, they manually create a PDF file in PowerPoint for the Mac and upload it to Wordpress, it’s all in the metadata. ↩︎

  2. I’ve been meaning to build an English version, but given that I spend around 15 minutes a day just copying digits across when I should be helping out with lunch and minding the kids, that also hasn’t been very high on my priorities. When it’s done, I’ll update this post. ↩︎

macOS “Bug Sir”?

Okay, that was… weird. Both more “courageous” and conservative than what I expected, and a lot to take in, but here are some quick thoughts on the WWDC keynote and what it means for the Mac.


That Syncing Feeling

The main reason I ended up not cancelling my Dropbox subscription last year was awkward, and is simultaneously also the reason why this post has been an entire year in the making.


A Short, Nonsensical Sort of Gaming Vacation

Thanks to various idiosyncrasies of the Portuguese calendar, I was able to book a single day’s vacation and get a huge 5-day weekend “break”, which we spent generally relaxing, watching the rain outside (rain in June, yay), and generally doing nothing of consequence. And among other things, I decided to do some gaming (and was actually caught by surprise by the PS5 event, but that’s another story).


TIL: Toggle Do Not Disturb (With a Single Click)

During a brief discussion about PliimPRO, a menubar app to quickly set your Mac to a “safe” presentation mode, I learned that you can turn off desktop notifications by simply Option-clicking on the Notification Center icon on the menubar, without even having to open it first:

It's that simple. Just option-click, no need to open the menu first.

But that’s not all. Meandering even further along those lines, I realized that it would be trivial to build an Automator workflow to write a “presentation mode toggle” via AppleScript, and here it is for future reference:

if (do shell script "defaults read com.apple.finder CreateDesktop") is "1" then
    -- Get open apps
    tell application "System Events" to set openApps to name of every application process whose background only is false
    -- Do this for every open app
    repeat with processName in openApps
        tell application "System Events" to tell process processName
            set visible to false
        end tell
    end repeat
    -- Mute audio
    set volume with output muted
    -- Hide desktop icons
    do shell script "defaults write com.apple.finder CreateDesktop -bool false; killall -HUP Finder"
    -- Enable Do Not Disturb
    do shell script "defaults -currentHost write com.apple.notificationcenterui doNotDisturb -bool yes; defaults -currentHost write com.apple.notificationcenterui doNotDisturbDate -date \"`date -u +'%Y-%m-%d %H:%M:%S+0000'`\"; killall NotificationCenter"
    -- Unmute audio
    set volume without output muted
    -- Show desktop icons
    do shell script "defaults write com.apple.finder CreateDesktop -bool true; killall -HUP Finder"
    -- Disable Do Not Disturb
    do shell script "defaults -currentHost write com.apple.notificationcenterui doNotDisturb -bool no; killall NotificationCenter"
end if

And yes, this is a trifle gauche and overly liberal in its use of killall because it’s 2020 and Apple has let AppleScript degrade to such a point that most modern functionality is impossible to script directly without side effects (and also NotificationCenter seems to ignore SIGHUP, but that’s another matter entirely).

For good measure, you may want to add a “Change System Appearance” toggle after this script in your Automator workflow (you can pick Light, Dark, or Toggle Light/Dark):

This is a little hidden gem in Automator.

This obviously doesn’t switch wallpapers or do “smart” stuff like restoring hidden applications (I’d rather restore them myself, honestly), but is a pretty quick way to clear your desktop (and I used it to record the GIF above using Claquette, a great little utility I love and that I recently found via Michael Tsai).

Update: A little while after writing the above, I found the Pliim author has a public gist with a slightly different technique, and that the original app is on GitHub.

Return of the Bliki

Yesterday, spurred by the re-emergence of Zettelkasten through a set of new tools such as Obsidian, I decided to reacquaint this site with its early origins as a personal Wiki and turned on Wiki-style backlinks again (you’ll find them at the bottom of every page that is referenced somewhere else).


Baking Bad

No, I haven’t caught that particular bug and am not baking bread at home. In fact, that couldn’t be further from my immediate concerns right now, since after spending a week cooped up in my office with 28C inside and with another bout of allergies (which made it doubly hard to breathe, let alone work).


More Elementary

A few weeks before the pandemic started I fixed the touchpad on the ancient Acer ES1-111M we had lying around, upgraded its RAM and turned it into a moderately useful “couch computer”. For good measure, I also installed Elementary OS 5.1.4 Hera on it, and I’ve been using it ever since on a near-daily basis.


Using OneNote as a Wiki

I’ve been using OneNote for years, but this eluded me throughout all of that time:

You can easily link to pages in the same notebook by just typing [[Page Name]].

OneNote will auto-link and remove the square brackets if it finds a match, or underline with a dotted line and create a new page if you click through.

So far I haven’t found a way to link across different sets of subpages, but this is handy enough.

Beneath The Surface

Nothing much to report on the creative front. Work has been exhausting, but it has also taken another unwelcome twist: As it gets progressively warmer, my Surface Pro 4 is collapsing slowly under the effect of near-constant video calls, and has already shut down on me once.