Code Renaissance is about building great teams and great software. By exploring best practices, team interactions, design, testing and related skills Code Renaissance strives to help you create the team and codebase that you've always wanted.

More mixed feelings about Twitter

I'm still working on pushing good content to my twitter feed, but I find I'm having mixed feelings about the purpose of the platform.

Supposedly Twitter is all about "What are you doing?". I still don't find answering just that question to be very useful.

Some classify it as micro-blogging and I actually find that aspect to be pretty useful. It's a great place for links, quotes and thoughts that I otherwise wouldn't have a place for. It's even fun.

Then there's the whole social networking @ aspect of twitter which I still don't quite get yet.

Anyway I'm still figuring it all out.

Update: Just found some interesting guidelines on posting to twitter from Rands in Repose: The Art of the Tweet

Dysfunctional Deployment Practices: Constipation Deployment

Have you been having trouble with constipation? No not that kind of constipation, I'm talking about the dysfunctional deployment condition that I like to call Constipation Deployment.

With Constipation Deployment it seems practically impossible to get anything out at all. Sometimes it looks like you're about to push something out and then inexplicably you're put on hold again. Eventually you do manage to get something out, but it's not as big as you'd like and it's a piece of crap.

I've heard that Agile or Lean brand laxatives can get things moving more regularly and dropping golden nuggets in no time. I'm not sure its as good as all that, but its got to be better that what a lot of places do which is just keep straining away and wait it out.

Hmm.... I wonder what the development equivalent of hemorrhoids is?

Aren't metaphors great!

Javascript Bug: Processing takes progressively longer

Javascript Bug: Processing takes progressively longer each time you click a button or hit enter.

You might guess this is a Memory Leak Problem, and since this is Javascript you might suggest it could be the much hyped circular reference problem that can occur between a JavaScript object and a DOM object. Close but no cigar.

I've only seen this symptom 3 times in the wild, but every time the actual culprit has been a problem with event handlers, i.e. the same event handlers are being re-added without the old ones being destroyed. In the worst case each run of an event handler added another which generated an exponential explosion of handlers.

Depending on how you think about this you might want to classify it as a memory leak, but a progressive consumption of memory is not what's causing the slow down. Instead it's just huge stack of handlers being queued up and taking forever to run.

For a quick fix you can wrap this if statement around your add handler statement:

if(!this.HandlerAdded)
{
/*$addHandler code here*/

this.HandlerAdded = true;
}

This if block will only allow the handler to be added once. Note that HandlerAdded is a property of the function and not a variable. This means it won't error out as undefined even though it doesn't exist yet; it also means that it will persist to subsequent calls.

Alternately you could do something like this:

function EnableKeyPressHandler(enabled)
{

if(enabled== true)
{
 if(!this.HandlerAdded)
 {
      $addHandler(myObject, "keypress", CheckKey);
      this.HandlerAdded = true;
 }
}
else if(enabled!= true)
{
  if(this.HandlerAdded)
  {
      $removeHandler(myObject, "keypress", CheckKey);
      this.HandlerAdded = false;
  }
}

}

Then you can replace the appropriate add/remove handler calls with a call this method (note: this code is a mod/simplification of working code, but has not itself been tested).

Ideally you would do further refactoring to make sure that calls to add/remove handlers are made at appropriate times.

Creating a Professional Twitter Feed

I opened a twitter account nine months ago and didn't touch it again until last week. I wasn't sure what I wanted to do with it and I couldn't find any feeds that I liked to use as an example. On Friday I started toying with the idea of creating a professional twitter feed and what that would mean.

Mostly what I'm after from a professional feed is meaningful information. There are probably lots of things that people on twitter have said that I'd be interested in knowing. Unfortunately the signal to noise ratio is just too low. Any important stuff out there is being drowned out under a mountain of noise.

So at the risk of looking foolish, and realizing I'm still a twitter noob, I'm going to take a run at creating a decent feed http://twitter.com/CodeRenaissance.

Here are what I think are important uses of a professional twitter feed:

  1. Sharing clear, concise, relevant, meaningful, original thoughts: Hopefully these are your thoughts, but I'm also a sucker for great quotes. If you quote then include the source and if possible a link.
  2. Links to outstanding content: If not outstanding then really good; video and audio content are especially nice because these are resources aren't as easy to ferreted out. Oh and if you have a unique perspective on a link then blog it, don't tweet it (or do both).
  3. Meatspace networking: Imagine a member or leader from a Developer User Group tweeting "Hey I'll be at coffee shop x at location y for the next hour if anyone wants to talk code". That might be cool.
That's it for now. Let's see how this experiment goes. Oh and here's some common sense advice about starting on twitter.

Link Fest: 1st Quarter 2009

Everyday I skim about a hundred blog posts and only flag a handful of important ones for careful reading later. Now once a quarter I'm going to start going through those posts and picking the best on a handful of important topics. Without further ado, here it is, the 1st Quarter 2009 Code Renaissance Link Fest.

Code and Software Development:

Development Methodologies:

Testing:

Refactoring:

Technical Debt:

Typography:

Marketing:

Information Architecture:

LogoDesign:

Web Design:

Web Writing:

Web Development:

Configuration Management:

Management:

People & Teams:

OtherStuff: