We saw Black Panther today and really enjoyed it! Cast, characters, story: it has lots going on – lots to say – and it does it very well. By contrast, one of the trailers was for Ready Player One, and boy does that trailer just do utterly nothing for me.

🎧 I’ve had Brian Fallon’s new album Sleepwalkers on heavy rotation the past week or so, and now I find Billy Rosenbeck’s glowing review. It’s an evocative, thoughtful orientation to what makes Fallon so good. 👍

I’m San Jose-bound next week! I haven’t been there in many years, so even though it’s a work trip I’m excited to be there again. I’m scoping out coffee shops and told my parents I’d wander over and take a picture of the church where they got married, too.

espresso cup from above, bright gold colored in the sun

One thing I have a new appreciation for as I finish my Whole30 month of eating very, very specifically, is good espresso. My go-do drink is a cappuccino, and I’ll certainly come back to those, but I’ve found great pleasure in a well-made espresso this month. I’ve enjoyed improving my home espresso craft along the way, too.

screenshot showing Let's Encrypt status

/Now: Really happy with how easy the one-click installation of Let’s Encrypt certificates is with Pair Networks! I have some configs to update to take advantage of it, and it’s amazing that this will take longer than actually enabling SSL. 🔐!

Snow day here! Six inches or so of lovely powder overnight and continuing this morning. Alas, I still have to work today.

Snowy park with San Francisco Peaks in the background

Taking a walk on a very windy lunchtime.

I keep meaning to post a photo of breakfast at my favorite local joint, the Tourist Home. So, here you go.

Me: _plays for many hours_ I've accumulated a good amount of resources and equipment. I had best continue conservatively, not buying more than the absolute necessities so that I can min-max my stats and capabilities for upcoming situations.

_goes to work_

_returns_

My son: Dad I used all our bomb arrows and bought endurance rings with all the spirit orbs. Also I spent most of our rupees for lots of armor and dyed it all blue because it looks **so cool** and now I look like the blue ninja!

This is good for me.

I’m very not impressed by the font scaling on this new work-issued (Win) laptop. This is Not Good.

Posting via Micropub means I can post from mobile, too!

Thanks to @dgold’s nanopub I am now able to post to the site via micropub clients (more or less — a few loose and rough ends to sort out)! This is quite cool.

Years ago I built a small tool to make summary data from the information contained at Uses This (“A collection of nerdy interviews asking people from all walks of life what they use to get the job done.”). This weekend I got an itch to see if it still works, and, lo and behold, it does! With just one small change to the naming convention in my script that builds the extracted data, I was up and running again, and able to then update the no-doubt-embarrassing R code that creates some summary info of interest.

The last time I wrote a bit about my tiny project, I was looking at text editors at Uses This.

Here’s a snapshot of the current data, comparing top iOS apps now to the list the last time I ran this, in 2012:

Top 20 iOS apps by frequency:

     JAN 2018                       JUNE 2012
     instagram-ios         : 48     instapaper-ios        : 22
     kindle-ios            : 32     instagram-ios         : 17
     tweetbot-ios          : 32     simplenote-ios        : 17
     twitter-ios           : 32     kindle-ios            : 15
     instapaper-ios        : 27     twitter-ios           : 14
     simplenote-ios        : 25     reeder-ios            : 13
     reeder-ios            : 20     tweetie-ios           :  9
     foursquare-ios        : 14     words-with-friends-ios:  9
     paper-ios             : 12     evernote-ios          :  8
     dropbox-ios           : 11     foursquare-ios        :  8
     vsco-cam-ios          : 11     tweetbot-ios          :  7
     words-with-friends-ios: 11     facebook-ios          :  6
     evernote-ios          : 10     flipboard-ios         :  6
     safari-ios            : 10     yelp-ios              :  6
     flipboard-ios         :  9     ego-ios               :  5
     ia-writer-ios         :  9     goodreader-ios        :  5
     procreate-ios         :  9     ia-writer-ios         :  5
     spotify-ios           :  9     safari-ios            :  5
     tweetie-ios           :  9     twitterrific-ios      :  5
     ibooks-ios            :  8     dropbox-ios           :  4

