Nik Kantar 2022-01-16T00:00:00+00:00 Nik Kantar 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.

Simple, Easy, Complex, Difficult Some language nuance. 2021-09-17T00:00:00+00:00 Some things in life are simple but not easy, while others are easy but not simple. What’s the difference? Let’s look at some examples.

One very relevant to me is that I’d like to ride my bicycle more, which is primarily challenged by the comfort of my bed in the morning. Accomplishing this is simple—I just need to hop on the bicycle and go. However, actually following through is not easy—my bed is really comfortable.

On the opposite end of the spectrum is cleaning and lubricating my motorcycle chain. It’s a frustratingly complex task for an apartment dweller—I have to gather everything (light, keys, gloves, paper towels, cardboard, scrubber, cleaner, lube, etc.), bring it three floors down and halfway through the shared garage to my parking spot, move the motorcycle into a more convenient position, set things up, clean and lube the chain, clean up the inevitable mess, bring everything back upstairs, and put it where it belongs…with a near 100% chance of forgetting something and having to make an extra trip. But the actual work involved is pretty easy—gathering things, walking, cleaning and lubing the chain, and going back upstairs are all rather insignificant tasks.

Of course, there are plenty of things that are both simple and easy—e.g., brushing teeth—and neither—e.g., building distributed systems.

The antonyms for “simple” and “easy” are “complex” and “difficult”, respectively. Thus, one could say that I find riding my bicycle more often simple yet difficult, while I think of motorcycle chain maintenance as complex but easy.

I’m really glad we cleared that up.

Make the Important Things Easy An old nugget of wisdom. 2021-09-13T00:00:00+00:00 On an old episode of the rather fantastic Greater Than Code podcast, the inimitable Jessica Kerr said:

“What you make easy, people will do.”
— Jessica Kerr, Greater Than Code: Episode 017 [44:11], January 31, 2017

The line has stuck with me for these four and a half years, as it’s one of the truest things I’ve ever heard, much like the obvious conclusion:

Make the important things easy.

Hindwards Moved back. 2021-08-30T00:00:00+00:00 Six years ago I moved from Los Angeles to Santa Clara, and two years later I moved back.

With the great power of hindsight, I realized that suburban life—and especially that suburban life—wasn’t for me. I missed the walks, drives, weather, attitude, diversity, food, and cars. I missed everything else, too. I missed the good stuff. I missed the bad stuff. I missed home.

LA sky

Home truly is where the heart is.