My Experience with the Dvorak Keyboard Layout

I’ve been happily using the Dvorak keyboard layout for more than 25 years. I switched because I thought typing faster would be a benefit in my career. I can type faster, and it also reduces the strain on my wrists. It does have some drawbacks though. If you had asked me before writing this post I would have told you that I love it, but now I’m not so sure. How I switchedIt seems pretty reckless in...

Read More

Optimal Code Reviews

I am a strong advocate for code reviews. They have many advantages including improving code quality and team communication. On the other hand, they take a lot of time and add yet another delay to the development pipeline. With the wrong team culture, they can create hard feelings and discourage honest collaboration. This is a heavy price to pay, and yet, I’ve seen many teams that do them without e...

Read More

Switching from Google Podcasts to Spotify

Back in September Google announced that Google Podcasts will be shut down. It is supposed to remain available until April of 2024 and be available for exporting data until June. I chose not to wait. I have been using Spotify happily for music for years now, so I decided to give it a try. I didn’t do any research or look for other options. I had some confidence that it would be a reasonable option ...

Read More

Announcing Pragmatic Potato Software

I am very pleased to announce the launch of my new company, Pragmatic Potato Software. Pragmatic Potato is helping customers with software architecture and development. We can help with architectural investigations, software design, development process, interviewing, and even development. You can find out more about the kind of services we’re offering on our spiffy new website: pragmaticpotato.com...

Read More

Using Architectural Decision Records

Architectural Decision Records are a simple technique that promotes good architectural thinking and better collaboration. They don’t need to be big or complicated to be effective, but they do take some time, and are yet another step between setting goals and delivering value. If you use them in the right circumstances they can be a big help. What is an Architectural Decision Record?An Architectura...

Read More

This Blog: Hexo-generated static site hosted on GitHub Pages

A couple of years ago I switched this blog from a WordPress site hosted on GoDaddy to a statically generated site. The new setup is faster, more secure, and cheaper to operate. And it was easy to do! Static vs Dynamic websitesWordPress is a very popular blogging platform. You can use it hosted on WordPress.com, or any number of other web providers that offer it. Because it’s open source, you can a...

Read More

Review: Grammarly Premium

I spend a fair bit of time working on this blog. More than I probably should given my unimpressive view metrics. It does help me to crystalize my thoughts and practice articulating points that are important to me, but I’m spending an awful lot of time doing it. Ultimately, I write because I enjoy writing. I just wish I could spend less time per post. For a while there I was getting hammered by ads...

Read More

Getting Unstuck Without a Rubber Duck

Building software is a mostly creative endeavour, and as such, it sometimes resists progress. No matter how hard you try to push forward, if you are truly stuck, continuing on the same path is unlikely to work. Fortunately, there are a few different tricks you can use to get going again. Take a restThe easiest way I’ve found to get back on track is to take a break. When in the office this was ofte...

Read More

Choosing Powerful Names

A junior developer needs to strengthen their technical skills to advance. An intermediate developer needs to strengthen their organizational skills to advance. Senior developers need to master these and also demonstrate that they can move multiple teams forward together. Influencing people (and especially developers) is no easy task, but a positive reputation can do a lot of the heavy lifting. One...

Read More

Case of the Slow Matchmaking Routine

The most challenging bug I’ve ever fixed was a performance issue in a matchmaking routine. Matchmaking is the process of finding players to compete against each other in a video game. An excellent matchmaking algorithm doesn’t just stick players together randomly; it tries to make the game more fun by balancing power levels and preventing anyone from waiting too long for a match. About six weeks b...

Read More