Dogfood
I would like to introduce you to Scout, my desktop, baked blogging engine. I’d like to, but Scout is not quite ready yet, so I’m keeping him under wraps till I’m sure. There is only one way to be really sure, and that’s to use Scout to publish my own blog, every day.
So, a little about Scout. I first got the idea a few years ago when I noticed Jekyll. I built the previous version of this site on Jekyll, and used Github as my host. Jekyll works great, but it is very much a power users’ tool. Anything that requires the user to pop open the terminal is not going to pass muster with the average Joe. However, I like the idea of a static blogging engine, and luckily, I’m not alone. So, I set about trying to bring the power and control of Jekyll to a nice user interface.
I’d like to say that I started working on it, worked on it steadily and consistently for a few years, and now it’s almost done. Unfortunatly, I had a lapse of judgement where I was not properly backing up my laptop, and was also two months behind on my offsite version control, and wound up loosing months of work on the first version. I still haven’t recovered completely from that, I wrote a Wordpress importer that I still need to recreate. After loosing so much work, I got discouraged and moved on to other things.
This Fall I decided to pick it back up again, and I’ve been working on it in every spare second that I have. I very excited about Scout, and can’t wait till it’s ready, but like they say, the devil is in the details, and I have to make sure this is done right.
Scout is heavily centered on the writing experience. The main interface is a plain text, markdown syntax highlighting editor, with built in preview, easy to build and customize themes, and a minimalist media manager.
Scout builds and publishes the entire site every time the site is exported. Once the site is uploaded to the web server, the server itself needs very little resources to serve up the site. There is no dynamic code to execute, which makes it very unlikely that the site will slow down or crash because of a high influx of traffic.
I’m using a single window for Scout, and the views fade in and out as needed. The list of previous posts is available on the left hand side of the window, but normally stays closed to concentrate on new writing. I’m also experimenting with the preferences view, trying to keep it very simple, beautiful, and functional.
I’d like to give a time table for Scout’s availability, but it would probably be a bad idea. Even writing this brief post I’ve noticed a few things that either need fixing or need to be enhanced. So, I’ll keep polishing, and polishing, and polishing, till Scout shines as much as I can make it. Then I’ll call it 1.0, release it to the world, and start fixing everything that the world finds.
I will be writing more about Scout in the coming weeks, and would love to hear your thoughts on the concept. Feel free to drop me a line.
A World of Things
It is very easy when living in the technology field to ignore the actual physical space we occupy. Skills once thought essential are slowly being forgotten as we move farther and farther away from a culture of being able to create and fix things.
We visited my wife’s sister’s family for Christmas this year. They have a beautiful thirteen acre wooded plot out in the country, and I savor our visits and the time that we get to spend there. My favorite times are standing outside listening to the quiet and watching the birds. On this particular occasion, we met in town before heading out to their place, and when we arrived my wife and I wondered if we beat them home. We didn’t see the truck they were driving, so I got out to knock on the garage door. Jeff, my brother-in-law, was washing his truck in the garage, draining the water down two drains centered under the parking areas for two cars, and using the hot water tap.
I was more than a bit envious. His garage is heated, has several electrical outlets, hot and cold water taps, and drains. It is, in short, the perfect place to do a complete detailing of a vehicle in winter. Jeff greeted us warmly, and asked if I’d like to wash our van next. I could not turn down that offer, especially since we were just at a car wash that turned out to be closed. We finished his truck, pulled it out of the garage, and pulled the van in. Jeff walked me through a thorough deep-cleaning of the van, pulling out plastic bits to spray out the sand and junk that accumulates in the undercarriage, and explaining how certain parts of the frame are more prone to rust because of the lip. The van had never been so clean by the time we finished. He asked when the last time the van was waxed, which was probably before I bought it. We talked about the different kinds of waxes for a bit, and agreed to let the van dry in the garage and wax it in the morning.
I slept in till eight, and by the time I got up, Jeff had already put the wax on the van and was waiting for it to dry. We worked together to finish the job, and he even got out his buffer to get some of the marks out of the doors.
Jeff is a park ranger, and over the years he’s accumulated a collection of very practical skills focused on maintenance and preservation of things. It’s an interest we share, and reminds me of my first few years in the Navy when I worked as a machinist. The main goal of the enlisted man in the Navy is the maintenance of the ship. That means everything from cleaning the toilets and sweeping the deck, to replacing broken bolts. It means working with your hands.
It wasn’t too long ago when families made most of the things that they needed. At the least, the things they needed were made locally. Towns had to be somewhat self-sustaining or they would not survive. As more and more of our things started to come from factories, and the factories where the things were made were moved to far away lands, our need for creating things left, and with it the skills to do so. I was completely fascinated by this video posted by Shawn Blanc of a blacksmith creating a knife, and then a leather worker building a beautiful sheath for the knife. Being a blacksmith would have been exhausting work, but I can only imagine the satisfaction at having built something like a knife out of pieces of steel.
There is no steel in programming. Only thought. We like to think that there is blood and sweat in our applications, but the truth is that there is only deep thought. Computers are tools; fascinating, engrossing tools, but still just tools. We should all pay as much attention to the rest of our possessions as we do to our computers. At least I should. I’m not one to make new year’s resolutions, but in the coming year I am making it my goal to become less reliant on my computer, and to take better care of the things God has granted me.
13 Virtues for 2013
Instead of looking back, I like to look forward. As a guide on how I’d like to live the next year of my life, here are Benjamin Franklin’s famous 13 Virtues, written when he was 20:
- Temperance. Eat not to dullness; drink not to elevation.
- Silence. Speak not but what may benefit others or yourself; avoid trifling conversation.
- Order. Let all your things have their places; let each part of your business have its time.
- Resolution. Resolve to perform what you ought; perform without fail what you resolve.
- Frugality. Make no expense but to do good to others or yourself; i.e., waste nothing.
- Industry. Lose no time; be always employ’d in something useful; cut off all unnecessary actions.
- Sincerity. Use no hurtful deceit; think innocently and justly, and, if you speak, speak accordingly.
- Justice. Wrong none by doing injuries, or omitting the benefits that are your duty.
- Moderation. Avoid extremes; forbear resenting injuries so much as you think they deserve.
- Cleanliness. Tolerate no uncleanliness in body, cloaths, or habitation.
- Tranquillity. Be not disturbed at trifles, or at accidents common or unavoidable.
- Chastity. Rarely use venery but for health or offspring, never to dullness, weakness, or the injury of your own or another’s peace or reputation.
- Humility. Imitate Jesus and Socrates.
One of the many things I love about this list is not how it says to do things, but how it says to avoid things. For example, “Avoid trifling conversation”, “waste nothing”, and “cut off all unnecessary actions”. I think there is something for everyone in this list.
No More Guns
I’m angry. You should be too. On December 14th, a young man shot his way into a locked elementary school in a small town in Connecticut and murdered twenty children and six adults. This is an abhorrent act by a mentally ill person, but the magnitude of the act was amplified because the murderer had access to guns. Big guns.
The Facts
The gunman was carrying three weapons, a 9mm SIG handgun, a Glock 10mm Auto, and a Bushmaster M4 Type Carbine. Let’s take a look.
9mm SIG
Glock 10mm Auto
Bushmaster M4 Type Carbine
The Bushmaster was the primary weapon used in the attack. Take a close look at that gun and ask yourself what the primary purpose of a device like that might be. This type of gun is not used for hunting. This is a military grade weapon, it’s sole purpose in existence is to kill human beings.
Culture
The other day I had the unfortunate privilege of watching The Expendables 2. The movie is not good, but it’s appeal to a certain group of people is understandable. Lots of violence, big action stars from the 80’s together in one movie to spew horrible one-liners off of each other. It’s 103 minutes of senseless violence, glorifying in how many bad guys the good guys can kill before reloading. It is a movie made for men who never outgrew their adolescent worship of Rambo. A movie that caters to the American desire to be seen as a “bad-ass”.
Someone you don’t want to mess with, someone who would rip your head off, someone who dresses all in black because that’s what the lone wolf who fights for revenge does. “Whoaaaaa… Arnold and Stallone AND Bruce Willis in the same scene!” It’s exploitation of hero worship. The show is designed to appeal to our base instincts, to get our adrenaline pumping, and to allow the viewer to vicariously wear the persona of a man who acts without conscience. A man who is not pushed around by anyone.
The Expendables is not responsible for the shooting in Connecticut, but it does serve as an example of the type of mindset that plagues the United States. The disregard for human life and general lack of empathy or caring glorified by The Expendables is not new. I’ve seen movies like this for my entire life, and the shows go back at least to the westerns of early cinema. Popular movies are just a mirror for exposing what we like. Americans are a violent and warlike people. Just because some of us wear a suit and tie to work doesn’t mean that we don’t carry that violence inside. We are not too far removed from Romans who would watch gladiators duel to the death in the Colosseum for sport.
Our culture of violence, and our deep embrace of guns as an expression of individual achievement and self-realization is a deep problem that is not going to go away any time soon. We make assault rifles available to the general public, but most states will still lock someone up for possession of an eighth ounce of marijuana. We have much work to do.
Escalation
The shooter arrived at the school wearing a bullet-proof vest, military style clothes, and a mask. He used the Bushmaster to shoot open the door, and then killed the first two people who tried to stop him. Our local school board addressed the security of our school at the monthly meeting, where a respected member of the community, a doctor no less, said:
There’s no better deterrent than shooting back at someone.
That depends. On several factors. In the case of the Connecticut incident, I’m not sure it would have mattered. It is very difficult to stop a determined gunman, especially one who has already made up his mind to take his own life. If a target is guarded, the first person you take out is the guard. If the guard is carrying a weapon, you make sure you have a counter-weapon, something big enough, fast enough, and powerful enough to win in a gunfight.
However, the real issue is not properly equipping the guard to deal with a siege. The issue is that the doctor’s proposal recommends fighting the problem with more of the problem. It is the expendables answer. It is Rambo’s answer. The problem is not that our schools are not better protected, the problem is that we have a culture that encourages violence, provides easy access to powerful weapons, and does not provide adequate treatment for mental illness.
Guns
Take a look at the Bushmaster in the image above again. Why do we want this in our world? Why does this weapon exist? The obvious answer is because there are bad people in the world that need to be dealt with. I agree, and I am so thankful for the military members who put their lives on the line to protect our way of life. But why outside of that context, outside of the group of people we have selected to deal with threats, the police, the military, why does the Bushmaster need to be made available to the general public?
If you privately own one of these weapons, why?
My favorite argument against tighter gun laws is that criminals do not obey the law, so they would have guns and law abiding citizens would not, leaving the good people at the mercy of the bad. It is a nice sentiment, but not one that holds up under scrutinization. In the imaginary situation where guns other than rifles for hunting were outlawed, where would a mentally ill person contemplating shooting up a kindergarten get his guns? From the mafia? From the local, small-town underground arms dealer? I would assume that whatever pleasure is gained by owning a weapon like this would not be enough to offset the risk accepted by breaking the law to obtain the weapon. Therefore, assuming that the local police are doing their job, the weapons would not be available.
Besides, criminal access to weapons is a different problem than the one being addressed here. This is a problem of culture and availability.
The Second Amendment reads thus:
A well regulated militia being necessary to the security of a free state, the right of the people to keep and bear arms shall not be infringed.
The right to bear arms so often called upon by gun enthusiasts is misused. The founders of our nation were saying that local governing bodies could organize a militia. I’m certain that the founders could not envision a Bushmaster, nor could they imagine a world where someone would use one to murder children. We live in a world unimaginable to the people who founded this country, so interpreting their wishes makes little sense. We need to decide for ourselves what is best for the current world we live in, and what is best for the immediate future.
My opinion is that the only gun a private citizen truly needs is a rifle for hunting. Would the massacre in Connecticut have happened if the only gun the killer could get his hands on was a single shot rifle? I don’t think so.
Change
We have a few things to work on, America. Let’s put an end to glorifying senseless violence. Let’s get the weapons who’s only purpose is for us to more efficiently kill each other off the streets. Let’s focus on getting people who need help the help they need. We are better than this, we can do better.
On Culture
You never need to prove to anyone who you are. You simple are who you are. Claiming that someone else is faking their interest in a topic is ridiculous. Our interests and curiosities define us just as much as, if not more than, our histories and personal experiences. Friendly competition between peers on knowledge of the esoteric details of a given subject is good fun, but not a defining prerequisite for claiming curiosity about the subject. I would like to think that the previous few sentences are unnecessary in a conversation with adults, but unfortunately, as the recent conversations surrounding “fake geek girls” has shown, that is not the case. In a sad way, many of us have not matured past the social battleground of middle school.
I was not a geek in school, I didn’t get into computers till I was in my twenties. I can not claim a long history of love of board games, I’ve only played D&D once, and didn’t get a lot out of it. I was never a gamer, but I liked Legend of Zelda and Super Mario Brothers. I was never a jock, but I liked playing football. Despite our deep tribal instincts, I have never really belonged to any particular group with any depth. Not belonging did not mean not wanting to belong though. So, when I read Serenity Caldwell’s post Fears of a Charlatan Girl it struck a nerve. In it, she describes a fear that I remember:
But my biggest fear is ill-defined, murky, opaque. I can’t pack it into a pithy sentence. I can’t even clearly explain it.
and…
There are more blog posts and conference talks and speeches than I can point to about this feeling—that you’re not worthy, you’re not an expert, you shouldn’t be talking, you shouldn’t be doing this job.
I do not know Serenity, but I think I may be able to define her fear, at least as I remember it. Rejection. It is the fear that lies in the gulf between who we are and who we aspire to be. We know we are not our perfect vision of ourselves, but it is in this aspiration that we grow to become the best we can be. God knows I’m still trying to bridge that gulf. God willing, I will never stop trying.
Reading about the drunken rants of someone who has not been able to get past whatever happened in his formative years, I can’t help but think that, yes, he is wrong, but more importantly, why do we care? If you want to dress up as Captain Marvel and go to a convention, go for it. If you want to get on a podcast and talk about the books you are reading, I’d love to hear it. Fear of rejection, of being called out, keeps many of us from becoming the person we were meant to be. I’m still trying to get there.
IF you can keep your head when all about you Are losing theirs and blaming it on you,If you can trust yourself when all men doubt you,But make allowance for their doubting too;If you can wait and not be tired by waiting,Or being lied about, don't deal in lies,Or being hated, don't give way to hating,And yet don't look too good, nor talk too wise:If you can dream - and not make dreams your master;If you can think - and not make thoughts your aim;If you can meet with Triumph and DisasterAnd treat those two impostors just the same;If you can bear to hear the truth you've spokenTwisted by knaves to make a trap for fools,Or watch the things you gave your life to, broken,And stoop and build 'em up with worn-out tools:If you can make one heap of all your winnings And risk it on one turn of pitch-and-toss,And lose, and start again at your beginningsAnd never breathe a word about your loss;If you can force your heart and nerve and sinewTo serve your turn long after they are gone,And so hold on when there is nothing in youExcept the Will which says to them: 'Hold on!'If you can talk with crowds and keep your virtue,Or walk with Kings - nor lose the common touch,if neither foes nor loving friends can hurt you,If all men count with you, but none too much;If you can fill the unforgiving minuteWith sixty seconds' worth of distance run,Yours is the Earth and everything that's in it,And - which is more - you'll be a Man, my son!
Kipling was a product of his time, but you can replace “Man” in that last line with “Grownup”.
One last note on the apparent abundance of misogyny in geek culture. If you exclude someone from your social group based on what they are, what they look like, or some other measure outside of shared interests, how dare you. Shame on you. Stop it. (Oh, if only it were that easy.)
Quiet Time
The office is empty this morning. I just closed iTunes, and I am enjoying listening to my own thoughts. No music, no talking, no background, just quiet. Sitting in silence is a luxury these days, and one that should not be taken for granted.
When I was a kid I loved to find these quiet hidden spots. They were usually by water, but sometimes they would be a small clearing in the woods, or a smooth rock off of a gravel road that climbed above the forest. To find a favorite of mine, you would visit the local riverside park in our small town. From there you would walk along the shore to the edge of the park, climb under the brush and push your way through small trees that created a natural barrier concealing a small strip of land that jutted out into the river. To look at it from the outside you just saw the canopy of the trees and bushes that grew there naturally, but once inside you could climb back to the river where there was a small clearing. A place just big enough for a boy to sit, and a handy accompaniment of small rocks to toss in the river.
I don’t know how much time I spent there, or how many times I would find myself looking for the shelter of peace and quiet, but there were enough times for me to mark it as being significant in my youth. A recent article in the opinion section of the New York Times titled The Quiet Ones (found through a link from the excellent site enough, by Patrick Rhone) reminded me of these times, and how important it is to be able to turn it all off.
I was trying to explain to my kids last night how different the world for them is now than it was for us. We had no Internet, no cell phones, no computers. These things existed at the time, but in our small mountain town, none of the people I knew had them. If you were lucky you might have a Walkman, if you were really lucky you might have a game boy, but the batteries would die, and you were left with nothing to entertain you. If your parents had money, they might have bought you a Nintendo, but even then we had nothing like the constant, always on, on-demand stream of entertainment and connectedness that we have today. If you wanted to talk to one of your friends, you picked up the phone attached to the wall and dialed their number on the rotary dial. Or, more likely, you just walked over to their house and knocked on the door.
Even the walk over to a friends house was quiet time. Time to let your imagination flow wherever it pleased. These times were important, it is in these little in-between times where we are defining ourselves. If we are constantly seeking out the feedback and approval of others, we are not giving ourselves time enough to decide who we are on our own.
As a parent, I want to make sure my kids have the educational and competitive edge they need to be successful when they enter the workforce. I also want to give them the things they want, just because I love them. But there are times when I worry about what the ubiquity of “free” entertainment is doing to them. We didn’t have the Internet when we were kids, so we don’t know what the long term effect will be fore them. Are they getting enough quiet time? Am I? It is this worry that prompts me to send them outside to play instead of watching a movie, and to restrict their Internet access, and to prompt them, again and again, to read, create or use their imagination.
I am not a Luddite, I’m not against technology. I make my living off of it, and I understand the internal workings of it quite well. Perhaps it is this familiarity that has begun to breed a certain type of contempt. We are lucky enough to have access to whatever we want to watch, listen to, or play, whenever we want it, but with this freedom comes the responsibility to ourselves to know when to turn it all off.
Turn it off, and spend some time alone, in a quiet place.
Energy Saver Preferences
My MacBook at work sits on my desk all
day and all night. When I sit down to work on it, I expect it to be
ready for me, and ready to ask how high when I tell it to jump. I get a
bit annoyed if I come back after a few minutes or an hour and find that
the Mac has gone to sleep while I’ve been gone. So, I spent a few
minutes in the Energy Saver preference pane to configure the machine to
my schedule.
First, yes, my battery is shot. I should get that replaced, but since the Mac never leaves my desk, I don’t see it as being a big deal. This is a 2007 MacBook Pro, she’s got some miles on her, but she’s still snappy at just about everything I want to do. I run Windows XP in VMware Fusion, and am running the latest OS X with no problems. One thing that takes a while for it to do though is wake from sleep. I can hear the CD-ROM being accessed when it wakes up, and it always takes longer than I’d like. So, when I’m working on the machine, I never let it go to sleep. However, being at least somewhat energy conscious, I want the machine to go to sleep at night when I’m not around. So, I’ve dragged the slider for “Computer sleep” over to 3 hrs, which gives me plenty of time for meetings and a mid-day lunch without the Mac going to sleep.
I let the display go to sleep after ten minutes. I find that it is rare that anything I will be reading on screen will take more than that.
The Schedule button in the lower right is a gem. From here I have the Mac wake up from sleep every day at 7, right as I’m sitting down to work. I also have the Mac reboot every week, midnight at Saturday. I do not necessarily believe that OS X generally needs to reboot that often, but given how much I do with mine, and the age of the system, I would rather have it reboot automatically while I’m not around than need to do it during the day when I am.
I also have the software updates set to automatically download and install in the background. Combined with my scheduled weekly reboots, this setup should give me a clean running, up to date Mac to get things done with.
So far, so good. I have not seen anything wrong with this setup yet.
Forgotten and Beloved
I was given a clean slate of a Mac to work with this past Monday, so I gave some thought to which apps I wanted to use. Looking back at some of my favorites that have fallen behind, I was left with a bit of nostalgia for the apps that once made the Mac experience great. It is easy to tell which developers care about keeping their application up to date, just check the top right corner and look for the full-screen opposing arrows. If they are not present, there is a good chance that the application has been abandoned.
Mac OS X Lion was released in July of 2011. As I write this, it is now October of 2012. If in the fifteen months that the full-screen API has been available the developer has not taken advantage of it, odds are good that they have not kept up with any of the more interesting advancements in the past year either. For the most part, the applications listed below still work well, but it is a shame that the once great have been left by the wayside.
OmniWeb -
OmniWeb is the oldest
browser still under development,
although it may soon cede that title. OmniWeb was released in March
1995, Internet
Explorer was released
five months later in August 1995. OmniWeb’s most prominent feature is
visual tabs. Unlike other browsers, OmniWeb uses a drawer to show a
vertical list of thumbnails of the site, making it very easy to tell
which tab holds the site you are looking for. OmniWeb also has a great
feature called Workspaces that saves the state of the browser, including
all open windows and tabs, in groups that can be switched between. So,
if you are doing a lot of research on a particular topic, and want to
save where you are for later, you can save the workspace and return to
it at any time. Dr. Drang recently wrote an
applescript
to accomplish nearly the same thing with Safari. OmniWeb used to be a
paid application, but the OmniGroup released it for free in 2009, and it
has not seen a significant upgrade since.
Yojimbo -
Yojimbo was released by
Bare Bones Software in January 2006. I bought a copy, and upgraded to
version 2 in 2009, and to version 3 in 2010. I have tried, and failed,
to use Evernote and DEVONthink for the same thing I use Yojimbo for, but
there is simply nothing out there that makes saving and finding data as
easy and fast as Yojimbo. Over the years I got used to the Command-C, F1
keyboard sequence to copy something and throw it into the Yojimbo
database. Unfortunately, when Apple made the transition from MobileMe to
iCloud, the syncing feature that Yojimbo used was lost, and Bare Bones
needed to do some major modification to the underlying data storage
piece, modifications which are still underway. Or, so we’ve been told
anyway, over and over
again. In the
meantime, unless there is a major version 4 coming around the corner
somewhere, Yojimbo feels like another OmniWeb; amazing at what it does,
but left behind by the developer.
Delicious Library - I love organizing things, and
Delicious Library was built for the
obsessive compulsive in all of us. It comes with a great barcode scanner
that worked before there were barcode scanners that worked. It had fun
animations, it won awards, it’s developers got rich or joined Apple, and
then it dropped off the radar. DL3 was announced, and a request for beta
testers went out, but the software has yet to be released. Delicious
Library was one of the apps that I would show off to Windows users five
or six years ago, and it is one of those apps that I always thought
would make a natural progression to iOS and the iPad. Sadly, it seems
this is not to be.
It is understandable that each of these applications must bow to the pressure of the economy, that their developers must make decisions on what to work on based on financial benefit and health of their company. However, the loss of active development of some of the best applications available for the platform worries me. What is becoming of the developer ecosystem when the best in class is abandoned, and seven of the top twelve applications in the Mac App Store belong to Apple? The Mac has never been stronger, Apple’s engineering has never been so advanced, and if there were ever a time to make your app shine, this is it.
Reinventing The Wheel
Or, Redesigning the Tablet Computer
This is an old paper I wrote in college in the Spring of 2006. I wrote this before the iPad, iPhone, or iOS was released, so it looks a little silly and dated now, but I still want to keep it around.
Evolution
Somewhere around 2000 BC, man discovered that mathematics were not exactly his strong suit. It became apparent that by using a tool external to his mind he could perform far more advanced calculations than he could in his head. Thus, the abacus was born, the first computer.
Computing technology stagnated for thousands of years before taking a giant leap forward in the 1970’s. Advances in other fields of science led to the creation of vacuum tubes and punch cards that were used in the first fully mechanical and programmable computers. The first computers were big enough to fill a large room, and had (relatively) little computing power. Over time, the computer internal components have grown smaller and smaller, to the point that now you can carry a computer with several magnitudes the computing power of the first machines in the palm of your hand.
While computer architecture has undergone several changes, the basic way people interface with the computer has only undergone two major transitions. The first transition was the changefrom purely mechanical forms of data input like punched cards, to a digital interface via a command line. The command line is a simple text interface where a person types in data on a keyboard, and the computer returns information based on what the person typed. The second transition in user-computer interface was the move away from the command line to a Graphical User Interface, or GUI for short. According to Wikipedia:
“A GUI is a method of interacting with a computer through a metaphor of direct manipulation of graphical images and widgets in addition to text.”
The most recognizable computer GUI is the interface to Windows XP. XP uses a “desktop” and “filing cabinet” metaphor to symbolize the location of files in within the system. While this works great for simple filing systems, the amount of data needed to keep track of quickly out grows the now outdated system.
Necessity
The computer has grown smaller and larger at the same time. The physical size of computers has decreased, while the computing power and storage space has grown exponentially. Many computer users have now been using their machines for several years, and have accumulated a large amount of data in the form of documents, email, photographs, music, movies, and games. Recently, the computer industry released what they are calling the Ultra-Mobile PC, or UMPC for short. The UMPC is the culmination of the shrinking of the computer, (My how times have changed!) a full computer that you can hold in the palm of your hand. UMPCs run a full version of Windows XP Tablet PC edition, and, while functional, they suffer from the complete lack of style that often accompanies the PC marketplace. To remedy the outdated desktop, filing cabinet metaphor and create a new computing utility we need to think outside the start menu.
The computer operating system is the interface between the user and the computer hardware. It is the software that makes the computer cold silicone come alive and react to external stimulus. For personal computers, there are several operating systems available, but only Windows XP is widely known, mainly because of Microsoft’s 95% market share. Every PC available for purchase comes preloaded with Windows, and most users do not care to bother with another OS. While this is seemingly convenient to the user, they are being forced to learn a system that does not think like they do.
As stated earlier, there are several different PC operating systems. My personal favorite is the Mac OS from Apple Computer. Mac OS is based on the FreeBSD operating system, a freely available OS. Another type of freely available OS is known as Linux. Linux is “open source”, meaning that if so desired the source code is available and can be modified and redistributed by anyone. Given the “free” and “open” nature of Linux, there are literally hundreds of different “flavors” of Linux. Red Hat is one of the better known flavors, along with Suse, Slackware, and Debian. There are even flavors of Linux that are based off of other flavors. In a market dominated by a multi-billion dollar company, Linux is truly an odd bird. It is unfortunate that the two major interfaces to Linux, known as Gnome and KDE (The K Desktop Environment) both borrow heavily from Windows XP, including a start menu, nested menus, and nested folders. Linux, while free, suffers from a major drawback in being both unfamiliar to regular users (not being Windows XP), and being unintuitive to use (by trying to be Windows XP). Mac OS does a better job of presenting a more discerning interface, but also suffers from nested folders and other small interface drawbacks.
Using a Mac can be made much more productive by installing the free
application named
Quicksiver
from Blacktree. Quicksilver runs in the background and waits until the
user presses a predefined key combination. Once the main Quicksilver
window is available, the user types in the first few letters of what he
is looking for, followed by a tab, and then the first few letters of
what the user wants to do with the item selected. For example, to launch
the Safari web browser, the user could type S <tab> O <enter>
and the
application would launch. Quicksilver is a major leap forward in human
computer interaction, however it currently has a very steep learning
curve and takes some getting used to.
Another great advancement on the Mac is called Spotlight. Spotlight indexes all of the data on your computer, and all of the data about the data (or metadata) in real time. Meaning, if I have an Adobe PDF file that has something about Mezzo in it, spotlight will find it. Not only files, but emails, music, picture and most other forms of data stored on the computer. The Spotlight search functions almost instantly, building its results in real-time as you type.
Searching instead of browsing with Spotlight
A creative Mac user named Jason Spisac recognized the short-comings of the current computer interface and wrote a paper now known as the “Mezzo Greypaper” detailing his idea of a new de- sign for a GUI named Mezzo. In Jason’s paper, he details how major functions should be grouped in the corners of the screen, where they cannot be missed with a mouse. This idea was taken up by a group of Linux developers who are creating a new Operating System named Sym- phonyOS. The SymphonyOS is still in development, but it looks very promising. Using the ide- als and standards described in the Mezzo Greypaper they have designed a GUI with no file manager, hot corners, integrated search (via a linux application named “beagle”, not as powerful as Spotlight, but not bad either), and tight web integration.
Parts is Parts
The perfect user interface would incorporate all of the components listed above; Mezzo desktop, integrated search, and a Quicksilver like manager to bring it all together. I would like to propose a new UMPC, or Tablet PC, or Navi, or whatever you would like to call it. I’ve become fond of calling it the Farmdog.
Farmdog is a type of hybrid, addressing the shortcomings of the major computer systems, and designed for the user, not the computer programmer. Using a touch screen and a stylus (or tablet pen) the user can interface with the SymphonyOS using the Mezzo desktop’s hot corners to bring up different functions or access different parts of the computer. For example, moving the stylus into the lower left-hand corner of the screen would bring up a full screen menu of the installed programs. Bringing the stylus to the upper left-hand corner would give the user a menu of available documents and an integrated search box. Likewise, if something is no longer needed on the system, the user could drag the item to the lower right hand corner and be rid of it. No aiming, no hassle, no problem. Accessing quicksilver would be as easy as a tap on the screen with the stylus. Using handwriting recognition technology, the user could simply tap on the screen to bring up quicksilver, write a S, then a line to the right, then an O, followed by another tap to launch the Safari web browser. Likewise, the user could tap on the screen, write a R and a P, then tap again to open the file named “Research Paper”. All files, emails, applications, bookmarks… everything available from one simple tap of the pen.
The Art of Tech
One other technology that I would borrow from Apple’s Mac OS is called Exposé ́. Exposé is a window management system that allows the user to see all open windows as thumbnails and then choose which one is needed. The following two pictures illustrate Exposé. ́
Utilizing this technology on a small hand-held computer would make the headache of managing multiple application windows on a small screen a thing of the past. Even better, Exposé can be activated via a hot corner, say the upper right hand corner. So, the user has ten applications open, and needs to copy some text out of a document for inclusion in an email. Simply drag the stylus to the upper right hand corner to activate Exposé ́, select the email application, copy the text, back to the upper right hand corner, select the document, paste and your done. It may not be as fast as other methods, but it is far more natural.
Solutions
Software is only half the story. It is the ying to hardware’s yang. Farmdog’s hardware is designed to deal with the current shortcomings of computer design by using everyday technology in radically new ways.
Today, operating systems are distributed on a CD-ROM or DVD-ROM and loaded (copied) onto the user’s computer hard drive. This system is almost as old as computers themselves, with only the delivery method changing (floppy disks to CDs to DVDs). The problem is that during an OS upgrade, you run a very real risk of losing the data on the hard drive. And what if there is a problem with the new OS? Unless you have copied your data over to another hard drive somewhere else, there is no way to go back a revision. Farmdog is different.
Farmdog would have two drives. One removable flash based drive for the OS, and another standard hard drive for the user’s data. This system would have a very distinct advantage over CD-ROM based delivery methods. For one, with the entire OS on the flash drive, the user could switch between operating systems by simply shutting down the Farmdog and re- placing the flash drive. In this way, the user would not have to worry about lost or damaged data, the data would be on a completely separate drive. The hard drive would also be easily removable via a slot on the right hand side of the computer. I can imagine distributing a simple hard drive replicator to backup data even further.
Nothing New Under The Sun
I really enjoy computers. I’ve enjoyed them even more since switching to Mac. I enjoy them so much that I’ve made a career out of knowing as much as possible about how they work, and what makes them tick. Farmdog is about putting a little piece of soul back in the box, finding the ghost in the machine and setting it free. Computing without thinking, finding without doing. Farmdog wants to be your best friend.
ArcDown - My First Open Source Project
Part of a Farmdog project I’m working on needs nice syntax highlighting for markdown. After searching around for a bit I found Ali Rantakari’s PEG Markdown Highlight project, and knew that it would be a perfect fit. Unfortunately, the code was not written for ARC, or Automatic Reference Counting, and my project was. Rantakari’s code worked fantastic outside of ARC, but inside it needed a few days worth of love and attention.
I tried to dig through and fix the errors in my project, but after a while it seemed like a better idea to rip it out, start a blank Xcode project and do all of the fixing there. Thus, ArcDown was born.
ArcDown is a reference project, intended to be an example of how to use the PEG Markdown Highlight in your project. It’s far from perfect, not even close to finished, and is not going to replace MacVim for me any time soon, but it is a fun project to work on at night. If you are interested, ArcDown is released under the MIT license, so, fork away.
The Computer User I Want To Be
Learning about computers can be a dangerous thing. Breaking though the veneer of graphical interfaces reveals inefficiencies and inaccurate metaphors. For example, rsync copies files faster and uses fewer resources than the Finder. Copying lots of files is what rsync does best, but being a command line power tool there are a few subtleties with using it that are not readily apparent. As your skill grows, so to does the tendency to eschew modern tools in favor of “power tools”. You begin to see the inefficiencies of graphical tools as problems, problems that you need to fix. I’ve been down that road.
Power tools are impressive, but they also lend themselves to fiddling, spending more time configuring the tool than actually using it to get work done. Or worse, you need to stop tracking on what you are doing at the time to think about how to accomplish the next task. I was reminded of this as I was writing the first two New Mac Essentials posts, and realized that I needed to reread my own Principle of Least Software.
Use only the software that you need. No more, no less.
I was recently in Chicago attending training for Hadoop. I used DEVONthink to take notes and sync them over to my phone. I also used it to collect PDFs and web archives of documentation. It worked fairly well, but after thinking the experience thorough I found very little that I did with DEVONthink that I could not do with TextEdit and the Finder. I’ve obsessed over the ability to sync data to my phone, but the truth is that there have been very few times that I actually used that data.
DEVONthink was on my list of Mac Essentials, but I’m removing it. I have spent far too long thinking about how files are stored and the most efficient way to get to them. I’ve spent too long thinking about how to “manage a project”, instead of moving on to the next task in the project. When I consider my own tendency to overcomplicate my computer use, I realize that being the fiddly geek who spends his time tweaking his .muttrc file is not the guy I want to be. I believe in learning your tools, and learning them well, but I also believe in using as little software as possible. Most of all, I believe in using your computer as the tool it was intended to be. A bicycle for the mind.
When I bring my computer to life in the morning I want as little friction as possible between me and the tasks I need to accomplish. I can’t afford to think about the most efficient way to store a task, or file a PDF, or title an email. I simply need to do the task, read the document, and write the email. So, I’ve spent a good portion of today reorganizing my files, removing unnecessary applications, and streamlining my process. Time spent sharpening the saw is time well invested.
The kind of computer user I want to be is the kind who uses the simplest tool available, and does so with speed, accuracy, and finesse.
Make it Matter
You do what you do because it matters. At HP we don’t just believe in the power of technology, we believe in the power of people, when technology works for you, to do the things that matter; to dream, to learn, to create, to work. If you are going to do something, make it matter.
Well done, HP. Certainly much better than the recent Apple commercials.
New Mac Essentials - MacVim
Investing time learning a text editor is a serious commitment. Over time, you find yourself reaching for the editor’s built-in shortcut keys everywhere you type. In my case, I do almost all of my writing in MacVim. Unfortunately, MacVim comes with a fairly steep learning curve that many are unwilling to tackle. Part of the complexity of Vim, from which MacVim is derived, is the configuration. Over the years I’ve come up with a setup that works for me.
Downloads
Included Plugins
Configuration
My configuration is kept in Dropbox in a folder named Vim. I create three symlinks in my home directory.
ln -s ~/Dropbox/Vim ~/.vimln -s ~/Dropbox/Vim/gvimrc ~/.gvimrcln -s ~/Dropbox/Vim/vimrc ~/.vimrc
MacVim is customized through plugins. The history and legacy code behind
the plugins make them unwieldy to maintain, so the first plugin I
install is one to manage other plugins.
Pathogen by Tim
Pope allows you to use Git to install other plugins, and keep them
nicely organized in ~/.vim/bundle
. The GitHub page for Pathogen
includes simple installation instructions. From here, to install other
plugins, clone that plugin’s Git repository into the bundle
directory.
I have found that the list of plugins I use changes every so often according to what language I’m working in or what task I’m working on. Vim is much like Linux… infinitely tweakable, and, if you are not careful, it can turn into a vast time sink. However, if you can curb your nerd impulse to optimize endlessly, and find a configuration that works for you, Vim will be your constant companion, always there for you when needed.
Mountain Lion Reviews
OS X 10.8 Mountain Lion was released today, accompanied by a handful of reviews by the best tech sites.
- OS X 10.8 Mountain Lion: the Ars Technica review, John Siracusa
- Mountain Lion, John Gruber
- Mountain Lion and the Simplification of OS X, Shawn Blanc
- Apple releases OS X Mountain Lion, Jim Dalrymple
- OS X Mountain Lion, MacWorld
Just for kicks, don’t miss Marco Arment’s Review of John Siracusa’s Review of OS X 10.8 Mountain Lion, as well as John Siracusa writing about writing his Mountain Lion reveiw.
As for me, this is the first major upgrade of OS X that I do not see a compelling reason to upgrade right away. I plan to give it a day or two first.
The end of do-it-yourself - TechHive Beta Blog
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
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 www.novell.com/news/pres… 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 osxbook.com/book/bonu…
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 articles.baltimoresun.com/2009-12-0… foundation-computer-refurbishing-organization-freshmen-laptops
New Mac Essentials - Quicksilver
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
- Hibari
- NetNewsWire
- DEVONthink
- Dropbox
- Quicksilver
- Caffeine
- Chrome
- MacVim
- Marked
- Moom
- OmniGraffle
- Read Later
- TextExpander
- The Hit List
- 1Password
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
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:
- Check email at 7, 10, 1, and 4. If something is urgent and needs my attention immediately, it would come over my phone.
- Check the ticketing systems immediately after email, pull anything needing my attention into The Hit List.
- Prioritize, then break projects into their own lists
- Assign a due date to each task.
- 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
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
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.