jb… a weblog by Jonathan Buys

Burn it Down

December 26, 2013

As the year comes to an end it would be easy to look back and see all of the things that didn’t work. Mistakes were made, endeavors failed, and it was generally a tough year. Some things that I thought would work out did not, and some things I thought I had more time before I had to deal with came due. Sometimes, when things aren’t working out, it’s best to burn it all to the ground and start over.

When I look closer, sifting through the ash, I find bits that survived. There are pieces of my life that are working, and that have not been getting the attention they deserved. I dreamed for years of starting my own business, being self-employed and working from home. The truth is, this is not the right time in my life for that. What my family needs is stability. The 9-5 works for us. Spending my weekends programming or studying for grad school does not. Farmdog had to go, so it was burned to the ground. What does work for me is writing. I’ve been very happy as a freelance writer, but I’ve been so distracted by competing goals that I’ve not given the endeavor the attention that it needs. Freelance writing after the kids are in bed works for us too.

For Christmas this year we got the boys some toy guns, and we had a great time battling it out throughout the house. We had a wonderful dinner with ham and corn and mashed potatoes, and spent a lot of quality time together. This worked, more than anything, spending time with the family works. I spent a long time over the past several weeks reassessing where I should go next in my professional life, but what I came up with is that where I am right now is where I need to be, and by focusing on what really matters, I can make where I am better than ever.

Sometimes you can see farmers burn their fields, so the nutrients in the crops will absorb back into the soil, making the next batch of crops stronger than before.


Desktop Setup For a Sysadmin

November 27, 2013

My Mac is a finely tuned machine. I have been using a Mac for Unix systems administration work since 2006, starting with a PowerMac G4, and have developed a smooth and efficient workflow. Most of the important tools are open source, and the ones that are not are very high quality.

Hardware

One of the reasons I like buying Apple hardware is that it lasts. I run a four year old MacBook Pro, and so far have no reason to upgrade to a newer machine. I will probably upgrade to a solid-state drive sometime in the next few months, and expect to keep this Mac another two years. Last year I upgraded the RAM to 8GB, and that seems to work fine for me.

The Mac spends most of its day in a Twelve South BookArc in the corner of my desk. I’m obsessive about cables, so I have the Ethernet, power, time machine drive, headphones, and external monitor neatly Velcro’d under my desk and out of sight. I have tacks holding sections of Velcro under my desk to route the cables where they need to go. Work provides a 22-inch Acer display, which is not great, but acceptable for what I need to do. I would love a higher density display for text clarity, but I’ll take what I can get.

I use the Apple aluminum bluetooth keyboard. I love it because it is small, has only the keys that I use, and is easy and fast to type on. I mostly agree with the reasons David Sparks mentions in his keyboard review, but I haven’t bothered to look into the noisy mechanical keyboards. Mostly because I work in an office environment, and the noise would bother my coworkers. I also use an Apple Magic Mouse my wife gave me for my birthday a couple years ago. The ergonomics of the mouse are not great, but since my hand is not on the mouse all day, that doesn’t bother me. What I do love about it is being able to flick back and forth between full-screen applications, browse through Safari history, and double-two-finger-tap to bring up Mission Control.

Other than my iPhone, the only other hardware I use is a Western Digital drive I keep under my desk, secured with a lock, cables neatly wrapped in Velcro, as my Time Machine drive.

Software

The first and most important piece of software I install is Quicksilver. Without Quicksilver, my machine is crippled. I map Quicksilver to ⌘Space, so the first preference I change is to disable both the “Show Spotlight search field” and “Show Spotlight window”. I use Spotlight frequently, but when I need it I use the mouse and click on the menu bar icon. I install a few plugins for Quicksilver, but the most important are the Remote Hosts Plugin, the User Interface Plugin, the Web Search Plugin, and the Clipboard Plugin.

After Quicksilver is installed I feel at home, and I can start using the computer. Behind Quicksilver, the most used app on my Mac is the Terminal. I used iTerm 2 in the past, but Apple has continued to improve the built in Terminal app and I don’t feel like I need it anymore, or at least don’t see what value iTerm provides that Terminal does not. I use Anonymous Pro, 14 point, and make my default window size 80 columns x 40 rows. Next, I install Homebrew, and from Homebrew install zsh, and then oh-my-zsh.

I was sold on zsh when I accidentally discovered that it would do tab auto-complete for directories on a different server over an ssh connection. I think I was typing something like:

	scp server.whatever:/~/somedir/

I hit tab out of habit, and it autocompleted the rest of the scp command. I sat there and thought about it for a few minutes, and realized that it must have known that I was typing an scp command, parsed the remainder of the command to get the server, checked for ssh auto-login with keys, and then parsed out the files available for autocomplete. There is also great stuff like batch file renaming with zmv, and glob autocomplete for things like cd. Here’s another example, say I want to cd into a directory named “something-awesome”, I can type “cd awesom” and tab, and zsh will recognized I want to get into the “something-awesome” directory.

Speaking of SSH, the next thing to take care of is SSH keys. I always use SSH keys to log into servers without a password, and I recently generated a new SSH key pair. To do so, open up the Terminal and run ssh-keygen -t rsa and enter a password that is reasonably complex, but one that you can remember. The first time you use that key, OS X will prompt you to save your password in the system keychain, which I do. If my computer is compromised, whoever has it will have access to the unlocked key, but without being on our local company network it is of little use. The password keeps the key from being used if it is removed from my machine, so I feel it is a good compromise between usability and security. My public key is given to Puppet, and from there is added to my local user account on all the servers I manage.

