The joys of writing code

Yesterday and today I decided to tackle an issue in some of my code that I wrote for a client. This wasn’t a huge chunk of code, but how it worked bugged me and was actually going to affect my current project. This chunk of code, unfortunately was in a kernel extension (KEXT) and is extremely hard to debug. Each time I made a slight mistake, my machine would crash and I’d have to restart. After 4 or 5 times doing things, I decided to get smart and use one of my test machines. Luckily one of the machines already had Xcode on it. Crashes on this machine aren’t that bad as I can work on my main machine when it is restarting and it restarts much faster as I don’t have so much junk on it.

Anyway, after fighting with the code for something like 8 hours, I got it working how I wanted. Yeah! This is one aspect of development that I truly dislike; kernel extensions are hard and even if I was paid more, I wouldn’t want to do them. In this particular case, the kernel extension is very minor because I convinced the client to change their firmware to make it minor. It didn’t take much convincing as the more complex a kernel extension is, the more prone it is to crash (and take down the entire machine), require changes for the next OS update, and cost significantly more to write.

So while I can tackle just about any code on the Mac, will I is another question. In this case, it was worth my time to investigate this issue.

Disappointing car

Last year we bought my wife a new Honda CR-V as her Honda Accord wasn’t going to cut it when our son was born. I stared driving her car a bit and really enjoyed driving it. I started looking the Acura RDX as it was a step up in terms of options from the CR-V and drooled. While I wasn’t looking for a new car, I could dream. After driving my wife’s car for awhile, we soon realized that it was a bit small once you pile in the baby stuff and that our next car might have to be bigger. My Toyota Highlander is a little bigger, so it will work fine when we need to pack in more stuff like Aiden’s wagon.

However, I still look at new cars online and have been convinced that the Acura RDX’s big brother (last year was the RDX’s first model year), the MDX would be the car for me if I was in the market for a new car. Two years ago, I wrote about the ideal car. The car has all the options I want, the room I’d want, and almost meets my requirements for my ideal car. Last year’s MDX model disappointed me with respect to its gas mileage, so I was hoping that the 2009 would do better. The EPA estimates for it are 15/20 with 17 combined. Ouch! The Acura web site indicates that the EPA changed the calculations in 2008 and you shouldn’t compare it with older estimates. The RDX does slightly better with 17/22 and 19 combined, but those figures are just awful. Why are they so bad? My guess is that they put an engine in the vehicles is far too large for what is actually needed. Do I need a car with a turbocharger or 300 HP engine? Of course not. So when can I get the car I want with mileage ratings at least in the mid 20 MPG? It doesn’t seem like it should be that hard.

Maybe next year.

Taking things for granted

I’ve been working from home for almost 9 years (9 years this month) and have been self-employed for more than 5.5 years. Things have been pretty good for me, and I’ve been reasonably happy. Recently I had the opportunity to change the status quo in terms of my work. After a lot of thinking, I realized that I have things pretty good; I control my own hours, I get to work on my own projects when I want (within reason as my own projects don’t pay the bills), and to some extent I control what I work on when (prioritizing projects based on what interests me). I’ve taken things for granted and didn’t completely know how good I’ve had it! Are there things I’d like to change? Of course. Working out of my house sometimes would be nice, but I can’t justify the expense of an office as I wouldn’t use it all the time. Would it be nice to work on one project all the time without having to do a context switch? Sometimes yes, sometimes no.

Sometimes I complain about my work (doesn’t everyone?), but my hope is that after this week’s re-evaluation, I can do a better job at doing my work and not complaining. If I get paid, is there a reason to complain? While I do take a lot of pride in my work and try to steer my clients in the right direction, the old saying “the customer is always right” might just be the ticket to my happiness!

GrandDialer is far more successful than I could have imagined

My first iPhone application, GrandDialer has been downloaded more than 9000 times! I thought that it wouldn’t be that popular because people can’t get GrandCentral accounts. Boy, was I wrong! The reviews are pretty good, but some people expect way more than I can do with the application. As far as I can tell, the only external interface to GrandCentral is through an HTTPS connection. GrandDialer is based on a perl script.

While I’d like it to do more, pretty much all I can do is dial the number. Things may change in the future, but GrandDialer is going to remain a one trick pony until GrandCentral opens up more interfaces (I don’t plan on doing web scraping as that is very error prone and just not fun to program).

I encourage people to read the FAQ before contacting me as it answers a bulk of the questions people ask and the response time is fast!

If people like the program, please purchase something through my Amazon link.

Reviews on the AppStore

When I look for software, I like to try it out before I buy it. However, with the AppStore for the iPhone/iPod Touch, you can’t so you have to rely on reviews and the product description. Even for free apps, some people find reviews important. The review mechanism on the AppStore has a lot to be desired. For instance, anyone can post a review even if he/she hasn’t downloaded/purchased the app. This should change as it skews the reviews and can be misused, especially for paid applications. Second, there is no way for developers to respond to comments without posting a review with a star rating (and of course, who is going to give his own program anything less than a 5 star review?). Third, even posting a 5 star review, it looks like I only get one, so I can’t respond to reviews and point out why I shouldn’t get poor reviews. Apple should take some lessons from VersionTracker; while VT isn’t perfect, it is a lot better than the AppStore. Fourth, there is no way to post a review without giving it a star rating; so people that ask questions like “How do I get a GrandCentral account?” give it a 2 or 3 star review.

While the current review system works for music, it needs to seriously change to be usable for applications.

(On a side note, why do people post crappy reviews saying stupid things without reading the instructions or contacting support?)

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.

My first iPhone app has been released!

My first iPhone application, GrandDialer, is now available on the App Store. Basically it allows GrandCentral users to call people and have their GrandCentral number appear on the caller ID. The reviews have been pretty positive and I’m quite excited. It is free and seems to be getting a bunch of downloads (the audience is quite limited at the moment because GrandCentral isn’t accepting new users). If I charged for it, would people pay? I think some would, but not everyone.

The App Store is a bit of a mixed bag; the centralized distribution is cool. The waiting for Apple to post it is a downer; the review system needs lots of work (the only way I can respond as a developer is to post a 5 star review which just isn’t right).

I have some idea on what to add to the app, but I’m quite limited in what is exposed from GrandCentral.

If you have a GrandCentral account and an iPhone/iPod Touch, go grab a copy of GrandDialer!

Amazing customer service

In contrast to AT&T’s customer service or lack there of, my wife had a great experience with Amazon’s customer service. She purchased a case of Teddy Puffs for our son and when we received them, the expiration date was less than 6 months away. The boxes we have bought in the store expired about a year after we bought them. Amazon quickly refunded our money (about $32) and said we could keep them as they can’t take back food. I was amazed at the response as AT&T won’t give me my $20 back for their mistake (I still haven’t heard from a supervisor). My only recourse will be to fight the credit card charge.

In any case, Amazon is definitely the first place we’ll look to shop.

Unacceptable anti-spam system

A user contacted me about an issue this morning (basically a corrupted download of ReceiptWallet which most people would just re-download it and be done with it) and when I replied to the message, I got an anti-spam challenge that sent me to a link. The link brought me to the following form:

antispam.png

First off, on my web site, I say that I don’t click the links to verify that I’m a human (I did this time because I was curious). Second off, look at how much stuff they want me to fill in. This is completely unacceptable. Is EarthLink’s spam filtering not as good as Google’s? Google’s works quite well for me and I don’t have to inconvenience people with this kind of baloney. When are people going to learn that these challenge and response systems just piss people off. I had my own system many, many years ago and stopped using it as it prevented legitimate people from sending me email.