jb… a weblog by Jonathan Buys

The end of do-it-yourself - TechHive Beta Blog

July 24, 2012

Link

It makes sense that you’d need a special tool or kit to replace a cracked screen, but why should I have to send away my laptop in order to upgrade the hard drive? Why should I have to be without my phone or tablet for a week while the battery is replaced because it will no longer hold a charge?

A computer becomes more useful the smaller and faster it is. No one, other than geeks, ever cared how computers were put together, or how they worked. They only cared how they could use them to design a building, or research brain injuries, or plan a trip to Africa to drill a well. Real work.

The argument for repairable hardware is similar to the argument for open source; it misses the point of computers.


Should All Software Be Free

July 22, 2012

Introduction

We live in the information age. Digital devices and Internet connected, hand held computers are the prevalent way we communicate. The price for computers and for access to the Internet has dropped, and availability of publicly accessible Internet connected computers has risen. Schools across the country are providing computers to their students, some as early as sixth grade, and public libraries have been equipped with computers and, in some cases, free wireless Internet access. With the prevalence of computers of all shapes and sizes across nearly all parts of our society, questions about their ethical use and the purpose and place of computers in our lives have risen. One such question that has been debated since the early 1980s is “Should all software be free?”

“Free” in the English language is a fairly relative term. The New Oxford American Dictionary contains eight definitions of the word “free”, as well as an additional two adverb uses of the word. In the context of the question above, “Should all software be free”, the obvious meaning of the word is the fifth definition, which reads “given or available without charge”. However, the more academically interesting, accurate, and perhaps even subversive meaning of the word free is the first definition, which reads “not under the control or in the power of another; able to act or be done as one wishes”. Most computers shipped today come pre-installed with software that does not fall under either of these definitions of free, but should they? From a purely ethical context, should the user of software be able to copy, modify, and redistribute software as he sees fit? What are the social implications of an enmasse migration to free software?

There are many answers to this question, depending on who you ask. On one end of the spectrum are large proprietary software companies like Microsoft, Adobe, and Apple. These companies view software the same as they would a physical product, like a toaster. They design, engineer, and test the software, then package it and sell it to consumers to run on their computers.

On the other end of the spectrum is the Free Software Foundation, founded by Richard Stallman, who evangelizes the philosophy that all software, independent of the original author, should be free of restrictions.

History

In 1983 Richard Stallman was working as a programmer in the artificial intelligence lab at the Massachusetts Institute of Technology (MIT). By this time in his career, he had already garnered a certain amount of recognition in the small but burgeoning hacker community as a talented developer, largely due to his creation of the EMACS text editor, and his academic papers on artificial intelligence. Stallman embraced the openness and sharing of the hacker community, and found an ethos that would shape his career in the years to come. Towards the end of his work at MIT, Stallman found an increasing amount of proprietary software in use where he worked. One example in particular was a new printer that was installed on the network, which he was unable to gain access to the source code to. In a previous printer, he was able to expand the functionality of it to send messages when a printing job completed. Stallman’s inability to enhance the functionality of the printer based on the companies unwillingness to share source code with him was instrumental in convincing Stallman that proprietary software was ethically wrong. Stallman recalled the beginnings of the GNU project at a talk he gave at Google:

“So I found myself in a situation where the only way you could get a modern computer and start to use it was to sign a non-disclosure agreement for some proprietary operating system. Because all the operating systems for modern computers in 1983 were proprietary, and there was no lawful way to get a copy of those operating systems without signing a non-disclosure agreement, which was unethical.” (Stallman, 2004)

Shortly thereafter, he started the GNU project.

GNU is a recursive acronym for “GNUs Not Unix” , a play on words to indicate the purpose of the project, to create a Unix-like operating system that is freely available to anyone. The project was announced in late 1983, and officially started in early 1984. Stallman created a debugger (gdb), and a C compiler (gcc), and ported his popular text editor EMACS to the project as GNU EMACS. Launching the GNU project officially started the Free Software Movement, and Richard Stallman created a non-profit corporation named the Free Software Foundation to support the objectives of the new movement. (Stallman, 2010)

The GNU project worked for the next several years to develop the operating system, but were unable to successfully develop a reliable kernel, the core of the system. In 1991, an unexpected answer to this problem came in the form of a Finnish college student named Linus Torvalds who developed a clone of an educational version of the Unix kernel and named it Linux. Linus licensed his new kernel under the GNU GPL, and combined his new kernel with the GNU userland tools to create a fully functional operating system, properly named GNU/Linux.

The Free Software Foundation defines four essential “freedoms” that all people using software should have the right to enjoy. Using a hacker mentality, the freedoms are numbered starting at zero, a common programming practice. The four software freedoms are:

  • Freedom 0: The freedom to run the program, for any purpose
  • Freedom 1: The freedom to study how the program works, and change it to make it do what you wish. Access to the source code is a precondition for this.
  • Freedom 2: The freedom to redistribute copies so you can help your neighbor
  • Freedom 3: The freedom to distribute copies of your modified versions to others. By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

In order to meet the Free Software Foundation’s definition of free software, an application’s licensing must meet all of these requirements. The FSF maintains a list of licenses that they find meet the definition of free software on their web site. The four freedoms are devised to give the user of the software complete control over their computing environment. For example, in an office environment where there are several computers, free software would enable the users to modify the application to suit their needs, and install the application on as many computers as they wished, without having to worry about additional software licensing or the possibility of breaking a contract with the developers of the software.