Next I create a ~/Unix directory, and then ~/Unix/bin and ~/Unix/etc. Inside of ~/Unix/etc I put a plain text “servers” file that lists one server per line for each server that I manage. This list is important because I base a lot of my other scripts off of that list. It is the source of truth that I measure Nagios, Puppet, and any other tools we use that need to touch each server.

The first use of the servers list is a quick loop to populate my ~/.ssh/known_hosts file.

	for each in `cat ~/Unix/etc/servers`; do
		ssh -oStrictHostKeyChecking=no $each hostname
	done

Assuming Puppet has done its job and distributed the SSH key, this loop will touch each server in the list, add the key to the known_hosts file, and return the output of the “hostname” command to the terminal, along with a warning that it is doing so. Once the loop is finished, it’s time for Quicksilver to work its magic. In the Quicksilver preferences, under the Catalog tab, and the Plugins option in the left-hand panel (whew), there should be a source option for “Remote Hosts”. Clicking on the triangle will reveal the available sources, one of which will be our known_hosts file. Make sure that is selected and click the circular arrow button in the bottom right corner to rescan, and a number should appear.

This is how I manage getting to any server at a moments notice. I bring up Quicksilver, start typing the name of the server, and when I see the full name of the machine I hit return. Quicksilver launches Terminal with a SSH session open, and since I already have my key traded out, I’m logged right in.

There are times when Quicksilver isn’t quite quick enough. When I need to make the exact same change to a group of servers, I use another tool installed through Homebrew: csshX. The csshX tool is a Cluster SSH implementation for OS X, and can drastically speed up common tasks. For example, when migrating from one NFS server to another, the NFS mounts are the same for every server, and each needs to be unmounted and remounted again. This would be a good job for Puppet, but for various reasons can not be. The csshX tool lets me open up several windows at once and type the same commands in each of them. It has saved me hours of repetitive, dull work.

Managing windows is not something I care to do, so I let Moom from Many Tricks do it for me. I have ⌘⎇1 mapped to move the current window to take up the left half of the screen, and ⌘⎇2 mapped for the right. I use this combination daily to split my screen between something I need to read and something I need to type.

I use Safari as my main browser, but there are a few internal tools that do not work correctly, like HP’s “Onboard Administrator” and a couple of other tools that need Flash, like the web interface for VMware. So, in addition to Safari I also keep Firefox and Google Chrome handy. I don’t bother doing any customization in either of the auxiliary browsers. I’m normally in and out of them quickly, and use them just long enough to accomplish the task at hand. For Safari, I use a handful of plugins which hint a bit more about my workflow:

I set my homepage to DuckDuckGo, and set both new windows and new tabs to open with Top Sites. I also switch my preferred search engine to Yahoo and edit my /etc/hosts file to add this line:

	184.72.115.86 search.yahoo.com

When I open a new window or tab in Safari the Top Sites feature lets me choose to click on Nagios, Puppet, or our internal wiki, or just start typing to do a DuckDuckGo search. If I do a search, DuckDuckGo includes javascript that lets me use vi keybindings to navigate the search results. DuckDuckGo also includes a “bang” syntax that lets me search other sources, like man pages.

Once on a new page, the Type-To-Navigate plugin lets me type in the name of a link to highlight it, and I can press return to open it, or ⌘return to open it in the background. This lets me quickly search for and browse documentation outside of our local wiki.

When I find relevant, detailed documentation, I clip it into my technical database held in DEVONthink Pro. I quickly became frustrated with DEVONthink in the past when I misunderstood how it was meant to be used. DEVONthink is not an anything bucket, it is a specialized research tool meant to provide insight into your data. Once I read about how historians use DEVONthink the pieces began to click for me. I now drop all my technical documentation into DEVONthink, organized into a hierarchy similar to scientific classifications of species. CentOS is of the class Linux, which is of the class Unix, which is part of the class of Operating Systems, which falls under the top level class of Software. Also kept in DEVONthink is what software is installed on what server, and what hardware is associated with each server. This way I keep a deep, running database of the systems I’m responsible for, and synchronize the data to my phone for reference when I’m in the datacenter. DEVONthink keeps documentation that far exceeds the level of detail in our wiki.

Part of the documentation we keep are high-level network diagrams, organized by system. I draw the diagrams in OmniGraffle, which I recently upgraded from version 4, originally purchased so long ago I forgot exactly when. OmniGraffle keeps getting better, and like the Mac, has a long shelf life. I export completed diagrams to PDF for inclusion in the documentation.

Finally, tasks and projects are handled in OmniFocus. Each system becomes a project, and each project has a list of tasks associated. A new recurring task for each project is to review and update the documentation semi-annually. In reality, the documentation is constantly in flux, but it is good to have a reminder to do an overall review to make sure we are where we need to be.

Over time my workflow has grown, and then condensed again, and finally settled into a workable, reproducible, long-term system. When I get into the groove, listening to old Grateful Dead bootlegs or Bob Marley in iTunes, I don’t even notice the tools anymore. My system fades into the background, and all that is left is the thoughtful bliss of real productivity.


Zen, Art, and Tools

November 11, 2013

I’ve been a Mac user since returning to the states in 2003, but I’ve been a Unix user for a few years longer. Originally, I was drawn to the Mac because it was a fantastic interface on top of a solid BSD Unix core, but as I grew more familiar with the platform, I became more drawn to the level of attention to detail. The Mac is a quality machine, but today I’m writing this on a Dell running FreeBSD.

