Please join me at my new location bryankyle.com

Wednesday, March 21, 2012

Enough

I recently has the chance to read Patrick Rhone's latest book: Enough. I'm generally not much of a reader these days but I've been following Patrick and his message for quite some time now and when I opportunity came up to review his latest book I jumped at it. I wasn't disappointed.

Enough is very approachable. It's a short book of essays. You could easily get through the entire book in an afternoon, but you'd be missing the point. Enough isn't instructive. Enough isn't prescriptive. Enough is about slowing down and teaching you to be more mindful. Mindful about what you have. Mindful about what you use. Mindful about what you do.

Enough is best enjoyed slowly. It contains a vast amount of wisdom. But in order to unlock that wisdom, it needs to be consumed slowly. Each essay needs to be treated as its own. Savor each one for what it is. And reflect upon it to understand what it means, and how it applies to you.

After reading Enough I find myself trying to slow down; appreciating the things that I would have normally taken for granted. I find myself more critical of the things that attempt to enter my life. I find myself more mindful of how I spend my time, and what I spend my time on. I find myself feeling more in control.

Patrick has done an excellent job taking his message and distilling it into Enough. It's an excellent book. You won't find a book that's more dense with wisdom, thoughfulness, and mindfulness. I cannot recommend this book highly Enough.

Thursday, March 15, 2012

ZAGGfolio Review

When I first saw keyboard docks for tablets I always thought it seemed like a stupid idea. The first one I saw was the iPad Keyboard Dock. It seemed pretty clumsy and riddled with design problems. It was oddly shaped making it hard to pack around; it only supported portrait mode; it was a wired dock making it only useful for the iPad; it was expensive at about $100.

The idea of using a physical keyboard always made a lot of sense to me. Using a physical keyboard was certainly more productive than using the on-screen one. I could touch type just like I was used to. Plus, the physical keyboard doesn’t take up any screen real estate. But it also meant having the cart around 2 devices: the iPad and a keyboard. And if you didn’t have a smart cover you would need a stand of some kind. In the end, for all the sense it made to have a physical keyboard it just seemed like a big hassle to effectively reproduce the laptop experience with a tablet. By the time you add up the cost of all of the accessories you may as well have just bought the laptop.

But this line of thinking is flawed. An iPad with all of these accessories is not the same as a laptop. For one thing the laptop is usually much larger. Full laptops have less battery life. They don’t have touch screens. They don’t have built in 3G connectivity12. They’re less versatile – you can’t leave the keyboard and mouse behind. They allow for more distractions with multiple windows and multi-tasking.

With the advances in OS X Lion a regular laptop can help with focus using full screen apps. But battery life is still a problem. And you have no choice but to cart around the keyboard and trackpad with you where ever you go. The difference between and touch screen and a mouse is huge. The touch screen feels much more intimate and tactile; like you’re interacting directly with the machine. Using a surrogate virtual finger just isn’t the same; it’s less accurate and fiddly.

So, after much pondering I decided to give the ZAGGfolio a try.

The Case

The case has a hard plastic exterior with a soft lining inside to protect the iPad from scratches. When opened and laying flat the keyboard takes up one side while the iPad slides into the other. The case is designed such that both the keyboard and iPad can be removed. During my tests I found it cumbersome to remove the keyboard. More often than not I would end up not having the keyboard properly aligned. In practice the removal of the keyboard is something I can’t imagine anyone doing with much frequency. The iPad on the other hand didn’t have this problem.

Inserting the iPad is very simple; so is removing it. The slide for the iPad is snug, but not so tight that it’s impossible to align it properly. If I had to complain about the snugness of the case I’d say that removing the iPad can be on the difficult side. I like to be very gentle with my iPad so the amount of force I had to use to grip the iPad while pulling it out was too much for me. I noticed that the LCD started showing some pressure effects which made me nervous. In order to remove the iPad I had to hold the iPad at the bezel and push the case off. This is in contrast to the feeling of pulling the iPad out of the case.

When the iPad is in the case all of the external ports and speaker are still available. The volume buttons and mute switch are along the top of the device when it’s open. The home button is halfway up the right side. The headphone jack is safely at the bottom on the left.

