Please join me at my new location bryankyle.com

Monday, November 12, 2012

I've Moved

A few months ago I decided to move my blog over to Tumblr. The choice was made based on the fact that I could easily make link posts as I tend to come across interesting articles during my Internet wanderlust.

In the future, please join me over at my new Internet home: bryankyle.com

Tuesday, August 21, 2012

Universal Command

I used to love emacs. It was a great text editor and while it had a reputation for being somewhat difficult to use when first learning, the amount of stuff you could do with it was jaw dropping. With a piece of software as big and complex as emacs there needs to be some way for users to not only quickly do what they want to do, but also discover things that they didn’t know they could do. Emacs has such a feature. It’s called the minibuffer.

The minibuffer is a small area at the bottom of your editor window that allows you to quickly type in a command to execute. Emacs is essentially a framework built out of small functions that when combined together make an editor. There’s a function for moving forward one letter at a time. There’s a function for moving backwards one word at a time. There’s a function to insert the letter being pressed into the buffer[1]. There’s a function for basically everything you can do with it. Many, but not all of these functions are interactive, meaning they can be executed directly by the user. And these commands can be executed by typing their name into the minibuffer.

For example, to move forward a word you can type M-x forward-char <RET>. That is: press the meta key[2] and the ‘x’ key at the same time. This focuses you on the minibuffer. Type in ‘forward-char’, and hit the return key. This will move the cursor to the next cursor. Trivial example, I know. Obviously moving forward one letter has been bound to the right arrow key so you don’t need to do this, but you get the idea.

One thing I always missed when using other programs was the ability to just tell the program what I wanted to do with the keyboard instead of having to use the mouse. I wanted to be able to tell Pixelmator to duplicate a layer; something that Pixelmator doesn’t have a keyboard shortcut for. Well, OS X actually lets you do this. It’s not exactly the same thing as the minibufer in emacs, but it gets pretty close.

So what exactly is this feature? Well, under the Help menu in every program on OS X there’s a search box. If you type in the name of a menu command into that search box you’re able to arrow down to it and not only will OS X show you where the command is for future reference, but it will also allow you to invoke it by pressing the enter key. Just having the menu isn’t enough though. It needs to be accessible via the keyboard. Good news, it is. Pressing Command-Shift-? will open the Help menu with the Search box highlighted.

This is something I use on a daily basis to get my job done. It’s great for those times when you need to invoke some feature of an application that doesn’t have a keyboard shortcut assigned to it.


  1. In emacs parlance, a buffer is an editor window.  ↩

  2. More emacs parlance here. The meta key means either the escape key, or the left alt or left command key if you’re on a Mac. This is just left overs from the era in which emacs was created.  ↩

Tuesday, July 31, 2012

Locking Your Mac with a Keyboard Shortcut

I like to leave my MacBook Air on most of the time so that I can access it from where ever I go. But with 2 kids running around the house sometimes the keyboard will get stolen or have random keys mashed, the trackpad or mouse will get moved or buttons clicked. With all this entropy and Murphy’s law, the odds are not in my favor. So whenever I get up to leave the machine for extended periods of time I like to lock my screen.

Locking the screen basically just ensures that no one will accidentally delete a bunch of files. In a less secure environment it helps to protect the data that you have on the machine as well.

There are various ways to lock the screen on your Mac. The few ways that most people are familiar with are setting the screen saver timeout to be really low and installing the Keychain Access menubar extra. I’ve found that neither of these approaches really works well for me.

I tend to do a lot of thinking and not a lot of mindless clicking or moving the mouse. Having the screen saver turn on just because I haven’t touched the computer in a while doesn’t work for me. Installing the Keychain Access menubar extra is an option, but locking the screen from it is a hassle since it can’t be done with a keyboard shortcut.

To work around this, I decided to write my own custom OS X Service to start the screen saver. I then assigned a global keyboard shortcut to it, and Behold! A screen saver that turns on whenever I hit a certain key combination. Not a big deal, I know. But it’s the little things that count.

If you’re interested it doing something similar, follow the steps below.

