Mike Kasberg

Husband. Father. Software engineer. Ubuntu Linux user.

Mike's Blog

Notes to myself, shared with the world. A collection of projects, thoughts, and ideas — mostly about computers.

See all my blog posts, sorted by year, in my blog archive.

I Did My Own Taxes By Hand (and You Can Too!)

15 Mar 2024 · Tutorials

The US is one of the only countries in the world where everyone wastes a dozen hours every year doing their taxes. (The IRS estimates that it takes an individual 13 hours to prepare their taxes!!!) Like many others, I’ve been using TurboTax to do my taxes for years. I’ve wanted for a long time to try doing my own taxes, by hand, without tax preparation software, but I always felt too intimidated by all the tax forms (and the sheer volume of information) to actually do it, and didn’t know where to start. This year, I finally did it! And it actually wasn’t nearly as difficult as I imagined it to be – it almost felt easy. Once I got started, I got the hang of it very quickly, and I successfully filed my own tax return this year, without using TurboTax! (And in well under 13 hours!)

Continue reading…

Buying Used Computers: A Story and Some Advice

04 Feb 2024 · Technology

I’m a big fan of used computers! I often recommend them to friends and relatives, and I’ve bought several myself. I’ve written in the past about the best computer you can buy for $100, my $500 developer laptop, and used Dell Latitudes. But recently, I had a sub-par experience with refurbished computers. Having gone through that, I have some thoughts about the current state of the used computer market and some advice about buying a used computer in 2024.

Continue reading…

Scalaing Challenge Leaderboards for Millions of Users

18 Jan 2024 · on The Strava Engineering Blog

Strava challenges offer a fun way for athletes to compete against themselves and others! Back in 2020, our legacy challenge leaderboard system was running into bottlenecks and scalability problems on a regular basis, and we often found ourselves putting out fires to keep the system stable. In late 2020 and early 2021, I worked on a project to replace the old leaderboard system with a new one that could handle a much larger number of athletes competing in challenges. This blog post is about that project. I drafted most of this post when the project wrapped up in 2021, but didn’t get it published before I went on paternity leave – and then I forgot about it. I think the project was interesting and worth sharing, so I’m glad I finally remembered my draft (three years later 🫣) and found some time to put in the finishing touches and get it published! Enjoy!

Continue reading…

Home WiFi Upgrades: Adding an Access Point with Wired Backhaul

22 Dec 2023 · Technology

When we bought our house several years ago, our home wifi consisted of a cable modem and wireless router on the floor of our living room (where we happened to have a coax outlet). Over time, I’ve made a few improvements! Last year, I installed my own coax cable so I could move our internet equipment out of the living room. This was a great improvement overall, but led to bad coverage and slow speeds on my deck. To try to fix that, I got an RE-450 wifi range extender. The range extender improved the wifi on the deck, but didn’t work seamlessly with the rest of my network. So I planned some more improvements. I just finished installing some Cat-6 ethernet cable so I could add a wifi access point with a wired backhaul. I want to write this blog about how I did it, what kind of performance I got, and what I learned along the way. Maybe you can try something similar if you have wifi coverage problems in your own home!

Continue reading…

Analyzing Static Website Logs with AWStats

09 Dec 2023 · Software Development

It’s really common to add Google Analytics to your site to gain valuable insights about who’s visiting. I think most companies use Google Analytics, and because it’s free and easy many solo developers and smaller sites do too. But recently, I think a lot of people have been questioning the value. For many small or independent blogs and websites, Google Analytics is an overly-complicated product that’s difficult to use and navigate. Moreover, using Google Analytics requires loading their relatively large, bloated javascript on your site. When Google Analytics competitor Plausible was starting out a few years ago, they highlighted a bunch of other reasons you might not want to use Google Analytics. In short, there’s gotta be a better analytics tool for small websites right?

Continue reading…

Catching Mew: A Playable Game Boy Quote

26 Sep 2023 · Technology

