Invisible Shield

When I got my iPhone I went looking for a case that ideally would not make the iPhone much more thicker than necessary, protected the screen from fingerprints and scratches and generally didn’t suck. It took a while but after reading reviews I settled on using the Invisible Shield by Zagg.

Good

The Invisible Shield protects my iPhone quite well against scratches against keys and well near anything that doesn’t actually slice the material itself. While often the scratch will be visible, running your thumb over the scratch or just giving the material time will have the scratch disappear like it never existed. It’s remarkably resilient to scuffs as well as often wiping away the offending scuff will cause it to disappear, or if dirty a little bit of water will work as well.

It’s also exceptionally thin and clear leaving the screen of the iPhone easy to see underneath it’s protective layer. Additionally dirt, dust, and other cosmetic annoyances can be easily washes or wiped off the screen just like the glass screen on the iPhone.

I prefer the slightly more tactile feel of the material (and if applied to the back as well if applied) as it gives a better sense of tactile feedback on the touch screen. It feels like you’re moving your finger across the screen a certain amount - much akin to using a scroll wheel on a mouse with grooves versus one that was completely smooth. The additional traction also makes the iPhone easier to hold - especially with your finger tips.

Bad

The suckers are hard to apply - compared to just slipping your iPhone into a case the initial time investment is pretty steep. However if you spend the 5 minutes reading the instructions and/or watching the video instructions on their website and then take your time applying it on the iPhone you’ll avoid the major issues of dust, air bubbles and streaks.

Between all the Invisible Shield’s I’ve installed I’ve seen all 3 major issues and all were my fault and thankfully if you’re paying attention can be avoided by taking the screen off and restarting the procedure over before it has time to start to set (according to the instructions). Having air bubbles or dust under the screen is really distracting but I find the streaks the most annoying if only because they aren’t obvious until you’re looking intently at the screen by watching a movie, reading text or something similar. I’ve found they happen when you pull the shield too taunt and are different then the streaks you get after installation.

After installation you will notice there are streaks on the screen that take a couple days to go away. These are normal and I’ve found will go in the direction that you used the squeegee to push out the excess liquid. So for the first couple days they can be a bit annoying as the streaks will distort the colour of some pixels making it seem as if there are razor thin lines of green or red at certain points. Thankfully after a while for the iPhone and the shield to get used to each other it disappears. I’ve also noticed that until this happens as well the quality of the iPhone screen will appear slightly fuzzy - not bad but as if the anti-alias filter was set a notch or two off optimum.

I’ve found that over time the screen likes to grab and hold onto oil and dust requiring wiping. The slight fuzzy appearance of elements on the iPhone comes back as well because of the oil but after cleaning it’s back to where it should be.

The biggest downside I’ve found is that they are not realistically reusable. For example each time I’ve had my iPhone replaced I’ve had to take the old one off and it would stick to itself creating a nice ball of Invisible Shield destined for the garbage requiring me to shell out another $25-$30 CAD for a new one. Be prepared to buy a new one if you have to replace your device.

Conclusion

So of all the faults with the Invisible Shield (which I find are more caveats than faults) I heartily recommend it because it’s unobtrusive and works exceptionally well. After having purchased 4 of them and applying them on 4 different iPhones I’ve still come back to the Invisible Shield every time.

iPhone Restoration : Restoring Home Screen Layout (Pre 3.0)

After having gone through 3 iPhones and countless restores of different iPhones and iPod touches I had to get to the bottom of how to restore my layout of my apps on my home screens.

The Cause

When you restore your iPhone / iPod touch to it’s factory defaults the device is not connected to an iTunes account. When you restore it from your backup (to put your apps and info back on) it will load anything that does not require authorization through the iTunes store (with the exception of free apps - though purchased from the iTunes Store they seem to get loaded anyway). So when you finish a Restore From Backup the first time around it will not load any paid apps or music until it’s authorized. It does it’s authorizations seemingly right after you’ve restored it as it accesses the iTunes Store as if it was just plugged in. Why that has no effect on purchased music I’ve no idea.

