Review: Nifty MiniDrive
Sunday, March 17, 2013 at 02:57PM
Having plenty of computer storage options available has always been important to me as an avid photographer and computer user. On the desktop thats easy to accomplish using both internal and external drives. But now that I've been using a laptop for work it's been harder to have more options for storage. External drives are a hassle, and additional internal drives are not an option on the next generation of Mac laptops.
I was really excited when I saw the Nifty MiniDrive on Kickstarter. The Nifty MiniDrive extends the onboard storage on a Mac laptop by utilizing the SD card slot to house a Micro SD card. This is a genius solution for elegantly adding a fair bit of flash storage to your laptop. I had always viewed the SD slot on laptops with skepticism because I use Compact Flash cards for my photography work. But this solution seemed like a great way to utilize that card slot while also giving me more options for storage.
The instructions for installing the drive on the Nifty website are very helpful. Installing the drive was straightforward. I did have to re-seat the Micro SD card once on my first installation to get it to seat correctly, but since there there's been no issues. The drive lines up very nicely on my laptop, as seen in the image above.
The Micro SD card I purchased for my MiniDrive is a Samsung 64GB drive. The other option I considered was a SanDisk 64GB drive. I typically use SanDisk drives for my photography work, but I decided to try out the Samsung because it was on sale and showed similar performance characteristics to the SanDisk. Straight read/write performance for the Samsung has been about what I would expect. Essentially it's similar to a USB 2.0 external drive for reads, and perhaps a bit slower for writes. Not all flash storage is created equal, and you're not going to set any speed records with SD cards like you might with USB 3.0 and Thunderbolt externals or newer SSD drives.

The Nifty Team lists a few possible uses for the drive on their Kickstarter page. I decided to use my MiniDrive as a Time Machine backup for general documents, settings, and works in progress. The practical consideration behind this is that the largest currently available MicroSD card is 64GB - too small for backing up my entire startup drive. But the reality is that this is still large enough for what I need to back up. Source code is backed up by an SCM, and applications are easily replaceable. Photos I keep backed up using other methods, so any photos stored on my laptop are disposable.
After my initial tests, I set up the drive as my Time Machine backup volume. I configured Time Machine to exclude all of my apps, repositories, system data, caches, and any other large files that don't need to be backed up. That placed my total backup size in the 10-12GB range.
I use Time Machine as part of my Mac Pro's backup system too. I recently switched backup volumes on my Mac Pro and performed a 400GB initial backup of my startup drive. That backup took about 3 hours. I knew that an SD card is no where near as fast as an onboard SATA drive, but I was still expecting that the initial backup wouldn't take more than a few hours.

In the end, the initial backup to the SD card took almost a full day to finish. I'm assuming that this is because of how many small files were included in the backup. The random small write speed of the SD card is not very fast compared to the large consecutive write speed that I was testing above. The screenshot of Activity Monitor above was while writing a single large file. Now, here's another screen shot while the backup was in progress. As you can see, the drive isn't maintaining a constant speed and so the backup ends up taking longer to finish.
I finished the initial backup about two weeks ago, and I've been using the drive as my Time Machine volume ever since. The subsequent backups have finished much faster. I haven't noticed any performance issues while the backups are going on. Performance within the Time Machine is good as well with the MiniDrive. Scanning through file and folder versions for the past few weeks was fast and easy. I have not yet needed to recover a file from the ether of time yet, but backup isn't only about that. It's about the peace of mind you get by knowing that your data is safe. The Nifty MiniDrive gives me that, and in a stylish and elegant package to boot. In the end, that's what matters, and so I am very happy to have my Nifty MiniDrive.
Renaissance
Sunday, January 27, 2013 at 06:06AM 
This week I had the pleasure of attending the inaugural Renaissance conference in San Francisco. I decided to go because, like the rest of the people there, I make apps.
All of us know that there is a lot that goes into making an app. First, there's the idea. What is the job that your app will be hired to do? Then there's design. What will your app look like? How will it work? And then finally, there's code, the part that makes your app do what you want it to do. The great thing about Renaissance is how it addressed everything that goes into making an app. There are lots of excellent conferences like WWDC that intensely focus on teaching developers how to leverage the powerful frameworks that allow us to build amazing apps. But this was the first conference I've been to that kept a higher level view that explained more of the what and the why than the how.
The creative process is a big part of making an app. Renaissance did a great job of setting the stage for a discussion around creativity with a talk by Brenda Chapman, the creator of Brave at Pixar. Brenda's talk was great and was followed by an equally impressive talk by Phil Letourneau on Animating Your App To Life. Animation is something that really enhances the experience in an app and Phil did a great job of explaining some lessons we can learn from Disney when it comes to designing the animations in our apps. Mark Pospesel then explained some strategies that developers can use to make their animations seem more real. The entire talk contained only a single line of code, but was extremely valuable for anyone trying to create engaging animations in their apps.

