Mixed Bag
Podcasts You Should Listen To. For Reals.

My wife Corrin has been doing a Song of the Day on Facebook and Twitter for, well, at least a year now. While music is great, and I am a fan of most of the stuff she recommends (even the hipster crap), I find that I am getting more and more into the podcasts being produced by comedians. They are a great way of getting to laugh your ass off while sitting in your cubicle or home office.

I was going to write up a review of each one, but its 2am and I need to go to bed. I may do that later (perhaps on the plane to DC tomorrow night), but for now its just the list.

Many of these are pretty popular on iTunes, but sometimes people (especially my friends and colleagues) are more interested in the technical podcasts (like the ones produced by Scott Hanselman at Microsoft) than ones that are generally just entertaining. In addition to being funny, a lot of them are really, well, moving. More on that later.

My Beloved Keyboard

If you ever come into my home office to look at some code or a demonstration of a new software update, there are a few things you will notice before I turn on my monitor.

The first will probably be the disparity between my wife’s luxurious office chair and my own plywood perch. We bought her chair about five years ago while she was getting her degree, and I bought my own about 10 years ago when I was single and poor. Considering that I am in my chair 16 hours a day and that I cannot remember the last time she sat in her chair, it borders on the absurd.

The next thing you will notice will probably be the most innovative thing I have ever come up with, and I am honestly proud of it. As most of you know, I’m a smoker. As I sit at my desk for the previously mentioned 16 hours a day, the ashtray tends to fill up. My solution? Put an ashtray on top of a empty Dominick’s Honey Roasted Peanuts container. When the ashtray gets full, I just flip it over and dump it into the container. It has no doubt saved me countless hours of time walking back and forth to a proper garbage can.

The next thing you will notice (and probably the last thing, because after you see it your skin will crawl and you will shove your hands in your pockets and you will begin to think you have walked into the den of a maniacal but somewhat groomed hobo) is my keyboard. To say that it has a “seasoned” appearance is an understatement.

Almost 10 years ago, my parents were at a loss to what to get me for my 24th birthday. I had been out of college and working for a while, and I had purchased everything I needed. Grasping at straws, they bought me a white Compaq computer. And though I have purchased many computers since then, the keyboard I received with that Compaq is still the one I use today.

I can’t seem to get rid of it. I know that there have been some advances in keyboards over the years (key response time, key action, ergonomics, function keys, etc), but I don’t care about any of them. I know this keyboard, and as odd as it sounds, it knows me. After the hundreds of thousands of lines of code, the scores of angry emails (and the scores of subsequent retractions), the mindless instant messenger conversations, the soul-searching inventories, and the morally questionable Google searches, it is safe to say that it has seen more about how I think and what I care about than any other person or thing on this mortal plane.

The reason I mention it is that I decided to clean it tonight. Not a thorough cleaning with a mini-vacuum or can of compressed air, mind you, but a flip-it-upside-down-and-shake-it cleaning. I’ll spare you the details of the horror that was deposited upon my desk, but I can say that I know where a lot of my receding hairline ended up, and that I could have covered a Olympic ski slope in the ash that shook loose.

My intent in cleaning it was to clear up the action on the left CTRL key (which has been a little sticky for the last few years), but that didn’t happen. Instead, the keyboard changed. It sounds different. It looks different. It feels different. Some keys that worked fine are now sticky, and some keys that were sticky now work fine. The keyboard had quirks, but I knew what they were and had adapted to them. Over the years, I had become efficient at exploiting those oddities to my advantage. The impact on my productivity is already being felt as I write this.

Did I really just write eight paragraphs about my beloved keyboard? Did I really just take up your precious time that you spent reading it? Has this blog really become that pointless? Well, yes and no.

You see, I made another decision this week about a long overdue housekeeping matter (in addition to the keyboard). After a lot of self-reflection and consultations with people I trust, I’ve decided to seek out a therapist. I’m not going to get into the juicy (or bizarre or mundane) details that led to this conclusion, but it has become clear to me that the left CTRL key in my brain has become, well, sticky.

