Greater Than, Less Than, What’s the Difference?

Thinking big by thinking small

I had a professor once (actually the finest I’ve ever known) who insisted to his students that “programming is all about the little details”. In my view, what he meant by this is that regardless of the project, methodology, people involved, or what-have-you, if the software doesn’t do what it’s supposed to do, it’s most likely the result of someone, somewhere, failing to account for a few little details. Not that those few details are necessarily easy or hard to identify (or rectify)—the point is that tiny discrepancies in code can have tremendous impact.

Case in point: our ship date is nigh, looming upon us like a brick wall in the middle of an interstate. We’re about ready to let this thing out the door, when we discover oops, that module X that we built two months ago, the one that we’ve had the requirements signed off on three separate times, isn’t quite right. Essentially,
Behavior ‘foo’ should result when incoming_date is > existing_date
should read:
Behavior ‘foo’ should result when incoming_date is >= existing_date

There are some additional details which only add to the headache, but I’ll spare you those.

Better Living Through IDEs

I’ve recently been playing with Ruby on Rails and Ruby in general. One of the first things I do when looking at a new language is check out what development tools exist. Coming from Visual Studio, I like to see that there is a fully featured IDE available for me to develop with. I did a little research, but came up short of exactly what I was looking for. So, I put out a question to the comp.lang.ruby group asking for help finding an IDE*. One result of my question was an ensuing debate about how useful IDEs are. How useful are they? Are they only for beginners?

Objects - Ruby vs. PHP

I was teaching my husband some programming in PHP (meanwhile, I’m learning Ruby) and wanted to find something he was interested in to use for examples. He is an avid player of the game VS; and I have resigned to a "if you can't beat 'em, join 'em" mentality and started to play too (Geez, I was tired of being ignored!). It’s a pretty complex game, but kind of fun once you learn all the rules.

I found it to be a pretty good problem area for teaching. There are plenty of if/else statements to learn about conditional statements, operators and entities that can serve as objects and interaction between card, player, opponent etc.

I’ll keep it simple, there are few more attributes I could put in this class, but this suffices for illustration of Ruby and PHP.

A basic card has a name, cost, text and id string.

My office needs an ice cream truck!

Ah yes, summer is coming to an end, but those ice cream trucks still come around sometime in the early afternoon. Yeah, I typically notice them on a weekend, at home, just when I am trying to read a good book. They are loud, their music annoying at best and they tend to hang around for too long, waiting for kids to bring their parents' cash in exchange for some over-priced ice cream. The music keeps going while they wait. It's really just about impossible to focus on anything till that truck has moved on.

I want one of those to stop at the office. Every day!

Alright, alright, someone is clearly losing it here. This is obviously a ridiculous idea. We cannot possibly even think about taking this suggestion seriously. The noise is disruptive and loud, nobody will be able to get any work done. Meetings get interrupted, people will goof off taking their ice cream breaks. I just really don't get, why anyone would even think about - Wait, stop right there.

I realize, it sounds crazy.

CodeSnipers Generation-2 [Admin]

Good morning,

CodeSnipers has been growing like crazy. We're steadily getting more and more hits and I consider the launch a success. We have made it into the top 100k blogs on Technorati, so that means someone finds what we're saying interesting... even if they don't agree. As a result, I'm looking to expand the site a bit in selected areas.

Officially, no additional CodeSnipers will be added until the end of the month. But, in order to find the right people early in this process, I am extending an open invitation to be guest contributors. The same guidelines will apply (listed below) and we may not publish your piece, but I will make sure you get feedback. If your piece gets published, your personal blog/website will be mentioned along with a short (one paragraph) profile which you can submit.

Technology in the face of Disaster

I am at a standstill for any interesting php or ruby topics today. Like many people, I have been stunned by the disaster of Hurricane Katrina. So please indulge me in speaking what’s on my mind today. Lately whenever I read any blog any where, I skim quickly looking for any mention of the hurricane, somehow just desperate to see how it affects others.

I felt as I did after Sept 11, 2001. Stunned and sad. I didn’t personally know anybody killed by either. I have some family and friends near New Orleans, Louisiana, they are OK.

The biggest problem though this disaster was communication. What do you do when the power goes out? Everything comes to a standstill. Even with a generator in your home, you still have no contact with the outside world. My generator won’t power the cell phone tower that I would need…or the newspaper press, the television station, the ISP.

Double-Byte Safety Primer

A lot of incorrect string processing goes unnoticed when your software only deals with single byte character sets. Once your software gets used in a Far Eastern locale, there are numerous new problems that can show up, but might still be rare. Understanding the underlying multi-byte string function issues goes a long way to getting your software ship-shape.

I'm not talking about localization, I am talking about just simply having your English program work on Japanese or Chinese Windows. In other words, even though all of your menus, dialogs and message boxes are still in English, you might have bugs because of Far Eastern pathnames and other text that affects your program.

Dynamically Generated SQL Stored Procedures

One of my favorite MSDN articles has been the key to saving countless tedious hours manually creating the select, insert, update, and delete stored procedures in SQL Server 2000 for web applications: Peter W. DeBetta and J. Byer Hill, MSDN April 2003, Automate the Generation of Stored Procedures for Your Database.

Some developers prefer not to use stored procedures for various reasons, but I agree with Douglas Reilly who essentially concludes that if you don't need to worry about switching from SQL Server to another RDBMS, and if some of your procs have complicated processing in them, then generally it is advantageous to use SQL stored procedures over ad hoc SQL.

Micro ISV Mistake #4

This is the fourth in a series of posts on common Micro ISV mistakes. I’ve been using the series as an opportunity to identify where I went wrong and figure out how to get back on track. I’m also hoping someone out there can learn from my mistakes and start out leaner, faster, and stronger.

Have you ever said “We”, when you meant “I”? Have you ever worried what would happen if a customer found out how few staff you actually have?

Mistake #4 is being “professional”.

Makin' Pie

Well, must be the season for wrapping up development cycles. As evidenced by other entries (by Alex and Keith) I’m not the only one looking forward to the winding-down of another successful product.

Only our development cycle ended in July, so we’re a few months late. Sue me.