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.

Subscribe
5 Reasons to Contribute to Open Source

5 Reasons to Contribute to Open Source

It’s October, and Hacktoberfest is in full swing! It’s a great time to contribute to open source. I love open source software and the open source community, and I think contributing to open source software has lots of benefits for professional software engineers. Here’s 5 reasons you should contribute to open source software.

Continue reading…
Make Your Source Code Developer-Friendly

Make Your Source Code Developer-Friendly

Is your source code developer-friendly? Developers talk about user-friendliness of applications all the time, but don’t often think about whether their own source code is user-friendly. Code tends to rot over time. The documentation gets out of date, configuration files change, little “hacks” are put into place… Eventually, it gets so bad it takes days for a new developer to get his environment set up. And along the way, he has to talk to two or three gurus that know all the little tricks to make things work right. As code ages, it becomes less developer-friendly. As developers, it’s our job to counteract that tendency.

Continue reading…
LogRun: A Running Log in Google Sheets

LogRun: A Running Log in Google Sheets

I made a training log in Google Sheets!

Even in the age of Fitbit, GPS running watches, and Strava, a training log in a spreadsheet is a useful tool. Because it’s a spreadsheet, it can be used to analyze data in ways that websites and apps can’t. Also, it can be incredibly motivating to set a goal and record your progression over time.

Continue reading…
Code Reuse and Simplicity

Code Reuse and Simplicity

The Myth of Code Reuse, a quick video by Iain Lowe, became quite popular on Reddit in /r/programming a few weeks ago. I think the reason for it’s popularity is obvious. Lowe talks about the amount of time developers invest in making code “reusable” with interfaces and abstractions, only to watch that code be replaced a few years down the road. Many professional developers have worked with legacy code bases that frequently use these types of abstractions (designed for “future-proof” code), but found the code to be more complicated than necessary and difficult to work with.

Continue reading…
Tips for a Great Resume

Tips for a Great Resume

Your resume says a lot about you. Perhaps more than you think. I’ve looked at a fair amount of resumes and when I read a resume, I’m not only interested in the experience that’s listed. I also look at how well the person communicates their ideas in a clear and concise format. A well written and easy-to-read resume can make a good first impression, and a poorly written resume can definitely hurt you.

Continue reading…
6 Questions to Ask When You Interview for a Software Development Position

6 Questions to Ask When You Interview for a Software Development Position

I recently completed a job search where I had the pleasure of interviewing at several companies. Throughout the process, I developed and refined a list of questions to ask the companies I interviewed with.

I’ve also spent a lot of time on the other side of the interview process, and I’m often surprised when the candidates I’m interviewing don’t have any good questions prepared to ask me. They should want to know how we do things here! Asking good questions during the interview process helps both parties find the right fit, so I decided to share some of the best questions I’ve found.

Continue reading…
My Favorite Windows Software

My Favorite Windows Software

I recently had to reinstall Windows on one of my personal computers. Although I hardly ever use Windows anymore, I keep it around in case I need to run some software that isn’t compatible with Linux (my primary OS).

After reinstalling Windows, I needed to re-install all my favorite programs so things are there when I need them. In the process, I kept a short list of all the Windows software I like to have installed. Most of it is free or open source, so have a look. Maybe you’ll find something useful.

Continue reading…
Why Are My Tests Failing?

Why Are My Tests Failing?

Have you ever tried to diagnose a test failure and had no idea what’s broken? Maybe you were looking at something like this:

Failed asserting that false is true.

Or, equally as bad:

java.lang.AssertionError
  at ...

These are pretty bad failure messages. They have the bare minimum amount of information you might get from a failing test. They tell you something’s broken, and probably give you a line number or a stack trace, but that’s all. They don’t give you very much useful information. In the spirit of Google’s Testing on the Toilet, this is my own rant about one way you can make your tests better.

Continue reading…
How Much Faster Does a New SSD Make a 2012 MacBook Pro?

How Much Faster Does a New SSD Make a 2012 MacBook Pro?

How much faster does a new SSD make a 2012 MacBook Pro? A lot.

I recently upgraded a 2012 MacBook Pro with a new SSD, and I was blown away by the results. The computer was nearly unusable before the upgrade - it took more than two minutes to boot and about 30 seconds to launch a program like Chrome or Safari. (Although once it finally started, it wouldn’t be too bad to do something simple like surf the web.) Apparently (as you’ll find in comments all over the internet), lots of older MacBooks suffer from really slow responsiveness when running newer versions of macOS. Luckily, the problem can be fixed pretty easily by replacing the OEM hard drive with an SSD – after the fix, the MacBook Pro boots in about 25 seconds and launches programs almost instantly. Overall, the SSD made the computer about four times faster when doing disk-bound operations like booting up or starting a program!

Continue reading…
Hour of Code 2017

Hour of Code 2017

The Hour of Code is an annual event to encourage Computer Science education during Computer Science Education Week. I participated this year by volunteering at an elementary school, where I spent about an hour introducing the students to computer programming through Scratch. I think Scratch is a great way to introduce people (both young and old) to programming because it is simple enough that beginners can get started very quickly, but also powerful enough to create good-looking games (like this Flappy Bird Clone).

Continue reading…