Speaking of the headphone jack: the case is has a notch, not a hole for the headphone jack. When I first saw this I didn’t understand what it was for. But after playing around with the case it became clear. Having a notch means that you can open and close the case with your headphones plugged in. If Zagg had chosen to just use a hole for the headphone jack you would have to remove your headphones any time you wanted to open or close the case. Smart.

The Keyboard

With the keyboard out the iPad can be put into it and used as an easel in any orientation: landscape or portrait, upside down or right side up, left or right. In addition to the keyboard’s ability to be used as an easel, the case can also act as a stand so that just the keyboard can be removed and used separately. I haven’t tried this configuration since I don’t see the utility, but it’s nice to know its there if I need it.

As you would expect, the keyboard contains the standard compliment of keys. In addition, there is a line of “function” keys along the top row of the keyboard. These keys give you quick access to all sorts of features. These keys are:

  • Home, to go to the home screen.
  • Spotlight, to go to the spotlight search.
  • Picture Frame, to lock the screen and show a slide show of the photos in your camera roll.
  • Keyboard, to toggle the on-screen keyboard.
  • Cut, Copy and Paste, to do what you’d expect.
  • Previous, Play/Pause, Next, to control media playback.
  • Mute, Volume Up and Volume Down, to control volume.
  • Lock, to turn off the screen and lock the iPad.

The keyboard is smaller than I’m used to. Even so, I found it to be perfectly be usable for anything I needed to type up. Using the external keyboard has been a really great experience. I like having the tactile feedback from a physical keyboard. Plus, having the physical keyboard means that I have more room on screen for the document I’m working on.

I did notice a few strange things with the keyboard layout though. For one, the screen lock key is directly above the backspace (or delete) key. If you mistype a word and need to correct it, you may end up inadvertently locking your screen. Many of the function keys really seemed like a stretch to me. Do I really need special keys dedicated to clipboard functions? If you’ve used a computer at all in the past 30 years you’ll probably be familiar with the standard key combinations for these commands. Do I need a key to turn on the on screen keyboard? Probably not. I bought an external keyboard so that I wouldn’t have to use the on screen one.

Perhaps I’m an outlier, but if I had to chose between having those function keys and having a larger inverted “T” for the arrow keys I would have picked the arrow keys.

Also, the caps lock key doesn’t have an indicator light. I never know if it’s on or off without first typing something. In practice I found this to be more of a nuisance than anything, but it still feels like an omission. My Apple Bluetooth keyboard has an indicator light and it runs on batteries, same as the ZAGG keyboard. Under normal usage, the indicator would only be on a tiny fraction of the amount of time the keyboard is in use.

Battery Life

When I got the ZAGGfolio home I opened the box, put my iPad in and started working with it. I never bothered to give the battery an initial charge; I just started using it with whatever juice came from the factory. In the month or so since I bought it I have yet to charge the keyboard battery. This is par for the course as far as Bluetooth keyboards go. I’m guessing I’ll need to charge the battery sometime in the next few months. But that brings up an interesting point.

The ZAGGfolio, and in fact all of the ZAGG Bluetooth keyboards for the iPad, have an internal, non user serviceable battery. This is a design trade off. On the positive side Zagg is free to design the keyboard however they want. Without any constraints around standard batteries and how the user will have to replace them Zagg was able to make the keyboard slimmer. But this also means that the user can’t replace the batteries when the run out. The user has to charge the device using the provided USB cable instead. The keyboard doesn’t come with a wall wart for charging, so you need to be near something that can charge a USB device.

Luckily, the charging light on the keyboard will flash when there’s about 20% battery remaining which should give enough time to find an outlet.

I thought the ZAGGfolio would be an interesting experiment. I knew it would make typing on the iPad a lot easier and make it more useable as a content creation device. What I didn’t know was how deeply it would affect me. When first using the Zaggfolio with the iPad I would constantly be trying to reach for a pointing device (mouse, trackpad, trackball) when I needed to move the cursor. After a while I got used to using the touch screen. But, after using the ZAGGfolio almost exclusively for a few days going back to the MacBook Air was a little jarring. I’d constantly be trying to reach up and touch the screen to tap on icons to drag things around. After using direct interaction for a short time, using a surrogate seemed crazy, slow, and abstract.

