Go2 1.3 Release Notes

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

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

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

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

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

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

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

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

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

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

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

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

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

Thank you.


Uncompromising

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

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

This is good.

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

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

Half-ass is not good enough.

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

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


Writing Online

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

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

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

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

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

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


A Glimpse of the Future

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

Atrix4

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

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

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

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

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

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

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


Personal Quality

My daughter had an ear infection. A common occurrence in children, so I brought her down to our local doctors office. The doctor took one look at her ear and knew what needed to be done. He wrote out a prescription, gave me a few instructions, and sent me on my way. I then had two choices, I could drive the twenty miles into the city to get her prescription filled by Walgreens, or I could drive seven miles over to the next town to see if the local pharmacy could take care of it. I decided on the shorter trip.

Walking into the pharmacy in the next town I felt a bit like McFly in Back to the Future. The front of the store is segregated by a few short isles of various ointments and creams, heartburn treatment and special insoles for shoes. Towards the center of the store is a small cafe serving soda and malts. The pharmacy is at the back of the store, adorned by relics of its past: an antique cash register, mortar and pestle, weights and scales, and an assortment of glass bottles that once contained the popular medicines of their times.

I walked to the counter and asked the teenager if they could fill the prescription. She looked at the slip and the doctor’s scrawl, asked if I had been there before, and went to ask the advice of the woman in the back. She soon returned and said that it would be just a few moments, and that the other woman was working on the prescription now. I walked around the shop a bit longer, taking note of the blood pressure testing machine and the variety of bandages on the shelf, and was soon called to the counter by the woman who had prepared the medicine.

After I paid the copay, I told her how glad I was that the little pharmacy was there. She smiled, said thank you, and then did something unexpected. She said, that since I have children, and that children sometimes got sick in the middle of the night, that she would give me both her home phone and her cell phone numbers on the back of her business card.

The woman was both the pharmacist and the owner of the little corner store, and the great-granddaughter of the man who opened the store over one hundred years ago. On the drive home I reflected on the choice I had made to visit the small town instead of the city, and it occurred to me what a difference in quality of service there was. Not only was the smaller store closer, I came away with more than expected. I could have easily lost two hours driving to the city, and had little to no interaction with the people mixing the medicine. The transaction could have been dry and remote, but was instead warm and personal. It felt good to know who I was dealing with, that they had a concern for the welfare of my children, and that I was supporting the local community.

Chain stores have increasingly replaced the small town, family owned store, and that is a shame. People stand to gain so much more by shopping locally. I now have the pharmacists home and cell numbers on our family bulletin board at home, and an assurance that I could call anytime, day or night. The personal touch she added to our business today is the essence of personal quality.


Text Editing in MacVim

The venerable BBEdit recently received a big upgrade, and looks poised to attract users of TextMate, which, by all accounts, has been abandoned by its developer. I tried to love BBEdit, but it always felt like trying on someone else’s clothes. They might look good, but that does not mean the clothes will be comfortable for you. Recent conversations about text editors on Build and Analyze led me to rethink my position, and examine in more detail how I came to choose MacVim.

Several years ago, I was sitting with a contractor as he installed a new firewall on our network. He was explaining to me how Unix systems relied on text files, and how all Unix systems came with a text editor named vi. I asked, in my ignorance, why anyone should bother using such ancient technology, when a modern graphical text editor was available. Pragmatically, he replied that someday I would be connected to a server through SSH or telnet and the only way to edit a file would be with vi. I took his advice to heart, and I am glad I did.

Over the years as I have dug deeper and deeper into Unix (and later Linux) systems, I accumulated a few of my favorite vi tricks which I kept in an exrc file. I had complicated macros that would do things like building the skeleton of a shell script, or insert a comment with my name and email address, or the current date. OK, maybe it was not that complicated, but every time I hit the mapped key combo, I smiled. I learned to navigate to an exact line in a file, to yank and paste text, and generally how to get along with the only text editor I could be sure was on each and every server I was responsible for. I did not realize it at the time, but I was building up valuable expertise, and, it seems, more importantly, a type of muscle memory.

