About the author

Steven HarmanSteven Harman is a passionate developer who believes that writing great software isn't just a job, its a craft.

ASP.NET MVP

For recent posts and more about me, scroll to the bottom.

Subscribe

  • Subscribe to my feed. via RSS
  • Subscribe via email via email

Jobs

Badges

  • Subtext Project
  • Support Subtext
  • HiddenNetwork.com Banner

Me, On Software.

Some of my general views on software design, development, etc... and maybe even some sermons from my SOAP box.

jQuery + Microsoft. You’re Welcome!

By now everyone and their mother has heard about Microsoft’s adoption and support of jQuery, the little JavaScript Library that kicks big-ass. If you haven’t, go read The Gu’s announcement for the low-down. Every tech-blogger on the internet seems to be going ga-ga over the news with hundreds of blog posts regurgitating the announcement. But Fear not, this is not going to be one of those blog posts. Its all because of me! Last Friday while showing a couple of ‘softies a prototype web app I’m helping build I mentioned we were using jQuery to build out...

Negative Attitudes are a Cancer to Successful Teams

To the optimist, the glass is half full. To the pessimist its half empty. And to the engineer, the glass is twice the size it needs to be. As an engineer, I love that joke. It gets right at the heart of why we as enginerds often have such a hard time communicating with real people. However, it also reminds me just how demoralizing it can be to work with the pessimist. Attitudes in software development To Mr./Ms. Pessimism new ideas and new thinking are “yet another thing I have to learn”,...

Entity Framework Vote of No Confidence

Looking across blogs, Twitter, and the community in general there has been a lot of discussion around Microsoft's forthcoming Entity Framework. In the midst of the discussion many valid criticisms have been drown out or lost in the noise of the cheerleading, trolling, and marketecture generated by community Gloryhounds, Redmond, and any number of other super-pro-Microsoft groups/identities. Even the alt.net community has been guilty of adding to the noise and confusion. The noise has gotten so loud that the message itself has been lost. Voice your concern But through that noise it looks like a voice...

The Easy Way to TDD

Interested in getting started with Test-Driven Development but not sure where to start? Fear not! Get you some! That's right, you can now get your TDD at the front desk of your local Crowne Plaza. Wait... what do you mean its not that kind of TDD? I saw this sign in the hotel lobby during my recent trip to the West Michigan Day of .Net, I swear! Tim and James saw it too, just ask 'em! Technorati Tags: tdd, dayofdotnet, funny

ALT.DayOf.Net?

The recent series of Day of .Net events have been a bit atypical of most other Microsoft related conferences/events - at least historically speaking. The biggest difference I've seen? The decreasing number of "Hurray for the latest golden hammer handed down by our Redmond overlords" sessions. Instead, most sessions have focused on practices, principles, and tooling decidedly not driven nor delivered by Microsoft. They come from a more organic source - a community of developers seeking to continuously improve ourselves and our craft. What community? Some members of the community might gather under the ALT.NET banner,...

The Developer Exchange Program

This week I was having a conversation with some fellow developers at the ALT.NET Open Spaces conference and an interesting topic came up. We were talking about vast amounts of time, mostly personal time, we spend trying to improve our skills and our craft. We spend time reading and writing blogs, books, mailing list messages, attending and giving talks, contributing to Open Source, and reading and writing code. We spend a huge number of hours in the quest for continuous improvement. Self-teaching is good We all agreed that self-teaching is important and we do it because we...

Lightning Talk Recap:15 Minutes with Rhino.Mocks

At last week's CONDG meeting I gave a lightning talk on Rhino.Mocks. Overall I think the talk went pretty well - the talk was voted second best of the night, following Jon Kruger's talk on LINQ to SQL. But that's OK with me. I knew a topic like mocking would be a hard one to cover in just 15 minutes. My goal was just to get people interested so they would go out and investigate some more on their own. And judging by the questions I got during the one minute Q&A at the end of my talk and the conversations I...

On Geek Hero Worship

After last night's Columbus Ruby Brigade meeting several of us were over at a local watering hole soaking up some Guinness and a great conversation. Like all great conversations, at some point the conversation devolved into war stories, then then one-upsmanship, and finally a lot of hero worship. And no adulation is complete until some one points out that those folks we put up on pedestals are normal people, much like the rest of us. Of course being a bunch of Ruby enthusiasts, with several bordering on fanatics, that statement when something like They...

