Elk in Estes Park

I went up to Estes Park over Thanksgiving weekend with my family.  While I was there I got a chance to take some pictures of the Elk heard in town right at sunset.  They were mostly hanging out and grazing, but a couple of the males were sparring.  Some of the picture are below, you can find the rest here.

Photo & Video Sharing by SmugMug

Hiking with a DSLR - Part 2

Two years ago I wrote a blog post about Hiking with a DSLR.  I had just recently moved to Colorado and was enjoying all the great hikes but struggling with how to take my camera with me in an unobtrusive but accessible manner.  Since then I've tried a few new options and thought I would write an update.

My camera is a still the Nikon D300, and my primary hiking lens is the Nikkor 17-55 2.8.

First, I supported the Capture Kickstarter project.  I ended up purchasing two of them and found they were a pretty good solution for smaller cameras.  However, with my D300 and the 17-55 2.8 the camera and lens were just a bit too heavy for longer hikes.  I ended up giving these to my Dad, who has a D40 with some reasonably sized lenses and it works great.  I also like the Capture because the camera mount is Arca-Swiss compatible, so you can keep a single bracket on your camera and switch between the Capture and a tripod.  The kickstarter is long over but you can find them at peakdesignltd.com

The original Cotton Carrier (vest) was an good solution, but the chest harness was pretty bulky.  I certainly used it quite a bit, but something smaller and less obtrusive was appealing.  I bought the holster and liked it, but it was better for casual walks than hiking.  You really don't want something bumping against your legs on a long hike.