Last week I went to Strange Loop 2023. There were many great sessions, but my favorite was Playable Quotes for Game Boy Games. Joël and Adam presented an idea for playable Game Boy “quotes” that should be (legally) shareable. (It’s worth reading How We Made Playable Quotes for the Game Boy on Joël’s Blog.) Their solution’s both clever and elegant, and uses only a few hundred lines of code (aside from existing emulators). The playable quote truly removes all the unnecessary parts of the ROM, which is important for legal reasons. Their implementation is also practical and future-proof, embedding everything that’s necessary to play the game in a single distributable file. It’s also pretty clever, using steganography to embed data into a screenshot of the game. (This revelation produced an outburst of applause at the live presentation.) While I watched this presentation at Strange Loop, I couldn’t help but think that a playable quote like this would be a great way to experience catching Mew in the original Pokémon Game Boy games.

Continue reading…

My $500 Developer Laptop

09 Sep 2023 · Technology

I’m not the first person to write about a $500 developer laptop. In fact, I was inspired by Max Rozen’s Replacing my MacBook Air M1 with a ThinkPad T480 and Getting your own good enough laptop for under $500. Like Max, I’m not only writing a blog about this – I’m actually using the $500 laptop I’m writing about as my personal daily driver. You don’t need a $2,000 computer to have a great machine for web development! The laptop I chose is a great alternative to the ThinkPad T480. (ThinkPads are great, but they’re not the only way to get an incredibly capable and pragmatic laptop on a budget.) I’ve been a fan of Dell for many years, and my $500 developer laptop is a Latitude 7490. I recently bought one to replace the Latitude e7450 I was using. Let’s see how it stacks up to the T480, and how well it works as a daily driver.

Continue reading…

How to Test and Optimize Your Home Wifi Coverage

28 Jul 2023 · Technology

I’m sure everyone’s had a frustrating experience trying to optimize their home wifi network. You put the router in a great spot for the TV, but you have bad wifi on your deck. You move it somewhere to provide better coverage for your deck, but it causes intermittent problems streaming movies to your TV. Figuring out the ideal wifi setup is tricky, and poorly documented. (But I’m hoping to provide some better documentation in this blog post!) I recently optimized my home wifi network to provide better coverage throughout my house, and I discovered some cool techniques along the way that I want to share.

Continue reading…

3D Printing Map Figurines with GPS

17 Jul 2023 · 3D Printing

Learning to create 3D models with OpenSCAD has opened a world of possibilities for me. Once I was comfortable with the basics, I wondered what it would look like to push the boundaries of programmatic 3D printing even further. In my day job as a software engineer at Strava, I work with GPS data from running and cycling activities. What if there was a way to bring that data into OpenSCAD to use it in a 3D model?

Continue reading…

3D Printing the Strava Logo

27 Apr 2023 · 3D Printing

I just added a new wall decoration to my home office, and I think it turned out great!

I got the idea to 3D print the Strava logo a few weeks ago after seeing Martin Woodward’s Octolamp. I designed and printed my own Strava logo, and it turned out even better than I expected. It’s actually really easy for 3D printers to create shapes like this because it’s just an extruded 2D shape. Vertical walls with no overhangs are a piece of cake to print. And while it looks like it uses a lot of material, it actually doesn’t – the inside is mostly air, with a small percent of infill material for support. And I got lucky with the Strava logo – I printed each part separately, allowing me to print it twice as big as I otherwise would have been able to on my Prusa MINI. I completed a fun project, got a great wall decoration for my home office (fitting since I work for Strava), and the whole thing only cost a couple dollars in filament!

Continue reading…

3D Printing with OpenSCAD

22 Mar 2023 · 3D Printing

As I mentioned in my last blog post, I’ve been getting into 3D printing recently. The deeper I get into the 3D printing world, the more I become interested in designing my own 3D models. It’s cool to print a model that someone else created, but for me it’s way more fun to print something that I created. It scratches my itch to “build something out of nothing” in a very physical way.

Continue reading…

3 Months of 3D Printing

11 Jan 2023 · 3D Printing

