Nik Kantar 2022-04-12T00:00:00+00:00 Nik Kantar Understanding Developer Interruptions Why interrupting a programmer is even more costly than you think, illustrated by u/nkukard. 2022-04-12T00:00:00+00:00 This is a sequel to a previous post.

Understanding Developer Interruptions

(The original post is here.)

Programming Sucks and Is Amazing It’s true. 2022-04-01T00:00:00+00:00 Peter Welch’s “Programming Sucks” is one of my favorite things ever written.

Today I discovered Sam Stokes’ “What programming is like” and I like it as a sequel.

The Mix Has Died Before even launching the publicly available version of, I’m shelving the project. 2022-02-08T00:00:00+00:00 As New Year’s Eve 2021 came in the midst of the pre-vax part of the pandemic, I didn’t exactly have any wild plans. As such, I got a little tipsy, fried and ate something like two pounds of bacon, and built the current version of The Mix Never Dies. It is a blog-like website generated daily from a script that pulls in my Spotify “Liked Songs”.

Since then, I thought it would be cool to have this script actually generate and synchronize a playlist in my account, so that I could share it easily, since that isn’t possible at the moment. And I thought it would also be cool to have it be a web app available to other people as well.

So I built the vast majority of all that, and this v2 is now probably a weekend of concerted effort away from being fully launchable. But I’m not going to finish it.

Because fuck Spotify.

It’s always been a platform hostile to musicians, commoditizing their work and reimbursing them in peanuts at best, but its continued doubling down on backing content that spreads misinformation is too much even for my admittedly lazy self. I have no business expanding its reach in any way.

It’s a huge bummer on the personal front, as I’ve actually invested quite a bit of effort into this whole thing, but such is life.

I’m going to archive the repo and think about what else I could do with the domain. I’m a little partial to it since it’s the very first domain I ever registered, way back in 2005 or so.

Remember: your time, energy, and money have impact. Spend them wisely.

Reversioning mdut I goofed up the CalVer implementation because I had the dumbs, and now I’ve fixed it. Oops. 2022-01-16T00:00:00+00:00 A short while ago, I released mdut, and even wrote about it. Amidst all the excitement of a new shiny, I somehow managed to use the wrong CalVer implementation—YYYY.minor.micro instead of my preferred YY.minor.micro.

Since I’m reasonably sure I’m literally the only user, I’ve yanked deleted the five current versions from PyPI and releasing a new version, which is all documented on the package's history page.

If you somehow have any of the 2022.x.y versions, please uninstall them before reinstalling 22.x.y.


Introducing mdut I made a tiny tool for generating Markdown URL tags and want to tell you about it. 2022-01-08T00:00:00+00:00 I write a fair bit of Markdown. It powers all the content on this site and it’s all over GitHub and Slack, where I type most things I don’t type in my text editor. In the course of all this Markdown writing, I often find myself wanting to link elsewhere and then generating Markdown URL tags. While they’re not terrible to type out, it’s a bit tedious to have to:

  • switch from the editor to the browser,
  • go to the relevant web page in a browser,
  • copy the URL,
  • switch back to the editor,
  • paste the URL,
  • switch back to the browser,
  • view page source,
  • find <title> tag,
  • copy its contents,
  • close the tab,
  • switch back to the editor,
  • paste the title!

So now I don’t have to!

mdut is a tiny little tool for generating Markdown URL tags from a given URL. It functions as both a standalone CLI tool and Python library.

Here’s what the CLI interaction looks like:

$ mdut
Copied to clipboard:
[TODO]: "Example Domain"

And here’s how to use it in Python:

>>> import mdut
>>> mdut.reference("")
'[TODO]: "Example Domain"'

And here’s how I use it from inside Neovim:

nnoremap <Leader>mr :!mdut -s reference 
nnoremap <Leader>mi :!mdut -s inline 
nnoremap <Leader>ms :!mdut -s slack

The sequence Space, m, r drops me on the command row ready to paste the URL and press Enter to execute it, and then I can just paste it!

And that’s pretty much it. You can see more in the repo, and the package is available on PyPI.

Not Aristotle I was today years old when I learned that “my favorite quote of all time is a misattribution”. 2022-01-03T00:00:00+00:00 I was today years old when I learned that “my favorite quote of all time is a misattribution”.

2022: The Year of Habits Shifting away from specific goals to a more meta—and hopefully sustainable—approach: yearly themes. 2022-01-02T00:00:00+00:00 For half a dozen years I’ve been setting some professional-ish goals and largely not completing them, primarily because I’ve never actually prioritized doing that. It’s time to try something new.

Courtesy of Mike Crittenden, I learned about the concept of yearly themes, and it really resonated with me. I came upon it around the same time as I started getting back to inbox zero, and thought it would be a good experiment.

If you can’t be bothered to watch the above video—even though it’s only 6:23 long—the idea behind yearly themes is to pick a theme for decision making throughout the year. For example, in a year of reading you might kill time waiting in line by reading—or listening to an audiobook—instead of playing games on your phone. Easy enough!

