Archive for April, 2005

Canaca.com

Some of you may be wondering why Objects At Rest moved providers and URLs a few months ago. It happened because of a bad webhost, Canaca.com. I didn’t say anything at the time because I thought it might be a one-time thing, but I’ve since learned they play games with other customers, too.

Basically, what happened to me was a credit card expired. This sort of thing happens. Canaca was on top of it and asked me ahead of time to enter a new credit card. I did, and the charge appeared on my credit card bill, and all should have been good… right?

Well, a month later, Canaca abruptly turned off my account and all of my access to my data due to “lack of payment.” I moved hosts immediately, and began a two-month-long process of trying to cinvince Canaca that they were no longer authorized to charge my credit card. I only finally made progress when I threatenned to call Visa/Mastercard on them (I forget now which card I used).

About a month ago, Schlock Mercenary, one of my favorite web comics, moved off of Keenspace. I realized they were on Canaca by some odd DNS problems that first day, and my suspicions were confirmed. I immediately emailed the Schlock technical guy and told him of my problems, ending with the advice that I wouldn’t move just yet in his shoes, but I’d watch and see what happened. 26 days later, Canaca shut down Schlock for taking too much bandwidth. Nevermind that it was well below their bandwidth quota. They got caught within a month, so hopefully Howard will get all his money back.

But I’ve dealt with Canaca before and I wouldn’t count on it. I never did get that extra charge back.

Under The Table Where It Belongs

I was very disappointed in Metrowerks’ decision to drop Codewarrior for Palm on Macintosh. I understand it in light of PalmSource failing to deliver on the emulator version of the Palm OS 5 simulator (something mentioned on their web site — accidentally, I’m sure). I expect Metrowerks knew there wouldn’t be a Palm OS 5 emulator, while the rest of us just had PalmSource’s web statement that there would be.

Now it is not that I don’t have a Windows machine, I just prefer the way window management for programming works on the Macintosh. In particular, I miss the extra modifier key. With Macintosh, I can use Option+left for one word to the left, Control+left for one subword to the left, and Command+left for start of line. Yes, I know Home does the same thing, but I don’t like reaching off the main keyboard area. And yes, I know you can remap keys in Codewarrior, but if you use the Windows key as a modifier you end up popping open the Start menu if you ever tap it and change your mind about using another key with it. But I adapted, and aside from the disappearing edit cursor and the broken command line compiler I’m pretty happy.

However, all of that changed when I got to the Philippines. See, the DSL is upstairs. Thus, the PC is upstairs. I’ve got an Airport Express I brought with me, but I can’t seem to find a wireless card for me PC. So the effect is that the PC has to be used upstairs. And the difference between upstairs and downstairs can be the difference between sweating like Heather Donahue’s tears and being mildly uncomfortable. So the issue had to be revisted.

My first attempt was with Virtual PC. I would suggest you not even bother. It’s painfully slow, prone to crashing, and even when it doesn’t crash it doesn’t actually work.

My second attempt was with VNC. This was a little better, but I ran into screen update problems. It was also fairly slow, and I had to switch resolutions on the PC before opening the session (my Powerbook is 1024×768, and my PC is 1280×1024… flat panel, so I don’t want to run it at anything other than that if I can help it).

Microsoft’s Remote Desktop Connection client for Mac OS X to the rescue! While it is not tightly intergrated enough to run, say, Marine Aquarium, it is plenty good enough for Codewarrior, Palm OS Emulator and a few other odds and ends. In fact, it’s good enough that I often forget that I’m not running Codewarrior directly on my PC. Even sound works, albeit a little delayed. I can be logged in directly on my PC, come downstairs with my Powerbook, and log in over RDC. The Powerbook takes over the session and the desktop is even automatically resized to 1024×768. I can go back upstairs and log back in, and the PC will take over the session (although the desktop is not automatically resized back to 1280×1024).

I don’t know what the bandwidth usage is, but I know I’m able to pipe AirTunes from iTunes (native on the Powerbook) back to the Airport Express without any stuttering.

