New features for newer operating systems

I’ve written a number of times (I think) about how long should I support an older OS. I’ve also said that I’m not abandoning Tiger users, quite yet, but I may have mentioned that new features are likely going to be Leopard only as required to make things easier. In the recent past, I’ve implemented 2 Leopard only features; the first is support for Image Capture scanners. Image Capture seems like a broken framework that might be fixed someday. In the meantime, the only way for me to reliably test and get things working is to require Leopard.

The other feature (which I just finished today) is allowing a library to be encrypted. The approach I took was to create an encrypted disc image and shove everything in that. Encrypted disc images are supported on Tiger, but one of the slick features in Leopard is a sparsebundle. What is a sparsebundle? Well, it is a growable disc image that has “bands”. This means that if you modify a few files in the disc image, only the necessary bands are updated. This is absolutely necessary for backups otherwise each time a user touched a ReceiptWallet library, he’d have to backup the entire disc image (backup apps do the right thing; it isn’t a manual process to copy the bands). With one of my libraries approaching 1 GB, that would be a complete waste of time. Time Machine uses sparsebundles for the Time Capsule and if it is good enough for Apple, it’s good enough for me! So, I’ve disabled encryption on Tiger. I’m sure that some people won’t be too happy about this, but doing encryption another way would have taken significantly longer with no true reward.

Everyday, I look at the statistics I collect on what operating systems users run. The large majority run Leopard. In the graph below, you have to make one big assumptions as the data is anonymous so users that check for updates all the time (more than the default once a day) will get recorded more than once, and that is that Tiger and Leopard users check for updates at the same rate. The actual numbers are irrelevant; it is the trends I look at and the ratio of Leopard to Tiger users. The blue and red lines represent the most recent versions of Leopard.

UserData.png

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.

Less complaining, more fixing

I, like many modern Mac developers, use Sparkle for auto-updating ReceiptWallet. This is an amazing framework that keeps getting enhanced. Many developers just shove it in and forget it. When there is an issue, they just complain about crappy code (I know I do that a lot). Today in updating ReceiptWallet, I found that my update crashed. I am using the absolute latest and greatest Sparkle code, so it always has risks. I dove into the code, found the bugs and suggested fixes. Andy Matuschak, the Sparkle guy, must not sleep (well, he is a college student), as he fixed the bugs within hours after I reported them (someone actually reported one before I did, but I identified the exact causes) and then when I was looking at the fixes, I noticed that Andy made a mistake (probably easy to do with a lack of sleep) and reported it again. Andy quickly fixed it and all is well. I really love Sparkle and it is the only way to get people to keep up-to-date on my software.

I’d suggest that other developers try the latest code and report bugs. This is the only way to improve the framework.

Anyway, thanks Andy for a great framework and keep up the good work!

Treating customers like garbage

I got my bill from MCI (The Neighborhood plan) the other day for our home phone service and saw that it jumped! After some research (viewing my invoice online was a nightmare because the server kept dropping my connection even when I tried from Windows), they raised my rate $10 per month. I’ve been a customer for a long time and wasn’t notified of this change; they swore that they notified me in my online bill (I still can’t find a record of that). The increase is ridiculous. This comes at a time when people are dropping landline phones to go only cellular. I still like the call quality of a landline and knowing that 911 is available. So MCI charges me $56.99 per month. If I’m a new subscriber, it would be $59.99 per month, but each year I’d get a free month of service. So basically as a long time customer, I get screwed out of $24 per year. I’ve looked into switching to AT&T, but their online help is kind of useless. They can’t even tell me exactly how much voicemail costs. The base cost for unlimited local and long distance is $40 per month and somewhere between $6.95 and $9.00 per month for voicemail. So would it be cheaper than MCI? Possibly, but I can’t quite tell. The signup page lists all the fees and stuff which seems to indicate that the total, including voicemail would be a little more than $10 per month cheaper than MCI. If I go through with the signup, there isn’t an option to add voicemail, so I’d have to talk to a rep and deal with that.

After my call with MCI, I got a recorded call back to fill out a survey. I rated them poorly and at the end, it offered to connect me back to a rep to straighten things out. After being on hold for awhile, I gave up.

Maybe tomorrow I’ll call AT&T and see if I can get more information. At this point, it looks like MCI will lose me as a customer because of a small rate increase. $10 is $10 and I’d rather have it in my pocket. (Also it is interesting to note that MCI’s fees are about $6 per month higher than AT&T’s probably because MCI has to pay AT&T to use the lines.)

Supporting ancient OS versions?

