130724Time Machine Auto-mount/unmount Drive OS X

I have a USB backup drive connected through my monitor to my Macbook Pro and I often find myself wanting to quickly unplug and go without the consequences of the drive not being ejected properly. As well, I need the drive to be mounted so that Time Machine can do its automatic backups.

Well I found a way to avoid having to manually mount and unmount (eject) my drive by using shell scripts and LaunchAgents to achieve the task. The added benefit is that I have control over the timing of the frequency of the Time Machine backups too!

Note: This works on OS X Lion or later. There is one caveat, in that when attempting to restore files from your Time Machine drive, you will need to disable the launch agents, as well you should re-activate Time Machine in the system preferences so that the system recognizes the drive for restore purposes.

Step 1

Create a plain text file named timemachine_mounter.sh with the following contents:

# Set the drive name that we mount for our backups 
vol_mount="Time Machine"
# Conditional argument: if mounted entry has the volume name in the variable string
if ! mount | grep "$vol_mount" ; then
	# Drive isn't mounted, so: mount. A LaunchAgent will pick this OnMount action up and run the backup script
	diskutil mount "$vol_mount"
	# Drive is mounted, so: run the backup script

Save the file in the /usr/local/bin/ directory at the base of your system drive. You may need to first save the file to your desktop then use finder to move it to that directory, it will ask to authenticate. Or use sudo in Terminal to move the file there instead, and make sure that ownership belongs to you (the user that logs in), in my case the assigned user:group was mike:staff.

Step 2

Create a plain text file named timemachine_backup.sh with the following contents:

# Set the drive name that we mount for our backups 
vol_mount="Time Machine"
# Conditional argument: if mounted entry has the volume name in the variable string
if mount | grep "$vol_mount" ; then
	# Drive is mounted, so: backup and then eject after
	tmutil startbackup -b && 
	diskutil unmount "$vol_mount"

Save the file in the /usr/local/bin/ directory again with the same ownership credentials as the previous script.

Step 3

Create a plain text file named com.apple.TimeMachine_OnLoadSchedule.plist with the following contents:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">

Save the file in the ~/Library/LaunchAgents/ directory inside your User folder/directory (~/).

What the above file does is register in the system to run the mounter script:

  • when I first log in
  • consecutively every 2 hours

Step 4

Create a plain text file named com.apple.TimeMachine_OnMount.plist with the following contents:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">

Save the file in the ~/Library/LaunchAgents/ directory as well.

What the above file does is register the system to run the Time Machine backup script whenever the drive gets mounted. This can happen when:

  • I physically connect the drive
  • the scheduler LaunchAgent above, runs the driver mounter script