I’ve never really done New Year’s resolutions, primarily because no one ever really sticks to them—myself included. For some of the most common ones—e.g., losing weight—I’ve done rather well (no, really) at times even unrelated to the tradition, but long-term consistency has always been problematic. I think a major component of that is that I’ve always used a one-off carrot to motivate myself, and achieving the goal to some meaningful degree has taken away most of the motivation each time. What I haven’t done is think of these things in terms of habits.

I’d like to change that, because I don’t think it’s beyond me to meaningfully improve. After all, the aforementioned weight loss and progress in therapy over the past two years have shown me I can do Hard Things™, and making them stick is the next logical step.

Of course, I still might run into the issue of motivation vs. discipline, but there are ways around that, too.

Some Habits

By now I imagine you’re probably clamoring for anything concrete about what I actually want to do. Here are some ideas, along with some tentative metrics one might call “success”:

  • Exercise regularly, perhaps to the tune of three times per week. Cycling, lifting, burpees, jump rope, super long walk, whatever.
  • Build a good side project cadence, both on a micro level—hack on something once per week—and macro—it’s OK to take a month off.
  • Read regularly, ideally at least three times per week for half an hour.
  • Journal frequently, which is something I used to do with great results, and would like to again, multiple times per week.
  • Groom daily, because neat facial hair looks so much better on me than this month-old scruff, and genuinely improves how I feel and think about myself, which reflects on everything I do.
  • Ask questions all the time, primarily at work, but honestly in all (appropriate) circumstances
  • Think in terms of habits for everything else I do.

Let’s Go!

2022, your ass is grass. :D


Goals for 2021 in Review Half a dozen years later, another wrap-up. 2021-12-29T00:00:00+00:00 Last December I set some goals, and it’s time to take a gander at how they went.

First, the scorecard:

  1. Writing: Publish Four Featured Posts: ✗
  2. Reading: Read at Least Two Books About Software: ✗
  3. Software: Project Housekeeping: ✗✓✓✓

Score: 0/3 or 3/6

1. Writing: Publish Four Featured Posts: ✗

Interestingly enough, my writing here went in the exact opposite direction: more but shorter pieces. I’m quite alright with that—it’s still a net positive, and perhaps even better overall.

2. Reading: Read at Least Two Books About Software: ✗

While it’s not really even close to finishing two books, I have actually made some headway on one. Given how much of a struggle reading has been for years, I don’t care about the lost point—it’s a huge personal win.

3. Software: Project Housekeeping: ✗✓✓✓/✓✓✓✓

Rather predictably, what went best was the actual software writing part of the whole deal. I effectively moved on from one project and completed the other three, which feels pretty great.

3.a. Launch Microblot v1: ✗

Microblot was a somewhat manufactured need, apparently, as I eventually realized I no longer cared about it. I’ve unchecked automatic renewal for all four domains and don’t expect to get back to the project as it stands.

And that’s OK.

3.b. Launch Starminder v2: ✓

Starminder got the v2 rebirth it deserved. It turned out rather differently than I initially anticipated, but I’m super happy with it!

3.c. Publish Parsenvy v3: ✓

While I was debating whether Parsenvy was worth keeping around, a whole bunch of lovely people decided for me by contributing to v3. So that’s a thing that happened.

3.d. Rebuild ✓

I haven’t quite gotten around to writing it up, but this very site got its promised update as well. Since it deserves its own post, I’ll leave it at that for now.


While the score—0/3 or 3/6—is nothing to write home about, I’m not disappointed. It’s been quite a year in ways not covered in this post, and far from unconstructive professionally. However, I think it really cemented my conclusion that how I’ve approached these annual goals isn’t really all that valuable beyond giving me something to write about twice per year.

That’s why this sixth edition is the last in this format. I’m still thinking through the details, but starting with 2022 I’ll be doing something different, which will hopefully encourage a more concerted effort to own up to these ideas.

But that’s another post already. ;) Happy New Year!

Bandwidth There’s a limit to how much we can handle. 2021-09-27T00:00:00+00:00 I like to do stuff. You probably do too. As does just about everyone else. But there’s a limit to how much of it we can actually do. Our bandwith isn’t infinite.

There are only so many things we can be doing at any given time—too many and it becomes a never-ending to-do list full of anxiety. And there’s also a limit to how big those things can be—too big and just starting feels intimidating and futile.

Sadly, I don’t have any mind blowing thoughts or suggestions. I just wanted to type this out so I can maybe remember it the next time I feel bad about having reached my limit and still wanting to do more. Because I think that I’m actually doing pretty well. And you probably are too.

figurine of combination of dumpster fire and "this is fine" memes

“Growing apart and losing touch is human and healthy” DHH wrote something poignant in 2018 and here it is. 2021-09-18T00:00:00+00:00 DHH wrote something rather poignant in 2018 and I frankly mostly just want to echo it in its entirety.