I had a user today purchase ReceiptWallet and then complain that it doesn’t work on Mac OS X 10.2.8! First off, people should download the demo prior to purchasing as I have a big “agree to this” section when purchasing that tells people to try before they buy and says we don’t offer refunds. (I did give this guy a refund as I don’t want to fight chargebacks because people can’t read.) Second off, 10.2.8 came out in October 2003! This guy said that he stays 2 OS versions back (apparently major versions). How can anyone expect developers to support such old OS versions? Apple stopped providing security updates to 10.2.8 a long time ago!

Based on usage statistics I started gathering a few months back (anonymously, of course, which requires me to make some assumptions), Leopard (10.5) users outnumber Tiger users (10.4) 4 to 1. Since ReceiptWallet uses CoreData, it requires 10.4 as CoreData was introduced in 10.4. Based on these statistics, going forward, I have to really decide if I will continue with 10.4 support. For now, I’ll keep supporting it, but some features will require 10.5 (or even 10.5.3) and higher.

Nice parking job

Yesterday we went to our niece’s birthday party at a local park. When we pulled up, I found a perfect parking spot, but our only concern was that it was too close to the corner. I parked, we took a look and saw that it was fine. When I returned to the car later to get something, I saw that someone had parked behind us so close that his bumper was touching ours. I was furious. I moved our car and saw that there was no damage, but before doing so, I took a few photos. So not only did this yutz hit our car, he also illegally parked (he was within 3 feet of a sidewalk ramp for disabled persons).

I would have loved to have seen a police officer around as I would have reported him so he would have gotten a ticket. There usually is never a police officer around when you need one; however, when we were driving there, we saw a man cross a busy intersection (on foot) against a red light. There is a cop right in front of us that saw this and then stopped the man after he crossed the intersection. Wow, I never see cops do stuff like that!

It is probably in bad taste for me to publish pictures of the person’s license plate that hit our car, but I’ll do it anyway. The driver was from Florida (likely military judging by the DOD sticker on his windshield). In addition, there was a carseat in the car; what does this teach your children if you do something illegally (parking) and something wrong (hitting our car without leaving a note).

1/4 ton chair

Today I saw an ad for a 1/4 ton folding chair. My take on this is that the chair holds up to 1/4 ton; the chair also looked a bit wider. Frankly, a chair that holds 500 pounds (presumably 1 person) is just gross. I understand that there is a market for it, but do I have to see it?

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.

Value of a lifetime warranty?

Several months ago, a friend told me that a little known fact is that most residential faucets come with a lifetime warranty (OK, maybe not little known, but until I started ReceiptWallet, I could never find manuals/warranties). I put in our kitchen faucet when we moved in about 4 years ago. I noticed that it was chipping and it annoyed me. So I took pictures (my friend said that Delta faucet would accept digital pictures instead of sending the whole thing back) and Delta sent me replacement parts. Yeah! I probably would have eventually bought a new faucet as I would have expected them to want it back, so I saved myself a bunch of money.

While it was great that they sent me the parts (not a new faucet), taking apart the old faucet and putting in the new parts took me almost 2 hours and a lot of effort. I don’t expect that most people would take advantage of the warranty for this reason alone. With a lifetime warranty, I’d expect the faucet’s finish to last more than 4 years. I’m sure I’ll be asking for more replacement parts in the future. Now that I know how to disassemble it, it shouldn’t be all that difficult.

Hamstrung by lack of RAM

Lately I’ve noticed that my machine is quite slow and appears to lock up for seconds at a time causing me to pound the keyboard. It is a 2 year old first generation MacBook Pro so that could explain a lot. However, I installed iStat Menus and turned on the CPU and memory items. It turns out that my processor isn’t maxed out all that often (usually only during compiles). When memory usage tops 50%, things start to slow down. As long as I keep memory usage below this, I seem to be OK. This indicates to me that once the OS starts paging to disk, all hell breaks loose. Of course, this is obvious as hard drives are much slower in RAM, but I always like to have lots of stuff open and never paid much attention to RAM usage; with virtual memory, it is easy to loose sight of RAM.

Is there anything I can do about this? Nope. My machine has 2 GB of RAM and that’s all it can handle. Once Apple releases new MacBook Pros, I’ll be ordering one immediately and loading it up with at least 4 GB of RAM (the new machines can handle 4 GB of RAM; hopefully newer ones can go higher). This also brings up something interesting; Apple’s RAM prices are no longer completely outrageous. The current price for loading in 4 GB of RAM in a MacBook Pro is $200 whereas The Chip Merchant sells it for about $100. While it is double, it is significantly less than it was in the past.