jb… a weblog by Jonathan Buys

The Experiment

July 9, 2011

The Experiment

Ideas, Stress, and Time

I remember someone saying once that ideas were worthless, and only implementation mattered. I disagree. Ideas have power, and depending on who you are, that power can be used to either create, or destroy. Or, in my case, both. When I get an idea, the drive to make that idea become reality can consume me. I may do nothing about it for days, weeks, or even months, and then, seemingly suddenly, put all of my time and energy into it in one big explosion. During the time leading up to the creation phase, I’m thinking. At night while I drift off to sleep, during the day when there is a lull in my work flow, during all the little times that something else is not occupying my cognitive functions, I’m thinking about my idea. I consider the idea, I poke it and prod it from as many different angles as I can until I get to a point where I know how to make it real. Or, at least as real as my limited knowledge base can facilitate.

My problem with the thinking/creating loop is that what I’m thinking about and what I’m creating may not be what’s best for me at the time. The offset between what I should be thinking about and what I actually am thinking about creates unnecessary stress in my life, and makes it harder to concentrate on things that I need to be concentrating on, when I need to be concentrating on them. Having an idea that may lead to the accomplishment of a life-long goal is a wonderful thing, if the idea comes at a time when a person can actually act on it without neglecting other commitments. Unfortunately, that is not the situation that I find myself in now.

Masters

Last Fall I enrolled in the Masters of Human-Computer Interaction program at Iowa State University. When I finish this semester I’m in the middle of right now, I’ll be at the half-way point. The program is entirely online, so I can continue to work at my day job as a systems administrator while I work at night on my assignments. The course load is more than I was expecting, and the course work takes far more time than I thought I would need. I spend several hours on the weekends, and several nights each week studying. Some classes have been a lot of fun, others have felt like pushing a bolder up a hill. I’m lucky enough right now to have two classes that I’m enjoying, one on programming in Python, and another on the fundamentals of design.

My hope for the Masters degree is that it will lead to exciting new opportunities in the future. Something that my experience as a systems administrator alone would not. While I enjoy my work, I feel like I could do more, and I do not feel like it is ultimately going to fulfill that life-long goal I was referring to above.

So, I work during the day, and I go to school at night. In between times I try my best to be a good husband and father to my family. We have four kids, and they all need time with Dad. So, we do stuff, fishing, roller-coasters, bike rides, cooking… lots of stuff. Stuff that, really, is more important than anything else. The kind of stuff that gives me a reason to get up in the morning.

My obligations to my family are clear, as are my obligations to my employer, as well as my obligations to Iowa State. However, grad school was not the only thing I started last Fall. I also started Farmdog Software.

Farmdog

Everyone is busy, everyone has obligations, and no one is going to think that I’ve taken on too much, especially those who have started successful software companies. What I’ve told myself for the past nine months is to just suck it up and keep working. Long after everyone else is asleep, I’ve stayed up to keep working on Go2 and Farmdog. Unfortunately, as Dan Benjamin recently said on Back to Work, you can’t start a successful business part time. It needs your full attention, you need to be committed to it.

Farmdog Software has been my dream for a long time. Since first working with my mentor back in England, and learning how he started a successful consulting business, I’ve wanted to work for myself. I’ve been dreaming of working out of my home for twelve years, and my hope with Farmdog was that it would be the catalyst that would finally help me achieve that dream. It has not. It is entirely my fault. I see where I’ve made mistakes, and how my timing was completely off. Underestimating how much time it would take to run the business, and how much time it would take to go to grad school has left me me stressed, unhappy, and drained. My family, my boss, and I all deserve better than that.

Being stretched this thin caused the quality of my work to go down. The most recent build of Go2, 1.3, has glaring bugs that make it unusable for me. While I love my beta testers, and seriously can not thank them enough for finding the faults in Go2, I can not, in good conscience, release 1.3 as it is. It needs a major reworking, and some serious thought into its direction and what it does. I still use it every day at work to launch SSH sessions, which is what I built it for, but I need to think through what the best direction of it as a product is. It needs the kind of thought that I just don’t have the ability to give it right now.

So, Go2 1.3 is not going to be submitted to the App Store. Farmdog Software is going on hiatus until I finish Grad School next year.