My data and visualization senses have evolved since I last played with this, so maybe I’ll continue to update with some new summary information and plots. There’s a lot of longitudinal info to potentially watch, as well, so stay tuned! And let me know if there’s something in the data you think might be particularly interesting for me to explore deeper.

If you haven’t ever browsed Uses This, or even if it’s just been a while, go check it out. The hundreds and hundreds of interviews and lists there are great fun to explore. If you’re interested, you can find my code and data at github.

I love it when things I like come together. Today, it’s my hobby of utilitarian hobby coding combining with my enthusiastic and occasionally proficient video gaming. I’ve played Destiny for a couple of years as my primary gaming diversion, and now play Destiny 2 pretty regularly.1 I try to be conscientious about playing intentionally and keeping track of my play.

In the course of play, Destiny and Destiny 2 drop a lot of loot, some of which is important, rare, or particularly fun. I want to associate special memories with some of them, like the armor piece that dropped after a spectacularly fun PvP match, or the weapon rewarded for completing a quest just in the nick of time with a clutch move by a team member.

I will sometimes make a notes in my Day One or paper journal about having a notably good time in a game, but my hobby coder side always wondered if there was a way to make something more systematic. Bungie provides a pretty sophisticated API that has enabled an ecosystem of stats trackers and item managers (the latter of which are extremely useful, even necessary; my favorite is Ishtar Commander). Surely I could build myself a sort of play journal using the API! I told myself, several times over the past year, but I didn’t get around to actually doing it until I had some spans of free time over my winter holiday.

As usual for me and these kinds of things, just getting OAuth to work properly was a pain in the ass. After that it was a matter of tinkering over a handful of days to piece together a useful understanding of the API endpoints that I needed to use. Unfortunately for my intended use, the information returned with game inventory doesn’t include a datestamp, so it’s not straightforward to make a dated list of all my characters’ awesome equipment in a single go.

So I built a short script and several fish shell commands that 1) update my OAuth token, 2) fetch my current complete inventory, 3) compares it to the previous inventory, 4) pulls out the new items, 5) filters out the common items and leaves just so-called Legendary or Exotic gear, 6) and deposits that smaller, filtered list in a json-formatted document.2 I can run this series of operations whenever I want to update my “journal” and then annotate the records I care about with notes, about who I played with, what activities we ran, and anything else I want to remember.

Here’s an example from one of these “diary” files:

{"item":"Tarantula","type":"Legendary Linear Fusion Rifle","hash":2502422775, "notes": "Maximum power linear fusion. I haven't played much with these so will give this one a try (have a few other copies). I'm not sure what this can be infused into, anyway."}
{"item":"Out of Options","type":"Legendary Submachine Gun","hash":2700862858}
{"item":"Main Ingredient","type":"Legendary Fusion Rifle","hash":3445437901, "notes":"Masterworks max power Main Ingredient from a clan engram. This one is a keeper, though I may re-roll it from reload speed."}
{"item":"Skyburner's Oath","type":"Exotic Scout Rifle","hash":4255268456, "notes":"Xur is in town! I didn't have this one - from the exotic engram. I think I have the ornament sitting in the vault from like week 1."}
{"item":"It Stared Back","type":"Legendary Sword","hash":1018072983, "notes":"Masterworks It Stared Back! Ran the raid from a Calus CP today with several of the clan, had a great time, and we got it done."}
{"item":"Emperor Calus Token","type":"Legendary Redeemable","hash":1505278293}

Along the way, I found my favorite, favorite new tool: jq. I’m relying on it extensively throughout this little system, basically to do all the lifting with the json returned from the API, both for managing the Oauth info and for dealing with inventory data. It’s a wonderful tool.