This Dell is absolutely not a quality machine. They’ve shoved a 10-key number pad next to the keyboard, and as a consequence have had to move both the keyboard and the trackpad off center. The Dell is heavy, like a cheap plastic tank. The keys on the keyboard are flimsy, and the display is terrible. In short, this Dell is the epitome of everything wrong with the PC industry as a whole; it embodies a lack of caring. The hardware is not my primary interest today. Tomorrow I will bring the laptop back to work, attach it to my external monitor, keyboard, and mouse, and will rarely, if ever, need to touch the computer. What interests me today is the software.

I’m using the PC-BSD variant of FreeBSD, with hardly anything installed but the Xmonad tiling window manager. I have a few good fonts, and the excellent Solarized color scheme installed, and have configured Firefox and the rest of the Xmonad environment to be as quick and responsive as possible. There is very little about this setup that exhibits friction, and what does has only a matter of time before I find a solution. It takes some work, but it is fast, efficient, and built on top of a core quality operating system, FreeBSD.

I installed PC-BSD because it supported installing into a ZFS formatted hard drive by default, and correctly loaded the Intel video driver for this piece of crap Dell. ZFS will ensure that any data that I save to the drive is protected from corruption, and will make it very easy to back up to another machine or hard drive. I also have support built in for Jails, which provides some interesting opportunities for local testing and development. The user interface for this new system is not nearly as intuitive or friendly as my Mac, but that’s not the point of the system. It’s not meant to be a cheap knock-off or even a competitor to the Mac, if the Mac is a BMW M5, as the car analogy goes, than this is a BMW R60/2. One doesn’t buy and build an old motorcycle because they want an easy way to get back and forth to work. A car is far easier, a motorcycle needs special training, experience, and maintenence.

I’m finishing up the final chapters of Zen and the Art of Motorcycle Maintenence, and seeing how the tagline of this site is “a discussion on quality”, I can’t believe it has taken me this long to get to this book. ZAMM is An Inquiry Into Values, far, far deeper than I intend to go. The book was published in 1974, but has some amazingly relevant thought on our relationship with technology, especially computers, today.

The result is rather typical of modern technology, an overall dullness of appearance so depressing that it must be overlaid with a vernier of “style” to make it acceptable. And that, to anyone who is sensitive to romantic Quality, just makes it all the worse. Now it’s not just depressingly dull, it’s also phony. Put the two together and you get a pretty accurate basic description of modern American technology: stylized cars and stylized outboard motors and stylized typewriters and stylized clothes. Stylized refrigerators filled with stylized food in stylized kitchens in stylized homes. Plastic stylized toys for stylized children, who at Christmas and birthdays are in style with their stylish parents. You have to be awfully stylish yourself not to get sick of it once in a while. It’s the style that gets you; technological ugliness syruped over with romantic phoniness in an effort to produce beauty and profit by people who, though stylish, don’t know where to start because no one has ever told them there’s such a thing as Quality in this world, and it’s real, not style. Quality isn’t something you lay on top of subjects and objects like tinsel on a Christmas tree.

Later, when discussing his motorcycle:

I don’t think I’ll ever sell it. No reason to, really. They’re not like cars, with a body that rusts out in a few years. Keep them tuned and overhauled and they’ll last as long as you do. Probably longer. Quality. It’s carried us so far without trouble.

I have a second book that has fascinated me for the past year, Hand Tools, Their Ways and Workings, by Aldren A. Watson. The book is beautifully illustrated by the author, and explains in detail what hand tools a person should have, how they work, how to maintain them, and how to build new tools using the tools you already have. I’m planning a project to build a sturdy workbench that I hope will outlive me, and perhaps I will pass it on to my son, and I’m planning on doing it entirely with hand tools. Why hand tools? Why not power saws and cordless drills? Because the projects are not about getting them done, it is about the doing. It is about caring enough about what you do to take time and use your hands to do it.

Hand Tools, FreeBSD, motorcycles, Apple, these things are all connected somehow, and by following along this path, I’m hoping to sort out the connections in more detail. For now, it is enough to understand that the relationships between quality work, quality products, and caring enough to do something the hard way are all there, waiting to be explored.


Go2 and Paragraphs Are Now Open Source

November 1, 2013

I see no reason to keep the code for Go2 and Paragraphs to myself. I have no plans to continue developing them, have received no requests for support, and have seen very, very, few sales over the past few months. So, as of now, both Go2 and Paragraphs are released as open source, under the MIT license, available on GitHub.

It is quite likely that there is a ton of bad code in there. Read through at your own risk.


Avoiding Complexity

October 16, 2013

I’ve noticed a tendency in my Mac setup to veer towards higher levels of complexity. In truth, I’d rather not use anything outside of the Apple provided ecosystem, but for one reason or another I’m constantly drawn to other apps and command line tools. It is a struggle to find balance between applications that actually enhance my productivity, and distractions that pull me away from the task I’m attempting to use my computer for.

The Mac comes preinstalled with just about everything you need, but not everything you might want. For example, Spotlight works well as an application launcher, but I install Quicksilver and use it instead. I’ve also adopted David Spark’s Paperless methodology for filing documents, and use both TextExpander and Hazel extensively. The keychain works fine for storing passwords, but I use 1Password, although that may change in the future.

I use Microsoft Office for work, because, lets face it, sometimes you just need Office. I use OmniFocus to keep track of the big things in life that need done, although I could probably switch to Reminders. I use NVAlt for notes, but I could probably use the built in Notes app since I use it so infrequently.

