Archive for the 'Musings, Rants, and Humor' Category

Geek Community: Path to Self-Actualization or Pit of Unproductive Negativity?

I firmly believe that the answer to this question is…yes.

A Little Background (a.k.a. My Hermit Roots) - Like most geeks, I’m an introverted fellow by nature. I’ve never had trouble mustering the requisite polish when it came to interacting with clients and executives on the job, but when given a choice I would always rather be absorbed in code with my headphones on and a ‘do not disturb’ look of concentration on my face. Until recently, I preferred keeping to myself when it came my professional development and problem solving endeavors and routinely chose thick technical books, laser-focused research, and solo debugging efforts over blogs and community forums. I didn’t really see the point of developer communities and I doubt that I had a single person in my professional contact list that I didn’t know directly through a current or prior work experience.

The Slippery Slope into Community - I didn’t start to change my solitary ways until a few years ago when I finally decided to start subscribing to blogs in earnest (I know that I was extremely late to the game on this one). Before long, I graduated to leaving comments and then eventually to writing posts on my own blog, thus firmly entering into the realm of geek community by publicly exposing my own thoughts to the world for examination and potential (…ok probable) ridicule. Finally, through the magic of Twitter, OpenSpace conferences, and social networking sites, I began interacting with my fellow kindred geek spirits on a more informal basis and getting to know many of them personally. At the last conference, I was shocked when I realized that for the first time ever I was more excited to meet and interact with the other participants than I was to listen to the content of the sessions. That was the moment I first started to realize that my understanding and appraisal of geek community had significantly shifted.

A Place of Extremes - In the short time that I made the journey from geek hermit to neophyte community member, I have experienced the following highs and lows.

First the good

  • Real World Experience over Theory - Most of the content I see in traditional articles, books, and Knowledge Base entries seem overly theoretical and shallow because many are often based on idealized vendor technical specs or the author’s limited experiences with pet projects and demo applications. By contrast, many of the blogs or twitter rants I read are from people on the corporate front lines who are constantly dealing with the edge cases and pushing the limits of the technology. Despite being less polished than their more formally published counterparts, community based sources of information often yield much more valuable hints, insights, and warnings.
  • Analysis and Recommendations over How-To - While traditional learning venues almost exclusively focus on the HOW, community discussions are often centered around the WHY. In the age of google, learning HOW to use a new tool, framework, or API often borders on the trivial, but figuring out which one to use can become an overwhelming decision. This is where being part of a network of really smart people who readily share knowledge and experience can really pay off.
  • Perspective - No matter how large your IT department is, your work will be confined by a particular culture and set of technologies and practices. By contrast, online communities are usually comprised of developers from all over the world and thus offer fresh ideas and needed reality checks that you just can’t get from your co-workers. While your co-workers may be fearful or too polite to challenge your latest dumb idea, you can rest assured that developers you interact with ‘in the wild’ will be brutally honest.
  • Camaraderie - Besides being a source for excellent recommendations and discussions, I find Twitter and the comment sections of blogs to be a place where I can relieve some stress from the day by being able to joke or rant. Sometimes the lack of “face to face” social constraints has a very positive affect and allows people who are normally quiet and serious in a work setting (like me) to be much more light-hearted and humorous in a virtual community. The Canadian blogging circuit in particular (Justice, Donald, D’Arcy, Tom, et. al) has been a reliable source of comedy relief for me over the last few years.

Now the bad…

  • Anonymity Breeds Meanness - If you haven’t been personally zapped by an unnecessarily rude comment, then you haven’t spent much time in online discussions. In a process that makes road rage look tame, the anonymous aspect of online interactions can turn normally sane people into ranting, frothing-at-the-mouth maniacs.
  • The Need to Shrink the World - The first time I looked at the world map of my readership base in google analytics or scanned the diversity of topics available on reddit, I was struck with the uncomfortable realization that the world was unbelievably ginormous place. Unfortunately, the first reaction that many have to this psychological shock is to try to shrink the world back down to a manageable size by dividing it into a small select group of enlightened technical wizards (to which they belong) and a massive group consisting of the rest of the dimwits. This is the driving force behind the formation of so many identity cliques that divide people along otherwise trivial lines with a frightening religious-like fervor (i.e. Mac vs. Linux vs. PC, Microsoft vs. Sun, Dynamic vs Static languages, Mort vs. Einsteins, etc.). The world is just a more manageable place if you have justification to dismiss a large portion of it as irrelevant.
  • Flame Wars and Twisticuffs - As egos collide and tempers flare, even the most reasonable discussions quickly degrade into purse fights, twisticuffs (twitter fisticuffs), and flame wars. When this happens, the geek blood lust takes over and the pursuit of knowledge takes a back seat to the all consuming goal of winning the argument. I have occasionally been sucked into these “Lord of the Flies” type spectacles and I’ve always emerged feeling drained, dumber, and ashamed of myself.

What to Do? I admit that I occasionally have days where I am tempted to crawl back into my introverted shell and seal myself off permanently from blogs, twitter, and all other forms of geek community. Despite the silliness, meanness, and time-wasting qualities that lurk behind some online community interactions, I still have to conclude that it is the only viable option for a geek looking for self-improvement.

