Justin sent in an example from a system that reminds me of a group of developers I used to work with. They felt very strongly that the Web-Server / Client Browser model was inherently unfair. A web server, one guy would say, is nothing more than a regular computer with a few hardware upgrades and a slightly different operating system. Then another would chime in, Yeah! Why should the server have to do all the work? Why *waste* all those megahertz to just display a stupid webpage?

They'd continue their tirade ad nauseam and claim that if they ever ruled the world, the client/server model would be no more. What's worse, they were actually allowed to architect web software. And since they didn't believe in XMLHTTP, they'd continuously invent these complex javascript object models running through hidden frames carrying data back and forth from the client. In fact, it looked kind of like this:

// column assosiations (default 26 columns, but can add more)
function  dataArray(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t
                   ,u,v,w,x,y,z,a1,a2,a3,a4,a5,a6,a7,a8,a9
                   ,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19
                   ,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29
                   ,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39
                   ,a40,a41,a42,a43,a44,a45,a46,a47,a48,a49
                   ,a50,a51,a52,a53,a54,a55,a56,a57,a58,a59
                   ,a60,a61,a62,a63,a64,a65,a66,a67,a68 ) {
  this.col1=a;
  this.col2=b;
  this.col3=c;
  this.col4=d;
  this.col5=e;
  this.col6=f;
  this.col7=g;
  this.col8=h;
  
  //[ED:Snip col9 to col87]
this.col88=a62; this.col89=a63; this.col90=a64; this.col91=a65; this.col92=a66; this.col93=a67; this.col94=a68; }

And naturally, the result of that function would then be passed to a drawData function of some sort, which then goes and builds the table  ... 

for (var b = 1; b < tableHeadings.length; b++) {
  // this inserts every cell
  var tmp = 'tableData[' + a + '].col' + b;
  tmp2 = eval(tmp);
  mycol = 'c' + b;
  com = 'c' + b + '=r.insertCell(r.cells.length);c' + b + '.innerHTML="' + tmp2 + '";c' + b + '.id="' + mycol + '";';
  eval(com);
}

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!