Spot the Bug

February 10th, 2008

A future exam question: Identify the elementary programming error in the following actual output from a real web store.

Bonus credit: describe both the quick emergency fix for the problem, and the longterm fix for the problem.

Greetings from CellularFactory.com.

We thought you'd like to know that we shipped your items, and that this completes 
your order. Your order number is ###### Please keep this number for any future 
requests

You can track the status of this order, and all your orders, online by visiting our 
page at http://www.CellularFactory.com/help/shipping.jsp

The following items have been shipped to you by CellularFactory.com:
---------------------------------------------------------------------
Qty      Item                   Price       Shipped      Subtotal
---------------------------------------------------------------------
1      Travel Charger                   5.89      2008-02-09      5.89
---------------------------------------------------------------------

Shipped via USPS (estimated arrival date: about 4-6 days after)
---------------------------------------------------------------------
Item Subtotal
5.89
Shipping & Handling:
3.99
Total:
9.879999999999999
--------------------------------------------------------------------

This shipment was sent to:

Read the rest of this entry »

Yes, the Feeds are Broken

January 14th, 2008

This weekend I finally noticed that the Atom and RSS feeds from this site are 404. I’m not sure why exactly yet. It may have to do with the upgrade to WordPress 2.3.2 or it my be a result of the switch to shared hosting on pair.com. I’m out of town at the moment but I hope to fix it tomorrow.

elharo.com also seems to be completely down. I’m not sure why. I may just need to reboot the server when I get home. I haven’t yet transitioned that site to pair.com. Instead it’s still sitting on the Mac Mini in my office.

Update: I think I have the feed problem figured out now. Holler if anything still looks broken. It seems that the .htaccess file did not get uploaded when I uploaded the rest of the files from the old site. Hidden files are evil.
Read the rest of this entry »

Google for Christmas

December 22nd, 2007

This morning I’m sitting at the computer pruning my address book for Christmas cards. (Yes. I’m running late.) As usual I discover a few incomplete addresses. Missing zip codes are especially common. I know there’s a zip code lookup finder on the USPS web site somewhere, but rather than Googling for it on a whim I paste an address into the Firefox location bar.

101hudsonzipcode.png

Bam! Up pops the complete address including zip code! Five or six more and I’m done. Easiest data cleaning I’ve ever done, and maybe a few more people can get their cards before New Years.
Read the rest of this entry »

Happy 30th Birthday Internet!

November 22nd, 2007

The Internet is 30 today. Exactly 30 years ago today on November 22, 1977 the first three networks were connected to become the Internet. These three were:

  • ARPAnet
  • A lossy packet radio network (the lossiness of this network greatly influenced the design of TCP/IP)
  • The Atlantic Packet Satellite Network (a.k.a. SATNET)

There were computer networks before this, but this was the first network of networks that deliberately attempted to connect heterogeneous systems without regard for platform. It was the thing which grew into today’s Internet. Except for one brief discontinuity in 1983 when the entire Internet was turned off to switch over to TCP/IP, there’s a continuous progression from then to now.
Read the rest of this entry »

Operator Overloading: Trickier Than it Looks

October 8th, 2007

In an illuminating post (formerly at http://www.jroller.com/scolebourne/ but the domain was taken over by spammers) Stephen Colebourne demonstrates exactly why operator overloading is a bad idea. Now mind, you, he doesn’t think that’s what he’s doing. He actually believes he’s making the case for operator overloading. However the mistakes he makes are exactly the sort of mistakes likely to be made by almost anyone without at least an undergraduate degree in mathematics who tries to overload +, -, *, and especially /. If you don’t know the difference between a group, a ring, and a field, you have no business overloading operators.

Now I’m not saying that one has to take a course in abstract algebra before you can be a competent programmer. You don’t as long as the language you program in doesn’t support operator overloading (or as long as you’re wise enough not to use it if it does). However since most programmers are didn’t get beyond ODEs in college (if indeed they got that far–some of my comp sci friends struggled mightily with calculus and had to retake it repeatedly), one can’t responsibly design a language that requires mathematical sophistication in the 99th percentile for proper use. Probably one should stop with high school algebra.

Features that are guaranteed to be misused should be eliminated. In the specific case of operator overloading, I daresay, the feature will be misused far more often than it will be used properly. There are only about a dozen or so cases where operator overloading is called for, and only one is even remotely common. That one is complex arithmetic, and this single use case could be better handled by adding a complex type to the language. Arguably BigDecimal and BigInteger are a second and a third. The remaining cases are so incredibly esoteric that only a mathematician or an occasional physicist could possibly be interested in them. Can anyone name even one?