Stop Refactorbating or You'll Go Blind!

During a hallway conversation at CodeMash a few of us were telling war stories and/or fish tales about some of the coding horrors we’d seen over our careers. At one point the conversation was focused on code churn and compulsive refactoring. And then suddenly, without warning, I blurted out a single word that caused the entire discussion to screech to a halt. That word: refactorbation. When I looked around I saw a smile on nearly every face, but could tell that no one knew what I was talking about. And why would they... I didn’t...

Expectation Based Testing with Mocks

Last week I talked about Rubifying your C# code by adding the .Each() extension method to the IEnumerable<T> interface. I was discussing that code with one of the guys at work and he asked a brilliant question So, how did you test that? I was floored. Being such a test-first fan boy I couldn’t believe that I had failed to write that little extension method in a TDD manner. Hell, I hadn’t even done TAD! So how do I test it? There are no doubt a plethora of ways to test this...

CodeMash Open Space Podcast: Open Source on .net

I recently attended CodeMash, the biggest-little-conference around, and had a great time. While the sessions and content at the conference are first class, they aren’t what bring people back. Its the conference attendees, the hallway conversations, and the vibe that bring folks back and make the conference what it is. As a matter of fact, I only made it to a hand full of the sessions this year. Why? Because the rest of the time I was caught up in Open Spaces talks and adhoc conversations with wicked-smart guys like Dustin Campbell, Keith Elder, Bill Wagner,...

Anonymous Delegates, Events, and Lambda Fun!

Events and delegates aren’t exactly a new concept in the .net world. I might even go so far as to say that they are fairly well understood by most experienced .net developers. That’s not to say the concepts behind them are easy to grok... I’m just saying that if you know developer who’s been around the .net-block a few times, he/she probably has a pretty good grasp of what a delegate is and how they’re used. Am I such a developer? Up until yesterday I thought I was. Here’s the scenario I found myself in: I...

A New Year's Resolution for Developers

Your Resolution this year should be: If you aren’t sure, make it public... and make everything virtual (or overridable, depending on your language) by default. Of course this primarily applies to those folks building frameworks for statically typed languages... <cough> Microsoft <cough>, but it also holds weight for the rest of us. After all, we all want other people to use our code - even if other people is your customers, your team, or yourself. The point is, we want our code to be (re)used. And I don’t know about you, but I’d...

Replace that Stinky Code with a Bitmask and the FlagsAttribute

Pretend that you’re building an application to do something like... oh I don’t know, track employee time. Applications like this exist in almost every company on the face of the earth. After all, time == money, duh! Lets also pretend one requirement of your time tracker is to keep track of the employee’s regular work hours - meaning their start/end times and the days of the week they work. Again, seems like a pretty simple and intuitive requirement for a time tracking system. So, here’s my question: how would you go about storing the days the employee works...

It's About Being Disciplined and Open Minded

So here’s the deal... lately Rob has been kicking the hornet’s nest and stirring up all kinds of controversy, and discussion, amongst the asp.net community. The conversation is mainly focused around the use of inline scripting and plain old HTML camp versus the more traditional asp.net way of doing things with all server side programming and PostBacks. The conversation is challenging some of the core concepts that many asp.net developers hold true. Concepts and practices that Microsoft has handed down as gospel over the past several years. It’s a good old fashioned holy war. The kind that gets...

You Say MVC for ASP.NET, I Say mvc.net

Last night I finally took the time to watch the ScottGu and ScottHa presentations on the new MVC framework that Scott first mentioned back in March at the MVP Summit. First let me say that I’m really excited about this move, especially with my good buddy Phil at the helm. But I’m also excited because being the pragmatic developer that I try to be, I realize that much of the world only eats what it’s fed from Microsoft†. That being the case, I’m for any move that will help the large number of developers out there who are stuck...

Open Source Ice Cream

I almost fell out of my chair laughing when I read James' response to Phil’s Tweet regarding the recently announced open sourcing of parts of the .net code base. It went like this: Phil : Remember, "Open Source" is a trademark owned by the OSI. .NET is not open sourced, it’s being shared. James : I think shared might not be right either, more like shown. I am not sharing my ice cream with you if I just let you look at it. :) Open Source explained for the...

Learning To Count, Again

