jb… a weblog by Jonathan Buys

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.


Personal Information Architecture

July 10, 2013

For my computer to be useful to me I need to be able to quickly save information, and then easily retrieve it later. Saving and retrieving information sounds like a simple enough use case, but doing both quickly and easily does not. The more information you have saved on your computer, the more difficult it is to effectively retrieve the information you need the moment you need it. Researchers and developers have been tackling this issue for decades, but so far no one has come up with a single best solution that works for everyone. What we need is a way to store and retrieve information without having to stop and think about the method or means of organization. The organizational method should provide an effective affordance without resorting to decoding the method itself.

The first organizational method I tried used a hierarchical folder structure based on dates and file types. For example, inside the “2002” folder, I had a folder for each month, and inside the “January” folder I had a folder for Word documents, and another for Excel, another for text, and so on. However, there was no naming system for files, and no way to associate related files for different projects. It was more of an archive than a persistent and useful file organization system.

I purchased the first version of Yojimbo when it was released, and used it heavily in conjunction with the folder structure. Yojimbo let me quickly save information, and provided a simple search box for retrieving it later. In my opinion, the best feature of Yojimbo was the quick entry window I had mapped to F1. Yojimbo was smart enough to recognize the data I had on the clipboard, and presented an appropriate template filled out with the data. For example, if I copied a URL, Yojimbo would offer to save a bookmark or a web archive. If I copied a serial number, Yojimbo would present the software screen filled out with the serial number and ask for the name of the software. Yojimbo worked well for me up until the iPhone was released, and I realized I wanted ubiquitous access to my data. I contacted Bare Bones several times to ask about an iPhone companion, but the answer was always that there were no plans for one.

Another important change in thinking happened about this time. I began to care quite a bit about the format of my data, and the ability of my data to remain in a retrievable format over time. Yojimbo worked out well for this, since with it I was able to export the data exactly as I put it in. However, the most attractive competitor to Yojimbo, Evernote, did not respect the original format. The third player in the information management apps is DEVONthink.

DEVONthink is a beast of an application with some very special, specific use cases. It is similar to both Evernote and Yojimbo in that it is an information organizer, but where it departs is how deep into the information DEVOnthink goes. DEVONthink includes an form of AI that can help you sort and search your information, but to help the AI engine along, the developers suggest separating your data into several topic specific databases. DEVONthink then lets you open and close individual databases and sync between Macs or the iOS companion application, DEVONthink To Go. I recently gave DEVONthink another try for a few days, and found it a worthwhile experience. DEVONthink helped me get a new perspective on the information I keep, and in doing so I found that I didn’t really need an application with this much power.

DEVONthink suggested that I separate everything out into topics, which could be viewed as top-level folders. Inside each folder could be several groups, and groups within groups. After using DEVONthink for a few days, the similarities between it and the Finder were obvious, and for my use case, DEVONthink became too limiting. It is an application that can handle almost everything, but not quite. Anything that needs its own folder structure cannot live inside DEVONthink, so I eventually wind up maintaining two distinct folder hierarchies. One of databases and groups inside DEVONthink, and one of standard folders in the filesystem. I realized, again, that if I wish to simplify my information storage and retrieval, I needed a system that could accommodate everything. The only system that fits the bill is maintaining a nested folder structure in the filesystem.

I have tried several file naming conventions, including the The Bunsen Method. Seth Brown is extremely intelligent, but I found his method a bit boggling. Keeping all of your files in one of three folders assumes two things: 1, that you are going to be able to remember when a file was created, and 2, that you are accessing the file using an interface convenient enough to accommodate the obscure file name. My experience when faced with a wall of text, all of it starting with a long string of numbers was that I was confused, and had trouble scanning for what I was looking for. My eyes would instantly scan past the date, time, and token fields and straight to the title. What I decided on was much closer to David Sparks’ method, using a simple date stamp followed by a descriptive name.

2013-07-16-Personal_Information_Architecture.md