Nevertheless, before diving headfirst into community, you’ll need to learn to recognize the potential pitfalls and devise strategies for avoiding them. This could be as simple as unfollowing, unsubscribing, or generally avoiding people who trigger your geek rage or it could involve a more radical approach of taking a periodic hiatus from the online world to recharge your batteries. Failure to do so could lead you down the path to the geek dark side and eventually turn you into one of those curmudgeonly old trolls that lurk on mailing lists waiting for their next unsuspecting newbie victims.

In the spirit of community interaction, I leave you with the following questions for you to ponder and respond to:

  1. What are the other positive and negative aspects to geek community?
  2. Do you really think community is the fastest way to self-improvement?
  3. If you are a believer in community, how do you avoid all the negative aspects?

ALT.NET Conference Part Deux: Was the Sequel Better than the Original?

As I mentioned in this last post, the Austin Alt.NET conference last fall was one of the best conferences that I had ever attended. Nevertheless, I liked the second one in Seattle this last weekend better.

Here are a few reasons why:

  1. Alt.NET has finally been defined - There was quite a bit of time spent at the first conference and in the news groups afterwards arguing about fundamental issues like what Alt.NET meant and whether or not the name was too divisive. Although these questions were important to hash out in the beginning, the topic quickly grew stale for me and I certainly didn’t relish the idea of listening to even more debate about it. Apparently I wasn’t the only one that felt this way because the only mention of it was a topic suggestion done in jest about renaming Alt.Net which was promptly greeted by groans and eye rolling. No longer having to deal with this mental baggage meant that there was much more time to focus on substantive technical issues. For example, I was pleasantly surprised when the opening night fishbowl immediately delved into a top notch discussion about whether or not polyglot programming is a desirable industry trend.
  2. Open Space Format No Longer an Issue - Another roadblock that caused the first conference to get off to a slow start was the skepticism regarding the Open Space format. While everyone eventually warmed up to this approach, I remember quite a few sarcastic barbs the opening night that were funny but ultimately detracted from the quality of the discussion. The fact that the organizers didn’t really have to waste any time explaining or converting people to the Open Spaces philosophy this time around was another contributing factor to how quickly discussions became productive.
  3. Better Mix of Geek Celebrities, Alpha Geeks, and Regular Geeks - Expanding the participant list to 150 and reserving 50 spots for invitation only celebrity geeks was a stroke of genius. The mix at the first conference was great, but the mix at this one was even better. In my opinion, the biggest threat for future conferences in terms of “jumping the shark” would come from altering the number of participants or unique geek ratio too much.
  4. Microsoft Employees No Longer on the Defensive - In Austin, I definitely got the sense that Microsoft employees were either walking on eggshells or else (often legitimately) defensive. Since then, I believe that the ALT.NET group has collectively decided that the ideology\movement is ultimately grounded in .NET and thus the purpose of the group is to push Microsoft into improving the current development experience rather than trying to instigate a mass exodus of developers to other platforms. I think this shift in mind set made a huge difference in how productive conversations were and how willing prominent Microsoft employees were to attend. Some of the more notable Microsoft attendees included Scott Guthrie, Scott Hanselman, Phil Haack, Brad Abrams, John Lam, Dustin Campbell, Glenn Block, Howard Dierking, and many more.
  5. More Focus on Positive Examples of Microsoft Technologies- Instead of focusing too much on canonical examples of tools and technologies that Alt.NET’ers have traditionally criticized, such as the Entity Framework, Enterprise Library, or SSIS, many of the discussions focused around technologies that are being received more warmly, such as the MVC Framework, IronRuby, IronPython, and F#. Besides demonstrating how scary smart he was by diagramming out some of the internal implementation details of the DLR, John Lam impressed many Alt.NET’ers by mentioning things like his regular IM conversations with the head of the JRuby project or his team’s painstaking efforts to move towards passing 100% of the Ruby community test suite. Phil Haack enjoyed similar kudos for the efforts that he and his MVC team have made to solicit and incorporate community feedback into their product as well as learn from existing MVC frameworks in the industry and even openly release the source code.
  6. Leadership - I hesitate to even mention this one because Scott Bellware contributed so much to the first conference and he was so relaxed and agreeable this weekend. But let’s face it, as a conference leader, David Laribee just doesn’t have the same baggage to contend as Scott Bellware, whose publicly confrontational demeanor tends to cause friction at every turn. Despite poking fun at him from time to time on my blog, I respect Bellware and wish he was still blogging, but I have to admit that I’m glad that Laribee took over the organizing reigns for this conference. By the way, be careful about complimenting Laribee on how well the conference was organized or he will try to rope you into helping organize the next one…:-)

So what about a future Part 3 to this conference series?

I heard about 3 different potential follow up Alt.NET conferences this weekend that would take place in Canada, Austin, and possibly Boston. I’m not sure which one will emerge as the next viable option, but I’m definitely going to stay alert for any news.

I don’t know if the next conference will be as good as this one, but the odds are that it will still be much better than the passive, spoon fed material that you can expect from traditional conferences.

The Case Against Overtime

