Nik Kantar


2024 (3) Light Mode
The macOS Calendar app looks pretty atrocious in dark mode, and doesn’t offer a setting to force light mode, instead always following system settings, but there’s a way around that.
Recalibrating Goals for 2024
Sometimes life comes at you fast, and it’s probably a good idea to recalibrate.
Goals for 2024
What do I want to achieve in 2024?

2023 (22)

Adafruit Circuit Playground Express as an “On Air” Light
I made myself a super rudimentary on-air light from a gizmo I got in my PyCon US 2019 swag bag, and here’s how you can do it too.
Nik’s Issue Tracker
I’m building myself an issue tracker and would like to try documenting the process a little bit.
TIL About shlex.split
Today I learned about shlex.split and it’s really cool.
Muscle Memory Is Wild
Sometimes your mind and body learn to do things without conscious effort so well it’s downright weird.
Masking Is Inclusivity
As time goes by and we all get increasingly tired of masking to reduce the spread of COVID-19, we should be mindful of whom we leave behind by reverting to “normalcy”.
Favorite Command Line Tools
I’m a heavy command line user and have over the years found some favorites worth sharing.
Hire Me! (v.2023.08)
It’s time for my next role. Is it with your company?
North Bay Python 2023: The Afterfeels
North Bay Python is back in business and I’ve got things to tell you about it.
Colophon: July 2023 Edition
I’ve got a reasonably ergonomic stack for this site at the moment, and I’d like to tell you about it.
See You at North Bay Python 2023
I’m going to North Bay Python 2023 and hope to see you there.
Just a Camera
I’m going to try using my actual camera for (more) things after mostly letting it languish for four and a half years.
Rebound 2023: Big Syc
I rode some gravel and it was life changing.
Markdown URL Tag Bookmarklets
I started doing most of my writing in a GUI editor and wanted something “closer” than my command-line utility mdut.
Not Just Tech
This blog will henceforth be about more than just tech, reflecting me.
Self-Hosting: Resolved?
I tried hosting my own stuff and failed.
Boolean Properties in Python: A Pitfall
I love using class properties as boolean flags, but occasionally forget the @property decorator.
Garage Detector
Every time I mount my bicycle on the roof rack on my car, I risk demolishing it on the way back home. I think I have an idea for the solution.
Getting Nothing Out of a Python Dictionary
A bit of nuance about dealing with null and missing values in Python dictionaries.
Dedupe a List in Python, Slowly
A pretty slow way of removing duplicate elements in a Python list.
Manuals Matter
I wrote some words mostly as an excuse to also post a photo and a video.
Invisible Moments
Many things influencing us throughout our lives go unnoticed.
2023: No Goals
OK, so it’s “no *public* goals”, sorry for the clickbait.

2022 (12)

2022: The Year of Habits in Review
How’d this year’s theme go?
Solve the Problem You Have
It’s all too easy to find oneself solving the wrong problems. Here’s how I try and combat that.
Self-Hosting Follow-Up
I started going back down the self-hosting path and learned some things.
Getting Back into Self-Hosting
It’s 2022 and self-hosting stuff is cool again.
Tests Are Docs
Automated tests are documentation, and–if done well—even useful and up to date!
Understanding Developer Interruptions
Why interrupting a programmer is even more costly than you think, illustrated by u/nkukard.
Programming Sucks and Is Amazing
It’s true.
The Mix Has Died
Before even launching the publicly available version of, I’m shelving the project.
Reversioning mdut
I goofed up the CalVer implementation because I had the dumbs, and now I’ve fixed it. Oops.
Introducing mdut
I made a tiny tool for generating Markdown URL tags and want to tell you about it.
Not Aristotle
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.

2021 (16)

Goals for 2021 in Review
Half a dozen years later, another wrap-up.
There’s a limit to how much we can handle.
“Growing apart and losing touch is human and healthy”
DHH wrote something poignant in 2018 and here it is.
Simple, Easy, Complex, Difficult
Some language nuance.
Make the Important Things Easy
An old nugget of wisdom.
Moved back.
Starminder v2
Starminder is relaunching with notable changes.
Project Directions
Some of my projects are languishing and need rethinking.
Quick and Dirty Python: HOWTO
Let’s build up small Python script.
Quick and Dirty Python
Something I absolutely love about Python is just how well it scales from tiny scripts to complex systems. Here’s an example of the former.
HEY? Nay.
I got super excited for a new awesome looking email service, but it’s got a fatal flaw that has me looking elsewhere.
Newsletter, Again
It didn’t take me all that long to come back around to this, did it?
Introducing Parsenvy
I made an environment variable parsing library for Python, and forgot to tell you all about it!
Django Site Dispatch, Improved
Turns out I like this problem so much I had to solve it again.
Django Site Dispatch
Django’s “sites” framework is quite cool, but what if you need to make some exceptions?
Introducing Lucy
I adopted a cat last year, and she’s the best.

2020 (10)

Goals for 2021
Early again, some aspirations for 2021.
Python’s dict.setdefault Rocks
Python’s dictionaries are awesome, and I just learned about yet another reason that’s the case.
Goals for 2020 in Review
The longest year in recorded history (so far) is coming to an end. How’d I do?
Hire Me! (v.2020.10)
Back on the job market again, so here’s my updated “dating profile”.
Introducing Autohook
I made a little Git hook manager and some people even use it!
Introducing sus
I made a URL shortener with a static site generator.
Black Lives Matter: Venice Beach and Santa Monica
Painted boards from Venice Beach and Santa Monica on the morning of June 8th, 2020
# TODO: add comments
5 Tips for Winning at Code Comments
PyBeach 2020 Tickets Are on Sale!
You should attend!
DogTown CrossFit Blog — Member Feature: Me!
I lost a buttload of weight and got a cool shoutout on my gym's blog, and it's hard not to brag.