I'd also found that over time I was slightly annoyed by the solution I came up with to put the Cotton Carrier hub on the camera.  Here is what I wrote before:
I looked into using quick release plates with my Cotton Carrier and realized all I needed was an additional clamp.  You simply screw the Cotton Carrier round attachment to the Clamp, and then you simply clamp the clamp to the camera.  This approach increases the distance from the camera to the carrier a little, but I didn't find it to be a problem.
Since then, Cotton Carrier came out with a newer solution, the StrapShot.  They were nice enough to send me one, and I was intrigued.  It is essentially a competitor to the Capture, but uses the Cotton Carrier hub solution instead of the Capture locking system.  You simply mount the StrapShot on any strap (I put it on my day pack's shoulder strap) and then put the camera on it.  It comes with safety strap and a hand strap, which I really liked and now is now my main 'camera strap' for casual use.

However, I still wanted an Arca-Swiss plate on my camera full time, and the use of the clamp/Cotton Carrier Hub was just bulky enough to turn me off.  But Cotton also has 'Universal Adapter Plate' that mounts to your camera and provides Arca-Swiss style mounting with a Cotton Carrier Hub.  This removed much of the bulk in mounting the camera and has become my permanently installed camera bracket.

So I am pretty happy at this point with the StrapShot + Universal Adapter Plate solution.  It allows me to comfortably carry my camera while I hike, keep the camera Tripod ready, and still use the holster or my Rapid Strap for more casual outings.

I'm sure that there will be even better solutions in another two years, but for now I feel that I have a very solid solution.

Note: I purchased two Captures, the Cotton Carrier Vest and Holders, and various adapters myself, but Cotton did provide me with the StrapShot and Universal Adapter plate.

What you may not understand about your compensation...

There was a small wave of excitement on twitter this week about employee benefits.  Specifically, FullContact announced Paid Paid vacation.  Essentially, not only do they provide you with vacation time (ie Paid time off), but they will pay for your vacation itself, in the form of $7,500 'bonus' in salary (taxable of course).

This is a great marketing, as it drove a lot of social media traffic to their business yesterday.  I'm sure they yielded a lot of new applicants, and probably some new sales leads as well.  Nicely done.

However, I will take a skeptics view of this and share how I see this from the business side.

1. At the end of the day, the business looks at the total cost of an employee.  This includes salary, taxes, medical coverage, training, paid time off, and misc benefits as a whole number.
2. Businesses are run on margins.  You must take in more revenue than you pay out in expenses.
3. Employees are an expense.

Ok, so #2 assumes you are running a profitable business.  It seems that FullContact also announced an additional 7M in funding this week as well, so the whole margin part can be set aside as they are not profitable, or at least are in 'growth mode' where profits are sacrificed for market share.  This doesn't mean that they can't make it all work, but let's agree that their model is not YET stable.

So at the end of the day, a company can afford to set aside a certain amount of its income to employee compensation.  Some companies set out more money than others.  Companies then choose how to allocate this money.  For example, a theoretical competitor to FullContact may choose to simply pay every employee a higher salary instead of offering a Paid Paid Vacation benefit.

My point is simply that the allocation of money within the benefits package is essentially a 0 sum game.  A company may choose to offer more vacation, more cash, better health coverage, etc.  But these decisions are mostly done separately from determining how much the company can afford (and chooses) to spend on its employees.

I don't think there is anything wrong with FullContact's announcement, plan or structure.  I think they did a great job of garnering a lot of attention for their business, well timed with a new round of funding.  Nice work.

My point is simply that when you evaluate a company or package, realize that everything costs money, and look for a company that has their compensation package well aligned with what you value.

I believe the most transparent approach to compensation packages is a flexible 'points' model.  Essentially, employees get a certain number of points, and can use them to buy the benefits that are important to them.  If you want more vacation, use your points on that.  If you want more salary, apply your points to your salary, etc.  While this is really an ideal plan as it enables the employer to get the most employee value for each dollar it spends, it is more costly to setup and administer, which may be prohibitive for smaller firms.

Predictions: The Future of Amazon

As a customer and fan of Amazon, I've been watching the company grow and develop for a while.  Based on my experiences and observations, I've come up with a picture of the not-so-distant future that I believe will (mostly) come to pass.


Setting aside their thriving Cloud Computing business, Amazon primarily sells consumer goods and digital entertainment (E-Books, Songs, Movies, TV Shows, and Android Applications).

Amazon has created a strong incentive to purchase digital contents through their store.  They offer hardware dedicated for e-books (the Kindle line) as well as a 7" Android tablet for apps, music, e-books, and video.  However, they do not lock you into their platform.  You can read an Amazon e-book on Android devices, iOS devices, and your computer.  You can stream Amazon shows and movies to various set-top boxes.  Compared to Apple or Google's online offering, they have the most complete and consumable content available, usually for the lowest price.

For physical goods, they have created a similar draw.  Their Amazon Prime program is a genius approach to lock in customers.  For $79 a year, your entire household can have everything they order from Amazon* delivered 2nd day, FOR FREE.  Couple this with the lack of Sales Tax, ordering something from Amazon is almost always cheaper, and usually more convenient than going to a retail store.  If you are really in a hurry, you can pay $3.99 per item to have it delivered overnight.

This eliminates most comparison shopping by Amazon Prime customers.  If you've paid the $79, and are ordering it online, you will almost always start with Amazon, and usually will not spent time and effort comparison shopping.

* As long as Amazon fulfills the order.  When another store uses Amazon as a retail front but handles their own order processing, the Prime shipping is not available.


Amazon has been very careful about where it establishes a physical presence.  It does this to avoid having to collect state and local sales taxes in most states.  It has engaged in very public fights with states when they attempt to force Amazon to collect sales tax.  This has primarily manifested itself in battles over its affiliate programs, with Amazon discontinuing the programs in any states that pass laws that cause affiliates to be considered a physical presence in the state.

However, the writing is on the wall.  Amazon will end up collecting sales taxes in most states.  As this Fortune article states, Amazon already collects taxes in 5 states, and has agreed to add 8 more starting this year, through 2016.  It is obvious at this point that they will eventually have to collect taxes in nearly every state.

The incentive to avoid a physical presences in states is disappearing, and I expect within 5 years will be gone completely.  That opens up a host of new opportunities for Amazon.

The Future

In a future where physical location is irrelevant, Amazon is free to open up Stores, Warehouses, and Distribution Centers anywhere they like.

But as I write this, I see I've already been preempted.  In fact, instead of describing what these will be, Slate has an article talking about same day delivery.  Go read the article at Slate. (thanks DaringFireball).

In short, Amazon is building a massive and advanced distribution center.  They will put these in all major metropolitan areas, and will be able to fulfill orders same day.

I'm curious to see whether they maintain their shipper relationships (UPS), buy one, or build their own local courier/delivery service.  But we will see a day within 5 years where you order an item on Amazon and it is delivered to your home the same day in a number of major cities.

I also expect that Amazon will open up retail centers.  As they drive all the big-box stores out of business, there will be plenty of retail locations for them to snap up cheaply.  The centers will be show rooms for their massive online catalog, with convenient in person support and return.  I envision a modern day Service Merchandise style store.

For those folks concerned about big ticket purchases online, they can walk into the Amazon showroom, pick out a TV or other item, and have it delivered to their home that afternoon.

If Amazon can pull this off, they will be THE major retailer, online or otherwise.

Be Careful with Dates

The year 2000 came and went, and the world went on.  There were no horrific date rollover bugs, despite all the press.  However, that doesn't mean that date rollover issues do not exist.

I just debugged a date rollover issue.  It manifested as follows:

Our application worked fine in our local environment (of course), but when we deployed to a customer's server, the cookies didn't work.  We took a look at the HTTP Headers using Chrome, and everything seemed fine.  But still they didn't work.

However, when I took a close look at the headers in our test environment and the server environment, the issue jumped right out at me.

Here was the header from our local environment:

Set-Cookie:prop1=value1;Path=/ourapp;Expires=Mon, 10-Jun-2080 00:13:42 GMT

And on the customer's server:

et-Cookie:prop1=value1; Expires=Sun, 09-Jun-80 23:59:24 GMT; Path=/ourapp

Do you see it?  It is rather obvious.

It is a date roll-over issue.

The problem was caused when we set the cookie expiration date to Integer.MAX_VALUE.  This resulted in a date some time in 2080.  In our local environment, Jetty handles this properly and uses a long date format for the year.

However, the production server uses IBM WebSphere, and it takes a short cut.  It simply renders 2080 as 80.

So the browser sees the date and discards it as expired.  Apparently it doesn't use the 'context clue' of Sun to determine which century the date is in...

By setting a realistic expiration date for the cookie, it works just fine.

We were distracted for a bit by IBM WebSphere adding: Cache-Control:no-cache="set-cookie, set-cookie2"  However in the end that seems to be unrelated.

Hope this can help someone else.

Investing in Electronics

In a fast moving marketplace like Consumer Electronics, where your newest cellphone is out of date within a year and ancient after two, I thought it would be worthwhile celebrating some of the electronics that have served me well year after year.

Some of these are great investments because they are in a category that evolves more slowly.  Others are examples where buying quality really pays off.


First, while it is no longer with me, I want to celebrate again my HP 4L Laser Printer.  I finally retired the printer in 2008 after 14 years of great service.  I wrote about its retirement here.

The HP 4L was replaced by a Dell 1320c, with a wired network connection.  It has served well for 4 years now, and will hopefully continue for another 10.  It was more expensive then an ink jet, but if it continues to serve it will be well worth it.

Audio/Video Receivers

I still own and actively use ever receiver I've purchased since I started college, over 18 years ago.  The oldest receiver is the Pioneer VSX-D503S.

While it no longer has the features to be a primary Home Theatre Receiver, its amplifier still works great.  It now powers the outdoor speakers by my patio.

It was replaced in my Home Theatre setup by a Yamaha RX-V992 in 1998.
With Dolby Digital Decoding, and multiple digital audio inputs, this receiver has stayed relevant in my system for the last 14 years, and is still my primary A/V Receiver.

Network Attached Storage

Finally, my ReadyNAS NV+ has been a great purchase and constant workhorse for me.  
Purchased in 2007, it is relatively young compared to the previous two examples, but for a computer accessory, it is ancient.

At its base, it provides access to a set of RAID drives over the network.  But it also has a rich eco-system of software add-ons, and has been well maintained by ReadyNAS (now Netgear).  With SSH access, it is really a small linux box, which in addition to providing file hosting also serves as my DynDNS client, linux shell access, SVN server, and occasional Bit Torrent client.  At the time it replaced a full 'desktop' linux server, and I've never looked back.  While I did have to replace the power supply last year, it has worked flawlessly otherwise, and I'm happy to upgrade a power supply every 4 years if it keeps working great.

Keys To Longevity

What are the keys to finding great electronic investments?  First, the Printer and A/V Receiver categories are places where the core technology isn't evolving that quickly.  In areas like these, I think it makes sense to spend the additional money up front for a quality, 'top of the line' product that will last.  If you buy 'as much receiver as you can afford', it will likely last you a long time.

Second, you need to be willing to augment them with accessories.  While my receiver has several digital inputs, it didn't always have the right mix.  I had to add a $30 Optical to Coax digital audio convert to connect up a new component.  But a $30 accessory to keep a (original cost) $999 receiver working is a no-brainer.

For my Dell 1320c printer, it has wired internet but no wireless.  But again, with the purchase of a wireless adapter, I was able to extend the life of the printer.

Third, flexibility extends a components life.  By purchasing a receiver with a lot of inputs, it was able to continue to provide value over time.  With the ReadyNAS NV+, I was able to evolve the features it provided, reducing the need to 'upgrade' to something newer.

And finally, buy quality.  At the time, there were less expensive options for each of these purchases.  But buy spending a bit more for a workhorse device, I saved money in the long run.

Rapids Pre-Game Warm-up

I got to sit on the bench and watch the Rapids pre-game warm-up on Saturday (April 26) for the game against Chivas USA. I took some pictures of the team warming up. You can see the full set here. Below are some of the highlights.

Debugging Android Web Traffic

Normally, I would use a packet sniffer, such as WireShark (OS X and Windows) to look at the network traffic and debug the application.

However, for Android development I do my primary development on a physical Android device.  It is faster, and provides a more realistic experience during development and debugging.  However, since the network traffic is no longer going through my computer, WireShark doesn't help.

To solve this, I use another program called Charles.  Charles is a 'Web Debugging Proxy Application'.  In short, it is a tool similar to WireShark, that allows you to easily debug network traffic.  Charles is a bit 'higher level' than WireShark, and provides a simpler view of the web requests to developers.

It also has a great feature, called Reverse Proxy.  This allows you to setup your local computer as a proxy for web traffic.  You can set it up as follows:

If your normal Web Service host was targetwebserver.com:80, you would set it up like the image above.  You can then change your mobile application configuration to point at the IP address of your computer, using port 64829 (or whatever you set it to).

Note: Make sure your mobile devices is on the same WiFi network as your computer!

Now, all traffic will be routed through your local machine, and Charles will capture all the traffic, allowing you to debug your network communications.

Charles also supports HTTPS proxies, so you can use it even if the web services are over HTTPS (as they probably should be).

Of course, this also works fine for iOS, although I find myself using the simulator more in iOS, which allows WireShark or normal Charles to work fine.

Charles is commercial software, but I've found it to be worth the price.  I believe you could probably setup a reverse proxy on your computer using many different approaches (you could always run your own Apache), which would enable you to use the free WireShark application as well.

Does anyone have other approaches?

And an intrepid reader (tehnoir) points out that you can also just use Charles as a 'normal' Proxy server, and then configure your device to use your computer as a proxy server, which will then proxy all traffic through.  This allows you to sniff traffic without changing anything in your application (great for testing).

It would seem that simple Port Forwarding (another Charles feature) may also work as well.

The Path Ahead

At the end of 2011 I set out on a bit of a new path professionally.  I am very excited about the opportunity and so far it is living up to expectations.

So as we begin the new year, I thought I'd share a few pictures of the path ahead...

Sometimes the path ahead is flat and well traveled...

And sometimes you need to watch your footing...

It can be steep...

And it can take you through beautiful places...

Sometimes you can barely make out the next marker...

And sometimes, there appears to be no path at all, even when you know others have been here before...

But always, we must travel on. And remember, it's the journey that counts, not the destination.

Best of luck to all in 2012.

See the Smugmug Gallery for larger versions and more pictures.