Stephen A. Fuqua (saf)

a Bahá'í, software engineer, and nature lover in Austin, Texas, USA

The word “confirmation” is used by some in a spiritual sense, something akin to signs and portents: an experience that validates, proves, or explains a previous feeling, decision, or action i.e. “… ask for you all divine guidance and confirmation in the very important work you are directing” [1]. It is natural to ask, “what is the agent of this confirmation?” To the traditionally theistic, that answer is obvious: God. To the athiest, the answer is probably something along the lines of “Whoso seeketh out a thing with zeal shall find it.” [2] (self-fulfilling). Truthfully, my attitude towards the concept has traditionally been dismissive.

Continue reading…

A friend just wrote to me, asking about agile. He’s been seeing software job posting with the vague request/promise of “agile” in them, wondering what the big deal is. Initial reaction: if no specific methodology or agile principle is cited, then at worst they are glomming on to pop culture, at best they want to make sure you can

  1. handle changing requirements,
  2. deliver prototypes and/or working code frequently,
  3. take an iterative approach to documentation, coding, and testing.

“Being agile” means both that you aren’t going to freak out at the lack of a locked-down, step-by-step waterfall process, and that you aren’t going to go cowboy and give the client a product at the last minute, with no conversations or demonstrations between the initial requirements “gathering” and delivery.

Ms. Dudzinski’s 9th Grade English class. Grade: 94. Current observations: I was very into politics (this was shortly before the ’92 election), and somewhere I had learned some demagoguery that would later serve me well in debate class. The overall point I was trying to make was and is sound, but on rediscovering this recently, I couldn’t help laughing at my (ignorant) scare-tactic of running out of oxygen. And where did I get this “con-environmentalist” term? The assignment was clearly intended as an exercise in persuasive, opinion-based writing. The lack of citations is irksome to me.

Continue reading…

I’m not a spontaneous guy, so for me to do two spontaneous things, out of schedule, in the same week, feels quite liberating! And it is a good reminder that letting myself become too regimented is a sure sign that I’m being pulled too far into the rat race, into the humdrum existence that I’ve always dreaded. Building a trail and listening to Texas folk-rock are good cures for that.

Continue reading…

This devotional program was presented at the Bahá‘í House of Worship on September 5, 2010. Before going upstairs into the temple, I joked to my friend that I wanted to go downstairs to the bookstore, to be material before being spiritual. The architecture is inspiring enough, but the devotions and music were, well, heavenly :-).

Continue reading…

I’m writing a class with several methods that take integer input. The input values cannot be less than zero. Since we’re not on .Net 4.0 yet, I’m manually writing code contracts (that is, my functions check preconditions, e.g. before doing anything else, I write something like…

if (sequenceNumber < 0)
{
    throw new ArgumentOutOfRangeException("sequenceNumber", "Sequence number must be 0 or greater");
}

This got me thinking: why don’t we ever use unsigned integers? Seems like having a uint would better communicate the requirement, and would simply not allow a negative number. The main answer seems to be that casting between uint and other data types, which is inevitable, is ugly. And that uint is not CLS compliant. Even though I’m not trying to write CLS-compliant code at the moment, I think I’ll stick with int — because that is our existing convention, and I don’t see enough reason to change the convention.

Stephen’s first law of diagnosing problems in production should have been: make sure you actually know the scope of the problem. We have a process that checks for duplicates in an inbound file. Records marked as duplicates are not moved into production. A refinement of the process was installed this week. All the sudden, e-mails showed that thousands of records were being marked as duplicates. I came over to help investigate, and found people looking at code, trying to figure out what was going on, because they knew without doubt that these records were not in fact duplicates.

But we needed to step back and ask what is the scope of the problem? We looked at the e-mail with the duplicates, picked a name or two from the list, and looked in the original input files and confirmed that they were not in the files. So how/why were they reported? But then let’s set that aside, and ask: did all of today’s records make it into production? If yes, then we have a problem but not a crisis. The answer was yes: we could see a 1-1 match between inbound file and outbound production data. Therefore, we have a minor reporting problem, but the core of the system was working just fine. Panic averted.

So what was the cause? A staging table that had not been truncated after a previous file was processed. All those records were being reported as duplicates.