In the past, I always kept my work on the servers separate from my “work” I did on my Mac. My Mac was a hobby, but work was important. When TextMate appeared, I downloaded a copy to use for building web sites. I enjoyed TextMate, but there was never love. Love takes time, frustration, and understanding. Love was what I was building at work with vi. I simply did not understand it at the time.

In fact, for many years I kept the attitude that vi was not a modern text editor. It was simply a tool for work and that on a Mac I should be able to use a graphical text editor that did lots of fancy tricks. It was not until this summer, after years of building my vi knowledge on the server that I decided to use vi for a Python programming course on my Mac. I downloaded a copy of MacVim, spent a few days configuring it the way I liked it, and, for what feels like the first time, felt completely comfortable in my text editor.

I had already overcome the biggest obstacle to vi: the learning curve. Slowly, over years of use, I had become fluent in one of the most powerful text editors available.

I will not go into the details of how to configure MacVim, there are several articles for that already. If you are interested, I keep my MacVim configuration in GitHub. What I will say is that taking the time to learn the basics of vi, and taking a few days, maybe a week, to find the magic combination of plugins and configurations that work for you, is worth the effort. MacVim is like a gateway drug. Once you get used to using it, you might find yourself attempting to navigate a new email in Mail with vi key bindings.

I am still learning new things with MacVim. There are precious few tricks that another editor can do that MacVim cannot. However, choosing MacVim is akin to choosing a partner to share your life. The more you put into the relationship, the more you get out of it. In any relationship, over time you become aware of the others shortcomings, but if the relationship is healthy, those shortcomings are very easy to overlook. If you spend serious time in text, it behooves you to spend serious time learning your tools.

MacVim is actively developed, has a dedicated community, is easily extendible, and can fly through the biggest text files with ease. However, it does take time to understand, and I will not try to tell you that the commands you use to control MacVim are intuitive or “easy”. Nothing worth doing is ever easy.


Mission Control

OS X Lion is a big step forward in personal computing, and, over the next few years, we are going to see a lot of our preconceptions about how computers work begin to melt away. Apple is setting a high bar for themselves and their developers. Lion is an ambitious release with ambitious goals that are going to take some time to actually come to fruition. However, as futuristic as Lion is, Mission Control feels like a step back.

Mission Control

One of the best features of the Mac since 10.3 been Exposé. Exposé became a part of my workflow so easily that I came to rely on it just by muscle memory. Exposé was always one of the gems of OS X that highlighted how different the mental model of using the computer was when compared to Windows. Unfortunately, with Lion, Apple decided to cut way back on the features that were available in Exposé and mash it together with Spaces. Spaces are Apple’s implementation of multiple desktops, a feature that UNIX and Linux desktops of had for decades. Spaces before 10.7 was fairly good, but I rarely used it.

One situation when I would use Spaces is during server patching. When patching servers it would not be unusual to have 20 or even 30 different terminal windows open at the same time, as well as a chat window, Mail, and Safari. With that many windows open at the same time I would use Exposé to keep track of them all, and I would use Spaces to keep all of the different terminal groups in their own space. On Snow Leopard and before you could activate Spaces, and then drag windows back and forth between Spaces even if you weren’t actually on the desktop that was active at the time. It didn’t matter, they were all equal.

Then, using Spaces’ 10,000 ft. view, you could see all of your Spaces, and all of your overlapping windows. It is interesting to note that this core functionality has not changed in Mission Control. Mission Control does still let you see all Spaces and all overlapping windows in them. In Exposé, the magic was that you could then hit the key command for Exposé and inside of each one of the Spaces, in real time, the windows would all zoom out into Exposé in each of their Spaces to give you a full view of every window in every space that you had opened. Exposé allowed you to drag-and-drop your individual windows between Spaces and watch as the windows in the new space automatically resized and rearranged to make room for the new arrival.

