Harvest Timers and Go!

This week I put together a tiny Go project. Go’s been on my “to learn” list for years now but I’ve never quite gotten around to it. Over the summer I got as far as reading a few articles and skimming the documentation but I didn’t have the time to make anything.

I’m a contractor working, primarily, for two clients. One is an agency that has their own Harvest account for tracking time against client projects. The other client is a traditional product company, I track time and bill them with my own, separate, Harvest account. It’s a bit of an annoyance because having two separate Harvest accounts means I have to sign in twice just to figure out how many hours I’ve worked in the month so far. I created a little CLI (the CLI part is not quite implemented yet) to query both accounts, grab my monthly hours, and total them.

Strapped for time I asked Opencode to generate a basic query to an endpoint and parse the returned JSON, this outline was enough for me to go the rest of the way implementing what I needed.

You can check it out here, but unless your in the exact same situation as me, it’s likely not going to do you much good!

codeberg.org/tfantina/…

I’ve tried to eliminate the weird echo chamber of HackerNews from my life as much as possible. Interesting to see from the most 1000 discussed books only ~50 were written by women. This is exactly the sort of reason I’ve moved on from the orange site.
kottke.org/26/01/004…

Week in Review

I’ve been diving back into some Elixir projects this week; mostly small stuff. I updated Sentry and ensured it was logging at all the endpoints. Story time with this client…

Some six years ago I wired up Sentry to start tracking errors when this code base was fairly shiny and new; at the time I used free account associated with my work email. My thinking at the time was we could pilot Sentry then start a paid plan. I think the nature of this project, and Elixir in general is that it’s just fairly fault tolerant. Also, due to various priorities, budgeting, staffing, yadda, yadda I never took the time to dial Sentry in and filter the noise. Occasionally I’d dip into the account to look for a specific error, about half way through the month I’d get the email saying we’d hit our limit for the month and that was that.

I should note this is not a small client, this application is processing millions a day in revenue! On the one hand they should have been paying for Sentry years ago, but on the other hand I get it. Security is not slacking in this organization, their servers get more junk requests to stuff like /wp-admin then any other client I’ve ever worked with. This is, in no small part I believe, due to their rigorous use of bug bounty and associated white hat programs. (It’s a source of pride that this particular application has never been hacked and generally scores better than most of their tech in pen-tests). It’s interesting how a tool that is so essential to modern web-development like Sentry can be omitted for years and years; I’m confident we could have continued just fine without it but I’m also betting that if we take the time to filter the noise this is going to make the customer happier and make our lives far more simple.

Pretty quiet on here over the holidays, partially due to illness and partially just wanting to be offline as much as possible. I’d still like to get some end of year wrap-ups together.

Watching a bit of the 2009 adaptation of A Christmas Carol, which I haven’t seen before but its bad… like really bad. Wild to think that Pixar’s Up came out the same year.

Things Become Other Things

Finished reading: Things Become Other Things: A Walking Memoir by Craig Mod 📚

I slow rolled this one, it took about two months; it was such a pleasure to read I wanted to savoir it but got bitten by then falling out of the habit of nightly reading. Overall, I liked this book. The potent mixture of travel journal and biography combined with hundreds of anecdotes about Japan was right up my alley. At points I felt like Mod waxed on a bit more than necessary. It didn’t feel like filler, I felt that he struggled in points to condense his own thoughts, or that he wanted to convey something extremely pointed. Unable to find the exact notes to hit he danced around it instead. That’s not broadly true but there were segments that fell flat for me. It may just be that Mod comes from such a different background than my own, although I have a lot of empathy for him (which is the mark of good writing), I didn’t always identify with him (the mark of extraordinary writing).

For the photos alone, even the B&W ones in the mass market print this book is worth a read. But that’s true with any number of things about this book, the photos, the tour around the Kii peninsula, the factoids about Japan, I could recommend this book for any number of reasons and would heartily.

The Road Back to You... Do not read this book

Finished reading: The Road Back to You by Ian Morgan Cron 📚.

There is an old expression, “it was a book but it should have been a pamphlet”. This book was an encyclopedia and should have been a business card. From the first page it’s clear that about 90% of the book is going to be filler. It’s charitable to say I read it, skimmed may be a better term. After slogging through 30 pages I realized I was never going to make it through so I just read the descriptions and motivations for the 9 different types. Every page is crammed full of inane anecdotes, flat attempts at humor, and yes, the occasional joke that lands. At some point in the book the author starts listing famous people who are of a specific ennaegram type while providing the disclaimer; “these are just my observations”. This of course gives one pause: how complex is this system if you can watch a few interviews with someone you’ve never met and peg them as a 5? Do I really need to read a whole book on it then? Also one of the famous people listed is, literally, Bilbo Baggins; who I needn’t remind you is not a person!

Writing aside, I tend to lump personality “types” in with horoscopes and birth order, I go into this with eyes open and a healthy dose of skepticism. This was recommended to me by my therapist, in a session, which gave it an order of legitimacy that other “personality tests” don’t have. I do see the value in applying framework and heuristics to human beings, especially ourselves. Although this book is a huge turn off, I wouldn’t want to throw the ennaegram out with the bathwater (and there is so much water in this book). The two page description of each trait was interesting and gave me insight into my motivations. If nothing else this book helped to focus on motivations rather than outcomes. Several months before I read this I took an ennaegram test online but there was too much weight given to what I do not why I do it.

This book though… I read it because my therapist recommended it, professionally. Frankly if I didn’t like her as much as I do, I’d probably never speak to her again.

Today I Learned ~D[2025-12-19]

When I work in Ruby, I really miss the pattern matching of Elixir. Today I discovered a few restructuring tricks for hashes that recreate some of that pattern matching goodness from Elixir. The TLDR is that you can use forward assignment.

options = {one: 1, two: 2, optional: false}
# then later 
options => {one:, two:, optional:}

$> one
1
$> optional
false

Note the => rightward operator, aka Ruby’s old friend the hashrocket, this is called forward assignment. You can make the above more robust with a rescue clause:

options => {one:, two:, optional:} rescue nil 

In the event that somebody passes in an options hash like {one: 1, two: 2} this will prevent things from blowing up. When destructuring Ruby will return nil for optional.

Looking through my zsh configs today, all sorts of hidden and forgotten gems. Notably clobberass for recompiling Rails assets: alias clobberass="rails assets:clobber && rails tmp:clear && rails assets:precompile"

You would think the name would have made this unforgettable!