Set-Associative Cache in C#, Part 1: Analysis & Initial Design

A couple of weeks ago, I had never heard of a set-associative cache. Then, I was assigned an interview exercise on HackerRank entitled “Set-Associative Cache Optimization”. (I won’t give away the company or any details about the exercise, since that wouldn’t be fair.) Since I hadn’t heard of such a cache, I decided to learn …
Continue reading Set-Associative Cache in C#, Part 1: Analysis & Initial Design

On Recruiting

I’ll have more to say about this later, but I want to get this quote out there now so that technical leads, engineering managers, engineering directors, and vice-presidents of software engineering can have it embroidered on a pillow, printed on a t-shirt, and taped to their bathroom mirrors: The quality of your company’s software will …
Continue reading On Recruiting

Conway’s Game of Life in JavaScript

I realized yesterday that I had never implemented Conway’s Game of Life, which is something of a rite of passage for young computer-science students. As I opted for a more non-traditional path to the software profession, I somehow missed that fun, even though I’ve made a point of implementing other computer-sciency things like it. Here …
Continue reading Conway’s Game of Life in JavaScript

Becoming a Developer Overnight, In Only Five Years

“Do you think hard work can make you talented?” “Yes. I do.” This post was inspired by an article on Cal Newport’s site entitled, “The Pre-Med and Ira Glass: Complicated Career Advice from Compelling People”. That article caused me to reflect on my path to my current career. By most people’s standards, I accidentally backed …
Continue reading Becoming a Developer Overnight, In Only Five Years

Fix it. Bolt it down. Forget it.

Setting up your environment to be the same all the time, everywhere, can make it easier to focus on the task at hand. From the age of about 14 I’ve been sitting in front of a computer with a guitar in my lap. It’s been a cheap steel-string guitar, a cheap classical guitar, a cheap …
Continue reading Fix it. Bolt it down. Forget it.

Dragsens version 1.4

UPDATE: Download the latest version from the main project page. There is also a version of this utility with a graphical interface that’s easier to use. It’s time for a new version of the command-line version of the dragsens utility, which allows one to change the mouse sensitivity for detecting mouse drag actions in Windows. …
Continue reading Dragsens version 1.4

Windows Version of Dragsens

UPDATE: Download the latest version from the main project page. There is also a console-based version of this utility that’s more suitable for system administrators. In response to a comment on the previous version of the drag sensitivity utility, I’ve created a new version of the utility that includes a graphical interface and a means …
Continue reading Windows Version of Dragsens

Updated Version of Dragsens

UPDATE: Download the latest version from the main project page. There is also a version of this utility with a graphical interface that’s easier to use. I have built a new version of the dragsens utility, which allows one to change the mouse sensitivity for detecting mouse drag actions in Windows. This new version fulfills …
Continue reading Updated Version of Dragsens

My Life With Programming Languages

A language that doesn’t affect the way you think about programming, is not worth knowing. — Alan Perlis My first programming language was Basic on a TI-99/4A. Contra Dijkstra, I don’t think it did me too much harm. Of course, I did eventually “outgrow” that language. Just now I was pondering my progression through various …
Continue reading My Life With Programming Languages

George Orwell and Effective Coding

I spend a lot of time and effort trying to get better at the craft of software development. My goal every day is to fall asleep as a better programmer than the one that awoke that morning. While this involves a lot of reading and practice within the field, I usually learn more by studying …
Continue reading George Orwell and Effective Coding