I remember reading the eXtreme Programming Core Practices several years ago and smirking when I got to the practice that called for regular 40 hour work weeks for programmers.

Like many of my fellow developers, I saw overtime as a geek badge of honor and felt pride at having enough stamina to regularly work 60-80 hours a week on my death march project.

Although I occasionally received half-hearted warnings from management to slow my pace down in order to avoid burn-out, the underlying message from above was clearly that my willingness to work long hours made me an exemplary employee and that overtime was one of the surest paths to professional growth and advancement.

While I may have agreed with the XP practice of capping the work week at 40 hours in theory, my traditional geek machismo prevented me from accepting it as anything other than a naive and idealistic goal that would probably never be gain widespread acceptance in corporate America.

That was then.

Now, when given a choice, I rarely opt to work overtime for my employer (at least not directly according to my task list). I would never hesitate to work extra hours prior to a release or due to unexpected production problems, but I now view anything more frequent than that as a serious problem and even as a potential reason to start looking for another job.

Why the dramatic change in attitude?

Here are some reasons that finally caused me to stop seeing overtime as a heroic effort and start seeing it as a destructive practice that is a sign of a seriously broken process within an IT organization.

  1. Lost Opportunity Costs in Professional Growth - Once I completed a handful of large projects in my career, the opportunities I saw for professional growth started coming more and more from external sources outside of my job. While I  still learn plenty during the day by observing my co-workers and attempting to solve common problems in novel ways, I often feel that my skills grow faster outside of work through reading, writing, presenting, social networking, and pet projects. It is sometimes tempting to spend 10 extra hours a week clearing the items from my daily TO DO list, but I believe that I am accomplishing much more for my professional career by devoting those hours to catching up on my RSS feeds, working my way through my tech book reading list, or exploring new programming languages instead.
  2. Increased Professional Risk from Lack of Diversification - Everyone knows that diversification is the key to managing financial risk, but few people seem to apply this principal to their professional careers. Most developer shops are relatively limited when it comes to the number of technologies and problem domains they deal with. If you want to diversify your resume without job hopping every year, then it makes sense to actively seek out technology experiences that are different from the ones you use in your day job. By this reasoning, working overtime will increase your professional risk by reinforcing skills you already have whereas working on open source or pet projects that require you to learn new skills will mitigate your professional risk and make you more marketable should you ever decide to leave your current job.
  3. Decreased Professional Passion - To paraphrase Jean-Paul Boodhoo, the best fuel for professional growth is always a developer’s joy and passion for his or her craft. I find it much easier to sustain this passion when I am allowed free reign to follow my curiosity. Work doesn’t usually allow for this type of unstructured exploration, but free time does.
  4. Lost Productivity - Overtime work is highly susceptible to the law of diminishing returns. Spending long hours on the same tasks in a high stress environment leads to fatigue, which in turn leads to producing poorer quality work at a slower pace. When you factor in the time it takes to find and fix bugs and design flaws produced by overly tired developers, the net gain for twenty hours a week of overtime probably drops down to only a few hours while at the same time greatly increasing the risk to the project. Overtime just doesn’t yield the results promised by management Gantt Charts which provide an oversimplified view of the software development process by only measuring the quantity of the hours spent on tasks without also taking into consideration the quality of the time.
  5. Poor Code Quality - Besides being more likely to miss obvious errors, developers who are under pressure and fatigued are far more likely to cut corners and engage in shallow thinking when it comes to design solutions. Besides driving up the long term cost of a project by making it more difficult to maintain, code quality issues can put the whole project or even business at risk by introducing critical errors and undermining customer confidence and loyalty.
  6. Lost Personal Revenue - If you are a salaried employee and your are concerned with maximizing your personal income, then you should read this post by Max Pool where he points out that you are almost always financially better off to focus your time across multiple revenue streams rather than allowing your time to be sucked up by one job through excessive overtime.
  7. The Usual Personal Reasons - These are all the usual things that workaholics neglect until it is too late, such as family, friends, health, and entertainment. Although I think they are among the most important reasons, many of us seem to have blind spots when it comes to these issues due to cultural biases so I chose to focus on other more novel arguments about overtime in this post instead. Nevertheless, these are some of the most compelling reasons to question any work schedule that consistently includes overtime.

If you are convinced about the evils of chronic overtime but don’t know how to break out of your current overtime cycle at work, then meditate on the following two concepts:

  1. Time Should Be Fixed, but Features Should Always Be in Flux - If a customer went into a store and put more items in their shopping cart than they had money for, then they would reasonably expect to have to put a few items back while checking out. This is exactly how it should work in software, but the reality is often that customers naturally have a very difficult time connecting their feature requests to a real cost because IT departments have traditionally been so willing to hide the extra cost through overtime. Agile iteration planning and planning poker does a great job of addressing this issue by having developers assign a relative point cost to each feature, tracking an average velocity of points completed each week, and then only allowing customers to choose enough features to equal the velocity points in any given iteration. Besides providing a much more realistic expectation of what can be accomplished in an iteration, this approach emphasizes that developer time is a fixed resource and that feature requests must be variable based on continual assessment and reprioritization.
  2. A Large Number of Proposed Project Features are Unnecessary and even Harmful to the Project - It is amazing how many "must-have" features suddenly become unimportant when a project is time-boxed and resource-boxed in an effective way. I’ve actually seen overall  product quality and customer satisfaction increase in these circumstances because it helps focus stakeholders on what is essential about a project and aids them in more easily spotting bloatware features that would otherwise delay implementation, increase cost, and hinder usability without returning discernible value.

Sometimes you just can’t change the way your processes work or management thinks, but you can always change your own attitude by resisting self-imposed or peer pressure to work overtime. I’m guessing that the majority of overtime is not officially mandated, but rather manipulated through subtle peer pressure. If that is the case, just say no.

If your goal is constantly to maximize your own professional growth, then you’ll be surprised at how much respect you can still win without playing the overtime game. For example, who do you think is going to get noticed more, someone who closes a few more issue in the bug tracking system, or someone who is able to introduce a new concept, process, tool, or technology to the group because of work done in their spare time?

In conclusion, the next time the opportunity for overtime arises, ask yourself if you are really maximizing your professional growth or if you are just focusing too much on short term job goals and not enough on long term career goals .

Conspiracy++

Don’t worry, I’m not going to join the growing ranks of developers with false claims of responsibility for the the Alt.NET pursefight blog (i.e. Bil Simser, Donald Belcham, Derik Whittaker, Sergio Pereira, Tom Openorth, David Woods, and Kyle Baley) .

My confession is way more shocking.

The more astute among you have noticed that D’Arcy Lussier has shown signs of instability and even mental illness lately. Who can forget the now infamous post that featured many Paint.NET atrocities that are now banned in most civilized nations?

The reason for this disturbing behavior is simple.

His entire blog has been an elaborate hoax that I invented while freebasing experimental, synthetically engineered, black-market coffee beans during a mind-numbing HR meeting one day.

Yes, I have been ghost writing the 50 plus posts a day for years under the guise of a batcrap crazy Canadian to keep up this charade. I even went as far as to hire a homeless guy who I found mumbling to himself on a street corner to impersonate this fictitious D’Arcy character of mine at various User Group meetings and conferences to lend credence to my misguided prank.

But no more…

Due to the recent addition to my family, I’ve decided to expose my blogging sins and turn full control of the blog over to the homeless guy, Burt. For those of you who actually do like D’Arcy’s blog, I’m sure that Burt will be able to maintain the quality of the content that you have grown accustomed to in between his frequent drinking binges.

Forgive me dear readers and may God have mercy on my soul for the havoc I have wreaked on the blogosphere with this cruel practical joke.

Rethinking Twitter

A couple of months ago I wrote a post that dismissed micro-blogging as white noise.  I had been only half-heartedly following the twitter page on GeeksWithBlogs and noticed lots of rather dull tweets of the "I’m hungry" and "Just rebooted my computer" variety. I quipped in my post that I might be able to justify Twitter for entertainment’s sake if people posted messages that looked more like this:

* Was attacked by a band of ninjas. I dispatched with them quickly but got ninja blood on my new shirt… about 3 hours ago from jail

* I just took a dump on boss’s Lexus. Suddenly I feel much better about having to work this weekend… about 5 hours ago from whore house

However, nobody seemed inclined to take my advice so I concluded that the medium was probably only suitable as a form of social entertainment for teenagers and was not a worthwhile pursuit for a software developer looking for professional development.

I just didn’t see how value could be provided in 140 characters, especially since the macro-blogging format was already being criticized for promoting superficial knowledge of topics and an even shorter attention span for a profession that is already notorious for ADD.

Well, that was two months ago and now I have a confession to make.

I just checked my Twitter home page and noticed that I have posted over 75 updates (mostly in the last several weeks) and am following over 40 people (mostly other bloggers).

It appears that I have caught the twitter bug.

Why?

  1. Sarcastic Quips - I’m not sure if this is a permanent trend or not, but I’ve noticed that the tenor of my blog posts has strayed from my sarcastic roots and they have tended to be more on the serious side lately. I’m not intentionally doing this, but as I put more effort into the content the humor aspects don’t always naturally fit in as well. Luckily Twitter provides a perfect medium to channel all of my sarcastic energies into nice, concise bursts throughout the day. It refreshes me mentally like a good run refreshes me physically.
  2. New Writing Challenges - My favorite twitter experiment so far has been Twaiku, which is what I call technology related Haiku that follows the traditional 5-7-5 syllable pattern. I’ll probably do a compilation post along with a call for contributions soon. I also like the challenge of trying to squeeze thoughts into 140 characters. One major twitter anti-pattern that I see is continuing single thoughts or even rants across multiple tweets. To me that is a sign that the writer needs to be more disciplined or else move to a different format like email or regular blogs.
  3. Recommendations - I have a whole list of thoughts and impressions about tools that I will probably never turn into blog posts because of the commitment it entails in both writing and research. By contrast, twitter encourages these types of half-formed thoughts. Ad hoc recommendations for tools and resources is one of the more common topics that I see in the twittersphere (right behind potty humor, bizarre links, and TMI confessions) . 
  4. Personal Interactions - One of the more unexpected aspects of twittering for me was the refreshing informality among micro-bloggers. The comment section of blogs can be serious and sometimes even adversarial as people debate the merits of various ideas. Although I’ve seen a few episodes of "twisticuffs" (twitter fisticuffs) between Scott Bellware and …well…lots of people, I mostly see tweeters joking around and having friendly exchanges. While I sometimes wish that the technology to personal/trivial ratio was a little higher for some micro-bloggers, it is still refreshing to see a completely different side to otherwise serious bloggers like Jeff Atwood, who recently twittered a link to a photo of a skydiving cat.

