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

The pbrain Programming Language

Note: I’m no longer updating this page. Please see the official pbrain page for more information. The pbrain programming language is an extension I made to the Brainf**k programming language that adds the ability to define and call procedures. If you’re wondering about the asterisks in the name of the programming language, it’s because the …
Continue reading The pbrain Programming Language

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

A Keyword I’d Like To See in C#

Although I use C# more and more these days, I still consider myself primarily a C++ developer. C# has a few really neat language features that are just now being added to C++ (like lambdas), but I still find C++ to be more expressive, with terser syntax, than C#. One example of this is deterministic …
Continue reading A Keyword I’d Like To See in C#

Update on Ripsaw

A while back I started an article series on a utility named Ripsaw. I have since gotten pretty busy with other projects, and the only extracurricular thing I’ve worked on in the meantime is the lesson series on how to play “Spanish Fly”. I was also waiting for Visual Studio 2010 to hit release, but …
Continue reading Update on Ripsaw

Ripsaw Library Implementation

In this installment of the Ripsaw article series we’ll start putting some actual code into an implementation of the COM interfaces that we specified in the last article. For those of you who just joined the series, Ripsaw is a log viewer for Windows, similar to the Unix tail utility. This series of articles details my rewrite of the application from the ground up.

Ripsaw COM Interface, First Pass

In this installment of the Ripsaw article series we’ll finally get to write some code. We’ve already gotten a pretty good idea about how we want to implement the core Ripsaw library, so now we’re going to define enough of the COM interface that we can create a simple test script that will eventually be …
Continue reading Ripsaw COM Interface, First Pass

Refining Ripsaw’s Design

In my last entry in the Ripsaw article series, I discussed some of the design goals for Ripsaw. In this article I’ll flesh out the design a little more and discuss specific implementation possibilities. To bring you up to speed, Ripsaw is a log-viewing utility for Windows that I initially wrote about six years ago, …
Continue reading Refining Ripsaw’s Design

A New Article Series: Ripsaw

Several years ago I wrote a Windows application called “Ripsaw” that implemented the basic functionality of the Unix tail utility in a graphical application, with a few twists of my own. I had intended to release the application as an open-source project, and although I still use the tool quite a bit I never got …
Continue reading A New Article Series: Ripsaw