Sunday, November 4, 2012

So...why the name?

Originally published July 3, 2010

I started this project two months ago. Then, after two short posts, it ended. I lacked motive. I was lazy; low blood-sugar; alien invasion. It doesn't really matter why I haven't posted again in such a long time. The important thing is, I'm posting again.

To celebrate, I thought I'd address the title of this site: Off By One By Two. The programmers reading this are asking, “why the two?” The non-programmers are asking, “why am I reading this?” To both of you, it's a strange title. Let's start with some background for those who don't think like programmers or are tired of thinking like one.

Off by one


There has been a sneaky little error in programming called “off by one.” It refers to some bad math—the sort of math I often do. Most commonly found in programming loops, it results from forgetting the inclusiveness of your range. I know to some that sounds like gibberish. You're right. To give an example many of us struggle with, let's consider dates versus days.

When we think about a date (calendar, not the fruit), it's concrete: July 12th. The trouble starts when we try to figure out how long it is until the date. I can't wait until my road trip to Apple Headquarters, some sycophants say, it's my first trip to Mecca. “How many days must I wait?”

Well, let's do “the math.” Today is July 3rd and my holy excursion is on July 12th  Twelve minus three is nine (I just blew the minds of a thousand computer scientists who've never seen a mathematical expression written in English. I'm kidding—computer scientists can't read English).

“I have nine days until Apple HQ,” they think, and the countdown begins. On the ninth day, our intrepid traveler realizes there is one day left—the trip is tomorrow. This is an off by one error.

The proper way to prepare for Mecca is to view this as an inclusive range. It's written [3..12] and means you have to include the day that hasn't happened yet—July 12th  In programming, it can result in a loop not going through an entire array or going too far into computer memory containing who-knows-what.

By two


Why the strange name? The truth is, off by one was taken in all its permutations or, at least the ones I was willing to use. However, I've had some time (not writing productively) since I started to ponder the meaning of the “by two” and how well it fits me.

The first correlation is about my school situation—two degrees. I already have an undergraduate degree in, what my engineering friends of the day used to call, “Arts and Parties.” They'd be huddled around the dorm-issued down the hall, studying what I only knew as “Diffy-Q.” They would study, groan, curse, and occasionally laugh (though never at Diffy-Q) until about two in the morning when I'd come in from drinking on a school night. It wouldn't be until some 17 years later I'd come to know Diffy-Q as differential equations. Diffy-Q sounds far less intimidating.

The real name of my degree? Speech Communication with an emphasis in radio and television broadcasting (now, called Communication Studies, evidently). I got it from Colorado State University and my credits mostly focused on rhetorical criticism, interpersonal communication, and critical thinking. I affectionately refer to it as “my B.A. in B.S.” When I could write a paper about a subject I barely understood, on the night before it was due, and get an A from a professor in the Speech Communication department, I knew I'd arrived. That was the best grade I got on a paper in that class.

So, this M.S. in C.S. Is my second degree—my “by two.”

Recently, I've added another “by two." I'm also torn between two hemispheres. In this case, I mean my brain. Okay, the whole left-brain vs. right-brain thing has been out of neuroscience fashion for a while. However, most people still believe two myths about the brain: we only use ten percent of it, and we have a left brain responsible for logic and language; a right brain for patterns and abstraction. However, it's easier for me to use this outdated paradigm to describe my studies—I”m not very good at math.

That last was a generalization. I'm actually quite competent at math (I got all A's this time around). I didn't think I would be (Speech Comm doesn't require math beyond College Algebra), but I've had to reach, as the University of Colorado at Boulder CS department calls it, “mathematical maturity.” That is, I've had to crawl and claw my way from College Algebra through Calculus Two and three credits beyond. I went 12, actually, in what I would call my worst semester.

When I say I'm not very good at math, it's with the perspective of being around a bunch of other fellows who are tremendous at math. I can get the concepts and do the work, but I have a hard time thinking mathematically. I can do it given enough time, but it's not my default behavior—I don't automagically try to solve computer problems using algorithms for efficiency or correctness. A lot of programmers don't, but my teachers were great at it and always caused me to think, “I never would've thought of that!”

So, I'm riding the line between science and the arts; predicate logic and Aristotelian logic; applied mathematics and applied for Starbucks.

That's why this is called “Off By One By Two” and is also why I write about subjects in computer science as well as everything else. Now, I'll get on with it...

No comments:

Post a Comment