While the GNU project was founded to recreate a Unix-like operating system from scratch, another project was created that derived it’s source code from the original Bell Labs Unix directly. During the late 1970’s the University of California, Berkeley worked closely with Bell Labs developing the Unix operating system, sharing source code and fixes between the two. Berkley’s version of Unix became known as the Berkeley Systems Distribution, or BSD, and was distributed to colleges along with a license. When Bell Labs was bought out by AT&T, the focus of Unix development shifted to a stable, proprietary model for marketing to clients. AT&T changed the terms of the source code license to charge a substantial fee for universities to gain access to the source code. Around this same time, Berkeley independently developed a networking stack for the TCP/IP protocol for Unix, combined it with their BSD version, and made the source code available for a substantially lower fee. Encouraged by other universities and people interested in BSD, Berkeley continued working on rewriting utilities developed by AT&T for inclusion in BSD.

Through several iterations, splits, and rewriting of source code utilities and kernel files, there eventually appeared three versions of BSD: NetBSD, FreeBSD, and OpenBSD. There was also a fourth version, BSDi which was a commercial venture based off of the earlier works of Berkeley and their own rewritten kernel. (Bretthauer, 2002) Although BSD can clearly trace the ancestry of its code back to the original Unix of Bell Labs, due to a legal complication, no version of BSD can officially be called “Unix”. The Unix name is a trademark owned by Novell, who was recently purchased by Attachmate.

The commercial version of Unix was adopted by several vendors, and is now actively being sold and supported by IBM as AIX, HP as HP-UX, and Oracle as Solaris. Before being acquired by Oracle, Sun Microsystems released the source code of Solaris as OpenSolaris. Since the acquisition, the OpenSolaris project has been rumored to be disbanded in the near future. In response to the rumors, OpenSolaris has spawned the Illumos project to continue development of the released code.

BSD, along with the Mach kernel, also provides the core of both Apple’s Mac OS X and iOS operating systems. 4.4BSD was incorporated into NEXTSTEP, which was developed by NeXT corporation. Apple acquired NeXT in 1996, and began work incorporating NEXTSTEP into the Mac OS. Mac OS X Developer Preview 1, based on NEXTSTEP, which was based on BSD, was released in May 1999. (Singh, 2003) In 2007, Apple released the iPhone, running a stripped down, minimalistic version of OS X which was later renamed iOS. iOS and Mac OS X share a common ancestry that maps back to BSD, and from there back to Bell Labs and the original Unix.

Software Licenses

Although Mac OS X shares it’s history with the BSD variants, only a limited subset of its source code is available outside of Apple. Apple has made significant changes to the core source files of BSD, and released their version of BSD in a limited fashion as Darwin. Apple released a downloadable installer for Darwin as an image file (ISO) that could be burned to a CD-R, up until 2007, which corresponded with the release of Mac OS 10.5, Leopard. After this point, Apple released only the source code required by the license for open source tools included in Mac OS X or iOS. Apple utilized the BSD operating system, wrote their own tools and layers on top of it, repackage it, and sell the new operating system as their own. They were able to do this because of the liberal BSD license, which states:

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. (“Open source initiative,” )

The BSD license does not place restrictions on how the source code or binary programs are used or distributed, allowing that the redistributed application attribute BSD. This license reflects the academic roots and philosophy of the developers of BSD, who wished to make the system as open as possible to contribution. This style of license is very different from the license adopted by the GNU project, who developed the license based not only on their own philosophy that software should be free of restrictions, but also their own moral code.

To enforce the four essential freedoms, the GNU project created the GNU General Public License, or GPL for short. The GPL is a copyright license, legally enforceable, that protects the rights of users to create, modify, and distribute free software. The GPL also restricts what developers can do with code that they use that is already covered under the GPL. The GPL explicitly prevents developers from adding to, or deriving from, GPL code to create a new product, without also covering that code under the GPL. This restriction gives the GPL a viral aspect, as it can be seen to infect all other code it touches. If Apple had based Mac OS X on a core of GNU/Linux instead of BSD, it is very likely that Apple could have become entangled in a costly legal battle over he right to distribute their code in binary form.

For applications to comply with Freedom 0 as defined by the Free Software Foundation, the applications must allow no possibility to restrict the application from running. (Stallman, 2004) This means that any type of license key enforcement or digital rights management software would be prohibited. In contrast, the iPhone contains software which can only be used for one purpose, as stated by the iPhone Software License Agreement, section 2a, which states:

Subject to the terms and conditions of this License, you are granted a limited non- exclusive license to use the iPhone Software on a single Apple-branded iPhone.

The definitions of freedom offered by the Free Software Foundation act on the assumption that computers are central to a persons well being, and that there should be a natural right possessed by the user of any computer to have full and complete access to the computer based on that natural right to well being. However, it is my position that computers, or any other form of technology, only serve to increase personal freedom of the user in proportion to the increase in overall quality of life of the user of the technology. If the user possesses no knowledge of programming languages, than access to the source code does him little good. However, the user can hire a programmer to modify the source code for him, or group together with other users to raise a larger amount of money for the programmer, depending on the difficulty of the change requested.

Intellectual Property

In chapter four, section 2, of the textbook Ethics for the Information Age, intellectual property is defined as “any unique product of the human intellect that has commercial value”.

This concept of property is derived from John Locke’s writing The Second Treatise of Government, where Locke states that people have a right to their own labor, and a right to things that they have removed from nature through their own labor. The text then brings up an example of how this right can be misconstrued with the concept of intellectual property using William Shakespeare writing Hamlet. If Shakespeare writes Hamlet in a pub one night after listening to the rumors of royal intrigue, than it is agreed that the play is the result of his labor, and therefor he should have the right of ownership to it. However, if Ben Jonson listens to the same rumors in a separate pub across town, and then simultaneously with, but independent of, Shakespeare, writes Hamlet, then the text claims that ownership of the intellectual work is in question. There were two authors, but only one work, which creates a paradox when viewed in light of Locke’s reasoning.

