Computer missed its flight

Right after the new MacBook Pros got announced last week, I placed my order with a custom configuration (2.8 GHz and 320 GB 7200 RPM drive). I received a notice that it shipped on October 18. Now UPS tells me that my computer missed its flight “THE SCHEDULED FLIGHT WAS CANCELED DUE TO CIRCUMSTANCES BEYOND UPS CONTROL”. Then later it said that it caught another flight and was in Japan. I just checked and apparently that information was wrong as my computer is still stuck in China. Maybe it wanted democracy or didn’t like all the human rights violations so China kept it. Hopefully the machine will get here next week as the suspense is killing me.

Shorting out my keyboard with drool

Like a good geek, I kept refreshing the live blogging of today’s Apple event. Based on the rumors I read, nothing was really shocking. Right after the store became available, I went ahead and used my developer discount (basically the select developer program cost is offset by the discount of the machine), selected a 2.8 GHz MacBook Pro (15″), with a 320 GB 7200 RPM drive (this has me quite excited) and got the DVI and VGA display adapters (sucks that they aren’t included, but Apple is making more and more things add-ons). I hope to have my new machine next week; I’ve been waiting a long time (in computer years) for this. My current MacBook Pro is 2.5 years old and is a Core Duo based machine (first generation Intel based MacBook Pro). I wouldn’t say it is on its last legs, but it will be nice to have a zippy machine with all the bells and whistles. It should be state of the art for at least a week!

Oh and the new Cinema display looks nice; I like that it has speakers and the 3 cables that goto the MacBook Pro make it almost like a dock (right now I plug in 7 cables into my MacBook Pro when it is on my desk).

Final word on phone GPS

After one success with the Sanyo Pro-200, I began to feel confident that a phone based GPS would work. However, the following day, we used it again and I didn’t quite follow its directions, so it had to recalculate the route. Unfortunately it was far too slow at recalculating the route to be useful. It had to upload the GPS information to the server, recalculate the route and then send it back to the phone. By the time the phone got the information, I was in a different place and it had to recalculate again. Stopping the car and letting it figure out where we were got things going again.

I’m used to the GPS unit in my wife’s Honda CR-V and it’s extremely fast at recalculating its route. I’ve also used Garmin and TomTom units and been pleased. Before my next trip that I have to rent a car, I’m definitely buying a Garmin nüvi (the new ones look pretty cool) to save me a lot of frustration.

Smartphone GPS Followup

After our disaster with a smartphone based GPS yesterday, I was given another phone to try, this time not a smartphone, but a Sanyo Pro-200. We used the Sprint Navigation service and we were quite pleased with it. It gave us directions and spoke the turns. I took another look at the Treo 800w and found the issue; I was using Google Maps’s navigation instead of the Sprint Navigation (which was available on the 800w). However, Sprint Navigation has a monthly fee and still won’t work when you don’t have data coverage. So while my initial review was a bit harsh, I still think I want to get a Garmin nüvi as it doesn’t require a data connection, has a larger screen, and just works.

Smartphone Based GPS

This week I’m in Minneapolis for a client and I had requested a GPS unit for the rental car as I have no idea where I am and don’t like being lost. Unfortunately Enterprise didn’t have any units, so we were stuck with paper (I say we because my wife and son came along for the trip). My client loaned me a Treo 800w as a GPS unit as it has real GPS in it. I’m not sure if Windows Mobile was what I don’t like about it or that its GPS routing seemed to really suck. Since it doesn’t have all the maps loaded, it had to make a network connection to get the maps; for some reason, it seems to fail to connect despite having a full EVDO signal. Then when it did load the data, it didn’t reroute or announce the turns basically making it useless. My wife was operating the unit while I was driving and I have threatened to run over the unit because of how useless it is. It’s possible we were doing something wrong (I played with it and wasn’t impressed; I don’t think familiarity with Windows Mobile would have helped).

Will the iPhone 3G GPS be any better for navigation? Well, it won’t have all the maps pre-loaded and who knows if it will announce turns. We’ll have to wait and see. I might be spoiled as the GPS in my wife’s CRV is great, but I expect a lot from these devices.

Next time I travel and have to rent a car, I’m definitely buying a GPS unit. I hesitated earlier this year and buying a unit, but I might just get one next week. I can’t even put a price tag on being lost in a strange place!

AppStore approval mechanism has a lot to be desired

Today I saw a new program at the app store called “I Am Rich”. The description says:

The red icon on your iPhone or iPod touch always reminds you (and others when you show it to them) that you were able to afford this.