There are a few other applications I have installed; Backblaze for additional backups, ScanSnap for scanning and OCR, Hibari for Twitter, ReadKit for news and long form reading. I use Caffeine to keep my Mac from going to sleep when I don’t want it to, and Moom to provide better window management. I need Firefox because some web apps, especially older ones, do not work properly with Safari. VMware Fusion for a Windows XP machine I need for work, and instead of MacVim or TextEdit I’m using IA Writer for text.

Suddenly the number of applications I like to have running or available seems rather long, and I start wondering what I absolutely need and what I can live without. With a new version of OS X on the horizon, there may be a few of these that don’t make the jump.

In college I used LaTeX to get through math. While my classmates struggled with the Word equation editor, LaTeX worked wonderfully to create beautiful PDF documents with precise and accurate formulas. LaTeX was the right choice for that environment, but since leaving college I’ve struggled to find an appropriate use for it in my day to day work. Since I no longer have a need to create detailed mathematical reports, I haven’t bothered to install the 4+ gigabyte MacTeX package.

I’ve used vim for many years, and have grown accustomed to the way it works, so much so that I adopted it as my main text editor for writing prose as well as code. Unfortunately, vim can be a deep rabbit hole. There is so much to learn, and it can be extended in so many ways, that it is tempting to spend hours upon hours perfecting my own special witches brew of settings and plugins. But, spending time like that isn’t really getting anything accomplished. At the end of those hours I haven’t written any words, only prepared my editor. MacVim as well has been left off the list of software I install. At least until I start spending serious time writing code again.

I’ve deliberately avoided installing Homebrew. Part of it is to avoid complexity, part of it is to keep from having a lot of “stuff” installed that I don’t know if I need or not, and part of it is to try to stay out of the command line as much as possible. Even though I know it is there, I can also see a future where the command line is no longer available, and I’d like to not live in the past. The one exception to my avoidance of he command line is Jekyll, which I use to publish this site.

Because I know how to customize my computer, and because I know how to use the command line to install from source, the possibilities of what I could be doing at any given time on my Mac are endless. However, it is a matter of personal responsibility and self control to keep my Mac as clean, simple, and focused on the task at hand as possible.


Quicksilver

October 14, 2013

Quicksilver will change the way you use your computer. That is not a claim to make lightly, but after using Quicksilver on my Mac for the past eight years it is one that I can make in confidence. Learning Quicksilver can take some time, but the payoff is worth the effort. My goals here are to help you wrap your head around using an alternative input and interaction mechanism, to empower you to speed through mundane or repetitive tasks, and provide you the tools to stop thinking about your computer and start using it. Quicksilver is an application launcher, file browser, and much more.

I like to tell my kids that nothing worth doing is easy, and that every accomplishment is first a challenge. Like learning to ride a bike. When we first set out to ride a bike we are unsteady, off balance, and unsure of ourselves. We make mistakes in judgment and pedal too lightly or not at all, we hold on to the handlebars for dear life, mistakenly assuming that if we just hold on tight enough we wont fall and skin our knee again. But we do fall, and knees are skinned and elbows bruised… but we get back up and try again. One day Dad lets go of the bike, in spite of your pleading for him not to, and you roll on your own, you feel your balance, press on the pedals, pumping one leg and then another, suddenly sure, suddenly getting it. What seemed like a chore before is now exhilarating, you can fly like the wind! Once you’ve learned you can’t go back, and you never forget.

The reason you can jump on a bike and start to ride long after you last got off is thanks to a type of memory commonly known as “muscle memory”. It is the same reason you don’t forget how to walk, or, more to the point, how to type. Using Quicksilver is like that; you use several parts of your brain at once, and interact using at least two senses, touch and sight.

Once actions become automatic, it frees higher thinking to allow you to focus on the bigger picture of why you need a certain task done. You want to open a TextEdit document so you can write out a grocery list; you do not want to stop to think about where the text editor application is, what it is named, or how to use it. Once you have TextEdit open, if you are an experienced typist, the words can drop straight from your mind onto the page because you know the feel of the keyboard, you know where the keys that make the words you need to type are, you can think at a high enough level to abstract away the need to “hunt and peck” for individual letters.

Steve Jobs once told a story of a story he read in Scientific American that measured the efficiency of animals as they travelled a kilometer. What they found was that human beings rated about a third of the way down from the top, with the Condor rating first. Luckily, one of the researchers had the insight to measure a man on a bicycle, and found that the ratio of speed to energy converted was way higher than any other animal.

And that’s what a computer is to me. What a computer is to me is… it’s the most remarkable tool we’ve ever come up with, and it’s the equivalent of a bicycle for our minds.

Learning Quicksilver will make you faster and more efficient in your everyday tasks. It will free up time for your brain to work on much harder problems, and most importantly, it will make using your computer fun maybe for the first time.

You may not see yourself as a craftsman, but if you care enough about what you do to 1) use a Mac, and 2) be reading this post, I wager that you may be the type of person who cares deeply about the tools they use. Personally, I tend to gravitate towards a philosophy I like to call “The Principle of Least Software”. The principle states that one should “use only the software that they absolutely need, no more, and no less.” Using fewer applications, but knowing them better, tends to allow a person to uncover hidden functionality they didn’t know existed, boosting productivity and making them a happier computer user. Part of being intimately familiar with your tools is understanding not only the how and the why, but also the what. So, while I’d like to dive right in to the how and why, first we should take a look at the history of Quicksilver.

History

Some history for the application can be found on its Wikipedia page, but the section is quite brief. One interesting point is that the symbol for the Quicksilver icon, ☿, comes from the alchemical symbol for mercury, which was once known as quicksilver. For years I wondered what that was.

Quicksilver began development in 2003, which is also the year I first bought a Mac. In 2004 Merlin Mann first posted about appending to a text file with Quicksilver, and was followed by tutorials and how-to articles for years from several other sites, including The Apple Blog, where I was once a contributor. Quicksilver was initially developed by Nicholas Jitkoff, known as Alcor, and distributed as freeware. Merlin did an interview with Alcor in 2004, where he discussed the origins of Qucksilver.

Quicksilver started out as a module based applescript for OS 9 using a healthy dose of AKUA Sweets. It basically supported drag and drop and performing of some basic actions and scripts on the dropped items or the finder selection. It launched stuff too, but was an unwieldy dialog of applications you had to sift through. The initial point of it was to speed up day to day tasks like emailing and file manipulation. It sometimes took longer to do stuff using it than by hand, but was mostly a fun toy. The idea behind it was sound, and that is what made it through to the OS X incarnation. The focus has not changed since the beginning, but the implementation has become far more flexible (though perhaps less reliable.)

Alcor did his best to keep Quicksilver current and add features as requested, but slowly he began to fall behind. When Alcor was hired by Google in 2006 or 2007 (I couldn’t find an exact date), Quicksilver development slowed almost to a halt, and in November of 2006 the source code was released.

The future for Qucksilver looked bleak. Although it had been released as open source, no major progress was being made. Alcor gave an interview to Lifehacker in December of 2007, where he stated:

I’m inclined to encourage users to move over to the more stable and well supported alternatives like LaunchBar.

Mac OS X moved on, bugs accumulated, and hope for the once amazing Quicksilver drifted away.

In 2010 a new group of developers adopted the stagnant Quicksilver code, bought a new domain (qsapp.com), and started the long, arduous task of breathing new life into the beloved app.

In the early months of 2011, several developers worked vigorously to bring Quicksilver back to its former glory, and to what you see today.

The LoveQuicksilver site lists Patrick Robertson, Rob McBroom, and Philip Dooher as the primary contributors to the current iteration of the project. After years of work, Quicksilver today is stable, powerful, and continuously updated. It has once again gained the attention of third party developers. Alcor’s creation has gained a second life, thanks to his foresight in releasing the code as open source. If he had kept it to himself, there is little doubt that Quicksilver would have completely fallen out of use by now.

Setup

Now that we understand a bit of how we got to where we are, let’s get started.

Quicksilver can be downloaded from qsapp.com. Once downloaded, drag and drop to the Applications folder from the disk image just like any other Mac app. The first time Quicksilver is launched a wizard will run asking for some basic information and suggesting a few plugins to install. Accepting the defaults is fine, although I make one change, I always remove the hotkey for Spotlight from the System Preferences, and reassign “⌘ Space” to Quicksilver.

An aside. Quicksilver features are enabled through plugins, so you can choose which features you want and which you do not need. This also enables third party developers to add integration between Quicksilver and their app. I currently have 22 plugins installed (although the white bezel plugin I could do without).

Once the wizard is finished, you will be presented with the Quicksilver bezel. This is where you think about what you want to do. Write an email? Type “Mail”, then press return. Browse the web? Type “Safari”, then press return. Open your Documents folder? Type “Documents”, then press return. Easy. You don’t have to type the entire name of what you want to interact with, just type enough to recognize the icon, then press return. This is the most basic use of Quicksilver, but it barely scratches the surface of what it can do.

It is good to use the app like this for a while. Get comfortable with launching applications and browsing your files this way. Once you have ⌘ Space mapped in your mind to “doing something”, it is time to explore a bit more of what it can do.

As I alluded to earlier, there have been many, many tutorials on how to setup and use Quicksilver. Most recently, a pair by App Storm:

  • Quicksilver: The Best Free Way to Do Everything With Just Your Keyboard - Link
  • Mastering Quicksilver: The Basics - Link

43 Folders still sports some of the best:

  • Getting started (or reacquainted) with Quicksilver - Link
  • Classic “The Merlin Show” video on proxies - Link

Merlin’s proxies video was a revelation for me. I still have Ctrl-Space mapped to Current Application -> Show Menu Items.

  • In fact, the entire 43 Folders archive on Quicksilver is well worth perusing. - Link
  • The Apple Blog (now part of GigaOm) published a series of tutorials back in the day, including this list - Link

Pick and choose at will, most tutorials, even the old ones, are still valid.

Use

Quicksilver has become an integrated part of my workflow. I use it daily for:

  • Opening SSH sessions to servers
  • Searching DuckDuckGo
  • Searching Pinboard
  • Launching applications
  • Controlling iTunes
  • Finding buried menu items
  • Composing quick emails and
  • Setting reminders

I’m a systems administrator during the day, so launching new secure shell sessions is something I do more times than I can count in the course of a day. I also search DuckDuckGo, often using the bang syntax to extend the search to other sites. When searching DuckDuckGo, I use the Vi keyboard bindings to navigation search results, which, nine times out of ten, means I never need to move my hands from the keyboard to find the information that I’m looking for from the time I decide I need to search till the time I close the browser.

In the keyboard preferences, I have the checkbox for “Use all F1, F2, etc. keys as standard function keys” checked. I then remap F7 - F12 to control iTunes forward, play/pause, next, and volume. I also use the main Quicksilver bezel to start playing playlists.