Quick, how many discrete values are between zero (0) and one hundred (100)? I’ll wait here while you count... Possible correct answers, depending on how you interpreted the question and how you count, are: 99 100 101 ∞ Why so many answers? This is a classic example of a fencepost error, also commonly known as an off-by-one error. It’s all about how you count! Let’s discuss each of the above answers one at a time. ...

How Not to Design for Usability

This is not a fake. I actually saw this very sign on an ATM here in town... and naturally had snap a picture for my own enjoyment. Oh, and this is no small mom and pop regional bank. We’re talking one of the largest banks in the world (in terms of sheer assets)... and a former employer of mine. I need to visit a few other locations to determine if this is an isolated case of overzealous design, or if it is standard practice. My gut feeling is the latter - most likely as required by...

What Makes a Blog Popular?

After reading Jeff's post about advertising on your blog and why it's so deliciously evil I thought I'd look into a few of the ad services he mentioned. Hey, I'll take a few extra bucks if you want to shill your stuff on my blog... and then I'll knock your product anyhow. I'm a huge fan of spite! But I digress. I was checking out some of Text Link Ads' free tools and I came across the Blog Juice Calculator. As best I can tell this is nothing more than a tool, and I use that term loosely, to judge the...

CSS Friendly Control Adapters Now Hosted on CodePlex

I don't know how I missed this for so long... but I just realized that the CSS Adapters are now a community product. As best I can tell, Microsoft decided to hand control of the Adapters project over to the OSS community and it is now being hosted at CodePlex. Actually... I do know how and why I didn't catch onto this until now - Microsoft's asp.net site make no mention of the fact that the product has now been handed off to the open source community. (Or, at least it didn't as of the time of this writing.)...

Gaim Settles Legal Issues with AOL and Get a New Name - Pidgin

Like most netizens, IM is one of my primary methods of communication... and has been for many years. And like a good number of you I also have multiple IM accounts, AOL AIM, Google Talk, MSN Windows Live Messenger, etc... and one of the biggest pains of using multiple IM accounts/protocols is having to use multiple IM clients. Those in the know (like myself) have been using a great free (as in speech and beer) IM client to consolidate all of their accounts into a single IM client. That magical client's name? Gaim - well at least it used to...

A Reflection on Lessons for the Young Developer

In his Working for The Man piece Jeremy Allison lays out six lessons he's learned over the course of his career in software; six lessons he'd like to go back and tell himself at the beginning of his career. Whether you're a code-slinger just starting out or a seasoned veteran with wisdom and design patterns coming out your ears, this is a great read. So go read it now... I'll wait. This is me, waiting... See I told it was good, didn't I? Even though I've only been in the software business for half a decade I've already learned many of...

Software Versioning vs. Naming

This rant started as a comment to Jeff 'Coding Horror' Atwood's recent posted entitled "What's In a Version Number, Anyway?" In his post Jeff take a look at some of the What, Why, and How software gets its version numbers and how those influence the product's name. The topic is particularly interesting to me as not too long ago Phil and I were discussing a possible change in the naming scheme used for Subtext. Anyone who has been following Subtext development (and releases) lately has probably noticed the flurry of version numbers that are leaking into the product...

Trying To Be Productive

This past week at CodeMash I sat in on Neal Ford's The Productive Programmer session, and am I ever glad I did! This session shows you how to become a more productive programmer every day by using tools that you didn't know you already had. I would describe the session as a fast paced cookbook-style run down of tips and tricks to help recapture minutes (or even hours) a day that you would normally spend doing a lot of really mundane tasks. One of the best points Neal made was that our computers have some how turned the tables...

Sharp Tools for Sharp People

Today at CodeMash I had the opportunity to sit on Joe O'Brien's What makes Rails possible, an introduction to the Ruby language session. Let me just say... despite all of the hype, I'm really starting to get excited about the power (and other cool stuff) that dynamic languages like Ruby have to offer.  Joe did a really great job of giving us noobs a quick intro to not only the Ruby language, but also to why dynamic languages are so powerful, and how useful they can be. Naturally some of the attendees started to raise questions about Ruby's lack of static type checking...

CodeMash '07 - I'm in!

Just a quick post to announce that I will be attending CodeMash 2007! What is CodeMash? I knew you were going to ask that... so let me give you the lowdown. CodeMash is a techie conference/event aimed at software development types. Nothing to unusual about that - there are tons of software related conferences held each year. However, what is different about CodeMash is that it doesn't just target a specific platform, vendor, paradigm, language, etc... There are still sessions that cover each of those topics (and way more), but the sessions are organized into tracks. Each track has...