Farmdog has been an experiment of sorts, I wanted to see if I could do it, if I could become an “indie developer”. I accomplished what I set out to do, but not well, and not with the kind of dedication the endeavor deserved. As an experiment, we will call Farmdog a success, and a proof of concept that, given the appropriate time and attention, Farmdog can lead to accomplishing my goal. However, right now is not the time. Right now is the time to concentrate on finishing my Masters degree.

The Future

I have many ideas for apps, many that I’d love to start building right now, but they are going to have to wait. While Farmdog is going on hiatus, it is not being abandoned. When I finish my Masters degree, I am going to return to Cocoa with everything I can muster. I am going to leave Go2 in the App Store, it generates one or two sales a week, and if people find it useful I see no reason not to let them have it. So far support has not been an issue, but if it becomes one I’ll pull it. Farmdog is going to stay alive, simply in a holding pattern until I return.

I want to make clear how much I appreciate everyone who’s helped beta test Go2, and how much I appreciate the (very few) customers I’ve been lucky enough to have. If you are one of the awesome few who’ve purchased Go2, I seriously can not thank you enough. You’ve helped make the experiment a success, and given me a direction for the future. If Go2 had not sold at all, or if it had been given a bunch of negative reviews, I probably would have decided my future lay elsewhere.

For the CocoaHeads in Des Moines (and in Cupertino), thank you as well. It’s great to know that there’s a group of people in the area who are willing to help, and to share what they’ve learned.

As I write this, I feel relieved, but the real burden was lifted as soon as I made the decision two days ago. As much as I like to think that I’m superman, I really have only a limited set of abilities, and something had to go.


Supersite

June 14, 2011

Daring Fireball linked to Paul Thurrott today, citing Paul’s comment that Lion is simply an evolutionary, rather than revolutionary update. John says:

With Mac OS X in particular, to my recollection, Thurrott has had this same take for every single major (i.e., new cat name) release. Every single one, he’s considered to be “minor” and “evolutionary”.

Sounds like fun, let’s take a look.

Apple Mac OS X 10.1 Review

Microsoft and Apple developed XP and OS X in parallel, and although the first version of OS X (10.0) shipped months ago (in March), the OS wasn’t ready for consumers and casual users until 10.1’s release in late September.

Although Thurrott does not specifically say 10.1 was a minor update in this review, he does address it in the 10.3 review.

Apple Mac OS X 10.2 “Jaguar” Review

Essentially a minor upgrade to previous Mac OS X versions, Jaguar includes numerous small updates and refinements but few major new innovations.

Apple Mac OS X 10.3 “Panther” Review

Over the course of three minor updates (10.1 in late 2001, 10.2 in late 2002, and now 10.3) Apple has done much to strengthen Mac OS X’s underpinnings with a usable fascia that’s bursting with functionality.

Fascia? and…

Panther costs a whopping $129 for most Mac OS X users, although customers who have purchased a new Mac since October 8 can get it for free. That’s a lot of money to pay for mostly subtle refinements that, arguably, should have been in the system to begin with.

Apple Mac OS X 10.4 “Tiger” Review

Mac OS X 10.4 “Tiger” is, in fact, a minor upgrade to an already well-designed and rock-solid operating system. It will not change the way you use your computer at all, and instead uses the exact same mouse and windows interface we’ve had since the first Mac debuted in 1984.

Apple Mac OS X 10.5 ‘Leopard’ Review

While the Apple hype machine and its fanatical followers would have you believe that Mac OS X 10.5 “Leopard” is a major upgrade to the company’s venerable operating system, nothing could be further from the truth. Instead, Leopard is yet another evolutionary upgrade in a long line of evolutionary OS X upgrades, all of which date back to the original OS X release in 2001.

and…

Meanwhile, Leopard is an incremental, evolutionary update over the previous release with no major architectural changes, which makes me wonder why Apple is even charging for it: In the Windows world, such releases are called service packs.

Quick Take: Mac OS X 10.6 “Snow Leopard”

Bottom line: Mac OS X 10.6 “Snow Leopard” is a nice refinement to an already solid OS offering. But it’s almost too evolutionary to get excited about.

And finally, the article in question.

Apple IOS And Apple Mac OS X “Lion”

All in all, Lion doesn’t change much: People buy Macs for the beautiful hardware, not the lackluster OS X user experience. That’s still very much the case.

You’ve really just got to love this guy.


Two Views Of The Cloud