Quicksilver is deep; the more I use it the more of it’s capabilities I use. My latest example is browsing Safari history and bookmarks using a slightly different setting in the Spacebar behavior. In Quicksilver preferences, the Preferences pane (yes, I know), and Command, the second section is labeled “Search”, and the first option is “Spacebar behavior”. I set the spacebar to “Show Item’s Contents”, which lets me pull up Safari, hit the spacebar twice, and start typing to search my history. I find this to be a better option that having Safari’s history as part of the general catalog because I don’t like having my initial search results being unnecessarily cluttered.

This trick doesn’t just work with Safari; any application that keeps a history of documents, or includes a plugin, should work.

Understanding Quicksilver requires a bit of a change to your mental model of how you interact with your computer. The work is well worth the effort though, the payoff comes when you start calling Quicksilver without even thinking about it, flying through tasks that once slowed you down. It is like the difference in learning to type, where once you used to hunt and peck, and now your fingers simply know where to go.

It’s also a bit like learning to ride a bike.


Exciting Night

October 12, 2013

My wife and I were sitting at the dinner table chatting, winding down for the night, when I saw a pair of headlights shining in our back window. The back side of our house faces the middle school parking lot, with a good amount of lawn and trees between the edge of my land and the beginning of the gravel, so it is not too unusual to see cars back there, but late on a Saturday night did seem strange.

Then we saw a second pair of headlights, and the tell-tale red and blue flashing of police lights, followed by a third cop car with his lights flashing as well. At this point I figured they were going to give the first car a ticket for doing doughnuts or something in the parking lot. It happens, not normal, but not too terribly unusual. But, the cop cars didn’t stop, they tore right through my back yard, driving through the ditch, onto the sidewalk that goes between our house and our neighbors, and out into the street in front.

One car stopped blocking the road, and the cop jumped out of his car, the second car drove around my neighbors house to his back yard. We saw the first cop yell “Stop! Get down on the ground, now!”, and it looked like he had his gun drawn (although he might not have, it was dark), and we saw the guy they were chasing give up and lie face down on the ground. The second cop came from behind and handcuffed him and walked him back behind our neighbors house, presumably to the back of his police car.

The first cop turned out to be our local city police, and the second was a state trooper. The local policeman came to our house after a while to let us know what happened, and to take a look at the tire tracks to make sure that nothing was broken. Everything was fine, and I was happy that the kids didn’t leave anything out that might have damaged the cars.

All in all, it was quite a bit of unexpected excitement! I was chatting with the policeman about what happened, and at one point I remarked “what a moron”. The cop responded, “They don’t normally get too many points for being smart”.


Technical Education in K-12

September 16, 2013

Our small school is nearing the end of the four-year cycle for a one-to-one program that provides all students in grades six through twelve with a white MacBook. Students are free to take the laptop home, and parents must sign an agreement to pay for any damages. Over the course of the past few years I have become strongly, almost vehemently opposed to the program.

Since my wife works at the school, they issued her a laptop as well. Issuing staff a computer seems reasonable, but with both Rhonda’s and my personal computers, and the three from the school, we have five computers in our house. That just seems unnecessary, and our experience with the kids using the laptops has not been positive.

We have had to set limits on when and where the kids can use the computers, and of course, as soon as you set a limit on something you are causing friction. The kids would happily spend all day, and all night, with their nose in the computer. I understand that, believe me I’ve been there, but I worry about what spending so much time online will do to the kids. It would be one thing if the kids were doing something useful with that time, but no, they are not. They spend their time playing flash games, or chatting with other kids on Google Plus, or posting pictures of themselves making faces on Instagram, or just telling the world how bored they are. The students were given this amazing tool and set loose, but were not given the appropriate training on how to use it. Parents are given little say in how the computers are used. There is no administrative access for parents, but the computers are expected to be able to get online at home. Homework is regularly assigned that requires Internet access to complete.

One of the selling points the technology staff has used to sell the computers to the school board is iLife. iPhoto and iMovie are great, as recreational applications, but the kids could, and should, be learning so much more. The technology curriculum seems to center around learning their way around certain applications. My daughter might come home with an assignment to create a Keynote presentation, for example, but I’m not sure if even those skills will translate over to PowerPoint or any other presentation software.

The point is, without a core understanding of what a computer is and how it works, learning a single application becomes futile as soon as the applications user interface is updated. If the student memorizes where a button is to accomplish a task, and that button is moved, how will the student react? Neither the students or the teachers have a grasp on the rightful place of technology in our lives, what it really is, how it works, or how to effectively use it to get meaningful work done. Students are given Gmail accounts, taught how to trade personal information for “free” services, how to post embarrassing pictures of themselves online, and sent home with a $1000 toy. Problems ensue.

Students go into 6th grade knowing nothing about computers, no ability to type, no concept of basic applications, and are given a laptop and told to take it home and use it. My vision for a technical education is much different, and could start as early as kindergarten. There is no age limit for abstract thinking. One is never too young to understand that the pictures they see on the screen don’t come from the screen, but from the computer attached to it. One should at least start learning the basic components of a computer: RAM, CPU, storage, keyboard, monitor, and mouse, before they are given one to play with. Some people think this is too advanced for elementary school, but I believe it is only considered “advanced” or complicated because they have never taken the time to learn it.

My vision for a technical education for “21st Century Skills”:

  1. Teach the basics of what these tools are before they are given access to them.
  2. Teach students to type
  3. Teach students the basic hardware components of a computer and what they do.
  4. Teach students what an operating system is, what applications are, and how they interact.