As with any decision like this, I am feeling a certain amount of trepidation. I know that my brain has quirks, and I know that I have adapted my life to both the good and bad ones. The same obsessive qualities that drive me to check the ashtrays four times before I leave the house are also responsible for my drive to work extra hours on testing a new feature until I am sure it works correctly. I fear that this attempt to clear out the years of built up filth and self decay will instead only shift that detritus to other areas that were working fine prior to any attempt at improvement.

My solace is that, just like the keyboard, I am sure that my brain will be with me for years to come and I will have plenty of opportunities to shift things back to what has become my current definition of normal.

Five Things: February, 2010

With the report on the January Five just out the door, it feels a little odd to be writing the February Five. But such is life.

Before I get to this month’s list, let me say that I don’t like giving myself a C+ for last month. It hurt, which is perhaps a good indication of my level of pride that I have invested in this endeavor. It would have been easy for me to exaggerate how “done” some of those items were, but the entire point of this exercise is to create metrics by which we can evaluate the progress of our software. Any attempt to shade reality completely defeats that purpose.

Here are the February Five.

  1. Updates to applications. This is a carry over from the January Five. The goal for February is to remove the YUI completely from the application and replace it with the relevant portions of jQuery UI. Not only will this enable us get away from the older version of YUI that we were using, it will allow us to make use of the great work that the jQuery developers have put into their library.
  2. Enhancements to management software. This is a carry over from the January Five. I believe the core of the this work is done, and it should be another 40-60 hours worth of work to get that wrapped up.
  3. Launch of public website. This is a carry over from the January Five, and is pretty self explanatory. We need to get the new site up. Period.
  4. Code centralization. This is a new item for February, and although it is already completed I feel that it constituted such an important benchmark for our software that it needed to be called out anyway. There are two elements to this item. The first element is to move the common script files, style sheets, and images off to a content delivery network for faster delivery to the client browsers. The second element is to develop and deploy a way for true centralization for reseller sites. Expect a blog post towards the end of the month with further details of this item, as we are very proud of it.
  5. Website upgrades. There are three sites that are still using older versions of our software. In fact, one of those client sites still exists on a server whose sole purpose is to host that site. By upgrading and migrating that site to the new software and environment, we will be able to retire that environment and provide the client with the great enhancements we have been developing over the last few months.

Well, there you have them. I am confident that we will score above a C+ this month, but you will have to check back in a few weeks to see.

Five Things: January, 2010 - Report

Yes, I know that it is already the middle of February and that this post is long overdue. I also know that if I don’t take the time to write it now (when I have a few spare minutes of breathing room) then I never will and this initiative will die a fast death.

So here goes. As some of you may have read, I posted a list of the five objectives for my company for January, 2010. I am pleased to report that a lot of progress was made on each item, though some of them still aren’t in the “done” category.

  1. Update and upgrade hosting environment. This is completed. Not only did we apply all relevant patches to the hosting environment, we also doubled the amount of member available on the dedicated hardware node that hosts our VPS instances at bodHost from 16gb to 32gb.
  2. Updates to applications. This is about 60% done. We have moved to ckEditor (which I highly recommend), and changed how the application includes javascript files (which has improved performance dramatically). The removal of YUI completely from the application hasn’t been completed yet, but should be by the end of February.
  3. Migration of websites to file share. This is completed. There are no longer any site files on the individual web servers, and they are all on a backed-up file server.
  4. Enhancements to management software. I am pleased to report that this is about 60% done, but with everything else that was being worked on last month (and how it took a substantial amount of time to complete), it is still on the open item list.
  5. Launch of public website. This is also still pending. Again, with the amount of time taken to get the other items done, it seems that the dentist’s kids will continue to have bad teeth for another month.

Overall, I am incredibly happy with the changes, and I have received very good feedback from our clients (which is the point, after all). Still, there are a lot of open items on that list. If I had to give us a grade for January, I would have to give us a B- or a C+. We will do better in February.

It is not the critic who counts: not the man who points out how the strong man stumbles or where the doer of deeds could have done better. The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood, who strives valiantly, who errs and comes up short again and again, because there is no effort without error or shortcoming, but who knows the great enthusiasms, the great devotions, who spends himself for a worthy cause; who, at the best, knows, in the end, the triumph of high achievement, and who, at the worst, if he fails, at least he fails while daring greatly, so that his place shall never be with those cold and timid souls who knew neither victory nor defeat.
Theodore Roosevelt, “Citizenship in a Republic,” Speech at the Sorbonne, Paris, April 23, 1910
We Are, All of Us, Messed Up