June 14, 2011

A few years ago, there was a distinction between the “world wide web” and the Internet. The distinction has decreased, but in the wake of Apple’s landmark WWDC keynote, I think the technical distinction between the terms is an important point to make. The difference between the Internet and the web that rides on top of the Internet forms the basis for two very different points of view for the future of personal computing.

Forgive me as I drastically oversimplify a highly complex system.

The Internet

I recently had the privilege of speaking at career day at my kids school. When asked if any of them could explain the Internet, the kids gave a few entertaining answers like “that’s where the Google is”, and “it’s where you can find stuff”. Although most kids knew what a computer was, none knew that the Internet was a collection of computers of varying sizes. Calling the Internet the “Cloud” further abstracts the reality of what the Internet is from what it is perceived as being. The Internet is an interconnecting of devices, both large and small. Many other systems ride on top of the Internet, like email, file transfer, name mapping, and, most popular of all, the world wide web.

The World Wide Web

The World Wide Web uses the hypertext transfer protocol to send hypertext markup language between computers. The markup language is compiled into web pages viewed in a web browser. Web pages contain hypertext links to other web pages, links that branch out like a spider’s web, hence the name, World Wide Web, the “www” part of the naming scheme for web sites.

The Web rides on top of the Internet. Companies like Google make money by selling ads on web sites. So, in their view of the Internet, the web is not only the biggest thing, it’s the only thing, and the more they can draw you into the web browser, the more money they can make.

Who Profits From This

Apple’s recent announcement of iCloud centers around native applications that run on their devices. This is because Apple makes money from selling Macs, iPhones, iPods, and iPads. Apple makes software to make their hardware more appealing to potential buyers. They are a hardware company. On the other hand, Google is an advertising company. They make software to sell ads. They give away the software for free so they can build a large user base to make their advertising space more appealing to corporations.

In Google’s view of the Internet, the “Cloud” is centered on their ability to present the user with ads, therefore the Google view of the Cloud is inside the web browser. Apple, being a hardware company, sees the Cloud as an interconnect between their devices, not a restricted window seen through the web browser. Apple is willing to use the entire Internet to move things around, Google wants to keep you in the browser as much as possible. So much so that they are building an entire operating system that is nothing but a web browser.

I should note that I do not know what file transfer mechanisms iCloud uses. It is very possible that they are using protocols that are built on top of http, and are technically higher up the stack, but what I’m trying to address is the conceptual model. Apple’s iCloud is device centric, Google’s “cloud” is web centric.

In Apple’s view of the Cloud, it is entirely possible that eventually a person could forget they were using the Internet at all. The promise of iCloud is that news, messages, emails, documents, pictures, music, and entertainment could be delivered to all of your devices without thinking about it. Eventually, as this technology is refined, it will be more common to live outside of the web browser than inside, a concept I could see ad companies like Google having a problem with.


On TermKit - Steven Wittens

May 19, 2011

I’ve been administering Unix machines for many years now, and frankly, it kinda sucks. It makes me wonder, when sitting in front of a crisp, 2.3 million pixel display (i.e. a laptop) why I’m telling those pixels to draw me a computer terminal from the 80s.

via: [On TermKit Steven Wittens - Acko.net]1

I too have been administering Unix and Unix-like machines for many years. I admire Steven’s ambition, and his obvious programming and design expertise, but I believe his architecture with TermKit is a bit misguided. TermKit is a combination of Cocoa, Node.js, and WebKit, and while it works, there are a lot of moving parts to get it to work.

Steven seems to have missed the point of the command line, and why we are still use it after all these years. I like using a carpenter’s analogy. Sometimes, you just need a hammer. Sure, there are framing nailers and powder-actuated guns, but sometimes, the only way to get the job done is to hit something with something else hard and heavy. That’s the command line, that’s Unix.

Neal Stephenson uses a better tool analogy. Popping open the Terminal is akin to bringing out the Hole Hawg, it’s ugly, it’s powerful, and it gets the job done.

The most basic point for why Terminal.app still exists, and why the command line is still a preferred tool for systems administration is that Unix is a text-based operating system. All of the configuration files are text, much of the system information is available as text, and all input and output from the commands are text. So, when you are operating on the lowest level of the system, reaching for optimum efficiency, the command line gives you direct access. Anything built on top of that is an unnecessary layer of abstraction.