I do still have some reservations about Twitter regarding the overall signal-to-noise ratio, but I think this will improve as bloggers gain more experience with the writing format and Twitter clients start providing more sophisticated means for categorizing and filtering information.

For now, I will continue to take advantage of the freakishly slow compile times on my laptop and consume copious amounts of twitter brain candy.

For those of you who are relatively new to Twitter, here are some of my favorite Tweets from the last several days from macro-bloggers that you’ll likely recognize:

* Scott Hanselman "You know you are coding too much when you secretly wish you had a catheter in your backpack." [blog\msg]

* Phil Haack - "My guess for @codinghorror’s and @wilshipley’s new venture…codingwhore.com! porn == $$$" [blog\msg]

* Jimmy Bogard - "New personal reading material: "physics of the impossible"…has not explained how william shatner’s toupee stays attached (yet)" [blog\msg]

* Eric Engtech- I’m at about 500 lines of code without having checked it into source control. It’s kind of like having sex without a condom." [blog\msg]

* Jeff Atwood - "Computers change; people don’t. 72 years and counting. http://tinyurl.com/2npfyd." [blog\msg]

* Scott Bellware - "Microsoft keeps customer expectations artificially deflated so that they never exceed the capabilities of its products" [*blog* *updates*\msg]

* Mike Gunderloy - "I’m going to get my dog a phone. And then start giving HER number to PR people." [blog\msg]

* Rob Conery - "Twitter is conversational DCOM." [blog\msg]

* David Laribee (a.k.a. "the beatnik tweeter") "The Person Under The Stairs." [msg] …or "Omitting myself" [msg] [blog] (yes, a tad surreal at times…)

* Dewayne Christensen: Public service announcement: Make sure you have extra hose before you try to burn off that dead patch of grass in the yard. [still not sharing sarcasm with macro-blogging world\ msg]

* CaffeinatedTwit (that’s me) - "Twitterer Archetype 1: Person who can’t scale using regular IM, so they eliminate the communication bottleneck by going asynchronous." [msg]

* CaffeinatedTwit (that’s me) - "Twitterer Archetype 2: A person who is only a few bad days away from becoming that guy who mumbles to himself all day on a street corner." [msg]

* Scott Koon (a.k.a LazyCoder): response - @CaffeinatedTwit The bottleneck, in some cases, is that one or more of the participants is batcrap insane!" [blog\msg]

See you on Twitter! (assuming you’re batcrap insane enough to follow me after this)

Anatomy of a Flame War

As some of you may have noticed, one of my recent posts, Are .NET Developers the American Tourist of the Software Industry, was the scene of some vigorous debate earlier this week. Since I was a history major in college, I figured that I would summarize it textbook style for those of you who missed it.

1. Causes

1.1 The Influential Blogger - Reg Braithwaite, who apparently wields an unholy amount of power with his delicious links and reddit karma, published a link to my post. Just prior to that I bought him a virtual cup of coffee via PayPal as his February Caffeinated Codey prize, which is probably what drew his attention to my otherwise obscure and quaint little blogging hole in the wall.

1.2 The Flame Bait - I unwittingly achieved a flame-bait hat-trick by making controversial assertions about Microsoft, programming languages, and politics/culture all in one post. Microsoft and politics are obvious triggers, but I think the key ingredient was definitely programming languages. This is a topic that many programmers apparently feel “more passionate about than their wives” as a commenter so succinctly phrased it. I can only imagine the carnage that would have ensued if I had managed to slip in a quip about religion as well.

1.3 Random Timing - Partly I think that the timing must have just been ripe for the periodic communal catharsis that a good flame war seems to provide. My new theory is that the collective developer psyche gradually builds up tension until it reaches a boiling point at which time any suitable triggering event would suffice. As with a big city riot, the triggering event rarely seems proportional to the results. The fact that I only contributed a couple of the almost 600 comments that were eventually generated by the participating flame warriors seems conclusive proof to me that I was mostly just along for the ride.

In short…

2. Chronology

2.1 Trolling as Inspiration - After playing around with Ruby, Python, and PHP for various reasons, I became curious about the relative popularity and current usage statistics for each one. After doing a little research, I stumbled upon the Tiobe index and summarized some of the things that I found surprising about it in a post on Programming Language Trends. The post briefly landed on reddit, at which point some nasty trolls poked fun at it. This caused me to do much philosophizing about the social dynamic that exists between .NET developers and the rest of the software industry. Based on my prior experiences as an exchange student, I came up with the American Tourist analogy and took what I thought to be the high road by deciding to devote more time outside my immediate technological culture. I wrote my thoughts in the now infamous post and promptly forgot about it as it languished in relative obscurity for several weeks, which is pretty much what happens to all of the posts I write.