Create a Service

  1. Start Automator.
  2. Create a new Service.
  3. Set the Service to not receive any input and be available in any application.
  4. Add a Run AppleScript Action.
  5. Set the script to be
    on run {input, parameters}
     tell application “System Events”
     start current screen saver
     end tell
     return input
    end run
  6. Save the service as “Lock Screen”.

Assign a Keyboard Shortcut

  1. Open System Preferences.
  2. Open Keyboard.
  3. Select Keyboard Shortcuts.
  4. Select Services from the list on the left.
  5. Scroll to the General section.
  6. Click on the Lock Screen service.
  7. Click on add shortcut.
  8. Assign the shortcut you want, I use Cmd+Opt+Shift+L.

Use it

  1. Invoke the service from the services menu; or
  2. Use the keyboard shortcut

Like a boss.

Monday, July 23, 2012

Matte Screen Protector

As much as I love my iPad, one of the few things I really dislike about it has always been the glossy screen. It looks great but it’s highly susceptible to both finger prints and glare. It was a poor choice for usability, and here’s why.

Touch screen devices are meant to be touched with fingers. Bodies naturally produce oils, so the natural state of your finger is to be slightly oily. Obviously this means that the screen is going to be exposed to lots of oils through normal use. This isn’t so much an issue on devices you put in your pocket like the iPhone or iPod because typically these devices are put into a pocket between uses. The device moving around in your pocket will naturally buff off any oily residue on the screen. This isn’t the case with the larger screened devices though.

The iPad is too big for a pocket, and it’s designed to be used for longer sustained times. So what can be done about the oils that get on the screen for the iPad? Well, there’s the Smart Cover, which buffs some of the oil off of most of the screen and leaves giant lines running down other parts of it.

Another option is to just keep a cleaning rag with you where ever you go. I wear glasses so I tend to have one handy with me anyway. This approach works pretty well. Aside from the fact that you look like a maniac trying to clean your device before using it.

Lastly, you could just learn to get used to it and ignore the prints all over your screen. This appeals to my inner nihilist. It certainly requires less effort than the other options, but if you have any respect for your gadgets you’ll likely steer clear of this one.

The other design concern is that the iPad is designed to be used laying more or less flat on a surface. Guess what’s usually directly above most surfaces that you would put your iPad on? Sources of glare: overhead lights, tall lamps, the sun, etc.

Having such a large reflective surface and pointing it towards source of glare results in poor usability.

Glossy screens do look much more vibrant though. They tend to produce an image that’s much more saturated, than glossy screens. This in turn makes people believe that they’re getting a better product. I know for the longest time I wanted a laptop with a glossy screen. And I do love the glossy screen on my MacBook Air. But a laptop has a totally different usage pattern from iPads.

So, for these reasons I decided to try out a matte iPad screen protector. Now, I’m not the kind of person that likes to put screen protectors on his devices. For the most part I find that screen protectors make the device less usable, come off easily[1], wreak havoc on accessories[2], and in general tend to be a kind of snake oil. I suppose they do protect the screen, but how often do you put items that are likely to scratch your devices right next to them? My guess is: if you care about your device, never. So, this is a screen protector only insofar as its a providing a matte finish on the screen.

In the few days that I’ve had it on I’ve really enjoyed it. Glare is totally gone. Fingerprints and smudges show up. I haven’t tried it outside, but since I never really used the iPad outside in the first place I don’t see it as a big use case for me. Bu the really interesting thing is that it makes the iPad feel new again. I don’t know why this is. I could be just that it looks so much different that it feels new and exciting, or it could be that this is what I always wanted. Time will tell.

If you’ve had issues with glare and oils on your iPad I highly recommend trying out a matte screen protector. I bought a cheap one at Walmart for $12, so it’s not exactly expensive to try it out. Putting the screen protector on can be pretty tricky. I takes lots of time and patience to get it right. Even after an hour or so of applying and re-applying the film I have a few bubbles around the bezel. I’m living with these for the time being. If I find that the matte screen protector is something I want to stick with longer term I’ll fiddle around with it some more.

