Frustration with Windows

Yesterday I had to install some maps onto my Garmin iQue 3600 for a trip back east. I had everything installed on my Windows machine, but wanted to put it in VMWare on my Mac so I could finally get rid of the Windows machine. I downloaded all the installers from the web and tried to install, but kept getting an error message that it couldn’t connect to installengine.com to download some component. After searching and futzing for several hours, I finally gave up and installed from the original CD which worked fine. I then did all the upgrades and live was fine. For some stupid reason, InstallShield (one of the most popular installer technologies for Windows), has the install engine separate from the installer. While this sounds like a great idea so that the engine can be installed separately, it isn’t if you’re dealing with an installer that is several years old. Apple’s Installer on Mac OS X does something similar, but the difference is backwards compatibility and the engine is built into the OS. Why is everything so much harder on Windows? Is it simply that I’m not familiar with it or does it really suck?

Compounding my frustration, I went to wipe down the Windows machine to give to my father and when I went to reinstall the OS, I couldn’t figure out how to install the drivers. The OS (Windows XP) installed fine, just all the drivers didn’t want to install. I ended up just making it my father’s problem and gave him all the CDs and said good luck. All the drivers were on the CD, but I had to pick and choose which ones I needed. On the Mac, you insert the CD/DVD and install the OS. Granted you need drivers for scanners and other 3rd party stuff, but not for networking or the video like there is on my Dell machine.

XML vs Binary vs SQLite for CoreData

When I started ReceiptWallet almost a year ago, I chose to use the XML format for my CoreData stores. This was mainly because I was unsure of CoreData and if I messed something up, I could look at the file in a text editor and change it. Except for the first few weeks developing, I’ve only touched the data file once for a customer where CoreData improperly encoded an entity and made the XML invalid.

Last week I decided to try the Binary format (I put code in awhile ago to try Binary, XML, or SQLite). Wow, the startup time dropped as CoreData no longer had to parse the XML. Next I tried SQLite and again, it appeared to be a bit faster. So, I’ve decided to make SQLite the default database format for ReceiptWallet and DocumentWallet (it can be changed with a plist change). The only downside to SQLite vs XML and Binary is that an SQLite file can’t be opened by two users at once, so I added a preference that allows the user to share the database (everyone except the primary user has to view it as read only) which changes the database format to Binary if it was SQLite.

So, I’m crossing my fingers that I don’t run into any problems with SQLite; lots of programs use it, so I should be OK. I did have a bug where I used an NSPredicate with “MATCHES” in it where I should have used “LIKE” which failed with the SQLite store. I’m not sure why that worked in the other database formats, but it did.

Leopard, one week later

Now that I’ve been using Leopard for a week, I’m started to get used to it and like many of the features. However, there are few things that I don’t like.

Likes

  • Preview You can add, remove and re-arrange pages in a PDF. This actually made me stop a product I was developing as Apple’s implementation is so slick.
  • Time Machine While I still do a daily backup with SuperDuper!, having another, automatic backup is nice. I bought a 250 GB Western Digital Passport drive just for Time Machine and to have an extra SuperDuper! clone of my drive.
  • iChat I like that iChat shows which buddies are mobile as I have a number of buddies that use the mobile feature.
  • Xcode 3.0 So far the coolest feature is the ability for Interface Builder to automatically read the Class files from the header file without having to manually tell IB to read in the file.
  • Mail IMAP Idle is cool, but sometimes it just doesn’t seem to work. I also like that the Mail Activity can be put in the lower left of the main window. Like any geek, I like to see what is happening.
  • Stacks Yes, I sort of like them. I created a folder with my current projects in it and added that to the Dock. Now I can quickly get to my current projects.
  • AirPort Utility You read that correctly. The new AirPort Utility has a feature that shows the current list of DHCP Clients. Right now I see 11 DHCP clients on my network. In addition, you can see the signal strength for any wireless client.