Those talks really set the standard for the entire conference. They were followed by great talks about the importance of type and copy, which is the true content of your application. Bluetooth Low Energy was a high profile technology at Renaissance, featuring several talks and a half-day lab where attendees could try out some of the technology being worked on by the presenters and ask questions about building apps that take advantage of CoreBluetooth and integrate with BLE devices. Not to be left out was Audio, which is one of the least often considered elements of a great app. It was great to see several great presentations about that there as well.
The business side of making apps was well covered. There were a nice variety of successful game developers (who shared some of their secrets for success), business leaders, and solo indie developers there at the conference giving presentations and talking to attendees. Enterprise app development is a huge market and was well represented at the conference. Members of the teams from Push.io and Parse gave great talks on supporting enterprise development through powerful backend services, and Brent Simmons shared some of his experience with NewsGator and Glassboard - his new enterprise collaboration iPhone app.
One of the recent trends in iOS app development has been a focus on quality. I was happy to see a lot of developers talking about this at the conference, and happy to see several great talks about the topic. One of the best points to come out of the first talk was that we should be testing to build better apps, not just testing to build bug free apps. One way to do this is to automate the testing on your apps, and Jim Puls from Square gave a great talk about KIF - a framework designed to do just that. I had the chance to talk to Jim a lot about KIF and I feel really good about using it as the basis for fully automated regression testing now. I'm looking forward to writing more about that in the coming weeks.
One of my favorite quotes from Steve Jobs is "Design is how it works". While developers still outnumbered designers at Renaissance, design was a major focus of the conference and almost the entire last day was devoted to it. One of the most insightful talks was by Justin Maxwell on the concept of Path Dependence. His point, if I can attempt to convey it, was that it isn't skeumorphism that people are against. What frustrates users is when designers produce a UI that is divergent from what the expectations on the spectrum of experience and functionality are. In the 90's, a UI for a sound mixer that matched a real life sound mixer made a lot of sense, because that's what users of the application would understand and expect since they were coming from a real-life sound mixer. That expectation isn't the same for something like a podcasting app, where there is no real-life path dependence to influence a user's expectation. His talk was fascinating and if the videos come out I definitely recommend checking it out. Finally, the atmosphere at Renaissance was really good.
I enjoyed the single track conference format, and I got to meet a lot of wonderful people before, during, and after the conference. Everything about it was very worthwhile. The venue was well chosen, in part because it gave the opportunity for exercise every morning, but also for being open and close to downtown San Francisco. I would definitely recommend going to anyone considering it next year.
Thank you very much to Tim Burks and Bill Dudney for organizing the conference, and to everyone else who came for making it a wonderful experience.
Blocks, Operations, and Retain Cycles
Saturday, January 19, 2013 at 04:08PM
Programming,
iOS Development Calendaring on Mac and iOS
Tuesday, January 1, 2013 at 04:42PM I am a fairly heavy user of calendars. This goes back to college when I worked part time jobs while keeping a full class load. But now in the professional world it's more important than ever to manage my calendar so that I can maintain my commitments to the people I work with, as well as maintain a sane work/live balance at home. Here's how I've set up my tools to manage calendars.
Mutual Mobile uses all of the Google services like Gmail and Google Calendar. While I don't use Gmail or Google Calendar for my primary personal email or calendaring service, I've been very impressed with both. Google Calendar in particular is an excellent service. The service is based on the CalDAV standard which is very widely used and supported. Apple's own Calendar apps on both iOS and Mac support Google Calendar as a backend data source, but not without some problems. I spent some time this past weekend identifying these limitations and configuring my setup to work around them.
The first problem is that Apple seems really to want all of your Calendar data to live in iCloud. Normally this would be fine. When I migrated from MobileMe to iCloud I was pleased to find that all of my old events were still there. My iCloud account actually has events dating back to 2002, where I added an event to watch The Lord of the Rings: The Two Towers. But here's where things go wrong. If you leave your "Default Calendar" set to iCloud, and leave the "Automatically retrieve CalDAV invitations from Mail" setting on, then Calendar will create a new set of all your events on your default iCloud calendar, even though those event invitations were sent from Google! This got to be really frustrating when I realized I had about 2 years worth of duplicate calendar information. Useful tip: if you use Google for calendaring, either set that as your default calendar or just disable this setting in general.

