0 articles

The Future of DevOps is AI

The work of systems administration, that is, racking new hardware, running cables, and loading operating systems, is quickly becoming eclipsed by devops. Servers come from the factory ready to rack, and the base operating system has become nearly meaningless in the context of running applications thanks to Docker. All you need is a baseline Linux install, the specifics of what each application needs to run are taken care of inside the Docker container.

What's a Computer?

I’ve been enjoying watching the new iPad commercial of a kid and her iPad roaming around the city. Two things come to mind. First, is this what it’s like for kids in the city? Having never lived in one myself I find it fascinating that she just roams around, takes the bus, hangs out in an alley, whatever. Second, and more important, is what she’s doing with that iPad.

Veterans Day

I gave a talk at our school Veterans Day assembly today. I didn’t get everything I wanted to say in, but it seemed to go over well.

Two Months With iMac Prime

The 27” iMac 5K is unquestionably the best computer I’ve ever owned. After two months of daily use, for twelve to fourteen hours per day, I can say without reservation that this machine is fantastic. Obviously, I’m late to the bandwagon on this, better reviews than what I would write have already been written, and although those reviews are from 2014, they hold up well enough for the 2017 upgrade too. The screen is beautiful, like a massive glossy magazine. The machine is fast enough so I nearly never have to wait. Basically, it’s everything I need from a computer.

My Favorite Things About Fall 🍁🍂

Top Four is one of my favorite podcasts. Possibly my number one, although its probably tied with ATP and The Talk Show. It’s a strong contender. Marco and Tif Arment chat about some random group of things, and attempt to rank said things, usually failing because they can’t make up their minds. It’s adorable. It’s clear that the two of them are having a good time, and listening always makes me laugh.

The City Museum

I’m in St. Louis for the Strange Loop conference, and the conference kicked off last night with a party at the City Museum. I didn’t bother to look into the museum much before I came. A few friends told me a bit about it, but it wasn’t enough for me to really understand what the museum was; the City Museum isn’t a museum, its a mad amusement park.

Running Again

At the beginning of Spring, I signed up for two races, the half-marathon Dam to Dam in the summer, and the full Des Moines Marathon in October. This was my second half, but I’d never come close to a full marathon, so signing up for it was aspirational motivation. I was training with a group running long on Saturday mornings, so as the time for the half approached and I started thinking about the full, I was feeling more and more confident that I would actually be able to run it. Then I ran the half, and things went wrong.


I can find no objectively positive outcome to arguing about politics, and even less to obsessively following it on the news and social media. Every day, several times a day, I find myself online, checking to see what the latest horrible thing Trump said or did was. Then I browse the right-wing sites to see how they spin it to a positive, and call everyone else blind fools or liars. Sometimes I read the comments, which are filled with name-calling, off-topic rants, half-truths, misdirection, and outright lies. I read this, and I get angry.

This Cannot Stand

Let’s get something straight right off the bat. If you are siding with Nazis, you are wrong. Full stop.

Serverless Jekyll Hosting on AWS

This is a bit silly, I’ll be the first to admit. The contraption I’ve built to host this site is clearly unnecessary, especially when I could host the site on Github for free, with very little effort, but I was curious, so down the rabbit hole I went.

Recommending a New Mac

I got an email from my mom the other day asking me for a recommendation on a new Mac. The first question I asked was what her budget was like. She said she’d like to keep it under a grand, which right away narrowed the field quite a bit. Next I asked what she would be using the machine for, to which she replied with the standard home use cases of “income taxes, email, scanning, internet, etc”, as well as printing to a Brother ink jet.

My Next Mac

So, yesterday I cleared off my desk and tried to work with nothing but my MacBook again. No standing desk, no external monitor. It looked great, but honestly, it felt terrible. I wound up hunched over the desk staring down at the screen. After an hour or so of this I decided, yet again, that this style of work is just not appropriate for me.

Install Gems Without sudo in macOS

I came across a neat little command line tool via Rob Griffiths’ Robservatory this morning, a Ruby gem named iStats1. Install is easy enough in Rob’s example, sudo gem install iStats, except that when you use sudo to install gems you are using the default macOS Ruby, and installing to system paths.

  1. As Rob points out, this is apparently not associated with iStat Menus

Beware of VPNs

I’ve seen quite a few smart people recommend using a VPN service in the wake of the U.S. government’s decision to repeal privacy rules for ISPs. Unfortunately, I find this advice to be a bit misguided, or at least ill-informed. You can move your risk around, but in the end this comes down to an issue of trust, and avenues of recourse.

Daring Fireball - The Mac Pro Lives

Apple is currently hard at work on a “completely rethought” Mac Pro, with a modular design that can accommodate high-end CPUs and big honking hot-running GPUs, and which should make it easier for Apple to update with new components on a regular basis. They’re also working on Apple-branded pro displays to go with them.


I woke up at four this morning thinking about politics, community, what I think the role of government should be, and how disappointed I am with our political choices in the past year. I don’t understand why so many people voted the way they did, especially christians, but I know that there is nothing I can do about what happens now. Not until the next election cycle in a couple of years anyway. Spending so much time thinking about it is not healthy, so I’m letting it go.


The book of Philippians is such a beautiful, and challenging book. This is what I needed to hear tonight:

The Life We Live

My daughter’s cheerleading coach passed away last night. What was first thought of as diabetes turned out to be an extremely aggressive cancer that took her after only a few months. She was only ten years older than my wife and I. Her family, and our community, will be grieving deeply for her loss.

Eero and Disney Circle

tldr: If you have a Circle device and an Eero mesh network, plug the Circle into the Eero connected to your modem with an ethernet cable.


In Nineteen Ninety-One, I was a freshman in high school, living in a tiny house in small town Montana. Just me and my mom. My family, like so many at the time, had fallen apart. We had moved around a lot, I felt odd and out of place. I was angry, full of teenage angst, and generally pissed off at the world for the hand it dealt me.

This is What Democracy Looks Like

On November 8th, 2016, approximately one-third of the American people decided that morals, character, and family values didn’t matter anymore. Or at least they didn’t matter enough to keep them from voting for the most unqualified presidential candidate in history, Donald Trump.

On Computing Tomorrow

I’ve been thinking more about my defense of the Mac as a long-term computing platform, and I’m slowly coming around to understanding that at the base of my ideas is a type of willful ignorance that I should know better than to indulge in. The world is changing, computers are changing, and how we work and interact with them is changing drastically. To get to the root of this, let’s follow the five “whys” of why I need a Mac to work.

Future Viability of the Mac

Despite aspirations of expanding my fields of interest and adopting new hobbies outside of technology, my day-to-day work gets done on a Mac. I’ve got a vested interest in the Macs continued survival, I’m one of those “truck drivers” that uses their machine for all it’s worth, and would have a difficult time transitioning to anything else. In my job I need to run shell scripts and build Docker containers, I need to ssh to Linux servers and RDP into Windows instances. I need to write, edit, and run Python code that connects to a database through a ssh tunnel. I need to do things that are either difficult or simply impossible with iOS, but are dead simple1 with a Mac.

  1. Well, dead simple in the sense of “if you have nearly two decades of Unix experience under your belt”. 

What Worked, and What Didn’t in 2016

Part of what’s been great about using Apple products is the feeling of living just a little bit in the future. The Mac, iPod, iPhone, and iPad paved a way towards a far less complicated future, where technology was seamlessly integrated into our lives, and enhanced our day to day interactions with our work and with each other. Apple, better than anyone, understands that technology is at it’s best when it’s nearly invisible. But, living in the future comes at a price, namely a sacrifice of stability and accepted norms of what works.

The Recipe

From time to time I wonder if I could get by without any 3rd party software installed on my Mac. What would I have to do to adopt to not using the software I’ve become accustomed to? In no particular order, as of this moment I’ve got:

Ten Billion Reasons Why

What could an organization comprised of some of the smartest, most driven people on the planet do with ten billion dollars in a year? Apple increasing their R&D budget five-fold over the past decade is interesting, but the numbers they are talking about are not uncommon in the rest of the tech industry. What I find noteworthy is the comparison with NASA.

More Phish

This is fantastic, pure Phish. I’m so glad that they’ve just been getting better over the years.

The Dancer

We humans are complicated creatures. I run for miles at a time, even though I’ve got nowhere to go, and nothing is chasing me, nothing but time and old age. Some people collect stamps, others watch birds; there’s no end to the ways that we occupy our time. Some people write stories, or draw, or paint, or make pottery out of clay. Some people write poetry. My daughter, my oldest, spends her time practicing the ancient art of dance.

Homecoming Night

One of the surest ways I know I’m well on my way to crotchety old man status is not the grey in my hair, but my gut reaction to a certain tradition in our small town. To celebrate homecoming, our high school cheerleaders and dance team spends the night covering the high school football players houses, cars, and possibly yards with toilet paper, saran wrap, and plastic forks. They call it tradition, I call it vandalism, but, like so many other things in this tiny Iowa town, I’m simply outvoted.

The Moon is a Harsh Mistress

Amazon Prime really is the gift that keeps on giving. My latest discovery came in an email announcement from Amazon that they were making a selection of audiobooks from Audible available for free to prime members. All I needed to do is download the Audible app to my iPhone, log in with my Amazon credentials, and take my pick of titles to stream.

Thinking it Through

My favorite new-to-me site is Farnam Street by Shane Parrish. I’ve been experiencing a slow change of interests over the past several months as Apple and tech related news fails to grab my attention. The last time this happened I lost more than a professional interest in the open source community, an area I left years ago and haven’t looked back. I can’t find it in me to care enough about iOS 10 to read the book-length treaties on it at MacStories, in fact the latest iPhone or iOS barely interests me enough to learn what’s in it and if it is anything of use to me.

Studying in the Pit

I just started reading Cal Newport’s Deep Work and I’ve found myself nodding along in agreement through the introduction and first two chapters. His description of the environment needed for intense, concentrated study reminded me of a time I went through a period of deep work, one that is unfortunately difficult to replicate.

The September Apple Event

Another keynote came and went yesterday, and there was nothing I could do after it was over. I couldn’t order the new iPhone 7, or upgrade my current iPhone to iOS 10. I couldn’t buy the new Apple Watch, and even the new iWork collaborative editing features are in new versions “coming soon”. When I tried to download the new Mario game, the App Store let me know I’d be notified when it was available. After everything was announced yesterday, today I’m wondering what the point of having the event when they did was.

Files and Folders

I started writing this post talking about how I was using DEVONthink, and, as often happens when you write things down, I started thinking critically about how I interacted with the application. I took a folder full of screenshots, walked through some usage scenarios, and checked and double-checked what I was actually doing with the application. Then I exported everything to the Finder.

American Politics

The truth is, American politics are terrible. We have a two party system, and neither party is one I can truly embrace.

Write it Down

If you really want to remember something, write it down. By hand.

Life Long Intellectual Pursuits

I’ve always been curious. I remember having coffee with my cousin and her boyfriend as a teenager and saying, in my naïvety, that I wanted to know everything about everything, to know all that was knowable. Even then I knew that was impossible, but that didn’t stop me from wanting to know as much about the world as I could. As time went on I started to dive deeply into different subjects, and put off others till I had more time. Now that I’m looking at forty and an ever growing list of things to learn and do, I’m experiencing something new… panic at the thought of running out of time.

How to Pick The Right App

Computers are complex tools; designers and developers are always trying to strike a balance between usability and usefulness. I have a theory that over time a computers configuration grows to resemble the mental state of its primary user. Each machine is a unique mix of file and folder organization methods, naming schemes1, and application choices. Those choices can reflect the level of technical knowledge and values of the user, but only if the user has made a conscious choice in what apps to use.

  1. Or the lack thereof. 

Voicemail to OmniFocus Workflow

I got back from my morning run today and was sitting on the back porch, enjoying the morning air and the feeling of contentment I get after a great run. I logged my run in Day One, and noticed a voicemail from yesterday that I hadn’t dealt with yet.

Overload and Archive

A few years ago I adopted David Sparks’ paperless workflow. I installed Hazel and TextExpander, bought a ScanSnap scanner, and started dutifully scanning all of my paper that came in the mail. I scanned the water bill, my bank statements, and notices from my son’s second grade teacher about upcoming snack days. Over the years, and 2000 documents later, I’ve got a massive database of useless facts.

BBEdit and Python Tags

I’m in the process, a very long process, of switching from Vim to BBEdit as my primary editor. The reasons are long and varied, but boil down to me being tired of screwing around with Vim’s configuration. I do a lot of work in Python now, and I’m using the experience of building and maintaining cloudchain to learn how to navigate BBEdit. Hopefully, someday I’ll be as good here as I was with Vim.

So Humble

Trump is dancing in the absurd now.


Today, the team I’m a part of at TargetSmart is releasing our first open source project, a bit of Python I like to call “cloudchain”. cloudchain is designed to make it easy to store and retrieve secrets using AWS. cloudchain relies on the AWS Identity and Access Management (IAM) Key Management Service (KMS) to securely store and manage access to encryption keys, and stores the encrypted secret in a DynamoDB table.

Standing Desk Review

For the past two months I’ve been working, on and off, with a Rocelco Height Adjustable Standing Desk Riser, a less expensive choice for working at a standing desk than the popular VARIDESK. The Rocelco is a solid alternative for budget conscious workers, but as with most products, the drop in price comes with a set of trade-offs.

Manton's Stickers

I was listening to Core Intuition a few weeks back and Manton said that if anyone was interested in his project to let him know, and he would send a couple of stickers. I was interested, so I emailed him a quick note, and quickly forgot about it.

Why Blog?

Monday I was offered a new position, yesterday I accepted it. I’m hoping that this is the last time I’ll have to look for a job for a very, very long time. Having an unexpected change in your career and having to search for a new job is one of the most stressful things a person can do. It was hard, I didn’t sleep well.

Making The Move From Sysadmin to DevOps

Everyone’s professional path follows a slightly different trajectory. We are each a unique recipe of skills, experience, and interests, which shape who we are and how we come to be in the careers that we have. My experience in moving from a systems administrator to a devops role is unique, because, well, we are all unique.

DevOps & Evolving Systems Administration

The phrase “DevOps” gets thrown around quite a bit, so I thought it might be helpful for me to write down exactly what it means to me. DevOps is the evolution of systems administration. A few years ago, I noticed that the SysAdmin field was finally starting to change, after years of being relatively static. For decades, A sysadmin would set up the hardware, install the operating system, setup SSH (or, telnet in the bad old days), install your application, and get it running. Even when virtualization became more mainstream and worked its way into production workloads, it didn’t change the core tasks of a sysadmin. There were simply more boxes to manage, and without appropriate configuration management, each virtual machine became a unique little snow flake. A few tools became more commonplace like CFEngine, Puppet, or Chef to ease the burden of virtual machine sprawl, but it wasn’t until cloud computing came along that the role of a sysadmin really started to change.  

Everything Changes

And everything is changing for me again. The CTO of the company I work for spoke with me yesterday, our office is being shut down and they are laying off the staff. I’ve got till March 1st to find something new.

Mac Power Tools

My brief experiment with mutt ended mostly how I expected it would. With me turning on my email in Mail.app again and carrying on as normal. I try to understand the draw to using such an archaic tool as mutt, but there’s simply nothing about it that appeals to me. Not at this stage of my life anyway.

Power Tools

After reading through Matt Gemmell’s latest post on mutt and the good doctor’s response, I fired up my old mutt config and gave it another run through. Well, after being a bit snarky on Twitter, of course.

Mac Magazine

Sometimes I think I’d like a really great magazine, like The New Yorker, but for Mac geeks. A beautifully printed, monthly magazine with all the best news, tips, opinions, analysis, predictions, and howtos from the Mac community. I’m not looking for what Macworld used to be, I’m thinking more along the lines of The Atlantic. Something classy, something worthy of printing and keeping out in the living room under the coffee table. Something I’d look forward to reading cover to cover every month.

Winning NaNoWriMo

So, I won NaNoWrimo, and wrote a “novel”. Although, it’s not really a novel, more like a novella, and it’s not really written just yet, it’s 50,000 words that somewhat make up a complete story, but with more plot holes than you can shake a stick at. Couple that with the number of inconsistencies in the world building, flat characters, characters who’s names I forget half way through the writing, and two chapters that I decided I was going to throw away completely, and you’ve got what is colloquially known as a first draft.

US Cellular Strikes Back

Let me start by saying that US Cellular has the best coverage in Iowa. No matter where we go in the state, we’ve got a great signal, almost always in LTE. My Internet access is fast, and I can’t remember the last time I dropped a call. The cellular service is great, and the only reason I stick with US Cellular. After days like today I need to remind myself of these facts, because almost every time I interact with them face to face, on the phone, or over the Internet I leave frustrated and feeling like I’m being duped.

Faith, Hope, Love

What if Christians actually lived the way Jesus commanded us to?

Moby Dick