The text is using flawed reasoning in this example. According to the text, “even though Jonson and Shakespeare worked independently, there is only one Hamlet”, but that two creative people could work independently to create the exact same work is impossible. The actual outcome of the Shakespeare example would be that there were two plays, Hamlet, and a very similar, but different, play written by Jonson. The text appears to be begging the question, since it assumes that the possibility of identical creative works is realistic.

If we assume that software is a creative work, similar to writing, art, or music, than it is logically assumed that the original author of the software is entitled to some form of ownership.

Copyright law dates back to the original printing press and the first ability to create copies of creative works quickly and efficiently. The first copyright law was passed in 1735 by the English Parliament as the First English Copyright Act, recognizing an original authors right to his creative work. (Ballon, & Westermann, 2006)

The GNU project takes a contrary stand on the subject of ownership of software. Richard Stallman, in his essay entitled “Why Software Should Not Have Owners” claims that authors of software can claim no natural right to their work, citing the difference between physical products and software, and rejecting the concept of a tradition of copyright. Stallman uses an example of cooking a plate of spaghetti to explain the difference between software and physical products:

“When I cook spaghetti, I do object if someone else eats it, because then I cannot eat it. His action hurts me exactly as much as it benefits him; only one of us can eat the spaghetti, so the question is, which one? The smallest distinction between us is enough to tip the ethical balance. But whether you run or change a program I wrote affects you directly and me only indirectly. Whether you give a copy to your friend affects you and your friend much more than it affects me. I shouldn’t have the power to tell you not to do these things. No one should.” (Stallman, 2010)

However, Stallman does not address what gives the second person who receives the software the right to benefit from the authors work without giving something in return.

Ethical Frameworks

Before the industrial revolution, most people learned a skill and worked for themselves in small communities. A single village would have all of the skill sets necessary to sustain itself, and each member of the community would apprentice into a particular skill set to contribute and earn a living. The industrial revolution pushed skilled workers into factories and assembly lines, work that was both distasteful and disdainful to an artisan in the craft. However, corporations were able to reduce cost and increase profits, and the platform has persisted into current work environments.

In the information age, the assembly line mindset has created oceans of cubicles filled with programmers who use their skills in small parts of large software projects, sometimes to great success, but far too often to failure. The Internet and popularity of lower priced computers has created a market for high quality third party software, the kind that is created by someone with a passion for what they are doing. This passion comes from learning a craft, and using that skill to earn a living, just like the workers from before the industrial revolution. Instead of living physically in small villages, these new age artisans live online and create communities built around social networking. (van Meeteren, 2008)

In many ways, this is a return to a more natural way of life, and a simple form of commerce. One person can create an application and sell it, and another person can buy it from him. The person selling the software benefits from being able to purchase shelter, food, and clothing for his family, and the person who buys the software benefits from the use of the software. It is a very simple transaction, and a model that is not adequately explained in the GNU essays. If all proprietary software is wrong, then an independent developer who sells software as his only job is also wrong.

GNU supporters could argue that there is nothing stopping the programmer from selling his software, but he should give away the source code under a license that permits redistribution along with the software once it is sold. At this point, selling the original program no longer becomes a viable business model. A programmer can not continue to sell his software when the user can, and is encouraged to, download his software from somewhere else for free.

While it may be the ethically right thing to do to purchase the software if you intend to use it, ethics alone are often insignificant motivation to encourage people to spend their money. If the choice of supporting the development of the software or not is entirely up to the user of the software, then purchasing the software becomes a choice that the user can make on a whim, with no real implications on the conscience of the user with either decision. GNU and the GPL place this decision squarely on the user, and encourage the users to not feel in any way obligated to pay.

The ethics of open source come into question when the requirement of adhering to the free software philosophies result in an independent developer not being able to support a moderate, middle-class lifestyle by developing a relatively popular application. Kant’s first formulation asks what would happen if all developers gave away the source of their code for free. The developer being the agent, his maxim would be giving away the source code of the application he developed to earn money. In this imaginary world where all developers did this, the quality of software would go down to the lowest common denominator of acceptability. Each developers motivation would be to develop for himself, and since he would need to find a source of income elsewhere, only in the free time allotted to him. This would result in a wide variety of software availability, with very little integration, testing, or source control, mirroring the current state of GNU/Linux based desktop operating systems.

Current software companies would move to a business model arranged around providing support to customers of their software. Competition, and therefore innovation, based on pure software features would decrease, since the source code of any feature another group could develop would be easily copied and integrated into competitors products.

From a utilitarian point of view, the outcome of proprietary software has clearly been to produce more pleasure for more people than open source has up to this point. Open source software is often more complicated, difficult to learn and maintain, and harder for the average computer user to use. Apple produces proprietary software and hardware, and states their mission to “make the best stuff”. Using their position as a leading software company, and leveraging their control over their computing environment, including iPads, iPods, iPhones, and Mac computers, Apple has been able to successfully negotiate deals with entertainment companies. The deals Apple has made allow the consumer to download music, television shows, and movies off of the Internet and watch them on any Apple branded device, and output the media to their televisions or home stereo systems. Because of the limits of Digital Rights Management, open source or free systems have not been able to provide this level of entertainment.

Conclusion