It’s a work of art with no hidden function at all.

This app costs $999.99! Does the author think any idiot is going to buy it? Why did Apple approve this? This is worse than the flashlight apps. The AppStore is turning into a pile of crappy apps with a small number of quality apps. As I indicated on the T4Show podcast yesterday, the cruft in the store is going to make it harder for serious developers to make money because people will get tired of sorting through this junk and then the main (only) avenue for distribution will basically be gone. Apple needs to actually screen applications and needs to charge way more than $99 to be in the program ($99 is far too low to screen out the people that aren’t serious).

The iPhone, light years ahead of other devices

Yesterday I read a rant about how the iPhone is a crappy Mac. The author is completely misguided; he’s comparing a handheld device to a desktop saying what it doesn’t do. It comes as no surprise that the author writes desktop applications and not handheld applications. I’ve been writing handheld applications for most of my career; I started writing Newton applications in 1994 and then started writing Palm OS applications around 1997, I think. In terms of a handheld device, the iPhone is not only a joy to use, but it is a joy to develop applications for it. While the Newton was way ahead of its time when it was canned, it didn’t survive long enough to be a competitor in today’s world. If you look at Palm OS, it is still so backwards. It has never (natively) supported different screen sizes (the Dana and the HandEra 330 had extensions to handle larger screens), it doesn’t have protected memory, it has no where near the capacity of an iPhone and many applications don’t look as elegant as iPhone apps.

Granted the Palm OS has some ability to have background tasks (at least through alarms and some people have actually gotten true background tasks working), but how stable are Palm OS devices? I know, people have had the iPhone crash, but it is leaps and bounds above the Palm OS in terms of stability. If you want to get into distribution of applications, the author rants about that as well. There are definitely pros and cons of having Apple control everything. For the most part, having centralized distribution is ideal for developers and users; users don’t have to look around to tons of places to find stuff and for developers, they have a huge audience. At the moment, I think the pros outweigh the cons on distribution.

The iPhone does have some things that need to be improved, but its first (or second start) is so much better than what competitors have had years in the market to refine. Thinking of the iPhone as a desktop may lead to disappointment; thinking of it as a handheld will definitely make people smile (OK, at least me). For all those developers that complain about the iPhone, I think that they should write a Palm OS application and see what it is like to have to create jump tables because your application is over 16K and you have to have a launch code execute something not in the first 16K. Or create a table of data that scrolls. Or present a list of contacts in the address book? Or dial a phone number? I could go on and on. I really enjoy the iPhone and developing applications for it. My views might change later, but this has gotten me excited about writing handheld applications again.

iPhone Development is Cool, but not easy

TextToAFriend.pngI’ve been doing some iPhone development lately (screenshots and announcement of my first app will be next week) and realized yesterday why I keep running into hurdles; I’m a perfectionist. I want everything to look and work well and have studied the built-in apps for guidance. In my app, the hardest part was the settings believe it or not. As I was looking at apps yesterday and found some issues with some major applications in terms of functionality and interface.

AddLocation.pngLet’s take a look at a screen from the AP news application pictured to the right. The text placeholders are far too big and in my opinion, there should be labels to the left of each text field. Second and this is where someone really didn’t pay attention to details is that if you hit the + button, it brings up the people picker; there is a cancel button like there should be, but if you hit the Groups button (standard in the people picker), you’re stuck. You must choose a group and then hit the cancel button. Next if you goto the Local section, if you add a location, there are 2 glaring issues to me; first, the return button in the lower right. That really should be a done or something else. The second is that the title says “Add Zip Code”, but the keyboard is NOT theNumberPad.png standard number pad used for PINs and the like. Furthermore, you can enter something like Los Angeles, CA and it says that there is no local news. This is not very user friendly. Do I happen to know the zip code for LA? (OK, I could enter 90210 and get close).

Am I nitpicking? Of course. Will someone pick apart my apps? I’m sure that someone will just to say that I can talk the talk, but not walk the walk. Everyone and his brother is going to say that they do iPhone apps and there will be tons; I hope that people pay close attention to detail as that is what I think will separate the iPhone from other platforms.

I hope to have some neat apps for the iPhone in the near future; so far I really enjoy the platform, but paying attention to detail is the hardest part. In the current app I’m working on, I re-did my settings 3 or 4 times until I liked how it worked.

If you have any ideas or need a contract iPhone developer, please let me know.

GrandCentral Dialer

