I think that with this post I have deployed the Hugo site to production.

RSS feed is redirected to the new file, so subscribers will see some duplicate/repeat entries, I think.

This is my first post to Hugo. So far, so good?

Running log of my work to get Hugo set up the way I want it:

  • Jan 15: Installed on Pair and on my MacBook locally. Made the first version of this post. (Required installing Go on the MacBook, as well as figuring out the environment variables to run Hugo.)
  • Jan 16: Wrote a quick ruby script based on a snippet from my homegrown static blog site, to migrate all my markdown entries to Hugo; this required reading their dates and titles and adding them as proper toml metadata to the Hugo file headers. It sure was a good decision to use a bunch of plain text files when I built my own engine.
  • Jan 17: Themes are kind of complex. I’m playing with the HPSTR theme. Figuring out how to work with it involves learning a little bit of how SASS works, and a whole lot of trial and error. This theme has a lot of components. I’m tinkering with color and some of the page’s components: To wit, today in a couple of hours I learned how to change the header and link colors and remove the ‘reading time estimate’ from the list page.
  • Jan 18: What now? I’d like to remove the hamburger menu. Also need to figure out a urg-ahoy-hoy Deployment Method. Though I’m also re-watching The Expanse while I sit in a bar, so this may go more slowly.
  • The great majority of all my content converted to the Hugo site works just fine as-is. There are two notable exceptions:
    • First, the link list-type posts that I wrote for my homegrown blog worked by having a link in the title/header. As-is, Hugo doesn’t render these. This might be fixable easily by adding | markdownify to the template where the title is rendered, as in the list and single templates for the theme.
    • Second, the images that I display using the lightview lightbox don’t display, because I don’t have the required style and script available.
      • (Jan 21) This took a while to get a handle on, mostly because I’m not very good at this, I wasn’t focused, and I might have had a drink or two. Figuring out Lightview involved learning how to deal with Hugo shortcodes and then doing a bunch of debugging. I ended up with a shortcode, basically a snippet that inserts the arguments I specify, into the code that I used to build for lightview. Additionally, I had to put the calls to lightview’s javascript and stylesheets, as well as to jquery, in my page templates. Of course, now I have to go and re-code in my markdown files, but I do have a good method going forward (and I don’t have all that many posts with the old lightview method, anyway).
      • (Jan 22) Done. This shortcode thing works great and I’m looking forward to experimenting with it for more uses.
  • Jan 22: Now I need to figure out an index/archive page.
  • Jan 24: It’s a snow day. I’m screwing around at home while the kiddo builds stuff in Minecraft. So I learned a little more about templates, worked on a replacement for the nav hamburger menu, and applied a little bit of my crappy design sensibility to the header.
    • Next on the improvements list: Cleaning up markdown links in my archive page, and maybe better link presentation on their individual pages.
  • Jan 26: Oh, right, need to do RSS and figure out if there’s a webmentions method to add.
  • Internal links are probably broken and need to be either fixed in the markdown source or redirected. Here’s the perl I came up with to replace relative and absolute links that used my previous convention.
    perl -i -pe 's/]\(\/2012(\S*)\.html/]\(\/post\/2012$1/g' *.md
    perl -i -pe 's/]\(http:\/\/prettygoodhat.com\/2017(\S*)\.html/]\(\/post\/2017$1/g' *.md 
    perl -i -pe 's/pics\//\/pics\//g' *.md
  • Probably should install some syntax highlighting. Then I think it’s about time to go live.
    • That was easy. Added pygmentsuseclasses = true to my config, and:
<section id="main">
    <h1 id="title">{{ .Title }}</h1>
    {{ range .Data.Pages }}
      {{ .Render "summary"}}
    {{ end }}

To make this work on my web server I needed to $ pip install --user pygments.

  • Prep for deployment by marking all posts as draft = false: perl -i -pe 's/draft \= true/draft \= false/g' *.md

Maybe I’ll do a little more writing here on the blog or elsewhere this year. I’ve meant to note lately that I’m really very much liking my AirPods.

Among the write-ups I’ve read around the internets, Steven Aquino’s review resonates strongly with my own thoughts, especially the idea that they’re just fun to use. There’s some real magic in the way they pair and in how nicely they tell my iPhone or Mac to pause when I remove one. For me, using them with Siri is a little hit or miss: I’ve found the right amount of pressure to double-tap with to activate it but not smash the thing into my ear, and can usually speak quietly to change the volume, pause, skip tracks or start a phone call.

When there is some background noise, however, Siri doesn’t always catch the command; likewise if I just mis-speak or if Siri just isn’t feeling cooperative, then the whole thing can hang up and leave me digging in my pocket for the phone. Right now, where it’s winter in the high country, this may mean stuffing a glove under my arm, wrapping the dog leash around my waist, and grumpily poking at my iPhone curmudgeonly. (A note about wearing these in winter: Right now I’m tucking them under a warm hat much of the time, so the fit is nice and snug. But in very cold weather, the metal antennae of the AirPods are quite efficient cold conductors. Chilly ears.)