For those of you looking at applying a screen protector, here are a few tips:

  • Wash your hands really well before working with the film. This will remove dust and excess oil from your hands during applicaton?
  • Clean the screen thoroughly using a screen cleaner and lint-free cloth.
  • Apply the film in an area that has little or no dust in the air. Applying the film in the bathroom after running a hot shower for a few minutes will cause dust in the air to become heavy and fall.
  • Use a pencil with some scotch tape, sticky side out, on it as a “dabber” to remove dust and hair from the screen and film that works its way in during application.
  • Use a credit card to push air bubbles to the sides.
  • Take the time to line up the cut outs before laying down the entire film.
  • Apply the film slowly, no need to rush.
  • Don’t feel as though you need to buy another screen protector if you get lots of dust underneath. Potentially remove the dust particles using the dabber. You only need to replace the film if it gets creased or loses its stickiness.

  1. In the past, I’ve found that screen protectors tend to come off fairly easily if you expose them to an environment that’s constantly rubbing the edges of the protector, pockets for example. If you put a screen protector on, then cover the edges of the screen protector with a case you won’t run into this issue. But you’ll have an abomination of a device.  ↩

  2. Try putting a Glif on an iPhone that has a screen protector on it to see what I mean. The screen protector needs to come off for the Glif to fit.  ↩

Tuesday, April 3, 2012

OmniFocus Mail Rule Now Works with Attachments

OmniFocus comes with a rule that can take a specially formatted email message and transform it into an action. I use this feature running on a Mac Mini to allow me to add actions to OmniFocus from my Windows PC at work.

One things that has always bothered me about it is that it doesn’t do anything with attachments. If you create one of these specially formatted messages and attach a file, you would expect that the attachment would be added to the newly minted action. It doesn’t. I’m sure there are good reasons for it. I can’t claim to know them but suffice it to say I want this functionality , dammit. So I did what any self-respecting geek would do: I rolled up my sleeves and started hacking.

In the end I managed to modify the mail rule that comes bundled with OmniFocus to attach all mail attachments to newly created actions. You can download the modified MailAction.applescript and try it out for yourself.

With this script installed, any mail messages that OmniFocus would normally pick up will also have their attachments added to the OmniFocus action that is created.

Installation

Installing this modified mail rule requires a little bit of hacking on your part.

  1. Locate the OmniFocus.app bundle in your /Applications folder.
  2. Right click on the OmniFocus.app bundle and select Show Package Contents
  3. Navigate from the root of the bundle into Contents/Resources
  4. Locate the file called MailAction.applescript and rename it to OldMailAction.applscript1
  5. Copy the modified MailAction.applescript into the Contents/Resources folder.

If you already have the mail rule set up through OmniFocus the next time the rule gets run the new script will be used.

Thanks

I’d like to thank The OmniGroup for creating such an awesome product, for creating something that’s even remotely hackable, and lastly, for giving me permission to share this with you.


  1. The actual name doesn’t matter here. What’s important is that a backup copy of the file MailAction.applescript is created. In the event that something goes wrong you can just restore this file by renaming it and you’ll be back up and running. ↩

Sunday, April 1, 2012

Byword Review

I’ve been a big fan of Byword for OS X for quite some time. I like how it strives to be simple but still allows you to make your own choices about a few things. When Byword came out for iOS a few weeks ago with iCloud support I thought it would be great. Below are some of the things I’ve found.

Occasional Crashes

In my limited use of Byword for iOS I’ve noticed a few crashes. Nowhere near an Instacast[1] level of crashy-ness, but crashes nonetheless. Crashes aren’t the end of the world, but for an app that feels[2] as simple as Byword it makes me wonder.

Limited Document Management

Overall I’ve found the document management options in Byword for iOS to be lacking. You get to chose up front whether you want to use iCloud or Dropbox syncing. But you can’t have it both ways and simply storing documents on the device is a no go. You can’t swap documents between iCloud and Dropbox on the fly.

On the positive side, conflict resolution is done quite elegantly. Instead of saving both copies to Dropbox and having you sort out the differences a little icon appears next to the file in the list. When you open the file you’re asked if you want to use the local or remote copy. It’s not perfect, and it’s certainly not magic. But it doesn’t leave a mess for the user to clean up, and it doesn’t force you to make a decision until you need to.

Cumbersome Interface