The folder hierarchy itself is based off of areas of my life. For example, I have a top level folder in Documents for work, and another for home, and a third for Farmdog. Inside each of those are project specific folders, for example inside home I have one for Appliances, another for Oliver (our dog), and another for Finances. Separating out my files this way provides easy backups, separation (in case I ever get a new computer for work), and an easy way to quickly identify where a file might belong. Where the folder hierarchy falls apart is when I avoid stopping to think about what the information I’m saving is and what use it might be to me. When this happens what I used to do was save it to the Desktop, or to the top level of my Documents folder with a default name and forget about it. To avoid this situation, I use a top level folder named “Inbox”, and Hazel. Hazel lets me define what types of files I might have ahead of time, and define rules for what the files should be named and where to put them in the folder structure. I’ve adopted this system from David Sparks’ book Paperless, and for the most part it works well. I set a weekly reminder in OmniFocus to sort through the Inbox folder and update the Hazel rules accordingly, or simply throw the files where they need to be.

The folder hierarchy and naming system I use allows me to think about where I am, what I am working on at the moment, and what I need. I find this structure far better suited to my computer use than thinking about what search terms I should use to find what I am looking for.

But what about ubiquitous access? I could use Dropbox for a portion of the data, but I have found that my needs for information away from my computer are actually so small that I don’t need all of it. What I want is not really what I need, and until what I want is available in to me in an acceptable format, I’m not going to worry about it. The closest thing I’ve seen to exactly what I would like is the Transporter, I’m considering picking one up.

Even with a standard naming convention, an environment and topic based folder hierarchy, and Hazel rules enforcing the standard, there are still things that I find that I want to keep. Just stuff. For this, I’ve gone back to saving random bits of things in Yojimbo. I’m not sure how long I’ll keep this up, I may wind up exporting all the notes into the filesystem and letting Hazel sort them out, but for now I’m enjoying the speed and ease of using Yojimbo. Yojimbo is looking a bit long in the tooth, I hope to see an update soon.

The unlimited flexibility of the filesystem is both a blessing and a curse. You can arrange your data in any way you choose, and save any type of information you wish, but doing so without strict guidelines on naming conventions and placement within a ridged folder structure will cause clutter and lost information. Many people find that relying on a third party application like Evernote or DEVONthink to be perfect for their needs, but I found both of them far too limiting for my needs. Giving up access to data on my iOS devices in return for the secure knowledge that there is a place for everything, and everything is in its place, is a trade off I’m willing to make.


Farmdog Closed

June 6, 2013

Update: July 30, 2013 - Farmdog is not closed, but I am rethinking everything. Paragraphs will continue to be supported for the foreseeable future.

Farmdog Co. has closed. There had not been a single sale of Paragraphs for two weeks, and over three weeks since there was more than a single sale in a day. Farmdog was a fun project, but flawed in both concept and execution.

For anyone looking for similar functionality to Paragraphs, I highly recommend Byword 2.0 with Wordpress or Jekyll.


Where We Stand

June 4, 2013

In the online help for Paragraphs, I have a rather odd statement:

Farmdog is made of dreams.

That comes from the heart. My company, Farmdog LLC, is made out of dreams. What if I could afford to move closer to our friends and church? What if I could quit the day job and rent out an office close enough that I could bike to work? What if my wife didn’t have to work? What if we didn’t have to worry about money and bills? Obviously, our life would be better. I was foolish with money for a very long time, and now that I’ve wizened up, I’m trying to put things right. Unfortunately, I’m not sure how well I’m doing.

Paragraphs was released earlier this month, and as I wrote on the company blog, I was very lucky to have been mentioned by a few high traffic sites. The initial publicity spawned a good start to sales, but it was simply not enough. I don’t have the budget for advertising, so word of mouth is the only publicity I can get, and without it, Paragraphs drifts off into mediocrity.

Sales figures

That chart is disappointing, but it’s not the end of the world. I was watching a talk by Kevin Hoctor about building a good indie software business, and one slide absolutely resonated with me.

Never Give Up

At one point, and I’m paraphrasing here, Kevin says “you can’t just ship your app and drop it after the first month when sales are not what you expected.” Quite true. I found another encouraging quote by Daniel Jalkut:

Always remember that the main thing separating people who succeed from people who don’t is a commitment to keep trying while the others give up.

Knowledge and cleverness are key components to achieving your goals but they pale in comparison to persistence and an unwillingness to admit defeat.

What separates successful people from others is a commitment to keep trying.

I’m not known to be a quitter, and I’m not about to start now. If I can teach my kids anything by the example of my life, I want it to be about being persistent.