Being able to “cat” a PDF file is a neat trick, but I have a hard time imagining how it could help revolutionize systems administration.


Solving The Right HA Problem

May 14, 2011

High Availability, HA for short, refers to an applications ability to continue operating after a hardware failure. HA comes in many different shapes and sizes, but two methods in production today are the presence of multiple machines performing the same task, and pairs of machines in a master-slave setup. Sometimes the master-slave setup is extended to include several slaves, but the main idea is that if the master should go away, the slave will pick up where the master left off, with no interruption in service.

In it’s conception, HA was meant to protect against the physical failure of a machine. With the rise of virtualization technologies in the data center, the concept of protecting against machine failure has been extended to include virtual machines as well as physical. If a physical machine fails, software like VMware and Xen have the ability to seamlessly transfer the virtual machines to another host in the cluster. Virtualization then delivers on its promise of guaranteeing HA by solving a lower problem of protecting the machine, independent of the application running on the machine.

However, virtualization technology has its trade-offs, especially in environments that support web applications. The first is disk space. Since each virtual machine is a unique and self contained operating system, minimum disk requirements must be met per virtual machine. This creates large files that hold virtual file systems, most of which is unrelated to the operation of the application that the virtual machine supports. It is not uncommon for a single virtual machine to be 20GB in size.

There are ways to mitigate this problem. A virtual machine could be created with a disk that automatically grows in size as needed, known as thin-provisioning. This is a dangerous practice though, because it allows the sysadmin to over-allocate his available disk space. If one virtual machine suddenly grows too big, and inadvertently fills the available disk, all of the virtual machines could freeze until more disk is available.

Another problem with virtualization is again related to the point that each virtual machine is an independent operating system. Each operating system must be managed to ensure compliance with standards, logging, user accounts, and all of the myriad other tasks associated with running a production operating system. Again, there are ways to mitigate this problem. Systems like CF engine and Puppet are good examples of system automation, and are a necessity after the data center grows beyond a certain point (where that point is seems unique to the each datacenter).

Each shortcoming of virtualization has been addressed with a solution of one type or another, but they each address the problem of managing operating systems. Remember, the purpose of HA is to ensure that the application remains available, not the operating system. The operating system is an auxiliary requirement, needed of course for the application to run, but receiving an undue amount of attention unrelated to the original purpose of HA. HA is not meant to ensure that the operating system remains available, it is meant for the application residing on the operating system.

VMware and it’s ilk are the current darlings of the datacenter, due in no small part because they do in fact deliver on promises of HA. However, they deliver at the cost of misdirection away from the actual problem.

It is my opinion that virtualization technology solves the problem of HA at the wrong layer. HA should be implemented higher in the stack, at the application layer. Consider a much older technology implemented in FreeBSD, jails: FreeBSD jails pair a filesystem, and IP address, and an application into a tightly controlled bundle. Jails allow you to add multiple applications to a single operating system, while keeping them independent of one another. This allows you to fully utilize the hardware, and removes a layer of abstraction that exists in virtualization. Jails do not provide HA. Building an architecture using jails forces the designer to implement HA farther up the stack. Designers still need to provide for hardware failure, the same as an environment built using VMware does, but they do so using existing mature technologies.

For example, a web cluster uses multiple, nearly identical load balanced web servers. In this scenario, HA for the web site is ensured by providing the same data on all web servers. If the web cluster is a database driven application, the database could ensure HA using a master-slave replication setup. This simple setup ensures HA without the overhead and additional complication of virtualization.

Where jails really shine is in the management of each physical server. Each jail mounts the operating system as a read-only filesystem, with symbolic links to unique read-write directories for each jail. That means that there is only a single operating system to manage for each jail, one OS to patch, one OS to configure. Coupling jails with zfs provides an amazingly simple method of backups, and application distribution. A typical jailed application residing in a zfs filesystem will require less than 500MB of storage space, compared to a VMware image of 20GB. Multiplied by several hundred virtual machines or jails, the difference in size becomes a significant difference in cost.

When building a new environment from scratch, it may be tempting to agree with the vendors and shell out tens of thousands of dollars for VMware licensing and associated hardware. When you do, know that you are solving the problem, but at a much higher cost than necessary.


Wallpaper

April 28, 2011

