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

KaizenConf Resources

stone bridge Even though the Continuous Improvement in Software Development Conference may be over, there is still much work being done to distill and distribute the knowledge, value, and magic that happened made KaizenConf 2008 the great success it was.

Get the videos

As part of that distillation process I, and many others, are currently going through hundreds of Gigabytes of video footage we captured, we’re doing post production work, and eventually we’ll be uploading all of it to the Intar-webs.

The primary location to find information on any of the pre-conference workshops or the sessions themselves is at the KaizenConf wiki. If you’re looking for the videos, you’ll want to pay particular attention to the media page.

Lean Software Engineering

Lean is one topic that I’ve been studying a lot as of late, and I’ve been putting it into practicing more and more every day. A fair amount of my time at KaizenConf was focused on the discussions and workshops around Lean – pull systems, Kanban boards, Value Stream Mapping, etc…

And naturally, since those are the topics I’m interested in, I made sure to get those videos processed first. :) Here’s what I’ve got so far:

Pull, Don't Push - Lean Systems and Kanban

Workshop Description (from Dave Laribee's original post on the workshops):

I will say this will be aimed at getting you up and running with an iteration-less pull system or "Kanban." We'll cover some of the principles of Lean Software Development, queue and buffer patterns, and metrics/reporting.

We’ve got nearly three hours of video from this workshop.

  1. Dave discusses some of the reasons, principles, and basics of Lean Software Development
  2. Value Stream Mapping - a real-life example
  3. Building a Kanban Board

Kanban in Small Teams

I can’t take any credit for this one, but I can give credit to Ryan Kelley and the Los Techies crew for getting this video ready.

The main topic I was trying to discuss in this space were the challenges that are out there with implementing Lean and Kanban in small teams.

You can read more info about this session at the wiki. Oh, and be sure to check out the video for the full impact!

More to come…

As I said, there is plenty more content to be processed… but it does take time. So a huge thanks goes out to all the other folks volunteering their time to help with this effort. Keep you eye on the wiki for more updates and content.

Always be Improving!

kick it on DotNetKicks.com

Technorati Tags: , , , ,

Tab Completion and Syntax Coloring in IRB

Tab Completion and Syntax Coloring in IRB Again, this is just another little reminder for myself since I keep forgetting how to do it. Anyhow…

If you don’t have tab-completion and syntax coloring in your IRB sessions, you’re missing out! But thanks to both some kick-ass terminals and Ruby itself, you can get both in just a few simple steps.

As easy as 1, 2, done!

Assuming you’ve already got Ruby and RubyGems installed, fire up a terminal window and install the Wirble gem:

gem install wirble

Next, open (or create it if it doesn’t exist) the .irbrc file in your home folder, typically located at ~/.irbrc in Linux, OSX, and Cygwin environments, and add the following:

require 'rubygems'
require 'wirble'
Wirble.init
Wirble.colorize

Restart your terminal, fire up an IRB session, and enjoy!

Technorati Tags: ,

Installing RubyGems in Cygwin

Ruby!

This is as much a reminder for myself as anything else – as I’ve now had to do this about a dozen times between repaving my laptop, home workstation, and work machine(s).

The How-To

Don't try to install RubyGems for Cygwin using the gem that comes with the Ruby One-Click Installer for Windows. Instead, get the tarball, or zip file, and install it using the included installer script.

Since RubyGems is pure Ruby you don't have to worry about having a compiler installed. It should just work with the default Cygwin install plus Ruby and its dependencies. To install it, do the following steps:

  1. Download the RubyGems tarball from Ruby Forge
  2. Unpack the tarball
  3. In a bash terminal, navigate to the unpacked directory
  4. Run the following command:
    ruby setup.rb install
  5. Update RubyGems by running the following:
    gem update --system

Note: You may need to run the updated command twice if you have any previously installed gems.

Technorati Tags: ,,

Alt.NET Podcast – jQuery in ASP.NET

Alt.Net Podcast logo The latest edition of the Alt.Net Podcast series is out!

This episodes features a bunch of smarties, and one dummy (me), talking about JavaScript and the recent jQuery + Microsoft announcement.

I’d like to thank Mike Moore for inviting me to be on the show, and a special thanks to the other guests for letting me hang with them!

Oh… and the reason I’m silent for the last 1/4 of the show is not that I learned to keep my mouth shut. It’s because the hard drive on my machine decided to die – literally my C: drive actually disappeared, Skype crashed, and then my box froze up and would not boot back up.

On the up side… I got to order a new 10K RPM VelociRaptor drive!

Hacking Windows Mobile 6.1 to Enable Tethering

One of the things I love about my Windows Mobile device, a Blackjack II running on the AT&T network, is being able to tether it to my laptop to get an internet connection when I’m in a pinch and can’t find a Wi-Fi signal.

Windows Mobile 6.0 + a BJII used to require a non-trivial hack to get Internet Connection Sharing working - the largest part of which was actually installing ICS on the device.

However, WM 6.1 includes ICS by default*, so I was hoping ICS would just work.

But its not that easy

Unfortunately, ICS doesn’t work right out of the box. Every time I tried to connect, I received an error message

The remote party has ended this connection.

I’d seen this before and it was usually a problem with the GPRS connection settings. I thought, “No biggie… I’ll just fix the settings!”

  • Settings | Connections | GPRS

The GPRS settings are locked by default Except when I got there, I couldn’t edit any of the settings. There were all locked down!

To the registry!

Using a mobile registry editor, I was able to change the values of a few keys, unlocking the settings and hopefully allowing me to use ICS.

  • Find the key HKEY_LOCAL_MACHINE\Comm\ConnMgr\Providers
  • Under one of the GUIDs you'll find a Connections folder that will have an entry for each of your connections
  • Under each connection, find the ReadOnly key and set its value to 0 (zero).

Change the Access pointI then navigated back to the GPRS connection settings and confirmed that the settings were no longer locked – the little lock icons disappeared.

Next, I had to edit my AT&T ISP connection, changing the Access point to wap.cingular.

Welcome to the tubes

And finally, after all that hacking around, I was able establish an ICS connection between my phone and my laptop. I then made a quick post to Twitter, via my desktop client, just to make sure I was able to access the intar-tubes. :)