So if you’re a Mac Codewarrior and you’ve got a PC and just don’t like to use it, give this a try. The combination is much better than Codewarrior for Palm on Mac 8, and you don’t need to give up the Codewarrior’s code generation for PRC’s.

RDC server is included as part of Windows XP Pro. I don’t think it is included in XP Home, although I could be wrong about that.

Back to the Philippines

Well, I arrived back in the Philippines this morning (local time). It’s a thirteen hour flight. It’s funny, but I’ve actually come to like the time in-flight, for the most part. The last few hours can be a drag, but the first nine or ten go by fast.

One thing I’ve found is that I have very little urge to work. My Powerbook’s battery life isn’t up to the job, but that’s not the reason. Sure, the seats are cramped, but that’s not the reason.

Flight time is dedicated to finishing whatever book I’m working on, listening to music, and just generally thinking about things. It’s a time of refreshment, a kind of semi-vertical form of sleep where my eyes are open and my thoughts run wild.

At least, it is in best case. More than once I’ve been on an Airbus with bad air flow. Not a pleasant experience, believe me.

Anyway, more articles to come now that I’m here. I tend to get a lot more time for Palm work here. I’m not sure what impact changing the time zone will have, but I’ll probably do that as well.

Tiger — the headlines are grrreat!

I can’t help but hope that Apple will retire the “big cat” naming convention soon. I can’t take stupid headlines like this much longer:

Tiger will be let loose by Apple
Apple uncages Tiger in two weeks
Apple to unleash Tiger on 29 April
Apple unleashes ‘Tiger’ Mac operating system
Mac OS X Tiger Poised to Strike
Apple to unleash awaited Tiger OS
Apple lets loose Tiger
Apple pins date on Tiger’s tail
Apple lets ‘Tiger’ off its leash

Yeah, yeah. We get the idea. It’s a cat. Hey, I’ll go further than that. It’s a big cat. You can make headline puns. We get it. Now please, either make good ones or stop.

Personally, I’m waiting for this one:

Reporters punning Tiger eaten

Biometrics — The Downside

A quick link for those of you who thought Biometrics were a good idea:

A Malaysian businessman has lost a finger to car thieves impatient to get around his Mercedes’ fingerprint security system. Accountant K Kumaran, the BBC reports, had at first been forced to start the S-class Merc, but when the carjackers wanted to start it again without having him along, they chopped off the end of his index finger with a machete.

Not just an urban legend anymore! Read it all on The Register or BBC News.

NetSocket - Helpful or harmful?

So I’ve started working on network applications, and that means using NetLib. Unforunately, I have a decision I keep flip-flopping on, and thus not really getting anywhere with my code: namely, whether or not to use Palm’s NetSocket library.

Advantages of NetSocket:

  • For a lot of things, it provides higher level interfaces to functions.
  • It’s written by PalmSource, and is less code for me to maintain.

Disadvantages:

  • Some of the most interesting code in NetSocket is labelled as “debug use only.”
  • NetSocket.c uses global variables as if they were going out of style.
  • Using NetSocket requires some of the “Unix headers.”

Global variables are bad because it means if your code relies on them it will not work in notifications. The Unix headers are bad because they’re undocumented, incomplete and in some cases inaccurate.

So, those of you who develop network applications — what do you do?

Update: Jon Hays of Hazelware (highly recommended reading for Palm programmers) brought up a couple other points in email and in a comment:

The NetSocket stuff is ok, but there are two main problems with it. First, is the globals. Normally that’s not an issue but if you ever want to do things outside of the normal launch code, you’re out of luck. That in itself isn’t so bad because you can always refactor it yourself to get rid of those nasty things. However, the primary reason that I don’t use it is because of the lack of threads on the PalmOS. What I mean is that to not lock up the UI during lengthy operations, I have to alter my event loop to process socket data as an entirely separate operation. If I used the NetSocket junk, I would be subject to yet another layer of rules and abstraction. A good example of that is NetUTCPOpen. If I called NetUTCPOpen to connect to a remote server, my whole application would lock up during that one function call. The better way to do it is to set the socket into non-blocking mode myself and check its status during my event loop. As I write this, I realize that probably sounds uglier than it is, but really it’s just one extra function in my event loop.