jq parses json wonderfully, and can format output for new uses, so:

for i in (ls diary*.txt)
  echo "## I played Destiny:" $i \n | sed s/diary-// | sed s/\.txt// ; cat $i | jq -r '. as {item: $item, type: $type, notes: $notes} | if ($notes | length) > 0 then " * **" + $item + "*** / " + $type + "\n    * " + $notes + "" else " * " +  $item + " / " + $type end '
end

… produces this snippet of formatted output, excluding the items where I haven’t made any notes:

I played Destiny: 2018-02-15

  • Shepherd’s Watch / Legendary Sniper Rifle
    • Today was a good day to play Crimson Doubles! Really, really fun games tonight, mostly winning big: I went 4, 15 and 6 KDA. Warlock rifts everywhere, Uriels and Better Devils, lots of grenades and some pretty cool nova bombs. This was fun.
  • Cadenza-43 / Legendary Pulse Rifle
    • The TWAB today says pulse rifles are coming back to the meta… so we’ll see! I have some of just about everything ready to try our further. (Your time will come, Autumn Wind.) I also need pretty badly to do some vault cleanout: currently at 190200 slots and have a bunch of duplicates and others to take care of. Will have to spend some time with DIM this weekend.
  • Perseverance / Legendary Auto Rifle
    • A couple of these have dropped but I haven’t tried them. I like the name.

This is really fun! I run my string of commands every time I want to make an update, then I can annotate the output in my current editor of choice.3 At some point I’ll push that output into some nicely-styled calendar, much more like a real play diary, perhaps with an integration to actual play time during the period depicted in my log. (That data is also available via the API; picture a heatmap by day or week along with the entries, maybe images of items from the manifest, too.) I have half a mind to try to make it a small web app usable by more than just me.

A fun side effect of building this is figuring out how to move items around in my inventory along the way. Nothing makes me feel more like a hacker than typing something into a shell and watching my Hunter equip a sweet rocket launcher in a video game. Ultimately, in my quest to be thoughtful about my game time, I learned a bunch about working with json and oauth and made something that multiplies my enjoyment of both the gaming and journaling that I do. I’m calling that a win.


  1. My list of non-Destiny games to play is getting longer, though! [return]
  2. I’m so pleased that almost the entire workflow is just a series of shell commands. The script only manages OAuth and performing one of the actal API calls, and all the other work is done at the shell. It’s a neat example of the power of flexible, loosely-joined *nix-based tools. [return]
  3. Currently I’m heavily into vim at home, though at work I’ve recently picked up emacs and org-mode (again) via spacemacs. [return]

Apple Music dropped New Multitudes, an album by Jay Farrar, Wil Johnson, Anders Parker, and Jim James into my stream. As with Billy Bragg’s and Wilco’s Mermaid Avenue, New Multitudes is a collection of songs written using Woody Guthrie’s archive of previously un-performed lyrics.

The first track, “Hoping Machine,” really captured me. Here’s a bit of the striking lyrics:

Don’t let anything knock your props out from under you
Always keep your mind clear, let your plans come out of mistakes
These are the plans and nothing can tear down
Made out of things that have already been torn down

Whatever you do, wherever you go
Don’t lose your grip on life and that means
Don’t let any earthy calamity knock your dreamer and your hoping machine
Out of order

👍 Liked: Life Stack by Aaron Parecki

Made some minor style/format updates to better present some microformat data and be less confusing for webmentions.

At some point this will become something other than a blog about blogging, one presumes.

👍 Liked: one million mentions

Just testing sending likes via webmention.

One million webmentions is a pretty great milestone for the indie/homebrew website community. Thanks and congrats to all the folks who build and support the tools and infrastructure to enable this.

Over three years ago I spent a long weekend building my very own, basic but functional webmentions implementation. When I switched the site to Hugo from my homegrown pile of static-blog-building scripts last year, I put rebuilding webmention support way, way on the back burner, and never got back around to it.