Desktop wallpaper is a cheap trick. It’s only purpose is to make your computer screen look pretty, but I have yet to come across a photo or a work of art that I found to be anything but distracting. There is very little difference between UI elements like windows and objects depicted in a picture behind the windows. If you can see it, your brain needs to identify it.

This is why, currently, my desktop looks like this:

In contrast, the top results in both Google and Bing for the search term “desktop wallpaper” are images of nature, people, or movies. Some are nice works of art, and worth having around, but they are decoration, not functionality. If you are spending time looking at your desktop without any windows open, what are you doing?

Consider this image, from the very SEO friendly named downloadfreedesktopwallpaper.net

It’s a nice image, reminds me of something we might find in a frame on an office wall with some pseudo-inspirational saying beneath it. There are a lot of blues, and greens, a shiny, reflective lake, and patches of reddish brown that remind me of farmland. It’s a picture that I could spend some time looking at, and probably would. Probably when I’m trying to concentrate on something else. I might look at the mountain and think I’d like to climb it, or look at the lake and think it’d be a nice day for a swim. I might start to think about the smell of the trees. Or, I might just glance at the picture, and momentarily forget what I’m working on.

Bright colors and pictorial elements in wallpaper are distractions, and take away from what you are actually trying to accomplish with the machine. I recommend switching to either a solid color like dark or light grey, or a type of dark textured background, like the one I’m using now. Both look nice, and fade into the background when they are supposed to. I’m not against spending time looking at photographs, but save it for a specific time. The best time to look at photos or art is when you have the time and cognitive resources to appreciate the art, and let it take your imagination where it wants to go.

You can download a few very nice wallpapers from here, which I found through MinimalMac.


Introversion Intuition Thinking Judgment

April 13, 2011

INTJs apply (often ruthlessly) the criterion “Does it work?” to everything from their own research efforts to the prevailing social norms.

I first took the Myers-Briggs personality test in the Navy, stationed at the Defense Threat Reduction Agency in New Mexico. I believe it was some sort of HR project for the civilians on base that I worked with, and I was asked to participate as well. I was pleased with the results, and perhaps even a bit proud of the favorable description. Reading the results I found several instances where the profile matched or explained past behavior, but truthfully I wondered if I had unconsciously steered the test in the way that I wanted it to go. Several months later, I took the test again, and again got the same results: INTJ. Satisfied after taking the test as honestly as possible, I moved on.

Personality tests attempt to generalize patterns of behavior. Since all people are unique in their experiences, not everything these tests say will be accurate. Any attempt to explain behavior should be taken with a very large grain of salt. Uniqueness is not something we humans like to have in our world though, so we love to group, categorize, and label people. It is a behavior we learned in middle school, and extends well into our adult life. Some people cannot understand others without some sort of grouping context to place them in, even if the context is grossly inaccurate. Personality tests can be a way to avoid this conscious or unconscious categorization for managers who want to understand and effectively communicate with their employees. For individuals though, and, particularly for me, the tests can provide insight into why I do the things I do.

The other day Benjamin Brooks, from the excellent Brooks Review, tweeted the results from a personality test he had taken. Brooks, like myself, is an INTJ. The tweet made me wonder if my personality had changed over the years, and if I took the test again if I would get the same result. So, I did and so… I am. My results did not change. The test still classifies me as an INTJ. The test results were not nearly as important to me as reading portions of the profile to my wife. The profile embarrassed me by how well fit portions of my life, particularly in my relationships with friends and family.

The emotions of an INTJ are hard to read, and neither male nor female INTJs are apt to express emotional reactions. At times, INTJs seem cold, reserved, and unresponsive, while in fact they are almost hypersensitive to signals of rejection from those they care for.

When I was a child, I was part of the “Gifted and Talented” project. As part of the project, I saw a counselor, who did several tests. The counselor predicted that I would have few friends, but the friends I had would be very close. The prediction has been very accurate so far. I generally like people, and try very hard to be polite, but if the person is not deemed by my brain as being important or relevant somehow, I forget them almost immediately after meeting. I do not do it to be a jerk; it is just how my mind works. On the other hand, I still know where my best friend from high school is, and if he showed up at my doorstep tonight, we would spend the rest of the night getting caught up.