In the end you’re left with a phone / iPod that has only part of the data it had on it before and requires you to press Sync again to put your paid applications and purchased music on to it. The biggest issue here is that if you have any data stored in that application, like say Things, or high scores from a game, or just find reorganizing your home layout frustrating you’re out of luck. The paid apps are installed anew, and placed one at a time into the earliest empty spot on your home screens. Frustrating. Thankfully there is a workaround.

The Workaround

  1. Perform a backup before you restore.
  2. After restoring your Phone to the whichever OS version
  3. Restore from your backup (you can cancel syncing music when this part finishes - it will start up again after the next step)
  4. Restore once more - you may see two backups to choose from as it would have created a backup after the restoring. Choose the one that would have a timestamp just before you do the restore.

Annoying because a restore from backup may take as long as 5 or 6 minutes but at least you aren’t stuck reorganizing your applications the way you wanted them again.

EDIT: From what I can gather 3.0 has fixed this issue.

Disabling Mail.app's To Do Mailboxes and Quasi-Debugging Mailbox Creation

Leopard’s Mail.app introduced some nice speed improvements over Tiger’s version but introduced one of the most annoying features (IMNSHO) in Leopard. System Wide “To Dos” in a garish Marker Felt font intent on polluting my IMAP mailboxes with Apple Mail To Do or ToDos.mbox seemingly placed randomly (they aren’t but when your Prefixes differ from account to account it seems random at first). Additionally when I moved servers at my host my accounts on my computer started misbehaving creating nested mailboxes continuously. In the end it’s mostly user error but I’m hoping these tips on how to disable the To Do mailbox (see the edit for the easy way) and force Mail to look properly for the right mailbox will help someone jump to the fix that will stick.

Mailbox Setup Reference

To start with for reference I have several computers and an iPhone that share 4 IMAP accounts (GMail, my webhost and one from work). The main reason I use IMAP is that it keeps them in sync - the backup on the server is just gravy. By default Mail.app uses a mailbox called “Sent Messages” and “Deleted Messages” for it’s Sent and Trash mailboxes. If they do not exist it will attempt to create them - which isn’t entirely interoperable with some webmail clients out of the box (eg. Squirrelmail and RoundCube don’t use those mailboxes by default) or other email clients such as Thunderbird (which doesn’t allow you to change your Trash mailbox in Account Settings so you can’t tell it to use Deleted Messages as well).

Changing Your Sent and Trash Mailboxes Normally

