Posted on Wednesday, 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.
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.
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:
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
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:
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.
Posted on Monday, 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.
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.
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.
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
- 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.
Posted on Monday, 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”:
- Teach the basics of what these tools are before they are given access to them.
- Teach students to type
- Teach students the basic hardware components of a computer and what they do.
- Teach students what an operating system is, what applications are, and how they interact.
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.
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.
Posted on Thursday, August 04, 2011
The venerable BBEdit recently received a big upgrade, and looks poised to attract users of TextMate, which, by all accounts, has been abandoned by its developer. I tried to love BBEdit, but it always felt like trying on someone else’s clothes. They might look good, but that does not mean the clothes will be comfortable for you. Recent conversations about text editors on Build and Analyze led me to rethink my position, and examine in more detail how I came to choose MacVim.
Several years ago, I was sitting with a contractor as he installed a new firewall on our network. He was explaining to me how Unix systems relied on text files, and how all Unix systems came with a text editor named vi. I asked, in my ignorance, why anyone should bother using such ancient technology, when a modern graphical text editor was available. Pragmatically, he replied that someday I would be connected to a server through SSH or telnet and the only way to edit a file would be with vi. I took his advice to heart, and I am glad I did.
Over the years as I have dug deeper and deeper into Unix (and later Linux) systems, I accumulated a few of my favorite vi tricks which I kept in an exrc file. I had complicated macros that would do things like building the skeleton of a shell script, or insert a comment with my name and email address, or the current date. OK, maybe it was not that complicated, but every time I hit the mapped key combo, I smiled. I learned to navigate to an exact line in a file, to yank and paste text, and generally how to get along with the only text editor I could be sure was on each and every server I was responsible for. I did not realize it at the time, but I was building up valuable expertise, and, it seems, more importantly, a type of muscle memory.
In the past, I always kept my work on the servers separate from my “work” I did on my Mac. My Mac was a hobby, but work was important. When TextMate appeared, I downloaded a copy to use for building web sites. I enjoyed TextMate, but there was never love. Love takes time, frustration, and understanding. Love was what I was building at work with vi. I simply did not understand it at the time.
In fact, for many years I kept the attitude that vi was not a modern text editor. It was simply a tool for work and that on a Mac I should be able to use a graphical text editor that did lots of fancy tricks. It was not until this summer, after years of building my vi knowledge on the server that I decided to use vi for a Python programming course on my Mac. I downloaded a copy of MacVim, spent a few days configuring it the way I liked it, and, for what feels like the first time, felt completely comfortable in my text editor.
I had already overcome the biggest obstacle to vi: the learning curve. Slowly, over years of use, I had become fluent in one of the most powerful text editors available.
I will not go into the details of how to configure MacVim, there are several articles for that already. If you are interested, I keep my MacVim configuration in GitHub. What I will say is that taking the time to learn the basics of vi, and taking a few days, maybe a week, to find the magic combination of plugins and configurations that work for you, is worth the effort. MacVim is like a gateway drug. Once you get used to using it, you might find yourself attempting to navigate a new email in Mail with vi key bindings.
I am still learning new things with MacVim. There are precious few tricks that another editor can do that MacVim cannot. However, choosing MacVim is akin to choosing a partner to share your life. The more you put into the relationship, the more you get out of it. In any relationship, over time you become aware of the others shortcomings, but if the relationship is healthy, those shortcomings are very easy to overlook. If you spend serious time in text, it behooves you to spend serious time learning your tools.
MacVim is actively developed, has a dedicated community, is easily extendible, and can fly through the biggest text files with ease. However, it does take time to understand, and I will not try to tell you that the commands you use to control MacVim are intuitive or “easy”. Nothing worth doing is ever easy.
Posted on Sunday, April 03, 2011
Use only the software that you need. No more, no less. Choose one application for each task, and become an expert on that application.
I have two types of applications that I’ve had a hard time finding a favorite: web browsers and text editors. When I first started writing, I wrote everything in Microsoft Word. When I needed to learn vi for work, I unconsciously relegated it to headless servers. Later, when I had a brief fling with Linux on my work PC, I used, and despised, Open Office. Last month I found that I had purchased or installed every major word processor and text editor for available for the Mac.
I’ve had Word, Pages, Mellel, Mariner Write, Ulysses, AbiWord, Bean, WriteRoom, OpenOffice, MacVim, and TextMate. To top it all off, I’ve coupled the last two with LaTeX for “document generation”.
Browsers are a similarly sad story. My default browser as gone from OmniWeb to Camino to Safari to iCab to Shiira to Firefox to Flock to Sunrise to Stainless to Chrome to Opera and finally back to Safari.
All of this, everything I wrote about each of those applications above is ridiculous. I have the utmost respect for the developers, but the honest truth is that I simply do not have the time or desire to keep trying new software.
Which leads me to the “Principle of Least Software”. The less third-party software you install, the less likely you are to run into problems when upgrading. Apple has brilliant engineers working for them, and their bundled applications that come with OS X set the bar for competing apps. Safari is a perfectly good web browser; it’s fast, loaded with features, and supports extensions. That’ll do, thanks.
Another perfectly good application bundled with OS X is TextEdit. The humble text editor that could. When I am writing, I need only for the text to be rendered in a pleasing font, and for standard OS X keyboard shortcuts to be recognized. Everything else is gravy. I write my blog posts in Markdown, so most of my writing looks like plain text anyway. Markdown syntax is so minimal that having keyboard shortcuts for it is almost silly. How hard is it to put an asterisk at the beginning and end of a word? Or to enclose a word in brackets and follow it with a URL in parentheses? Not hard, and I’ve been chasing my tail on these “productivity hacks” for far too long.
I’ll keep Word around, because, face it, sometimes you just need Word. For everything else, I’ll be sticking with TextEdit and Safari. I’ve been to the fancy TextMate clubs, and the exclusive Vim resorts. I’ve been to the Firefox festivals and Chrome love-ins. I’ve been there. I know exactly what they can do, and I’m no longer impressed.
Use only the software that you need. No more, no less.
I need only one text editor, one web browser, and a handful of other single purpose apps. What do you need?
Posted on Monday, March 14, 2011
There used to be a line between having a Mac, and owning a Mac, and that line was drawn with Quicksilver. Quicksilver changed the way I thought about using my computer in a very fundamental way. It led me to think more about telling it what to do, instead of clicking about asking it to do something. It led me to think about mastering my tools like a craftsman, choosing my tools with great care and thought. Quicksilver was my first step towards owning my Mac.
At first, Quicksilver is a difficult application to get your head wrapped around. At least it was a few years ago. It’s an application launcher, a file browser, a mail client, a basic text editor, a database manager… and more. What truly sums up an explanation of Quicksilver is that it’s a unified interaction paradigm for the Mac. You speak to it in sentences, tell it what you want, and then what you want done with it.
Here’s what I said about it in a paper I wrote in 2006:
Using a Mac can be made much more productive by installing the free application named Quicksilver from Blacktree. Quicksilver runs in the background and waits until the user presses a pre- defined key combination. Once the main Quicksilver window is available, the user types in the first few letters of what he is looking for, followed by a tab, and then the first few letters of what the user wants to do with the item selected. For example, to launch the Safari web browser, the user could type “S tab return” and the application would launch. Quicksilver is a major leap forward in human computer interaction, however it currently has a very steep learning curve and takes some getting used to.
I’m so glad to see Quicksilver back in active development again. I’ve looked at the source code, and it’s a daunting task, but it seems like the group who’s adopted it is a dedicated bunch. They’ve set up a twitter account, and a blog; both of which are worth following.
There are so many things that Quicksilver does that I’ve forgotten how much I’ve missed them. Appending a text file on the fly, adding an event to iCal, shooting off a quick email, searching the web at DuckDuckGo, keyboard access to an apps menu, moving files, printing files, the list goes on, and on.
I suppose this is a testament to open source, that a dead project can be resurrected by a few who want the app to continue. Here’s hoping that it not only continues, but thrives.
Posted on Wednesday, February 23, 2011
37 Signals comments on a trend I’ve been noticing for a few years. Data centers and IT departments are not the core competency of most businesses, they are a requirement of operating the business. Or, at least, they have been for the past thirty years or so. Businesses are now seeing the benefits of moving what they are not good at, controlling IT, to what they are good at, which is whatever makes them money.
You no longer need a tech person at the office to man “the server room.” Responsibility for keeping the servers running has shifted away from the centralized IT department. Today you can get just about all the services that previously required local expertise from a web site somewhere.
via: The end of the IT department - (37signals)
John Gruber from Daring Fireball has a comment that matches what my thoughts have been when I try to explain the consolidation I see in the sysadmin field:
Certain of the comments on Hansson’s post remind me of this quote from Upton Sinclair: “It is difficult to get a man to understand something when his salary depends upon his not understanding it.”
I’ve even heard that virtualization technologies and cloud services will provide more opportunity for sysadmins. That makes little sense to me. People are assuming that the work in the future will be just like the work of the past. This is a fundamental misunderstanding of the nature of work, especially work that revolves around technology. It grows, it changes, it merges into new things. Consider the iPhone.
Disruptive technology changes things, and the iPhone was, and continues to be, disruptive. It is powerful, both in means of hardware capacity, and the operating system and software that it runs. How long will it be before the iPhone, or one of it’s many competitors, completely supplants laptops as the computing device of choice for people? I imagine a future where you dock your phone to a monitor, keyboard, and mouse and use it as your one and only computer. I don’t think its too far away. When that happens, how much need will there be for a traditional IT department?
Software is becoming simpler and easier to use. Hardware is becoming more reliable, and longer lasting. And, most importantly, harder to break. This comment from the 37 Signals post stood out to me as a common misconception in the IT industry:
I’ve “done” IT for multinationals and startups, and the thing that is most obvious, is that if you leave the kids alone with their toys, you end up with a network which hardly ever works, more viruses than you can count, the mail server acting as a spam relay, the company being raided by FAST , the fans overheating in the PCs, the aircon never having been considered in the server cupboard, the backup plan being a mystery… need I go on?
No, you need not go on. Because every single argument stated is a symptom of the Microsoftian workplace. A computer on every desk, and every computer running Windows. Since Windows is easy to break, people break it. It’s a self-perpetuating cycle. Over the years people have been trained to “click here, and here, and once a week here, but no where else or you’ll break it”. People don’t need to become smarter about computers, computers need to be easier for normal people to use. When they are, when the computer is as simple (or, is) an iPhone, the need for things like anti-virus and defragmenting schedules, and wallpaper policies go out the window.
Desktop support departments are a symptom of misguided use of technology in the workplace. What is the purpose of that Dell on your desk? To assist you in performing whatever task your job really is. Perhaps if you break your tools, you are not really fit to be doing the job in the first place. If you don’t understand your tools, how can you be really good at what you do? Would you hire a carpenter who doesn’t know how to use a jigsaw?
Change is coming. I can feel it, see it on the horizon. Between web services, increased business specialization, and incredibly small and powerful computers, there is a shift in the culture of work brewing.
Alex Payne from Bank Simple sees it
Finally on the technology front, we’re deploying into Amazon’s cloud. Our information security architecture allowed for this even before Amazon announced PCI compliance; their support for these more stringent security standards is a happy bonus for us. Using AWS today is a no-brainer, particularly for an operation of our modest scale and performance requirements.
They are a bank, and they are gong to be using Amazon’s AWS. Independently responsible employees, outsourced data center, and no IT department. How long will your business hold on to the ‘90s mentality of what IT needs to be.