Skip to content

Recent Articles

12
Sep

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.

Copyright (c) Eric Ward. Used by Permission.

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.

Starting the hike

Pheasant overlooking a valley

One of the waterfalls crossing the trail

The trail consists of the following:

  1. Steep climb
  2. Bushy semi-flat walk
  3. Steep climb
  4. Meadowy semi-flat walk
  5. 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.

The peak from the second meadow

From the meadow, you go up this trail to the saddle where you can see Utah Valley for the first time.

Trail up to the saddle from below

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.

Trail up to the saddle from above

View from the saddle

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.

Trail from saddle to peak

Reaching the top was awesome. I got there in 3 hours 23 minutes.

Me on the very top

Five of us summitted fairly close together. Mark (back left) took much better pictures with the nice camera he lugged the whole way up.

Mark, Jamie, me, Derek and Corey

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.

8
Sep

How to Value Stock Options

During my career, I’ve worked for five startups, one larger company and one startup that was acquired by a large company. I was offered or promised stock options each time I joined a new company except once. I didn’t know what they were worth, so I usually discounted them when making a decision.

It turns out that the most likely value of stock options in a startup is zero. Things do work out sometimes. And when they do, it can be great. But mostly they don’t. Options at an already-public company are a different matter since you can be sure you’ll be able to sell your stock eventually.

Here is my rule of thumb for estimating the value of stock options at a public company:

Value = Number of Shares * Exercise Price * .4

For example, if the company’s share price is $10 and the grant is for 1,000 shares, the approximate value is 1,000 * $10 * .4 = $4,000. Since options typically vest over four years, I would count this grant as $1,000 per year for four years. This assumes I don’t sell any of my shares until the end of the four years.

The .4 factor comes from estimating how much the company’s stock price will go up over the next four years. From 1871 through July 2009, the S&P 500 Index has gained 8.7% per year which, if compounded annually, gives you about 40% over four years.

Of course, life doesn’t always happen as planned. This rule helps me figure out a reasonable estimate of value so that I can make a decision and move on.

UPDATE: Ironman at Political Calculations, created a nice calculator based on my thoughts and added some insightful comments.

7
Sep

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.

  1. They are hurting you or someone else
  2. You ask them to stop and they don’t
  3. 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. :)

7
Sep

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.

Dan and Cheryl

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.

Steering the Motorboat

Of course the best thing was playing with their cousins, aunts, uncles and grandparents while exploring the forest, discovering stuff and having new experiences.

Twins

Island in a Lake

Cousins on a Log

I Found a Rolly Polly

Getting Her Feet Wet

See more pictures in our picture gallery.

27
Aug

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:

  1. Our build server runs as the root user, which doesn’t have a UI context. AppleScript doesn’t work without a UI context.

  2. 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.

25
Aug

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.

  1. NEWTwitter Friendly Links let’s me use my own domain for short URLs instead of Bit.ly or TinyURL.com
  2. NEWRF 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
  3. NEWSexyBookmarks makes it easy for readers to share things they find interesting
  4. Aksimet filters comments from spammers of which there are many
  5. All in One Adsense and YPN handles the ads on my site though I have them turned off now
  6. FD Feedburner Plugin lets me use FeedBurner for my RSS feeds
  7. Google Analyticator adds the Google Analytics tracking code
  8. KB Robots.txt allows me to add my sitemap to my robots.txt file
  9. Markdown allows me to write using Markdown syntax
  10. Recently Popular highlights what posts people find interesting
  11. Simple Google Sitemap automatically creates a sitemap for me
  12. Twitter lets you know exactly what I’m up to at all times
  13. WP-DB-Backup makes it easy to back up the content on my site
  14. 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.

3
Aug

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.

2
Jul

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.

20
Jun

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.

14
Jun

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.

Park City 2008

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. :)

Sledding 2008

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.

Dinosaur Museum 2009

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.

Dinosaur Museum 2009