After a long absence, a friend and former colleague of mine appeared back online this morning. It had been years since we worked together and almost that long since we actually saw each other in person, but our friendship has evolved into a few instant messages a day for the last five years. I know it doesn’t sound like much of a friendship by traditional definitions, but life is busy and time is tight. She has kids and a job and I have a new business and sometimes what you want to happen and what does happen are light years apart. Despite physical separation, we talked about our lives, our jobs, our marriages, our families, and our friends, and I can assure you that I care about this person very much and wish only for her happiness.

She popped online to tell me that she had just gotten out of the hospital after being committed for, well, let’s call it a suicide attempt. Regardless of the what and the why and the how, she decided a few weeks ago that her next best option was to take a full bottle of Valium and go to sleep for a few days, and maybe more. Thankfully, her husband found her and an ambulance was summoned and she was given the medical attention she needed. The longer term treatment to address the underlying issues will surely take time, but I am hopeful (foolishly, perhaps, in light of what other people I know have experienced) that this can be a turning point in her life. In the face of her complete hopelessness, I am touched by a sliver of hope.

One of the first things I thought when she told me was “is everyone I know messed up?” I recognized, almost immediately, that it was an incredibly selfish thought. I was taking something profound and devastating in this woman’s, this friend’s, life and turning it around and making it about myself. Perhaps that is a natural reaction, perhaps not. What I do know is that the answer to that initial question is yes. And so am I.

We are, all of us, messed up. Life is a messy and chaotic and uncertain and ever-changing mixture of joy and pain and regret and hope and anxiety. I have yet to know a person (and by know, I mean really know, not just the sort of know that happens with neighbors or coworkers when discussions are limited to the Bears or the economy) that has always handled it with constant grace and dignity. We create this image of ourselves as we want the world to see us, and, in presenting that image, we deny them the right to really and truly know us. Once that image is in place, we do all that is possible to enforce it, burying our true experiences under a thin veneer of nods and smiles and professionalism.

In the wake of the news that I got this morning, the part that bothers me the most is that even though I know about this imaging problem, I still carry it along. To most people that I know, I am a fairly well-balanced person. I work too hard and sleep too little, perhaps, but that’s about it. For years, the only really personal thing that most people knew about me is that I don’t drink, and the only reason they knew that is because I never let anyone buy me a beer at a company party. That’s it. I left the reasoning for that up to their own imaginations, and I occasionally enjoyed hearing their fanciful guesses as to why that was the case (there was one guess that had me being homeless, another involved someone being killed - neither were true).

While I relished my secretive past with the “I know something you don’t know” glee of a parent on Christmas Eve, in retrospect I was denying my own experience. And in light of this morning’s news, that very experience might have been of use to others who were or who are struggling (and faltering) behind the same crumbling facade as my friend.

Even now as I finish this post, and in full knowledge of the glaring hypocrisy of it all, I am reluctant to share that experience with you. Perhaps it is this forum. Perhaps it is some lingering shame. Or, perhaps, it is that I have the same reluctance to be seen as damaged or bent as everyone else does.

What I will say to any of the people in my life that are reading this and who find themselves struggling is that I have been there, I know how you are feeling, I know what it feels and smells and tastes like. If you are ever looking for someone to talk to at 3am on a Tuesday, I’m probably awake.

Fairy tales do not tell children the dragons exist. Children already know that dragons exist. Fairy tales tell children the dragons can be killed.
G. K. Chesterton
Five Things: January, 2010

I cannot believe that 2009 is already over. It was a hell of year all around, complete with the ups (new clients and partnerships, solid new business stream, and great software enhancements) and the downs (family deaths, lack of days off and sleep, and one lost client) of a new company.

As I look back on it, one of the things I could have done better was to have a plan for our team. I have long been of the opinion that no plan survives first contact with reality, and so I have been playing pretty fast and loose with scheduling things. While I feel like that gives me the ability to make tactical changes quickly, it also means that a lot of things get overlooked and have to be made up later (for example, I have spent the last three days applying updates to our production servers).

