Arguing by-example vs. by-principle

You can argue by providing examples supporting your case.  Alternatively, you can argue by appealing to more general principles. For example, in arguing that “exposing public fields is bad,” you could say:By-principle: “It breaks abstraction and encapsulation.”By-example: “This untrusted plugin could set field m_foo to value 4 and cause a null-reference exception on line 16…


Zune’s killer feature

Zune’s killer feature (according to my 2 year old daughter) is the box. For the 4gb/8gb, the box is sturdily built and has 2 parts that slide together. Truly a product for the whole family.


It never works

Last night, right before falling asleep, I recall having some great idea for a blog entry. I was too tired to write it down, but I said the 2 word summary aloud and was absolutely sure I’d remember in the morning. Now all I remember was that the 2nd word started with the letter ‘c’….


Merry Christmas!



Grocery stores and cyclical dependency graphs

Here’s a silly conversation that demonstrates a problem in resolving cyclical dependency graphs that my wife + I had at the grocery store: Me: [looking for purchases to get in the Christmas mood] “Let’s get some walnuts ” Wife: [predisposed against the idea] “Let’s not, we don’t have a nutcracker” Me: “Well, let’s get a…


Stateless card dealing

How many times have you had somebody deal a hand of cards and then say “um, everybody count your cards”.  A common reason for this to happen is that the dealer loses count of how many cards are dealt.  For example, dealing cards to 4 players may look like: The problem is that after a…



I used to hate the expression: (A==B)==(X==Y), but I’ve grown very fond of it.  My prior feelings of contempt stem from my desire to avoid obscure language features. But I figure when properly parenthesized, this isn’t so obscure and can be pretty useful and concise. Unlike operator precedence, you don’t need to go lookup a table…


Feature Parity vs. Scenario Parity

It can be easy to miss the forest through the trees. Sometimes there are emergent properties from the individual feature items, which in turn provide some new “implicit” feature to the end-user. Such features can lead to very useful end-user scenarios, but aren’t usually captured by a specific feature list.  I find this comes up…


Tennis ambiguity

My wife and I were playing Tennis. We’re both pretty new to it and knew we were supposed to hit the ball back and forth but couldn’t remember the finer details of scoring. I thought that it was best of 5 sets.  She thought it was best of 3 sets. We learned later that Men’s professional…


Indirection is funny

In code, unnecessary layers of indirection can be confusing and lead to bug. Do you really need to write code like: ***p = ****q. However, in natural language, technically correct usages of indirection can be funny and sound sophisticated. “We need a plan for when we’ll have the plan”  “Known Knowns”, “Known Unknowns”, and “Unknown Unknowns” …