The ease of use of the AirPods + case means that I basically am taking them everywhere with me. I never did that with wired ear buds. As a result, I find that I’m listening to more music and lots more podcasts than compared with a few weeks ago: A quick walk with the dog means five or ten minutes with a show or some tunes, and I’m really enjoying that.


In my use so far, the only place where the AirPods don’t feel like a rock star must-have is for voice calls. This is a big part of my use case, as I work from home quite a bit and spent a lot of time on the phone. AirPods do give me a lot of flexibility to walk around while on a call and make it quick and easy to get on the phone (no more untangling ear bud wires after fishing the things out of my bag). But: 1) Voice call battery time is not good: Compared to five hours of listen time, I get, max, two hours of phone time, even when I’m mostly on mute and only occasionally using the mic on my end. This leads to the awkward dance of putting in one AidPod while the other charges, then checking the charge every once in a while, and swapping ears to re-charge the active *Pod. Not optimal, but I get that it’s not the primary use case for most. And, 2) Not regularly, but frequently enough to be a distinct problem, the phone will stop sending the call to the AirPods and revert to phone audio. Resolving this is a matter of re-selecting AirPods as the audio destination, but it’s annoying and sort of worrying that this happens at all, much less once or maybe twice a day if I’m on the phone a lot or on a particularly long call.

So, overall I’m pleased as can be, really liking these tiny magic things and the way they fit into my daily life now. It’s fun to have a cool and somewhat delightful Apple experience these days.

Is this thing on?

Appears so. Boy, what a year, huh?

Seems I pretty much forgot how to post to this place.

Inspired by Jamiee Newberry, I participated in a month of tiny challenges. The goal I set myself for January was to find and record a “today I learned” item each day for the month. Each of those daily notes is attached as a webmention to this post; another handy use for that comment-like webmentions tool is that it can approximate something akin to tags just by linking. So that’s cool.

I have one final TIL to complete for the month. I’ve enjoyed it and the small and encouraging community that formed around the tiny challenge idea, and while I can’t say that every day was something particularly insightful, I do appreciate looking back on the month to see the way a small amount of effort each day adds up to something real.

So with that in mind I’m going to try another one for February. I’ve been listening with a lot of interest to the tiny challenges podcast; Jaimee and Daniel Steinberg have talked about “three words” that will help act as compass points for them during the year; ways to give themes to their actions and measures against which to set their success. I want to take some time in February to define three words of my own. The tiny part of the challenge will be to make a note to myself each day about my thinking or decisions related to my three words: this could be a single sentence or it could be more, but I’ll complete it each evening. I may or may not make this writing/thinking public, because much of it is really for my own brain, not for feedback of vetting. I’ll share some as I go, to be sure, but want to remove the obligation on myself to do something for an audience each day, as this was one of the things I wrestled with a bit this month.

By the end of the month I will have a fleshed out set of thoughts for each of three words that will help me shape my approach to the rest of 2016. So, bring it on, February!


Today I learned, officially, that I was a much, much younger man when we adopted our old dogs. This puppy is a lot to keep up with!


Today I learned that if you’re a dog person, the house just doesn’t quite feel right without a dog. And, should you happen upon a dog, you are basically powerless. We we went to the hardware store for furnace air filters and they just happened to be having an adoption event with Second Chance, a local shelter.

We we came home with furnace filters, of course, and also a little lady we are calling Gunnison. She is a border collie/Newfoundland mix. Oh my, what have we gotten ourselves into?


Learned a lot about some specifics of a work process that makes up a big part of a project I’m working on.

I don’t love having these obtuse TILs; it’s a consequence of my work not being so public, but that work nonetheless is a big part of what I do daily, so it’s natural that a lot of things I learn come from it. That makes it hard to reflect on them in this forum, sort of un-satisfying.


Today I learned quite a few ins and outs of a grand jury, because I have been called to sit on one weekly for the next few months. This will be interesting.


Some discussions the last few days but particularly today clarified part of my evolving job role. I’m used to being a doer, but lately a good chunk of my commitments are around facilitating: helping others do things well, helping build a strategy in which other projects will fit, and connect a lot of organizational dots. Don’t get me wrong, there are still a lot of *deliverables*with my name on them; I need to exercise some agency and planning to find the right balance, for me, between making things and supporting others in doing the same. That’s an interesting, exciting challenge.


So. Tonight I learned that a strong part of my routine brain will remind me to take the dog outside when returning home late in the evening, even when I am coming home from taking the old girl for her last trip to the vet, where we peacefully put her to sleep at the age of fifteen.