Having the type of brain that I have makes me very good at some things, like being a systems administrator. I build and organize large, complex, intricately interwoven patterns of things. I have the ability to understand complex technological concepts, and am very good at explaining those concepts to others. I am very good at teaching, mentoring, and talking with others one on one. I know what I am good at, but more importantly, I know what I am not good at. I am not good at informal group meetings or luncheons. I am not good at the after work meet up at the local bar. I am not good at small talk about sports or hunting. When considering my interactions with others, it is not enough to just say, “I’m not good with people”, that is inaccurate. I am very good with people, I am not good with informal social groups of people, because I do not understand the dynamics of how they work, or how I am expected to behave. I much prefer a small, quiet coffee.

INTJs are analytical. Like INTPs, they are most comfortable working alone and tend to be less sociable than other types. Nevertheless, INTJs are prepared to lead if no one else seems up to the task, or if they see a major weakness in the current leadership. They tend to be pragmatic, logical, and creative. They have a low tolerance for spin or rampant emotionalism. They are not generally susceptible to catchphrases and do not recognize authority based on tradition, rank, or title.

That last sentence might seem out of place for me, considering my military background. My friends from the Navy would know that it hits the nail on the head. There was more than one Chief I went toe to toe with, and since I was outranked, I usually lost. I was in the Navy, and I loved the travel and opportunities it gave me, but I never quite fit in the Navy. Some fit in the Navy like an old glove; I was more like forcing a round peg in a square hole. I needed the Navy in my life, and I am proud to have served for the eleven years that I did, but I was also glad to leave.

It is good to know that even though I have changed over the years, the core of my personality has not. I still care deeply for my loved ones. I still keep my space neat, clean, and organized. (As a side note, my parents never had to tell me to clean my room. I kept it the way I liked it.) What I have learned in the past few years is how to push myself outside of what I am good at, and into things that make me uncomfortable or are simply not my strong point. Like working on home improvement and music, and even saying yes, every now and again, when asked to go to lunch.

Personality tests are not gospel; they are not the be all and end all of who you are. However, if you are like me, by taking a test you might be able to gain some insight into why you do what you do. The test might help you find your strengths, and identify some weaknesses.

Perhaps the most fundamental problem, however, is that INTJs really want people to make sense.

All quotes from this article were taken from the Wikipedia page on INTJ.


Mandatory

April 8, 2011

My workplace is adopting Agile methodologies for our development and client relations departments. As part of the adoption, it was decided that all of IT would attend a three hour overview of what Agile is and why it was important. This is all fine and well, but in making the training mandatory, instead of optional, the organizers lost a good deal of opportunity.

Mandatory training carries a stigma. Those who have jobs that are not directly involved in Agile were instantly resentful about having to spend an afternoon in training where they can see no immediate value. They were there because they had no choice, and even if no one actually said it, they were thinking the same thing: “This is bullshit.”

Participants involvement in the lecture reflected this attitude. When the speaker asked for questions there were none, when she asked for volunteers, no one raised their hand. They were biding their time, waiting for the lecture to be over, hopefully as quickly as possible.

This could have been different.

Imagine instead if the email announcing the mandatory training was worded like this:

We at $WORK are adopting Agile methodologies. Agile is important to how we do business, so you will be expected to have a good understanding of the basic concepts and terms relating to Agile and how we are applying it here. To help understand the new practices and vocabulary, we are offering a three-hour overview which will cover everything you need to know.

This email still gets the point across that upper management believes that the training is important, and leaves the decision to attend the training up to the employee. It also makes it clear that the employee is responsible for knowing the content of the lecture, if they choose to attend or not. It treats the employee like a trustable adult, not an 8th grader.

They would have packed the house.

Not only would they have had a full class, the participants in the class would have been engaged and interested. Now the feeling of resentment, of not being able to choose, of being treated like a child instead of an adult, is gone. Instead, the participants are there because they want to be there, because they care about their job and the company.

If you make something optional, without question some people will choose not to attend. There might be several good reasons, maybe the agile training really doesn’t affect them in their current position (although they might want to learn it anyway, because, you never know). Maybe they have several years of experience with it in their previous position and have no need for an overview. Of course, there might be some that should come and do not. Some people, if given a choice, will make the wrong choice. It is possible that they might not be the right person for that job.

Making things like Agile training mandatory brings everyone down to the same level as the person who doesn’t care. Even those who take their job seriously, those who strive to be recognized as experts and craftsman are relegated to the same level as the guy who’s just there to collect a paycheck. The reasoning is understandable in a large organization, but unfortunate because of the number of missed opportunities to let those who care shine.


