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
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…
My First Program

My First Program

On the StackOverflow Podcast, they always ask their guests on the show how they got introduced to programming. Whenever I listen to that segment of the podcast, I always think back to my first experiences with programming, and how I built on those to get where I am today. I like the podcast segment a lot, and I think it’s fun to share these stories. So, in honor of Computer Science Education Week, I’m going to write a blog post about some of my first programming experiences.

Continue reading…
Hacktoberfest 2017

Hacktoberfest 2017

Hacktoberfest is a project sponsored by Digital Ocean and Github that encourages contributions to open source software. Anyone who contributes at least 4 pull requests to open source projects on Github during the month of October will get a free Hacktoberfest shirt for their participation.

This year, I participated in Hacktoberfest for the first time as a project maintainer. After learning about the event, I decided to create several issues in my Container Immersion project (which I wrote about in February) with the Hacktoberfest label, inviting new developers to help out. Initially, I was surprised by the quick response of several people willing to help. This is probably the best benefit of Hacktoberfest - it creates an environment where people are actively looking for projects to work on, and projects that normally wouldn’t receive much attention are given a chance to gain exposure and receive contributions from the community.

Continue reading…
How To: Deploy a Simple Java Web Service with AWS Lambda and API Gateway

How To: Deploy a Simple Java Web Service with AWS Lambda and API Gateway

AWS is incredible technology, making it easy for anyone to deploy a web service without needing to worry about managing servers. In this quick tutorial, we’re going to see how to deploy a simple web service to AWS Lambda and make that service available on the internet with AWS API Gateway. Let’s get started.

Continue reading…
Bufferbloat?

Bufferbloat?

Have you ever noticed your internet connection get slower when uploading a large file? I have, but I never put too much thought into it or realized I could do anything about it… Until I stumbled upon this blog post from a systems engineer at Ookla (the company behind speedtest.net). As it turns out, there’s a term for this (bufferbloat), and this is an easily solvable problem.

Continue reading…
Why CI?

Why CI?

In recent years (and in some cases, for many years), Continuous Integration (CI) has been taking off. Almost any open source project you look at is using some kind of CI tool like Jenkins, TravisCI, or CodeShip. In the simplest cast, the CI server is just running unit tests. In more complex cases, the CI server runs unit and integration tests, produces a build, and maybe even deploys the software.

Continue reading…