Not sure about

  • iChat I’m not sure I like tabbed chats. I know I can turn them off, but I use iChat all the time and a ton of windows can get distracting. I know I can put them in a Space, but I’m not sure about that either.
  • Spaces I like the concept of Spaces, but am having trouble getting used to it. I use the Finder a lot and Spaces (by default) puts the Finder windows in whatever space you created them in. I thought that applications could only be in one space. Someone suggested that I tell Spaces to put Finder windows in all Spaces. I’ll give that a try (the Finder is in /System/Library/CoreServices if you need to add it to Spaces). The problem with the Finder windows being in different spaces is that I drag files to other programs that may be in other spaces requiring me to start dragging, command tab to the other app and then drop it. In addition, I notice that sometimes Spaces just switches the current Space on me if an alert pops up or something like that.
  • Terminal The tabs in terminal are interesting, but I’m just not sure about them. I use terminal all the time with multiple windows open. Tabs would clean up the clutter, but then again so would Spaces.

I guess I didn’t have anything that I completely disliked which is good. All in all, I think that Leopard is a good upgrade and hope all my users switch to it so that I can drop Tiger support and take advantage of all the cool developer things in Leopard!

SetSignature Plugin for Mail

One of the items that Apple has never solved adequately for me is having multiple email addresses in one account with an associated signature for each one. If I had one account for each email address, things would work fine, but I have a large number of email addresses in one account. So, a few months back, I coded up a plugin for Mail that does this automatically. Unfortunately, it stopped working with Mail 3.0 on Leopard, so for the last week I’ve felt like I’ve been typing with one arm behind my back is this plugin is vital to me. I had some time yesterday to fix it for Mail 3.0 and have decided to put it out there as a free product; I don’t want to put out something that relies on unsupported calls and charge for it.

Feel free to use this in anyway you like; use at your own risk and if you have problems with Mail, remove the plugin and try again.

