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.

Why you should be reading this in Google Reader

I've started doing an informal survey of people in I.T. about their blog reading habits and a surprising number of them follow blogs by, get this, actually going to the website; not so long ago I was one of them. I knew about RSS and feed readers, but the idea of installing another program and checking it for content was less than thrilling to me.

When I found out about Google Reader I decided to give it a try... After signing up and I went to my iGoogle Page, and added it as a gadget. The beauty of this was that anytime I went to do a search I would have a small number of posts waiting to distract me... OK, maybe that's not exactly beneficial from a productivity standpoint but I am a big believer in information snacking and when I've hit a dead end and need to do research, it's probably time to give my brain a brief rest anyway.

Actually Google Reader did solve some important problems.

  1. It kept me from having to look for useful information to distract myself with when I needed a break (snack attack).
  2. It allowed me to flag important/longer posts for a more thorough read later (so I didn't have to finish them if I was in a pinch for time).
  3. It made discovering new content easy. Google Reader will make suggestions based on your current subscriptions.
  4. Most importantly it made reading blogs convenient. The fact that it's web based means it's just there. Whenever and wherever I go online I it's always waiting for me; I never needed to think about it again. Once I subscribed, up to date content was always at hand.

I'm not an early adopter of tools and technology. This is mainly because, no matter how cool or beneficial the technology is, if it's a pain I won't use it. For me convenience is my tipping point; once something becomes easy to use or, more importantly, makes my life easier, then I'll try it.

If convenience is a sticking point for you too then you may want to give Google Reader a try. If you do I'm fairly certain that you'll be hooked on reading blogs via RSS too.

C# - A Simple Infragistics Ultra-Web-Chart Bar-Graph Example

I'm not a big fan of Infragistics. One of my biggest annoyances with them is that it's really had to find documentation on how the different controls work. Since I couldn't find a simple example of manually loading data into their UltraWebChart control (though many ultra-complicated ones) I thought I'd post the code here in the hopes it may help some of you out there.

If you drop an UltraWebChart on a page and add this code you'll get something that you can start to play with.

protected void Page_Load(object sender, EventArgs e){

UltraChart1.ChartType = ChartType.ColumnChart;

DataTable columnData = new DataTable("ColumnData");

columnData.Columns.Add("Month", typeof(string));

columnData.Columns.Add("Foo", typeof(double));

columnData.Columns.Add("Bar", typeof(double));

//Add additional columns here; for each column add a parameter to each row below.

//Below uses params so additional columns of data are comma delimited

columnData.Rows.Add("Jan"/*Month*/, 3400/*Foo*/, 1200/*Bar*/ /*, YourNewColumn*/);

columnData.Rows.Add("Feb", 2300, 1200);

columnData.Rows.Add("Mar", 5994, 1200);

UltraChart1.DataSource = columnData;


} Work Around - Display Nested Master Pages in Design View

Here's a quick workaround for displaying nested master pages in design view. As you may know, when you switch to design view on a page that inherits from a nested master page you will normally get the following notification:

"Design view does not support creating or editing nested master pages. To create or edit nested master pages, use Source view."

Interestingly if you place a space after the reference to the master file name (e.g. MasterPageFile="~/TemplateC.Master ") the IDE will let you switch to design view, only now you will get the following error in your error list.

"Could not find master '~/TemplateC.Master ' "

Once you rebuild your project that error disappears as well and everything works fine at run-time. In the design view you'll see all of the content that you have added (but not the content inherited from the master page). This will allow you access smart tags and wizards for configuring controls and do a little visual editing.

The lack of a full view of your page with inherited content is limiting. However, because the design view often greatly differs from the different browser renderings(including IE) I have long since gotten into the habit of keeping a browser open on my other screen to use as my "Design View" during development.

Hope this helps... I know it was really bugging me.

There's more to Software than just the Code

You may have noticed that the site logo now has cleaner graphics/typography along with the new tag-line "There's more to Software than just the Code".

The new tag-line isn't meant to imply that I don't plan to post code from time to time -- currently I'm doing web development using c#, and AJAX and that's is bound to work it's way in -- but I knew from the outset that I wanted to keep this blog fairly language agnostic and try to focus on principles, concepts and topics that would apply to a wide array of programmers. My recent post about Renaissance Developers lays out the kinds of topics that I plan to cover (typography, graphic design, UX, Testing, etc).

The tag-line is my way of saying that I think that we as software engineers too often emphasize coding to the exclusion of other helpful and necessary skills. In light of this my focus and the focus of this blog have been broadened to discuss a variety of skill-sets and topics, coding or otherwise, that are beneficial to developers seeking to create truly great software.

UI/Graphic design should matter to developers

For the first time I'm working at a company that has a graphic-artist/web-designer. He's very good at what he does -- if you are in the position to hire such a person for your company I highly recommend that you do; it pays dividends. At a lot of companies though we developers are all they have and we need to start making an effort.

How often have you heard someone say "I'll make the form/webpage/whatever, just don't ask me to make it pretty" or something of the sort? Starting out as a developer I made similar comments myself.

Why? Because no one likes sucking at what they do and if you can blow it off like it's not something important then you don't have to feel bad when what you turn over sucks. Then, of course, there is the moral superiority of being a real coder, not like those mamby-pamby Graphics/UI guys.

Over time I had to do more and more front end work and, being the kind of guy that hates to suck at anything and loves to learn, I started to study graphic design and User Interface(UI) design. The more I learned, the more I began to understand how important it could be to the company and the more I cared about the quality of the work I was doing.

Now just to be clear I'm not saying that you have to be a graphics guru, but if you are doing any work that is visible to the customer/client then what you do affects the bottom line; it can make a good product less usable and a good company or product seem unprofessional and unpolished. A considered, consistent layout with some subtle gradients, and a few graphics will take you a long way and a bit of study and practice will set you in good stead to producing consistently visually appealing work. If you already work with a designer then you'll be better able to understand their viewpoints and have a stronger team because of it.

Continuous learning is part of our jobs, part of staying competitive in our field, and that's starting to mean more than just staying on top of the latest programming languages and methodologies. The more you can learn about UI and graphic design, the more valuable you will be.

The Renaissance Developer

You may be familiar with the concept of the Renaissance Man, someone who, like Da Vinci, explored art, science and writing and excelled at all of them. This got me thinking -- what would it mean to be a renaissance developer? It takes a lot of time to master one field of study let alone many, but following the concept of the T-Shaped person I think it is important that we branch out, explore related fields and become as well rounded as we can, with the idea of the renaissance developer being something to strive for.

A true renaissance developer would be someone who is not only a excellent developer in multiple languages, but who also appreciates all of the ancillary fields in their work (business, design, marketing, configuration management, testing, etc.) and strives for a level expertise in as many of these fields as possible. Because of this their applications should not only be well coded, but they should also look good, be extremely usable, secure, testable, maintainable, configurable, scalable and easily deployed and thoroughly meet the needs of the users and the company.

That said, what skills does the up and coming Renaissance Developer need? Well here's a short list of things that I think are important:

  • Multiple language/enviroment expertise
  • Interaction Design(IxD)
  • User Experience(UX)
  • User Interface(UI) Design
  • Information Architecture(IA)
  • Software Architecture
  • Graphic/Visual Design
  • Security/Hacking (know thy enemy)
  • Configuration Management
  • Software Testing
  • Marketing (not bad marketing, like our product sucks but we want you to think it's great and buy it anyway; good marketing)
  • Typography
  • Business
  • Writing

There may be more that I haven't considered yet, but those are some quick qualifications for a renaissance developer. I have some followup post on many of these already in the works, so I'll be talking on this more.

Oh and I'm not implying by any of this, or by my blog in general, that I think I have "arrived". I believe in continual learning. I think that becoming what I now refer to as a renaissance developer is a lofty goal and, having found a excellent destination, I have set my course in that direction. I invite you to come along on the journey.

You may also be interested in the following posts: