RSSAmplifier

Blog

Mike Kasberg's Blog

mikekasberg.comRSS feed ↗98 posts

Latest posts

Vibe Jam 2026: Astropilot VR

Astropilot VR is a 3D VR game for mobile phones that I vibe coded in a single weekend, as part of Vibe Jam . The game is a single HTML file (with embedded JS) that’s about 5,000 lines long, built primarily with Kimi K2.5 in OpenCode . I think the game’s really fun to play, and I hope you give it a try , but here I want to focus on the technical aspects and the vibe coding experience. I was pretty…

Doing My Taxes By Hand, with AI!

I’ve been doing my taxes by hand (on Free File Fillable Forms ) for several years now. I prefer doing my taxes by hand over using tax software because it’s actually not that hard to do it by hand, I learn a little more about how taxes work along the way, and I hate companies like Intuit and don’t want to pay them any money to prepare my taxes for me. This year, it was easier than ever with the…

Vibe Coding From My Phone with OpenClaw

Wow, what a wild year it’s been! Claude Code was first released only a year ago , though it feels like it might have been a decade. The progress on LLM developer tooling has been unreal, and it really feels like there was a big shift a few months ago, around November, when Opus 4.5, Gemini 3 Pro, and GPT 5.1 all came out. These models were notably better than the previous generation. Around the…

Dotfiles Secrets in Chezmoi, Without Password Headaches

I’ve been managing my dotfiles with Chezmoi for nearly five years now, and I love it! Chezmoi fundamentally changed my approach to dotfiles with templating, making it easy to keep my dotfiles working on multiple machines and even multiple operating systems. And Chezmoi’s integration with password managers made it easy to keep important identity files like id_rsa synced and backed up while…

Vibe Coding in The World's Largest Hackathon: Building GPXTrack.xyz

I got pretty excited when Bolt.new announced the World’s Largest Hackathon . I saw not only an opportunity to build something cool, but also – and perhaps more importantly – an opportunity to gain experience building something with AI tools. A hackathon’s the perfect place to explore the capabilities of AI tools because it let me lean in to vibe coding experience. I used the AI for many more kinds…

Optimizing Zsh Init with ZProf (and Switching to Mise)

I’ve been noticing for a while that on my personal laptop, new terminal tabs/windows were very slow to start (more than a second). It bugged me a lot since I knew something seemed wrong, but I’d been putting off digging into the problem for a long time. A few days ago, I finally took some time to investigate! I’m glad I did, because I found some low hanging fruit that ended up saving more than two…

How to Dual-Boot Ubuntu 25.04+ and Windows 11 with Encryption

I’ve been writing about how to dual-boot Ubuntu and Windows with encryption for a long time. I first wrote about it back in 2020 , where I described a four-part process with 19 total steps to get dual-boot working with encryption. The process was very complicated, involving manual setup of LUKS. In Ubuntu 24.04, the process got significantly easier due to a quirk in the installer that allowed you…

How to Install Ubuntu Linux on a Nimo Laptop

In my previous blog post, I reviewed a Nimo N153 R5 6600H Laptop . In the review, I mentioned that I installed Ubuntu Linux on the laptop. As a follow-up, I wanted to write a quick tutorial about how to install Linux on a Nimo laptop. I believe this guide should work on any Nimo laptop, from the lightweight N151 to the Beefy N172 or even the mini PC DNB20 . The N151 is very inexpensive and could…

Laptop Review: Nimo N153 R5 6600H

If you’ve read some of my past blog posts (like My $500 Developer Laptop or The Best Computer You can Buy for $100 ), you might already know I enjoy finding good technology on a budget. So when Nimo reached out to me to see if I’d be interested in reviewing one of their laptop models, I was really excited! Nimo sells laptops primarily online, and takes pride in offering lower prices than many…

I Fought the IRS for Over $12K – and WON!

This is a story about how I overpaid my 2021 taxes due to an error in TurboTax and spent nearly three years trying to recover more than $12,000 from the IRS! I began writing this back in 2022, in the midst of frustration with TurboTax and the IRS, but waited to finish writing and publish it until I knew the ending. And I’m happy to say that although I had nearly given up hope, I successfully…

Recovering Data from a 2015 Mac SSD with a $5 Adapter from AliExpress

I worked on a fun little project recently to recover data from my wife’s 2015 MacBook Air. Although that might not sound terribly interesting, the way I ended up using an adapter is one of the most ridiculous things I’ve ever done with a computer. So of course, I had to write a blog post about it. Several weeks ago, my wife’s 2015 MacBook Air stopped working. It wouldn’t turn on, even when…

Ghostty on Ubuntu: First Impressions and How to Install

Ghostty came out today! I’ve been following the development on Mitchell Hashimoto’s Blog for a while, and I was excited to give the terminal a try. First Impressions Ghostty is great! My first impression was that it looked exactly like Gnome Terminal, with a slightly different color scheme. That’s not a criticism, that’s actually high praise! Mitchell has written on his blog about the importance…

How to Dual-Boot Ubuntu 24.04 - 24.10 and Windows (10 or 11) with Encryption

Dual-booting Ubuntu and Windows with encryption for both has been possible for a long time, but has always been difficult. Until recently, the Ubuntu installer supported encrypting Ubuntu (with LVM) or dual-booting with Windows, but never supported automatic partitioning for encrypted dual-boot – and therefore required manual LVM partition setup to achieve encrypted dual-boot. I wrote a long blog…

Better Related Posts in Jekyll Using AI