Keyboard Navigation

Unfortunately iOS isn’t designed from the ground up to use external keyboards and all of the interaction baggage they carry along. Specfically missing is the ability to tab between fields in data entry applications. I use OmniFocus to keep track of tasks that need to get done. But I can’t tab between fields when entering new tasks. I have to type, reach up, tap, repeat. It works alright, but it’s certainly not ideal.

Conclusion

I’m still sort of on the fence about the ZAGGfolio. I think it’s an interesting idea and very well executed. I’m just not sure it’s for me. At $100 it’s no small chunk of change. If you’re the kind of person that can get by without a laptop, need the extra versatility that it provides, or someone that travels a lot then you’d be hard pressed to find another accessory that offers what the ZAGGfolio offers.

If you don’t travel often, or are just as comfortable with a laptop then it’s a much harder sell.


  1. Although 3G connectivity isn’t built into every model it’s an option unlike a regular laptop. ↩

  2. It’s true you can get 3G connectivity on a laptop using a MiFi or a Rocket Stick but these are addons. One’s an extra device you need to carry, the other is a USB dongle you have to plug in. Either way these are poor substitutes for built in support. ↩

Monday, February 27, 2012

Converting Shell Scripts into Applications

OS X doesn’t allow shell scripts to run as Login Items. Adding a shell script as a login item causes the script to be opened in an editor; not exactly what I had in mind. Login items need to be applications, but how do you convert a shell script into an application? Easy: Platypus.

Platypus is an open source project that packages up scripts as Mac applications. It works with pretty much any scripting language you can think of. It’s a really simple concept and it works well.

To convert a simple shell script into an application using Platypus you’ll need to follow these steps:

  1. Enter the name of the application you want to generate. This will be the name of the file and what appears in the Finder, so be as descriptive as you need to be.
  2. Select the type of script being wrapped and configure any arguments to the interpreter. If you’re wrapping a shell script you won’t need to do this as the default will work just fine.
  3. Select the path to the script to wrap up as an application either by using the Select button or dragging and dropping the script into the field.
  4. If the script generates output you might want to configure the output format. If there is no output from the application, or you don’t care about the output you can safely select “None”.

There are a bunch of other options such as the icon to use for the generated application, additional files to bundle, etc. Since I wanted my application to be used as a Login Item I wanted it to be as unintrusive as possible. The configuration options for my application were:

  • Set “Output Type” to “None”.
  • Check the “Run with Administrator privileges” checkbox.
  • Check the “Run in background” checkbox.
  • Uncheck the “Remain running after initial execution” checkbox.

Thursday, February 23, 2012

Shell Command to Unmount Volumes

I recently decided that I wanted to have a 2nd installation of OS X laying around for testing purposes. Initially I thought of using VMWare Fusion or something similar. Being that my machine only has 4GB of RAM I didn’t think this would make for the best experience in the world so I discounted it.

The only other option was to either partition my hard drive or use an external drive. External drives are horrendously slow (when compared to the internal SSD of the MacBook Air) and aren’t portable. So partition the hard drive it was. For my own sanity I wanted to keep each of the installations as separate as possible. I really didn’t want each installation to see the other’s data. In a pinch I wrote up a quick shell script that takes care of this problem.

Here’s the script:

#!/usr/bin

mount | grep “/dev/” | grep -v “on / ” | awk ‘{ print $1}’ | xargs -n1 diskutil umount

It’s pretty simple when you break it down into its parts. This single command works because the Unix shell allows the output of one command to become the input for the next. Here’s a breakdown of what’s happening:

The mount command is executed which outputs a bunch of lines, one for each mounted volume. Each line looks similar to the following:

/dev/disk0s2 on / (hfs, local, journaled)

This is saying that the disk /dev/disk0s2 is mounted at the root of the file system, /, with the hfs, local, and journalled options. Of these pieces of information all I really care about is the name of the disk. I really just want to isolate the local disks from other disks and file systems. That’s where the first grep command comes in.

The listing of volume information is used as the input to grep, a program that filters out the lines that don’t match a regular expression. In this case we’re looking for lines that contain /dev/ somewhere on them. This initial processing with grep takes care of all of the non-local volumes. But there’s a problem. The system is booted from a local volume. If that volume isn’t filtered out then there will be problems later on. Likely one of the commands will fail. That’s what the 2nd invocation of grep is for.