2.2 Ground Zero - On Monday morning I was excited to notice Reg’s link love and some quickly rising website traffic, but I was busy at work so I didn’t get around to checking my email until lunch time. By then I already had over 50 comment emails waiting for me in my inbox and about 100 more on reddit. I was a little overwhelmed, so I decided to give them a quick scan and then set aside some time that night to reply. By then there were over 100 on my blog and over 300 on reddit and I realized that that it was a little too late to join the fray. Instead I decided to just be a silent observer and save my observations for some follow-up posts. At this point, I marveled at how Jeff Atwood manages to deal with the 100-300 replies he gets on almost every post. I don’t seem to be cut out for this.

2.3 Some Name Calling - I got called an idiot a few times, but mostly I was amazed at how the commenters were arguing back and forth with each other rather than targeting me. Although some of the comments are of the “Bill G. is a fag” variety, most of them were well thought out and some were even longer than my whole post. I was also baffled by how many different topics were covered and by how many people argued over foreign policy, which country invented which technology, and whether American tourists were really that obnoxious. I really only meant the analogy to be a starting point in understanding the community dynamics. I’m about as apolitical as you can get these days.

2.4 Phone Interview - I got an email requesting a phone interview about the post from James Maguire, a writer from an online publication called datamation. I was a little perplexed by the request, but agreed and had a pleasant thirty minute conversation with him the next evening. He wasn’t that familiar with the world of programming, so we spent some time talking about the basics at a high level.

2.5 Time to Apologize - I noticed a comment from Scott Koon (a.k.a Lazy Coder), which took me to task for using Phil Haack as an example of what is wrong with Microsoft. I quickly reread the section where I linked to Phil and briefly panicked because I thought that I accidentally insulted a guy I really respect in front of 25,000 people. I really just meant to explain how keeping up with the sheer volume of technologies coming out of Redmond can be overwhelming for everyone and probably accounts for why most developers don’t stray far from the Microsoft stack, but in hindsight that wasn’t how it came across. I quickly sent emails to both Scott and Phil explaining what I really meant and after a good email exchange with both of them, I offered to buy them a beer at the upcoming Alt.Net conference in Seattle next month to make up for my stupidity.

2.5 One Degree of Twitter Separation - A link to the post gets twitterized by blogging superstar Jeff Atwood, thus almost…almost…making up for all the time I had to spend slogging through the comments.

2.6 Godwin’s Law Prevails - Somewhere around the 150th comment, I noticed that someone has actually made a Hitler analogy thus conclusively proving Godwin’s Law that “as online discussions grow larger, the probability of a comparison Nazis or Hitler approaches one”. I officially become disillusioned with the Flame War and seriously consider closing the comments on it. It seems like a lame thing to do, so I decide against it.

3. War Crimes

3.1 Flame Warriors Behaving Badly - Although they were in the minority, the usual number of troglodytes, evil clowns, artful dodgers, and blowhards showed up for the fun as you can see from the following quotes:

“Your analogy only partially works because while it’s true .net developers and Americans are hated in their respective communities, you don’t have a choice if you are born in America but *choosing* the .net platform is your own pathetic fault and just shows those that choose .net have no personal integrity or even care about the future of the industry as a whole.”

“Let me start with a little ad hominem - you are an idiot…”

“BTW, .NET is just a joke. As someone said, it is a way (not great) for newbies to start learning how to write software. I would say go with Turbo Pascal for a start and then keep away from MS as long as possible.”

“Visiting PHP is like visiting Sub-Saharan Africa. Really makes you appreciate what you have.”

“all code is the same, different syntax, different purposes. Shut the f**k up already. You nerdy b**ches.”

“I’m CTO of an start up. One of our hiring practices is to ignore any resumes that mention ASP or .NET.”

“Have you guys heard that Bill G is a fag???”

“If .NET developers are tourists from the United States”…then “Open source developers are the French.”

4. Aftermath

4.1  Surprisingly Positive Experience - Overall, I was pleasantly surprised by the quality of the debate and professional demeanor of the majority of participants. Like I said, many people spent more time and effort composing the comments than I did writing the post in the first place. I am still in the process of taking ample notes on the various arguments and suggestions. They should provide thought provoking material for future posts for quite some time.

In summary, it was fun…but let’s not do it again any time soon. :-)

Music To Code By

Max from {codesqueeze} tagged me last week with his "What music do you code to?" meme.

The timing of his question is perfect because I am just now rediscovering the joy of listening to music while coding. I used to always listen to music while I coded, but I’ve gone nearly cold turkey over the last year due to a traumatic electronic data loss episode coupled with switching jobs and not feeling comfortable enough to completely "tune out". Over the last several weeks though, I have become one with my head phones again and finding that my days are much more enjoyable because of it.

Unlike Max, my choice of music does often corresponds to my mood or situation, so I categorized my songs accordingly:

Top Reasons I listen to music:

  1. To block out the noise of cubicle hell: I’ve experienced the benefits of pair programming and am a fan of it as long as it is done in moderation. I also know how much wasted effort can be avoided when a team has mastered the art of high bandwidth communication, which an open environment can sometimes facilitate. However, there are still plenty of times when I really need to concentrate to get work done and cube farm chatter is a major productivity killer for me. There is nothing that helps drown out my well meaning, but noisy teammates better than some good music. When confronted with obnoxiously loud talkers babbling incessantly about inane personal stories, then I pull out the big guns like Tool, Nine Inch Nails, Sum41, and Nirvana.
  2. Lower My Stress: Whenever that rush of adrenaline that comes from an impending deadline starts to garble my thinking, I pull out some mellower music like Everything But The Girl, the Wallflowers, Jack Johnson, John Mayer, David Gray, David Mathews, or Sting to ease myself back into the productive zone.
  3. Boost My Energy Level: Caffeine is obviously my stimulant of choice, but sometimes after a late night of programming or blogging I need something upbeat but not quite as hardcore as my noise blocking music, so I turn to groups like Green Day, Beck, Weezer, and R.E.M..
  4. Cheer Up: Whether I’ve just had a meeting with the audit department, had an issue reopened for my code having excessive white space in it, or been informed by a user that they’ve changed their mind and my last month of labor will now have to be thrown away, there are times when I just need to be cheered up. That’s when I turn to The Strokes, The Hives, Gorillaz, and Proclaimers.
  5. Wallow: Let’s face it, there are time when cheering up just won’t do and a good bit of wallowing is in order. If I just found out that I drew the short straw and now have to do several weeks worth of documentation or am required to attend an all day HR meeting or have to inform management that the team is still 95% complete for the tenth week in a row on a massive waterfall project, then I resort to groups like Cold Play,  Counting Crows, Dashboard Confessional, and Radiohead.
  6. Focus on Reading: If I have some massive concentrating to do (i.e. whitepaper to read), but still need some ambient noise, then I have a selection of classical music that I turn to such as Rachmoninov, Haydn, Mozart, Beethoven or pretty much anything else classical.

I admit that my classification system isn’t perfect because several of the groups produce music that spans several categories and that I probably had a few particular songs in my head when I grouped them.

Of course, sometimes I also just like listening to music and that’s where all the rest of the groups that I can’t think of now come in to play.

I tag Justice, D’Arcy, Dru, Troy, and Rob (even though I forgot to respond to the last meme he tagged me with…:-)

Are .NET Developers the American Tourists of the Software Industry?

In case this post rides a reddit or Dzone wave, let me start out by saying that I am both from the United States and a .NET developer. Now on to my regularly scheduled point…

I’m fairly certain that most people would agree that Microsoft as a company is despised by a sizable segment of the software industry.

Since corporate politics bore me, I’m going to skip the part about why this is the case or whether this view is justified. Instead, I’m going to focus on the following corollary:

The same segment of the software industry that dislikes Microsoft also views developers who use Microsoft tools and languages as inherently less skilled and less capable.

That is a nice way of saying that when the typical Java\Python\Ruby developer conjures up an image of a .NET developer, it probably looks something like my esteemed blog sponsor on the right sidebar. In other words, I believe that the prevailing stereotype about .NET developers is that we wouldn’t know a software best practice or sound computer science principle if it recursively bit us in the arse.

Why does this stereotype exist and is it deserved?

Some harsh reddit feedback on one of my recent blog posts prompted me to seriously ponder this question and after going through various phases of anger, denial, and rationalization, I finally settled on the following theory.

Developers who don’t earn their living from Redmond-based technologies dislike Microsoft developers for some of the same reasons that people from other countries dislike Americans.

For any of my fellow countryman who are surprised by this, it is true. Most people in the world don’t like you. I’m sure books could be written on all of the social, political, economic, and cultural offenses that we unknowingly dole out on a daily basis, but I’m just going to focus on the one psychological offense that I’ve observed first hand numerous times in my travels.

Americans are inherently annoying because we rarely invest any effort into learning anything about the external world.

For example, If you are an American and meet someone who is well educated from another country, then statistically speaking the chances are good that:

  1. You will not speak their language even though they will probably speak English.
  2. You will not be able to locate their country on a map even though they could probably name all 50 states.
  3. You won’t know who their national leader is even though they will not only tell you the name of our President, but also give you a nice summary of his foreign policy exploits over his last two terms in office.

You don’t have to have a political science degree to understand the psychological effects of this interaction. How did you feel the last time someone completely blew you off because you know they didn’t think you were important enough to bother with? Needless to say, it doesn’t help much on the diplomacy front.

I think a similar dynamic occurs with .NET developers who are so busy drinking from the firehose at Microsoft that they forget about the rest of the development world entirely.

The reddit comments that drove this home the most for me was the one said my opinion should be discounted because I “break the programming languages world into “languages by Microsoft” and “other languages”. Not a bad point.

Then there was my favorite wickedly sarcastic comment from Lepton3 (…come on reddit…you really need to de-anonymize this process a little). In response to my stated desire to learn finally learn Python, he quips… “Steady on there tiger! You wouldn’t want to rush in too soon.” A damn good point considering how long Python has been popular.

They both made me realize that despite my great efforts to study software best practices and learn no less than a dozen new Microsoft technologies in the last few years, I was still being pretty myopic in my approach to software development.