In Terminal, make sure the shell scripts are executable, unload the default plist (if you didn't turn off your Time Machine automatic backups in the System Preferences) and finally load the new LaunchAgent in your local LaunchAgent startup folder:

chmod +x /usr/local/bin/timemachine_*.sh
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.backupd-auto.plist
launchctl load ~/Library/LaunchAgents/com.apple.TimeMachine_OnMount.plist
launchctl load ~/Library/LaunchAgents/com.apple.TimeMachine_OnLoadSchedule.plist


You can change the com.apple.TimeMachine_OnLoadSchedule.plist's integer value for the starting interval 7200 integer to something more reasonable (e.g., 3600 seconds is one hour,... multiply at will.) I have my backups run every two hours.

The good thing about using a LaunchAgent is that:

  • if your computer goes to sleep or is shut off, the backup will begin at the next time you log in and reset the countdown from that point onward
  • if Time Machine is already running it won't try to run the process until the next projected sync time
  • if the drive is freshly connected or mounted already, Time Machine will begin backing up your changes and eject after its done
Share Button

121126Welcome to Health Quality Ontario–a website by Mike Kormendy

We've finally launched our website.

A year's worth of design, programming and collaboration comes to the forefront. I couldn't be happier to have produced something as complicated and successful. With the help of my colleagues at HQO, we were able to populate over 1000 pages of content into a refreshed bilingual format for the web.

I documented my design process and construction throughout the project and plan to organize that into a post at a later time. In that process I broadened my knowledge and added a lot of experience to my repertoire in the realm of Microsoft based server technologies such as .NET, C# and the CMS framework DotNetNuke. I am proud to launch this website to the public and I hope this can be a useful tool of information for everyone in the future.

Please visit my efforts: http://www.hqontario.ca

Share Button

121017Find Out About Ontario’s Long-Term Care Homes

Today, Health Quality Ontario’s Long-Term Care Public Reporting Website was refreshed with home-level data for all 630+ long-term care homes in Ontario. This is a first for the province – in fact, HQO now hosts the most comprehensive long-term care public reporting website in Canada. Any member of the public who is interested in long-term care quality in Ontario can go to the HQO website, look up a home of interest, and review that home’s performance on falls, pressure ulcers, incontinence, and restraints. Updated results for 9 of the 12 provincial-level indicators we report are also available as of today.

I'm very happy to have played an instrumental role in bringing the project this far, what started out as a simple design refresh, became an integrated team effort of success with many colleagues at Health Quality Ontario.

Please Visit: http://www.hqontario.ca/en/reporting/ltc/

Share Button

120927Font rendering issues on Google Chrome on OS X

There seems to be a small problem with many websites viewed in the latest version of Chrome on OS X as of recently (version 22.0.1229.79, updated on September 26, 2012).

The issue, documented here on the chromium issues tracker, talks about the fonts looking slightly more bold, or heavier, thicker and sometimes fuzzy due to a small repair job done on CSS -webkit-font-smoothing property that many web designers and developers were using to make their custom web-font typefaces render as intended by the glyph outlines in the fonts that they embedded on their websites.

bungeman@chromium.org reports that the bug where it also affected the weight of the text as a side effect has been fixed.

He also mentions that the additional weight of the typeface is rendered on purpose by the CoreGraphics API on OS X. There is a setting on the system that smooths text for LCD monitors, dialating the glyph outline by a factor of two, and that there was in fact a bug with the previous -webkit-font-smoothing: antialiased CSS property that ignored the CoreGraphics doubling of the dilation effect and rendered the font to its intended outlines without any smoothing.

Now that the bug has been fixed in Chrome's code, the antialiasing bug is no longer dismissing the CoreGraphics LCD smoothing and therefor the fonts look heavier.

There isn't a straightforward solution to fix the bolding of type on webkit browsers on OS X, however one might try addressing Apple OS X's CoreGraphics LCD font smoothing directly by turning off your system's LCD smoothing in System Preferences (under Appearance or General Settings), or with the following command in Terminal and restarting your browser.

defaults -currentHost write -globalDomain AppleFontSmoothing -int 0

The default when using lcd smoothed text is 2. To reset to the default value, use this command:

defaults -currentHost write -globalDomain AppleFontSmoothing -int 2

Note: This won't modify the way your website is viewed on other people's computers with OS X and webkit-based browsers. This only affects your ownlocal OS X system LCD font smoothing rendering.

Update: apparently the Chrome team is going to revert the fix to a planned bug so that they can buy themselves time to release a proper solution.

Share Button

120604Proper MIME types for Embedded @font-face Fonts

Article Update: August 16, 2013 Article Update: October 1, 2012 After some exhaustive research, I managed to find the best server settings for serving web fonts. This article replicates my comment in reply to this question on the Stack Exchange forum. There are a number of font formats that one can set MIME types for, on both Apache and IIS servers. I've traditionally had luck with the following:
svg  as "image/svg+xml"
ttf  as "application/x-font-ttf" or "application/x-font-truetype"
otf  as "application/x-font-opentype"
woff as "application/font-woff" (per my August 16, 2013 update below)
eot  as "application/vnd.ms-fontobject"
According to the Internet Engineering Task Force who maintain the initial document regarding Multipurpose Internet Mail Extensions (MIME types) here: http://tools.ietf.org/html/rfc2045#section-5 ... it says in specifics:
"It is expected that additions to the larger set of supported types can generally be accomplished by the creation of new subtypes of these initial types. In the future, more top-level types may be defined only by a standards-track extension to this standard. If another top-level type is to be used for any reason, it must be given a name starting with "X-" to indicate its non-standard status and to avoid a potential conflict with a future official name."
As it were, and over time, additional MIME types get added as standards are created and accepted, therefor we see examples of vendor specific MIME types such as vnd.ms-fontobject and the like. Update October 1, 2012: I've been in touch with some of the people at Monotype and Extensis who watch the W3C www-font listserve. Vladimir Levantovsky from Monotype mentioned to me that the media type “application/font-woff” has been discussed and approved by the W3C WebFonts WG, and as such is now the part of the WOFF spec. However, to the best of his knowledge, it has not yet been registered with IANA. Thomas Phinney from Extensis mentioned as well that he was recently discussing this among the engineering staff at Extensis the other day, and the conclusion was that having a real, dedicated MIME type for WOFF and fonts in general would be a good thing, from their point of view. Update August 16, 2013: On January 3, 2013 the WOFF MIME Type was formally registered as application/font-woff with IANA. Consequently, Webkit has been updated and browsers that incorporate this Webkit update (e.g., Chrome and Safari) will likely be showing an error that displays something like: "Resource interpreted as Font but transferred with MIME type application/x-font-woff: /location/of/font.woff" in your Developer Tools Code Inspector. To fix this, you need to change the media type on your server to “application/font-woff”. Since the warnings are only annoying I would recommend switching to the approved MIME type right away. In an ideal world, the warnings will resolve themselves in time. With that said, we may see an entirely new set of protocols for servers serving web-fonts, which may include things like security, management and new architectures for font storage on the server side. Stay tuned!
Share Button

120425Separate WordPress dashboard URLs for multisite domain mapped sites

I have multisite and domain mapping setup on my WordPress.

I'm hosting one of my friends websites on it and want to have the experience as close to a separate install as possible.

I have the main site going to http://website1.com/ and when I want to administer that site, I just visit http://website1.com/wp-admin/

However, I have a sub-site, domain mapped to http://website2.com/ and I want to administer it within the domain realm http://website2.com/wp-admin/

For the most part, http://website2.com/wp-admin/ works when entered into the browser, but immediately redirects to http://website1.com/website2/wp-admin/ and any subsequent pages fall under that structure.

How do I get the subsequent structure of admin pages to appear to come from http://anotherwebsite.com/wp-admin/ and not http://somewebsite.com/anotherwebsite/wp-admin/ ?

Well, after a lot of searching on google with different query terms, I finally found out that there is a setting in the domain mapping that already does this.

The following link explains it a bit better:


  1. Go to Network Admin > Dashboard > Settings > Domain Mapping
  2. Under Domain Options, uncheck #1 (Remote Login)
  3. Under Domain Options, uncheck #4 (Redirect administration pages...)

That should do it.

Additionally, I enabled option #2 and #3 and unchecked #5.

This makes sure that:

  1. search engines recognize the redirect as permanent 301 (not temporary 302)
  2. the users have access to the domain mapping settings in wordpress
  3. if you have various domain names mapped to one of the sites on your network (they act like separate aliases or sites), unchecking #5 will make sure that they act like one site by redirecting them to the primary domain name mapped for that site on your network.
Share Button


Grun·Built Brand LogoI'm working on a new website for Joel Greenwald's construction company called Grun·Built. In about 20 minutes I've put together a very rudimentary splash-page featuring some resizing full-screen imagery to showcase some of his work. Check it out and check back in about a month's time, we'll have some more content up for people to see as well as some details on Joel's amazing work with HGTV's Curb Appeal this past January.
Share Button