Check out my stack...

I was just browsing the Subtext's Ohloh Metrics Report (previously mentioned here), playing around with some of the cool Contributors Features when I saw something new... a little box that said "0 Stacks, Stack It!" WTF is that? was my first thought... but before looking into it I clicked "Stack It!" and suddenly Subtext had 1 Stack. My next step was to figure out what I had just done. A quick trip to the Ohloh home page and I found my answer: New Feature: Stack It! We've introduced a new community feature called "Stack It!" which allows you to browse...

Hotfix KB928388 - Revised Daylight Savings Time

Today I was merging the Subtext 1.9 branch back into the trunk in our SVN repository and I came across an interesting "Gottcha" to keep in your back pocket - Microsoft has changed the Time Zone settings with the fix for KB928388. The Back Story One of the great things that Subtext has going for it (from a developer's perspective) is our great suite of Unit tests. At the time of this writing we were up around 39% code coverage. So, being the contentious developer that I am, after I merged the branch into trunk and cleaned up any...

ohloh.net - Metrics for Your Open Source Project

Some time ago I read a story (really, more of an announcement) on slashdot about a new Web site/service that was attempting to evaluate open-source projects. When I noticed that site was founded by a couple of ex-Microsofties my interest was piqued! Rather than blindly rely on the anti-MS propaganda that the slashdot readership tends to spew forth, I went ahead and checked out the site for myself. First question... exactly what does Ohloh intend to provide? Answer... directly from their about page: Ohloh is a resource for open source intelligence on thousands of open source projects. Ohloh collects software metrics from a variety of sources including...

The 'ATLAS' Framework - Callback Handler JavaScript Bug

First, an introduction. "ATLAS" is a free (as in beer) framework from Microsoft aimed at building rich, responsive UIs by utilizing AJAX techniques on the web. This framework is different from other AJAX libraries/frameworks as it is built for, and fully integrates with the ASP.NET 2.0 server-based development framework. This tight integration makes adding AJAX-ish functionality to your existing ASP.NET applications quick and (relatively) painless. My First Take I recently decided to look into using ATLAS as the AJAX Framework of choice for the Subtext project. After running through the step-by-step installation instructions, and reading a few quick...

Calling All SourceForge Users

As many of you likely know, I am one of several [very talented] developers working on the subTEXT Project. As such I try to keep on top of our various Trackers and the items in them. If you take a look at our Bug Tracker you will notice that you can search and/or filter the items using a variety of predefined fields. One of these fields is labeled "Group". What is "Group"? The Group field is available in the Feature Request, Patch and (as I mentioned) the Bug Trackers. For the subTEXT project, the values for this field tend to be version...

Requirements - Feast or Famine.

Tonight I was sitting at home, reading through some Business Requirements for an upcoming release at work... sounds like fun, doesn't it!?! Anyhow, I came across a particular line in the documents that just made me laugh. (I've edited the exact statement a bit to remove any actual names)These requirements have been determined by [insert client here] based on the current understanding of [insert your application here] and the [insert client here] needs. As development, future testing, and field validation occur, additional requirements may be identified. Now normally I might not have found the following line so...

No Respect for Windows Open Source Projects...

I just read an interesting article by Shaun Walker, of DotNetNuke fame, in which he talks about Open Source software written for the Windows platform and the lack of respect it gets in the Open Source community.  FTFA: "It's hard being an open source project on the Microsoft platform. Because no matter how hard you try to exemplify true open source ideals, you will not get any respect from the non-Microsoft community."Shaun also gives the Open Source Definition's (OSD) 10 Commandments defining the values that the Open Source Initiative was founded on. Yet, even though DNN and other OSS projects for Windows (like subText) adhere...

Preventing Comment Spam - Google's Approach

I'm sure anyone who has their own Blog, or has even come across someone else's Blog, would agree that comment spam can be quit a nuisance. Google has recently announced their idea for how to prevent such abuse. Google's idea is to add a new attribute to "any [hyper]link that a user can create on your site automatically." Google claims that when their spiders see hyperlinks with the attribute (which takes the form rel="nofollow"), they won't give any credit to the links when they rank their search results. The thinking is this will eliminate the benefit the spammer would gain...