Mission control is almost Exposé; it does give you the ability to see different application windows, but what it takes away is the elegance of Exposé. Instead of a set of miniaturized windows, each a small, live updating thumbnail, mission control overlaps windows from the same application. Worse, applications windows overlap in the order they were used, which is wrong. If you think about it, when you are going into Exposé, you don’t want to see the application window you just used, you want to see the window that was active before you began using the window that you are currently in. I have always used Exposé to switch between tasks, not to switch between applications.

Also gone from Mission Control is the live nature of Spaces. You can only interact with the space you are currently in, you cannot interact with any other open space, except to switch to that space. That is a step back, no matter how you look at.

I can understand why some things needed to change and Spaces. In Lion, the three finger swipe gesture between Spaces would not have worked with Snow Leopard’s implementation of Spaces. With Snow Leopard, Spaces occupied a two-dimensional graph, both horizontal and vertical. Spaces could be either up or down, or left or right. In Lion, Spaces are only horizontal. This works because the best way to move between Spaces is the three finger swipe from left to right, or from right to left. On Snow Leopard Spaces, to be able to use gestures, you would also have to be able to recognize a three finger swipe up for the space above, and a three finger swipe down for the space below. In Lion, those gestures are already accounted for. Not to say that it could not work, but I could see users becoming easily disoriented as to which space they were in, and which way they should be swiping. With Mission Control, when you reach the end of available Spaces, the desktop bounces slightly, a move clearly reminiscent of iOS. However, what does not make sense to me why Apple decided to change Exposé in a way that is clearly inferior.

With that being said, I love the three-finger swipe gesture to activate Mission Control, but I do wish I could see the full Exposé. I find myself using Spaces a more now than I ever did before. I do not use them as additional desktops but I do always have a space open for iCal, another for iTunes, and maybe another for mail. It’s good to see improvements in Spaces, but it is unfortunate the improvements had to come the cost of the most sophisticated window management system on any platform.


Keyboard Driven Safari Update

Since writing Keyboard Driven Safari I’ve updated my list of extensions that make Safari my browser of choice.

The combination of shutup.css, YouTube5, and uTube makes for a great experience viewing videos on YouTube. No comments, a very nicely centered layout, and high-quality 720p h.264 video. Beautifier and Optimize Legibility are both very small, and insert some simple css into each page to enhance typography and font rendering for a better reading experience on sites that may not think of these things on their own.

When reading a Wikipedia article on my MacBook, the experience is similar to using Instapaper on my iPad, thanks to Beautipedia. Absolutely gorgeous. I’m not entirely sure I need Incognito, but the idea of being tracked by some gigantic, faceless corporate entity just feels wrong. Incognito blocks Google Adsense and Google Analytics, as well as Facebook tracking.

The next two extensions are new to the list: Type-To-Navigate and Invisible Status Bar, both by Daniel Bergey. Type-To-Navigate lets me type the characters in a link, and hit the return key to “click” the link. Previous to installing this extension, I would use the Safari “find” feature to quickly find a specific link on a page, and then click on the link with the mouse. Type-To-Navigate removes two steps from the process, and the results are fantastic.

Invisible Status Bar borrows from Chrome, and allows me to hide the status bar, while still being able to hover over a link to see the full URL. Very nice to have when reading through long text, and deciding if a link is worth following or not.

The last extension I use is the fantastic 1Password. 1Password is the one of the first three apps I install on a new Mac, and the first I install on a new iOS device.

Dropped from the list is Google Search Cleanup. I’ve switched most of my search to DuckDuckGo, thanks to outstanding keyboard navigation (it supports vi keyboard bindings for navigation). DuckDuckGo is a very small operation taking on giants, I can’t help but root for the underdog.


Stereotypically

Apple makes great products, and Brooks Brothers makes great clothes, but neither make the man. It is pure foolishness to judge another person at all, much less using a measure as trifling as a choice of computer.


Letter to Lotus Notes Developers