In Mail.app you can click on a mailbox (eg. Trash Man O' Doom) you’ve created and then under the Mailbox menu scroll down to “Use This Mailbox For” and set the mailbox for what you would like to use it for Drafts, Sent, Trash or as the Junk Mailbox. Nice, easy and it nearly always works. (I’ve had it not work once and that wasn’t Mail’s fault)

To Do Mailboxes Are From Hell

You may have noticed above that there was no option for a “To Do” mailbox or even an option anywhere to disable System wide To Dos which means that once iCal is opened or any To Do is intentionally or accidentally created Mail.app will dutifully create Apple Mail To Do mailboxes for each account you have following the IMAP Prefix if necessary. On my iPhone where To Dos are not even recognized it means I’m always seeing a completely useless Apple Mail To Do mailbox somewhere in the hierarchy of my mailboxes.

Following the publishing of a hint on MacOSXHints.com that described the key used in Mail.app’s Preference file (com.apple.mail.plist) I decided to go digging to see what else was stored there. I discovered that by setting the value to nothing (as in just leave it blank) that To Dos were effectively disabled on that account - I could then delete the Apple Mail To Do mailbox on the account. By doing the same change on the other computers (4 accounts * 4 computers = tedious) I was then Apple Mail To Do mailbox free!

**EDIT: According to a newly published hint there’s another way to avoid ToDo mailboxes being recreated by changing the NewNoteToDoAccount key to the ID of your local account. After deleting all my To Do mailboxes this was auto set so I didn’t notice that it had changed.

**EDIT 2: As far as I can tell this is akin to setting Create Notes & To Do’s in: to On My Mac in the Composing section of the Mail Preferences - which is FAR easier than messing with the plist file.

Multiplying Inboxes

When I changed servers at my webhost, Mail.app got confused about the IMAP Prefixes (I believe the new server was telling Mail.app INBOX and the old server was saying /, but I’m unsure) and decided to whenever I deleted a message to move the message to a new mailbox it would create at INBOX/Deleted Messages. Thinking it was an anomaly I would move the message where it should have gone and delete the newly create mailbox. The next time a message would be deleted (wasn’t necessarily on that computer) it would recreate that mailbox but oddly at INBOX/INBOX/Deleted Messages and the cycle would keep repeating. This was the one time that selecting the Trash Mailbox (Deleted Messages at / and not in INBOX) and telling it to use it failed.

Using the knowledge that the mailbox information is stored in com.apple.mail.plist I edited the offending section setting it properly and haven’t had a problem with it since - it was a good way of having somewhere to write in “I want my Trash to go here”. So it’s useful for making changes and checking to see what path that Mail.app is looking for when it shouldn’t be looking at that location (especially via SSH when VNC is unavailable).

So my frustration ends with that to edit a binary plist the only Apple provided tool is the new Property List Editor 3.0 which is not an optimum solution for editing - it doesn’t provide searching and I find that the extra work using plutil to convert to xml instead of binary and back so I can use TextMate not worth it in the end. Much of what you need to do is in Mail.app itself but when Mail.app is acting up, it’s good to know where you can go to set it back straight and stop the cluttering of your mailbox hierarchies.

Alert: Flash Player 10.0.12.36 Installer Opens Up Root Home Folder

I updated the current installation of Adobe Flash Player at work today over ARD and had several people ask me odd questions about why there was a Finder window with the word root for a title when they came in to login this morning. Needless to say that raised warning bells all over the place for myself.

On checking the computers I noticed it occurred on every computer running Tiger and that every computer running Leopard did show the menu bar and said Finder was running but unlike Tiger it did not allow you to perform any actions beyond opening a menu. In Tiger you were essentially logged in as root into the Finder (and SystemUIServer) which gave you complete access to anything. The kicker is that the root user was not enabled on any of the computers.

Now in the big picture it’s mostly a non-issue because the following requirements have to be taken to see this edge case:

  1. The workstation must be running 10.4.0-10.4.11 (Flash Player 10 doesn’t run on Mac OS X older than 10.4)
  2. You must be using Apple Remote Desktop to install the package
  3. You must ensure that you choose not to restart the computers in question. By default the package wants to restart the computer if no one is logged in (I assume it is to avoid this very situation). If someone is logged in however it doesn’t request a restart. The kicker is that if you select a group of machines and send it to install and one of them has a logged in user by default it does not ask you to restart.

If you check on the workstation you will see a Finder window open to root’s home folder - even if you don’t have the root user enabled (which I am of the opinion you shouldn’t especially with sudo available). Anything then opened via the Finder then runs as root as well (including Terminal).

So it’s easy to work around - either restart them all, or do it when you have users logged in (not ideal). If you do choose the username for the action to be done in ARD; the Finder window will open up as that user (quite possibly a local administrator account) so filing in a username there is not a workaround but much less dangerous than root access. Once the computer is restarted or someone logs in the issue goes away.

iPhone Cryptic Error : Invalid Recipient

While I really enjoy my iPhone’s ease of use it does spit some really cryptic errors sometimes. Namely one I’ve kept running into after changing over my domains to the new Shared Accelerators from Joyent which changed my SMTP information.

For some reason my new SMTP information just wouldn’t sync to my iPhone correctly - at best the server info will but the username and password were blank. I’m not 100% certain that the error is not exclusive to Joyebt’s email servers as I have seen it on another server as well - but when the username or password is wrong when attempting to send uemail you are presented with the following error:

“One of the recipient addresses was invalid”

Frustrating and exceedingly cryptic, but if I write it down then I might actually remember what the error means next time.

Showing Network Volumes in the Sidebar

At work I have a user that really, really was having a hard time with Network Shares being moved to under Network in Leopard instead of showing up with the rest of the Volumes as they used to in Tiger. After a bit of digging around I found the following information but failed to figure out how to create a script to automagically put Network shares in the Devices section of your sidebar but if you’re managing several computers it is possible to copy the com.apple.sidebarlists.plist file saving a lot of time.

When a network share is mounted in Leopard it does not appear in the Finder sidebar on it’s own - it is accessible via the server it is on if you have Connected Servers checked off in the Finder preferences. At work we have Back to My Mac, Connected Servers, and Bonjour Servers all hidden by default because they do little to assist anyone in finding anything. (Not to mention Back to My Mac isn’t used and Bonjour Servers lists every computer in the building). Your one alternative was to navigate back to the Computer (Command-Shift-C) and find your Volume there - instead what you can do is drag a Network share to your sidebar (or press Command-T when it is selected) where if mounted it will appear.

What I wanted to do was make it so they would automatically appear no matter what was connected - making the change more future proof. I ultimately failed to do so but I did learn the following tidbits about com.apple.sidebarlists.plist:

Under :systemitems:VolumesList (PlistBuddy syntax in use) you have a list of different hard drives and such that have been plugged into your computer - and if you happen to add a share to your sidebar this portion is what is changed.

Each Item consists of:

  • An Alias (Data) - This is the base64 decoded form of a _CFULRAlias (identical to as seen in com.apple.dock.plist)
  • EntryType (Integer) - I found the codes for several different types:
    16: Special Access (Computer, iDisk, Network)
    261: Hard Drive (and ZFS Pool)
    517: Time Machine
    515: USB Drive
  • Icon (Data) - Again this is Hex but if you have a hex editor (such as Hex Fiend) but is the form “ImgR? SYSL fldr” (Default Finder Folder icon) with two fields separating each section. The default for a server icon is: 496d6752 0000001c 00000000 5359534c 00000010 00000000 73727672
  • Visibility (string)(optional) - Can be NeverVisible or AlwaysVisible. In this case we want AlwaysVisible.

My big issue in not being able to figure it out was that I couldn’t figure out through research how to write the necessary alias data that is being looked for by com.apple.sidebarlists.plist . James Reynolds created the dockit.c program. Tweaking the program so it’s start and end points only included the CFURLAlias data (329 and 326 respectively) gave me the base64 encoded information that you see when editing an XML version of the Dock or Sidebarlists plists - but using PlistBuddy to input the information did no good.

So what I ended up doing instead was to use one computer to mount all the possible shares put them in the sidebar (since they’re hidden when not mounted it’s fine having shares that wouldn’t even be mounted) and then push out the changes via MCX. It’s not perfect but it works and it will make finding the shares much easier. I’m hoping this entry helps someone else on their search for getting such a script created.

Thanks to the following places for information:
CocoaDev (note: The Alias data when viewed in an xml plist is base64 encoded - but not in Property List Editor)
JeremyForPresident
MacOSXHints

Tethering your iPhone : Experiences

Update: Nov. 17th, 2008 - PDANet 1.4.0 allows VPN access, however at first look it doesn’t work correctly with VPN Tracker 5.

One of the biggest benefits of my iPhone that I’ve been waiting vainly to try was the ability to tether my iPhone to my laptop so I could access the net from anywhere in case of an emergency - whether it be a server at work or a life or death flash video that isn’t on YouTube. It’s also very worthwhile to note that this will suck your iPhone’s battery faster than anyone would like - for me it lasts about 2.5 hours as both the WiFi and 3G antennae are in heavy use.

It should be noted that all the present options require jailbreaking your iPhone which is not without its caveats and primarily a reason I want an official solution simply because if Apple breaks the jailbreak during an upgrade you’re forced to wait for the iPhone dev team (it’s amazing the work they’ve done) to be able to get a patch out so they can still jailbreak themselves. The good news on this front is the current jailbreak they have is quite resilient as the current jailbreak method they are using can’t be fixed with software. (Although iTunes 8 does look for jailbroken ipsws and tries to stop them). For more details on the jailbreaking process I recommend checking out the iPhone Dev Team’s Blog

PDANet 1.3.3

By June Fabrics PDA Technology Group
Homepage | Available through Cydia

Pros:

  • Very easy to use
  • Very little setup - only need to have the iPhone connect to your laptop’s created wireless network
  • Keeps working even after the iPhone’s screen has turned off.

Cons:

  • Does not work with VPN (deal breaker) - IPSec Passthrough does not work
  • Some Terminal commands do not work - eg. can not ping
  • Can not use your iPhone for anything else without disrupting connectivity.

Using ssh and SOCKS

Sample Instructions | Requires OpenSSH to be installed on your iPhone
Linked are some instructions on how to do this - I’ve done this before as a poor man’s VPN before so it was straightforward.

Pros:

  • Easy setup (as OpenSSH is installed by default when jailbreaking now)
  • Keeps working even after the iPhone’s screen has turned off. Not 100% reliable though.
  • You can still use your iPhone

Cons:

  • For those unfamiliar or comfortable with the Terminal it may be a bit confusing.
  • Does not work with VPN (deal breaker) - IPSec Passthrough does not work

3proxy

Sample Instructions | Available via Cydia

Very similar to simply using the ssh setup - but uses 169.254.x.x and port 1080 for your SOCKS Proxy.

Pros:

  • It works
  • Can still use your iPhone

Cons:

  • Requires more setup (downloading and installing 3proxy).
  • Requires use of Mobile Terminal. The instructions require force quitting Mobile Terminal, but if you added a & at the end of the command you could then run jobs -p when you want to quit, see the process id and type kill PID (where PID is that number that jobs -p gave you).
  • Does not work with VPN - IPSec Passthrough does not work

iPhoneModem zsrelay

Homepage | Part a download for OS X (or use PuTTY on Windows) and part iPhone app on Cydia.

Note: There is another iPhoneModem application by Addition that exists that costs $9.99 and as far as I can tell has nothing to offer that the free options here don’t have.

The Mac application side is only required if you’d like to secure the connection between your computer and the iPhone. It will use ssh to secure the connection between the two to start and then puts WEP on the ad-hoc network created as well to help discourage anybody jumping on to the network. (WEP may not be secure but the network I really doubt is going to be around for longer than a brief period of time).

Pros:

  • Nicest setup
  • You can still use your iPhone
  • Secure connection between your computer and the iPhone

Cons:

  • Harder setup in comparison to other options
  • Advanced Settings on the iPhone has a download counter that appears to reset whenever you leave that page but updates properly once more data is used.
  • As with all these options that just use proxies - VPN (IPSec) is not allowed over SOCKS.
  • Slow setup - and more involved.

NetShare

The original tethering application that was available on the App Store. I opted to not try and install NetShare on my iPhone because even though it’s not publicly available to buy anymore it’s still illegal.

Conclusions

Of the options available iPhoneModem zsrelay is the nicest setup with a good mix of security, ease of use and other features however the easiest to set up and use is hands down PDANet. The unfortunate portion for me is that none of them will allow me to use VPN Tracker to connect to the VPN server at work. Personally I’ll stick with PDANet as it’s the least invasive

Venus T5 : Benchmarks (ZFS versus Hardware RAID)

After trying out ZFS on a handful of fitful USB keys I pulled out the AMS Venus T5 a 5 drive SATA RAID enclosure with an eSATA port for plugging into the computer. The Venus T5 was outfitted with 5 x 7200RPM 1TB Seagate Drives for the test. I was curious as to what the difference would be

RAID 0 setting has them all striped together. The Single Drive results are an average from all 5 drives. To keep in with the previous post I still used date +%s for the timings instead of using the more accurate time command.

Standard Test (5 cycles):

Extended Test (5 cycles):

As seen in the ZFS test on the USB keys it’s quite obvious that QuickBench 4.0 is useless in benchmarking a ZFS formatted drive in comparison to other formatted drives. ZFS isn’t supported so it isn’t surprising.

As a continuation of a more consistent test we then copied a 903MB file (Xcode 2.5) and a folder of of 1500 0 byte files numerically named.

date +%s; cp ~/Desktop/SpeedTest/xcode.dmg DESTINATION; date +%s;
cp ~/Desktop/SpeedTest/*.txt DESTINATION; date +%s

With much better hardware the actual throughput information is a lot more interesting.

Messing with USB Keys: ZFS Fun and Shenanigans

In the quest to sate my curiosity of the viability of ZFS for replacing hardware RAIDs I gathered a few extra USB keys that were lying around my office in hopes to see just how much of a difference in terms of numbers one can find between a single USB key, a software RAIDed set and the new Zettabyte file system (ZFS) that will be more predominantly shown in Snow Leopard.

I used two identical Kingston DataTraveler 2.0 Media DTI/1GB keys. Key 1 reports 980MB, whereas Key 2 reports 984MB. I had originally 4 keys lined up to use, but the two other keys I had would not format. I am unsure why there is such a difference in reported size, and the two keys that wouldn’t format would both report 970MB.

Because ZFS is a software RAID I was comparing it to the software RAIDs created by Apple’s Disk Utility (Version 11.1 in Mac OS X Leopard 10.5.5). The ZFS installation was the 119 release that was put on MacOSForge on July 23rd, 2008 and is still very much under development as the Mac OS X port isn’t even complete yet.

All test performed using QuickBench’s Standard Test, which is a test that transfers several small files ranging from 4KB to 1MB:

Given the insane speed increase seen by ZFS (which I assume is greatly improved by it’s ability to use compression reducing the amount of I/O work) which makes the test sound horribly flawed I redid the test using the Extended Test in QuickBench 4.0.

Extended Test (20-100MB)

In this second test we were again getting wildly fast results that didn’t fit with reality - the files divisible by 30 were wildly faster than any other result.

Lastly a very simple copy using the command line copy:

date +%s; cp ~/Desktop/Reverie_Final_Cut2_midres.m4v DESTINATION; date +%s

As a baseline a simply copy on my 5400RPM drive in the MacBook Pro this was done on takes 11 seconds.

Caveats: The RAID 1 copy trials ranged from 13 seconds (subsequent trials) to as much as 39 seconds (the first copy). While ZFS was 11 seconds each and every time. Also the commands used are going to be imprecise - if I wanted it to be more accurate instead of easily out by as much as 1 second I would have used the time command.

As a continuation of a more consistent test we then copied a 903MB file (Xcode 2.5) and a folder of of 1500 0 byte files numerically named.

date +%s; cp ~/Desktop/SpeedTest/xcode.dmg DESTINATION; date +%s;
cp ~/Desktop/SpeedTest/*.txt DESTINATION; date +%s

So what does this all mean? From the first two tests we can see that ZFS does improve throughput but our standard QuickBench tests aren’t any help of determining how much because of ZFS' difference in dealing with files giving us consistent odd results. The more practical test of copying an H.264 file and the large file with many small files gave us inconsistent results. There isn’t anything concrete in my non-scientific results but I’m looking forward to Snow Leopard being released and ZFS becoming a full fledged filesystem citizen in the Mac OS - if only because with maturity ZFS might be a faster option for a RAID system.

Tomorrow the same file copying tests will be performed on a 5TB RAID connected to the computer via eSATA for kicks.

build_hd_index

I came across a process running on my iMac at home tonight that was consuming a fair chunk of RAM, and a consistent 40-50% of my CPU while accessing each and every hard drive I have hooked up. The process in question is called build_hd_index and is part of Apple’s built in Remote Management software in OS X.

The specific file can be found in /System/Library/CoreServices/RemoteManagement/ as part of ARDAgent.app (ARDAgent.app/ Contents/Support/build_hd_index) and is used by the program (Apple Remote Desktop Agent) to build user and applications reports to be sent back to Remote Desktop Admin (an Apple program for managing multiple computers that is awesome). The reason this was even turned on was that as part of an attempt to get a VPN server working I added my home computer to Remote Desktop Admin on my work computer. By default (as it’s set in my preferences and I believe always default) it will gather reports on certain data which run at midnight in order to cache the data on the computer running Remote Desktop Admin so you don’t have to requery such information every time you wish to look at it.

A quick Google search on build_hd_index showed several other people having issues with it suggesting ways to neuter the process (which would break System updates) or other attempts to disable it.

To turn it off, on every computer running Remote Desktop Admin you need to tell it to stop collecting data (Get Info on the computer) or you can force this by removing the plist file in charge of ARDAgent at /Library/Preferences/com.apple.ARDAgent.plist . More of this is covered in detail in Apple’s KBase article.

So as of a result, since my work computer is a laptop and is not on, let alone at work at midnight I’ve turned off uploading information at scheduled intervals - however I still want my work computers to cache the data as the information is useful to debugging why something may be happening.