To answer the question of whether all software should be free, this article has examined a brief history of open source software, the concept of intellectual property, and finally an ethical analysis of the concepts of open source. I have found that there is a strong connection between an original author and their work, but have found no evidence or compelling argument that all software, or all forms of any genre of creative work, should be free of restrictions. I have found that there is a benefit of open source and free software to the public, cited numerous times in the essays of Richard Stallman and the GNU project. Free software enables the user to learn the intricacies of how the software works, and modify the software to suit his needs. Free software also provides a legal and ethical alternative to expensive proprietary software in developing nations or areas where the cost of obtaining a license for legal use of the software is prohibitive. Public institutions, like schools and government offices, where the focus of the organization is the public good, have the option to use software that is in the public domain and is not controlled by any one company. Free software also gives the user the option to “help their friend” by giving them a copy of the software, without having to worry about payment or licensing restrictions.

I have also found compelling evidence that proprietary software is beneficial to the public, as well as respectful of the original authors rights regarding their creative work. Software is the result of a person’s labor; it does not matter how easy it is to copy that work, the author still retains a natural right of ownership, according to John Locke’s The Second Treatise of Government. Proprietary software enables products like the iPad, which is being used to enable elderly people, nearly blind with cataracts, to create creative works of their own. (Newell, 2010) The iPad is also being used by caretakers of severely disabled children to enable them to communicate and express themselves. (Hager, 2010) It is possible that the iPad would have been created if the software used to power it had been free, but that is unknown. What is known is that the net result of the device is to better peoples lives, which is the true purpose of technology. Any technology is merely an enabler to get more satisfaction and enjoyment out of life.

The free software movement exaggerates the importance of a specific type of freedom, without addressing the proper place of technology in our lives.

The existence of free and open source software alongside proprietary software creates a mutually beneficial loop, wherein consumers and developers are able to reap the rewards of constant innovation and competition. I have found that there is a place for both proprietary and free software, and that the authors natural right to their creative work gives them the freedom to choose how and why their software will be distributed.

References

Ballon, H, & Westermann, M. (2006, December 1). Copyright ownership in works of art and images. Retrieved from http://cnx.org/content/m13912/1.2/#footnote1

Bertot, J, McClure, C, & Jaeger, P. (2008). The impact of free public internet access of public library patrons and communities. Library Quarterly, 78, 285-302.

Bretthauer, D. (2002). Open source software: a history. Information Technology and Libraries, 21(1), 3-11.

Crawford, M. (2009). Shop class as soulcraft; an inquiry into the value of work. New York, NY: Penguin Group.

Hager, E. (2010, October 29). Ipad opens world to a disabled boy. Retrieved from http://www .nytimes.com/2010/10/31/nyregion/31owen.html

iPhone software license agreement. (n.d.). Retrieved from http://www .apple.com/legal/iphone/us/terms/sla.html

Kain, R, & Bruce, I. (2010, November 22). Novell agrees to be acquired by attachmate corporation. Retrieved from http://www.novell.com/news/press/novell-agrees-to-be-acquired- by-attachmate-corporation/

Newell, C. (2010, November 4). Life is a limerick for centenarian virginia campbell. Retrieved from http://www.portlandtribune.com/features/story.php?story_id=128882605915653000

Open source initiative osi - the bsd license. (n.d.). Retrieved from http://www .opensource.org/licenses/bsd-license.php

Quinn, M. (2009). Ethics for the information age. Boston, MA: Pearson Education Inc. Singh, A. (2003, December 1). A brief history of mac os x. Retrieved from http://osxbook.com/book/bonus/ancient/whatismacosx//history.html

Stallman, R. (1977). Forward reasoning and dependency-directed backtracking in a system for computer-aided circuit analysis. Artificial Intelligence, 9(2), 135-196.

Stallman, R. (2004, June 11). Gnu and the free software foundation engineering tech talk at google. Retrieved from http://www.gnu.org/philosophy/google-engineering-talk.html

Stallman, R. (2010, November 12). The gnu project. Retrieved from http://www .gnu.org/gnu/thegnuproject.html

Stallman, R. (2010, November 14). Why software should not have owners. Retrieved from http://www .gnu.org/philosophy/why-free.html

Teli, M. (2010). Collective ownership in free/libre and open source software: the opensolaris case. Conference Proceedings of JITP 2010: The Politics of Open Source, 138-159.

van Meeteren, M. (2008). Indie fever; the genesis, culture and economy of a community of independent software developers on the macintosh os x platform. Informally published manuscript, Human Geography, University of Amsterdam, Amsterdam, Holland. Retrieved from http://indie-research.blogspot.com/

Williams, Jonathan. (2009, December 6). Free computers given to students. Retrieved from http://articles.baltimoresun.com/2009-12-06/news/bal-ho.computers06dec06_1_bright-minds- foundation-computer-refurbishing-organization-freshmen-laptops


New Mac Essentials - Quicksilver

July 19, 2012

Introduction

Setting up a new Mac can be fun, but time consuming too. As I scan the icons in my dock, I see several that will not be there when I upgrade to Mountain Lion. As well compartmentalized as OS X is, and as well as it handles applications, I still like to keep things as clean as possible.

Part of keeping things clean is using the applications that ship with OS X. I use Safari for my browser, with my own setup, Mail for Email, iChat for instant messaging, and iCal for my calendar. All of my music is in iTunes, including my Grateful Dead collection. If Apple shipped a decent Twitter client and RSS feed reader, I’d use those too, but since they don’t, this is where my short list of third party applications starts.

