Saturday, August 19, 2006

T-Mobile Text Message Rip-off Catches Up With Me

I'm not one to complain much, but this one really pissed me off: starting sometime this month, T-Mobile started charging for incoming text messages. Not only is that a rip-off, but the cost was doubled for both incoming and outgoing text messages - to $0.10/message. My latest bill had $12 in text messaging charges, 40% of which were unsolicited (not from friends). Gone are the 5-cent outgoing-only days.
What does this mean? If someone out there has a vendetta against you, they can make you bleed money by sending you an endless stream of text messages. I asked customer service about how to prevent this, and they said you'd have to use their no spamming feature available through their website. Two problems I see here:
(1) They would have already charged you 10 cents before you get the opportunity to anti-spam the source.
(2) For those that don't have regular internet access, it is an unsolicited cost until you get the opportunity to anti-spam the source.
(3) The responsibility is shifted totally to the user, without recourse. A waste of my time - having to identify where unwanted text messages come from, and time spent patching up my spam filter with these sources.

I haven't used their spam filter feature, but I asked for one of four solutions:
(1) No charges for incoming text messages, even if it means trippling costs for outgoing text messages. Answer = cannot be done!
(2) A means to remove text messaging services from my account. Answer = cannot be done! All plans inherently have this feature, and it cannot be disabled.
(3) A means to disable text messaging from my phone. Answer = cannot be done! All their phones support text messaging, and it cannot be disabled.
(4) Word on whether a solution was in the works to give users the option of disabling the feature as needed. Answer = none whatsoever! The service rep had the nerve to try and sell me a messaging plan, $6 additional each month.

Do you see where I'm going with this? It's ridiculous that a service is forced on you when you don't need it, and you must pay for it. I wonder whether other wireless providers do the same, but I think the practice is unfair. Sure they might have it in their agreement/contract somewhere, but I wonder whether a court of law would honor a contract that promises death if a condition is not met.
I feel freakin' combative about this that I'm willing to do something and see how far I can push for a change. I think it's a worthy cause, something more than a few people may appreciate. Of course the juicy details of whatever I do and the results will be right here ...

Friday, August 11, 2006

Programming: Beware of JBuilder!

From my days as a novice programmer, I've always had the JBuilder development environment in my toolset. I have developed some application entirely from the IDE, and still use it on my pet project Jaspora. I mainly use it to develop applets now, mainly because it is easier to package them, sign them, and include additional resources when deploying them.
However, I have noticed the following that may cause you headache:
  1. Avoid using the trial versions that shall expire in a month or so. If you forget to licence the version and return to use it after the trial period, it will not start at all. Such was my experience with Enterprise 2006. If I'm not misinformed, I think it was supposed to revert to Foundation after expiration, but none of my license files would work.
  2. Foundation 2005 requires a 1.4 JDK environment, although you can develop 1.5 JDK compliant applications with it. JVM conflicts intermittently caused the application to fail to start on my Windows Server 2003 Standard machine.
  3. Every so often, it may fail to start because jbuilder.config is missing, or cannot find certain classes such as com.borland.jbuilder.JBuilder. Very disappointing, especially if all you did was simply reboot. I have had to reinstall to regain functionality. So now I maintain a backup of the install folder and just restore when it fails to start.
  4. Their customer service sucks. When I called the 800 number, all I got was a beep and a recorded voice telling me to record my message at the beep. No introductions, no human, no menu, nothing.
Otherwise, it is a good tool. This is a warning for programmers to beware and use with caution. The good thing is that you will retain your project properties even after reinstallation. This one feature has saved my butt!

Friday, August 04, 2006

Programming: Dumb Java Dates Gotcha

Even experienced Java programmers run into time-wasting gotcha's like this one I encountered today. In hindsight, it was almost stupid of me to not have known, but I suppose that's why the saying goes - experience teacheth a fool.

Look at the code in the graphic: very simple and straightforward. The program obtains the current date/time (line 24) and then attempts to set the time component to 1 second before midnight. It calls the function setTimeToBeforeMidnight (line 28), passing it the date/time to modify accordingly.
To reset specific components of a date/time, you have to instatiate a calendar object (line 10), which allows access to individual time components such as the day, month, year, minute, century, millisecond, am/pm marker, etc. In this example, I'm only interested in setting the time to 11:59:59 PM, and thus I only modify the hour, minute, and second components (lines 14-16). Easy, right?

Well, the output at the bottom tells the tale. Somehow I'm in the next day at 11:59:59 AM! What the hell went wrong? This will sound stupid, but a bug I had in one of my programs was caused by this simple, um, assumption. It cost me about 4 hours to find ...
The problem is at line 14! Passing the date into a calendar somehow advances the day and flips the time 12 hours. Come to find out, Calendar.HOUR assumes your want to use 12-hour time, so it does the necessary adjustments for you.

The easy answer: use Calendar.HOUR_OF_DAY. There's such a thing as 12-hour and 24-hour time. Now, if I had read the specification, of course I would have known. But such are the perils of any software development projects ... little things you might overlook can cost you bugs! With this, a huge sigh of relief as a few mysterious bugs in my program are resolved.