My First Mountain
I live along the Wasatch Front which is surrounded by beautiful mountains. Not quite as pretty as the Tetons in Wyoming perhaps, but I’ve always wanted to climb the nearby Mount Timanogos.
Of course, I thought I’d start with one of the smaller mountains closer to Spanish Fork and work up to the 12.4 mile round trip hike up Timpanogos. But when my employer Mozy sponsored a company hike, I decided I’d jump on the bandwagon. About 20 people took the hike that day, including two who got to the top (the vertical elevation gain is almost a mile at 4,652 feet) in less than two hours.
I started out keeping up with those guys. I’m sure that the embarrassment of having a newcomer like myself tagging along is what caused them to pull ahead after about 10 minutes. Yeah, that was it.
We hit the trail at 6:17am. In my rush to keep up at first, I didn’t notice much of the scenery. But it’s a gorgeous hike.
The trail consists of the following:
- Steep climb
- Bushy semi-flat walk
- Steep climb
- Meadowy semi-flat walk
- Really steep climb
This is the view of the top (on the right) from the second meadow area. Well, I thought it was the top. It turns out that you can’t actually see the peak from here. It’s a higher point behind the peak on the right. There’s nothing quite like thinking you’re at the top only to to realize you aren’t.
From the meadow, you go up this trail to the saddle where you can see Utah Valley for the first time.
This is what the trail up to the saddle looks like from the peak. The saddle is just above and to the left of center.
The climb from the saddle to the peak was, by far, the most exhilarating part of the hike. Slower going and entirely rock, but with victory close at hand.
Reaching the top was awesome. I got there in 3 hours 23 minutes.
Five of us summitted fairly close together. Mark (back left) took much better pictures with the nice camera he lugged the whole way up.
After getting down, I found out that Mount Nebo is actually the tallest peak in the Wasatch Front (and Utah County). Since Nebo is about as far south of me as Timpanogos is north, I guess it’s next on my list. Just need to get rid of this limp first.
When It’s Okay to Hit Someone
A while back, I found my boys arguing with each other. As I was about to intervene, one hit the other. Normally, this happens only when something incredibly important is at stake. In this case, I think it was over who got to play with a particular Lego figure. R2-D2 is pretty cool, so I can see why they were arguing. :)
I took the hitter up to his room and explained that hurting his brother wasn’t acceptable. After some time to cool down, they were friends again and everything turned out alright.
The conversation got me thinking though. There are times when it is okay to hurt someone else. I realized I wasn’t being fair to my kids by telling them it was never alright to hit people. I don’t want them to shy away from protecting themselves or others who need it, if that time ever comes.
I knew that discussing the principle of justified violence would be over their heads. So I came up with 3 simple rules my kids need to follow before hitting someone.
- They are hurting you or someone else
- You ask them to stop and they don’t
- You try to get away and can’t
As far as I can tell, these rules cover the situations where I’d want them to act — mostly in defense of themselves or others who are being hurt. When they get older, I’m going to teach them how to hit so they won’t be afraid to act if they ever need to.
When one of my kids has forgotten the rules, I’ve been able to review them as part of the discussion about why they’re in trouble. And they get it. Even my 4-year-old understands.
The list has worked well for us. It helps my kids pause to think before acting when they’re angry. And each of them realize there is a line beyond which they’re going to get smacked without any protection from Dad. :)
Duck Creek Village
A few weeks ago, our family spent a few days at a cabin in Duck Creek Village, UT with Cheryl’s family. We rode ATVs, visited some cool cliffs, hiked around several lakes and rented a boat somewhat spontaneously. And we took advantage of the gathering to take family pictures.
I think the kids really liked riding the ATVs. It was scary for them at fist as they learned. By the end, the level of fear (and caution) had dropped noticeably. The boys both liked the motorboat too. They each took a turn steering.
Of course the best thing was playing with their cousins, aunts, uncles and grandparents while exploring the forest, discovering stuff and having new experiences.
See more pictures in our picture gallery.
How to Create an Alias Programmatically
First, a disclaimer. Apple will warn you not to do this. The only supported way of creating an alias is to use the Finder. If you must do it programmatically, you will be told to use AppleScript. But if AppleScript won’t work for you, and a simple Cocoa method is what you want, read on.
Mozy’s Mac client doesn’t create aliases, but our customers do. We want to make sure our software backs them up correctly. So we added some unit tests to our build process that create aliases and check to see that Mozy handles them correctly.
We first used AppleScript, but ran quickly into two issues:
Our build server runs as the root user, which doesn’t have a UI context. AppleScript doesn’t work without a UI context.
Even running as a normal user, AppleScript cannot access the system temporary files location (/tmp) which is where we wanted to create our aliases.
That’s when the fun began.
I spent quite a bit of time failing to find the right bit of magic to create an alias that functioned properly in Finder. It turns out that an alias is a data structure inside another data structure stored in the resource fork of an empty file. Those structures need to have the correct record types for everything to work.
Having gone to the trouble of figuring this out, I thought I’d share. This code creates an alias for a folder, but it should serve as a good template if you need to create another type.
- (void)makeAliasToFolder:(NSString *)destFolder inFolder:(NSString *)parentFolder withName:(NSString *)name
{
// Create a resource file for the alias.
FSRef parentRef;
CFURLGetFSRef((CFURLRef)[NSURL fileURLWithPath:parentFolder], &parentRef);
HFSUniStr255 aliasName;
FSGetHFSUniStrFromString((CFStringRef)name, &aliasName);
FSRef aliasRef;
FSCreateResFile(&parentRef, aliasName.length, aliasName.unicode, 0, NULL, &aliasRef, NULL);
// Construct alias data to write to resource fork.
FSRef targetRef;
CFURLGetFSRef((CFURLRef)[NSURL fileURLWithPath:destFolder], &targetRef);
AliasHandle aliasHandle = NULL;
FSNewAlias(NULL, &targetRef, &aliasHandle);
// Add the alias data to the resource fork and close it.
ResFileRefNum fileReference = FSOpenResFile(&aliasRef, fsRdWrPerm);
UseResFile(fileReference);
AddResource((Handle)aliasHandle, 'alis', 0, NULL);
CloseResFile(fileReference);
// Update finder info.
FSCatalogInfo catalogInfo;
FSGetCatalogInfo(&aliasRef, kFSCatInfoFinderInfo, &catalogInfo, NULL, NULL, NULL);
FileInfo *theFileInfo = (FileInfo*)(&catalogInfo.finderInfo);
theFileInfo->finderFlags |= kIsAlias; // Set the alias bit.
theFileInfo->finderFlags &= ~kHasBeenInited; // Clear the inited bit to tell Finder to recheck the file.
theFileInfo->fileType = kContainerFolderAliasType;
FSSetCatalogInfo(&aliasRef, kFSCatInfoFinderInfo, &catalogInfo);
}
I consider this code to be in the public domain. Please feel free to copy and paste. And let me know if you find any problems or have suggestions.
If you need a complete solution, Nathan Day wrote a nice set of classes called NDAlias. We didn’t want to import 9 classes for just a handful of unit tests.
I later found some of Apple’s sample code from 1999 demonstrating a similar approach. I think our Objective-C example is much easier to use.
WordPress After 8 Months
Early this year, I switched from Movable Type to WordPress for my blog. I’ve been very happy with that decision. So I thought I’d give an update on how I feel after using WordPress for eight months.
First, I should say that the speed issue hasn’t bothered me like I thought it would. I haven’t added caching, but may still do so at some point. Let me know if things feel slow.
Second, I’ve changed the which plugins I use, so let me give you the current list.
- NEW — Twitter Friendly Links let’s me use my own domain for short URLs instead of Bit.ly or TinyURL.com
- NEW — RF Twitter Post will update Twitter when I write a new post. I’m testing this one and hoping the next version adds support for Twitter Friendly Links
- NEW — SexyBookmarks makes it easy for readers to share things they find interesting
- Aksimet filters comments from spammers of which there are many
- All in One Adsense and YPN handles the ads on my site though I have them turned off now
- FD Feedburner Plugin lets me use FeedBurner for my RSS feeds
- Google Analyticator adds the Google Analytics tracking code
- KB Robots.txt allows me to add my sitemap to my robots.txt file
- Markdown allows me to write using Markdown syntax
- Recently Popular highlights what posts people find interesting
- Simple Google Sitemap automatically creates a sitemap for me
- Twitter lets you know exactly what I’m up to at all times
- WP-DB-Backup makes it easy to back up the content on my site
- Yet Another Related Posts Plugin suggests additional posts that relate to the one you’re reading
Since January, I’ve stopped using Automatic Timezone because putting WordPress 2.8 and PHP 5 together makes the daylight savings time magic work.
Third, I was able to find several WordPress themes that I liked and get them installed fairly easily. And switching between them is simple.
Overall, I’m still very happy.
2009-12-05: I spent some time optimizing WordPress which you can read about here.
Changes in Mozy for Mac 1.4
The Home and Pro versions of Mozy for Mac 1.4 are out. We’ve been working on this since January, and it feels great to finally get it out the door.
The major change in this release is the new file scanner. We’ve greatly improved how Mozy looks for and keeps track of files that need to be backed up. The release has been enabled this afternoon for new customers and existing customers which manually upgrade using the links above. Auto-update will be turned on for all existing Home and Pro customers shortly.
Since we don’t have an official place for showing our Home users a list of what’s changed, I’m including the full list here.
Enhancements
- Improved overall performance and stability for file selections and backups
- Added menu option to automate the collection of log files
- Moved Preferences to global System Preferences
- Improved sorting of the Files and Folders Configuration window
- Improved the behavior of saving and canceling in the Configuration window
- Added a new icon to indicate partially backed-up folders in the Configuration window
- Added menu item to start a backup from the Configuration window
- Added the ability to create backup sets to exclude files
- Added the ability to sort by column in the Backup Sets window
- Updated online guides
- Added menu item to send product feedback or suggestions
- Improved appearance of menu bar icons and other graphics
- Improved speed of file preparation
- Added the ability to use the escape (ESC) key to close the Configuration window
Bug Fixes
- Fixed rare case of file changes not included in backup
- Fixed several “database is locked” and “database disk image is malformed” errors
- Fixed memory leaks
- Increased the accuracy of the bandwidth throttle
- Fixed creation date issue for restored files
- Fixed problem with excluded folders being backed up
- Fixed an issue limiting the amount of custom backup sets
- Fixed an issue when the user restarts the computer before completing installation
- Removed redundant column in the Backup Sets window
- Fixed an issue restoring a file with a resource fork
- Fixed an issue restoring a file with identical copies being backed up
- Fixed the occasional “ClientError15″ error caused by stopping a backup in progress
- Fixed “no files selected for backup” message from mistakenly being displayed in the Configuration window
- Fixed some Snow Leopard compatibility issues
UPDATE: We’ve got an official announcement on Mozy’s blog. I updated the links to point to the 1.4.3 release, which has fixes for OS X 10.4 and Time Capsule.
Mozy Coupon for July
Mozy is offering 10% off new annual and bi-annual subscriptions for MozyHome Unlimited and MozyPro this month. Just type JULY into the referral box when you sign up.
If you’re interested in Mozy’s free 2GB of online backup, just sign up for a MozyHome Free account. I’d recommend using someone’s referral code as you’ll both get an extra 256MB of space. If you can’t find a referral code online, you can use mine which is 56EEVL. But Mozy employees get free accounts so try to hook someone else up if possible.
And if you’re a Mac user interested in helping us beta test the Mozy for Mac 1.4 release, please drop me a line at dan at mozy dot com.
Review: AppleTV
I’ve been using an TV (also known as AppleTV for those who lack Shift-Option-K goodness) for about a year now. It’s a great little device with a couple of really annoying flaws.
The Good
I like that It’s small, about an inch tall and eight inches on each side. It has an HDMI video output, and both optical and analog sound outputs. It can play almost anything in my iTunes library.
The best thing is probably the screensaver where pictures from your iPhoto library float up the screen. We hardly ever look through our “digital albums” on the computer, and it’s nice to have an easy way to see all those pictures.
The Bad
In order to play properly on the TV, movies have to be below a certain quality. iTunes will play high-quality movies that the TV ignores. The TV handles most mainstream movie formats, including H.264. But it is not upgradable unless you’re willing to tinker a bit. I’d like to see support for Netflix, Hulu and others built-in.
The parental controls option prevents purchases, but does not hide anything nor prevent previews. I assume the only reason to include that feature is for kids, so why not just hide filtered content completely? If I want to watch something else, I’d be happy to put in my passcode to see the filtered content. Since the filtered content is not hidden, the whole feature seems nearly useless for me.
The Ugly
The TV never sleeps. Which means it always seems hot enough to roast an egg. I would really like an option to “sleep after so many minutes.” Or at least have it turn off the hard drive. It’s hard on the drive and wastes energy. Unlike the TV, I do sleep at night.
The worst thing is how slow the navigation feels on occasion. Even with the most recent software update, there is way too much stuttering and jumping. I suspect this occurs because I am streaming content from my iTunes library on another computer.
I could avoid streaming if the hard drive in the device was bigger. Or if it was semi-easy to put in a new one. Or if it supported external drives connected via the USB port. It doesn’t happen all the time, but waiting even 3 seconds for it to respond is really annoying.
Conclusion
Overall, I like my TV. It’s really easy to setup, and gives me a simple way to watch or listen to media stored on my computer. A Mac mini would work too, but is more expensive. It also lacks an HDMI output. And I worry that my kids would be confused if it ever dropped out of Front Row, the TV-like software that comes with Macs.
On the other hand, a mini is a computer which makes it easy to customize. It would allow me to watch streamed movies and rented DVDs (the TV lacks a DVD player). I wonder why Apple doesn’t allow the TV to play DVDs that are in another computer sort of like they do with the Macbook Air.
If I had my purchase to do over again, I’d certainly get an TV or a mini. Just not sure which one. What I’d like is a mini with an HDMI port.
Pictures: Winter 2009
I’ve uploaded some new pictures to our gallery. The first album is from the trip my wife and I took to Park City this winter. Thanks for babysitting, Mom and Dad.
The next album is one of our sledding trips to the nearby elementary school. Grandpa came with us on this trip, and I think he ended up doing most of the work. :)
Next is our trip to the nearby dinosaur museum at Thanksgiving Point. They claim it’s the largest dinosaur museum in the world. I believe it.
Last is one from my son’s T-ball game. He’s having a great time, though he still prefers jumping on the trampoline over playing catch.
