2019 (11)

Goals for 2020
Ahead of the curve this time, a look forward at what I'm hoping to accomplish professionally in 2020.
Goals for 2019 in Review
2019 is just about done—let's wrap it up.
Simple Is Funner than Complex
I think I've figured out why I've been having such a hard time starting to migrate my projects to the cloud.
Keynotes to Watch
I think everyone should watch these two keynotes, but especially those of us working in tech.
Write More
Write more.
Free (from) Project Ideas
I'm letting some domains expire because I have neither the time nor desire to build what I wanted, so here you go.
I'm Speaking at PyOhio 2019!
Look, I'm just bragging…
See You at PyCon 2019
PyCon 2019 is here and so are we.
Supporting Windows
It's neither ethical nor smart to ignore about half of all Python users.
Goals for 2019
About as late as last year, here is my next set of professional goals.
Goals for 2018 in Review
How did my goals for 2018 go?

2018 (10)

Hire Me! (v.2018.12)
I'm looking for my next destination. Could your company be it?
PyCon 2019 Reminder
I'm going to PyCon 2019 and hope to see you there.
North Bay Python 2018: Talks
I attended my favorite regional Python conference for the second time, saw some amazing talks, and wanted to tell you about them.
PyBay 2018: Talks
I went to PyBay 2018 and enjoyed some talks. Here they are.
PyBay 2018: See You There!
I'm going to PyBay 2018 and hope to see you there.
PyCon 2018: The Afterfeels
I went to PyCon (again) and it was amazing (again).
There's No Going Back
Years of questionable JavaScript and generally slowing web have taught me to distrust my browser's back button.
Goals for 2018
Here we are again, with a bit of a twist.
Announcing PyBeach
A new Python conference is coming to town.
Goals for 2017 in Review
Time for another look back, this time at 2017.

2017 (10)

Modifying a List in Place in Python
A neat (if questionably legible) trick for modifying a list in place in Python, and a more Pythonic solution for the same problem.
Crush Cancer 2017
Donate to cancer research and watch me do a grueling workout.
Introducing Starminder
I got tired of forgetting all about my 400+ starred GitHub projects and made a reminder app.
My New Vim Statusline
I realized my statusline was still bloated, so I trimmed it even more.
Programmer, Developer, Engineer, Lexicographer
What am I even supposed to call myself these days?
An Otter Valentine's Day
A friend and I made and you should use it to send someone otterable otters today.
Introducing VimFeed
I made a Vim planet!
My Vim Statusline
I don't use Airline or anything fancy, but my statusline still tells me everything I need to know.
Goals for 2017
This worked well for last year, so lets try it again.
Goals for 2016 in Review
Let's talk about some things I set out to accomplish in 2016.

2016 (6)

SSH Agent on macOS Sierra 10.12.2
How to make ssh-agent remember passphrases on macOS Sierra 10.12.2.
Introducing GHT.vim
I wrote a Vim plugin to help with GitHub's issue and pull request templates.
I Took the Vim Plunge and I Love It!
I started using Vim full-time a month ago and it's been great. Here are some thoughts on the transition and a few plugins that have made it fantastic.
Instagram to Abandon Chronological Feed
Instagram has announced a switch to alogorithmic feed ordering instead of the current chronological one, and I think it'll prove a problem for myself and many others.
YouCompleteMe Compilation with Little RAM Solvable with Swap
I ran into a compilation issue on my small DigitalOcean droplet and solved it with some good ol' swap.
Goals for 2016
Some things I'd like to do better in 2016.

2015 (10)

Vim + Spacegray + OS X = A Champagne Color Problem
I'd like to use the Spacegray theme for Vim on OS X, but other things look a bit wonky.
A Few Podcast Reviews
I've been listening to some great podcasts and would like to promote them.
Why and for Whom I Write
Thoughts on why I write here and who the intended audience is.
Free Project/Startup Ideas
I'd like to use these things but don't have the time to build them. Do you?
A new face for, and a slightly different approach.
Moving on.
Drupal Is a Nightmare and Done Is Better than Perfect
Sometimes you have to take your pride in doing things well and distract it while you do something badly. This was one of those times.
Programmer Interrupted
Why interrupting a programmer is even more costly than you think, illustrated by Jason Heeris.
Web Development on a Chromebook — Not for Me
I tried migrating to a Chromebook and didn't like it.
New Mac Order
Quick thoughts on Apple's fancy new MacBook.

2014 (8)

Eight Days without Blue Brother
Brief reflection on a few days without Facebook.
Sorting with Randomization
Sorting with pure chance, with some elementary stats.
Deactivating Facebook
I deactivated my Facebook account and thought I should write about it.
Introducing Metronome
I made a silly game.
Free Isn't Free
We live in a world built on software that's given away for free, and we should support it.
September to Remember
Quick thoughts on the iPhone 6/6+ and Apple Watch.
How Not to Recruit a Developer
An irritated dissection of an unappealing recruiter email.
Choosing Jekyll
Why I chose a static site generator in a sea of fancy dynamic solutions.

featured post