Unit Testing with throws in Swift 2.0

I've been working very slowly on a Swift version of Playlist Export, and today I finally got around to updating the project to Swift 2.0.  Luckily I wrote test cases for much of the logic to manage the export process, so I had some level of confidence that I would know if I broke anything.

However, after I got the project to compile, only one of the test cases ran.  No errors or other indication why all the other cases were ignored.

I did finally figure out that if you your test case has a throws clause, it will be IGNORED.

testPlaylistNameExtension() throws {

will silently be ignored, which for a test case is a pretty bad scenario.  But if you handle the error in the function and change it to:
testPlaylistNameExtension() {

then everything is just fine.  So if you have test in Swift 2.0 that are ignored or not executed, check to see if you have a throws in the function declaration.

Home Theater

I recently got to fulfill a longtime dream of building a 'home theater'.  Luckily, the basement was already finished with a room that was large enough to house a home theater, so as home theater projects go, it was pretty straight forward.  This is a write up of the project, which I completed in May of this year, so I've had almost 6 months with it completed.

The room was previously setup as a TV room, with a 60" Rear Projection DLP TV (Mitsubishi WD-60738), a very large entertainment center I purchased for a much larger room in a previous house, and a sectional couch.

The 60" TV and too-large entertainment center:

This setup also consisted of:

Onkyo TX-SR605
3 Phase Tech PC-3 Speakers (Fronts)
2 Phase Tech PC-60 Speakers (Rears)
Phase Tech TODO Subwoofer
Sony Blu-Ray Player
DirecTV HR20-700 DVR

I also had an IR repeater setup, with most of the components already located in the utility room next door.  The system was based on the Niles IR Repeater with the receiver and emitters cobbled together over many years.

The room has three walls, with the back open to a larger room, and no windows on any of the three walls.  The room was 11.5' wide x 17' deep, which wasn't quite as wide as I would have liked, but gave me plenty of length, especially since I could spill over into the larger room behind it.

The existing room and equipment provided a solid foundation for the new home theater.  The Onkyo receiver and HR-20 were both used in the new setup.  I struggled about whether to keep the Phase Tech speakers or replace them, but ended up replacing them.  They had been 'well used' over a ~15 year lifespan, and the speaker cones were in need of repair, some of the dome tweeters were smashed, and there was some loose material in the speakers that you could hear when you lifted them.  The rears were also pretty large to be wall mounted, which made it awkward to walk past.

While researching the room, I leaned heavily on two resources:
1. The Wirecutter
2. AVS Forum

I really appreciated the Wirecutter's approach of picking the best item in a given category.  It really simplifies the decision making process, but also does give you a few options in addition to their pick so you can really understand the trade-offs that exist.  This site is how I picked the screen, projector, and heavily influenced the selection of the speakers.

For the projector, I pretty much took the Wirecutter's recommendation, and verified the selection by reading reviews on AVS Forum.  I selected the Sony VPL-HW40ES. Overall, I have been very happy with the projector.  The picture quality is great, it is relatively quiet, and has worked flawlessly so far.  I did briefly consider a 4k projector, as the HW40ES is only 1080p, but my logic was that the cost difference for early stage 4k projectors wasn't worth it, and by the time 4k content becomes readily available there will be better projectors out for much less money.

I mounted the projector to the ceiling with a set of Chief components, the CMA-101, CMS-003, and RPA-020.  This is very solid and pretty easy to get setup and aligned.

There are a lot of options for screens, but since I was in a basement and had full control over the light, I didn't need a high gain screen.  I could also use a fixed screen since it would be permanently mounted to the wall.  Again, I want with the Wirecutter's recommendation of the Silver Ticket 100" (diagonal) screen.  It takes a bit of effort to put it together, but it was straightforward and I was very pleased with the finished product.

Once I decided to replace the speakers, I really struggled with how to select the best options.  Many quality speakers are now sold directly to consumers, allowing you to skip the AV Store listening rooms.  I spent a lot of time listening to speakers 15 years ago when I purchased the Phase Tech speakers originally, and frankly I didn't want to go through that again.  I turned to the Wirecutter and AVS Forum again for advice.  In the end, I started with the Wirecutter recommendation for surround systems, although I found the runner up at the time, the NHT Absolute 5.1 system more interesting.  However, I had an existing sub that was more than adequate for the room, so I ended up with the NHT Classic Three bookshelf speakers as the fronts, the Classic ThreeC as the center, and their thin Absolute Wall Speakers as rears.  I've been very happy with them so far as well.

While I had an existing Sony Blu-Ray player, I decided to upgrade it because I wanted to move it to another room to replace an existing DVD player.  For this, I ended up going with a popular selection from the AVS Forum, the OPPO BPD 103D.  I really like this player, but I'm not totally convinced on the Darby processing.  I have the Darby signal processing applied to both the  OPPO sourced video as well as running the DirecTV video through it.  I can certainly see some differences in the side-by-side option it has, especially when you crank the processing up high.  I have mine set at 35 I believe, and mostly take it on faith that it is better.  That said, as the owner of a phenomenal early DVD player, the DVP-7000, I've been mostly disappointed in every DVD or Blu-Ray player I've purchases since then.  The OPPO is the closest thing to the DVP-7000 that I've owned since, and that his high praise.

To round out the electronics portion of the upgrade, I bought a Harmony 650 remote.  I've used Harmony remotes for as long as I can remember and I've been happy with all of them.  I was somewhat leery of moving from a Harmony One to the 650 based on some feedback I had read, but I was very please with the 650 and it does everything I need.

For the furniture, the room wasn't quite wide enough to put 4 seats and leave enough room for an aisle, so I ended up with two rows of 3 HT Design Devonshire chairs.  Since I could only fit 6 chairs, I added a bar behind the chairs with 4 stools, increasing our capacity to 10 people and providing a space to eat and socialize when we had people over to watch games, etc.  I'm generally happy with the chairs.  They are very comfortable and feel well-built.  I think the back-lit buttons are a bit too bright, and could generally do without the lights on the chairs, as guests have a tendency to turn them on without realizing it.  I need to just disconnect them, but have not gotten that far.

The riser is a bit time-consuming to build, and the instructions are horrible.  There were some YouTube videos, but they seemed to use slightly different hardware and were of minimal use.  We did re-carpet the basement towards the end of the project, so we were able to get the riser carpeted to match the rest of the room easily.  The riser is really just tall enough, although anything taller and you'd be banging your head on the ceiling when you stood up, so it works well.

I purchased all this from the following sources, and had good experiences with all:
Craig at AV Science, Inc. set me up with the projector and the Chief mounts.
Alan at HT Market set me up with the chairs, riser, and bar.
I bought the speakers directly from NHT.
The rest was purchased on Amazon or elsewhere.

Here is the finished product:

Site Migration

After hosting this site on GoDaddy for many years, I've decided to migrate it to Amazon via S3.  Amazon has some great features for hosting static websites, although I've gone 'bare bones' to start.  I'm just hosting using an S3 bucket.  I'm using the wwwizer Naked Redirect service to redirect ericdaugherty.com to www.ericdaugherty.com, and then hosting the site out of a S3 bucket.

Amazon has a DNS server (Route 53) and CDN (CloudFront) that are easy and inexpensive to use, but I don't think I need them yet.  For now, I'm still using GoDaddy's DNS Server and the wwwizer 'hack' instead of Route 53.

The previous site utilized somewhat of a 'poor man's template engine'.  I had a html file for each page on the site, but had Apache evaluate them as PHP files and I used PHP Includes to build up the page using common components.

Moving to a fully static website meant I needed a real template engine.  I selected Jekyll and migrated the site over.  It was a pretty straight forward migration and ended up reducing the size of each file as I could use a true template instead of just having common components.

I then use the AWS console tool to upload the generated website files to S3 for an easy deployment, also allowing me to finally retire FileZilla from my tool chain.

Amazon has some pretty good guides to doing this, but I also used two good blog posts: Amazon S3 on Domain Root, without Route 53 and Static website on S3, CloudFront and Route 53, the right way!

The blog portion of the site is still hosted at Blogger, which has and continues to work well.  

This also forced me to make a few updates to the site, fixing some broken links and removing some no-longer-relevant sections.

Plus it gave me an excuse to finally post on the blog.

USA Pro Cycling Challenge 2014

The USA Pro Challenge rolled through Golden this weekend, and I headed to town to try to get some shots.

See all the USA Pro Challenge 2014 pictures on Smugmug.

The race brought them through Golden and then up Lookout Mountain.  They managed this climb in less than half the time of my best effort.  They came back and did a loop through downtown Golden before heading down to Denver for the finish.

I positioned myself at the corner of Washington and 10th to catch them coming through downtown Golden, with the 'Welcome to Golden' sign in the background.

Photo & Video Sharing by SmugMug

Here is the overall winner rolling through Golden:

This lone rider nearly got clipped by one of the support cars

Photo & Video Sharing by SmugMug

Fireworks in Estes Park

I spent the 4th of July in Estes Park this year, and enjoyed a great fireworks show in front of the Rocky Mountains.

See the rest of the pictures here.

Alluvial Fan in Rocky Mountain National Park

I got to visit Estes Park and Rocky Mountain National Park this weekend, which gave me a chance to see some of the flood damage from this fall.  Nothing was quite as impressive as the amount of material deposited at the base of the Alluvial Fan in RMNP.  The river used to run down the mountain and under the bridge.  The bridge survived, but as you can see, it no longer crosses the river.  The river used to flow about 15 feet under this bridge.  Now there is rock and sand above the level of the bridge...

Instead the river has redirected a bit farther west and took out the road.  The amount of material that was brought down was impressive.  These signs both used to be normal height...

And this sign was taken out by the flow of water, sand, and rocks.

Just about everything in this picture was not here previously.  All these rocks and sand was brought down during the flood.

Hiking with a DSLR - Part 3... and other accessories

Every year or so I post about my camera setup, and the gear I use to carry it while hiking, etc.  Here is this year's update...

You can go back and read last year's post, or my 2010 post to see how I've changed over time.

Since last year, I've upgraded from the Nikon D300 to the D600.  Since it is now a full frame, I also switched my primary lens to the D600 24-85mm f/3.5-4.5 kit lens.  Both the D600 body and the lens are smaller than D300/17-55 f2.8 I carried before, although I did give up some speed on my walk around lens.

Camera Mount

The Cotton Universal Adapter is constantly attached to my camera.  With its Arca-Swiss compatibility, it can easily be mounted on my Tri-Pod and Mono-Pod, as well as carried using the Cotton system.  I also have the Cotton Hand Strap attached as my primary strap.  I don't like or use a neck strap.


I continue to find the Cotton Strap Shot to be the ideal carrier solution while hiking.  Mine never leaves my REI daypack, which I carry on just about every day hike.  It holds the camera securely and out of the way while hiking, but I can still have it up and ready to shoot in seconds.  The tether is a nice bit of extra security as I don't keep a neck strap on my camera.

While I own the Cotton Carrier Vest and Side Holster, they don't see a ton of activity.  The vest is great if you want a really stable mount for your DSLR, but I find that for most activities where it would make sense (biking, skiing), I carry my GoPro instead.  I do occasionally use the side holster, and it is a good companion to a waist pack, where you have a heavier belt meant to support weight of it.  I used it once this year on a shorter hike where I just wore a waist pack and it worked well.

For more casual walks, I use my BlackRapid strap.  It screws right into the Cotton Universal Adapter so it is quick to throw on the camera and works great for casual walks where you are taking a lot of pictures.  It isn't stable enough for more intense walks or hiking, but if you are walking around town it is a great option.  I've had my RS-1 since 2008, and it continues to perform well.  Well worth the $44 dollars I spent, although it looks to be a bit more expensive now.

Tri/Mono Pods

I have a Gitzo Basalt Tripod (GT2932) that continues to work very well, and a Sirui P-326 Monopod that I like as well.  The Sirui's padding is starting to split a little after only 6 months, but it is fine otherwise.  Both with Arca-Swiss compatible mounts.


In addition to the DSLR, I added a GoPro Hero3 to the mix this year as well.  I primarily use it while skiing, although I have used it while swimming and snorkeling in the ocean this year as well.  For carrying the GoPro, I use three main options:

The GoPro Chesty works great if you are primarily shooting video of yourself skiing.  It provides a very stable platform (your torso), and makes the camera accessible to you, allowing you to control it directly instead of using a WiFi control (iPhone or Remote).

The Helmet Mount works well if you are taking video of someone else skiing.  It allows you to steadily track them while you move back and forth across the mountain.  It is more difficult to control, and pairs well with a WiFi control, although this really drains the battery, especially in cold conditions.

I like both of the above and end up switching back and forth during the season.  Either is a solid option.

This summer I picked up the Wrist Housing, primarily for my trip to Hawaii for use while swimming/snorkeling.  I found it worked well.  It was not overly obtrusive while swimming, and easy to control, even underwater.  I also used it on a kayak trip, and again, it didn't bother me while paddling and kept the GoPro available for nearly every opportunity.


My main camera bag is the Lowepro SlingShot 200.  I've used this bag for about 4 years now, and it is my primary carry bag.  It fits the D600 with the 17-55 mounted, as well as my 80-200 and a couple prime lenses.  This is really my main carry solution, as it works well to carry the DSLR when you want to have your other lenses available as well.  You can quickly rotate the back from your back to your chest and pull out the camera.  It also provides a steady platform for changing lenses on the move.  It looks like the Slingshot 202 is the current iteration of this bag.

I also added a travel bag, the Fastpack 350.  This allows me to carry my camera, all the lenses, as well as my laptop and assorted cables.  This is my carry on bag when flying.  Although I often throw my SlingShot in my checked luggage if I'm traveling for more than a weekend, so I can use it once I've arrived.


Overall, I'm very pleased with the solutions I have in place.  I'm not looking to replace any of the solutions I have now, although I'm sure as new products come out I will be tempted.

Note: I purchased almost everything myself, including the Cotton Carrier Vest, SideHolster and various adapters, but Cotton did provide me with the StrapShot and Universal Adapter plate for free.