The output of the grep command can be inverted so that it will only output lines that do not match a regular expression. Since I wanted the script to be generic, and the device name will be different for each installation I couldn’t filter based on the name. Luckily however, I could just filter out the line that contains the expression on /. The reason I can do that is because the volume that contains the system will always be mounted at the root of the file system. Note here that the expression contains a trailing space; this is important because without it all of the lines would match and therefore there would be no output.

With the output of the mount command successfully trimmed down to just the lines containing local volumes that aren’t the startup volume I can remove the pieces of information from the lines that I don’t care about. Or, to put it more precisely, just output the data I do care about: the device name. Say hello to awk.

The awk command is a handy tool that can perform all sorts of manipulations to its input. awk works well in situations where the data being processed is columnar. In the case of the output of mount the data could be considered as space-separated-values with the device name in the first column. In order to get awk to just print out the first column of each record we use the script { print $1}. If you were to just execute the command pipeline up to the end of the awk command you would see a listing of all of the device names that contain currently mounted volumes that are not the startup volume. The last thing we need to do is unmount them.

There are several ways to unmount volumes on a Mac. I’ve chosen to use the diskutil command but others I’m sure would work fine. One of the shortcomings of the diskutil command is that it will only allow you to pass a single device name to the umount subcommand. It also expects that the device name will be passed on the command line; it won’t read device names from standard input. That’s where the wonderful and magical xargs command comes in.

xargs takes as arguments a the first part of a command to execute. To that it appends the contents of each line that it reads from standard input. By default xargs tries to batch the data into as few commands as possible but since diskutil will only take a single device name at a time the -n1 switch needs to be used. -n1 tells xargs to execute the command for each line.

xargs is an amazing command. It took me a while to get my head wrapped around it but once I did it opened up a world of possibilities. It’s the most complicated piece of the pipeline but it’s also the one that makes it work as a single command. Without xargs I would have had to resort to some kind of a loop and variables. That may be easier to read but it’s certainly less concise.

But this script alone doesn’t solve the problem. It needs to run at login, and that requires a different solution.

Monday, January 23, 2012

Waking Up at 5am to Code: A Response

I recently read a post by Matt Greer titled Waking Up at 5am to code. I’ve been doing something similar for about a year now so I figured I’d post my 2 cents on the matter.

A little background

Quite some time ago I realized that the amount of time I spent working on personal projects had been greatly diminished. I wanted to spend time working on those projects, but during core waking hours my time was tied up with work and family commitments. I needed to spend time at work during the day on week days, I wanted to spend time during the evening and weekends with my family.

Since pretty much all of my waking hours were accounted for I thought I’d try getting up earlier. At first I started getting up at 6:00am. That gave me about an hour or so to get some work done. And it worked well for a while, but life changes and so does the family schedule. As a result I started having to get up even earlier: 5:30am.

Getting up at 5:30am is were I’m at these days. In theory, that gives me a solid 1 1/2 hours to get stuff done in the morning. Reality on the other hand isn’t as optimistic. It usually takes a good 10 minutes for the morning fog to clear. I also have a few small morning chores that need to be done no later than 6:00am. Since I don’t want to interrupt my flow I need to get those done early too; those take an additional 10 minutes. Lastly, in order to make sure everyone is able to get themselves ready and out of the house on time I need to be completely dressed and out of the bathroom (we only have one) by about 7:00am. Figure 15-20 minutes there for the morning routine.

By the time these taxes are paid my gross working time has gone from 1 1/2 hours down to 50-55 minutes. It can be really demotivating to realize that I don’t even have a full hour to get things done. But on the flip side it can also light a fire to make sure everything that needs to get done gets done.

I’ve had some success with my morning routine over the past year. It’s been a rocky road, but for the most part I think I’ve done alright. I haven’t produced much, as my desire to work on side projects comes and goes. Having the time set aside does really help though. I know that I’ll have guaranteed time to work on things that I’d like to. But typically that time is spent reading or relaxing; everyone needs down time, and I find that without that morning time I don’t get enough of it.