I have some issues with the design of Lotus Notes. I’m a relatively new user, I started using Notes in 2006, and at the time we were using 6.5 on Windows. I’ve since upgraded to 8.5.2 on Mac OS X.

The very first thing that strikes me is the default “new mail sound” on the Mac:

Your browser does not support the audio element.

Now, imagine hearing that sound several times a day. I eventually got tired of having my Mac muted, and copied the new mail sound out of Mail.app and into Lotus Notes. Here is how it sounds now:

Your browser does not support the audio element.

Much better. The original sounds like a carousel at a carnival or something. I would love to hear the rational behind that sound.

Secondly, there are preferences. Lots and lots of preferences, spread all over the place. Each day I start Notes at work, and someone will send me a link to a web site. I’ll click on that link, and each day an error will pop up saying “Unable to launch program”. I click “OK”, and then remember that I need to set my default browser in the Notes preferences. That is not a design issue, that is just buggy software. The design issue here is where I need to go to find the preference to change the default web browser.

On a Mac, all well designed applications’ preferences can be opened by pressing the key combination “Command + ,”. Notes also recognizes that key combo, but only opens a subset of the available preferences called “User Preferences”. The User Preferences are also available under a submenu named “Preferences” under the main Lotus Notes menu. In addition to the User Preferences, there are also menu options for Toolbar Preferences and Status Bar Preferences. Each menu option opens up a similar looking window with a plethora of options for changing different aspects of Notes’ appearance or functionality. None of the options change the default browser.

Under the “File” menu, where only functions relevant to the currently opened document should appear, there are four more menus leading to submenus for additional preferences: Application, Replication, Locations, and Instant Messaging. Under the Locations menu, there is a submenu option to “Manage Locations”. This opens a new tab in front of the mail applications tab in the main window of Lotus Notes. Double-clicking on “Online” opens up a third tab with options defining how my Lotus Notes client connects to the Lotus Notes server. This tab has sub-tabs. The fourth sub-tab over is labeled “Internet Browser”. Clicking on this tab shows a screen with one option for choosing the web browser. Double clicking on the name of the browser, or clicking on the edit button towards the top left hand corner of the locations tab will show a drop down menu. Clicking on the drop down menu does not drop down a menu, but opens up another window where I can then choose the default browser. Then, I need to click “Save & Close”, close the Locations tab, and then I’ll be able to click on the link.

This is completely unnecessary. Mac OS X keeps the default browser settings, so all an external application needs to do is pass a URL to OS X (via the NSFileManager class, if you are into Obj-C), and the OS will launch the appropriate application to handle the protocol.

This doesn’t even begin to get into other standard Mac practices like pressing Command-N to start a new email (Notes tries to create a new application?), the lack of spotlight integration, or the fact that none of the controls are standard controls. No syncing with Address Book or iCal, and the text fields do not inherit the standard NSTextField or NSTextView functionality. The UI is literally surrounded by buttons. Lotus Notes is a very powerful application, but all I want to do is check my email and calendar. Every now and again I use it to send a time-off request.

I understand that Notes has a long history, and I understand that it is a cross-platform application. I’ve also read the paper(pdf) on the redesign of Notes, and commend the team on bringing Notes this far. However, I believe the application has a long way to go, assuming a goal of Lotus Notes is to be a viable mail application on Mac OS X, and not just what the company forces the user to use.

I’m willing to help in any way I can.


Found On The Path

I woke this morning at 5:20, got dressed, and went outside for my morningworkout. Today’s weather was beautiful, perfect temperature, and the smell offresh rain. Lately I’ve been riding my bike, a Schwinn that is neither strongenough to be a mountain bike, nor sleek enough to be a road bike. I would callit a “small town bike”, as it gets me around all four corners of our smalltown.