For Twitter, I like using Hibari. It is a very simple and clean application, and I love the design philosophy behind it. I do wish it had a few extra features, like viewing someone’s profile in the app, or showing photographs similarly to the way the Twitter desktop app does it, but other than that I really like it.

My RSS feeds are all in NetNewsWire, synced to Google Reader. Checking my list I see that I’m subscribed to 26 carefully selected sites. This list is continually revised, and if I find one that is not holding my interest as well as I’d like, it gets dropped from the list.

I use DEVONthink as my anything bucket and outboard brain. I’ve gone back and forth between DEVONthink, Evernote, and Yojimbo, but find DEVONthink gives me the features that I want, without reliance on some amorphous cloud.

This is where things start to get a little geeky. I initially intended for this to be a single post, but as I write, it seems like it would be better to break it down into a series of smaller posts, each dedicated to a single app. Below is the list of apps that I use on a daily basis, and each has a story.

Downloads

Quicksilver

Quicksilver is the king of productivity hacks for the Mac. Few applications can claim to have the impact on how a person uses their computer more than Quicksilver. At it’s most base form, Quicksilver is an application launcher, but it is also so much more than that. Setup however, takes a bit of work.

First, grab some plugins from Quicksilver’s preferences panel. The important ones, to me, are “User Interface Plugin”, “Clipboard Plugin”, “1Password Plugin”, and “Web Search Module”. You can see the full list that I currently use in the screenshot below.

Next, select the “Catalog” tab, then the “Quicksilver” item from the left view, and enable “Internal Commands”, “Internal Objects”, and “Proxy Objects”. These sources give Quicksilver some very interesting abilities. Click on the “Custom” item from the left view, and click the plus icon on the bottom and select “Web Search List”. In the drawer that opens on the right, click the plus icon and edit the “Name” field to be “ddg”, and the URL field to be:

https://duckduckgo.com/?q=***

Now select the “Triggers” section of the preference pane, and click the plus icon on the bottom, then select “HotKey”, and in the field marked “Select an item” type “ddg”, and then tab to the next field and type “Search For”. Next, tab to the “Target” field, which will automatically be populated with text. We do not want this text in our trigger, so we will right click on this field and select “Remove”. Now click “Save”.

Double-click on the “HotKey” field to open up a drawer on the right hand side of the preferences window and assign your preferred hot key. I prefer Option-Space. Now, whenever I type my hotkey, Quicksilver opens with the third text panel open ready for me to type my DuckDuckGo search for whatever I’m looking for. When I hit return, Quicksilver opens Safari with my search results, and since I use DuckDuckGo, I use the vi keyboard commands to navigate the results, and Command-Return to open the selected results in a background tab.

Click the plus button at the bottom of the Triggers panel to create a new custom trigger. Type “Current Application”, then tab to the next panel and type “Show Menu Items” and click “Save”. Double-click the “HotKey” field again, and assign a new key combo to this trigger. I prefer Control-Space. This trigger gives us quick access to the menu items of whatever application has focus at the time. For example, I use it quite a bit in OmniGraffle to group items. Any application that makes heavy use of menu items (like Photoshop) is a great fit for this trigger.

Create another custom trigger, but this time type “Show Clipboard”. The default action should be “Run”, so save this command and assign it a key combo. I use Shift-Command-V. Make sure you are capturing your clipboard history in the Preferences tab.

It is worth spending some time in the preferences, actions, and triggers portions of Quicksilver’s configuration. There be gold in dem hills. I’ve covered what portions of Quicksilver I use, but it can do much, much more. Now that it is under rapid development again, I look forward to many more years of use.

MacVim

Tune in next time to focus on my favorite writing tool. Same bat-time, same bat-channel.


The Winchester Imperative

June 14, 2012

Major Charles Emerson Winchester III was a fictional character on one of my all time favorite shows, M*A*S*H. While he had many memorable scenes, the one that I remember best is the first episode he is introduced. Winchester was sent to the 4077th to assist while they were short handed, and he was not used to the incredibly hectic pace that the doctors needed to work at to save the lives of the wounded. The doctors tried to prod Winchester to move faster, but he responded with a line that’s been echoing in my mind lately.

I do one thing at a time, I do it very well, and then I move on.

You really don’t know how your workflow will stand up until you have more to do than you can handle. Since joining T8, I’ve felt a little like Winchester, but instead of keeping his resolve, I’ve felt my workflow crumble as I move into reactive mode. Instead of planning my work, and addressing one task at a time, doing it very well, and moving on, I’ve been responding to an increasingly complex influx of information. This does not put me in a position to do my best work.

Of course, this is no ones fault by my own, and a problem I intend to address immediately. A cursory glance at my work situation would indicate that I’m a perfect candidate for Getting Things Done. I’ve read the book, and I have a system which centers around The Hit List, but the system only works if you put everything in it. For example, I have tasks which require my attention that are entered into the shared task management/bug tracker system, and tasks assigned from the customer-facing ticketing system, and email, and phone calls, and face to face talks. My system started to break down as soon as I had more than one place to check for tasks. If I’m checking email, as well as the ticketing systems, as well as The Hit List, than requests for my time are not being appropriately prioritized. But, as they say, recognizing the problem is half the battle.

So, here is my plan of attack for the next week or so:

  1. Check email at 7, 10, 1, and 4. If something is urgent and needs my attention immediately, it would come over my phone.
  2. Check the ticketing systems immediately after email, pull anything needing my attention into The Hit List.
  3. Prioritize, then break projects into their own lists
  4. Assign a due date to each task.
  5. Go to the top of the “Due Today” list, and get it done.