I’ve been slowly working through my list of books, and Saturday I finally knocked another one off the list, Moby Dick. Herman Melville’s whaling epic took me a while. Inside those 663 pages, there’s probably a good 300 page book, as it is, Moby Dick covers both the human condition and the intricacies of butchering a whale in the middle of the ocean.

Standing Around

I was having problems with my lower back, not an uncommon issue, especially for those of us who spend our day staring at a computer screen. My problem was exasperated by my poor posture in my chair. I tend to slouch after a couple of hours, and then slowly slide lower and lower into my chair until, at the last moment before I fall out of it, I reposition myself and sit up again. I also run in the morning, and I rarely have time to stretch properly after a run, a bad habit that needs to be addressed. By the end of the day I’d stand up and crack my lower back three or four times, and know that if I turned in the wrong way I would be out of commission for a week or so while my back untwisted itself.

NetNewsWire 4

I’m not sure if I discovered Daring Fireball through NetNewsWire, or NetNewsWire through Daring Fireball. Either way, in my mind the two are inexorably linked to my introduction to the Mac community. A group of people who value usability and good design, typography, readability, and simple good sense. Before the Mac, my thoughts on software were that it was either written by thousands of contributors across the globe, or thousands of drones in basement cubicles. What I learned through NetNewsWire was that individual craftsmen made the best software, and I could get to know them through their work. I started making it a point to follow the people who made the software I used.

Starting a New Post With Automator

Automator is one of my favorite tools on the Mac, and unfortunately one of the most unappreciated. I have several workflows and services that I’ve built up over the years, things that I could have turned to a third-party tool like Keyboard Maestro, Alfred, or even my beloved Quicksilver for, but I like the simplicity of using a built-in application.

A Runner

My workout this morning called for five miles. Run two, walk one, run the last two. I think in the Fall or Spring it would have been fairly easy, but today, in the July heat and humidity, every step felt like dragging a pair of anchors. My muscles gave out sooner, my breath ran out faster… it was a hard workout. I finished it though, because what I’ve learned is that even when it’s hard, even when you are having a tough time and not going as fast as you’d like, you always have to finish.

On Computing

I often daydream about not caring about my computer, and being able to go blissfully through my life with little concern about the mix of applications, storage of data, and how I interact with the machine, but that’s just a dream. The truth is I do care. I care a lot. I care enough that I’ve developed my own personal philosophy of computer use. I use this to determine which services and applications I will most likely be happy with. It helps me, maybe it will help you too.

Smartphone Cost and Value

iPhones are expensive. Well, not just iPhones, all smart phones, Android, Windows, what have you. These little gadgets that we can walk out of a Verizon store with without paying a penny now wind up costing thousands later, once you consider the total cost of ownership. This is especially true if you are paying for an entire family, possibly one with two teenage daughters with phones of their own.

Select A Column of Text in MacVim

I often need to work with columns of text; output from commands, text grabbed from a web page, what have you. Since I have a somewhat odd aversion to using a spreadsheet like a normal person, I discovered, nearly by accident, that I could easily select a column of text in MacVim.

Research Kit and the GPL

Apple released ResearchKit as an open source project on GitHub today. The project is complete with pull requests, a wiki, and a few sample projects to get started. While the project is great in its own right, it was the context of this tweet by Daniel Jalkut that caught my eye:

The Invisible MacBook

A thread of minimalism weaves through Apple’s products, starting with the Bondi blue iMac and flowing to the Apple Watch. One could argue that the minimal thread weaves back to the original Macintosh, a single, all-in-one device that made computing accessible, but I think the theme is most visible when looking at the modern age of Apple. Jony Ive’s designs have consistently focused on aesthetically pleasing, usable design. A concept that simultaneously puts the device at the center of our day, and almost makes it disappear. Technology is best when it is nearly invisible. The Apple Watch may be the culmination of this invisible tech, but it’s the new MacBook that I believe embodies the design philosophy of Apple best. When the lid is closed on the new 12” Retina MacBook, it’s so small and light that you hardly know it’s there.

Word Lookup Changes in 10.10.3

Yosemite 10.10.3 brought a few subtle, but welcome changes to the interface used to look up a word. I normally access this by tapping on a word with three fingers on the trackpad, or right clicking the Magic Mouse and selecting “Look Up”. Since I often read above my level of comprehension, I use this feature all the time.

The New MacBook

The tech world is once again loosing their grip after Apple has gone, as they see it, too far, too fast with the new MacBook. They can think of a thousand reasons why the Mac’s single USB-C port is a deal-breaker for any sane person. The single port is too restrictive. What if I want to hook up a USB mouse while I’m charging? Why isn’t there a removable battery? Why can’t I expand the storage? Less space than a Nomad. Lame.

Reading at Night

A couple years ago I started reading classic books to my boys before bedtime. We started with The Adventures of Tom Sawyer, then Adventures of Huckleberry Finn, followed unsuccessfully by Twenty Thousand Leagues Under the Sea 1. Next, we read one of my all time favorite books, Treasure Island, the classic pirate story from which nearly all other tellings of pirates are cribbed. We might go back and read that one again someday.

  1. I’m a bit mystified by people who enjoy this book. My boys and I found it quite boring, and I wound up skipping large sections devoted to describing, in detail, the fish and other underwater life. 

The Long View

Computers as tools for creation are unique in that they change and evolve over time as software is updated. A hammer that you buy today can reasonably be expected to perform the same in twenty years, assuming that the tool is taken care of properly. Similarly, the bench that you build with the hammer will still be good to sit on, no matter what happens to the hammer that built it. Not so with computers and software. Not only do the tools used to create change over time and perform in sometimes unexpected ways, the artifacts of our creation are often subject to artificial limitation on use. How ridiculous would it be for a bench to only be able to be sat in if you were holding the hammer you used to build it? And yet, this is the arrangement we agree to with our software more often than not.

The Best of What's Around

Marco struck a nerve with his latest post lamenting the declining quality of Apple software. The post was picked up by “analysts” and debated on television by a panel of “experts”. While I understand the frustrations of those affected by more serious bugs than I’ve seen, I can’t help but wonder if they really understand what the alternatives are like.

Adopting BBEdit Scripts for Vim

In addition to my experiments with the design of this site, I was also testing out BBEdit as my main writing and programming tool. BBEdit didn’t stick, but I did like some of the scripting the good Dr. Drang has done, and wanted to adopt a few for MacVim. I started with three of his scripts today, one to paste and select text in one command, one to convert a tab-separated table to Markdown, and another to even up the Markdown table so it’s easier to read in plain text.

All Mine

I’ve been experimenting with the design of this site for the past couple weeks. First, I used a default Jekyll template, slightly modified to my liking. Next, I tried out a very nice theme that made good use of hero images and included nice typography. I changed the name of the site to “INTERACT”, and briefly considered leaving it at that. Unfortunately, the more I looked at the site the more it looked like it belonged to someone else.

Cellular Options

I pulled into the gas station on my way home after a long day, picked up my phone in my left hand, intending to put it in my pocket, and opened the door of my pickup. While pushing the door of the truck open, the phone slipped out of my hand and fell face down on the pavement, shattering the screen.

The Million Monkeys

Computers, the bicycles for the mind, the idea engines; when we work at a computer we open the door to limitless avenues of creativity. Cracking open the lid of a laptop can be the first step to writing a novel, starting a new career, or getting in touch with long lost friends. But, when the machines misbehave, when they don’t perform as expected or present their interface in ways that are difficult or impossible to decipher, even the most mundane of tasks become a chore. The possibilities for the future melt away under the perception that computers are difficult and unreliable, our untrustworthy opponent to getting things done.

Merry Christmas

It’s nearly midnight on Christmas Eve. I’m the only one awake, perhaps with the exception of my dog, Oliver, although as the minutes tick by I’m less sure of him. Tomorrow morning the kids will wake us up earlier than we’d like, and we will tear into the presents, eat a wonderful breakfast, and have a fantastic day enjoying each others company.

Green Beasts

My commute takes me past the sanitary landfill every morning, a daily reminder to be careful about what I throw away, and what I can recycle. Driving by the dump doesn’t bother me per se, but the maniacs who drive the dump trucks do. I’ve learned to watch the turn into the dump, watching for the massive metal beasts, trying to anticipate when they’ll pull out, and if I’ll have to swerve out of their way.

Things That Dont Belong in Browsers

I still have a soft spot in my heart for Firefox, but it’s not my primary browser. I use Safari for just about everything, except the rare occasion when I need flash, then I use Chrome. Firefox is only used in the even rarer occasion that I need to use a site that Safari doesn’t support properly. Since I use all three browsers, I keep an eye on new features and development, wondering if something new from Firefox will draw me away from Safari.

New Mac Essentials - 2014 Edition

It appears I’ll be getting a new Mac soon, which means it’s time to take inventory of what I need. I’ve written about this a couple of times before, and it’s interesting to look back and see what apps stick, and which have gone by the wayside.

Open Source News Design

Finding good design in open source can be hard, but it’s almost impossible to find in open source news sites. These sites take “reader hostile” to a new level. Take example “A”, Phoronix:

Sensible Information Organization

There is no one application or system that is right for managing all of your information. If there were, we wouldn’t need apps like Contacts or Calendar, those things would just be merged into the Finder, or whatever mythical computing system I found myself wishing for the past couple of weeks. This is a good thing, even if not having a single view into all my data drives me a bit nuts sometimes. Specialization allows applications to provide a better experience for the specific type of data they were designed to handle.

Shellshocked Security Specialists

Between 2000 and 2003 I was part of a small group that was responsible for the security of the network in a remote military base. The work we did there was foundational for the rest of my career, at least so far. Once a week our team shut down for the afternoon to do training, and in the training one of us was responsible for researching a topic in depth and then presenting it to the rest of the team. We built web servers, firewalls, and proxies with OpenBSD, managed our intrusion detection system that we designed and installed ourselves, we even built a honeypot to watch malicious traffic. We spent a lot of long nights, and did a lot of hard work, but it paid off.

A Technical Education - The Operating System

It’s good to think of a computer as something like a cake with several layers. If the hardware is the first, and foundational layer, then the operating system is the second, and applications are the third. Today, we are going to look at that second layer, and leave with a basic understanding of what an operating system is, what it does, and what the differences are between the major operating systems available today.

A Technical Education - Base Level Hardware

The first and most important thing to remember when considering a computer is that computers are machines. Incredible, wondrous, bordering on magical machines, but machines nonetheless. They were built by people who are no smarter than you, and designed by people every bit as fallible as you. There are no magic incantations, no special spells, and no generational gap that make one group of people better able to understand computers than another. Computers are machines, machines that you can understand.

A Technical Education

I didn’t grow up with computers. They just weren’t a common thing in Montana in the 80’s. When my family moved to Texas for two years during my sixth and seventh grades, one of my friends had one in her room that we would play Oregon Trail on, but otherwise it was unremarkable. With the exception of video games and VHS tapes, my childhood was very much like the childhoods of the generations before me. If I wanted to see a friend, I’d have to walk over to his house. If I wanted to send someone a letter, I had to sit down and write it out on paper, scratching out misspellings along the way, then folding it up, stuffing it in an envelope, licking a stamp on it, and dropping it in the mailbox. And then, I’d wait. Sometimes for weeks, sometimes for months. In the past twenty years however, our world has changed dramatically.

Home Built Software and Systems

GigaOm is running an article written by Ralph Dangelmaier, the CEO of BlueSnap, claiming “We’ve reached the end of ‘build it yourself’ software.” It’s a nice thought, along the same lines as “We’ve reached the end of ‘host it yourself hardware’,” and “We’ve reached the end of you needing anything other than what someone else has already developed.” In the past fourteen years I’ve been in the industry though, the systems I’ve seen run the best are the ones hosted on our own hardware running our own code. Off-the-shelf software can be great for certain situations, but if you are outsourcing a core function of your business, what kind of value are you really providing?

Marked Down

If you really, really care about Markdown, Jeff Atwood of Coding Horror and Stack Exchange fame has a new project for you. Apparently, Jeff didn’t think Markdown’s original creator’s care of the code was quite up to snuff, and decided to build a new project to more accurately codify the syntax and implementation details. All good things, if, again, you really care about such details. If, however, you are using Markdown like the majority of us: to making writing on the web a bit easier, well, this all might go by unnoticed. At least, it probably would have if Jeff had named his project anything other than “Standard Markdown”.

Small Site Update

I’ve been publishing this site with Jekyll for several years. I’m not sure exactly when I switched over from Wordpress, but it’s long enough ago that I’ve forgotten when I started.1 Over the past few weeks I’ve run into a few issues with Jekyll that have caused me to reevaluate if it was still the right choice for me. The short answer is no, the long answer is that this site is now published with my own Python script.

  1. There was, of course, Paragraphs, but I’m content to let that go. Making peace with your past, learning from your mistakes, and moving on older and wiser is the only way to live in peace. 

What it Does

Our relationship with technology has become unexpectedly skewed. I was just reading through Sid O’Neill’s recent article, Losing Apple, and found myself nodding along on several points, particularly here:


“UNLESS someone like you cares a whole awful lot, nothing is going to get better, it’s not.” – The Lorax

Site Design Non-Update

The site design of jb was very nearly upgraded tonight. Well, upgraded is not quite the word for it. Changed is more accurate. Even though I’m quite happy with the look and feel of the site, from time to time I get frustrated with one aspect of it or another. I’ve spent more time that I want to admit thinking about readability, fonts, font sizes, spacing, kerning, and the like, but occasionally I’ll look at another site and think “that looks good”. And then mine looks like crap for a day or so.

For The Fun Of It

I still need an anything bucket, and nothing fills that gap like my old friend Yojimbo. I was an early adopter of Yojimbo, back with version one, and I upgraded faithfully for version 2 and version 3, but I held off for a long time on version 4. In the mean time I tried Evernote, DEVONthink, Pinboard, and just the file system to fill the void that Yojimbo filled so gracefully. No more, I’ve come home, and it feels great to be here.

Command-T Crashing Vim

For some reason today when I opened up MacVim and hit ,t to navigate to a file, MacVim crashed. The terminal spat out an ugly, and unhelpful error about “deadly signal SEGV”, but knowing that I just invoked the Command-T plugin, the error was easy to track down. Command-T is not like other plugins that I have installed with Pathogen, it lives on its own and is not updated as a Git submodule.

Parsing iostat Results

In the course of load testing a new system, we gathered the output from iostat from a group of servers. In addition to parsing through the device statistics, we thought it would be handy to graph the CPU stats as well. We set iostat to run every five seconds and captured the output in a text file, one per server. This gave me a sizable pool of data, but with everything I needed on separate lines.

A Different Vision of the Future

I ran across a few articles in the past week or so that predict the majority of the population will be living in cities by 2050.1 I don’t dispute the projection, these people generally know what they are talking about, but I would like to do a bit of daydreaming of my own. I can envision a world of small towns populated by remote workers and independent service providers, communities with relationships that are closer, deeper, and happier than their city dwelling counterparts.

  1. There are several others. Just do a search for “seven billion live in cities in 2050” for more. 

Statement of Faith

I am a Christian. I believe that Jesus is the Son of God, that he became a man and was born to a virgin. Jesus lived a perfect, sinless life, and died on the cross as the ultimate sacrifice for all of humanity, for all time, past and future. He was raised from the dead three days later, spoke to his disciples, and now sits enthroned in glory in heaven at the right hand of the Father. Through Faith, I accept this truth, and I accept Jesus as my personal savior.

Be Excellent To Each Other

The recent row over iA Writer’s developers and their patent application reminded me what a small community the Mac developers are. The real problem was never about iA attempting to patent their work, the issue was that they forgot their place in the ecosystem. There are a few in the community that give freely and abundantly, like Brett Terpstra, and when iA threatened to use their patents offensively against Terpstra’s Marked, the community rightfully condemned them.

Bigfoot Footnotes in Jekyll

Like the good doctor, I knew as soon as I saw Bigfoot that I would be adding it to this site. 1 I’ve avoided footnotes up till now because the HTML formatting for them seemed far too fiddley, and the Jekyll Markdown processor I was using did not support them.

  1. I’ve always liked footnotes. 

Burn it Down

As the year comes to an end it would be easy to look back and see all of the things that didn’t work. Mistakes were made, endeavors failed, and it was generally a tough year. Some things that I thought would work out did not, and some things I thought I had more time before I had to deal with came due. Sometimes, when things aren’t working out, it’s best to burn it all to the ground and start over.

Desktop Setup For a Sysadmin

My Mac is a finely tuned machine. I have been using a Mac for Unix systems administration work since 2006, starting with a PowerMac G4, and have developed a smooth and efficient workflow. Most of the important tools are open source, and the ones that are not are very high quality.

Zen, Art, and Tools

I’ve been a Mac user since returning to the states in 2003, but I’ve been a Unix user for a few years longer. Originally, I was drawn to the Mac because it was a fantastic interface on top of a solid BSD Unix core, but as I grew more familiar with the platform, I became more drawn to the level of attention to detail. The Mac is a quality machine, but today I’m writing this on a Dell running FreeBSD.