I got my first 3D printer about three months ago, and now that I’ve had it for a little while I wanted to write about my experience with it so far. Learning 3D printing has been a blast, but I faced some surprises and challenges along the way. It felt a bit like I was thrown into the deep end when I got started, but after about three months I finally feel like a have a good handle on the basics, and I’ve finshed several different kinds of projects. If you’re curious about 3D printing or thinking about getting into it yourself, maybe I can provide some inspiration and insight.

Continue reading…

I Installed My Own Coax Cable for My Internet Modem (and You Can Too)

22 Dec 2022 · Technology

Like in many houses, our cable modem was an eye sore on a shelf in our living room for many years. After all, that’s where the coax outlet always is right? For us, that location just happened to be the easiest place to put the modem. But the location wasn’t ideal. I wanted to move our cable modem and wifi router to our basement mechanical room to get them out of the living room, and to have more room for additional equipment near the router. But our basement didn’t have any coax outlets! I learned to run coax cable myself so I could move all our networking equipment to the basement. I’m glad I did, because I love the new setup and it wasn’t hard to do!

Continue reading…

How to Fix "Pending update of firefox snap"

21 Dec 2022 · Technology

Many Ubuntu users have recently become frustrated by the Pending update of "firefox" snap message they sometimes see when using Firefox. The message usually says something like “Close the app to avoid disruptions (13 days left)”. This is a big annoyance for users who might not want to close the app or install an update on that timeline, and would rather do it on their own schedule. Fortunately, there’s an easy solution to completely avoid this problem on Ubuntu.

Continue reading…

Monitoring Gross Income with Lunch Money

19 Sep 2022 · Technology

Lunch Money is a great tool for tracking your personal finances. I wrote about it a couple months ago in my comparison of personal finance tools. However, the way most people use it, it will track finances from your net income. That is, it will track your finances for the portion of your paycheck that hits your bank account – because it uses your bank and credit card transaction history to track your finances. And that’s fine for a lot of people, but it won’t give you a complete view of your finances. In particular, if you’re only tracking finances from your net paycheck, you’re probably not tracking your 401(k) contributions, taxes, and other paycheck deductions.

Continue reading…

How I Updated jekyll/classifier-reborn for Ruby 3

12 Jul 2022 · Software Development

A couple months ago, I discovered that the classifier-reborn gem (a popular Jekyll plugin to group related posts) was essentially incompatible with Ruby 3. I use Jekyll to build some of my own websites (including this one), and I wanted to be able to upgrade to Ruby 3 while continuing to use classifier-reborn. Although I was initially frustrated that classifier-reborn didn’t yet support Ruby 3 out of the box, I realized that I might be able to implement Ruby 3 support myself and contribute back to the project since classifier-reborn is, after all, open source software. The pull requests I submitted turned out to be some of my biggest open-source contributions yet, and I’m proud of the work I did!

Continue reading…

Mint, YNAB, Personal Capital, and Lunch Money: A Comparison of Personal Finance Tools

05 Jul 2022 · Technology

For years, Mint was the first thing people would recommend to anyone looking for a budgeting or personal finance tool. More recently, competitors like You Need A Budget (YNAB), Personal Capital, and Lunch Money have grown in popularity. Over the last couple years, I’ve spent some time using all of these apps because I wanted to explore the alternatives to Mint. Let’s explore the similarities and differences to see what might work best for you.

Continue reading…

The Best Computer You Can Buy For $100

07 May 2022 · Technology

It might seem impossible to find a good computer under $100, but you actually have more options than you probably realize. Between a Raspberry Pi, Chromebook, or used laptop, you can probably find something that you like and that suits your needs! Let’s take a look at some options.

Continue reading…

How to Fix Firefox Crashes on Ubuntu 21.10+

21 Mar 2022 · Technology

If you use Firefox on Ubuntu, you might have noticed that Firefox seems less stable in Ubuntu 21.10+ (including Firefox 22.04 LTS!). By default, Ubuntu 21.10+ installs Firefox as a snap rather than as a .deb package. Unfortunately, the snap version of Firefox currently suffers from several problems that can lead to a bad user experience – crashes and slow startup time are among the top complaints.

Continue reading…

How to Find a Humidifier that Actually Works

15 Feb 2022 · Reviews