I’ve been using GrandCentral for awhile now and think I have finally managed to get people to start calling that number. The flexibility is great; I can pick the phone I want to use and if I travel, I can set calls to goto my cell phone. If I’m around, calls goto my VOIP line. One of the interesting features they added to GrandCentral was the ability to call a Gizmo Project number as a calling number. Combine this with click to call on GrandCentral’s web site and I basically can get rid of a phone line. I currently have a BroadVoice VOIP line which costs me about $12 per month.

So the other day I was thinking, could I get rid of the BroadVoice number? After some searching, I found that Gizmo Project is a standard SIP provider and if you can configure the phone to connect to a SIP account, you can get it to work. OK, easy part done. Phone rings when my GrandCentral number is called. Next the harder part. I wanted to be able to dial any number via GrandCentral so a) it doesn’t cost me any money and b) the caller ID is from my GrandCentral number. A few web searches later, I found a perl script to do what I wanted. The UI, of course, is non-existent, so I put my Cocoa skills to the test. I started my little app yesterday and completed it this evening. I now have a little menu bar item that lets me select my “originating number” (usually my Gizmo Project number) and lets me dial any number. To top things off, I added a little AppleScript support so that I can dial from the OS X Address Book.

Very cool. It could stand to use a little more polish, but I’m pretty pleased with it. Now I have to contact GrandCentral/Google and see if I can use their logo as the menubar icon. I’m sure that will go over real well.

I still need to decide if I’m going to sell this or give it away. Hmmm. I think it hinges on what GrandCentral says. Can’t sell something if they get pissed at me.

OS X Server is still a piece of crap

I’ve written about OS X Server in the past and somehow I keep getting roped into dealing with these machines. The concept of OS X Server is great; a small business server that anyone can setup. The implementation, however, is quite lacking. Apple took open source software, like Apache, BIND, Open Directory and Jabberd and slapped a GUI on it for configuring. In doing so, they either glossed over or forgot to implement many of the settings available in these products. My latest run ins with OS X Server have to do with Jabberd, Open Directory and Apache.

Let’s start with Apache. First off, I needed Server Side Includes to be turned on. I didn’t see a switch to do this, so I hacked on the actual config files. Second, I had to allow .htaccess files to override some of the default settings. Some may see this as a security risk, but this server is dedicated to one task, so again I had to hack on the config files. If the GUI is touched, my changes go away.

Next, Jabberd. The issue here seems to be that Jabberd is buggy and the version of Jabberd included with Leopard server isn’t up-to-date. There is no easy way to replace it with a newer version short of waiting for Apple. If I wanted to install everything by hand, I would have used Linux in the first place and not OS X Server. Apple either needs to respond faster with updates or provide ways to more easily replace major components. In this case, an OS X Server consultant came to me with an issue where he was trying to use a wildcard certificate for the iChat server (Jabberd) and couldn’t get it to work. Server Admin said everything was fine, but when I dove into the logs, I saw that there was an issue where Jabberd didn’t like the chained SSL Certificate (which is pretty standard, in my opinion).

Lastly, Open Directory. This one is actually a huge security issue. While setting up an iCal server, I needed to secure it before it went into production. I managed to use LDAP Browser/Editor to anonymously bind to the server despite checking all the boxes to prevent anonymous binding. After talking with a friend at Apple who get an answer from someone in the know, this is a known issue. If you secure Open Directory properly, it breaks other things. In my case, it doesn’t matter because our use of Open Directory will be limited. So, I have to hack on Open Directory to change a string somewhere. Furthermore, the root password’s SHA1 hash can be browsed by anyone! Why is this bad? Well, if you use a bad root password, someone doesn’t have to keep running a script trying to get into your server (which you could block); a hacker just needs to copy the SHA1 hash and then run a tool that generates SHA1 hashes from common words and presto! (I found a few tools doing a quick search.) You might argue that this isn’t bad because you could run an attack and try lots of passwords, however, smarter servers/firewalls will block users after a certain number of tries and then possibly increase the time allowed between tries thereby making a brute force attempt much more time consuming than doing it “offline”.

People could argue that the Open Directory issue is there for anyone using OpenLDAP (which Open Directory is), but Apple conceals so much from the user, that it is Apple’s responsibility to secure these machines as a large majority of people using them don’t have a clue about security. I work with one good IT person and he wasn’t aware of the open services on his server; he just turned stuff on to get it to work. I had to help him lock everything down with the firewall.

One thing I really like about OS X Server is that you can use SuperDuper! to back it up and restore it. Other than that, OS X Server should be treated like Linux and ignore the GUI admin tools.