Go2 and Paragraphs Are Now Open Source

I see no reason to keep the code for Go2 and Paragraphs to myself. I have no plans to continue developing them, have received no requests for support, and have seen very, very, few sales over the past few months. So, as of now, both Go2 and Paragraphs are released as open source, under the MIT license, available on GitHub.

Avoiding Complexity

I’ve noticed a tendency in my Mac setup to veer towards higher levels of complexity. In truth, I’d rather not use anything outside of the Apple provided ecosystem, but for one reason or another I’m constantly drawn to other apps and command line tools. It is a struggle to find balance between applications that actually enhance my productivity, and distractions that pull me away from the task I’m attempting to use my computer for.

Exciting Night

My wife and I were sitting at the dinner table chatting, winding down for the night, when I saw a pair of headlights shining in our back window. The back side of our house faces the middle school parking lot, with a good amount of lawn and trees between the edge of my land and the beginning of the gravel, so it is not too unusual to see cars back there, but late on a Saturday night did seem strange.

Technical Education in K-12

Our small school is nearing the end of the four-year cycle for a one-to-one program that provides all students in grades six through twelve with a white MacBook. Students are free to take the laptop home, and parents must sign an agreement to pay for any damages. Over the course of the past few years I have become strongly, almost vehemently opposed to the program.

For The Public Good

I just finished another article for OStatic where I imagine what web services would be good candidates for public, non-profit organizations. The two services I came up with are search and email, both I consider essential Internet tools. I’ve wondered about the democratization of the Internet before. One thought I had was wondering about the possibility of each household owning their own “server”, or server type device that connected them to the Internet, but also became part of the Internet.

Personal Information Architecture

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

Farmdog Closed

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

Where We Stand

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

The Hardware Racket

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

Mozilla Turns 15

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

Scout Beta 2

So, quite a bit has changed in the past week or so. I got a lot of great feedback from a few beta testers, and stomped out a few bugs. A bigger deal though came from a couple of people who noted that they got confused in some of the views on how they were meant to proceed. Confusing the customer is absolutely the last thing I want to do with Scout, so I took off my developer hat and put on my HCI hat and tore Scout apart.

More Scout Tips

Eventually I’m going to need to compile this into a proper help doc, but for now, documenting Scout with Scout will do.

Beta Testing Scout

Well, as much as I’d love to procrastinate for the rest of eternity, the time has come for Scout to take it’s first baby steps out of it’s private testing ground and out to a few interested folks who would be brave enough to beta test.

Electrogent's 50 Rules

One of my favorite things about the Internet is finding a little treasure trove of writing and style that I previously did not know existed. Electrogent is one of those little gems, and his list of 50 rules for his son is full of timeless advice.


Thought of the week:

Vim Power

vim_iconNo server, desktop, or laptop install is complete without Vim, and yet, there are times when I still see questions pop up on IRC about how to do basic editing of config files with vi. I remember, years ago, asking some of the same questions of an older Unix guru, and asking why I should bother learning such an eccentric and “outdated” text editor. His answer has stuck with me, he said “Because it is the only text editor guaranteed to be on every server, and some day you will need it, and have no other alternatives.” Vim, short for “vi improved” is ubiquitous, but it is also so much more, and the time you spend learning it will be repaid to you tenfold in productivity.


You get good at something by doing it repeatedly. I’ve been writing on this site for six years now, but with little direction or topic. I’ve gotten good at not making anything of the site, which is not where I wanted to be when I wrote about why I kept this site in 2011. I’ve not kept to a regular schedule, or a common theme, so I am not surprised to see that the only traffic I have going to the site is my own, and a few that found the site from Google. The preceding statement will make the next seem a bit ridiculous, but bear with me.

Cutting Corners

After reading the MacSparky piece on craftsmanship, I’m reminded of how I like to look at my career as a systems administrator. I find that there are times when things that are not quite right just bother me. Like when there are inconsistencies or one-offs scattered throughout the environment I am responsible for. There may well be perfectly logical reasons why some systems are monitored and some are not, why some are registered with configuration management and others are not, but in my mind it is these little inconsistencies that add up and make your work look sloppy.

iTunes Gets A Bad Rap

I’ve searched high and low for an alternative to iTunes, but I’ve yet to find a suitable replacement. I use iTunes for playing music, mainly over AirPlay in my home office, and it works great. I’ve got smart playlists, star ratings, and an iTunes Match account to keep everything in sync between home, work, and mobile. Given my investment of time and money over the years, it’s possible that I may be suffering from some type of sunk cost fallacy, but honestly I really enjoy iTunes.

iCloud and Core Data

I inadvertently started a bit of a conversation today when I complained about the state of NetNewsWire on Twitter. I’ve been a NetNewsWire user for years, and I was very surprised when it was sold to Black Pixel. My surprise turned to disappointment when the application was not updated, and now NetNewsWire has stopped working for me completely.

Scout and FTP

Building a desktop application that manages creating your site is great, but only publishing to a local folder is for the birds. After only a few posts using Scout, I can say that the process of publishing to a folder, switching to Terminal, and running rsync will not fly for any potential customers I may have. It’s a pain.

Misunderstanding NSString

So, while I was debugging the first post using Scout, I found an oddity in NSString. I was building the links between the posts using stringByAppendingPathComponent, to join the site’s base URL with the path component of the individual post. Unfortunately, that method seems to be stripping one of the forward slashes off of the http:// string, which screws up building links.

Footnotes and Other Scripts

I’d like a really simple way to insert footnotes in the text. However, I’m not sure how much of that I can do with the Markdown parser that I have now, which means inserting ugly HTML, which I’d really rather not have. I could do something in the generation of the site, inserting my own marker in the text and parsing through that later, but that seems like reinventing the wheel. Surely there are better ways to go about this.


I would like to introduce you to Scout, my desktop, baked blogging engine. I’d like to, but Scout is not quite ready yet, so I’m keeping him under wraps till I’m sure. There is only one way to be really sure, and that’s to use Scout to publish my own blog, every day.

A World of Things

It is very easy when living in the technology field to ignore the actual physical space we occupy. Skills once thought essential are slowly being forgotten as we move farther and farther away from a culture of being able to create and fix things.

13 Virtues for 2013

Instead of looking back, I like to look forward. As a guide on how I’d like to live the next year of my life, here are Benjamin Franklin’s famous 13 Virtues, written when he was 20:

No More Guns

I’m angry. You should be too. On December 14th, a young man shot his way into a locked elementary school in a small town in Connecticut and murdered twenty children and six adults. This is an abhorrent act by a mentally ill person, but the magnitude of the act was amplified because the murderer had access to guns. Big guns.

On Culture

You never need to prove to anyone who you are. You simple are who you are. Claiming that someone else is faking their interest in a topic is ridiculous. Our interests and curiosities define us just as much as, if not more than, our histories and personal experiences. Friendly competition between peers on knowledge of the esoteric details of a given subject is good fun, but not a defining prerequisite for claiming curiosity about the subject. I would like to think that the previous few sentences are unnecessary in a conversation with adults, but unfortunately, as the recent conversations surrounding “fake geek girls” has shown, that is not the case. In a sad way, many of us have not matured past the social battleground of middle school.

Quiet Time

The office is empty this morning. I just closed iTunes, and I am enjoying listening to my own thoughts. No music, no talking, no background, just quiet. Sitting in silence is a luxury these days, and one that should not be taken for granted.

Energy Saver Preferences

My MacBook at work sits on my desk all day and all night. When I sit down to work on it, I expect it to be ready for me, and ready to ask how high when I tell it to jump. I get a bit annoyed if I come back after a few minutes or an hour and find that the Mac has gone to sleep while I’ve been gone. So, I spent a few minutes in the Energy Saver preference pane to configure the machine to my schedule.

Forgotten and Beloved

I was given a clean slate of a Mac to work with this past Monday, so I gave some thought to which apps I wanted to use. Looking back at some of my favorites that have fallen behind, I was left with a bit of nostalgia for the apps that once made the Mac experience great. It is easy to tell which developers care about keeping their application up to date, just check the top right corner and look for the full-screen opposing arrows. If they are not present, there is a good chance that the application has been abandoned.

iOS 6 Headphones

I have been pleasantly surprised by one small enhancement in iOS 6 that probably affected a very small number of people. I drive a 2006 Saturn Ion that has an auxiliary port in the car stereo for plugging in things like iPhones. I have about a half-hour drive to work in the mornings, and I listen to podcasts downloaded with Instacast. Since I want to control the audible volume with my car stereo knobs, and I want the best possible signal from my iPhone, I turn the volume up to maximum for the drive.

ArcDown - My First Open Source Project

Part of a Farmdog project I’m working on needs nice syntax highlighting for markdown. After searching around for a bit I found Ali Rantakari’s PEG Markdown Highlight project, and knew that it would be a perfect fit. Unfortunately, the code was not written for ARC, or Automatic Reference Counting, and my project was. Rantakari’s code worked fantastic outside of ARC, but inside it needed a few days worth of love and attention.

The Computer User I Want To Be

Learning about computers can be a dangerous thing. Breaking though the veneer of graphical interfaces reveals inefficiencies and inaccurate metaphors. For example, rsync copies files faster and uses fewer resources than the Finder. Copying lots of files is what rsync does best, but being a command line power tool there are a few subtleties with using it that are not readily apparent. As your skill grows, so to does the tendency to eschew modern tools in favor of “power tools”. You begin to see the inefficiencies of graphical tools as problems, problems that you need to fix. I’ve been down that road.

New Mac Essentials - MacVim

Investing time learning a text editor is a serious commitment. Over time, you find yourself reaching for the editor’s built-in shortcut keys everywhere you type. In my case, I do almost all of my writing in MacVim. Unfortunately, MacVim comes with a fairly steep learning curve that many are unwilling to tackle. Part of the complexity of Vim, from which MacVim is derived, is the configuration. Over the years I’ve come up with a setup that works for me.

The Winchester Imperative

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

A New World

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


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:

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.

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.

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.

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.

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.


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.

Found On The Path

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


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

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.

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.

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.


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.


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.

Imperfect Dock

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.

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.

Principle of Least Software

Use only the software that you need. No more, no less. Choose one application for each task, and become an expert on that application.

Keyboards and Wheels

I have one wish for the next major iOS release: full keyboard support. The iPad works with the bluetooth keyboard, and the original iPad came with a keyboard dock, but support for doing things other than basic text is sparse at best. My wish list is small, but meaningful. I would like to see support for all the keys on the keyboard, the ability to command-tab between running applications, and arrow key navigation for apps that include table views.

Quicksilver and Go2

Go2 1.2 is in review, and when it is released it will bring a new feature that I’m hoping will speed up access to bookmarks considerably: Spotlight integration. Spotlight is amazing technology, and one of the biggest advantages OS X has over it’s competition. The Spotlight search and matching algorithms can index millions of files, which makes it a perfect companion for people who have anywhere from hundreds to thousands of bookmarked server connections in Go2. So far, my own menubar indexing gets a bit choked up at around 1500 bookmarks or so. It still works, but no where near as fast as Spotlight.

Dazzle Them With Science

It’s not really a science, it’s more of an art. If you are careful, and attentive, you can see when someone starts working this particular art form. In a technical discussion, bit by bit, you start getting lost in the conversation, wondering how we got on to this topic, when it doesn’t have anything to do with what needs to be accomplished. Then you realize that the same guy has been talking for the past few minutes, and he’s been working his art, casting his spell, and the whole room has fallen under it. He’s convinced everyone in the room that he knows so much more, that his knowledge on the topic is so vastly superior to anyone present that no one is on the same level. Which is exactly where he wants your mind to be, because the next step after that is agreeing with whatever he wants to do.

Anatomy of a Crushing

We charged money for a good or service

I know this one is controversial, but there are enormous benefits and you can immediately reinvest a whole bunch of it in your project sips daiquiri. Your customers will appreciate that you have a long-term plan that doesn’t involve repackaging them as a product.

Our Lean Startup

There is no profit margin on mediocre. While every company including ours has its hiccups as it grows we set the bar on day one to offer a premium service and priced it as such. We are unapologetic about it.

The end of the IT department

37 Signals comments on a trend I’ve been noticing for a few years. Data centers and IT departments are not the core competency of most businesses, they are a requirement of operating the business. Or, at least, they have been for the past thirty years or so. Businesses are now seeing the benefits of moving what they are not good at, controlling IT, to what they are good at, which is whatever makes them money.


I love these videos from Field Notes.

Be Great

If you take a moment to look around the room you are in now, what do you see? Are you surrounded by things that matter, and were built by people who care? Or, more likely, are you surrounded by mass produced, assembly line, imported goods that you honestly don’t believe will last all that long? I’ve been thinking about quality again, and how it applies to me, to what I do, and how I spend my time.

Reading and Readability

Readability is a subscription based service that allows you to read the text off of websites in a beautiful, clean, consistent interface. Since I started reading the web through Readability a while ago, I’ve appreciated it’s consistency, meaning that one site looks the same as the next, as the next, and the next. Reading articles on the web becomes more about the writing, and less about design. Jumping from site to site can be jarring, distracting, but when using Readability, the entire web can feel like a single book, one with many chapters.

RSS Triage

Like many who are interested enough in the tech industry to attempt to stay up to date on current happenings, I’ve been struggling with an ever increasing number of interesting sites and feeds. In the past I would categorize the feeds into folders with names like “Blogs”, “News”, “Design”, and “Friends”, but eventually I’d wind up with a folder with a name like “MetaBlogs” or some such ridiculousness. While the multiple folders did help to organize the feeds, they did not help with what I needed; keeping up with what was important.

Friendly Conversation for the Drive

It’s snowing again, which means my normal 40-minute commute will now be closer to an hour. I’m actually a bit excited by the prospect of a long drive; it will give me some time to catch up on my favorite podcasts, most of which come from Dan Benjamin at 5by5.

Past Blast

I’ve loved reading some of the “Past Blast” articles that have been linked about in Twitter, so here is my contribution.

From Zero to the App Store

This past Thursday I was privileged to speak at our local CocoaHeads about my history, and how I was able to bring my app to market. Since someone on Twitter asked for my slides, which don’t amount to much, I thought writing up my experiences would be a little more useful.

Go2 and the Mac App Store

Yesterday, Go2 was one of approximately 1000 applications available on launch day of the Mac App Store. It’s been a nerve wracking experience, but overall I’m pretty happy so far with the way its gone. I’ve been able to identify a couple of last minute bugs and get their fixes incorporated into version 1.1, which I’ve had in beta testing for about a month now.

Delicious Bookmarks

Word leaked out yesterday that Yahoo has it’s popular Delicious bookmarking service on the chopping block. I don’t personally have an account, not anymore, so the closing won’t affect me. Twitter tells a different story, my stream lit up with people upset about the decision. Yahoo’s leak, coupled with their announcement that the company is laying off 4% of it’s workforce right before Christmas, caused a fairly good sized migration from Delicious to Pinboard. I do have a Pinboard account, and I think I even have a few bookmarks saved, but its been weeks since the last time I visited the site.

The Proper Place of Technology In Our Lives

It’s now the middle of December, which signals the end of my first semester of grad school. I took two classes, both focused on HCI: cognitive psychology and social implications. The paper I just finished writing for the social implications course was about answering the question of whether all software should be free, and required a lot of research into open source, the Free Software Foundation, and a lot of deep thinking about what I felt was right.

Weekend With Android

I should have known better… I do know better, but it was on sale, and it was Black Friday, and I bought an Android phone. I purchased the HTC Desire, a perfectly reasonable choice in high-end smart phones. Android 2.1, a 1GHz processor, 512M of RAM, and an 8G MicroSD card for storage. The phone is well designed, solidly built, and aesthetically pleasing, but at this point, its still on probation, I might take it back.

Android Marketplace Inconsistencies

Living out in the farmland of Iowa where we do, there’s really only one carrier who provides decent service, US Cellular. US Cellular has a great service for battery replacement. If you find yourself out and about and your battery dies, you can drop by any US Cellular store and they will replace the battery for free. I was in that situation today, so I spent some time looking at the Android phones HTC Desire and Samsung Mesmerize.

Emotions and Machines

I’ve been using different forms of computer “chat” for over ten years now, starting with operator-to-operator communications over a 9600baud satcom circuit in the Navy. Over time, I’ve become used to using certain forms of “emoticons” to convey subtle nuances in the conversation that are unnecessary in face to face communications. I even have friends with whom I communicate with entirely over chat.


Last night I did my civic duty by casting my vote at the local community center. I walked down since it was not far from my house, and enjoyed the crisp night air. Once I arrived at the community center I noticed that the voting process was being run by a group of elderly women, two of whom had Lenovo laptops, which were curiously tied together by an ethernet cable. Each of the laptops had a label printer attached to it via USB, with the other USB port occupied by a mouse. As I approached one lady noticed me and asked me to fill out a form, which I did, and then asked if I had voted there before, which I had not. That turned out to be a bit of a problem, one that was easily resolved, and one that was caused entirely by the laptops.