Another issue is how alerts work in iOS. Google does have a push notification service feature for Google Calendar, which works really well. But that service isn't without it's flaws either. By default it also sends you an email reminder for all events. That obviously gets extremely annoying, so I turned that feature off, but it will also give you a browser pop up alert 10 minutes before a meeting. Pop ups are even more annoying than emails but you can't disable that without disabling notifications altogether. Notifications are a problem solved pretty elegantly on iOS, and in OS X Mountain Lion, so I really just wanted to get that working without all the email/pop up cruft. Well it turns out that is possible, if you set the default alerts setting on Mac and iOS for event reminders. This setting is off by default, where Apple strangely elects to leave responsibility for alerts to Google, but you can turn it on for individual accounts. I set mine to 5 minutes on iOS and 10 minutes on Mac. A word of warning though, this event reminder is added to the calendar event the first time the event is synced to your Mac or iOS device. If you're enabling this for the first time, you should remove your Google calendars from your Mac or iOS device, enable the setting, and then re-add them to make sure you'll get all of your alerts when you expect them.

The last major issue is probably the biggest problem though. Unlike on the Mac, the Calendar app on iOS will not automatically update itself. This is a huge problem for a number of reasons. For one thing, people will add or change events on your calendar all the time during the day. If your calendar isn't being updated, you'll miss them all or go to the wrong place at the wrong time. The other main problem is that if you have alerts set up as I describe above, then if your calendar isn't up to date you won't get any alerts! This is because all of those alerts are device notifications, not push notifications. The event has to be on the device so that the app knows to give you a notification prior to the event start time. With the proliferation of push Email you would think we would have push calendaring by now, but sadly that hasn't happened yet. In order to keep your calendar up to date you'll have to resort to fetch.
Since I have all my email set to either Push or Manual Fetch, I was in a bit of a pickle here. My personal Email is iCloud, which uses push. For work email I use the new Gmail app, which also uses push, so I leave the iOS account setting as manual fetch. But when you change the iOS configuration for your Gmail account, you only get one choice. I didn't feel like having all of my email being fetched every 30 minutes, so I added a new account. iOS gives you the option to also add a CalDAV account directly, so I disabled calendars on my Gmail account on iOS and added a new account just for my calendar. That enabled me to leave my email configured to manual fetch, and calendars to fetch automatically every 30 minutes.