Students could be issued an iPad Mini that would be their responsibility for the four years of high school, and then given the option to purchase the iPad from the school for a fair price. They could write reports using an inexpensive bluetooth keyboard and Pages or any of the many excellent text editors. But, the important thing would be that by the time they got to high school the students would already know how the device worked. In elementary, they could visit the computer lab occasionally, and be given instruction on typing and basic component recognition. In middle school they could continue to visit the computer labs, but be given more advanced training on past and current trends in common applications like office suites and web browsers. Speaking of web browsers, students should have a solid understanding by the time they enter high school of how the Internet works, what a web browser is and what it does, and possibly be given an optional track in HTML, CSS, and Javascript web development. By high school, before they are given an iPad, they should be able to explain how the web works, how a computer works, what an operating system is, what an application is, why there are system updates, and a basic overview of security and privacy.

Maybe that is asking for too much, but I don’t think so.

In high school the students should be exposed to the Adobe creative tools like Photoshop and Illustrator, science classes could explore the basics of Unix, which underpins nearly every smart phone and web server on the planet. Math, design, art, science, music, history, and even PE can benefit from computers, but not if the computers are used to show pretty Keynote slides instead of diving deep into the topic. Computers should be used when what they can do exceeds what can be done without them.

Real education can be enhanced by technology, but only if it is used correctly, as a tool, not as an end unto itself. What we need are kids who learn how to think. We need kids who can solve some of the big problems that are going to be there when they enter the workforce.

iPads lend themselves to this goal better than traditional computers. They are small, personal devices that are limited to one task at a time, much like how we think. We learn best when we are not distracted, and the myriad possibilities of what we could be doing at any given time on a Mac can be a load on our cognitive resources. iPads do not have that option, and as a dedicated research and report writing device they would work well. Think “electronic book, notebook, and infinite encyclopedia” all wrapped into one. Much like a book, the student can only do one task at a time, which allows them to focus.

I came home one day to find my daughter “doing homework”, with her iPhone in one hand, music turned up in iTunes, a chat window open, and her math textbook and homework in her lap. She was getting frustrated that she did not understand the assignment. So, I asked her for her phone, closed the lid of the laptop and set them on the coffee table, and told her to concentrate. Concentrate.

Focus.

I am more convinced then ever that our ability to concentrate is what will set us apart in the next generation of work.

Computers let our minds flutter about like birds, skimming across the water and jabbing at one thing and then another, but never diving deep into any one subject. It takes discipline to be able to resist launching Facebook or Twitter or Google chat, or tabbing over to iTunes or taking another break to check that “one little thing”. Computers are fantastic devices, “bicycles for the mind”, but we need training, and maturity, and understanding to be able to use them.


For The Public Good

September 10, 2013

I just finished another article for OStatic where I imagine what web services would be good candidates for public, non-profit organizations. The two services I came up with are search and email, both I consider essential Internet tools. I’ve wondered about the democratization of the Internet before. One thought I had was wondering about the possibility of each household owning their own “server”, or server type device that connected them to the Internet, but also became part of the Internet.

The comments in the article about a server in each home mainly pointed to the fact that no one knows, wishes to know, or cares about how to configure a server properly, except for systems administrators. However, in my view that is an issue of design, not inherit complexity. A properly configured management system can build a server capable of picking up a few minor adjustments from a web form or a basic mobile application. What the server would need to know is what your domain is, or be able to assign you an address based on a default domain.

The concept is not without precedent. Connected Data’s Transporter is essentially an embedded server running on small hardware in an attractive case, accompanied by an easy to use configuration utility. The type of device I’m imagining would not need to be expensive either. A Raspberry Pi will set you back $40, accompany that device with a small flash drive and a case attractive enough to be in an average family living room and you have a home server.

The server would be capable of hosting a small web site, like this one, email, and possibly even connecting into a distributed social network like Diaspora. The device would provide many of the Internet services that a citizen of the global community could want. Now, to explore this thought experiment a bit more, what if the device was given away for free? It could be subsidized through local taxes, and organized by a non-profit. Given the right hardware the device could double as the family wireless router, firewall, and cable or DSL modem.

Assuming wide-scale adoption of such a device, we could expect large services to provide hosting for the bigger sites, but the need for lowest tier hosting services to decline. It is an interesting idea, but more of a thought experiment than anything.


A Daring Adventure

September 1, 2013

or, A Good Life

I’ve been floundering. I’ll go ahead and call it an early “midlife crisis”. For the past few years I have been drastically thrashing about, unsure of what I’m doing with my life. I went to grad school and earned a Masters in HCI. I joined a start-up, and then left it unexpectedly. I started my own business, shut it down, reopened it, and am now wondering what to do with it. I built software I no longer use myself. I write about open source software, and use a Mac on my desk, but Linux on my servers at the day job. I have a hard time concentrating on any one thing because I’m torn in so many different directions at once. Things need to change.

The Why

I once considered myself something of an adventurer. I left school before graduation and spent months camping in a tent on the Washington coast. I joined the Navy and travelled, visiting Spain, Portugal, France, Greece, Italy, and Israel. Shortly after my wife and I married we moved to England and rented a farmhouse in the countryside of Cornwall. We stayed there for four years, and in that time we honeymooned in Dublin over St. Patricks day, and I went rafting in Wales, and caving closer to home in Cornwall. I drove through London in an American Jeep. When my tour in England was up, I joined the Defense Threat Reduction Agency, once known as the Defense Nuclear Agency, in New Mexico in a special duty assignment. We used to travel to the deserts of Nevada, north of Las Vegas. In my free time I would take the kids hiking in the Sandia mountains.