Hope this helps!

* : or at least the ROM for the BJII from Samsung does.

Technorati Tags: ,

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 the rich drag-n-drop-web-2.0-ish UX. I could tell they were impressed with what we’d done… but they were blown away when I showed them the 33 lines of jQuery code, including some white space, it took to build the functionality.

I didn’t think a whole lot about it at the time, but given the recent announcement about MSFT + jQuery, I’m going to go ahead and take full credit for making it happen!* :)

The real news…

Its great that developers who’ve been forced into a Microsoft-only stack – “No Open Source for you!” – might finally have an opportunity to spread their wings a bit and see what the OSS-fuss is all about. But I have to agree with Ayende – there is a bigger story here:

This is the first time in a long time that I have seen Microsoft incorporating an Open Source project into their product line.

I am both thrilled and shocked.

In the end, I think this is a big win for all of us and hope that its a sign of good things to come.

* : where “full” is roughly equivalent to “zero.”

Technorati Tags: ,,

Subversion Support Comes to CodePlex… Sorta’

One of my biggest gripes with CodePlex has always been that it uses Team Foundation Server as its source code management technology. And if you have any questions about my stance on TFS as a SCM system, just consult Twitter.

But thanks to a lot of hard work by Ayende - and the other contributors - I, and anyone else who prefers a low-friction SCM, have a workaround: SvnBridge.

You’re selling me a bridge?

SvnBridge running locally SvnBridge is a tiny, lightweight application than runs on your local machine, acting as a proxy and translator between your local Subversion clients (TortoiseSVN, svn native, etc…) and a remote TFS server. A remote TFS server like say… CodePlex. Or your company, client, or customer’s TFS servers.

The key to using SvnBridge is all in the URL you use to get your code. As you can see in the above screen shot, the URL for the actual SvnBridge code base is http://localhost:8081/tfs03.codeplex.com/SvnBridge. Meaning you could check-out the code using an SVN client, like TortoiseSVN using that URL.

Similarly, you can get at the code for the ASP.NET MVC framework and Rob Conery's MVC Storefront application using the following URLs:

  • http://localhost:8081/tfs07.codeplex.com/aspnet/MVC
  • http://localhost:8081/tfs07.codeplex.com/mvcsamples

It works, but…

Sure, using SvnBridge in this manner works, but its a bit unnatural compared to how most folks are used to using Subversion. Wouldn’t it be nice if you could get to the SvnBridge, ASP.NET MVC, and MVC Storefront code using SVN with URLs you’re used to?

Oh… and wouldn’t it be the bee’s knees if you didn’t have to run the SvnBridge proxy on your local machine at all!

SvnBridge on the CodePlex servers?

The other night I was informed of a little known (at least to me), and possibly still secret, CodePlex feature – SvnBridge, Server Edition!