I've tested the performance a bit by leaving my phone unpowered over night with the setting enabled. My phone seemed to lose between 2-3% power idling for 8 hours at night, and my iPad lost about 2%. When you combine that with the other notifications and stuff that my devices get overnight, that seems like an acceptable loss of power to have an up to date calendar.
I'm hoping that doing this bit of house cleaning will also enable me to try out other great calendar apps like Agenda and Fantastical, which I have tried but never really used because my calendar information on iOS was never as reliable as I wanted it to be. That forced me to always rely on Google Calendar on the web, or the Mac Calendar app, to do my calendaring. Now I should be much more free to do the bulk of my calendaring on iOS, which I think is the way things should be.
Productivity | in
Productivity Wildlife Photography
Monday, December 31, 2012 at 02:11PM 
I originally got into photography when I started camping. Visiting great state parks in Texas and venturing out into Canada, Colorado, and New Mexico was the perfect motivation to pick up a camera. But as I continued getting more into photography I became more and more interested in shooting sports. Like camping, I was very interested in sports and absolutely loved getting to shoot all kinds of events. I still love shooting sports, but it's not a regular part of my life, nor is it something that's very accessible. The wilderness, however, is very accessible to those who want to venture out, so I turned my photographic attention back towards the outdoors.
Shooting wildlife was really an accident for me. I went on a trip this summer to Colorado and decided to take my brand new Canon 300mm F4/L. I wasn't planning on doing a lot of wildlife photography, but I did want to experiment with the lens a bit. I knew it was good for flowers and compressed landscape scenes, and that it was very light (for a 300), so I brought it along.

Along a few hikes I happened to run across some great wildlife. I saw several marmots and other small critters, and a few gorgeous birds. I hadn't planned to focus on wildlife but quickly that became my photographic focus on the trip. Much of the credit to that goes to the 300 F4/L (which I originally bought for sports). The lens is perfect for wildlife, by being both light enough to hand hold yet sharp enough to create stunning images of close up animals isolated with a gorgeous background blur. Just seeing a few of the images on the LCD was enough to get me hooked.
But there were a few other reasons why shooting wildlife was so appealing. For one thing, it's a lot like shooting sports. A large part of shooting sports is anticipation and fast reflexes. You have to understand the game and be able to predict what's going to happen, and then act instinctively by focusing on the right spot and quickly releasing the shutter. It's the same thing with shooting wildlife except that it's even harder to predict what animals are going to do, especially birds. There's no white lines that animals have to stay within, or goal to reach.
There's so much opportunity to experiment when photographing wildlife. You can try shooting at different angles to get different perspectives, or framing the scene differently to use a different background. You can get down low and shoot from ground-level for smaller animals, to see what things look like from their perspective, or hike up higher and shoot down on birds, to see what things look like from above. Like many types of photography, the background is very important when shooting wildlife. A lot of times an interesting background will really make a photograph more than an empty sky will.

Shooting wildlife is also the same kind of drug as shooting sports. Part of what makes shooting sports so addictive is waiting for the perfect shot. Photographers will often wait an entire game, or even an entire season, for that perfect shot of an outfielder diving to catch a ball, or a receiver diving across the goal line with the football. Capturing those images is rare but it's something everyone wants to do. Likewise, looking for that bird that you can hear in the trees and trying to catch an in-focus image of it in flight is just as addicting. But even without that goal, just being out in nature and enjoying the scenery is enough motivation to make wildlife photograph an outstanding pastime. The same way just watching a game makes shooting sports that much more enjoyable.
If you're interested in taking up wildlife photography, then treat it like any other hobby. Just start doing it. Like sports photography, wildlife is also fairly gear intensive, but before you invest thousands in equipment make sure it's something you enjoy doing. You can easily get by with any DSLR and a medium-long range zoom lens. Go out in the back yard and take some photos, then go out for a hike at a state park and take some more. You'll see birds, deer, squirrels, rabbits, etc. If you're up north maybe you'll see some elk, or even a bear. Remember to respect whatever wildlife you do see though. When you're in the wild you're in their home. Don't feed animals or do anything to antagonize them. Just watch, take pictures, and enjoy the experience of observing nature.
Photography,
Wildlife | in
Photography