jb… a weblog by Jonathan Buys

Be Excellent To Each Other

December 27, 2013

The recent row over iA Writer’s developers and their patent application reminded me what a small community the Mac developers are. The real problem was never about iA attempting to patent their work, the issue was that they forgot their place in the ecosystem. There are a few in the community that give freely and abundantly, like Brett Terpstra, and when iA threatened to use their patents offensively against Terpstra’s Marked, the community rightfully condemned them.

I haven’t used Writer Pro, the application with the syntax highlighting at the center of the debate, but I do own a copy of Writer. I think Writer is a fine application; it’s no Vim, but it does what it says and does it well. I imagine that Writer Pro is just as nice, and that the thought the developers have put into implementing syntax highlighting is well done. That they used a built-in Cocoa class to do it doesn’t concern me, but attempting to patent the work of Apple does. It bothered quite a few developers too, but not nearly as much as if they would have kept their mouths shut and saved the patent for a rainy day, only pulling it out when the trolls came knocking. But they didn’t.

Instead, they came out shooting:

@MarkedApp @JedMadsen …mostly, I wouldn't suggest at this point to rip off Writer Pro's core innovation. We're well prepared there. :-)
Oliver Reichenstein (@reichenstein) Thu Dec 19 2013 5:59 PM CST

And…

@JedMadsen Thanks, Jed. It looks obvious now, but it was a tough fight; so tough, that I'm ready to go into another fight to protect it. :)
Oliver Reichenstein (@reichenstein) Thu Dec 19 2013 10:50 PM CST

The details around the issue have been well covered by The Verge, Marco Arment, and Ben Brooks, but I’m willing to ignore the patent. You can have your patents, even though I don’t agree with them, and you can claim that an Apple innovation is your own, but when you threaten other independent developers, that crosses the line. I will no longer be supporting iA, best of luck. They should have remembered, we should all be excellent to each other.


Bigfoot Footnotes in Jekyll

December 27, 2013

Like the good doctor, I knew as soon as I saw Bigfoot that I would be adding it to this site. 1 I’ve avoided footnotes up till now because the HTML formatting for them seemed far too fiddley, and the Jekyll Markdown processor I was using did not support them.

It turns out that adding support for footnotes in Markdown was as simple as replacing redcarpet with kramdown in the Jekyll configuration. Now, instead of mucking about with HTML that looks like this:

    <sup id="fnref:1">
        <a href="#fn:1" rel="footnote">1</a>
    </sup>

<div class="footnotes"><ol>
    <li class="footnote" id="fn:1">
        <p>footnote.<a href="#fnref:1" title="return to article"></a><p>
    </li>
</ol></div>

I can have nicely formatted Markdown footnotes in my text, like this:

Footnote inline [^1]

[^1]: The footnote text

It may not amount to much, bit I think it’s a nice addition to the site.

  1. I’ve always liked footnotes. 


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.