Software Piracy on the Mac

One of the recurring themes in the shareware industry is how to best protect our work from people that don’t want to pay. I know I’ve written on this topic before, but the recent release of Leopard has brought this back to the forefront of my mind. Another blogger wrote about how many people had pre-ordered the Leopard family pack via his Amazon link and was amazed. The family pack is simply the same as the single user pack (same CD), but the license agreement differs slightly in that it says it can be installed on up to 5 machines in the same household. Why would people do this? It seems to me that Mac users are generally honest people willing to pay for good software. I’ve seen this with my own software where people purchase multiple licenses and I only send 1 serial number (I’ll send more than one if I’m asked, but my automated system only sends 1) and people have asked about installing on more than one machine.

Software isn’t cheap, but it’s good to know that many Mac users do the right thing and purchase software even though it is quite easy to pirate many pieces of Mac software, including Leopard.

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.

Frozen in New Jersey

This past week’s trip to New Jersey/New York reminded me why I live in San Diego. The lows in San Diego were higher than the highs in New Jersey. 40-50 degrees Fahrenheit is just too cold too live for me. While the trees changing colors was pretty, I’ll take San Diego seasons any day.

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.

The 1 gallon water challenge

Yesterday as I was attempting to remove a tree that was too close to our house, I managed to puncture a PVC irrigation pipe. Unfortunately, the only way to shutoff the water to the pipe was to turn off the water to the entire house (why anyone would put a shut off to the internal water, but not the external water baffles me). After a trip to Home Depot and a few attempts at repairing it, I finally succeeded. In order to let the PVC cement set, I had to leave the water off in the entire house overnight. We still had some clean water in our reverse osmosis system, but not enough to wash hands and brush teeth. So, I happened to have a few 1 gallon containers of water in my car. As I’m washing my hands with the water from the container, I start thinking of how much water we waste everyday. If I was restricted to using just a few gallons of water a day, I’m not sure what I’d do. Next time water is going down the drain, think about how many gallons of water you just used.

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.