On any blog, it’s really common to link to related posts near the end of an article. It keeps readers on your website by linking to another post they might be interested in, and it can help with SEO. For a long time, Jekyll has provided site.related_posts as a convenient way to link to related posts. Unfortunately, the default implementation just lists the ten most recent posts (which might not…

Learning to Solder: A WLED Project

I’ve been thinking for a while that it would be fun to add some kind of color-changing LED mood lighting to my home office. As I was researching different products, I quickly stumbled across the WLED project. WLED was immediately appealing to me because of my love for open source software. It’s highly praised on various blogs and YouTube videos, and I was confident that the software quality I’d…

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

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…

Buying Used Computers: A Story and Some Advice

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…

Scalaing Challenge Leaderboards for Millions of Users

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…

Home WiFi Upgrades: Adding an Access Point with Wired Backhaul

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…

Analyzing Static Website Logs with AWStats

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…

Catching Mew: A Playable Game Boy Quote

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…

My $500 Developer Laptop

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…

How to Test and Optimize Your Home Wifi Coverage

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…

3D Printing Map Figurines with GPS

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…

3D Printing the Strava Logo

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…

3D Printing with OpenSCAD

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. There are a…

3 Months of 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,…

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

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 for a TV always is right? The location wasn’t ideal. People tend to put their internet cable modem near their TV because that’s where the coax outlet happens to be, not because that’s where they actually want their internet modem. I wanted to move our cable…

How to Fix "Pending update of firefox snap"

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,…

Monitoring Gross Income with Lunch Money

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…

How I Updated jekyll/classifier-reborn for Ruby 3

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…

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

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…

The Best Computer You Can Buy For $100

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. Related posts about finding the perfect computer: 2019-05-03: Computer Shopping: The Ultimate Developer Laptop…

How to Fix Firefox Crashes on Ubuntu 21.10+

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.…

How to Find a Humidifier that Actually Works

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…

Solving Wordle with Programming

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…

Iterating on Club Leaderboards

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…

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

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…

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

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…

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

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…

Docks and Ubuntu

Laptop docks are great! As I wrote about in The Ultimate Developer Laptop and My Home Office Setup , I’ve been using a Dell TB16 thunderbolt dock for about two years now, and I really love it. The dock makes it so much quicker and easier to connect my laptop to all the peripherals on my desk. And that’s important to me because it makes it feel easy to take my work to another part of the house or…

DisplayLink Docks and Ubuntu

Can you use a DisplayLink dock with Ubuntu? And, more importantly, should you ? I recently researched this for a dock I wanted to buy for myself, and here’s what I found. If you’re thinking about getting a DisplayLink dock for your laptop, you might not even be sure if the dock will work with Ubuntu. Well, there’s good news! I used a Plugable UD-6950H with Ubuntu without problems, and it seems…

My New Bash Prompt (PS1)

I recently spent some time improving my bash prompt. I already had a lightly customized prompt, but wanted to see if I could find something I liked that provided even more information. I’ve known about powerline for years, but never actually sat down to experiment with it on my own machine, so that’s where I started. I installed the Ubuntu Mono Nerd Font and installed and configured…

Scalaing Club Leaderboard Infrastructure for Millions of Users

Sometimes, we work on shiny new features that (we hope) athletes will notice and love. Other times, we need to work on back-end improvements that are unlikely to be noticed at all, but are usually just as important as the other things we work on. Some recent work I did for our club leaderboards fell into the latter category — unlikely to be noticed, but really important for the scalability and…

My Dotfiles Story: A Journey to Chezmoi

When you’re a developer (or perhaps even a normal power-user), you seem to acquire a bunch of custom config, scripts, and tools over time. Often, these are little snippets. A one-liner command alias that you paste into ~/.bashrc . A custom format for your PS1 prompt. A default setting for Vim. Then, at some point, you get a new computer, and you realize you want all the config that was on your old…

How to Install Pi-hole on Orange Pi / Armbian Boards

I’ve already written a review of the Orange Pi Zero . As it turns out, this little board is perfect for running your own Pi-hole ! It’s probably even better than a Raspberry Pi! The cheapest Raspberry Pi you can get with a wired ethernet connection is the Raspberry Pi 1 Model B+, which is listed for $28.95 at PiShop.us (as of May 2021). In contrast, you can get an Orange Pi Zero 512MB for $16.99 +…

Learning to Program by Making a Game

This year, Computer Science Education Week will be December 7-13, 2020. In honor of CS Education Week, I wanted to write this blog post about the first computer game I wrote, and what I learned along the way. I was about thirteen, and this story picks up near where I left off in my previous blog post about my first computer program . When I wrote that blog post in 2017, I was working mostly from…

Building Local Legends

In late 2019, Strava’s product development team began forming ideas about a new way to compete on Strava. Strava segments have always provided a way to recognize athletic achievement through a form of racing. Now, we wanted to also recognize the grit that goes into training. Those athletes who are out on the trail every day, rain or shine, striving for more. Local Legends is the result of these…

Unsubscribe Me: How to Disconnect from Internet Chaos

The Social Dilemma came out about a month ago and got a lot of people thinking about the influence the internet and social media have on their daily lives. I’m a programmer, and I’ve worked for an internet advertising company, so none of this was new information to me. But for a lot of the American public, watching The Social Dilemma was an eye-opening experience into the ways that internet…

How To Set Up a Ruby Dev Environment on Ubuntu Linux

Setting up a development environment correctly might not seem like a big deal at first, but an incorrectly set-up environment can cause a lot of problems down the road if you’re not careful. In my experience, the internet’s full of solutions – both good and bad – for environment problems, but often does a poor job of explaining why a solution’s good or bad. And installing Ruby can be tricky if…