Step three above is easy to overlook, but is vitally important. I’m purposefully scheduling time to think. Thinking critically about my work is necessary. I not only need to prioritize each thought that appears in my inbox, I need to be able to discern what it is that each task is actually asking of me. I need this information before I can get to step five, which I call the “Winchester Imperative”: do one task at a time, do it very well, and then move on.

I will be using this new schedule starting tomorrow. If it works well, I should have more time, and more cognitive resources available, to post an update to how it is going.


A New World

May 18, 2012

CocoaHeads changed my life. This afternoon I am killing time in a coffee shop, about to head to work for an appointment with HR. When I get there, I’ll turn in my badge, they will wish me luck, and I’ll walk out the door. Monday, I start a new chapter in my life with T8 Webware. To say that I’m a little nervous about this change would be an understatement. I’ve spent time with these guys, they are smart, ambitious, and I believe in what they are doing. I’m going to be part of building something awesome, and I’m extremely excited.

I met the guys from T8 at CocoaHeads months ago. We got to talking, and found that we had mutual interests. We met for lunch, I visited their main office (which is beautiful, by the way), we had lunch again, we talked and talked, and they made me an offer. My life is changing because I took the time to learn something new, and to reach out to others who shared the my interests. Go2 will never make me independently wealthy, but it did open up new doors and bring me to meet people and have experiences I would have missed out on otherwise.

I haven’t been to a CocoaHeads meeting lately. Between raising my family and finishing my masters degree, I haven’t had the time. Now that things are falling back into place, I think I owe them a visit.


Recovering Data From FileVault Full Disk Encryption

October 14, 2011

Disclaimer: If you do not have your recovery key, or if you have lost your passphrase, this post will not help you. Sorry.

So, just for kicks, say you did not backup your Mac for a couple of weeks. Further, let’s say that, being shrewd about security, you turned on full disk encryption on your Mac. This was me, Wednesday, deciding to upgrade to OS X 10.7.2, knowing full well that I had skipped the last weekends scheduled SuperDuper! backup. Foolish and foolhearty, I know. I found out exactly how foolish it was when my precious MacBook Pro began to exhibit progressively stranger behavior as the day went on. Thursday morning, it would not boot at all, and would power off after unlocking the FileVault encrypted drive.

So, no problem, I have a clone, which, true, is a couple weeks old, but I thought I could just boot off of that and copy the newer data off my failed OS X install. A plan which would have worked perfectly if I had not encrypted the drive. I could see my internal disk when booted off the clone drive, but I could find no way to unlock the disk to get to the data. Disk Utility showed the internal drive as being present and fine, but the one partition on it was marked as “unknown”, since it was not unlocked at boot time.

Luckily, Disk Utility has a command line version called diskutil, with more options and fine grained control. However, the command that I needed called for knowing the UUID of the disk, which I did not have. The command diskutil ca list will show you the UUID, sometimes, but I could not see the UUID of the logical volume of the disk I needed, I could only see the UUID of the physical volume (Incidentally, for more information on the new volume manager, check out the Ars Technica Lion review covering Core Storage here.) I’m not sure what the rules are governing how and why diskutil will show the UUID, but I could not see the internal drive’s UUID when booted from the clone. Without the UUID, I could not get to my data.

So, I booted off the Lion recovery partition by holding down ⌘ R after pressing the power button. After booting up, I opened the Terminal and typed diskutil cs list. Now we were getting somewhere.

Logical Volume B15D4021-F519-4F7B-9B78-D4001361BA32 B15D4021-F519-4F7B-9B44444001361BA32

The recovery partition was able to see the logical volume, but it was locked. To unlock the volume, I entered this command:

diskutil cs unlockVolume B15D4021-F519-4F7B-9B78-D4001361BA32 -stdinpassphrase

The diskutil command prompted me for my passphrase, unlocked the disk, and mounted it under /Volumes. The next trick was actually getting the data off the disk and onto my external disk. The recovery environment is very bare bones, there was no intention of using it as a file manager. The easiest thing to do was to rsync my home directory over to my clone disk. Since rsync is not available in the recovery manager, I used the version from my cloned disk, so the command looked something like this:

/Volumes/Flux/usr/bin/rsync -avz /Volumes/Prime/Users/Me/ /Volumes/Flux/Users/Me

Where Flux is the name of my clone, and Prime is the name of my internal drive.

This effectively cloned only my home directory, saving the source code, college papers, photographs, and everything else I’ve collected in the two weeks since the last backup. Next, I booted off of my clone drive again, verified that my important stuff was there, including a few pictures I took yesterday morning, and used Disk Utility to wipe my internal drive. Finally, I started SuperDuper! on the clone, and tried to copy the good image back to the internal disk.

Just then the internal drive failed. My problem was not with the 10.7.2 update, it was with the spinning rust inside my Mac. It seems I retrieved the data off of the internal drive just in time.


Go2 1.3 Release Notes

September 29, 2011

Most release notes are so dull. A cut and paste list of code changes, new features, and fixed bugs. Go2 version 1.3 certainly contains it’s share of fixes and enhancements, but this is Farmdog, so Go2’s release notes are more of a story.

1.3 began development shortly after 1.2 was released. 1.2 was solid, so I thought I’d turn my attention to the user interface, and add a feature that I’ve been wanting for a long time, the ability to organize my bookmarks with smart folders. However, The existing interface of Go2 was going to need a major overhaul for smart folders to make any sense, so I went to work refining and expanding the main window. It would be wrong not to mention that I’ve drawn inspiration from both Twitter and Sparrow, not to mention LittleSnapper.