Unfortunately, it’s really hard to find good advice about humidifiers on the internet. A quick google search for something like “humidifier advice” seems to find mostly SEO spam – things like “5 Tips When Buying a Humidifier” that contain useless tips and affiliate links to generate ad revenue. On top of that, it’s pretty easy to find complaints about problems with various humidifiers (e.g. in reviews), but hard to find solutions. Humidifiers produce dust, they’re impossible to clean, they grow mold, or they don’t actually improve humidity. Even some of the most frequently recommended humidifiers, like the Honeywell HCM-350, are despised by some consumers.

I live in Colorado, a state known for its dry air at 5,280 ft elevation. And I like to use a humidifier at night to keep my nose and throat from getting dry when I sleep. Over the course of the past two or three years, I’ve done a decent amount of research (including this YouTube video) and I’ve tried a few different humidifiers. I think I finally have a sense of what works, and I’m hoping to make this information easier to find by sharing it here! If you want to use a humidifier but don’t know where to start, or if you’ve been disappointed with problems from a humidifier you’ve tried, maybe I can help you find something that works!

Continue reading…

Solving Wordle with Programming

11 Jan 2022 · Software Development

Wordle is one of the latest crazes to hit Twitter. You might have noticed it – it’s the thing everyone’s posting with the yellow and green boxes. Wordle is a game where you have to guess the word of the day. Each time you guess, it’ll tell you if each letter appears at the spot you guessed, somewhere else in the word, or nowhere in the word. You win by guessing the correct word in 6 guesses or less.

Continue reading…

Iterating on Club Leaderboards

17 Dec 2021 · on The Strava Engineering Blog

Iteration is an important part of my development workflow, and it’s an important part of the way we work at Strava. Over the course of my own career, I’ve learned to really value the process of incremental development. By shipping relatively small changes quickly, we can gather feedback, observe important metrics, and continue the cycle with targeted improvements. Ultimately, this helps us continually deliver athlete value on a rapid timeline.

Continue reading…

What are Dev Containers, What are GitHub Codespaces, and Why Should You Care? A Practical Intro

06 Nov 2021 · Software Development

GitHub Codespaces made waves when GitHub introduced the feature several months ago. Codespaces promises a lot. It solves configuration headaches, it creates disposable environments, it can provide better performance than the laptop you’re working on, and it can better enable remote collaboration. I was interested to dip my toes in the water and see what it’s like to work with Codespaces, but that can be a little tricky to do if you don’t have access to a GitHub org that’s paying for Codespaces. Fortunately, as it turns out, there’s a very accessible alternative that’s free and easy to try, and it’s a great way to get a taste of what the Codespaces experience might be like.

Continue reading…

How I Modified a Thule Bike Trailer Hitch for an E-Bike with a 12mm Axle

10 Sep 2021 · Tutorials

Thule makes several popular bike trailers, including the Cadence and Chariot. The trailers come with the Thule ezHitch to attach easily to most quick-release or solid axle wheels, and Thule also sells an adapter to make the ezHitch fit on thru-axle wheels. This covers most common bicycle setups, but it leaves out many e-bikes, which often use 12mm solid rear axles. And that’s really unfortunate because towing a trailer is a great way to use an e-bike! I figured out how to modify a Thule ezHitch to fit on my e-bike with a 12mm solid axle, and I’ll show you how I did it below.

Continue reading…

Dell Latitudes are Great Laptops (and they run Ubuntu well)

12 Aug 2021 · Technology

I’ve written before about my own search for The Ultimate Developer Laptop back in 2019. I chose to buy a Dell Precision 5510, but I also mentioned a few other laptop models that work really well with Ubuntu. Laptop series like Dell XPS, Dell Latitude, and Lenovo ThinkPad. Well, I actually own a Dell Latitude E7450, and I’ve recently started using it a lot more often. It’s a small, lightweight laptop made with high-quality parts, and it runs Ubuntu flawlessly. Mine doesn’t have a discrete graphics card either, so I don’t have to bother with graphics drivers in Ubuntu. The overall experience is super-smooth, and it puts a smile on my face to use this computer!

Continue reading…