The developers behind Byword have spent a great deal of time stylizing the UI of the application. For the most part it looks really good, but I have a few issues with it. For starters, all of the buttons are custom to suit the color theme of the application. In what I believe is an attempt to make the UI chrome blend away the contrast has been turned way down making the buttons difficult to see and read. Don’t get me wrong, it looks great, but maybe the contrast could get turned up a bit for the next release.

Another issue I have is when attempting to use the application on the iPad with an external keyboard. Opening and selecting a document are pretty easy, but once a document has been selected and you begin editing all of the chrome disappears. There is no visually discernable way of getting to the document selector or showing the title bar to rename the document or preview what you’ve written.

As pointed out by Shawn Blanc in his review, the way around this is to swipe the document from left to right which will bring up the document selector. From there you can either select another document or tap on the title bar which will hide the document selector bringing the document back into focus, but with the title bar visible – until you tap on the text area that is.

Lastly, I tend to do a lot of writing either early in the morning or late at night. In both cases I find that editors with light color schemes to be distracting. Byword for the Mac has both a light and a dark color them which allows me to switch between as needed. The iOS version of Byword only has the light scheme.

Conclusion

Byword is definitely a 1.0 release. There’s certainly room for improvement, but the bones are solid. Despite the problems I’ve noted I keep coming back to Byword over both iA Writer and Writing Kit. In the case of the former I prefer the font selection under Byword even though iA Writer’s document management runs circles around Byword’s. In the case of the latter, I really like how Byword doesn’t spew conflict files all over Dropbox and leave a mess for me to clean up.

Going forward, I’m hoping to see improvements in the areas I’ve noted. Specifically I’d like to see the following issues addressed (in order of importance):

  • Add a dark mode color theme.
  • Fix the UI so that the app can be used efficiently with a bluetooth keyboard.
  • Improve file management to the point where it’s at least on par with iA Writer.
  • Reduce/eliminate crashes.[reduce-crashes-why]

  1. I don’t know if it’s just me, but Instacast crashes on me all the time when downloading new podcasts. It might have something to do with the crappy WiFi that I’m on during the days, or maybe its just an inherent problem with the app. Either way, it shouldn’t crash as much as it does.  ↩

  2. In my mind one of the hallmarks of good design is making something really complicated feel really simple. Hiding complexity means that users don’t have to worry about things. But this only works as long as the abstraction doesn’t leak.  ↩

Saturday, March 24, 2012

What Information Are You Sharing?

The Nest Learning Thermostat looks like a really cool device. I really like its overall design, and the technology behind it is pretty cool too. The amount of innovation in the less-than-sexy thermostat market has been pretty poor up until this point. Yes, yes. I really like the idea of the Nest. But there’s something that bothers me about it. Auto-Away.

The Nest has a feature called Auto-Away that automatically turns down the temperature in your house when it notices that no one is around. How does it do this you might ask?

Nest uses Nest Sense (an exclusive combination of sensors and algorithms) to notice when you’re away and when you come home.

Sounds pretty cool to me.

But consider too that the Nest also allows you to view the state of the thermostat and adjust its settings remotely via a website and mobile app. What would happen if their site was to be hacked? Or your phone stolen? Or your credentials compromised?

Someone without your knowledge would be able to tell if there’s anyone in the house right now. They’d also have access to your heating schedules which could be used to glean information about when you’re usually out of the house. As your house gets smarter, it needs to be extremely careful about to whom its giving details to.

If the information that Nest knows about your house was to fall into the hands of people with bad intent, they would know exactly when you’re not home. “When’s a good time to break into that house?” “I don’t know, check Nest.”

This problem isnt limited to just the Nest. Recently the power company has been installing Smart Meters – a new type of power meter that can wirelessly transmit information about power consumption. The data that it sends out includes how much power has been used, obviously, but also what times of day the power was used at, what sort of load, etc. These meters coupled with power line communications would enable your appliances to tell the power company that they’re in use, or allow the appliances to be shut off remotely.

I know I’m starting to sound like a crank, or one of those crazy people that march around outside of the power company’s offices. I don’t actually believe that we should stop progress because bad things could happen. The point I’m trying to make is that we, as a society, need to be diligent about what information we freely give out to others. So the question is: what information are you sharing?