Tuesday, October 20, 2009

Poor design sends $19k in tickets to unlucky driver

alabama xxxxxxx license

You've heard the horror stories: X-Ray machines that deal out lethal doses of radiation or large medical machines with automated movement that start lowering on a patient and don't stop. Luckily this story isn't one of those.

But it does involve poor design which threw $19,000 in tickets to a driver Alabama with a license plate reading "XXXXXX":
"Racer X's" vanity plate just does not compute in city computers — and it's helped him rack up about $19,000 in tickets in Birmingham, Ala.

Scottie Roberson bought a vanity plate with seven X's to pay homage to his racer nickname. But that causes a bit of a snafu when parking patrols put the plate into the system. Officials usually put seven X's in place of the number for cars without license plates.

Sure it's not as bad as the German driver who racked up 15 violations in 11 minutes, but at this point this guy is getting billed for as many as 10 tickets a day.

The real question here is "who designed this system?" Besides the fact that this system doesn't use null values appropriately to denote missing information is the fact that someone assumed that 7 X's would never be used. Where was this design requirement? The fact is simple: whoever made that call made a faulty assumption that was not duplicated system-wide - for instance in the plate creation system.

But the real issue here is not bad programming. It is lack of desire for good programming. There is a huge difference between someone creating a "while not EOF" loop without a "move next" (been there, done that*) and someone doing this. It shows the developer (or at least the spec designer) doesn't care.

The first question that should be asked here is "do we know that 'XXXXXXX' will never be a valid value?" If that question isn't asked, I have to believe the person is not a developer by desire, but one because it pays the bills. Because any true developer asks these questions and strives to make great code even though bugs come with the territory.

And the best part: the state will have to pay for code design, coding, testing, verification against other systems, etc. just to stop the inconvenience of one man. It's just amazing what one developer who just wants to make a buck so he can get home and watch reruns of M*A*S*H can do for the bottom line.

*At least this one is always found in debug mode and very quickly.

Friday, September 11, 2009

Just what the world needs: more programming languages


Make your own programming language. It sounds cool, but why? Do we really need more complexity in this world, or do we need to find simpler ways to deal with the complex?

Monday, August 17, 2009

IPhone not good for carriers?

apple iphone money
Hmmm... could this be a situation of sour grapes? It seems carriers who partner with Apple over the iPhone are losing money over the deal. Uh, say what? My bill jumped $30 per month due to the required data plan. As popular as the device is, I have to wonder how bad these companies must be at business to lose money on a device that guarantees at least $30 on top of a regular phone plan.

Wednesday, July 29, 2009

The easy way to include in vbscript


This isn't a VillainousMind project, but it is a project I am working on for another group. The idea is to use VB Script (the tech is pretty locked in) to do some work on migration of several applications.

The problem is the majority of the code is in a "common.vbs" file and only the app specific stuff needs to go in an app file. VBScript does not have an include method so one has to be created. There is a lot of stuff out there that is good, but as it requires the calling file to implement a solution each time, the code cannot be placed in the common.vbs. As such, since every app-specific script will require this method, concise code is the main concern.

For brevity, I knocked all the source I found down to a method in one, painful line:
Private Sub IncludeFile (filename)
  ExecuteGlobal fso.OpenTextFile(fso.BuildPath( _     fso.GetParentFolderName(WScript.ScriptFullName), _
    filename), 1).ReadAll() '1 = ForReading.
End Sub

This requires a global variable (most processes in the common.vbs will want to use this variable so I made it global)
Dim fso: Set fso = CreateObject("Scripting.FileSystemObject")

Finally, to include a file, just call this line:
IncludeFile("common.vbs")

It's ugly, but using VBScript in 2009 is ugly too. This way everything is succinct and easy to use.

Tuesday, June 16, 2009

Opera unite - another company joins the party



Well, it appears that Opera is joining Apple and Microsoft by creating similar functionality to the Locura Media Server. Unfortunately it appears it works only in the Opera browser. It seems there are always limitations with these applications, whether it only works on an iPhone, with Windows Media Player, or the Opera browser. That wouldn't be too great for PSP owners or Firefox users.

Well, keep trying, Opera; you'll get there.

Thursday, June 11, 2009

Project natal on jimmy fallon



Jimmmy Fallon, John Krasinski, and Stephen Moyer had a chance to play with Project Natal, lucky devils. After covering this innovative product last week, it seemed only right to show it in action. It's almost as cool as the new iPhone.

Tuesday, June 2, 2009

Is microsoft actually innovating?

microsoft logo

You know, Apple has usually been the innovator and Microsoft has just been the feature updater. To give an example, when Microsoft thought we should have computer power in our phone, Microsoft made a computer in our phone: no real thought, they just shrunk it down. Apple came out with the iPhone. It shares an engine and design with Macs but runs and acts as an entirely different device.

But this is almost always how it has been. Apple looks at their products as solutions to problems. Microsoft looks at their products as ways to add features. For example, no one wants an iPod. They never have. What people want is to hear the right song at any given moment in time anywhere they are at without any device whatsoever. With today's tech, it can't be done.

So what does Apple do? They realize the need (the customer's music anywhere without hassle) and find the best way to make that happen from start to finish including iTunes making people want a "thing" to fill their need. Then they add the style because they know that people will associate their need and this device.

It's like Steve Jobs said at the WDC in 1997: "You've got to start with the customer experience and work back toward the technology - not the other way around." He realizes that it's not a product - it's a solution. Carmine Gallo said it very well in The Presentation Secrets of Steve Jobs (p. 67):
Nobody really cares about your product or Apple's products or Microsoft's or any other company's, for that matter. What people care about is solving problems and making their lives a little better.

But what does Microsoft do? They say "People want iPods" so they try to make a better iPod by adding a larger screen and WiFi. The just didn't get it. They rarely do.

Now there have been exceptions. Microsoft made .NET which, although it is somewhat of Microsoft's "enhancement" on Java, it is a major enhancement. C# is a language the way it should be: correct garbage collection, easy syntax, cross-language compatibility, true object orientation, and on the list goes.

But typically, Microsoft doesn't innovate: they copy; they enhance. But lately they have had a couple items come up that make me think there might be a few people at Microsoft that have seen the light.

microsoft sideshow

The first is their take on SideShow. Now Engadget seems to think this is just warmed over PR, but I think it's the future. Sure, availability and economy of devices is always the issue on these types of projects and that may kill this one, but I still think dedicating a screen to it's true purpose and pulling controls where they belong is the way things will work in the future. Maybe Microsoft is just ahead of the curve, but, none-the-less, it's the way it should be and if it's the way it should be, sooner or later it's the way it will be.

x-box natal

The second is Project Natal for XBox (which some say they actually advanced acquired tech from 3DV Systems although Microsoft denies this). It is awesome. I had first covered it on another blog wondering how good the tech is on it. According to Engadget it was accurate at tracking movements and impressive to the point it was "a little eerie".

This is the future. It goes back to my previous point about finding the tech for the ultimate solution instead of just trying to improve on existing ones the way Sony did with it's new motion controller. Yawn! I liked it the first time I saw it... when it was called a Wiimote.

So, Microsoft: keep up the good work. These ideas are actually restoring my faith in you. Remember: don't build a better mousetrap; design a way to eliminate mice.