So, where we stand with Paragraphs and Farmdog Co. is that initial sales are disappointing, but I’ve learned quite a bit about what the market is looking for, and I’m working hard to address Paragraphs’ shortcomings. However, given that I’m a father of four, I have a full time job, and I’m a freelance writer as well as a developer, there are a few very real constraints that I need to work within.

First, even as I plan for the future, I can’t ignore the fact that my kids are growing up right now. My oldest will be starting high school next year, and I’m teaching my youngest how to ride his bike. Each child needs one on one time with Dad, and all of my work will be wasted if I don’t make time to spend with them. We work so we can live, not the other way around. It is also important to spend time with my wife, fitting in little dates when we can, like a midnight pizza.

Second, even though I have big plans for Farmdog, during the day when I’m at work, I have to give 100% of my abilities to the company that pays the bills. Even when they frustrate me, even when I think I could build a better system on my own, and especially when I’m just not feeling up to it, I need to make sure that I’m taking care of the company that takes care of me and my family. Without the day job, not even the dream of Farmdog could exist. The someday in the future that I imagine is at the least five years away.

Third, I despise debt with a passion I can not put into words. The fact that I have debt gnaws at me, deep in my soul. So, to speed up paying it off, I’ve committed to freelance writing three nights a week, at least. Freelance writing is difficult, but it is good to keep that part of my brain in action, and it is great to keep up with the industry and the open source community in general. It would be easy to focus on the small section that we use at work, writing keeps me engaged and learning new things. Often I don’t feel that I completely understand a topic until I’ve written about it.

So, with all of these commitments, with my life in context, where does this leave Paragraphs? Again, where do we stand? I have to refocus from time to time on the dream. I did not start Farmdog to get rich, I started it to have more control over my life. That’s not something that is going to go away, the dream is here to stay, and, therefore, so is Farmdog. Practically, what this means right now is that work on Farmdog is relegated to the weekends, unless a customer sends in a bug that needs immediate attention. What this also means for Farmdog is that I get time to think through hard problems, and I get to bring a lot of experience to the product. This is why I believe Farmdog will eventually be successful. Paragraphs might not be perfect, but the feature set is well thought out and addressing a market segment that I believe is under-served.

It is my intention to make Paragraphs the easiest way to write online. I know there are a few geek hurdles to overcome, but I’m working on a lot of new things that are a bit outside my wheelhouse to get the product where it needs to be. I don’t want to go into detail, but suffice to say that by the time I’m done, I hope that Paragraphs will be the only thing a customer needs to publish their thoughts online.

So, where we stand with Paragraphs and Farmdog is that we plan on improving the product, slowly and deliberately over time, until we reach the dream. And then, maybe we will start working on version two. (just kidding, I already started on version two) Paragraphs is a labor of love, it will not be ignored, it will be lovingly nurtured.


The Hardware Racket

April 15, 2013

Every now and then something just gets to me, and for the past few weeks, that something has been the process of purchasing enterprise hardware. Servers, SANs, load balancers, the kind of equipment that, instead of a price and an “Add to Cart” link, comes with directions on who to call.

Most hardware is not purchased directly from the manufacturer. It’s purchased through resellers, and each reseller will have a regional representative who will want to meet with you. The resellers don’t really want to just sell you the hardware, they want to “partner” with you to “build a solution”. They want to add consulting fees to your hardware purchase, and they want to jack up their margin on selling the hardware as much as possible.

It’s not small money we are talking about either. I’ve seen purchases of a single piece of equipment drop by $22,000 by modifying a single software line item. How much of that cost was the actual price of the software, and how much of it was reseller markup we will never know. The reseller program is built to keep us in the dark. For example, NetApp has a few nice bullet points on their “Become a NetApp Partner” page:

The NetApp Partner Program for Resellers is designed to help you grow your business and maximize profitability. With NetApp® products and services in your portfolio, you can deliver innovative storage and data management solutions that satisfy even your most demanding customers.

As a NetApp Reseller, you can:

  • Increase revenue
  • Earn greater returns on your investment
  • Leverage our tools, best practices, and technical experts
  • Create opportunities with our co-marketing resources, sales enablement programs, and prequalified leads