Installation instructions:

  1. Quit Mail
  2. From terminal, type:
    defaults write com.apple.mail EnableBundles 1
    defaults write com.apple.mail BundleCompatibilityVersion 3
    
  3. Download the plugin
  4. Uncompress the plugin and place SetSignature.mailbundle in ~/Library/Mail/Bundles (create the folder if it it isn’t there
  5. Launch Mail
  6. Name your signatures according to your email address, i.e. johndoe@nowheresite.com

Now when you reply to a message, it attempts to set the signature correctly. In addition, when you change the From address, it will attempt to match the signature with that address.

If you have any questions or problems, please post a comment. Since this is free, please don’t bug me too much about it. It works for me and that’s all I’ll guaranteee.

Why is it so hard to email support?

A few users of mine have had problems with the Fujitsu ScanSnap and ReceiptWallet/DocumentWallet under Leopard where they scan, but the programs don’t open it. After a bit of futzing and not believing that my users had stuff configured, I had the same thing happen this morning as I was researching the issue. I’ve described the issue in a Knowledge Base article. Basically what happens is that the first time the ScanSnap Manager is launched and a document is scanned, the ScanSnap Manager doesn’t send the necessary AppleEvent to open the document. I turned on AppleEvent logging and the first time, it does nothing, the second document, I get something like this:

------oo start of event oo------
{ 1 } 'aevt':  aevt/odoc (i386){
          return id: 833355777 (0x31ac0001)
     transaction id: 0 (0x0)
  interaction level: 112 (0x70)
     reply required: 0 (0x0)
             remote: 0 (0x0)
      for recording: 0 (0x0)
         reply port: 0 (0x0)
  target:
    { 1 } 'psn ':  8 bytes {
      { 0x0, 0x32d32d } (ScanHelper)
    }
  fEventSourcePSN: { 0x0,0x331331 } (ScanSnap Manager)
  optional attributes:
    < empty record >
  event data:
    { 1 } 'aevt':  - 1 items {
      key '----' - 
        { 1 } 'list':  - 1 elements {
          { 1 } 'alis':  326 bytes {
            /Users/scott/Pictures/Scans/2007_11_04_08_32_19.pdf
          }
        }
    }
}

------oo  end of event  oo------

OK, so now I’ve identified a bug in their software. What do I do next? I searched their site for an email address to contact their tech support. No luck. They have some Live Help stuff only open Monday through Friday. I’m sure even after I contact them (which I’ll try tomorrow), I’ll be treated like an idiot. I sent email to a contact at Fujitsu and we’ll see what happens.

To my customers that I assumed you didn’t have a clue, I apologize. It is just so hard for me to believe that something so simple could be broken.

Oh well.

Leopard Install Update

After a lot of work, I pretty much have Leopard working the way I want. I just went to software update and saw a Login and Keychain Update. Apple’s support article says:

The Login & Keychain Update 1.0 for Mac OS X 10.5 Leopard is recommended for all Leopard installations. It addresses issues you may encounter when:

Logging in with an account originally created in Mac OS X 10.1 or earlier that has a password of 8 or more characters.
Connecting to some 802.11b/g wireless networks.
Changing the password of a FileVault-protected account.

Hmmm. It is likely that my keychain has been hanging around for years and it definitely has 8 or more characters. Thanks, Apple!

Leopard upgrade is a disaster

I started my Leopard upgrade by doing a backup with SuperDuper! as who knows what can happen when installing software. I decided to do an archive and install as that would preserve my info and get me up and going faster. Well, that seems to have been a mistake. For whatever reason, after I restarted, my default keychain was hosed (20 minutes later I was able to repair that), then I went to remove components from the previous system. This seemed to sort of work, but launching apps gave me a -10810 error. The problems likely stemmed from some of the apps I carried over from before, but this upgrade has been a disaster. So, I now erasing my drive and doing a clean install. I’ll start rebuilding my system after things are installed. I really hate doing this, but I’m out of options that don’t require a larger time investment and lots of frustration.

Not very helpful dialog

I currently sync my Mac with Google calendar using Spanning Sync and sync my iPhone. Occasionally I get sync conflicts that I have to resolve, but today, I got a dialog that was completely unnecessary.

Conflict ResolverScreenSnapz001.png

The conflict resolver is a background app; so it simply didn’t have to do anything and not bother me. Oh well, at least it wasn’t bad, just not useful.

Greylisting to fight spam

Awhile ago, someone mentioned the concept of greylisting to fight spam. The concept is that the first time an email server connects to my mail server, my server would reject that connection for a delay message saying that the server should try again later, typically 4 hours later. The premise is that most spam servers or trojan horses try to send spam once and then don’t try again. Great in concept, but it would delay my email the first time someone sent me email. I didn’t implement it because I didn’t want the delay.

Recently, the IT guy for one of my clients started implementing this on their server, so I took another look. He pointed me to milter-greylist and it looked interesting; it was interesting as I could determine which addresses would use greylisting. So, I implemented it and set it up so that some of my secondary addresses would get greylisting support. I saw about a 20% drop in number of messages that were hitting dspam. This is excellent as it reduced server load.

I still wish more ISP would do more to prevent random users from sending mail via SMTP from home machines and more companies would implement SPF. Speaking of SPF, I ordered some stuff from BabyCenter.com and was surprised when I didn’t get my order email. I tracked down the problem; they published an SPF record:

babycenter.com. 3600 IN TXT “v=spf1 a:mailers.babycenter.com -all”

This means that all email comes form mailers.babycenter.com. That’s a problem as their online store is run off another server, so email from it doesn’t come from mailers.babycenter.com. Since my server uses SPF, it rejected the email. Nice try, babycenter.com, but please get a clue before implementing an anti spam technique.

Sad day for NotifyMail

Monday marked a sad day for NotifyMail. After 13.5 years of using the product that I wrote (it helped launch my career), I have finally stopped using it. Do I still want to be notified instantly of new mail? Absolutely. Do I still believe in the product? Well, sort of. Several months back, I wrote about my switch to IMAP. While I was having an email exchange with a friend, I couldn’t understand how he responded so quickly. He said his mail client just kept putting new messages in his mailbox and I soon learned about IMAP IDLE. I found a plugin for Mail.app and sources tell me that this is a standard part of Leopard’s Mail.app client. IMAP IDLE basically keeps a connection open to the server and just gets pinged when there is new mail or a new transaction. This is much better than NotifyMail because there is no server configuration required and no separate desktop app to run. It does keep a connection open, but sends/receives very little traffic.

Please, a moment of silence for NotifyMail.