I rode down the street, fast down the slight decline, feeling the wind on mycheeks, blowing the last of the sleep from my mind. I slowed down a littlegoing up a slight incline, starting the muscles in my legs working for the day.Across the highway, down a few cross roads, until I came to the city park,my favorite part of the ride. The park has a small pond with a path around itand a bridge over it. Sometimes I see frogs jump into the pond, and twice nowI’ve seen a large bird I believe to be a stork on the far side of the pond.

As I rode around the pond I was distracted by something in the path, somethingfairly large. Large enough that I was sure it was not supposed to be here. Thiswas unusual. As I rode closer I saw that it was a blanket. My first thought was“why would someone leave a blanket out here”. As I rode closer I began to thinkthat it was shaped oddly like a man.

My thoughts raced back to New Mexico, where I found a man, drunk, lying in thestreet. He was unconscious, and looked as if he had fallen face-first into abusy city street off the curb at a bus stop. His companions at the bus stopsimply looked at him, and continued to wait for the bus. I was driving by onthe way to work, but stopped to help.

Gliding by the oddly man shaped blanket I glanced down at it and thought Icaught a glimpse of skin under the blanket. I stopped my bike, got off a fewfeet past it, and could see a bare foot uncovered. I started to feel anxious.There was someone there. I took a small step towards the blanket, thinkingabout what I would do if it were a homeless man sleeping. I had decided to stepup to the blanket and ask if whoever was inside needed help. If it were a hobo,he’d probably say no and yell at me to leave him alone. I did not want to getyelled at, but I also did not want to leave someone if they needed help.

I looked again at the foot, and something about it struck me as odd. Even ahobo would probably have shoes, and this foot looked oddly clean, well kept,and small. A horrible thought ran through my head, something worthy of theopening scene from a prime time crime drama on TV. All of these thoughts racedthrough my head in the course of a few seconds as I took another step towardsthe blanket. Then, the blanket was thrown back, and a voice greeted me.

“What’s up? Did you think we were dead?”

Of course. Under the blanket were a pair of teenagers. A boy with a bright,fake diamond earring, and a girl with pink hair. I have a feeling I know whatthey were up to under there.

“Wasn’t sure.”

I replied.

“Naw, just chilling.”

Said the boy.

The girl giggled. Feeling slightly embarrassed at interrupting their ill placedchilling, I looked at the pond, then looked at the sky, then said:

“Nice place.”

Then got back on my bike and continued on the path.

Another mile down the road I saw two rabbits.


The Experiment

The Experiment

Ideas, Stress, and Time

I remember someone saying once that ideas were worthless, and onlyimplementation mattered. I disagree. Ideas have power, and depending on whoyou 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 canconsume me. I may do nothing about it for days, weeks, or even months, andthen, seemingly suddenly, put all of my time and energy into it in one bigexplosion. During the time leading up to the creation phase, I’m thinking. Atnight while I drift off to sleep, during the day when there is a lull in mywork flow, during all the little times that something else is not occupying mycognitive functions, I’m thinking about my idea. I consider the idea, I pokeit and prod it from as many different angles as I can until I get to a pointwhere I know how to make it real. Or, at least as real as my limited knowledgebase can facilitate.

My problem with the thinking/creating loop is that what I’m thinking about andwhat I’m creating may not be what’s best for me at the time. The offsetbetween what I should be thinking about and what I actually am thinkingabout creates unnecessary stress in my life, and makes it harder toconcentrate on things that I need to be concentrating on, when I need to beconcentrating on them. Having an idea that may lead to the accomplishment of alife-long goal is a wonderful thing, if the idea comes at a time when a personcan 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 atIowa State University. When I finish this semester I’m in the middle of rightnow, I’ll be at the half-way point. The program is entirely online, so I cancontinue to work at my day job as a systems administrator while I work atnight on my assignments. The course load is more than I was expecting, and thecourse work takes far more time than I thought I would need. I spend severalhours on the weekends, and several nights each week studying. Some classeshave been a lot of fun, others have felt like pushing a bolder up a hill. I’mlucky enough right now to have two classes that I’m enjoying, one onprogramming in Python, and another on the fundamentals of design.

My hope for the Masters degree is that it will lead to exciting newopportunities in the future. Something that my experience as a systemsadministrator alone would not. While I enjoy my work, I feel like I could domore, and I do not feel like it is ultimately going to fulfill that life-longgoal I was referring to above.

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

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 onlything I started last Fall. I also started FarmdogSoftware.

Farmdog

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

Farmdog Software has been my dream for a long time. Since first working withmy mentor back in England, and learning how he started a successful consultingbusiness, I’ve wanted to work for myself. I’ve been dreaming of working out ofmy home for twelve years, and my hope with Farmdog was that it would be thecatalyst that would finally help me achieve that dream. It has not. It isentirely my fault. I see where I’ve made mistakes, and how my timing wascompletely off. Underestimating how much time it would take to run thebusiness, and how much time it would take to go to grad school has left me mestressed, unhappy, and drained. My family, my boss, and I all deserve betterthan that.

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

So, Go2 1.3 is not going to be submitted to the App Store. Farmdog Software isgoing 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, ifI could become an “indie developer”. I accomplished what I set out to do, butnot well, and not with the kind of dedication the endeavor deserved. As anexperiment, we will call Farmdog a success, and a proof of concept that, giventhe 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 onfinishing 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 isnot being abandoned. When I finish my Masters degree, I am going to returnto Cocoa with everything I can muster. I am going to leave Go2 in the AppStore, it generates one or two sales a week, and if people find it useful Isee 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 ina holding pattern until I return.

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

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

As I write this, I feel relieved, but the real burden was lifted as soon as Imade 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

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

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

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

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

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

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

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

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

The other day Benjamin Brooks, from the excellent BrooksReview, tweeted the results from a personality testhe had taken. Brooks, like myself, is anINTJ. Thetweet made me wonder if my personality had changed over the years, and if Itook the test again if I would get the same result. So, I did and so… I am. Myresults did not change. The test still classifies me as an INTJ. The testresults were not nearly as important to me as reading portions of the profileto 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 INTJsare apt to express emotional reactions. At times, INTJs seem cold, reserved,and unresponsive, while in fact they are almost hypersensitive to signals ofrejection from those they care for.

When I was a child, I was part of the “Gifted and Talented” project. As partof the project, I saw a counselor, who did several tests. The counselorpredicted that I would have few friends, but the friends I had would be veryclose. 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 asbeing important or relevant somehow, I forget them almost immediately aftermeeting. I do not do it to be a jerk; it is just how my mind works. On theother hand, I still know where my best friend from high school is, and if heshowed up at my doorstep tonight, we would spend the rest of the night gettingcaught up.

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

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

That last sentence might seem out of place for me, considering my militarybackground. My friends from the Navy would know that it hits the nail on thehead. There was more than one Chief I went toe to toe with, and since I wasoutranked, I usually lost. I was in the Navy, and I loved the travel andopportunities it gave me, but I never quite fit in the Navy. Some fit in theNavy 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 elevenyears 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 ofmy personality has not. I still care deeply for my loved ones. I still keep myspace neat, clean, and organized. (As a side note, my parents never had totell me to clean my room. I kept it the way I liked it.) What I have learnedin the past few years is how to push myself outside of what I am good at, andinto things that make me uncomfortable or are simply not my strong point. Likeworking on home improvement and music, and even saying yes, every now andagain, when asked to go to lunch.

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

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

All quotes from this article were taken from the Wikipediapage on INTJ.


Mandatory

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.


Jekyll Bookmarklet

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.markdowntouch $POST_FQNecho "---" >> $POST_FQNecho "layout: post" >> $POST_FQNecho "title: $TITLE" >> $POST_FQNecho "---" >> $POST_FQNecho "" >> $POST_FQNecho "$QUOTEDTEXT" >> $POST_FQNecho "" >> $POST_FQNecho "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](javascript:location.href=‘blogPost:url='+location.href+‘title='+decodeURIComponent(document.title)).

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.