For those of you doing this or wanting to do this

Ultimately rearranging your schedule can be a fairly disruptive change in your life. The disruptions for myself have been quite minimal, but you need to make sure that those closest to you understand what you’re doing, why you want to do it, and are on board with it. If they aren’t you might start running into some problems. For those considering this kind of change, here are a few pointers:

  1. If you’re up early, people start assuming that you won’t mind doing things for them. This encroaches massively on personal time and can be a real problem. Saying “No” is vitally important to protecting your few precious hours. That being said you can’t always say no. There will always be times when you have to carve off a piece of those hours as needed; just keep those to a minimum.

  2. Don’t be militant about getting up early every day. Sometimes you need a break. I find myself sleeping in about 1 day a week. It’s a nice treat, just don’t get used to it.

  3. Getting up early also means going to bed earlier. This can be a social problem if you have friends and family that are night owls. Staying up late on their account will only serve to sap your energy for the next morning. Don’t stay up late unless you’re ok with sleeping in the next morning.

  4. Always have a plan for what to do the next morning. If you don’t wake up and know exactly what you need to work on or get accomplished you’ll either not want to get out of bed or get up and zone out. Neither of these is desireable; so make sure you have a plan for the next morning.

  5. Make sure your work area is comfortable. I’m sure this goes without saying, but having a comfortable, and in the winter warm, work place really helps to motivate you to get out of bed. If the bed is warm and comfortable, why would you want to sit in a cold office in an uncomfortable chair?

Saturday, January 21, 2012

Mute Switch Bike Sheds

A few days ago there was a big kerfuffle about the ring/silence switch on the iPhone. People have been coming out of the woodwork with their thoughts and opinions on the matter. Don’t worry. I’m not going to post my thoughts on the issue here. Yes, I have an opinion, but really what I want to highlight is the debate itself. More importantly, I want to discuss why this is such a polarizing issue.

But first, a little background

If you’re reading this post anywhere near the posting date you can safely skip this section.

During a performance of the New York Philharmonic a very distinctly iPhone ring started to play. It continued making noise for quite some time. Finally the conductor had had enough and stopped the performance to confront whomever had their phone ringing. Unbeknownst to the owner, his phone had an alarm that was set to go off during the performance. He didn’t know about the alarm as he was given the phone just prior to the performance and thought he had set the phone to mute.

Due to the design of the iPhone, alarms will sound even if the mute1 switch is turned to off. Pundits and non-pundits alike have been arguing the finer points of the switch and the design over the past few days.

Should the mute switch prevent the device from making any noise, or should it make noise for some select or important events? That’s what everyone seems to be focused on. What I’m interested in is: why does everyone have an opinion on this issue?

Why does everyone and their dog have an opinion?

The mute switch is a bike shed. No, it’s not literally a bike shed, but as a solution to a problem it is. What is a bike shed problem exactly? A bike shed is a problem that’s reasonably well understood by the common person. Since the problem is well understood everyone feels that they are entitled to an opinion on it. In fact, it’s been said that the amount of noise in the decision making process is inversely proportional to the complexity of the problem.

From the definition of a bike shed:

Parkinson shows how you can go in to the board of directors and get approval for building a multi-million or even billion dollar atomic power plant, but if you want to build a bike shed you will be tangled up in endless discussions.

Parkinson explains that this is because an atomic plant is so vast, so expensive and so complicated that people cannot grasp it, and rather than try, they fall back on the assumption that somebody else checked all the details before it got this far. Richard P. Feynmann gives a couple of interesting, and very much to the point, examples relating to Los Alamos in his books.

A bike shed on the other hand. Anyone can build one of those over a weekend, and still have time to watch the game on TV. So no matter how well prepared, no matter how reasonable you are with your proposal, somebody will seize the chance to show that he is doing his job, that he is paying attention, that he is here.

Since everyone has a stake in how the mute switch on the iPhone should work, and the complexity of the problem is low, everyone has an opinion. Those following the debate will point out that the complexity of this problem is anything but low.

It’s a difficult problem with no 100% correct solution. Regardless of the choice made by the designers there would be some class of user that the solution was wrong for. However, that won’t stop people from arguing over what colour this bike shed should be.


  1. I say mute switch because that’s the common term for it. In actuality it’s call the Ring/Silence switch. The difference between the terms is splitting hairs as far as customers are concerned.