So, I hereby relinquish any guilt that I may feel for not keeping up with every new technology coming out of Redmond in the next several years. Instead, I’m going to do the programmer’s equivalent to a little world traveling so I can get better clued into what the rest of the software world has to offer.

I’m sure all the other kids will still make fun of me for feeding at the Microsoft teat, but at least I won’t stand out like a typical American tourist anymore.

Oh, and for all you .NET readers who may get inundated with posts on Ruby, Rails, Python, Django, and MySQL in the near future (at least that’s what I’ve been spending all my free time on in the last few weeks), hang in there. A little foreign culture is good for the programming soul. Also, since there’s no place like home, I’m sure I’ll continue to churn out .NET content as well.

Thinking of Breaking Away from the Blogging Herd?

Blogging communities like GeeksWithBlogs offer the advantage of a pre-established readership, free hosting, and no hassles when it comes to setting up and maintaining your blog.

Unfortunately, you also give up a lot of control when you become part of a large blogging community and ultimately miss out on the basic joys of tinkering. For the more capitalist minded among you, you also forgo the possibility of ever monetizing your blog.

If you are currently considering migrating your blog to your own domain or getting ready to start your own blog and aren’t sure which direction to go, here are a few things I would recommend based on my recent experience.

  1. Consider Using WordPress - SubText is a fine blogging engine, but I have been won over by the enormous number of plugins and themes available for WordPress. That translates into a lot more functionality as well as a more professional look and feel of your blog. I initially assumed that it would require a lot more technical investment on my part because it runs on PHP and mySQL, but so far I have been able to make a large number of customizations without ever having to refer to a tutorial due to the similarity of PHP and classic ASP as well as the intuitive design and naming conventions used by WordPress.
  2. Choose a Readable Theme - With over 1500 free themes to choose from, it’s easy to get distracted by designs that are flashy but make it difficult to accomplish the primary purpose of a blog, which is to facilitate reading content. Make sure the text is the main focus of your page and that it is in a clear font. Simpler is usually better.
  3. Expect Issues with Importing Old Blog Posts - Even though SubText provides a nice xml export feature (BlogML), the import process into WordPress was still a little bumpy. I found a plugin to help with the process, but there were still some issues with formatting and category names after the import process.
  4. Don’t Underestimate the Damage Done by WYSIWYG Editors (i.e. FckEditor) - WordPress lets you change themes effortlessly, but if you have pre-existing posts that were created with a WYSIWYG editor, then the chances are good that the HTML in your old posts is so polluted with inline tags that the CSS stylesheets in your fancy new theme won’t work properly. I’m still in the process of manually cleaning up the HTML from my old posts and it is a mind-numbingly tedious process that I’ll probably give up on before I finish.
  5. Get Sophisticated with Subscriber Statistics - SubText offers some rudimentary statistics on readers, but I took the opportunity to switch to Feedburner and install plugins for google analytics and WordPress.com Stats. I have been impressed with the level of reporting detail they offer when it comes to analyzing site traffic.
  6. Widgetize your Blog - What’s the fun of tinkering if you can’t go crazy with the plugins? Some of my favorites so far are Popularity Contest, ShareThis, KG Archives, Twitter Tools, Yet Another Related Posts Plugin, and Subscribe To Comments.
  7. Expect a drop in Subscribers - This is one of the advantages that a blogging community offers, so you can definitely expect to lose a few readers during the transition. In the case of GeeksWithBlogs, it didn’t help that I was removed from the main feed as soon as I put my notice up and had no ability to set up 301 redirects.
  8. Learn about SEO (Search Engine Optimizations) - If you want to make up for your drop in readership, then you’ll probably want to roll up your sleeves and learn a little about the black art of search engine optimization while setting up your blog. If you use WordPress, start by using these plugins: All in One SEO Pack, Jerome’s Keywords, Head META Description, Enforce www. Preference, Google Sitemap Generator, and Google Analytics plugin. If you want to get really serious about it, I hear Max from codesqueeze is planning on offering a 2 day advanced course on SEO later this year in exotic Fargo, ND.
  9. Test in multiple browsers/readers - I had to abandon my first theme completely after I realized it looked absolutely horrible in Internet Explorer. Unfortunately, I had already wasted a lot of time trying to customize it. I also forgot to retest my comment section functionality after installing the second theme and thus didn’t find out that it was broken until several days after going live.
  10. Find a Good FTP Client - the web interfaces supplied by hosting companies will work in a pinch, but you’ll really want a good FTP program. I am totally hooked on SmartFTP, which I discovered after consulting Scott Hanselman’s tool list.

Setting up your own blog is definitely not for everybody. If all you want to do is focus on writing good content and not worry about anything else, then I would recommend sticking with the blogging community site.

However, if you want to learn about all the gooey goodness that goes into making a blogging engine purr, then I would highly recommend the experience of setting up a blog on your own domain. So far I’m glad I did it.

Comment Section Working Now

I just got an email from a reader letting me know that the comment page was throwing an error. After delivering a brutal caning to everyone on the QA staff, I fixed it. Sorry about that…

Many thanks to Christopher Boyle for bringing this to my attention.

Next Page »