The combination of market momentum, increased demand for storage products, and innovative technology from NetApp makes this a great time to be a NetApp partner.

Pay special attention to “maximize profitability” and “increase revenue”, because as a consumer of these goods, that’s money out of your pocket. It’s not that companies like NetApp don’t have a price list, they do, it’s just that the price goes through an algorithm first. I believe the algorithm takes into account the volume of sales by the reseller, the number of discounts available to the reseller, and probably a few other items. I’d love to get a look at it someday.

In fact, I’d love to see a centralize, crowd-created database of hardware costs. A Web site that let me check on what the going rate was on a 10TB SAN. I’m not sure if I could convince anyone to do it, but it would be fantastic if sysadmins and IT managers around the country would upload the PDF quotes they get from resellers. Then we could parse the quotes, and come up with a general idea of what the market price is for the equipment. Right now, we just have to trust that whatever regional reseller we are working with is being honest and not gouging us. Hard to do with the salesmen arrive in BMWs and talk about their private pilots license.

I’ve heard that it is “unethical” to share the quote we get from one reseller with another. I’m not sure about that. I believe that if the vendor knew that anything they gave to us had no expectation of privacy, we would be free to share the quote with whoever we choose. The resellers are the ones deciding the practice would be unethical because it would be bad for their business if they had to fairly compete on price. Personally, I would be satisfied with whichever reseller let me know up front what their cut of the deal was, and how I could calculate the most honest transaction for my company. Dealing with resellers is like trying to buy a used car or a gym membership. It’s shady.

Here’s another example of resellers behaving badly. We were in a meeting with a salesman, and an engineer from his company, and they had a manufacturer on a conference call to discuss the equipment we were pricing out. When we got to the end of the meeting and we thought we had all of our questions answered, we hung up on the manufacturer, and the resellers started undercutting their manufacturer “partner” to try to sell us a similar piece of equipment from another manufacturer. They said it was because they wanted to partner with us to make sure we got the best deal, but I was left with the impression that the equipment they tried to pitch simply gave them a fatter margin.

This is the biggest draw, in my opinion, for open source software and hardware. If we can match the performance of these big name vendors using hardware that we can purchase from NewEgg, we won’t have to deal with slimy resellers.


Mozilla Turns 15

April 2, 2013

Mozilla has been one of my favorite open source projects since I first learned of them back in 2002. I remember downloading the Mozilla browser, and thinking that it was just like Netscape Navigator (no surprise there), an all-in-one browser that threw in the kitchen sink, just in case you needed it. You can still download it’s descendant, SeaMonkey. Not long after, I heard about another browser they were calling Phoenix, that, as it was explained to me, pulled out just the web browser from Mozilla, and left everything else alone. I downloaded it, and it was fantastic. Incredibly fast, lean, and simple. It became my favorite right away. There was only one release of Phoenix, after that the browser was renamed briefly to Firebird, and finally, Firefox.

It was an exciting time for the web. The world was starting to get broadband, but most connections were still dial-up. The slow connection speeds and slow computers meant that any small improvements in browsing meant a lot. To many people, the web was Internet Explorer. IE represented upwards of 90% of Internet traffic, so there was a real David and Goliath feel to Mozilla’s snappy little browser. There were many sites that rendered correctly only in IE, and Microsoft was busily expanding their monopoly on desktop computers to the web with FrontPage and IIS. The web could have turned out very different, and I like to think that we have the openness and inclusion of the web today in thanks, at least in part, to the work done by Mozilla back in the late 1990’s and early 2000’s.

Over the years Firefox has both grown and waned in popularity, but the impact of Firefox, and how it helped shape the web should not be underestimated. Today we have several projects that work to keep the web an open platform (like the ubiquitous WebKit project), but the work is far from over. Privacy online is a major issue for the future, as big companies become more sophisticated about tracking your activities on the web, and despite the advances of Firefox and other browsers like Chrome and Opera, Internet Explorer still makes up for the lions share of web traffic.

I’ve used all (or, ok, most of) the different browsers out there, but returning to Firefox always feels like coming home to me. Firefox is different because Mozilla is different. They are a non-profit organization dedicated to making the web a better resource for everyone. In my book, that’s something to be proud of. Mozilla is always looking for people who want to help, so if you feel like being part of something big, you might want to check it out.