Thursday, December 22, 2011

Twelve South Compass iPad Stand

I recently had a chance to try out the Twelve South Compass iPad stand. I’ve had my eye on it for a long time but never had opportunity to give it a test run for myself.

The Packaging

Unlike pretty much every other accessory maker, Twelve South totally nails it when it comes to packaging. They know that the packaging is the first taste of the product that the customer gets. Well designed, tasteful, easy to open packaging gives the customer a glimpse of how much effort they put into designing the product inside.

In the case of the Compass stand, the package consists of a box containing the stand encased in a plastic shell. The box doesn’t have a lid so the customer can see the stand inside the box through the outer plastic shell. There’s no tape to fuss with, just open the packaging and slide out the box. The Compass sits on a cardboard table in the box and is held in place with white elastic. The fact that they chose to use elastic instead of twist ties is a gift in and of itself.

Underneath the cardboard table there’s a slipcase. The slipcase is simple and speaks for itself. Under the slipcase is a spartan instruction manual with the sole words “Thank You” emblazened on the front. The instruction manual is fairly short: one page. Simple directions for how to use the stand are included. At the end of the instructions is a whimsical section on some uses for the box that the stand came in.

These little touches: the easy to open packaging, well designed box, the full front page of the instructions dedicated to thanking the customer, and whimsical instructions aren’t frivolous. They all come together to give the customer a great first experience. Not just a great first experience with the product, but potentially these details serve as an introduction to the company that made them. They exhibit the ethos of the maker: its attention to detail, its gratitude towards customers, and its fun side.

But enough about the packaging, lets talk about the stand.

The Stand

The Compass isn’t just an iPad stand, it’s a work of art. The stand is solidly built and feels great. It’s heavier than you’d think for something of its size. The brushed finish nicely matches the finish on Apple’s own hardware making the Compass feel at home with your iPad and MacBook Air.

When folded up the Compass is very compact; it’s small enough that you could fit it easily in your pocket or bag and hardly know its there — aside from the weight that is. The small carrying pouch for Compass is a nice touch; it protects not only the stand but anything else that might be rattling around with it in your bag.

The Compass has 2 different modes when unfolded. It can either prop the iPad up like an easel or lay the iPad down at an incline providing for a nice keyboarding surface. When using the Compass as an easel the iPad can sit in either landscape or portrait orientation. In addition, the legs that the iPad stands on are quite a bit longer than needed. The legs being longer means that the compass will work with both iPad 1 and 2, with or without a case. Both of these features make the Compass stand one of the most versatile stands I’ve seen. The versatility coupled with its elegant design, and compact size make for a very compelling and attractive stand.

Unfortunately, as compelling and attractive as the stand is, it has some problems. The main problem I found with the Compass is that the hinge on the back leg was extremely loose. When handling the stand I had to be careful otherwise it would open up. Putting it in its case could sometimes be troublesome as well. But these are minor inconveniences when compared to the biggest problem with the hinge being loose. After some use the Compass would fold itself up and collapse.

The rubberized feet on the bottom of the legs, the shallow angle of the back leg, and the loose hinge worked together to produce a perfect storm. Tapping around the center of the screen would cause the front 2 legs of the stand to lift off the table. With all the force in the back leg and the loose hinge the leg would eventually move into a position where it would fold up and collapse onto the table. If the hinge were tighter not only would this not be a problem, but the stand would also feel much higher quality.

I’m sure they had good reasons for the hinge having as much friction as it does. But a tighter hinge isn’t the only solution. A pin or something similar that holds the back leg in one of two positions would do the trick.

Ignoring the collapsing issue, I’m not sure that the Compass provides a lot of value if you have and iPad 2 with a Smart Cover. The only thing that the Compass provides over the Smart Cover is the freedom to choose orientation — portait or landscape.

Conclusions

While the Compass Stand looks and feels great, but it’s expensive for what benefit you may get out of it. If you have an iPad 2 you likely already have a Smart Cover which provides more value for your money. Regardless, the fact that the stand collapses after moderate tapping is a major problem in my books.