Along the way I found a few annoying bugs that were present in 1.2 that I’ve now fixed in 1.3. For example, the “Add Bookmark” and “Edit Bookmark” dialogs are now using the same panel, where before they used two different panels. Little things like that led to duplication of code, which invariably leads to mistakes. I also experimented with ideas, some of which led to some great improvements. One of which was a new bookmark wizard. The wizard was, in my opinion, very nice. It walked you through creating a bookmark one step at a time, asking first for the protocol scheme, then the host, and then the path, and optionally a username and password combination. It was all nicely animated, and I loved it.

Then, someone who knows far better than I said “When you think to your self, ‘I should make a wizard’, slap yourself and then dont”. He was right, Go2 is a professional’s tool, professionals that I’m marketing to don’t need a wizard, they need speed and tools that don’t make them think. So, I took his advice and instead added the ability for Go2 to pre-populate the new bookmark field if it finds a URL in your clipboard. So, if you copy a URL from someone else, switch to Go2 and hit Command-N, the URL you just copied will be there. It works great, and its a feature that Go2 would not have had if it were not for the wizard.

Next were the smart folders, and the outline view that they live in. I used an open source project to build the outline view, and I’m pretty happy with how it turned out. However, it did take a lot of work and several versions before it finally turned out right. I won’t get into all the details here, but the smart folders almost drove me nuts.

Another feature that was far more difficult than it should have been was the center information button. The function of the button was not hard, but I spent weeks getting the look of it just right. I finally was able to use an icon that one of my awesome beta testers created for me, and it couldn’t be more perfect. I probably went through fifteen iterations of that button.

Come to think of it, the addition of buttons has been something that I have tried to avoid at all costs. I really hope I’ve hit just the right balance of usability and aesthetic appeal.

Towards what I was thinking should have been the end of the beta cycle, I simply became overloaded with things to do. I talk about it at length in my article The Experiment, but in June Farmdog went on hiatus until I finish my Masters degree at Iowa State. I put away the code, and focused on my family, my day job, and my classwork, and took a break from development for a few months. I miss developing on a regular basis, but this is a necessity. Last month, I learned that Apple was going to require all App Store applications to be sandboxed. I had some time, I knew Go2 1.3 was nearly complete, so I once again dug out Xcode and decided to ship 1.3.

I knew from before that Go2 ran fine on 10.7, but what I did not expect was that my reliance on one third party tool, ShortcutRecorder, was going to cause me so much pain. Xcode 4 does not allow Interface Builder plugins, so I spent several days getting all the right pieces in all the right places so Go2 would compile cleanly. Lesson learned, no more frameworks, it’s write it myself or it doesn’t ship. The next version of Go2 will not have ShortcutRecorder.

Despite the initial problems with compiling Go2 on Lion, Go2 is now updated, clean, and runs great. I’ve fixed the bugs that were preventing me from shipping it earlier. I’ve been using it at home and at work for months now, and I’m happy to ship it. Go2 is sandboxed, so its data now lives in ~/Library/Containers/com.farmdog.go2/data. If you want to integrate Go2 with Quicksilver (which is what I do), export the bookmarks for Spotlight indexing, and have Quicksilver index ~/Library/Containers/com.farmdog.go2/Data/Documents/Go2Data. Works like a charm.

I do not expect any problems with the new release, but if you see any, please let me know and I’ll be happy to do my best to make it right. I am still in school for another three semesters, and Farmdog is still officially on hiatus, but I’ll be adding small fixes here and there to Go2 as I have time.

The final lesson I’ve learned from 1.3 is to stop making major changes in minor point releases. 1.3 will be the last such release, point releases beginning with 1.4 will be very minor changes, with any new features or major modifications being worked into version 2.0.

I hope you enjoy Go2 version 1.3, and I truly hope it makes your day just a little bit easier.

Thank you.


Uncompromising

August 24, 2011

Others have already said so much about Steve Jobs stepping down as the CEO of Apple that I had serious doubts about adding my voice to the existing cacophony. Others have written so much, and surely so much more will be over the next few days. I had doubts, but I have this to say:

Apple is a reflection of Steve Jobs, a reflection of his aesthetic taste, his preference for design, and his uncompromising demand for quality in everything bearing the Apple logo. This dedication to creating the best polarized the tech community into a group of a few who understood his passion, and a much larger group of detractors who love to point out each and every misstep Apple has taken. Steve Jobs is the best because he would accept nothing less. Not from himself, not from those he worked with, and not from the products his company created.

This is good.

To be uncompromising today means going against the tide, it means pushing boulders up hill. It means ignoring everyone else who says that what you are trying to do is impossible, that you ask too much, that you should simply not care. American industry outside of Apple seems perfectly content to punch a clock, make a paycheck, and watch the hours drone by till the weekend comes and they can drown their atrophied ambitions in alcohol. That is not my job. No skin off my back. Two tears in a bucket.

Mac OS X drew me to Apple because of its Unix core. Since then, I have studied psychology, design, typography, and am now earning a masters degree in the Human Computer Interaction. I do not think it hyperbole to say that Apple, in a way, affected my life. More than anything, what I have learned from watching Apple for the past decade is that not only is it OK to strive for excellence, it is in this striving that you find success.

Half-ass is not good enough.

Those who do not care will always surround you, those who will try to belittle you and find fault in anything you do. Do not let them drag you down. Stand out, believe, care, and bring a Mac to work.

So, thank you Steve. Thank you for making your life a story that we can look up to. Thank you for creating, building, failing, believing, and succeeding.