Imperfect Dock

April 5, 2011

Brent Simmons recently wrote about his dislike of the iCal interface in the latest developer preview of OS X 10.7. In his article, he says how the torn paper present in the interface of the latest build would eventually force him to find an alternative, because he would always want to finish tearing the paper off. What caught my attention in the article more than iCal was how Brent deals with the Trash in the Dock. He constantly empties the trash, a habit I share.

The trash is actually part of a larger problem, the Dock itself. I’m never happy with where I have it. At times I have it hidden, sometimes I have it on the left, sometimes on the right. It is like an awkward sweater that doesn’t fit quite right. It provides enough functionality that I want it around, but not enough for it not to bother me when it is.

A large part of the problem is how much vertical space the Dock occupies. If the Dock stretches across the screen, then I feel that I have too many apps in the Dock and the bright and often contrasting colors distract me. If the Dock does not stretch across the screen, then I feel that I’m wasting the pixels to the left and right of the dock. Those pixels remain empty when an application is “zoomed” to maximum.

Moving the dock to the left or right solves the wasted pixels problem. But, then I have another problem, how best to access certain functions of the Dock, like the Trash, like the Finder, and like minimized windows. If an application has more than one window open, minimizing one of the windows puts it out of reach of command-tab. At this point I either have to go for the mouse, or I need to call Quicksilver and think through what command I need to call to bring that window back to the screen.

The Dock is an annoyance. It’s too big not to be annoying, but too useful to get rid of.


Jekyll Bookmarklet

April 5, 2011

I have a handful of Automator scripts I’ve created to make maintaining this site with Jekyll just a little easier. The first script let’s me highlight some text on a web page and click a bookmarklet (or, more likely, hit the command+3 key combo), and the script creates a newly formatted Jekyll post with the highlighted text in markdown quoted syntax, and opens it in my default Markdown editor.

Here is how its done.

First, open Automator and create a new application with a single action: “Run Shell Script”. Next, copy and paste this script into the text field:

TITLE=`osascript -e 'tell application "Safari" 
set pageTitle to (do JavaScript "document.title" in document 1)
end tell'`

URL=`osascript -e 'tell application "Safari" 
set pageURI to (get URL of document 1)	
end tell'`

TEXT=`osascript -e 'tell application "Safari"
set selectedText to (do JavaScript "(getSelection())" in document 1)
end tell'`

QUOTEDTEXT=`echo -n ">"; echo -n $TEXT`

LINK=`echo -n [$TITLE]; echo -n \($URL\)`

NAME=`echo $TITLE | sed s/\ /-/g`
USERNAME=`whoami`
POSTNAME=`date "+%Y-%m-%d"-$NAME`
POST_FQN=/Users/$USERNAME/Dropbox/WebLog/_posts/$POSTNAME.markdown
touch $POST_FQN
echo "---" >> $POST_FQN
echo "layout: post" >> $POST_FQN
echo "title: $TITLE" >> $POST_FQN
echo "---" >> $POST_FQN
echo "" >> $POST_FQN
echo "$QUOTEDTEXT" >> $POST_FQN
echo "" >> $POST_FQN
echo "via: $LINK" >> $POST_FQN
/usr/bin/open $POST_FQN	

Note the line beginning POST_FQN. I have this site locally stored in a dropbox folder named “WebLog”, so you will have to change this line to point at your _posts folder. The rest should work fine. Save the script as an application somewhere that makes sense and quit Automator.

Next, drag this bookmarklet to your bookmarks bar: Blog This.

The last part is a bit of a hack, but it works well. You will need to let the operating system know that your new Automator app responds to the blogPost:// url scheme. So, find your Automator application saved from the first step, control-click on it and select Show Package Contents. In the new Finder window that opens, open the Contents folder and find the file named Info.plist. Right click on that file and open it using your favorite plain text editor, something like MacVim or TextEdit.

Find these two lines:

<key>CFBundleIdentifier</key>
<string>com.apple.automator.Post From Safari</string>

And add this directly underneath:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>Post to Blog</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>blogPost</string>
        </array>
    </dict>
</array>

Save the Info.plist file and close the Finder window. You should be all set. Highlight something on this page and click the bookmarklet.