I really wasn’t fully geared up to make that system work with Hugo, so today with this writeup from Daniel Goldsmith I used the webmention endpoint from Pelle Wessman, to rebuild all of that functionality in a couple of hours!1

👍!

It should now be easy to post comments here via any system that will send webmentions, such as one’s own indieblog site, as well as via replies to entries that are syndicated to my micro.blog feed. This is cool!


  1. Looks like I have a couple of metadata/microformat adjustments to make so that my mentions appear correctly on the other side. Stand by. [return]

I’ve been using micro.blog now for a couple of weeks and finding that I really enjoy the way it provides a hub for both short status updates as well as pointers to longer writing. While not at all a direct analogue, It’s filling some of the feed created by the shutdown of Minimal Reader, which I had used for several years.

It’s full of people doing their own things. All this energy reminds me a lot of the early days of app.net as well as the time when tilde.club was really on fire: Tons of bubbling excitement over writing things, building things, sharing things, and meeting people with a common bent toward all those.1

There’s a distinct indieweb feel, right down to the bones of Micro.blog architecture meant to enable things like webmentions. This is very cool, so today I dusted off the parts of my brain that remember, vaguely, how those things work and tuned up my little piece of the indieweb, again.

As some others around the place are noting, I’m not quite to leaving Twitter yet, either. But I’m enthused by a platform that has a solid code of conduct and provides a lot of connective architecture for making new networks.

All this new connectivity is inspiring in a number of ways, so I’ll be trying to write more frequently2 as well as share bits and pieces of other things I’m working on.


  1. Not surprisingly, I’m running into some of the same people who populate/ed both of those places, and even caught sight of a couple folks from the TextDrive days. Something something early adopters? [return]
  2. Sharp observers will note the nearly three years of posts that fit on this single blog page; suggesting that previous such efforts have been … inconsistent. But! [return]

Hi. I’m trying microblogging, I guess. This should be syndicated over to my joint at micro.blog.

It’s an interesting experience to pass through most of a season in a new place — in this case, a temporary and somewhat unsettled place. We have been out of our house for two months, due first to a Christmas-time trip north, and, since New Year’s Eve, due to remodeling making it virtually impossible to live in our house.

After returning to town and expecting to find the house habitable, we spent one surprising and very, very bad New Year’s Eve paying an absolutely exorbitant rate for the last motel room in town: A filthy and despairing place where we woke early and left as soon as possible, settling finally in the place where I woke today. Since the first of January, we have lived in a small but clean room at a long-term stay hotel, two adults, a kindergartner, and a year-old dog in a one-room space with a tiny kitchenette.

We are ready to go home again, and as of today, it looks like home is ready for us, or just about. To be clear, there’s still a lot of work that needs to be completed, but the final milestones will mostly wait on the completion of our new countertops, which could be a few more weeks. So at this point, mot of the very dirty (so dirty) and disruptivve work is complete, so — back home we go! We won’t have a kitchen sink or dishwasher or stove for a while, still, but we will get by. I will have my fast internet, and my coffee machine, once again.

We figured out how to go about our lives more or less normally — gym, work, school, etc — albeit with a lot more driving and a lot more dog time. The pup has gone just about everywhere with one of us, and we are lucky enough to be able to work from home, so we have traded off spending work days with the dog in order to keep her from barking too much at the hotel. When we run errands or go out together, she goes, too.

We are all looking forward to having a little more private space once again. For one thing, this living arrangement has been very bad for work-life balance. We have both had way too many 5am conference calls, or early starts just to recover some time that we know would be claimed later by driving across town, dog walks, kindergertner time; all the things that can fit more seamlessly into life at “home” but that take more time when fit into the constraints of living somewhere else. That said, being in close proximity for so long is a good motivator to develop some discipline and focus: I can’t just go to the other room to read for a while, so I have to put on my headphones1 and get it done right there, right then. So life goes on, and there’s a lesson in that for us.