My wife was the same: she promptly refilled her water dish when we got home. Longtime habits don’t go easily I guess. For the first time in many years we don’t have dog footsteps tracking around the kitchen.

This makes two old girls we have said goodbye to in the past few months.

So. Dammit.


Some of these daily things I learn are not so much new lessons as things I observe that I would like to take forward.

Today didn’t feel productive at work. It didn’t start as well as I like, and never got back on the right foot. I need to develop some better ways to come back from those unsatisfying and un-energizing starts. When I encounter this kind of day my best response is to start identifying and ticking off small, doable bits of work, but today I wasn’t quite organized enough to pull even that off. So I need to work on that, to notice when I’m not focused and be deliberate about getting myself back at it. Tomorrow is another day to do it.


Today I learned that when the recipe says to press the gluten free pizza dough out very thin, it means it. This recipe tasted good but I made the pizza a little thick so it came out a bit doughy in the middle. I’ll try it again!


I’m playing a lot of Destiny lately, and today went adventuring on my first strike playlist. This is a shorthand for a set of hard missions the game sets up for a set of players. I have been reluctant to go on these missions because I’m sort of an asocial social gamer, but really enjoyed the games we played thorough, me and two other strangers. Getting over my initial anxiety about the multiplayer matchmaking was good for me and produced some fun times.

Also, I picked up a great bit of loot on the run, and learned that the so-called 1000-yard state special weapon really is all that.


It’s never too late to take your spouse out on a date. We had a nice time tonight at one of our favorite places in town, where they always make a pretty good Manhattan, and in an hour or so we can catch up with one another while our boy plays with the neighbors. Babysitting co-op is a pretty good idea, gang.


Today I read this study about emotional and mental health impacts of food allergies. It suggests that food allergies can result in depression and anxiety from youth through at least young adulthood. It’s one more difficult potential outcome of my son’s allergies that I will worry about.

Bonus Friday TIL: watching my son un-self-consciously poke his tongue out while drawing at the kitchen counter after school, is so so great.


Today I got confirmation that a small part of a plan I put together at work … Is going to work. This nicely advances a broader project in a concrete way and I’m pleased with that. As usual it took a bunch of conversations to get to this point and will require many more; I’m happy that it feels like a good collaboration right now.


I’m a hard person to travel with, I think, because once we’re on our way somewhere, it’s all destination for me: how quickly can we get there? That aphorism about how it’s not the destination but the journey? Mostly bogus.

Today I was conscientious about not rushing, and on the last day of our vacation we had a leisurely breakfast, a nice walk and an easy drive. So maybe I learned just a bit about relaxing today.

But dang I wish I was on vacation still.

Also, I learned that I can freehand a pretty adequate Hawkman mask for a five-year old superhero.


Today I learned about a nice and functional clipboard manager for iOS: Copied. I used it several times today, including in writing up this quick post. Among its best features: it has a share sheet extension, so using it is nearly as easy in iOS as the native copy function. Good stuff.


Learned a lot today about VACATION OWNERSHIP (in its substance as well as the deeply aspirational tools used to sell sell sell it), which learning was the price of our deeply discounted resort stay this week. Ninety minutes of my day? Sure. I’m still not ready to buy.


Tonight I drove to the town where I went to grad school, saw two dear friends and a Josh Ritter concert.

We made it home at 1am — home in this case being Phoenix, where we are spending a few vacation days — and I thought for a few minutes about what I learned today — okay, officially, yesterday, because I could barely see straight anymore at that point. This is what I wrote down for myself:

Endlessly supportive wife; I am a particular kind of music listener; I can still get lost in a performance; I am utterly transported by some. Few things meet my anticipation and excitement but today did.

What’s the thing I learned there? I don’t know, exactly. But something about the right experiences and futures being out there and I should overcome my reluctance to set my sights on them. Sure, a couple of days of vacation going well is different than a multi-yearlong project meeting a vision of success; but don’t they all start with starting? So I’m going to keep on trying to do that.


I’m on the road for a short bit of vacation, and had a thoroughly nice day that started with a great workout in my home town and ended with a late stroll back to the hotel with my wife after dinner in cool weather (but not the wintry cold and snowy weather at home!). A day like today it’s hard to pause and reflect much, even though I had good conversations and listened to some podcasts I enjoy and appreciate. I suppose today’s TIL is that it’s hard to make this time, but it’s valuable… Even if the outcome is just a realization that I’m working at it and some days come with more challenge than others.


Today I read up on the state of Bitcoin via this article by Mike Hearn. My PhD work was on alternative physical local currencies, so I’ve always been interested in Bitcoin as another kind of effort to build a medium of exchange. The apparently now-unsolvable technical issues underpinning Bitcoin, combined with failure of its community to address them when it could, is a pretty strong lesson in the organization of collective action. Money is hard, gang.


Today I saw just how proud and lit up my son’s face is when he comes back from the floor at his preschooler gymnastics class.