https://your-project-here.svn.codeplex.com/svn

Though I have no concrete proof of it, I would imagine this is a result running SvnBridge on a CodePlex server, plus lots of fancy DNS and routing magic. And while I don’t know for sure how the CodePlex team is pulling it off, I do know that it works.

Don’t believe me? Give it a go for yourself!

Using your favorite SVN client, pull down the code for SvnBridge, ASP.NET MVC, or MVC Storefront using the following URLs:

Of course, you can also access any other CodePlex project by substituting its project name in at the beginning of the URL.

Show me!

Pulling down ASP.NET MVC via SVNAnd now, for your visual enjoyment, and because some folks refuse to believe that which they can not see, I give you a screen shot of TortoiseSVN checking out the ASP.NET MVC code base… without going through a local SvnBridge proxy!

Hopefully we’ll get some details on the setup the CodePlex folks are using to get this all working so we can start using it in the wild.

kick it on DotNetKicks.com

Technorati Tags: , , ,

Subtext 2.0: Bugs, Features, and Patches

Plenty of other folks have already announced that the Subtext 2.0 bits finally dropped this past Sunday afternoon, hot off the CI server. And by finally, I mean – over a year after the last official release, and four months after we said it was just around the corner.

Good things come to those who wait

At least that’s what the Heinz company says. Or maybe they just had a brilliant marketing department.

Anyhow, Simone Chiaretta and several other folks have already hit the release highlights, so I’ll just steal their summaries:

Ch-ch-cha-changes!

As you can see, the new bits are packed with a metric crap-load of bug fixes, new features, and patches. And yes, metric-crap load is a technical term and a real unit of measure… or not, whatever.

But hey, you don’t have to take my word for it. You can get a full list of the changes here:

Go get you some

Oh yeah, and I should probably link to the new bits: DOWNLOAD

kick it on DotNetKicks.com

Technorati Tags: , ,

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.

Half Glass of WaterAs 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”, rather than a chance to improve one’s self and challenge one’s own assumptions. If left unchecked, such negative attitudes can result in the team member sticking their head in the sand in hopes they can avoid learning anything at all.

The introduction of new or improved tooling is often met by the pessimist with the same resistance as new ideas and thinking. They “just don’t have time to learn another tool.” So, rather than capitalizing on the potential value that can be realized by reducing friction, automating repetitive/error prone tasks, etc… the tooling is dismissed as being too complex and having too high a learning curve.

The most costly effects of a negative attitude are realized in the pessimist’s reaction to change. For these folks change is all about perceived risk and the failure of the business to decide what they want, rather than being about an opportunity to provide value to the business. Missed opportunity costs, indeed!

Negativity devastates teams

But even with all of those missed opportunities, an individual’s negative outlook has the biggest and most devastating impact on the rest of the team.

Teams feed off of the energy and emotions of the rest of the team. As a result, even a single negative attitude will eventually spill over and impact others members of the team.

And though the attitudes of other team members may not spoil entirely, the negativity has begun to spread – and left alone it will continue to do so, eventually infecting the team as a whole. Negativity is a self-fulfilling prophecy and a team with a negative outlook is condemned to failure.

Team members with a negative attitude are thieves, robbing the team of its potential, its moral, and often its success.

Address negative attitudes early

I am by no means an expert in dealing with team dynamics nor questions of personal mental health, but in my experience its best to address negative attitudes as early as possible. Don’t let things fester and don’t stick your head in the sand hoping they’ll work them selves out.

The team as a whole needs to take ownership of itself. It needs to work as a unit to provide a positive environment that's open and adaptable to change. That encourages and fosters education. And most importantly, the team needs to continually seek to improve itself and the practice of software development.

kick it on DotNetKicks.com

Entity Framework Vote of No Confidence

Sign the letterLooking 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 may finally be heard, or at least serve as a unifying call for others to follow, in the form of an open letter.

A number of people have worked on an open letter to Microsoft and the Entity Framework team. It outlines the various deficiencies in the EF specifically related to concepts a lot of us value as solid working practice. Every effort has been made to balance honesty with diplomacy and cooperation.

I would urge anyone who believes in the deficiencies outlined in the letter to sign the letter and then support the message. Blog it, Twitter it, discuss it, print it out and leave copies laying around your team room.

Remember, the goal of the letter is not to pull the plug on the Entity Framework, its to raise awareness among Microsoft customers as to the risks involved with adopting it.

Educate. Spread the message.

ADO .NET Entity Framework Vote of No Confidence.