Clean and Clutter Free

I like to keep both my desk and my computer desktop clean and clutter free. I’ve found that when there is less visual noise, I’m able to better concentrate and focus. In the article “The Proximity Compatibility Principle: Its Psychological Foundation and Relevance to Display Design”, Wickens and Carswell outline scientific principle’s that back up my personal preference.

An Idea About Money

So, last night, when I should have been sleeping, I had an idea. What if, instead of going to a bank to get a loan, you could ask a few of your Internet friends for a loan instead? Say you want $1000 for a new iMac, you go to some imaginary website and tell it how much you want. This website does a quick credit check to get your credit score, and then determines your interest rate based on that score. You agree to the rate, and your request is posted anonymously to the site.

The Smell of Salt

A long, long time ago, what seems like a different life now, I was a Sailor. Towards the end of my teenage years, I came to a point where I knew I had to do something with my life, and at the time, that something was not college. My adoptive father was in the Navy, so I decided to follow in his footsteps and joined the Navy myself in October of 1995. From June of 1996 to July of 1999 I was assigned to the USS Platte, an oiler. During this time I made the best friends of my life, met my wife, and travelled across Europe and even into the Middle East.


We’ve been having a months long discussion at work around which Linux OS to use. It’s all come to a head recently, and it looks like the winner is going to be Red Hat. The decision leaves a slightly sour taste in my mouth, but over the course of the past year I’ve gotten used to having it around. While trying to understand why I’ve got such a dislike for this particular flavor of Linux, I thought it might help to take another look at OpenBSD.


I’ve been writing online since around 2000, starting with a geocities site. After that, I had a 50megs.com site that offered gasp 50 Megabytes of online storage! (Just noticed, they still do!) After a couple of years, I noticed a company named 1and1 that was offering three years of free hosting and the domain of your choice. That was a deal I couldn’t pass up, and I grabbed the domain name sourceport.org. I used the domain, but didn’t get a whole lot accomplished with it. I used it for a while to sell PCs as firewalls with OpenBSD, but that didn’t end well, so then I started a Wordpress blog with that domain name. Unfortunately, the person who owns the sourceport dot com address had a beef with me, so I moved the blog over to a new domain: jonstechblog.com. While I was using this blog, I moved away from wordpress and started using a Mac application named RapidWeaver. I switched to RapidWeaver because it made the task of posting videos of Linux distros that I was testing out easy. I was testing the distros anyway, so I figured, why not share it with the world.

One day, I got an email from the guys at OSDir, asking about a “link exchange”. It turns out he thought I was on to something, and that he was toying with the same idea. He donated all of his videos to me, we exchanged links, and osvids.com was born. OSVids was a big hit, and got very popular very fast, starting with an interview I did with Tina Gasperson from NewsForge.

It turns out that the site grew too popular too fast. When I first started uploading the videos, I was encoding them with quicktime, which turned out to be a very bad idea from a usability standpoint for my target audience. The Linux crowd demanded an open format, so I offered downloads in Ogg-Vorbis format in addition to switching to the more widely deployed flash. Starting out with Quicktime had another very bad side effect: bandwidth. The quicktime files were huge, and I went from a negligible bandwidth use to 1.5 Terabytes in one month. This took a toll on my wallet in a big way. I noticed an advertisement for a hosting company that claimed “Unlimited Bandwidth!”, so I signed up and moved OSVids over to their servers. Another bad idea. I learned quickly that there is no such thing as “unlimited bandwidth”, as OSVids quickly brought there servers to a screeching halt. I complained, they tried to respond, and eventually I moved the site back over to 1and1. Even on shared hosting, 1and1’s servers never skipped a beat, and I never had any downtime with them. But, like I said, I paid for it.

I kept up the site for a few months steadily adding videos of new distros as they were released. Then, several things happened in my personal and professional life that caused OSVids to begin a slow but steady decline. The most major item was the loss of hardware. Through some unfortunate events, I lost the nice IBM laptop that I was using to create the videos. I tried using my Mac, but the resolution was too low on the iBook, and even after upgrading to a MacBook, the resolution was far too low. In addition, we sold our house, moved to a new state, I had to find a new job, and we had some semi-serious in-law issues. The biggest news was finding out that we were expecting. So, I tried several different approaches to make OSVids work, but in the end I had to shut the site down. Not because it didn’t get any traffic, it did, but… it was an open loop that needed to be closed, and I couldn’t find anyone who wanted to take the time to do all the video encoding and manual coding of the web site that made OSVids run. I lost most of the data from the site, but what I found I uploaded to YouTube.

I started this blog a few months after loosing OSVids. I needed to completely reboot my online presence. I found that what I really needed was more time offline, to really think about why I wanted to write, and what I wanted to write about. After some thought, I’ve decided on a simple blog hosted here on github.

I’ve been inspired by Daring Fireball, and Dive into Mark, and a host of other great sites. I hope that over the years as my writing voice develops I’ll be able to look back on what I’ve written here and see my work progress. I do not write this blog for it to be popular, I write it because I love to write.

The loss of OSVids was unfortunate, but really inevitable. Even without my life going nuts at the time, the rise of YouTube, Google Video, and all the other video sharing sites quickly made my hand-coding and inability to accept submissions from fans obsolete. Perhaps there is still room for OSVids. I still own the osvids.net domain, and I’ve been contemplating bringing it back. For now, I’ve really come full circle, but as a much more experienced writer. In the end, its just me and my blog, but if you’d care to join me, I’d love to have you.


As a carpenter has his tools, so do I, as a “knowledge worker” have my computer. I spend many hours a day with my Mac. I have my workflow honed and finely tuned, and I know when something is wrong with my computer, when there is more friction than there needs to be. I am a Systems Administrator, so my knowledge work is to ensure that other people can get their work done. My job is to keep the servers, services, and systems I support up and running 24x7. The tools I use to get this job done mean a lot to me, and over the years I’ve tried many of them with varying levels of success. I know exactly what my ideal setup is, and I’m working towards filling out my toolbox with the very best as I strive to bring my craft to the next level of mastery.

At home, my computer is college, entertainment, finance, photos, blogging, and fun. Mostly fun. There have been times when I’ve walked away from even owning a computer at home, seeing it as a distraction more than anything, but I always come back to wanting one around, if for nothing else than as an outlet for creativity.

In the years that I’ve been using computers, I’ve found that I desire simplicity more than configurability. Favoring fewer options over more. The machine I use needs to be beautiful to look at, because I spend a lot of time looking at it. It needs to be simple to use, because I have work to do, photos to edit, words to write, and I don’t want to have to mess with anti-virus updates or X windows crashing because of some beta driver bug that made its way into the mainstream release. I just want my computer to let me do what needs to be done.

Beautifully designed and crafted, simple to use, powerful… my computer needs to be a Mac. No one else on the market can release a computer that matches a Mac. I’m not sure why, it’s like they don’t know how. They try, but they fail.

Open source operating systems like Ubuntu are not as good because there are far too many cooks in the kitchen. Ubuntu is not an operating system like OS X is an operating system. It’s the Linux kernel, the ext4 filesystem, the Xwindow system, the Gnome desktop, the Firefox browser, and thousands of other open source packages and applications that work loosely together, and are developed by different teams. OS X is developed by Apple.

Windows XP is a suitable operating system to work with at the office, but I am far more productive on a Mac. With tools like Yojimbo, Spotlight, and Quicklook, Macs are far better suited for information management. I hear Windows 7 is nice. My wife has it on her PC, and so far, it is still just a PC.

As much as I love Macs for their design and ease of use, I also see the faults of some business decisions Apple has made in the past few years. The App Store is either a resounding success or a horrible failure, depending on who you talk to. In sheer volume, 200,000 apps is a lot of applications, but like Windows was last decade, most of them are crap. Apple’s decision to approve each app in the store is admirable to a degree, but they are not executing well at all. Some people are philosophically opposed to the app store, saying that the iPod/IPad/iPhone ecosystems should be open for any application to run on them, as is the case on the Mac. I do not care about this aspect, but I do wish that Apple would fix their approval process to make the system much more transparent. There should be clear cut guidelines on what is acceptable and what is not, and those guidelines should be applied across the board. Random app store rejections are the running gag of the current implementation. Its wrong, and it needs to be fixed.

Is the Apple today the same as the Apple so many fell in love with in the ’80s and ’90s? The scrappy underdog that just won’t die? No, and I couldn’t care less. I find it interesting that the era that some romanticize is actually one of the worst in the history of the company. Back when Apple was allowing clones and releasing crap with the Apple logo on it. Good riddance to bad rubbish. OS 9 was not interesting to me. OS X is.

I was using Linux and OpenBSD when I first heard of OS X, my first iBook was a revelation. Finally, someone had put a decent GUI on a Unix box. Apple has only gotten better from there.

I know there are a lot of very smart people who disagree with me. Lets let the next twenty years decide who is right.

Along with the app store debacle, there is Apple’s stance on Flash. My personal feeling is that if Flash were a true open standard, if anyone could create Flash applications without relying on Adobe, it’d be a whole different ball game. As it is, Flash is controlled by Adobe in its entirety, and that seems wrong for the Internet. The Web is the great leveling field, a mechanic in Kansas has the same chance of creating an awesome web site as a multi-billion dollar corporation. All the tools to create amazing web sites are free, and the specs for building the sties are readily available. All you need is a computer, Internet access, and a text editor. With Flash, you need some pretty expensive software. Also, having run a video serving site in the past, I can tell you that HTML 5 would have been a Godsend back then. It would have been so much simpler to just drop a .mov or .ogg file enclosed in video tags than the junk code I had to put in.

I’d like to watch Hulu on my iPad. Netflix already rocks on it. Flash is not a necessity.

Finally, there’s Google. I used to love Google, back when it was a search engine. They could have been happy with just being the best search engine in the world, and making billions, hand over fist, but no… they had to go and get greedy. Eric Schmidt sat on the Apple board of directors and saw what Apple was doing, and thought to himself… Google could do that. So, they “stabbed Apple in the back”, and released Android, and then the Nexus One, a direct competitor to Apple’s iPhone. Bad form, old boy, bad form indeed.

Also, I don’t like Google’s business model any more. I used to be fine with it, when they would show ads on the search results. Now though, Google wants to watch everything you do online, and figure out a way to monazite your activity. Your email, calendar, RSS feeds, photographs, friends, chats, videos, music, there’s even Google Health where you can put your medical record in Google. It all goes into the big black box that is Google, to be analyzed for who knows how long. Me, I like to be a little more honesty with my transactions. That’s why I pay for my email service. I give Apple money, they give me an email address, and a few other perks. It’s as simple as it gets.

I think that about does it for the major topics of the day. Of course, in all these things, I might be wrong. However, if I am wrong, and you want to call me out on it, I suggest you do your homework first. I’ve done mine. I have several years of experience, and a finely honed sense of craftsmanship.

I am, after all, strongly opinionated.

Managing Nagios Configs

We don’t have a very big Nagios installation, comparatively anyway, but it is big enough to find that the default layout for configurations is insane. I tried using the provided layout, until I wound up with single text files with thousands of lines in them. This made it very hard to do individual customizations for servers, and separating out who wants to be notified for what. Here is what I came up with for managing our Nagios configs.

It seems that the repositories are always behind in Nagios, so it is one of the very few apps that I recommend installing from source. I install Nagios in /usr/local/nagios, the default when compiling, I’ll just call it $nag. The Nagios binary is in $nag/bin, the plugins in $nag/libexec, and the config files in $nag/etc. The easiest way to understand nagios is to follow its start up procedures. I keep an /etc/init.d/nagios file for initialization, The file defines, among other things, where the home directory for Nagios is, what config file to use as its base, and where the Nagios binary and plugins are. The important thing to understand is that this file is the first pointer in a long string of pointers that Nagios uses for configuration.

Inside the nagios.cfg file are the cfg_dir directives. These are pointers that tell Nagios that it can find additional configurations inside the directories listed. Once Nagios is given a directory to look at, it will read each file ending in .cfg inside of that directory. The first directory that I have listed is $nag/etc/defaults. I keep four files in this directory: commands.cfg, dependencies.cfg, generic.cfg, and timeperiods.cfg.