With that in mind, I’m going to try to put together a monthly list of things that I would like to accomplish each month throughout 2010. While putting an item on this list doesn’t 100% guarantee it will be done, I will also have to post an entry at the beginning of the next month and it should be clear to everyone what was and wasn’t accomplished (ah, the power of shame). I hope that it will provide some guidance for us, and most importantly, some metrics that we can use to measure our progress.

  1. Update and upgrade hosting environment. While part of this is already underway (with the server OS updates), we will also be investing heavily in hardware upgrades. This will primarily be focused on doubling the amount of memory allocated to the web servers in our hosting environment. The great part of this item is that, other than the OS updates, this will all be handled by our hosting company.
  2. Updates to applications. Without going too heavily into the internal architecture of our products, there are a couple framework changes and a couple functional changes coming. First and foremost, the mishmash of Microsoft AJAX and YUI that we currently have will be going away in favor of a unified jquery script engine. That should provide both client-side performance improvements as well as making future enhancements easier. As part of that effort, we will also be getting rid of the YUI text editor and replacing it with the CKEditor. As far as the functional changes go, we will be adding anonymous surveys, more refined employment tracking, and possibly profile merging functionality. That last one should make our clients’ lives a whole lot easier when it comes to managing their membership info.
  3. Migration of websites to file share. This one is pretty self explanatory, but let me clarify this one. Right now, we have web sites spread across five servers in our hosting environment, and the files for each of those sites are on the servers themselves. There are two issues with this. First, it makes moving a site from one server to another more laborious than it needs to be, as the files have to be copied over. Second, it complicates the backup strategy as there are currently 5 sources (and growing) instead of just one. As a way to fix both of these, we will be moving the sites to a centralized file share that will hold the files for all of the sites. This isn’t a very technical process, but it will take time. Additionally, a number of our clients are all on the same template. By centralizing the files, we can also make the functional template the literal template with just a different configuration file.
  4. Enhancements to management software. Perhaps the thing I am most excited about are the features that will be added to the management software we use to maintain our hosting environment (both the servers themselves and the application installed on them). This will include improving the monitoring software, centralizing the bulk email communication, and centralization of the database and file system back-up strategy. This will all be coupled with the current contact and project management software, so at a glance we will be able to see who the client is, who the contacts are for that client, what projects are currently underway for them, what server(s) they are on, what urls are used for them, and and what tasks and deadlines are upcoming form them. What makes this most exciting is that this will lay the groundwork for the future work later in the first quarter that should make it possible for us to be able to set up a new client (domain registration, database, file system, templates, nameservers, backups, and bulk email) by filling out a simple form.
  5. Launch of public website. One of the long standing open items that we have been working on is a revamp of our public website. While I know that the town shoe maker’s children are often barefoot, the fact that we still have a static html website has been something we have had to talk around in sales meetings. We have been working on it for months, and are very excited about the design and content. I will be sure to send out links to it once it is up.

Well, there you have it. As my father always says, this should keep me busy enough to stay out of trouble.

2009: Lessons Learned

I honestly wasn’t going to do a 2009 retrospective. Really, I wasn’t. I tend to sit in my own head a few times during the year: the week before January 1st, the week before March 29th, and the week before July 1st. This year was no different. The downside to this reflection is that it tends to be almost always negative - I think almost exclusively about what wasn’t done right and what still needs to be done that I am dreading.

Then today, I read this blog post from my friend Keidra about risk and failure. In it, she expresses a desire to have more of a willingness to take risks and to accept failures as learning opportunities. She also speaks of the internalization of the emotion of failure, and how it can cascade from simple regret into shame and paralysis. Overall, it was a very thought provoking and personal piece.

Given my reflective and self deprecating mindset, it struck a particularly loud chord with me. 2009 has been a learning year (a rebuilding year, as the Cubs and Bears put it), and most of that learning has been as a direct result of risk and failure of one sort or another.