Things changed when I left the Navy. We moved to Iowa, I got a job at a desk in a cubicle, we had our fourth child, and I started living a “normal” life. Day in, and day out. For the past six years I’ve been a Linux systems administrator. In the same position, in the same desk. I started to believe that my adventure was over, and that belief made me desperate. I was wrong; I’ve been traveling through the deep.

The “why” of Farmdog, my Mac software company, stems from my desire to escape the cubicle and build a sustainable income that I can run on my terms, from anywhere in the world. Farmdog was meant to be a way to facilitate more adventure, more travel, more life. I thought if I could earn enough with my software business, I could pay off my student loans and eventually quit my day job. The reality has been far less interesting. Farmdog has barely sold enough copies of either Paragraphs or Go2 to pay for the annual Mac developer account and the two icons I had done for Paragraphs. I’ve earned far more as a freelance writer than I have as a developer, which is a disappointment.

After spending months and months learning Cocoa and Objective-C, and months and months more after that developing Go2 and Paragraphs, I was crushed when sales dropped to nothing after launching Paragraphs over the summer. I called it off, shut it down, then felt that I’d reacted poorly so I brought everything back up again. I sent a friend, who’s opinion I trust, an early version of this post, and he replied with a quote:

“Security is mostly a superstition. It does not exist in nature… Life is either a daring adventure, or nothing.”

That of course is Helen Keller, who was nothing short of amazing. I’ve been mulling that quote over for the past several weeks, and in the last few days I’ve come to understand more about myself, my motivations, and where I want to go with my personal and professional life.

It came to me while jogging the other day. We’ve built a good life here. In this house, on this land. My family is together, my kids are well behaved and on their way to becoming confident, competent members of society. My faith has never been stronger, and our church is fantastic. My relationship with my wife has never been better. But, getting here hasn’t been easy. The repetition of my daily life has allowed the kind of deep soul-searching that I don’t think I would have done before. I’ve had to do a lot of deep digging, honest, bare-bones, white-knuckle type of digging.

I thought my adventures were over, but I’ve been digging through the deep. The biggest challenge a man can face is to master himself, only then can he face his greatest adventure: being a father and a husband. With the help of Christ, I am doing just that. My motivations behind Farmdog were to pay off debt so we could travel again. We will travel again, but at an appropriate time, perhaps when the seasons of life change again and our kids are leaving home to begin their own lives, their own adventures. Now is not that time, now is time for slowing down as much as we can, enjoying and teaching our kids as much as we can, and living our day in and day out life to the best of our ability.

The Details

Farmdog as a company is selling two products that I, personally, do not use. Go2 has been replaced by a Quicksilver plugin that reads my .ssh/known_hosts file. Paragraphs is a fairly good blogging platform, but it combines two tasks into one application, and winds up doing neither of them as good as competing products. Jekyll is fantastic, and includes free hosting with Github, and the Mac has an embarrassment of riches when it comes to fantastic text editors. MacVim, BBEdit, IA Writer, and Byword are at the top of that list. Paragraphs does have a few neat tricks, but it is nowhere near as good, or as bug free, as other text editors.

If I were to have the time over the next five years to dedicate several hours each week to developing Paragraphs, I think I could build it into a fantastic application. But, each minute I work on Paragraphs I’m taking a minute away from something else that needs done. If I’m programming, that means that I’m not doing any freelance writing, and as previously stated, writing makes me far more money each month than programming ever has. Since the goal is to pay off some bills, it seems counterproductive to spend my time working on something that makes little to no money.

I hate to take Paragraphs and Go2 down, but it seems hypocritical of me to keep them up for sale when I’m taking my personal and professional life in another direction. What makes this decision so hard is the amount of help I’ve had along the way. For years I’ve been able to send off a new build to a good friend or two and have them tear it apart, and send me back a long list of wrongs in need of repair. I cannot express how important having someone test your software honestly is, or how much I appreciate the help I’ve received. But, however highly I value it, loyalty to friends seems like a poor motivator for running a business. Luckily, since I have such smart friends, they already know this.

Farmdog will remain a business, and I will support Paragraphs and Go2 for one year from the date of the last purchase of either application, but further development will be very, very slow, if at all. I may keep developing Go2, but the future looks dim for Paragraphs.

Now, and Soon

My personal life needs me to keep working, but also to keep growing and finding new avenues for change. To find contentment in my professional life, and to solidify the many aspects of my work, I needed to find a new direction, one that met this criteria:

  1. Made use of my experience as a Linux sysadmin in a web environment
  2. Made use of my degree in HCI.
  3. Provided an opportunity for both freelance and corporate work.
  4. Shows promise and sustainability for the future.
  5. Incorporates open source software and a new stream of topics for writing, until freelance writing is no longer needed.

Considering my professional needs, experience, education, and desires, it seems clear that I should be modifying Farmdog Co. into a web design and development business.

In many ways, this new direction reminds me of when I decided to learn Cocoa. Design now seems like programming did then: out of reach, too far from what I’m good at, just a little too much for me to grasp. I love a good challenge. Especially when that challenge can quite literally change my life. However, the difference is that I’m actually far more familiar with web work than I ever was with Cocoa. I started building web sites almost as soon as I got a computer. I was put in charge of building the command intranet back in 2000 - 2001, and I’ve been involved with the web since. Even with Cocoa, Paragraphs builds web sites, and I designed the default theme (such as it is) myself.

Web design and development feels right. After many nights of prayer and meditation, I feel good about this change. My first client will be, of course, Farmdog, followed by this site. I expect many slips and falls along the way, after all who am I to think that I can just decide one day to be a web designer. But I know one thing for sure, this will certainly be a daring adventure.