We found a few new routines, too: After picking up my son from school on cold afternoons, we often made cocoa for him and took iPads and laptops down to the hotel lobby, where he could sit by the fire with cocoa and Minecraft, and I could have a beer — Goose Island IPA, $2 all the time may be the best thing about this place — and catch up with work or play of my own.

In January we had our tenth greatest snowfall on record, and while we didn’t need to shovel out at the hotel (aside from clearing the cars), I had to make several slow cross-town trips to keep the house clear so that the crews could get to the place and work. From deep winter, we have gradually turned toward spring: the days have grown longer, light coming up to the sky earlier while I sit at Starbucks with a coffee some early morning. On Jan 1, we woke up to a few inches of snow; and today woke up to a skiff. That feels like a nice bookend, like we didn’t pass entirely out of winter in this liminal place, despite the feeling that spring is getting close.

We didn’t expect to spend our winter like this, but so it goes. I have been at times frustrated, exhausted, demoralized at the combination of living conditions, obstacles at work, and things just not being the way I like them to be.2 Yet each day I am one day older, whether I am in the place I want to be or not. I have tried to be very aware that it is my privelege to be able to chose how to live each of those days.

Looks like we will complete the move-back-in process in another day or so. It’s going to feel so good to make coffee in my own house (albeit in a bathroom, because we don’t yet have a) a sink or b) working electrical outlets in the kitchen).


  1. I have listened to so many podcasts and watched a ton of solo Netflix in the past couple of months, all with my super AirPods, which are basically always at hand, now. I listen while walking the dog on our circuit around the hotel complex, catching a few minutes at a time, so easily and effortlessly. Those suckers are worth every penny to me. [return]
  2. And, of course, while managing (with a great contractor) through a significant construction project at our house. [return]

A little over a year ago, in a fit of pique over the thought of re-learning how to program my obtuse thermostat when its batteries died (again), I replaced my thermostat with an Ecobee 3. It’s great, for all the reasons people say.1

That’s not what this post is about, though. The Ecobee web site offers a timeline that shows furnace activity, which I like to check out. But I don’t love logging in to Ecobee site and clicking through three screens to get, so I spent several hours learning how to use the Ecobee API to download the same data and plot it for myself.

In the above plot, the red/orange line is the inside temperature, and red is where the furnace is burning. The horizontal grey lines indicate the temperature set by the thermostat, and the blue line is the outdoor temperature. This is basically equivalent to the way ecobee presents this data in their control panel, with the exception that they just show a horizontal bar above the entire plot to show when the furnace is burning or fan is on. I prefer to have that integrated so I don’t have to scan up and down to track furnace time against temperature. And of course, I don’t have to log in and click through to get to my picture, because it’s sitting on my web server and refreshed every fifteen minutes (which is the data refresh interval from ecobee).

Usually you can see a normal cycle of warming up in the morning, then fluctuating around the set range as the outside temperature increases during the day, until cooling to a low temp threshold all night long. Here you can see where I inadvertently set the “away for now” setting and forgot to disable it, so the temp hovered right at 62ºF for a day, repeatedly warming and cooling around that range until I realized what was happening and switched it back to normal mode.

I think it’s all pretty cool.

You can do a ton more with the ecobee API, including set the temperature. I may play with that in the future: I’d like to have a quick command to, say, boost the temp by just two degrees for half an hour. Having quick access to a shortcut that would do that for me would be pretty cool.


  1. I know people love the Nest, but for me the Ecobee is superior: For one, it can be wired more flexibly than the Nest, allowing for full operation without “power siphoning,” even with a three-wire thermostat line (disclaimer: this requires jumping the fan and burner wires – which was quite fine at my place until I got around to running more wire). And it comes with a remote temperature/motion sensor for more comprehensive temperature monitoring, which, thanks to a recent firmware release, can also be hooked into HomeKit for motion sensing events. [return]

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.