The file “commands.cfg” contains the definitions of all check commands that Nagios can understand. They look like this:

 # 'check_local_load' command definition
 define command{
        command_name    check_local_load
        command_line    $USER1$/check_load -w $ARG1$ -c $ARG2$

The file also contains the alert commands, or what Nagios will do when it finds something that it needs to let you know about:

define command{
command_name notify-by-email
command_line	/usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: 	$NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: 	$HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/	bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" 	$CONTACTEMAIL$

This allows us to call a command later in Nagios by it’s defined command_name,such as check_local_load, instead of having to call the entire command including arguments. Keeps the configs clean.

The next file, “generic.cfg”, contains templates for host configurations. This file allows us to do two things: list common options that are defined for all of the hosts, and separate hosts into notification groups. The definitions look like this:

define host{
        name                            generic-admin
        notifications_enabled           1
        event_handler_enabled           1
        flap_detection_enabled          1
        process_perf_data               1
        retain_status_information       1
        retain_nonstatus_information    1
        register                        0
        check_command           check-host-alive
        max_check_attempts      3
        notification_interval   120
        notification_period     24x7
        notification_options    d,u,r
				contact_groups          admin,admin_pager
        action_url /nagios/pnp/index.php?host=$HOSTNAME$

There are two separate types of generic definitions, hosts and services, for the two types of monitoring that Nagios does. The important section for most of my purposes above is the “contact_groups” line. This allows me to group contacts with hosts, so it answers the question of “who gets notified if this server goes down?”. The same thing applies to the service template below.

define service{
        name                            generic-full	
        active_checks_enabled           1
        passive_checks_enabled          1
        parallelize_check               1
        obsess_over_service             1
        check_freshness                 0
        notifications_enabled           1
        event_handler_enabled           1
        flap_detection_enabled          1
        process_perf_data               1
        retain_status_information       1
        retain_nonstatus_information    1
        register                        0
        is_volatile                     0
        check_period                    24x7
        max_check_attempts              3
        normal_check_interval           5
        retry_check_interval            1
        notification_interval           120
        notification_period             24x7
        notification_options            w,c,r
	contact_groups                  admins,admin_pager,webmin
	process_perf_data 1
	action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$

The other two files, timeperiods.cfg and dependencies.cfg, I haven’t done a whole lot with yet.

The next directory parsed as defined in nagios.cfg is $nag/etc/users, which, surprisingly enough, is where all of the users are defined. I keep two files in this directory, users.cfg and contactgroups,cfg. The users.cfg file contains a list of every user, and since I have different needs for pagers and regular email alerts, each user is defined twice:

define contact{
        contact_name                    Jon
        alias                           Jon Buys
        service_notification_period     24x7
        host_notification_period        24x7
        service_notification_options    w,u,c,r
        host_notification_options       d,u,r
        service_notification_commands   service-notify-by-email
        host_notification_commands      host-notify-by-email
        email                           jbuys@dollarwork.com

define contact{
        contact_name                    Jon_pager
        alias                           Jon Buys
  	  service_notification_period     24x7
  	  host_notification_period        24x7
  	  service_notification_options    u,c,r
  	  host_notification_options       d,u,r
  	  service_notification_commands   notify-for-disk
  	  host_notification_commands      host-notify-by-email
  	  email 				5555555555@my.phone.company.net

This lets me group the users more effectively in the second file, contactgroups.cfg:

define contactgroup{
        contactgroup_name admins
  	  alias           sysadmins
  	  members Jon,Gary,nagios_alerts

define contactgroup{
        contactgroup_name admin_pager
        alias           sysadmin pagers
        members Jon_pager,Gary_pager,OSS_Primary_Phone,nagios_alerts

Now, check the definitions in the generic.cfg file above, and you’ll start to see the chain of config files coming together. The glue sticking it all together is the server definition files. Each logical group of servers gets their own directory, defined in nagios.cfg. For example, we have a group of servers that provides a specific web service (which I’ll call “mesh”), there are web servers, application servers, and database servers that I group together in one directory, named “mesh”. Inside of this directory, each server has its own config file, named like $hostname.cfg. There is also a mesh.cfg, which groups all of the servers together in a host group. The $hostname.cfg files look like this:

 define host{
        use                     generic-host
  	  host_name              	m-app1 
  	  alias                   m-app1

define service{
  	  use                             generic-full
  	  host_name                       m-app1
  	  service_description             PING
  	  check_command                   check_ping!100.0,20%!500.0,60%

define service{
  	  use                             generic-full
  	  host_name                       m-app1
  	  service_description             DISKUSE
  	  check_command                   check_nrpe!check_df

Each server has a host definition at the top, and all of the services that are monitored on that server at the bottom. The first section’s line “use generic-host” calls the “generic-host” template from the generic.cfg file above. Each subsequent “define service” section has a “use” line that also calls the templates defined in generic.cfg. Putting each server in its own file makes it very easy to add and remove servers from Nagios. To remove them, just remove (or, safer, rename) the $hostname.cfg file and delete the name from the $groupname.cfg file. It’s also very easy to script the creation of new hosts given a list of host names and IP addresses.

The mesh.cfg file contains the hostgroup configuration for the group:

define hostgroup{
   	 hostgroup_name  mesh
   	 alias           Mesh Production
   	 members         mdbs1,mdbs2,mdbs3,mdbs4,mdbs5,mdbs6,mdbs7,m-app1,m-app2,m-app3,m-store1,m-store2,m-nfs1,m-nfs2

This file is not as important, but it makes the Nagios web interface a little more helpful.

You’ll also notice that the check_command line above contains “check_nrpe!check_df”. This means that I use the nrpe (Nagios Remote Plugin Execution) add-on to actually monitor the services on the remote hosts. Each server has nrpe installed, and has one configuration file (/usr/local/nagios/etc/nrpe.cfg). The nrpe.cfg file has a corresponding line that says

command[check_df]=/usr/local/nagios/libexec/check_disk -e -L -w 6% -c 4%

This translates the check_df command sent by the check_nrpe command into the longer command defined above. This makes it easy to install and configure nrpe once, then zip up the /usr/local/nagios directory and unzip it on all new servers.

Nagios is nearly limitless in its abilities, but but because of the complexity of its configuration it can be daunting to newcomers. This setup is designed to make it just a little bit easier to understand, and easier to script.

Blizzard 2009

100_1931, originally uploaded by jonbuys.

Iowa got its first big storm of the winter season yesterday, and as of right now its still going on. We couldn't go anywhere even if we wanted to. We got about 13" of snow so far, but the wind gusts up to 50mph are the big problem. Just about everything is shut down, schools, work places, and even some of the larger roads.

Good day to get caught up on somethings I've been meaning to get done.

New SysAdmin Tips

My answer to a great question over at serverfault.

First off, find your logs. Most Linux distros log to /var/log/messages, although I've seen a couple log to /var/log/syslog. If something is wrong, most likely there will be some relevant information in the logs. Also, if you are dealing with email at all, don't forget /var/log/mail. Double-check your applications, find out if any of them log somewhere ridiculous, outside of syslog.

Brush up on your vi skills. Nano might be what all the cool kids are using these days, but experience has taught me that vi is the only text editor that is guaranteed to be on the system. Once you get used to the keyboard shortcuts, and start creating your own triggers, vi will be like second nature to you.

Read the man page, and then run the following commands on each machine, and copy the results into your documentation:

cat /etc/*release*
cat /etc/hosts
cat /etc/resolv.conf
cat /etc/nsswitch
df -h
ifconfig -a
free -m
crontab -l
ls /etc/cron.d
echo $SHELL

That will serve as the beginnings of your documentation. Those commands let you know your environment, and can help narrow down problems later on.

Grep through your logs and search for "error" or "failed". That will give you an idea of what's not working as it should. Your users will give you their opinion on whats wrong, listen closely to what they have to say. They don't understand the system, but they see it in a different way than you do.

When you have a problem, check things in this order:

  1. Disk Space (df -h): Linux, and some apps that run on Linux, do some very strange things when disk space runs out. It may seem unrelated, until you check and find a filesystem 100% full.

  2. Top: Top will let you know if you've got some process that's stuck out there eating up all of your available CPU cycles. Nothing should consume 99% CPU for any extended period of time. If its a legitimate process, it should probably fluctuate up and down. While you are in top, check...

  3. System Load: The system load should normally be below 3 on a standard server or workstation. The system load is based on CPU, memory, and I/O.

  4. Memory (free -m): RAM use in Linux is a little different. It's not uncommon to see a server with nearly all of its RAM used up. Don't Panic, if you see this, it's mostly just cache, and will be cleared out as needed. However, pay close attention to the amount of swap in use. If possible, keep this as close to zero as you can. Insufficient memory can lead to all kinds of performance problems.

  5. Logs: Go back to your logs, run tail -500 /var/log/messages | more and start reading through and seeing what's been going on. Hopefully, the logs will be able to point you in the direction you need to go next.

A well maintained Linux server can run for years without problems. We just shut one down that had been running for 748 days, and we only shut it down because we had migrated the application over to new hardware. Hopefully, this will help you get your feet wet, and get you off to a good start.

One last thing, always make a copy of a config file you intend to change, and always copy the line you are changing, and comment out the original, adding your reason for changing it. This will get you into the habit of documenting as you go, and may save your hide 9 months down the road.

Linux Hidden ARP

To enable an interface on a web server to be part of an IBM load balanced cluster, we need to be able to share an ip address between multiple machines. This breaks the IP protocol however, because you could never be sure which machine will answer for a request for that IP address. To fix this problem, we need to get down into the IP protocol and investigate how the Address Resolution Protocol or ARP, works.


Comparing two server operating systems, like SuSE Linux Enterprise Server (SLES) and RedHat Enterprise Linux (RHEL), needs to answer one question, “what do we want to do with the overall system”? The version of Linux running underneath the application is immaterial, as long as the application supports that version. It is my opinion that we should choose the OS that supports all of our applications, and gives us the best value for our money.

Writing about Jekyll

I’m writing an article for TAB about my new blogging engine, Jekyll. I’ve taken most of the reliance on the command line out of dealing with Jekyll on a day to day basis, and instead have a few Automator workflows in the scripts menu in the Mac menubar. It’s a great setup, I’m really enjoying it. I’m sure there will be quite a bit of enhancement yet to come, but my initial workflow looks like this:

  1. Click “New Blog Post”
  2. Write the article
  3. Click “Run Jekyll”
  4. Make sure everything worked using the local webrick web server.
  5. Click “Kill Jekyll”
  6. Click “Sync Site”

Here’s what I’ve got so far in the automator workflows:

New Blog Post

First, I run the “Ask for Text” action to get the name of the post. Then, I run this script:

NAME=`echo $1 | sed s/\ /-/g`
POSTNAME=`date "+%Y-%m-%d"-$NAME`
touch $POST_FQN
echo "---" >> $POST_FQN
echo "layout: post" >> $POST_FQN
echo "title: $1" >> $POST_FQN
echo "---" >> $POST_FQN
/usr/bin/mate $POST_FQN

Run Jekyll

First, I run this script:

cd /Users/$USERNAME/Sites
/usr/bin/jekyll > /dev/null
/usr/bin/jekyll --server  > /dev/null 2>&1 &
/usr/local/bin/growlnotify --appIcon Automator Jekyll is Done -m 'And there was much rejoicing.'
echo "http://localhost:4000"

Followed by the “New Safari Document” Automator action. This runs Jekyll which converts the blog post I just wrote in markdown syntax to html, updates the site navigation, starts the local web server and opens the site in Safari to preview.

Kill Jekyll

Since I start the local server in the last step, I need to kill it in this step. This action does just that.

PID=`ps -eaf | grep "jekyll --server" | grep -v grep | awk '{ print $2 }'`
kill $PID
/usr/local/bin/growlnotify --appIcon Automator Jekyll is Dead -m 'Long Live Jekyll.'

This is entered in as a shell script action, and is the only action in this workflow.

Sync Site

Once I’m certain everything looks good, I run the final Automator action to upload the site:

cd /Users/USERNAME/Sites/_site/
rsync -avz -e ssh . USERNAME@jonathanbuys.net:/home/USERNAME/jonathanbuys.net/ > /dev/null
/usr/local/bin/growlnotify --appIcon Automator Site Sync Complete -m 'Check it out.'

This is also a single Automator action workflow. You’ll notice that I use Growl to notify me that the script is finished. This is also not really necessary, but it’s fun anyway.

Like I said, there’s a lot of improvement yet to go, but I think it’s a solid start. I’m at a point now where I’m tempted to start writing a Wordpress import feature, which seems to be the only major piece missing from the Jekyll puzzle. I’m not sure what this would take just yet, but I’ve got a few ideas. I haven’t tried uploading any images or media yet, but since everything is static, I assume it would just be a matter of placing the image in a /images folder and embedding it in html. So far, I’m having a lot of fun, and that’s what blogging is really all about.

The Unix Love Affair

There’s been times when I’ve walked away from the command line, times when I’ve thought about doing something else for a living. There’s even been brief periods of time when I’ve flirted with Windows servers. However, I’ve always come back to Unix, in one form or another. Starting with Solaris, then OpenBSD, then every flavor of Linux under the sun, to AIX, and back to Linux. Unix is something that I understand, something that makes sense.

Back in ‘96 when I started in the tech field, I discovered that I have a knack for understanding technology. Back then it was HF receivers and transmitters, circuit flow and 9600 baud circuits. Now I’m binding dual gigabit NICs together for additional bandwidth and failover in Red Hat. The process, the flow of logic, and the basics of troubleshooting still remain the same.

To troubleshoot a system effectively, you need to do more than just follow a list of pre-defined steps. You need to understand the system, you need to know the deep internals of not only how it works, but why. In the past 13 years of working in technology, I’ve found that learning the why is vastly more valuable.

Which brings me back to why I love working with Unix systems again. I understand why they act the way that they do, I understand the nature of the behavior. I find the layout of the filesystem to be elegant, and a minimally configured system to be best. I know that there are a lot of problems with the FSH, and I know that it’s been mangled more than once, but still. In Unix, everything is configured with a text file somewhere, normally in /etc, but from time to time somewhere else. Everything is a file, which is why tools like lsof work so well.

Yes, Unix can be frustrating, and yes, there are things that other operating systems do better. It is far from perfect, and has many faults. But, in the end, there is so much more to love about Unix then there is to hate.

Slowly Evolving an IT System

We are going through a major migration at work, upgrading our four and a half year old IBM blades to brand spanking new HP BL460 G6’s. We run a web infrastructure, and the current plan is to put our F5’s, application servers, and databases in place, test them all out, and then take a downtime to swing IPs over and bring up the new system. It’s a great plan, it’s going to work perfectly, and we will have the least amount of downtime with this plan. Also… I hate it.

The reason I hate it has more to do with technical philosophy then with actual hard facts. I prefer a slow and steady evolution, a recognition that we are not putting in a static system, but a living organism who’s parts are made up of bits and silicone. What I’d like to do is put in the database servers first, then swing over the application servers, and then the F5, which is going to replace our external web servers and load balancers. One part at a time, and if we really did it right, we could do each part with very little downtime at all. However, I can see the point in putting in everything at once, you test the entire system from top to bottom, make sure it works, and when everyone is absolutely certain that all the parts work together, flip the switch and go live. But… then what.

What about six months down the road when we are ready to add capacity to the system, what about adding another database server, what about adding additional application servers to spread out the load, what about patches?

Operating systems are not something that you put into place and never touch again. IT systems made up of multiple servers should not be viewed as fragile, breakable things that should not be touched. We can’t set this system up and expect it to be the same three years from now when the lease on the hardware is up. God willing, it’s going to grow, flourish, change.

Our problems are less about technology, and more about our corporate culture.

Teach A Man To Fish

As a general rule, I really don’t like consultants. Not that I have anything against any of them personally, it’s just that as a whole, most consultants I’ve worked with are no better than our own engineers and administrators. The exception that proves this rule is our recent VMWare consultant, who was both knowledgeable and willing to teach. Bringing in an outside technical consultant to design, install, or configure a software system is admitting that not only do we as a company not know enough about the software, we don’t plan on learning enough about it either. Bringing in a consultant is investing in that companies knowledge, and not investing in our own.

Regarding OS Zealotry

Today I found myself in the unfortunate situation of defending Linux to a man I think I can honestly describe as a Windows zealot. I hate doing this, as it leads to religious wars that are ultimately of no use, but it’s really my own fault for letting myself be sucked into it. It started when we were attempting to increase the size of a disk image in vmware, while Red Hat guest was running. It didn’t work, and we couldn’t find any tools to rescan the scsi bus, or anything else to get Linux to recognize that the disk was bigger. I was getting frustrated, and the zealot began to laugh, saying how easy this task was in Windows. Obviously, I felt slighted since I’m one of the Unix admins at $work, and decided I needed to defend the operating system and set of skills that pays the bills here at home. And so, we started trading snide remarks back and forth about Linux and Windows.

Personal Rules for Cocoa Happiness

  1. Understand every line of code written in my apps
  2. Use frameworks sparingly (see rule 1).
  3. Do not copy and paste code (see rule 1).
  4. Add lots of comments so I remember what I was doing at any given time.
  5. Manage memory as I go, don’t wait until I’m nearly finished and then go and “clean it up”.
  6. Draw out the application on paper before writing a single line of code.
  7. Search Apple’s documentation, CocoaDev mailing list archives, Google, and anything else I can think of before asking for help.
  8. When programming, quit Mail, Twitter, NetNewsWire, and IM. Turn on some non-distracting music in iTunes.
  9. Get a cup of coffee.
  10. Remember, “This is hard, you are not stupid.”

Ping from Cocoa

One of the features of Servers.app is that it pings the host and shows a little indicator for it’s status: green is good, red is dead. Getting that little feature in here was not quite as easy as I thought it would be. After searching the Apple documentation for what seemed like years, I stumbled across SimplePing. It was perfect, exactly what I was looking for. I dropped the two source code files into into my project, read through the documentation commented out in the header file and added the code to call SimplePing. It worked, and everything seemed fine. Except that it kept working, even when I knew for certain that the host did not exist.

So, I started digging through the source code for SimplePing.c, and found that instead of calling a standard error message, it called perror, which, according to the documentation, doesn’t return a value. This is fine if you want to log the ping results, but I wanted to ping the server and make a decision based on code. So, I changed a couple of lines of code from this:

if (error == 0) //was able to wait for reply successfully (whether we got a reply or not)
    if (gotResponse == 1)
		{numberPacketsReceived = numberPacketsReceived + 1;}

to this:

if (error == 0) //was able to wait for reply successfully (whether we got a reply or not)
    if (gotResponse == 1)
		{numberPacketsReceived = numberPacketsReceived + 1;}
	} else {
		error = 1;

Simply adding an extra else statement in there to return an error code gave my application something to work with. Now, from my application controller I can call SimplePing like this:

int systemUp;
systemUp = SimplePing(cString, 2, 2, 1);

After that, I can make decisions based on the value of the systemUp int. Now, it’s entirely possible that I’m doing this wrong, all I can say is that it works for me now, and it didn’t before.

Macs, Netbooks, and Education

What does it mean when an entire community springs up around hacking together a product that is not otherwise available? Apple has been adamant that it is not interested in the netbook market, but according to the many users who are breaking Apple’s EULA and installing OS X on Dell Minis, the market is there, and waiting.

Rumors have been circulating for some time now that Apple is working on a netbook. I wish I had some special insight or access to Apple’s inner-workings so I could confirm or deny those rumors, but all I can say is I hope so. To get everyone on the same page here, let me explain exactly what I mean when I say an Apple netbook. I’m talking about a small device with a ten inch (or smaller) screen, small physical keyboard, reduced hardware specs, running a legal, full copy of OS X. I’m not talking about an iPhone, or some kind of iPhone/MacBook hybrid. While its not clear if Apple would consider such a device or not, what is clear is that people would buy a $500 MacBook Nano (or NetMac?) in droves.

Jim Sanford

My Mama said if I’d be good, she’d send me to the store.
She said she’d bake some gingerbread if I would sweep the floor.
She said if I would make the beds and watch the telephone,
She would send me out to buy a chocolate ice cream cone.

And so I did, the things she said
And she made me some gingerbread.
Then I went out, just me alone
And I bought me a chocolate ice cream cone.

Now on the way home, I stubbed my toe upon a big ol’ stone.
Need I tell you that I dropped my chocolate ice cream cone.
A little doggy came along and took a great big lick.
So I hit that little doggy with a great big stick.
And he bit me, where I sit down.
And he chased me all over town.
And now I’m lost…can’t find my home.
All because of a chocolate ice cream cone!

DiggBar This

I’ve put a lot of work into this site. I’ve put thought into how I want the URLs to look, how the layout should feel, and since the site has my name on it, I wanted it to be good. I created a custom theme for the site which will purposefully only work here, and I’ve even done a bit of personal “branding” I suppose with the jb{ logo.

So, when I saw that Digg had decided to take a page out of 1999’s web play book and start framing sites inside of their DiggBar, I was more than a little annoyed. There may be only six people who read this site on a regular basis (Thanks guys!), but this site is entirely mine. The DiggBar removes the URL from the site you are reading and adds it’s own custom shortened URL, making it hard to bookmark, or really even remember where you are.


When I was younger, 20 years ago or so I suppose, the New Kids On The Block (NKOTB) were synonymous with cheesy pop music that was taking over our airwaves. They weren’t just a pop boy band, they were The pop boy band. I remember the thing was that if you were a guy and you were a NKOTB fan, it instantly meant you were gay. Which, for an adolescent boy just before his teens, that meant there was absolutely no way that this band’s music would ever willingly land on his ears. Rumors circulated regularly about the NKOTB being caught, red-handed no less, in one disgusting sexual tryst or another. One in particular that I remember was that one of the members had to have his stomach pumped because he was sick, and they found that it was full of sperm. That was the stigma attached to this band.

Spit and Polish

After spending a week with Linux as my sole computer, I find it very refreshing to come back home to my Mac. FedEx says my wife’s PC should be here tomorrow, so she can go back to Word 2007 and I can have Mactimus Prime back. It’s not that I didn’t enjoy working with Linux, I did, but I’ve found that once the geeky pleasure of discovering something new wears off, there are problems.

Tough to Turn Down

I’ve been using Linux for nearly a decade now. I first had a guy I met in a Navy school install it on my old IBM desktop. Back then, it was very hard to find the right drivers, and just about impossible to get on the Internet, seeing how almost every modem that shipped with a PC was a WinModem. X11 configuration was error prone to say the least, drivers for the sound card were hard to come by, and out in the rural English countryside where we lived, broadband was almost unheard of. Installing software could be a nightmare. Say I wanted to install a music player to listen to my CDs. The music player would have dependencies, certain libraries that needed to be installed, so I’d go and download the dependencies and try to install them, only to find out that the dependencies had dependencies! So, I’d download further dependencies, and eventually I’d be able to listen to my music. And then I’d try to launch something else, only to find out that in fulfilling the dependencies of the music player, I’d broken the dependencies of the other application that used to be installed and working.


Ask any mechanic, machinist, or carpenter what the single most important thing that contributes to their success is, and what they are bound to tell you is “having the right tool for the job”. Humans excel in creating physical tools to accomplish a certain task. From hammers to drive a nail to the Jaws of Life to pry open a car, the right tool will save time, money, and frustration. It’s interesting to note the contrast that people have such a hard time with conceptual tools. Software designed to accomplish a specific task, or several tasks, is often forced into a role that it may not fit into, making the experience kludgy, like walking through knee deep mud.

I’ve found this problem to be especially prevalent in business environments, where the drive to “collaborate” brings many varied and sundry applications into the mix. While hurrying to the next great collaboration tool they forget to ask the absolute most important question: What do we need this software to do?

To communicate effectively in a business environment, it is imperative to use the right tool for the job. To determine what the right tool for the job is, you first have to ask yourself exactly what the job is. Do you need ask a quick, immediate question from a co-worker? Is there a more detailed project question that you need to ask, and maybe get the opinions of a few others too? Do you have something that you need to let a large group of people know, maybe even the entire company? Each of these tasks is best suited to a different tool. Unfortunately, I’ve most often seen each of these tasks shoe-horned into email.

Email is a personal communications medium, best suited for projects or questions that you do not need immediate responses to. There have been many times when I’ve gone through my inbox and found something that didn’t grab my attention when it was needed, and by the time I looked at it was past due. Email is asynchronous, ask a question, and wait for a response whenever the receiving party has time.

If you do need immediate response, the best tool would be instant messaging. IM pops up and demands the receiving person’s attention. When requesting something via IM, the person on the other end has to make a decision either to ignore you or to answer your question. Long explanations are not a good fit for IM, but short, two or or three sentence conversations are perfect or it.

When considering sending something out to the entire company, keep in mind that email is a personal communications medium. Company wide email blasts are impersonal, and for the most part require no action on the part of the receiver other than to eventually read it. A better tool for this job is an internal company blog, accompanied by an RSS feed. RSS is built into all major browsers now, and could be built into the base operating system build for PCs. Every single time I get something from our company green team or an announcement from the CEO, I can’t help but think that a blog would be the best place for such formal, impersonal communications. A blog could be archived for searching, new announcements broadcast through RSS, and best of all accessible when the intended receiver has the time and attention to best appreciate the content. To me, company wide email is the same thing as spam, and for the most part, is treated as such.

One other form of internal communications which is far, far too often maligned beyond recognition is shared documentation. Technical documentation especially suffers from document syndrome, which is having a separate (often) Word file for each piece of documentation, spread out through several different directories on Windows shares, or worse on the local hard drive of whoever wrote it. Such documentation should be converted to a wiki as soon as possible. If you are writing a book, I hear Word is a fairly good tool to use. If you are writing a business letter, again, great tool. If you are documenting the configuration of a server, a word processor should not be launched. Word (or OpenOffice) documents have a tendency to drift, and are difficult to access unless you are on the internal network. Trying to access a windows share from my Mac at home through the VPN is something that I’ve never even considered trying. A wiki, is perfectly suited for internal documentation. They are a single central place to organize all documents in a way that makes sense, is accessible from a web browser, easy to keep up to date, and most importantly, searchable. Need to know how to set up Postfix? Search the internal wiki. Need to know why this script creates a certain file? Search the internal wiki. Everything should be instantly searchable. Perhaps search is not the most important feature of a wiki, perhaps the most important is the ability to link to other topics according to context. I can get lost in Wikipedia at times, jumping from one link to another as I explore a topic. The same thing can happen to internal documentation. This script creates this document for this project, which is linked to an explanation of the project, which contains links to other scripts and further explanation. Creating the documentation can seem time consuming, until you are there at 2AM trying to figure out why a script stopped working. Then the hour spent writing the explanation at 2PM doesn’t seem so bad.

One of the first things I did when starting my job was to set up both a personal, internal blog and a shared wiki for documentation. I used Wordpress for the blog, and MediaWiki for the wiki. Both are excellent tools, and very well suited for their purpose. If I were a manager, I’d encourage my team to spend 15 minutes or so at the end of the day posting what they did for the day in their personal blog. Could you imagine the gold mine you’d have at the end of a year or so? Or the resources for justifying raises. Solid documented experience with products and procedures, what works and what doesn’t. The employee’s brain laid out.

Internal moderated forums is something that I haven’t tried yet, but I can see benefits to this as well. They’ve been used on the Internet for years, and I can imagine great possibilities there, especially for problem resolution. How about a forum dedicated to the standard OS build of PCs? Or one for discussing corporate policies?

Blogs, wikis, forums, and IM are tools who’s tasks are far too often wedged into email. If an entire organization begins to leverage using the right tool for the job, the benefits would soon become apparent. Then you’d wonder why you ever did it the other way at all.

Shell Script Style

My co-worker and I spent the better part of yesterday afternoon going through a former employee’s shell scripts to try to determine what they were and what he was trying to do. The script worked, for a while, but there were several mistakes. The mistakes were not in strict syntax, they were in style. Here are a few simple rules to follow to write great scripts:

  1. Always, always, always start off each and every script with a shbang line: #!/bin/sh. Starting off your script with this line tells your shell where to find the interpreter for the commands in the script. Without this line, the script is using your user’s existing shell, the one you are typing in at the moment. This is bad because you are sharing environmental variables, and maybe changing environmental variables outside of your script, and not keeping it self contained and portable.

  2. Keep your script self contained: If at all possible, try to avoid writing files in different directories. Or, even better, try to avoid writing files at all. Use variables when you can, write files when you have to.

  3. Avoid sourcing other scripts or files containing functions: I read about this method in Wicked Cool Shell Scripts, but I disagree that it is as useful as they say. Writing a custom function to send an email is a great idea. separating it out of the script you are working on at the time is not. Again, keep the script self contained. There are obvious exceptions to this rule. If your function is over 50 lines of code, and reused in multiple other scripts, then by all means, source it. If your function is 10 lines, create a vi shortcut for it and add it to the top of the script.

  4. Comment tasks: Each block of code in your shell script is meant for a specific task. Add a comment for this block. Make it easy to read, and simple to understand. Assume that you will not work there forever, and someone else will need to read your code and make sense out of it. Also assume that in a year, you will forget everything you did and why you did it and need a reminder.

  5. Keep it simple: Scripts should flow logically from top to bottom. If you are creating functions, make it obvious using a comment. Reading a script should be as easy as reading a book, if it’s not, then you are intentionally making things overly complicated and difficult to read.

  6. End each script with #EOF: This is purely a matter of taste, but I find it adds a nice closure to the script.

The easiest thing to do is to create another script who’s purpose in life is to create new scripts. Couple this script with a vi shortcut (mine is ,t) to create the skeleton of the script and you can quickly create powerful, well formatted, easy to read scripts. Here’s an example of mine:

# scripty.sh: This script creates other scripts
# Created: 25 Feb. 2009 -- inbound@jonathanbuys.net 

# A place for variables
VAR1="Set any variables at the top"

# A place for functions
    echo `date`
    echo "Whatever's Clever!"

# Get down to writing the script

echo $VAR1
echo $DATE
# etc...


This article doesn’t talk about syntax, only style. There’s plenty of help with syntax available on the Intertubes. Also, this is my style, as you progress as a sysadmin or scripter of some sort or another, you are bound to come up with your own style that suits you. My style is based on the documentation at grox.net. My style has evolved over time, as will yours, but this is a good place to start.

Systems Administrator

From time to time I’m asked by members of my family or friends of mine outside the tech industry what it is that I do for a living. When I respond that I’m a sysadmin, or systems administrator for Linux and UNIX servers, more times than not I get the “deer in the headlights” look that says I may as well be speaking Greek. So, for a while, I’ve taken to saying “I work in IT”, or “I work with computers, really big computers” or even “I’m a computer programmer”, which isn’t exactly accurate. Although I do write scripts, or even some moderate perl, I’m still not officially a programmer. I’m a systems administrator, so, let me try to explain, my dear friends and family, what it is I do in my little box all day.

First, some basics, let’s start at square one. Computers are comprised of two parts, hardware and software. Sort of like the body and soul of a person. Without hardware, software is useless, and vice-versa. The most basic parts of the hardware are the CPU, which is the brain, the RAM, which is the memory, the disk, which is a place to put things, and the network card, which lets you talk to other computers. For each of these pieces of hardware there needs to be some way to tell them how to do what they are intended to do. Software tells the hardware what to do. I forgot two important pieces of hardware: the screen and the keyboard/mouse. They let us interact with the computer, at least until I can just tell it what to do Star Trek style.

Getting all of these pieces of hardware doing the right thing at the right time is complicated, and requires a structured system, along with rules that govern how people can interact with the computer. This system is the Operating System (OS). There are many popular operating systems: Windows, OS X, and Linux are the big three right now. The OS tells the hardware what to do, and allows the user to add other applications (programs) to the computer.

Smaller computers, like your home desktop or laptop have network cards to get on the Internet. The network card will be either wired or wireless, that doesn’t really matter. When you get on the Internet, you can send and receive information to and from other computers. This information could be an email, a web page, music, or lots of other media. Most of the time, you are getting this information from a large computer, or large group of computers that give out information to lots of home computers just like yours. Since these computers “serve” information, they are referred to as Servers.

Large servers are much like your home computer. They have CPU, RAM, disk, etc… They just have more of it. The basics still apply though. Servers have their own operating system, normally either Windows, Linux or UNIX. Some web sites or web services (like email) can live on lots of different servers, each server having its own job to do to make sure that you can load a web page in your browser. To manage, or “administer” these servers is my job. I administer the system that ensures the servers are doing what they are supposed to do. I am a systems administrator. It is my responsibility to make sure that the servers are physically where they are supposed to be (a data center, in a rack), that they have power and networking, that the OS is installed and up to date, and that the OS is properly configured to do its job, whatever that job may be.

I am specifically a UNIX sysadmin, which means that I’ve spent time learning the UNIX interface, which is mostly text typed into a terminal, and it looks a lot like code. This differs from Windows sysadmins, who spend most of their time in an interface that looks similar to a Windows desktop computer. UNIX has evolved into Linux, which is more user friendly and flexible, and also where I spend most of my time.

Being a sysadmin is a good job in a tech driven economy. I’ve got my reservations about its future, but I may be wrong. Even if I’m not, the IT field changes so rapidly that I’m sure what I’m doing now is not what I’ll be doing 5-10 years from now. One of these days, maybe I’ll open a coffee shop or a restaurant, or I’ll finally write a book.

A Work in Progress

A few days ago I decided that I was not going to use anyone else’s theme on my site. It happened after I stumbled across another site using the exact same theme as mine. Unavoidable really, as long as you are using someone else’s theme. So, the decision was to either stop using Wordpress, or to design my own theme. I love Wordpress, so I decided to go with the latter.

Designing a web site is a strange mix of code and graphic design. In my case, I’ve had to go back to php, a language I left a long time ago, and start learning CSS. Since I’ve been fooling around in Cocoa for quite a while, going back to php is just painful. Objective-C is a beautiful programming language. Mixing php and html… well, that’s just plain ugly. However, that being said, it’s familiar territory, so I almost feel like I’m coming home. One concept that I’ve learned with Cocoa is the Modal-View-Controller method, basically separating out the presentation code from the application code (yes, I know there is a lot, lot, lot more to it than that… no I’m not going to get into it here), using CSS kind of reminds me of the MVC method, in your php/xhtml code you define what objects are going to be displayed, and in CSS you define where and how to display them. I like the separation… keeps it clean.

At any rate, I’ve been busy coming up with the overall look and feel of the site. One thing I believe about software is that simplicity always wins. At least where I’m concerned it does, that’s why I use a lot of the apps that I use, because they are simple to use. Think about the Google home page. Simple, and it wins.

I’d appreciate any comments on the design, and please keep in mind this is only a very early mockup. Also, I’m going to be using this as my avatar for everywhere that I’ve got an account online: A friend of mine, who actually is a designer, laughed when I told him about the tools I’ve been using to do the design so far. First, the initial concept was created in OmniGraffle. From OmniGraffle, I’d export it as a Photoshop file and open it in Pixelmator to add the leaves and other touch ups. Right now, that’s as far as I’ve got. I’ll finish the design in the next couple of days, and then move into chopping the file up and getting deep into some code. Hopefully, I’ll have this finished in two or three weeks.


For better or worse, we are starting to put Ubuntu JeOS images into production in our network. Starting off, we will only put these systems in for our non-IBM services, no WebSphere or DB2, as IBM doesn’t officially support this configuration yet, but for everything else, JeOS looks like a perfect fit.


It was June of 1996 when I arrived in Rota. The Spanish sun was bright as I stepped off the creaky military aircraft, and I realized that this day would hold a lot of firsts for me. Today, I was going to meet my ship.

The GI Hole

In December 1995 I was halfway through boot camp, a time called service week. Service week was when the recruits went to work in the galley. Some served food, other mopped the floor, and still others handed out miniature boxes of cereal.

Consulting in Coralville

In 2007 I spent two months working as a network engineer for a small tech consulting company. The work there was amazing. They had built a long range, city-wide wireless network, and were providing broadband to rural areas. They were also providing a “one stop shop” for everything IT for small businesses in town. The people who built this business were energetic and bright, and I was lucky to have worked there. I could have stayed there longer, made a career out of it, or perhaps launched my own solo career from there. That’s not what happened, I left after two months. The reason: I was scared to death.

First Things First

My phone went through the wash today.  Turns out it happened first thing this morning.  I really should be more careful about cleaning out my pockets before throwing something in the washing machine, but to be honest, I never liked that phone to begin with.  It had a faulty battery, and a faulty USB charger, so it would almost never fully charge and when it did, it would drain quickly.  The Bluetooth on it didn’t work either.  So, it wasn’t that great of a phone, and now its gone, and good riddance to it.  Now, I’m faced with the prospect of finding a replacement phone, but this comes with complications.

US Cellular has me for another 10 months.  My contract doesn’t end with them till November.  I can cancel my contract for $70, and I may wind up doing just that, but then I’ll also have to replace my wife’s phone as well.  US Cellular is a good phone company, but when I think about spending money on a phone, its hard to justify purchasing anything other than an iPhone, which takes US Cellular out of the equation.  I’m eligible for an “upgrade” in May, when I can get a new phone for a reduced cost from US Cellular, but if I want a phone between now and then, I’m paying full price.  That’s $159.95 for a Samsung SCH-u340, which boasts an internal antenna and a VGA camera.  When I look at that price, and think that I could get a refurbished iPhone for $9.95 <it>less</it>, it makes my wallet hurt.  

So, if I buy an iPhone, won’t I be chaining myself to massive monthly service charges from AT&T?  Well, maybe, maybe not.  We pay right around $100/mo. for our service now.  This is for 1000 minutes shared between our two phones.  Looking at our phone bills, I find that we do not come anywhere close to using 1000 minutes.  We would be perfectly suited to the At&T 450 minute family plan, which is right around $60/mo.  Couple this with the iPhone’s required $30/mo data plan, and we are at $90/mo.  Of course, I’d have to have two data plans… because there’s no way my wife would let me have an iPhone and not get her one as well, so that’d bring the grand total up to $120/mo.  So, $20 more per month than what we are paying now.  Since I’d have to cancel both of our accounts at US Cellular to get this to work, that would cost $140.  The iPhones, even refurbished, would cost $300.  So, for the first month, to get going, we are looking at $560.  We are not poor, but we are not rich either, and that amount of money needs to be well thought out, which brings me to the basement.

We’ve got an unfinished basement that I’m working on as time and money allows.  I’ve built a couple of walls, made lots of plans, taken lots of measurements, and bought some tools.  I’m a long, long way from being able to have a couple of my kids move their rooms down there.  The basement is also where I have my desk, which holds my monitor and Time Machine drive, and where I do most of my programming at.  Programming takes a lot of concentration, a lot of studying, and most of all… lots and lots of time.  Recently, I’ve been thinking that the unfinished basement would be much, much easier to concentrate in, if it were a little closer to being finished.  

The phone going in the wash today has actually been a conduit for me re-aligning my priorities.  I’m still very intent on finishing my application, but I think I would be more comfortable, and therefore be able to concentrate on development better, resulting in a better product, if I finish the basement first.  Since I’m going to have to adjust the budget for the new phone, and since I’m going to need money to finish the basement, I’m thinking that the new phone is going to have to wait.  Work gives me a cell phone every other week so I can be “on-call”.  Normally I simply forward the phone over to my personal phone so I don’t have to look like some kind of geek Batman carrying around a utility belt full of gadgets.  Now, since I don’t have a personal phone, I’ll just carry the one they give me.  I suppose I’ll also have to start carrying the pager again.  Yes, a pager, and party like it’s 1989.  

So, I’ll live without a cell phone for a while, and I’m also going to put development on hold for a while.  Not entirely, I’ll still have a little time in the morning, but I’ll probably put that time to use blogging either here or over at The Apple Blog.  The rest of my time, and the rest of my money, is going to go towards finishing the basement.  After that’s done, I’ll be in a much better position to move to an iPhone, and finish developing Go in peace and comfort.


Last summer I decided to dive into programming and give it everything I’ve got. For months, I would get up at 5 and pour through the Hillgass book, every page, every challenge. I’d revisit it at night, after the kids were in bed, and code till I couldn’t stay awake any more. I finished the book, and started coding my first real application. It was then that I found out how very little reading one book gave you. Hillegass says he gives you 80%, I’m thinking it’s more like 50%, tops. I reached out to the Cocoa Dev mailing list for help, and eventually even went to a CocoaHeads meeting with the local chapter. Meeting some “real” developers, I despaired. There was far, far too much that I didn’t know, I felt that it would take me an entire lifetime to learn what I needed to know. I gave up, wrote Goodbye Cocoa, and focused on something else.

The Sorry State of Enterprise Software

I’ve been unlucky enough to be working with quite a few pieces of so called “enterprise” software, the worst of which I’ve been working with lately is called the Tivoli Workload Scheduler. TWS is, at its core, a glorified cron. It is a scheduler, you can create jobs, or scripts, and have them executed at given times. You are supposed to be able to cascade jobs, and create dependencies between jobs. This is all well and good, but there are some serious problems with this software.

The first problem is the price. List price for TWS is $33/value unit. IBM bases its pricing scheme on how many CPU cores are in the server that you install their software on, 100 value units per single core CPU, and 50 value units per core for dual or quad core CPUs. So, if you have four servers, and each server has four quad-core cpu’s in them, that comes out to around $26,400. I think we just went ahead and bought 1000 value units up front. That’s a fairly good sized amount, and that does not include the cost of the consultant its going to take to install, configure, and actually use the software.

Why tie the cost of the software to the number of cores in the system? TWS doesn’t use CPU resources to actually do any work, it passes off the work to other applications, TWS simply schedules them to be run. The price would almost be bearable, if the software actually worked. For $26,000 I’d think that it ought to make me coffee and pancakes in the morning. The reality is that after several months of enduring the software, it still doesn’t work properly.

The end user of the system has been trying to add event rules that fire off an email if a job doesn’t end correctly. Wow, that’s like, what… one line of shell script? But, since this is the TWS, we have to put in a call to IBM. IBM will call back, and ask for a ton of information. They’ll ask for directories that don’t exist, ask you to run commands that may or may not work, and generally take up a lot of time. Meanwhile, I’m starting to think that we are actually beta testing this software for IBM, and they just didn’t bother to tell us.

And then there’s the user interface. The UI, like many IBM applications, is quite obviously built on Java, evidenced by the length of time it takes to launch. Once it is launched, there are cascading left to right areas of a single window that allow you to perform separate tasks. At $work, I’ve got a 22” monitor, and this is the only application that I expand to full screen. It needs it. The application, called the “Job Scheduling Console” provides it’s own tabbed MDI interface. It is extremely confusing. Part of the confusion is that evidently the developers decided that there were too many options in the man application window, and chose to add a second interface to TWS through it’s integrated WebSphere application server. The second interface, also Java, is accessed through a web browser. Unfortunately, not just any web browser, it seems to only support Internet Explorer. I tried to access it first through Chrome, which did not work at all, and then through Firefox, which almost worked, but there were pieces of the application missing. IE worked well. The web interface is just as jumbled as the fat client on the desktop. Buttons seemingly randomly placed, some options hidden in drop down menus and others placed either above or below the data.

There is no clear, obvious method to accomplish anything with this user interface.

And that is not all my friends, oh no, that is not all. You must also have access to the command line on the server where TWS is installed. Even on the command line TWS is not a good citizen. There is no man page or online help shipped with the application, you have to load a ton of special environmental variables, and they provide scripts that launch a faux-shell that only accepts certain commands. One such command, conman, offers the ability to view the logs in real time (why, for the love of God, do you not log everything to syslog?), but only if you enter the command “con se” at the conman prompt. Also, you should enter “lev=4” to make sure you get all the logs. Proper logging in an application can be a lifesaver, and it could have been an area where TWS could redeem itself somewhat. That is not what has happened. The “con se” command only works sometimes. Other times it simply says that it submitted that command to be processed and returns you to your prompt. Great, thanks… so where’s my logs?

Having multiple interfaces to the application is fine, if you could accomplish everything needed in any one interface. However, that is also not the case. You need all three, and the end user must switch between the web interface and the fat client, and I as the administrator must switch between the web client, the fat client, and the command line to try to coax this monster into doing what it is supposed to do. Which is… schedule jobs. That’s really all this is supposed to do, schedule jobs to run. I don’t think it should be this hard.

Take these points into consideration in the light of the cost of the application. Now, let your jaw slowly close and realize that IBM can charge this much because it has found a market that no one else is tapping. TWS is only one example of horrible “enterprise” software, there’s a lot more of it out there. Personally, I see an opportunity here. An opportunity for well thought out, beautifully crafted software that works well, is easy to use, and gets the job done.

Visual Thinking

The ability to visualize a complex system is key to a real understanding of it. To me, this applies to computers and technology. To Daniel Tammet, this applies to numbers and letters, on a far, far more vast scale. Daniel is a savant, an extraordinary person who pushes the boundaries of what we believe we know about human capability and learning. What he has to say rings a bell, because how he views his numbers and letters is similar to how I understand the inner workings of a computer. I can visualize what is going on, or what I want to happen. I can do this because I’ve worked and studied the computer field for years, and because I enjoy the work. What I’ve found is that there is a distinct difference between understanding the technology and memorizing what happens when you click a button.

If you work in the tech industry, memorizing technology is a bad idea. Technology changes, it evolves and grows. It is better to understand the attitudes and purpose of the technology. Networking is a great example. I started out learning about wave propagation theory in the Navy, and about how we could get data from the size, shape, or velocity of the wave. Later, when I went on to learn TCP/IP networking, I found that the data was still transmitted the same way, as 0 or 1, but how it was decoded was different. Then the stack, then the applications, then scripting, and now, I’m learning a high level programming language, and its finally starting to click.

The thing is, I couldn’t have learned these skills if I didn’t have a visual image in my mind about how it worked under the gloss of the computer screen. I can’t imagine trying to use a computer, much less program one, without at least a passing knowledge of what happens when you click that mouse.

Then again, to 99.999% of people, it doesn’t matter, and really shouldn’t. Computers should be so easy to use that you don’t have to learn a new skill to use one effectively. They should be as self explanatory as toasters. Unfortunately, they are not. Windows 7 is coming out this year some time, and it will sport a new user interface which its users will have to learn all over again. Many, many of them will simply try to re-memorize what button does what, and what order to click things in. You shouldn’t have to learn why the computer works the way it does, but it certainly doesn’t hurt. In the end, it makes things much easier too.

Songbird Media Player

Songbird is a very young product with a very bright future. The Mozilla based media player has come a long way since first releasing a beta, unfortunately to unseat the ruling titan iTunes, Songbird still has a very long ways to go. Songbird is open source, packed with features, and seemingly infinitely expandable through various add-ons and web integration. Also, like the rest of the Mozilla suite, Songbird is cross-platform, a point that becomes glaringly obvious the moment the app is launched.

Merry Christmas

“And the Grinch, with his Grinch-feet ice cold in the snow, stood puzzling and puzzling, how could it be so? Christmas came without ribbons. It came without tags. It came without packages, boxes or bags. And he puzzled and puzzled ‘till his puzzler was sore. Then the Grinch thought of something he hadn’t before. What if Christmas, he thought, doesn’t come from a store. What if Christmas, perhaps, means a little bit more.”

MobileMe is not a Blogging Platform

I thought I’d try OSZen on MobileMe yesterday, to see if I could consolidate even more of my online accounts. Unfortunately, the limitations of both iWeb and RapidWeaver became quickly apparent. I pointed 1and1’s DNS servers at MobileMe, and uploaded an iWeb site. I liked the theme, but the first thing that struck me as odd was the URL. In iWeb I configured the site’s name to be OSZen, and to use the Blog page as the home page, but the URL turned out to be http://oszen.net/OSZen/blog/blog.html which for the home page was just ridiculous.

The Coffee Cup

I’ve had this coffee cup on my desk at work for the past year or so now. It’s just a plain white cup, with the Ubuntu logo on it. I got it from CafePress. I loved it, for one, because the Ubuntu logo is great. Best Linux logo out there. I also loved it because as I was thinking about how to solve one problem or another, the cup was normally there with hot coffee waiting to be sipped as I pondered the solutions. Today I picked up the cup, walked towards the coffee pot, and dropped the cup. My wonderful Ubuntu coffee cup shattered as it hit the floor.

I loved that cup, so I didn’t want to break it. However, it seems appropriate, as today I also switched back to Windows at work. I’ve been running Ubuntu as my primary desktop at work for several months, and running XP in VirtualBox when needed. Lately, I’ve been needing the VM more and more, as I do more diagramming and planning in VMWare Infrastructure Client and Visio, both Microsoft centric applications. Also, rumor has it that in the next couple of months we will be replacing our aging Lotus Notes servers with Microsoft’s Exchange 2007. IBM released a Linux native Notes client which supports Ubuntu, and really works great. When we made the switch to Exchange, I was hoping to use the Evolution client that comes with Ubuntu. Unfortunately, Microsoft changed the MAPI standard for communicating with the server in Exchange 2007, and there is no supported Linux client. Which left me with two choices. Run Outlook in my VM, or moved everything back to Windows and conform to company standards. I debated this in my head for a couple of weeks, but in the past three days I’ve had X crash on me three times in Ubuntu. When X crashes, it takes all of my X applications with it, along with the data… it’s like Windows ‘95 all over again.

X crashing for no apparent reason was the nail in the coffin for me. I moved all my data over with a USB drive, and Monday I’ll format the Linux partition and fdisk /mbr from the XP recovery console.

I’ve really enjoyed using Linux, but honestly, it’s kind of relieving to be back in a supported environment again. There are still quite a few desktop tools missing from Ubuntu that are available on Macs and Windows. My current favorite so far is Evernote, with the aforementioned Visio running a close second. Launchy is nice… not as nice as Quicksilver or Gnome-Do, but nice.

Mentioning Gnome-Do brings up another point. Gnome-Do has been acting up lately, catching on something or other and eating up 99% CPU. The developers are aware of the problem, and are working on a solution. However, using Gnome-Do as an example, the very idea of what they are doing with “Release Early, Release Often”, completely goes against the grain of a business desktop. Any Linux desktop will contain beta-quality code, and when I’m relying on a computer to do my job, I can’t have it acting as a beta tester. Ubuntu is doing lots of cool stuff with 3D desktops and cutting edge software, but I don’t need it to be cool, I need it to work. Reliably.

One last note about why I’m not using Ubuntu at work any more. My computer is a Dell laptop, mostly used in a docking station, attached to a 22 inch monitor. I noticed after a while that my laptop was getting really hot in the docking station, and I couldn’t tell if Ubuntu was reading the docking station correctly or if it was displaying on both the internal monitor and the external monitor. When I popped the lid on the laptop, the monitor either came on suddenly or was on the entire time, and the keyboard was hot to the touch. In the Gnome “Screen Resolution” preferences I found that I could turn the monitor off from there, and I think that solved that issue, but I’m not sure. I’d hate to think that I was actually causing the hardware harm by running linux on it. I don’t want to spread FUD, but if its true, its true. When I’m running Windows, I don’t have that problem at all.

So, now I’m looking for a new coffee cup… something to inspire me, and be my companion in my little beige box. Whatever the new design is, it needs to be something that will last, something reliable, and something that’s in it for the long haul. Ubuntu has been good to me, both the OS, and the coffee cup, but in the end, they both broke, and I’ve got to move on.

How to Fix Linux

It’s been nine years since I first installed Linux on a computer of mine. It didn’t last long back then, since I actually wanted to use the computer for surfing the web, sending email, and playing games. Linux has come a long way since then, and now it’s a reliable desktop system at work. However, my system is reliable (and enjoyable) because I am a geek, and I know exactly what it needs to make it run smooth.


I wrote this last year and never posted it. I’m glad I found it and can post it now.

Build Something Better

What would it take to change computers? What would it take to build something truly revolutionary in a time where most of the design philosophy of a computer is taken for granted?

Account Pruning

I’m a geek. Understanding that little fact puts me a little closer to being in touch with myself, and understanding that I’ve got a habit of trying out every new service or technology that comes along. That’s fun, but in the case of online services, I wind up with accounts all over the place. So, the past few days I’ve been pruning my online accounts down to what I really need.

Nagios Check Scheduling

Or, maybe a better title for this would be “They rebooted the server, why didn’t I get a page?” I’ve had that question asked of me a few times, and I’ve never had a good answer, so I thought I’d take a closer look at Nagios and see what is going on.


Inspired by Mark Pilgrim’s Essentials post, I thought I’d come up with my own list of essential software.

End of an Era

The hard thing about keeping a job in the technology field is that it is constantly changing. Just this past summer $WORK fired several mainframe workers who could not keep up. They got stuck on one technology that they knew how to operate, and failed to evolve when the field did. Now I think its clear that another sector of the job market is on its way out, the one that I, and thousands of others occupy, the job title of systems administrator.

Poor Web Apps

I just spent the past 10 minutes trying to get this article I wrote for BrightHub posted using their online writers application. I’m not sure what language they are using, or what platform the site is running on, but I tried Chrome, Firefox, and finally, out of desperation, Internet Explorer 7, all with the same results. Almost every time I would try to preview the article before submitting it, the application would wipe out everything I just typed. Everything.

New Apple Hardware

There’s a lot to think about in the new MacBook line. The aluminum MacBooks are unquestionably what I wanted in the white MacBook that I have now: sturdy construction, fast graphics, and a sleek powerbook look to them. Apple has further blurred the line between their professional and consumer line, something they started with the aluminum iMac, continued with the MacBook Air, and now have completed with the MacBook.


Wow, nothing makes me want to max out my credit card like a Stevenote with some really great stuff.

System P

The more I learn about IBM’s P-Series UNIX systems, the more impressed I am. I’ve been a very harsh critic of them in the past, but that may have just been my ignorance of the platform. The P is, no doubt, expensive… however, when you look at what it can do, and at how many x86 systems you’d need to do the same thing, the P begins to justify its cost.

As an example, we are looking at building a new web hosting environment off of WebSphere. To accomplish this, we are looking at four database servers (DB2), and between six and eight application servers. The total cost for the project, not including the F5 switch, I’d imagine to be somewhere around $100,000. With that money, we could purchase one P-Series that would do everything we need one one box. That equates to less cabling, less administration, less network overhead, and a smaller footprint for the PCI auditors. One box, maybe four Logical Partitions (LPARs), and that’s it.

AIX, IBM’s version of UNIX, is another big win for the P-Series. Creating a m ksysb creates a bootable DVD clone from a running system. So, you can clone an LPAR and install it along with all the applications you have installed on a new P-Series. Very impressive, and I wish more systems had this feature built in. AIX has is peculiarities. SMITTY, the administration interface, is confusing and difficult to navigate, and expanding a logical volume on the fly requires more steps than I think should be necessary. Many of the shortcomings of AIX can be solved by installing the AIX Toolbox for Linux, which includes a lot of the basic Linux tools compiled for AIX. Like bash… I can’t live without my tab- completion and vi keyboard bindings! On the whole, AIX is an extremely stable operating system. Configuration is more complex than other systems, but once it’s set up, you can let it run for years without intervention.

I’ll be getting more in-depth with the a P550, P561, P570, and one more I’m not sure of the model number of. The next couple of months should be interesting.

Goodbye Cocoa

Some times, things come easy to me. I’d like to think that I’m somewhat blessed in that way, especially when it comes to various forms of technology. Back in the Navy, I found I had a knack for telecommunications, and I found that I could grasp the flow of the circuits through various media easily. I nurtured this technological edge, and turned it into a career as a systems administrator. It meant lots of long nights and many mistakes along the way, but it was fun, I enjoyed it. Like I said, some things come easy… but some things just don’t. For example, I have no mental capacity for sports. I enjoy playing every now and again, but I can’t keep track of who’s who and what’s what in this professional team or that college team. It just doesn’t come easy to me.

Moving to Ubuntu - F-Spot

I mentioned in my last post that I was giving up my MacBook so my wife could go to college, and (until I can justify the cost of another Mac) that leaves me with her Linux PC. After the first few days of using Linux at home,as opposed to managing Linux servers at work, here are my initial impressions.

My wife’s PC is a gigantic Acer laptop, with a 1.6 Ghz centrino processor and a one gig of RAM. Hooked up to my external monitor, keyboard, and mouse, the PC runs Ubuntu surprisingly well. I can’t enable the desktop effects, but since Gnome has built in compositing support now that’s not a problem. The install went smooth, all the hardware was properly detected, wireless, sound, monitors… everything worked.

Development Environments and Software Quality

In OS X, there is a small collection of very high quality software. This is a fact, and there is really no debating it. Mac software that was developed specifically for the Mac is generally well crafted and performs as advertised, every time. In comparison, in Linux, there is a very large collection of freely available software of varying quality. Some of it is outstanding, check my last post on F-Spot for an example, and some of it leaves much to be desired.

Ubuntu Scanning

My wife has recently gone back to college, and, seeing as she’ll need it much more than I do, I gave her my shiny, beloved MacBook. As compensation, I’ve got her old PC, running Ubuntu, which looks great on my 22 inch monitor. How long this will last, I don’t know. I’ve just recently started writing seriously again, and moving all of my “really important stuff” into Linux should give me lots to comment about as I note the differences between OS X and Ubuntu. However, I’ve heard rumor of MacBook Pro product refreshes… hummm….

On Graduation Day

In May of 1995 I should have graduated from high school in the rocky mountains of Montana. Then, in the following fall, say around August or September, I should have started my pursuit of a college degree. Finally, in May of 2000, I should have graduated from college with a bachelors degree in who knows what.

The Linux Box and Upgrading Java

As a general rule, I really don’t like to go outside of the box when it comes to Linux. And by that, I mean that I don’t like going outside of what is provided by what ever distribution you are using, be that SLES, Red Hat, or Ubuntu. A lot of people put a lot of work into making sure that the packages that are available for the distribution actually work in the distribution and do not interfere with any other apps. Linux will let you do what ever you want, but just because you can do something, doesn’t mean that you should.

Going outside the box can have disastrous results with Linux. Back in early 2000 and 2001 when I was installing SuSE and Mandrake on my old IBM box, I wound up in dependency hell more than once. If you’ve never been there, it goes something like this:

OK, I want to upgrade my music player to the latest version, so I’ll download the latest RPM. Wait, that failed, because it depends on a newer version of some library file that I don’t have, so I’ll go search the Internet and try to find that. OK, found it, downloaded the rpm, and it failed to install because it depends on a newer version of some other library file that I don’t have. Looks like there’s no RPM for that library, so I’ll download the source code and compile it. OK, ./configure; make; make install; Nope, that failed because of a gigantic list of dependencies that are not available! At this point, you have to make a decision: Do you go ahead and find the dependencies, or do you give up and have a drink instead. If you choose to go ahead, you download the source to a dozen different packages and install them, then compile your library, then compile your other library, then go to install the rpm to find that it fails because one of the applications you upgraded along the way is, get this, too new to support your music player, and the install still fails. Oh, and by the way, half of your other apps that used to work, don’t work anymore.

Open Formats

Remember the early days of networking… before TCP/IP became the standard protocol? Well, neither do I, but I’ve read about it. That’s years ago now, but back then, each computer manufacturer developed their own method of networking their machines together, and each method, or protocol, was incompatible with the other. Apple had AppleTalk, Novell had IPX/SPX, Xerox had XNS, and on and on it went. TCP/IP was born out of the desire to create a vendor independent network, which became known as ARPAnet, and later, the Internet.

This little history lesson is meant to illustrate the tremendous advantages there are to open standards. Would the Internet exist if it belonged to a single corporation? Not as it is today, no. These same ideas can be applied to several other forms of data on the computer; images, documents, music, etc… We now have the capability to keep almost all of our data in a format that is guaranteed to provide greater flexibility, so why isn’t Apple taking advantage of it?

For example, Mail, the venerable email client that comes with the Mac, provides suitable email functionality for most Mac users. Now that I’ve got several years of email stored on my Mac, I’d like to be able to keep those files in a format that is not subject to any corporation’s whims. I’d also like to be able to drop my mail folder on another platform and be able to open it up in a different client… interoperability. Another example is iPhoto, one of my favorites. Would it really be that difficult for Apple to design iPhoto so it stores its database in a reliable, documented format that is readable (and writable) outside the application?

This goes back to a central belief I have about data, and applications. While the application may belong to its author, the data it processes belongs to me, and it should be available to me in a well documented, open format. Open formats make sharing files easier, as they are capable of being supported on more platforms

How about giving Quicktime the ability to natively export to Ogg-Theora? Or allowing iTunes to use Ogg-Vorbis as its default media format? (DRM not considered here…) Pages? Keynote? How about some Open Document Format support? I really don’t think the move to open formats would be that big of a leap. Apple already includes several open source applications inside its server offering, and has built its core data framework around XML and SQLite, so why not open the rest of it up?

The other note worth mentioning is the high profile “switch to linux” news that has been making the rounds lately. With several long time Mac supporters moving to Linux citing problems with formats and a lack of openness from Apple, it seems to me that this is a problem that could be easily fixed. I’m not calling on Apple to open source OS X, I’m not even implying that, although open sourcing a few of the bundled apps might be a good thing in the long term

The world is becoming more aware, and times they are a changin. The world is knocking, dear Apple, its time to open up.

The Master Craftsman

The Master Craftsman works methodically, not slowly, not hurriedly. He has mastered the basics, and knows the essence of his craft. He has moved to a point where he can define his own methods, and doesn’t need to explain them to anyone, unless someone is wise enough to ask. The Master Craftsman enjoys the hardest, most complicated problems, and enjoys unravelling them piece by piece. He enjoys the challenge to his skill, and proves his worth again and again as he overcomes each obstacle.

Creative Uses for Wordpress

Where I spend my days ($WORK), we have multiple monitoring systems for just about every service on every server that we have. Many of these are Nagios, some are built in, and others are SiteScope. All of the systems generate email alerts that either go to our pagers, our email, or both. From time to time, management would ask a question like “How many pages do you get in a week on average”, which up till a couple of months ago, our answer was always “It just depends”.

My Optimized Windows Workflow

I love Linux, I really do. Compared to the older UNIX systems like AIX, HP-UX, and Solaris (who is trying really hard to catch up) Linux is head and shoulders above the rest. The main reason for this is that a lot of really smart people also love Linux, and try their best to make it the best server on the planet. For the most part, I’d agree that we are succeeding on that front. On the other hand, to date, I simply can’t run Linux on my desktop. If there are servers down, or an application fault somewhere, I need to be able to rely on my tools to be there for me. That’s why I run XP on my laptop.

Contextual Search

My personal browser of choice has almost always been Omniweb. Omniweb and I went through a tough time for a while when it (she?) was crashing frequently and generally having a tough time of it. The Omni Group has once again straightened things out, and she (yea, I’ve decided Omniweb is a she) is once again fast, sleek, and powerful. There is one small item about the browser that bothers me though, and that is the lack of a search function from the browsers contextual menu that pops up when you select a word and right click on it.

Starting Over

My wife wanted me to read something that she was writing the other day, so I sat down at her laptop on our table and read through it. While I was there, I happened to glance at her email, an old hotmail account, and noticed that she has emails going all the way back to ‘01. A quick glance at my gmail tells me that there is no way I can tell how far back my email goes, but I’m pretty sure that I’ve lost everything prior to ‘05 or so. I’ve been accused of having email ADD in the past, and I’m fairly certain there is a bit of truth to it. It seems to hold true for a lot of the technology in my life, I’m just never satisfied with it, and wind up tweaking, fiddling, and otherwise screwing around with my tools until they are either just right or completely screwed up and I throw the entire thing in the trash and start over.

This certainly holds true for my email, I have been through @aol.com, @hotmail.com, @yahoo.com, @mac.com, @inbox.com, @live.com, and finally, @gmail.com. It also holds true for my web sites. I’ve started 10 or 15 web sites throughout the years, starting with a geocities site back in… what, ‘99 or so? If I’d have stayed on top of it, I’d have managed to compile a decent amount of writing in one place for 9 years. But, I have some form of technology ADD, and can not seem to be happy with any single system. When I discovered Linux, my curiosity really got the best of me. I must have downloaded and tested 100-125 distros. I installed so many that I started recording them on my old (now defunct) blog, jonstechblog.com, which evolved into the also now defunct, osvids.com. This went on until I “switched” to Mac, and I’ve been fairly happy with my operating system since. At least I know that there is nothing else out there that’s any better than what I have now.

I’ve learned a lot about what I want out of my technology over the years, and I’ve found that when I find a good system, even if its not perfect, its best to stick with it until there is a significant reason to change. My curiosity has unfortunately led to my loosing data. Somewhere along the line I lost a lot of email, and a lot of writing, and there is no way to get that back. So, now, I’ve come to a point where I’m content in the systems that I have in place. My email works great, my OS works great, and I have an excellent blogging platform on a reliable host. I’ve started over far, far too many times, and it’s time to settle down and shoot down some roots. Its time to stop worrying about the method of creation, and focus on the creative process itself.

Linux is not for MacBooks

I recently gave Linux my second, and final, serious shot at running it full time as my primary operating system on my MacBook. This time, it lasted all of three days before I dug out my Leopard install disk and began the long migration back to OS X. To preempt any questions on the subject, no I didn’t dual boot, and no, I didn’t have a good time machine backup. I was going to force myself to learn to do things the Linux way on my laptop.

Writing and Word Processing

A friend of mine is having a heck of a time with his new MacBook. He’s a recent convert to Macs, and as a philosophy student he spends a lot of time in Word. When he first bought his shiny new MacBook, he was surprised to find out there was no word processor in it. I pointed out TextEdit, which he quickly dismissed as not nearly powerful enough for what he needed to do. So, back to the store he went to pick up a copy of iWork ‘08, and started working with Pages.


To create the perfect datacenter, what would you recommend? For me, the perfect datacenter would be based on agility. We would be able to add new capacity when needed, and reallocate resources whenever needed, quickly and easily. We would be able to backup everything, securely and easily, off-site. We would use, whenever possible, open source software so we would not be constricted by licensing schemes. Would we have a SAN? Yes, most likely something very simple to administrate, like a NetApp. We would boot from the SAN, have no moving parts in the servers themselves, so we would have very few hardware failures. Whenever possible we would keep to one style of hardware, ie: all blades, or all 1U rack mounts, etc…

The Little Things

Today I was out in the data center and decided to boot into Linux to get some work done on my Dell laptop. I was busy populating our internal wiki with hardware and OS data from our servers (how many dimms, what size, kernel level, etc…), which is a lot of work, lots of copy and paste, formating, grepping, going back and forth between the terminal and firefox. Lots of moving around, but not a lot of cpu or memory intensive tasks, just basic office tasks. I’m using Ubuntu, with Gnome and the desktop effects turned on, and I got so frustrated that I booted back into Windows. I hate to say it, but I was able to get more done in Windows today than I could in Linux.

License Restrictions

Software licensing is one of the biggest expenses of high-end server systems. The vendors charge you not only to use the software, but they charge you for how efficiently you want to use the software as well. IBM, for example, charges a different license fee for AIX determined by how many cpus are in the system. So, to scale in response to load, weather its up or out, you have to pay for additional hardware, and then you have to pay for the ability to use that hardware. We are not talking small numbers here either, we are talking in the upwards of six figures 1, in addition to the cost of the hardware. In addition to that, if you are using proprietary applications on top of the OS, you are going to have to pay additional licensing fees for those as well. WebSphere in particular charges on a per cpu basis.

Oranges and Oranges

A couple of months ago Linux Magazine published an article written by Scott Granneman comparing Mac OS X Leopard and Ubuntu Gutsy Gibbon. I’ve been torn between these two systems, and their respective predecessors for years, so the article was of great interest to me. As a matter of fact, I was wondering how I missed it to begin with. The article is well written, but can be boiled down to this one paragraph:

Linux has come a long way when it comes to ease of use, and it’s definitely getting better all the time, but overall Leopard is still ahead of Ubuntu (and both are way ahead of Vista). Apple makes mistakes, but overall its system is more logical, simple, consistent, and unified than Ubuntu, which still has too many elements that are overly complex, inconsistent, and fractured.

No Fail Diet Plan

Seriously, does anyone really need to know how to loose weight these days? No matter what super plan you choose, it always comes down to eat less an exercise more. There is no secret formula, and there is no magic pill that will help you achieve the body that you want.

Here’s another truth that no one wants to hear: your weight is your fault. You cannot blame genetics, how you were taught to eat, your job, your wife, your husband, your kids, your dog, the government, or any other outside influence other than yourself. It is true that some people are more prone to weight gain than others, but that does not mean that you can’t do anything about it. Blaming anything except your own habits is a cop-out. To start the 100% guaranteed program, you have to face reality, and you have to take responsibility for your own actions.

So, here’s my super simple, 100% guaranteed, no way you can not lose weight, weight loss plan.

Step one, watch what you eat. That means no McDonalds, Burger King, Hardie’s, or Sonic. Eating fast food makes you fat. I like a double-quarter pounder with fries as much as the next guy, but seriously, you never need that many calories in one setting. I’d say that’s like a once every six months meal, not once a week (or day). If you have to eat out, go to Subway and order a six-inch veggie delight on whole wheat. Seriously, try it, they are really good!

Next, stop right now and go look in your refrigerator and your pantry. OK, how much pre-prepared food did you see? Boxed, one-pan, no cooking skills necessary stuff, you know what I mean. If you are eating ingredients that you cannot pronounce, there is a problem. For example, I cannot think of the last time a recipe called for L-Cystein Hydrochloride. Use raw ingredients as much as possible. Even if the resulting recipe is high in fat and calories, at least you know what’s in it. That leads me to my next point.

Fill up half your plate with veggies. Make a salad that only contains vegetables. Lettuce, carrots, cabbage, broccoli, olives, onions, etc… Fill up a quarter of your plate with a slice of bread or something similar. This is your side dish. That doesn’t mean that it gets its own plate, its there to take up room on your plate, and therefor in your stomach. Now you should have only a quarter of your plate left to fill, that’s for the main course. Also, get a pint glass of ice cold water to go with your meal. Drink the water before drinking anything else.

Speaking of drinking, here’s another hard lesson to learn. Alcohol makes you fat. Alcohol add nothing of value to your diet. As in all things, moderation is OK, but drinking a six pack a night is a sure path to failure. Also, drinking a bottle of wine in one sitting is also very bad for your health. Remember the glass of water at dinner time? Drink that first, and you won’t be as tempted to drink so much beer or wine or whatever you like with your meal.

So, that covers eating and drinking, now for the fun part: exercise! If the sun is shining, turn off the TV, shutdown the computer, and go outside. It’s actually very difficult not to exercise when you are outside, because there is always something to do. At the very least, take a walk. Do some gardening, shovel snow, make a snowman, go out and do something. You can pick up a sport. I’m learning how to swim laps in a pool. It’s not as easy as it sounds, but learning something new is enthralling. I get bored weight lifting and running on the treadmill, but you may really enjoy it.

There are literally thousands of sports, and if you keep looking, you are bound to find one that’s just challenging enough without being too overbearing. However, you must be brave, because here is the final hard lesson to learn. When you try something new, you are going to look like a fool. This is universal, and unavoidable. No matter what it is, no one is good at something the first time they try it. No matter what your chosen exercise is, until you get good at it, you are going to look silly. Be brave, this will pass. Here’s the great thing, the more you do it, the better you get at it, and the less ridiculous you will look doing it. Right now I rather resemble an obese housecat thrown into the pool while I’m learning how to swim. That’s OK, it will pass, the more I swim, the better I get at it.

Nothing worth doing is easy.


I slept. The world changed all around me, and I slept.

Change and Blessing

On Monday, the 23rd, at 9:17 AM, we were blessed with our fourth child, Jacob. Jacob and his Mom are home now, after a few days stay in the hospital at the University of Iowa. Jacob is strong and healthy, waking every few hours to eat and burp and have his diaper changed.