Living in America is fun because when armed domestic terrorists that include off-duty police officers from around the country openly plan for weeks an insurrection on the Capitol and then execute that plan with a terrifying level of success aided by inside LEOs, that’s no different than a normal Wednesday to the business class. No time for mourning or reflection; you still have to perform your role for the economy.

A screenshot of a post from r/nottheonion, with the headline: Woman trampled to death at U.S. Capitol held flag that read, 'Don't tread on me'
Conservatives have killed satire

When I wasn’t doing meaningless knowledge work, here’s what I spent my time on:

Google Analytics

I was mostly wrong about my issue with Google Analytics. And the fix was pretty simple. As it turns out, there’s either something wrong with Minima’s GA integration, or it’s incompatible with the new GA4 tracking IDs.

The Minima theme

Jekyll’s Minima theme comes with a file in the hidden gem directory at _includes/google-analytics.html. (The gem directory is separate from the Jekyll project directory, which is kind of a pain in the ass. On Mac, it’s at Macintosh HD/Users/<username>/.rvm/gems/ruby-2.#.#/gems/minima-2.#.#. JFC.) It holds the following script:

<script>
if(!(window.doNotTrack === "1" || navigator.doNotTrack === "1" || navigator.doNotTrack === "yes" || navigator.msDoNotTrack === "1")) {
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', '{{ site.google_analytics }}', 'auto');
  ga('send', 'pageview');
}
</script>

In that same directory is head.html. head.html is called by the default layout (also in the gem directory), which means it’s part of every page. head.html calls google-analytics.html, which should insert the script GA needs to track your pages.

There’s also a site-wide variable for your GA tracking ID in _config.yml. You can see the script above calling {{ site.google_analytics }}.

On the other hand

It’s also possible that I needed to build the site specifying JEKYLL_ENV=production for the built-in GA code to be triggered, which is just now occurring to me as I write this. On the command line, that looks like:

JEKYLL_ENV=production jekyll build

Things are working now, so I’m not gonna fuck with it.

Workaround

I found this blog post by Michael Soo Lee. Basically, it had me create a new file to hold the GA script (the one that GA tells you to use), this time in the project folder:

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=<trackingID>"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', '<GA tracking ID>');
</script>

Then replace the reference in default.html to google-analytics.html with the new file.

So now my GA account is tracking data! Not sure what I’ll ever do with it on the blog, but it’ll be useful to know how everything works before I launch the book.

Because GA uses cookies, I decided I should provide a simple consent banner or pop-up. Not that I expect many readers in California or Europe, but it should be a fun learning project.

I found an open-source project on GitHub called Osano that I’ll probably implement.

The booksite

With this site fully operational, I started getting back to work on the manuscript. One element of the book is family recipes that really don’t exist outside of the heads of my mom & my aunts. For the recipes I know, it’s just rote data entry into HTML. Same for a collection of workouts. I’m using the built-in Collections functionality to group each of them on a single page, but each individual recipe & workout will appear as an interlude in the primary TOC. I still have some work to do figuring out how to integrate them.

I’m also planning a picture gallery similar to the above Collections, with individual images accompanying some poems & interludes, but I’m not sure how I’ll handle storage. I could just include all the pics in the images directory, but that will increase the build & load times. I could host on a public Google Photos album or similar image hosting platform, but I need to look into security.

A related issue is the recent news that Google Photos storage will count toward your total Google account storage starting in June 2021. I don’t take many pictures or videos, and don’t have a ton of media stored (relatively speaking), but will probably back up everything onto an external drive.

Audio

I have a similar issue to think through regarding recordings of me reading my poems. My dad is going to record me reading each in his studio, so the sound quality will be professional. Again though, 50–60 audio files at 45–120 seconds each will really balloon the size of the project. I’ve thought about SoundCloud, where a free account can host ~3 hours of audio. But I’m limited to certain file formats, which may make professional recordings pointless.

The plan is for each poem to have an accompanying audio file. I’m using the HTML <audio> tag, which will use your browser’s default media player.

Right now, I have some scratch recordings in an audio directory; I created a poem layout, which has an include for audio.html—a nifty piece of code I wrote to pull the correct audio file into the page with the poem:

<audio display="block" controls>
  <source src="audio/{{ page.permalink | replace: 'html', 'm4a' }}">
  Your browser doesn't support HTML5 audio. <!-- fallback text for old browsers -->
</audio>

It works because the poem & audio files use identical filenames. It’s not very complicated, but it’s probably one of the more creative pieces of code I had to figure out.

Sports!

The Bills play the Ravens this Saturday in the Divisional round of the playoffs. I really cannot handle the stress of a high-stakes game anymore (I haven’t had any practice in many years), so I probably won’t watch much or any of it. If they make the AFC Championship or Super Bowl, I will watch those games. In fact, I’ve already talked to my brother, and if the Bills are in SBLV on February 7, I’ll drive out to visit him so we can watch together in isolation. We’ll be isolated—not because of the pandemic or because we don’t want to watch with friends, but—because no one will want to be in the room with us. It would be awful to vicariously experience our anxiety for 4 hours.

That said, Tennessee Vols football looks as ridiculous & incompetent as ever and I have no confidence in the Sabres anymore (poor Jack Eichel)—so I am fully willing to sacrifice them and all other teams I cheer for on superstition’s alter for a Bills win.