Writing Online

August 21, 2011

Every so often I get the inkling to make this site more than what it is. Since 2008 I’ve been writing fairly regularly here about whatever comes to mind, and in doing so I’ve covered several topics. I’ve written about Android and Mac geekery, success and failure in Mac development, business, psychology, systems administration, personal stories, and memories. More than anything, I have tried to inspire others, and sometimes, if I’m very, very lucky, I succeed.

From time to time something I’ve written gets linked to by someone unexpected, and sometimes I get linked to because I’ve emailed someone to show them the site. These spikes in readers tells me that what I write can be interesting, at least part of the time, but the pattern is haphazard. Probably as haphazard and random as the topics I’ve covered. I think that this range of topics is what discourages readers from returning to jonathanbuys.com, at least outside of those that know me personally.

For a long time, I simply did not care how many people read the site. I did not collect statistics or hit counts, and the only metric I had for measuring the popularity (or lack thereof) of the site was email and Twitter responses. Lately though I’ve been wondering why I keep the site at all, if not for people to read it. Part of me wants to answer that the easy way and say that it is simply a developers journal, a place to rant about whatever my latest complaint is about this language or that syntax. That’s not the truth though. If it were, the main topic of the site would be development, and it is clearly not. Another reason is to maintain a sort of “online resume” for potential job offers. Keeping an online persona for employers is an interesting idea, and I would certainly not be against anyone looking through the site to try to get to know me better, but as a sole purpose I think the online resume could be done better in a different format. A much older reason I had for keeping the site was just to practice writing. An idea worth exploring.

To be able to write coherently, you must first be able to organize your thoughts, feelings, and emotions. In the 37 Signals book “Getting Real”, the authors say to hire the better writer, because good writing is the sign of an organized mind. Writing is exercise for the mind. If watching TV is eating potato chips, writing is lifting weights. However, writing for practice does not mean that you have to share. If practicing writing was my only motivation, I would have no need for a website. A personal journal would do. So, why do I keep publishing? Why do I keep working on the site?

Mostly, its hope. I will be deep, bare-bones honest with you here. It is hope that maybe, just maybe, the site will turn into something more, or lead to something more. I publish here because I hope that something I love to do, writing, can lead to opportunities I cannot foresee. I write here for the same reasons I started Farmdog, the same reasons I went back to grad school… hope. Still, hope and $2.02 will get you a medium cup of coffee at Smokey Row. It is not enough to hope. To make anything real you must take action. To take action, you need direction, to have direction, you must have a plan. Me, I’m a planner.

Going back to the idea of writing being the sign of an organized mind, I honestly did not know how this article was going to end until I started writing it. In the writing, my mind worked through the reasoning and logic, aligning things I knew into a cohesive story. A story that starts being more focused on the topics I write about, and thinking more about the reader than myself. I don’t know how I’m going to say I’m writing to be a writer without sounding like an asshole, but I’m going to do my best.


A Glimpse of the Future

August 18, 2011

The Motorola ATRIX 4G is technology released before its time. At first glance, it seems like any other Android phone with impressive technical specs and questionable user interface decisions, but the phone as a phone is not the interesting part of this device.

The phone can be docked to what appears to be a notebook, and used as an (almost) full-fledged computer. Motorola (soon to be Google?) calls this a “webtop application”, and packages a version of Firefox. I would call this technology an early preview of whats to come.

The iPhone changed the mobile phone market. It proved how much a small mobile device could do. Before the iPhone mobile applications were horrible, slow, and expensive. I remember it costing $2.99 per month to play Pac-Man. The disruption caused by the iPhone is still being felt as the market continues to adjust, and innovation continues to leap forward. As the phones become more powerful and more capable, the role of the desktop computer will continue to decrease. Eventually, the big boxes will only be useful to developers and movie makers. The role that they played will be replaced by our phones.

On my desk, as on many others, sits my MacBook Pro (clamshell mode, in a BookArc, if you were interested), a monitor, keyboard, mouse, and my iPhone in a dock. How long will it be until the MacBook is no longer needed? How long until all I need is to drop the phone in the dock, my monitor springs to life, and I start working the same as I always have?

As a short sidebar, touch based interfaces are wonderful, but I believe that there will be a place for the tactile response of a physical keyboard for a long time to come.

A brief look at the history of computers shows a steadily declining physical size, and a steadily increasing amount of power. I do not believe that this trend shows any sign of slowing. For example, recent research by IBM shows great promise in increasing the amount of, and reliability of, local flash storage. How long will it be until both the raw computational power and local storage in a phone both match what is available in a notebook computer?

The form factor of a notebook computer is a good trade off. There is ample screen resolution, and a full sized keyboard for serious work, and it is portable enough so you can comfortably sit on your couch to get things done. However, it does not pass the pocket test. That is, you can’t fit one in your pocket… unless you have freakishly large pockets. But, what about a notebook sized device with a keyboard, monitor, and touchpad that you could slide your phone into like you load a CD now? What if you could take that same phone and dock it on your desk to use as your main desktop computer. What if you could bring it with you anywhere, and have everything with you, anywhere you had a pocket?

The ATRIX is clearly a step in that direction, but it is too little, too soon. The ATRIX is more of a curiosity than a real consumer device that people would be expected to use on a daily basis. I explored one at a local BestBuy for a while, and found the user interface to be laggy, slow to respond to mouse events. It felt like using old emulation software. I can not imagine why anyone would choose to use the device as it is, the hardware is simply not ready. However, slow hardware is a temporary problem. The ATRIX is a glimpse of the future.