Attached to each of these lessons is some measure of shame, be it of the “I can’t believe that I didn’t know that” or the “I can’t believe I did that” nature. I once heard that shame can’t survive sunlight, and the easiest way to get past it is to tell on yourself to others. With that sentiment in mind, here are my top lessons of 2009.

  1. Create a personal relationship with clients. If you are a person that they have to either pay to talk to or have to talk to when something is wrong, there will always be a negative connotation to your interaction with them.
  2. Check your ego at the door. You may call yourself the president of the company, but the client doesn’t care if you are smarter in your field than they are. That’s why they are paying you in the first place. If a client complains about something you have done, the issue is always with you.
  3. Don’t be afraid to say no to a client, so long as that isn’t the full answer. If you are going to tell a client that they are asking for a service you don’t yet provide, make sure you can tell them who does provide it, and then check up with them later to see how its working out.
  4. Use contractors. Heavily. Running a business doesn’t mean doing all of the work, even for a small start-up company. The more tasks you can give to contractors, the more time you have available to work on more strategic items. At the same time, remember that the learning curve will always be steep with a new contractor.
  5. Don’t forget that everything has a price, even services that are offered for free. If there is something that you can pay someone to do on a set time line, then chances are you should just pay them, rather than relying on free with an unknown time line.
  6. Surrender the fantasy that your life will ever be easy. It may get better or worse at times, but even when it is at its best it still requires a level of effort beyond what you initially expect.
  7. If you are drinking an entire 12-cup pot of coffee each morning between 9am and noon and you are having health problems, chances are the two are related.
  8. If you want people to allow you to change so that you can be happy, you have to allow for changes in others that are for the same reason.
  9. Stop gap solutions are fine, so long as they are just that and there is a plan for replacing them. The good may be the enemy of the best, but expediency often rules the day.
  10. Reputation and integrity are everything, which means that investment clients can cost you more than the time and money spent on them.

I know, I know. Those are all pretty obvious points. Some are even things that a child would learn in some sort of school when they are four years old. I will most likely expand on all ten of these items for individual posts later, but to do that here would be a novella.

Like I said, 2009 has been a learning year.

New Year, New Blog

With 2009 coming to a whimpering end, I thought it appropriate to start a fresh with my blogging. This isn’t the first blog I have written, or attempted to write, but it is my hope for 2010 that I will devote just a little more time and energy to this incarnation.

And when I say that I have blogged in the past, that is a bit misleading. There was the one blog where I posted one poorly written politics-based post, one blog (that my wife and I shared) where I posted one different poorly written election-based post, and a third that I used to transcribe the details of some Twitter spam (about the evils of advertising) that I was guilty of. All in all, pretty inconsistent.

The reasons for my past missteps are, I imagine, pretty typical. The main one, I think, was time. For the last two years, I have been trying to form and stabilize a small software development company while balancing a home and social life. As anyone who has done this (or has watched someone do this) knows, starting a company from nothing requires a huge time investment. I have barely had time to see my parents, so taking the time to blog seemed a little frivolous.

Another reason, also typical, is that I have not felt like a true subject matter expert on anything I felt the urge to write about. I am firm believer that if you don’t know what the hell you are talking about, you should probably just shut up and listen to the people who know better. God forbid I write something that is not 100% correct. In short, don’t be stupid in public or around people you haven’t seen be equally stupid.

The final reason (at least the final one I will list here), is a reluctance to mix business and personal thoughts. Just as I was anxious about inviting family members, close friends, and business colleagues to the same event (my wedding), I am also anxious about mixing those posts in writing. The concern, of course, is that I will write something business related one day and then politics related the next, and the mixture of these two will alienate or offend someone. I always envision some potential client reading a post about the capabilities of a new software application and then my thoughts on Iran (for example), and getting turned off by something I said.

So what will be different this time? Well, for one I think my company has stabilized to the point where I can eek out an hour or three a night for blogging. Also, I think that the lessons that I have learned in that area over the last two years may be interesting to some. As for the second reason, being stupid in public is always a risk. All one has to do is turn on the evening news and it is apparent that others have no problem exhibiting stupidity far in excess of what can be displayed on a blog. As for the third reason, it shows a tremendous lack of faith in both my own opinions and in the intellect of my clients. If I can make a sound argument, its a sound argument regardless of who the reader is. If someone takes offense at something I have written, do I really want to be working with them anyway?

That being said, let the fourth and hopefully last of my blogs begin….