<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>Adam.Kahtava.com / AdamDotCom</title>
  <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/" />
  <link rel="self" href="http://adam.kahtava.com/journal/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2008-07-18T05:17:45.6311261-07:00</updated>
  <author>
    <name>Adam Kahtava</name>
  </author>
  <subtitle />
  <id>http://adam.kahtava.com/journal/</id>
  <generator uri="http://www.dasblog.net" version="2.0.7180.0">DasBlog</generator>
  <entry>
    <title>Gross Generalizations: Software Evangelists, Rock Star Developers, Senior Developers, and Software Architects</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/07/13/GrossGeneralizationsSoftwareEvangelistsRockStarDevelopersSeniorDevelopersAndSoftwareArchitects.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,a9d1f0b5-9787-4919-83ca-69bfbcca1d79.aspx</id>
    <published>2008-07-13T11:14:03.317-07:00</published>
    <updated>2008-07-18T05:17:45.6311261-07:00</updated>
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <category term="Team Work" label="Team Work" scheme="http://adam.kahtava.com/journal/CategoryView,category,Team%2BWork.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Generalization like rumors usually have
some truth to them – at some point, someone formed a thought around a frequently observed
piece of truth and… Viola! A generalization was born (or maybe a rumor). Generalizations
are incorrect for every single possible case (the exceptions), but there is truth
to them. 
<br /><br />
That’s my disclaimer; now let’s have fun with generalizations.<br /><br /><b>The Software Evangelist</b><br /><br />
The epitome of an Evangelist can be observed on Sunday morning TV:<br /><blockquote><i>"SHEBBA-WABBA-MULLA-MONEY-POWER-BOOYACKA-POW-BOW!!!!"</i><br /></blockquote>A congregation frying like bacon on the floor (being moved by spirits),
800 numbers requesting money seared into your TV set, and an Evangelist at the helm
orchestrating the show. 
<br /><br />
Evangelists are a great source of inspiration, excellent communicators, and great
leaders. However, they often present a one sided biased opinion, a narrow focus, and
can be driven by ulterior motives (money, power, viewership, readership, etc). 
Listen to any Evangelists with a grain of salt.<br /><br /><b>Rock Star Developers</b><br /><br />
Rock Stars are on MTV, and featured in tabloids - they live hard and die young.  
<br /><br />
The lyrics of Great Big White describe the life of a rock star:<br /><blockquote><div style="float: right;"><object width="200" height="162"><param name="movie" value="http://www.youtube.com/v/ydsuqDwaooc&amp;hl=en&amp;fs=1" /><param name="allowFullScreen" value="true" /><embed src="http://www.youtube.com/v/ydsuqDwaooc&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="200" height="162"></embed></object></div><i>Well I'm a wasted rock ranger</i><br /><i>I live the life of danger</i><br /><i>On the road to find a higher high</i><br /><i>I don't need no one's affection</i><br /><i>All I need is my injection</i><br /><i>The music of wild rock will get me by</i><br /></blockquote>Some companies seek out "Rock Star Developers", here’s an excerpt from
an email I received:<br /><blockquote><i>are you a Rock Star? I have an opportunity for a rock star … I am reaching
out to you in the hopes that you might the star I and the client are looking for!<br /></i></blockquote><p>
So, what is a Rock Star Developer? My perception is a: narcissistic, self-centered,
prima donna – someone who doesn’t work well in a team, doesn’t listen, does whatever
they want, and lacks dependability. Hiring a Rock Star Developer probably isn’t recommended
- unless your organization has a liberal guitar smashing policy, doesn't mind drunken
belligerency, and is run by a one man show.<br /><br /><b>Senior Developers</b><br /><br />
Everyone wants a Senior Developer, but occasionally these developers are more senior
than developers, and certainly not senior developers – often the developer's age (not
experience) determines their title. Studies have shown that a developer with 2 years
experience can perform at the same level as a developer with decades of experience.
Still some Senior Developers have an unexplainable need to let the world know of their
seniority through email signatures, resumes, business cards, LinkedIn profiles, and
so on.
</p><blockquote><i>If you work for 10 years, do you get 10 years of experience or do you
get 1 year of experience 10 times? You have to reflect on your activities to get true
experience. If you make learning a continuous commitment, you’ll get experience. If
you don’t, you won’t, no matter how many years you have under your belt. - Steve McConnell, <a href="http://www.amazon.ca/dp/0735619670/">Code
Complete 2nd Edition</a><br /></i></blockquote><p><b>Software Architects</b><br /><br />
Software Architects can be glorified Senior Developers - an architect might be a developer
who is senior (like a curmudgeon with a walker) that needed a new title.<br /><br /><b>Thoughts on generalizations:</b><br /><br />
There are two sides to these generalizations, the people who claim to be, and the
people who are. The people who claim that they’re a Senior Developer are usually impostors,
whereas the person who is a Senior Developer is collectively regarded as one by their
peers.<br /><br />
Generalizations (like metaphors) are communication mechanisms, sure, there are edge
cases and exceptions. Occasionally I encounter aversions to generalizations. Responses
like: <i>"Hey that’s not completely true, X,Y,Z disproves that"</i>, or <em>"Naw...
that’s just incorrect"</em> seem to be made when we forget that we’re just using generalizations.
</p><p><strong>What generalizations stick out in your mind?</strong></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=a9d1f0b5-9787-4919-83ca-69bfbcca1d79" /></div>
    </content>
  </entry>
  <entry>
    <title>2008 Summer Reading List: What Are You Reading?</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/07/01/2008SummerReadingListWhatAreYouReading.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,5b5f291f-0ef2-4b1f-b219-093e41b8a74d.aspx</id>
    <published>2008-07-01T11:04:05.339-07:00</published>
    <updated>2008-07-03T09:04:32.0305988-07:00</updated>
    <category term="Book" label="Book" scheme="http://adam.kahtava.com/journal/CategoryView,category,Book.aspx" />
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <div style="float: right;">
          <img src="http://ecx.images-amazon.com/images/I/51QQidWjIQL._SL500_BO2,204,203,200_PIlitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg" />
        </div>
Summer is finally here! Well... <i>"here"</i> as in, <i>"here in Canada"</i> where
we have 8 months of winter, fall, and spring...<br /><br /><b>This summer I hope to finish up the following books:</b><br /><ul><li><a href="http://www.amazon.com/dp/1932394907/">Windows PowerShell in Action</a> - <i><a href="http://en.wikipedia.org/wiki/Powershell">PowerShell</a> is
a shell scripting language for Windows. I’m a command line / keyboard junkie, and
I’m hoping PowerShell can further automate some of my day to day tasks inside Windows.</i></li><li><a href="http://www.amazon.com/dp/0321125215/">Domain-Driven Design: Tackling Complexity
in the Heart of Software</a><i>- From what I’ve read so far, this book is great.
I’m also reading this for the <a href="http://groups.google.com/group/edmonton-computer-book-club">Edmonton
Computer Book Club</a>.</i></li><li><a temp_href="http://www.amazon.com/dp/0977213315/ " href="http://www.amazon.com/dp/0977213315/%20">Software
Creativity 2.0</a><i>- I’m a Robert Glass Fan boy (I'll read anything he writes).
I've had this book on my must read list for a while now.</i></li><li><a href="http://www.amazon.com/dp/0735623066/">Inside Windows Communication Foundation</a><i> -
I make use of <a href="http://en.wikipedia.org/wiki/Windows_Communication_Foundation">WCF</a> every
day, and would like to learn more about the unknown nooks and crannies that lie within.</i></li><li><a href="http://www.amazon.com/dp/0596516177/">The Ruby Programming Language</a><i>-
An amazing book (it even has illustrations). The Ruby language is fascinating, terse,
and elegant, I’m curious to see how I can make use of Ruby in .NET since <a href="http://www.ironruby.net/">IronRuby</a> has
been released. This book also happens to be fun to read.<br /></i></li><li><a href="http://www.amazon.com/dp/B0019OUX6M/">A Random Walk Down Wall Street</a><i>-
I'm trying to brush up on how to make better investments. The author starts off by
telling you that most people working in the trading realm are crooks...  :)</i></li></ul>
Books and reading are essential for personal and professional development. The more
you read, the more you understand and the more resources you have to fall back on.<br /><b><br />
What books are you reading this summer? Do you have any recommendations?<br /></b><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=5b5f291f-0ef2-4b1f-b219-093e41b8a74d" /></div>
    </content>
  </entry>
  <entry>
    <title>Joining The Dual Monitor Club: Getting a New Computer: The Ultimate Developer Rig</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/06/23/JoiningTheDualMonitorClubGettingANewComputerTheUltimateDeveloperRig.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,da7b4fe1-5fbb-48ec-aef2-f756660e5cb6.aspx</id>
    <published>2008-06-23T10:17:08.322-07:00</published>
    <updated>2008-06-25T07:33:12.8732282-07:00</updated>
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <category term="Personal" label="Personal" scheme="http://adam.kahtava.com/journal/CategoryView,category,Personal.aspx" />
    <category term="Software" label="Software" scheme="http://adam.kahtava.com/journal/CategoryView,category,Software.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <div style="border: 1px solid rgb(200, 200, 200); margin: 5px; padding: 5px; float: right; width: 400px;">
          <img src="http://adam.kahtava.com/journal/images/blog/Adams-Desktop-Dual-Monitors.jpg" />
          <br />
          <i>In this picture: My <a href="http://en.wikipedia.org/wiki/Charles_Babbage">Charles
Babbage</a> mug, books: Domain Driven Design, the Ruby Programming Language, the Definitive
Guide to JavaScript, my <a href="http://www.evoluent.com/vm3.html">Evoluent VerticalMouse</a>,
and lots of Red Rain empties.</i>
          <br />
        </div>
One of my biggest pet peeves is trying to efficiently complete development work on
a slow machine. In my mind, <b>trying to work quickly on a slow computer is like asking
a marathon runner to wear <a href="http://en.wikipedia.org/wiki/Snowshoe">snowshoes</a> then
demanding they WIN the marathon.</b> What ensues, is painful for the runner, painful
for all who watch, and reaching the end goal feels impossible - bottom line good equipment
matters. However, many client's overlook the relationship between <i>getting stuff
done</i> and a slow machine, or they don't care, or they can't do anything about it.<i><br /><br />
Maybe they find it thrilling (in some sick way) to watch your soul fizzle away as
you spend 300 minutes a day compiling your application (or running your tests). :)</i><br /><br />
In great organizations slow machines aren't an issue. According to the <a href="http://www.codinghorror.com/blog/archives/000666.html">The
Programmer's Bill of Rights</a>: <i>"Every programmer shall have a fast PC"</i>, and
from the <a href="http://www.joelonsoftware.com/articles/fog0000000043.html">Joel
Test</a>: <i>"[Organizations should] use the best tools money can buy?"</i><b>But
reality is often a different beast, and in my experience you have to make the changes
you want (or <i>"be the change you want to see..." - <a href="http://en.wikipedia.org/wiki/Mahatma_Gandhi">Gandhi</a></i>). </b><br /><br /><i>I'm sure in Silicon Valley, good computers would be mandatory for most organization,
but I live in Canada - we suffer through black flies, mosquitoes, 8 months of winter,
and organizations with poor resources. :) Did you know that Canada's population is
roughly equivalent to the population of the state of California alone!?</i><br /><br />
Anyhow, I started working from home full-time this year - up to this point most of
my work has been done onsite using whatever machine the client provided (some with
outdated hardware). <b>My home desktop was a six year old PC that would make Frankenstein
look sexy - it was a collection of old and new parts</b>. Since, I do most of my work
in <a href="http://en.wikipedia.org/wiki/Virtual_machine">Virtual Machines</a> (I
typically have three VMs running) performance is absolutely critical. After spending
a month working on my dinosaur of a machine, it was clear I needed a new computer.<i><br /><br />
Leave me a comment requesting the details, and I'll happily bore you with the technical
specs of my old machine including a story of where I acquired each component. :)</i><br /><br />
I based my specs on <a href="http://www.codinghorror.com/blog/">Jeff Atwood's</a> and <a href="http://www.hanselman.com/blog/">Scott
Hanselman's</a> specs for the <a href="http://www.hanselman.com/blog/TheCodingHorrorUltimateDeveloperRigThrowdownPart2.aspx">Ultimate
Developer Rig</a>. The machine turned out to be economical, the prices have come down
significantly since the initial post was published, and to top it all off, I was able
to chop shop my old machine and sell every single part through eBay and Kijiji - for
a surprisingly decent price too (who would have thought a 6 year old Sound blaster
Audigy would sell for $50?).<br /><br /><b>Contrasting my setups:</b><br /><blockquote><table><tbody><tr><td><br /></td><td><b>Then</b></td><td><b>Now</b></td></tr><tr><td>
Processors</td><td>
Two 32bit AMD MP 1.2GHz  </td><td>
Quad Core 64bit 2.4GHz</td></tr><tr><td>
RAM</td><td>
3.5 GB</td><td>
8 GB</td></tr><tr><td>
Monitor(s)</td><td>
A single 17"</td><td>
Two <a href="http://www.amazon.com/dp/B000NBBWNU/">22" Samsung SyncMaster 226BWs</a></td></tr><tr><td>
Personal Pain Points  </td><td>
Excruciatingly painful</td><td>
Occasionally painful (only Vista induced)</td></tr></tbody></table></blockquote> Working on my new machine is enjoyable. I find myself more productive
without being distracted by the frustration of a slow machine, and having dual monitors
also contributes to my productivity (<a href="http://www.codinghorror.com/blog/archives/001076.html">Does
More Than One Monitor Improve Productivity?</a>). My favourite parts of the new setup
are the monitors, the <a href="http://www.ergotron.com/Products/DeskMounts/tabid/71/ctl/Product/mid/396/PRDID/134/language/en-CA/default.aspx">Ergotron
stand</a>, the speed, and the <a href="http://www.antec.com/us/productDetails.php?ProdID=81820">Case</a>.
You really get what you pay for with LCD monitors, the SyncMasters are easy on the
eyes when compared to my old economic Acer, and the case is dead silent.<br /><br /><b>In the future, if I'm provided with a substandard PC, you can expect to see me
hauling my new machine into the office. :)</b><br /><br />
Take a look at my old desktop setup in my older post: <a href="http://adam.kahtava.com/journal/2008/03/08/SomethingAboutTheCobblersChildrenHavingNoShoes.aspx">Something
About the Cobbler's Children Having No Shoes</a><br /><br />
Have you ever had to use an outdated machine as a developer? How does working on a
slow machine effect your work? What are your thoughts on taking matters into your
own hand (like purchasing your own computer to replace the slow one at work)? Have
you ever installed additional resources in the computer you use at work?<br /><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=da7b4fe1-5fbb-48ec-aef2-f756660e5cb6" /></div>
    </content>
  </entry>
  <entry>
    <title>Strange Interview Questions === No Job</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/06/18/StrangeInterviewQuestionsNoJob.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,56e72144-e7aa-48c9-b65c-e4531f61980b.aspx</id>
    <published>2008-06-18T15:11:46.879-07:00</published>
    <updated>2008-06-20T15:12:26.3299382-07:00</updated>
    <category term="Interview" label="Interview" scheme="http://adam.kahtava.com/journal/CategoryView,category,Interview.aspx" />
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://farm3.static.flickr.com/2133/2191404675_df9fc55ba5_m.jpg">
          <img src="http://farm3.static.flickr.com/2133/2191404675_df9fc55ba5_m.jpg" style="border: 0px none ; float: right;" />
        </a>I
was asked a series of questions during an interview that I'll never forget.<br /><br />
The interview was at a successful company in the process of growing from a start-up.
They offered a fantastic work environment, the developers had dual 22" LCD monitors,
state of the art machines, fooze ball, and to top it all off, they had a cafeteria
with two gourmet chefs  - I even had lunch there, it really was good food! It
could have been a great place to work, but... the interview left me running for the
door.<br /><br /><b>Some of the unnerving questions:</b><br /><blockquote><i>"Do you smoke? Does anyone in your family smoke?"</i><br /><br />
It turns out that they had a strict no smoking policy written into their contract.
Yup... You had to sign, that you and your family will remain smoke free (including
second-hand smoke) for the duration of your employment.  While I don't think
smoking is smart, and can see some benefits of having an explicit no smoking policy
- still... this question took me off guard.<br /><br /><b>Potential benefits of a strict non-smoking policy:</b><br /><blockquote>More productivity (no cigarette breaks for employees), an odour neutral
working environment, fewer employee sick days, cheaper corporate health insurance,
and it could filter out potential drug users.<br /></blockquote><b>Draw backs:</b><br /><blockquote>Rapport with the interview team was immediately shattered, it's probably
illegal to ask this question in the first place. It was an invasion of privacy (If
you're demanding this, what's next?). It felt very Orwellian (Would they have Big
Brother monitoring us too?), confusing (How can I control second-hand smoke?), and
just weird (Would I be fired if someone planted a pack of cigarettes in my desk?).<br /></blockquote><i>"Do you play video games?"</i><br /><br />
There was another sigh of relief when I answered <i>"No"</i>. I don't play video game
- well... aside from playing Tony Hawk on my classic Play Station every 6 months or
Pong on my cell phone. I have better things to do than play video games, even if it's
doing nothing - like watching the paint peel off my wall (clearing my mind). Besides,
isn't having a computer monitor (or monitors) larger than your CRT TV a requirement
for entering true Geekdom? Seriously though, I've watched family members and friends
drain their lives into video games, as a result I'm not crazy about video games (but
the Wii is fun). This question, like the previous was another negative hit for my
employment prospect.<br /><br /><b>Potential benefits of having non-gamers as developers:</b><br /><blockquote>Better rested and more productive employees (they wouldn't be staying
up all night playing World of Warcraft), fewer sick days, and more focused employees
(web surfing for game tips would not be an issue).<br /></blockquote><b>Draw backs:</b><br /><blockquote>Being a gaming doesn't say anything about your skills as a developer.
I started to get the impression that productivity really matters to this organization.
I felt confused (Why is this so important? Is there something they're not telling
me?), and it was another blow to privacy (Who really cares if your employees play
games?), and a blow to trust (Will I have to answer questions like this everyday?
I'd like to maintain some freedom, what if I decide take up gaming?).<br /></blockquote><i>"Do you have a problem with being at work at 8:30 sharp every morning?"</i><br /><br />
Now scenes from <i>A Clockwork Orange</i> are flashing through my mind - I'm being
strapped in a chair, eyes pried open, hands chained to a keyboard, I'm being interrogated
on the events of last evening, followed by a nicotine breathalyzer. OK... they didn't
embrace flextime. This organization was not a good cultural fit, too many weird questions,
interview was officially over in my mind.<br /><br /><b>Potential benefits of a regimented routine:</b><br /><blockquote>Uhmm... I guess, you know when your employees should be at work.<br /></blockquote><b>Draw backs:</b><br /><blockquote>Going to work could feel like tree planting / boot camp / the army, demanding
rigid hours could imply a lack of trust in your employees, demands like this would
certainly engender turnover, and companies with high turnover are bad places to work
(<a href="http://adam.kahtava.com/journal/2007/05/07/NotesOnTheHiddenCostOfTurnoverFromPeoplewareProductivityProjectsAndTeams.aspx">there's
a cost for turnover</a>).<br /></blockquote></blockquote>Some smaller companies might like to know their candidate
at this level, and if that's the case then take them out for a couple drinks or dinner
- try to learn these questions, don't outright ask them. Questions like these might
hurt the reputation of your organization, after this interview I was resisting the
urge to run for the door, and since then they've asked me to recommend potential candidates.<br /><br />
What kind of interesting interview questions have you been asked in the past?<br /><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=56e72144-e7aa-48c9-b65c-e4531f61980b" /></div>
    </content>
  </entry>
  <entry>
    <title>Living The High-tech Illusion: Software Development is Not Rocket Surgery </title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/06/15/LivingTheHightechIllusionSoftwareDevelopmentIsNotRocketSurgery.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,f8afb754-90dc-4231-8ee7-94be1b9c19c1.aspx</id>
    <published>2008-06-15T12:50:02.199-07:00</published>
    <updated>2008-06-20T10:55:38.3035502-07:00</updated>
    <category term="BarCamp" label="BarCamp" scheme="http://adam.kahtava.com/journal/CategoryView,category,BarCamp.aspx" />
    <category term="Calgary" label="Calgary" scheme="http://adam.kahtava.com/journal/CategoryView,category,Calgary.aspx" />
    <category term="Community" label="Community" scheme="http://adam.kahtava.com/journal/CategoryView,category,Community.aspx" />
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <category term="Programming Languages" label="Programming Languages" scheme="http://adam.kahtava.com/journal/CategoryView,category,Programming%2BLanguages.aspx" />
    <category term="Software" label="Software" scheme="http://adam.kahtava.com/journal/CategoryView,category,Software.aspx" />
    <category term="Team Work" label="Team Work" scheme="http://adam.kahtava.com/journal/CategoryView,category,Team%2BWork.aspx" />
    <category term="Videos" label="Videos" scheme="http://adam.kahtava.com/journal/CategoryView,category,Videos.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://farm4.static.flickr.com/3032/2560405008_f4afc06eee_m.jpg">
          <img src="http://farm4.static.flickr.com/3032/2560405008_f4afc06eee_m.jpg" style="border: 0px none ; float: right;" />
        </a>
        <a href="http://barcamp.org/BarCampCalgary">#CalgaryBarCamp</a> was
swell. It was refreshing to meet such a diverse group of like minded people that all
essentially do the same thing (create software), but do it in different ways using
different tools, platforms, and languages. The ad-hoc discussions both in the bar
and between sessions were my highlight. A reoccurring theme in our conversations was
that technology, tools, and platforms don't matter that much. <b>What really matters
is: people, communication, ideas, taking risks, and motivation.</b><br /><br />
The topic of our discussions reminded me of something David Heinemeier Hansson said
when talking about software development:<br /><blockquote><i>"You don't need to be a f***ing genius to make any of this stuff work,
it's not rocket surgery!"</i> - <a href="http://omnisio.com/startupschool08/david-heinemeier-hansson-at-startup-school-08">David
Heinemeier Hansson at Startup School 08 </a><br /></blockquote>DeMarco and Lister also echoed this outlook back in the 80's, and publicized:
the High-Tech Illusion:<br /><blockquote><i>the High-Tech Illusion: [is] the widely held conviction among people
who deal with any aspect of new technology ... that they are in ... high-tech business.
[These people] are indulging in this illusion whenever they find themselves explaining
at a ... party, say, that that they are "in computers" ... The implication is that
they are part of the high-tech world. [These people] usually aren't. <b>The researchers
who made the fundamental breakthroughs in those areas are in the high-tech business.
The rest of us are appliers of their work.</b></i> - <a href="http://www.amazon.com/gp/product/0932633439?ie=UTF8&amp;tag=adamkahtavaap-20&amp;link_code=as3&amp;camp=211189&amp;creative=373489&amp;creativeASIN=0932633439">Peopleware
: Productive Projects and Teams</a><br /></blockquote>If we <u>were</u> in the High-Tech business, then we'd be the bottom
feeders (the parasites, the grunts), because our daily activities revolve around consuming
other peoples research and work (programming languages, platforms, frameworks and
the like). <b>We are consumers, we're not on the cutting edge nor are we in the high-tech
world.</b><br /><br />
Perhaps building software could be much like outfitting yourself for a day in the
snow. You head off to the local shopping mall, you acquire the functional items to
keep yourself warm, but brands and store choice don't really matter. Whether we're
buying winter boots or choosing a programming language, technology doesn't really
matter. There are an infinite number of ways to solve any problem, as well as an infinite
number of technical permutations to form a solution. If we can solve the problem within
the constraints of our problem domain then we've succeeded.<br /><br />
The High-Tech Illusion often permeates my world - I work as a Web Developer in the
Microsoft realm. I continually see the High-Tech Illusion manifests itself in these
situations: 
<br /><ul><li>
Colleagues talking in vague opaque high-level metaphors that patronizingly shield
you from the inter working of what they assume is beyond your comprehension</li><li>
Fixations on specific tools, hardware, platforms, and methodologies while the problem
that needs to be solved is diluted and any combination of these items could solve
the problem</li><li>
Colleagues that assume superiority and can't acknowledge that knowledge is acquired
through research and a continual efforts to improve</li></ul>
Pretentiousness in the software realm (in teams, organization, and so on) is usually
the byproduct of someone that's living the High-Tech Illusion.<br /><br />
I've been guilty of subscribing to the High-Tech Illusion. How does the High-Tech
Illusion permeate your world? How can we get back to reality?<br /><br /><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=f8afb754-90dc-4231-8ee7-94be1b9c19c1" /></div>
    </content>
  </entry>
  <entry>
    <title>How I Got Started In Software Development: Confessions of a Script Kiddie</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/06/13/HowIGotStartedInSoftwareDevelopmentConfessionsOfAScriptKiddie.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,291b1c53-14dd-46d6-8f6c-792250d4c998.aspx</id>
    <published>2008-06-13T16:45:53.489-07:00</published>
    <updated>2008-07-13T12:13:08.4310766-07:00</updated>
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <category term="Personal" label="Personal" scheme="http://adam.kahtava.com/journal/CategoryView,category,Personal.aspx" />
    <category term="Programming Languages" label="Programming Languages" scheme="http://adam.kahtava.com/journal/CategoryView,category,Programming%2BLanguages.aspx" />
    <category term="Software" label="Software" scheme="http://adam.kahtava.com/journal/CategoryView,category,Software.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <div style="BORDER-RIGHT: rgb(200,200,200) 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: rgb(200,200,200) 1px solid; PADDING-LEFT: 5px; FLOAT: right; PADDING-BOTTOM: 5px; MARGIN: 5px; BORDER-LEFT: rgb(200,200,200) 1px solid; WIDTH: 150px; PADDING-TOP: 5px; BORDER-BOTTOM: rgb(200,200,200) 1px solid; TEXT-ALIGN: center">
          <p>
            <img src="http://adam.kahtava.com/Journal/Images/Blog/Geek-Adam-Kahtava.jpg" />
            <br />
Ahh yes, the bowl cut. Simple to maintain, keeps the cold off the brain.
</p>
          <p>
Me around age 12, and not much has changed. :)
</p>
        </div>
Maggie Longshore (tweet: <a href="http://twitter.com/MaggiePlusPlus">MaggiePlusPlus</a>)
posted her <a href="http://maggieplusplus.com/2008/06/09/How+I+Got+Started+In+Programming.aspx">response</a> to
Michael Eaton's (tweet: <a href="http://twitter.com/mjeaton">mjeaton</a>) initial
post on: <a href="http://michaeleatonconsulting.com/blog/archive/2008/06/04/how-did-you-get-started-in-software-development.aspx">How
did you get started in software development?</a> I had fun reading the other contributions
so here mine...<br /><br /><b>How old were you when you started programming?</b><br /><br />
Somewhere around the age of 8 or 9.<br /><br /><b>How did you get started in programming? What was your first language?</b><br /><br />
My dad went to College for robotics when I was around 8 years old, so he was really
into programming (programming robots) and we worked through a book on the BASIC programming
language. After that I continued to mess around with BASIC and wrote scripts so I
could get at my favourite games. Later I was frequenting BBS's, and surfing the internet
through a text based browser. I eventually became a <a href="http://en.wikipedia.org/wiki/Script_kiddie">Script
kiddie</a> - in retrospect, being a Script kiddie was what really turned me on to
programming. My friends and I would write our own IRC war scripts take over local
channels, we'd play <a href="http://en.wikipedia.org/wiki/Muds">MUDs</a> late into
the nights, and try to figure out how Trumpet Winsock, networks, mIRC, and HTML worked
- those were the days of Netscape 1 (the version with the big glowing 'N'). Later
we tried writing our own version of <a href="http://en.wikipedia.org/wiki/Netbus">NetBus</a> with
the help of C / C++ programmers on IRC channels - the fragments of the C language
these programmers shared with us were magical, they really sparked an interest in
programming. In addition to all this my dad kept a constant supply of computer parts
funneling into our house, my brothers and I would build computers from the parts -
today my closest brother is a Linux guru, evidently all this sparked his interest
too. 
<br /><br />
I've digressed, short story, programming has always been a part of my life, BASIC
was my first language.<br /><br /><b>What was the first real program you wrote?</b><br /><br />
I followed a couple game tutorials in my BASIC books, but my first real program would
have been Pacman in Turing - in my final year of high school I enrolled in a
computer course, where the instructor let us choose our own adventure I chose to write
a game.<br /><br /><b>What languages have you used since you started programming?</b><br /><br />
BASIC, Turing, Pascal, Assembly, COBOL, C, C++, LISP, Java, JavaScript, PHP, VBScript,
most of the .NET Languages, and so on... 
<br /><br />
I've spent the most time in C, C++, C#, JavaScript, SQL, and the mark-up languages.
I primarily program for the web or at least for the network.<br /><br />
While using multiple languages are great, I really believe that we you should completely
understand the fundamentals of at least two languages (like say a static language
and a dynamic language), because:<br /><blockquote><i>"Once a programmer realizes that programming principles transcend the
syntax of any specific language, the doors swing open to knowledge that truly makes
a difference in quality and productivity." - Steve McConnell, Code Complete 2nd Edition.</i><br /></blockquote><b>What was your first professional programming gig?</b><br /><br />
If by professional you mean worked at least 20 hrs a week and was paid, then I would
have been 18. It was my first year of College, I needed a part-time job in order to
live (<a href="http://adam.kahtava.com/journal/2008/05/10/EducationIsAGreatInvestmentInHonourOfTheStudentLoan.aspx">In
Honour of the Student Loan</a>), I worked on an assembly line. I would occasionally
help the office workers troubleshoot their IT issues and soon found myself working
as their network admin / computer gopher. I went on to develop their cataloging system
and a website. At the time I was going to school for Electronic Engineering, but decided
to switch to a Computer specific program. Pervious to this, I had freelanced
a couple websites for local businesses.<br /><br /><b>If you knew then what you know now, would you have started programming?</b><br /><br />
Absolutely! The industry continues to instill a sense of wonder in me. I can't imagine
doing anything else.<br /><br /><b>If there is one thing you learned along the way that you would tell new developers,
what would it be?</b><br /><ul><li>
Read! You'd be surprised how little progress has been made in the software industry
over the past 30 years. By reading we can learn from the mistakes others have made. 
</li><li>
Don't be intimidated by code or frameworks handed down by large organizations, their
code isn't any different than yours. 
</li><li>
Hard work always pays off, or as Thomas Edison said: <i>"Success is 10 percent inspiration
and 90 percent perspiration."</i></li></ul><b>What's the most fun you've ever had ... programming?</b><br /><br />
Collaborative programming is always fun whether it be paired programming or working
together on a project. It's hard to pinpoint the most fun I've <i>"ever"</i> had,
because it's all fun. :)<br /><br /><b>Now it's your turn to answer: How did you get started in software development?</b><br /><br /><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=291b1c53-14dd-46d6-8f6c-792250d4c998" /></div>
    </content>
  </entry>
  <entry>
    <title>Book Reviewed: JavaScript: The Good Parts by Douglas Crockford</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/06/07/BookReviewedJavaScriptTheGoodPartsByDouglasCrockford.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,6b653e5a-27a0-4fc6-bd15-85cd9c414372.aspx</id>
    <published>2008-06-07T16:32:33.798-07:00</published>
    <updated>2008-06-09T06:20:55.4215007-07:00</updated>
    <category term="AJAX" label="AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,AJAX.aspx" />
    <category term="Book" label="Book" scheme="http://adam.kahtava.com/journal/CategoryView,category,Book.aspx" />
    <category term="CSS" label="CSS" scheme="http://adam.kahtava.com/journal/CategoryView,category,CSS.aspx" />
    <category term="DOM" label="DOM" scheme="http://adam.kahtava.com/journal/CategoryView,category,DOM.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://adam.kahtava.com/journal/CategoryView,category,JavaScript.aspx" />
    <category term="Programming Languages" label="Programming Languages" scheme="http://adam.kahtava.com/journal/CategoryView,category,Programming%2BLanguages.aspx" />
    <category term="Review" label="Review" scheme="http://adam.kahtava.com/journal/CategoryView,category,Review.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://www.amazon.com/gp/product/0596517742/?ie=UTF8&amp;tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596517742">
          <img src="http://ecx.images-amazon.com/images/I/51Mb1xCr7CL._SL500_AA240_.jpg" style="border-width: 0px; float: right;" />
        </a>Weighing
in at 140+ pages of content, <a href="http://www.amazon.com/gp/product/0596517742/?ie=UTF8&amp;tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596517742">JavaScript:
The Good Parts [Douglas Crockford]</a> cuts through the obscurities, pleasantries,
and filler found in most technical books. Instead, this book dives straight into the
heart of the JavaScript language. It presents the clearest comprehensive explanation
of what makes JavaScript a great programming language that I've encountered to date.
It nails the important concepts, like JavaScript's: object oriented nature, its classless
(pseudoclassical) nature, and functional nature. While covering the fundamentals like
JavaScript's: functions, lexical scoping, lambdas, prototypal inheritance, and functional
inheritance.<br /><br />
This book's size makes it approachable for all audiences, its style is terse and concise.
This book has the potential to do for JavaScript, what Richie's inspirational classic
the <a href="http://www.amazon.com/gp/product/0131103628/?ie=UTF8&amp;tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0131103628">C
Programming Language</a> did for the C language.<br /><br />
JavaScript is the programming language of the web (AJAX), and this book will guide
you through the good parts of this often misunderstood language - while this book
is an excellent reference, it is not intended to replace <a href="http://adam.kahtava.com/journal/2008/03/26/BookReviewedJavaScriptTheDefinitiveGuideByDavidFlanagan.aspx">JavaScript:
The Definitive Guide</a>, you'll do best to have both these books on hand.<br /><br />
If you enjoyed (or are considering) this book then you may want to learn more of what
Douglas Crockford has to say, check out his great JavaScript video series on the <a href="http://developer.yahoo.com/yui/theater/">YUI
Theater</a>. 
<br /><br />
I highly recommend this book. View my review on <a href="http://www.amazon.com/gp/cdp/member-reviews/A2JM0EQJELFL69/ref=cm_pdp_reviews_see_all?ie=UTF8&amp;sort_by=MostRecentReview">Amazon</a>.<br /><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=6b653e5a-27a0-4fc6-bd15-85cd9c414372" /></div>
    </content>
  </entry>
  <entry>
    <title>Writing a Control for the AJAX Control Toolkit: Something Stinks</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/06/07/WritingAControlForTheAJAXControlToolkitSomethingStinks.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,323c98c8-c4dd-4dd7-8cc3-b65178f32db2.aspx</id>
    <published>2008-06-07T12:19:42.099-07:00</published>
    <updated>2008-06-09T15:27:50.8177448-07:00</updated>
    <category term=".NET" label=".NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,.NET.aspx" />
    <category term="AJAX" label="AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,AJAX.aspx" />
    <category term="ASP.NET" label="ASP.NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET.aspx" />
    <category term="ASP.NET AJAX" label="ASP.NET AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET%2BAJAX.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://adam.kahtava.com/journal/CategoryView,category,JavaScript.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">One of my resolutions this year was to contribute
to the <a href="http://www.asp.net/ajax/ajaxcontroltoolkit/samples/">AJAX Control
Toolkit</a> for the <a href="http://asp.net/ajax/">ASP.NET AJAX Framework</a>. I began
my AJAX Control Toolkit development quest by digging into the online resources, reading <a href="http://adam.kahtava.com/journal/2008/04/20/BookReviewedASPNETAJAXInActionByAlessandroGalloDavidBarkolRamaVavilala.aspx">ASP.NET
AJAX in Action</a>, and decomposing the AJAX Control Toolkit. I noted the huge <a href="http://adam.kahtava.com/journal/2008/04/09/TheASPNETAJAXLearningCurve.aspx">learning
curve</a> required to developing a control, and continued to dig deeper. Once mired
in ASP.NET AJAX a bad smell kept wafting by. Since then I've been <a href="http://adam.kahtava.com/journal/2008/06/03/MoreOnThePerilsOfTheASPNETAJAXFramework.aspx">trying</a> to
distinguish this smell.<br /><br /><b>What's really wrong with ASP.NET AJAX? What's that bad smell?</b><br /><ul><li>
It doesn't plan for performance from day one</li><li>
It treats AJAX as a classic computer science problem</li><li>
It tries to turn JavaScript into a classical language which works against JavaScript's
dynamic, prototypical nature<br /></li></ul><b>A Case Study: Why Plaxo.com Almost Failed</b><br /><blockquote>In the video: <a href="http://video.yahoo.com/watch/1041101">High-performance
JavaScript: Why Everything You've Been Taught is Wrong</a> (<a href="http://developer.yahoo.com/yui/theater/">YUI
Theater</a>) <a href="http://josephsmarr.com/">Joseph Smarr</a> discusses the challenges
and lessons learned while developing <a href="http://www.plaxo.com/">Plaxo.com</a>.
While developing this AJAX centric application, the Plaxo team decided to include
everything they could think of (including the kitchen sink) into their application.
They created a framework to treat JavaScript as a classical language, they gave priority
to features over performance, and... <b>the project ALMOST FAILED</b>. They were able
to salvage their application by diverting their development efforts, making performance
one of their top priorities, by unlearning everything they'd been taught about classical
applications (instead embracing JavaScript), jettisoning unneeded framework bloat,
and more.<br /><br />
Some of the points made in this video were:<br /><ul><li>
Plan for performance from day one</li><li>
AJAX is not a classic problem</li><li>
JavaScript is not a classical programming language</li><li>
User experience and a responsive application can make or break an application</li><li>
Unneeded bloat in a framework, and an obtuse approach to using AJAX (treating AJAX
and JavaScript as a classical language or classic computer science problem) has the
potential to cripple your application</li></ul>
This Channel 9 video also mirrors these sentiments: <a href="http://channel9.msdn.com/posts/Charles/Douglas-Crockford-Alex-Russell-and-Joseph-Smarr-On-the-Past-Present-and-Future-of-JavaScript/">Douglas
Crockford, Alex Russell and Joseph Smarr: On the Past, Present and Future of JavaScript</a><br /></blockquote><b>How ASP.NET AJAX Failed: What can we learn from Plaxo?</b><br /><br />
The way the Plaxo team approached their application development is similar to how
the ASP.NET AJAX Framework has been designed. Like Plaxo's initial attempt ASP.NET
AJAX attempts to mold JavaScript into a classical language, and attempts to treat
JavaScript and AJAX as a classic computer science problem by heaping on more abstractions.
Like Plaxo's initial attempt ASP.NET AJAX also gives a low priority to performance.
Plaxo was able to change their direction and salvaged their application, but the ASP.NET
AJAX Framework is not in a position to make any sweeping changes - ASP.NET AJAX is
going down the wrong path and it's too late.<br /><br />
The ASP.NET AJAX Framework is probably another exercise in Framework Architecture
(<a href="http://en.wikipedia.org/wiki/Demoware">Demoware</a>) and a failure in practice.
Its lack of use in the wild attests to these shortcomings - contrast the <a href="http://www.asp.net/ajax/showcase/">sites
using ASP.NET AJAX</a> with the <a href="http://docs.jquery.com/Sites_Using_jQuery">sites
using jQuery</a> (<a href="http://adam.kahtava.com/journal/2008/05/15/ActionsSpeakLouderThanWordsGoodbyeASPNETAJAX.aspx">Actions
Speak Louder Than Words</a>). Furthermore the places that ASP.NET AJAX does thrive
(the small internal ASP.NET business apps that need some bling-bling) will also be
the areas that <a href="http://en.wikipedia.org/wiki/Silverlight">Silverlight</a> shines
- Silverlight offers a better Microsoft centric programming model (less leaky Win
Form / Web Form abstractions) that most Microsoft developers will embrace. Silverlight
will probably divert the developers that currently embrace ASP.NET AJAX.<br /><br />
I don't recommend the ASP.NET AJAX Framework and won't be contributing to the AJAX
Control Toolkit. My time is better spent elsewhere.<br /><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=323c98c8-c4dd-4dd7-8cc3-b65178f32db2" /></div>
    </content>
  </entry>
  <entry>
    <title>More on the perils of The ASP.NET AJAX Framework</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/06/03/MoreOnThePerilsOfTheASPNETAJAXFramework.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,128d00d5-c819-417b-996f-268676243143.aspx</id>
    <published>2008-06-03T08:06:27.502-07:00</published>
    <updated>2008-06-08T07:59:47.6993399-07:00</updated>
    <category term=".NET" label=".NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,.NET.aspx" />
    <category term="AJAX" label="AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,AJAX.aspx" />
    <category term="ASP.NET" label="ASP.NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET.aspx" />
    <category term="ASP.NET AJAX" label="ASP.NET AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET%2BAJAX.aspx" />
    <category term="CSS" label="CSS" scheme="http://adam.kahtava.com/journal/CategoryView,category,CSS.aspx" />
    <category term="DOM" label="DOM" scheme="http://adam.kahtava.com/journal/CategoryView,category,DOM.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://adam.kahtava.com/journal/CategoryView,category,JavaScript.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">There's no need to whip a dead horse (I've
probably been griping about the ASP.NET AJAX Framework for too long), but... <a href="http://weblogs.asp.net/jgalloway/default.aspx">Jon
Galloway</a> and a group of other notable gurus (<a href="http://www.odetocode.com/">K.
Scott Allen</a>, <a href="http://www.lazycoder.com/">Scott Koon</a>, and <a href="http://weblogs.asp.net/kdente/">Kevin
Dente</a>) have started a podcast, their latest segment sparked my interest since
it covered ASP.NET AJAX and AJAX Libraries / Frameworks in general.<br /><br />
I share their sentiments so I thought I'd post a brief but choppy transcript:<br /><blockquote><i>[ASP.NET AJAX] ... does offer some some nice features, they did try
to take some of the common pieces of the CLR that </i><i>[.NET Developers are]</i><i> used
to working with and move that down into a JavaScript library. So you get classes like
a <a href="http://www.asp.net/AJAX/Documentation/Live/ClientReference/Sys.Net/WebRequestClass/default.aspx">WebRequest</a> class
that wraps the <a href="http://en.wikipedia.org/wiki/XMLHttpRequest">XMLHttpRequest</a> ...
and they have a <a href="http://www.asp.net/AJAX/Documentation/Live/ClientReference/Sys/StringBuilderClass/default.aspx">StringBuilder</a>,
and they added methods that we're more accustom with ... 
<br /><br />
that's wonderful, but I don't find myself needing those extensions all that often.<b> If
you want to do strictly client-side programming then something like jQuery offers
you a lot more capabilities to do things that you really want to do client-side like
sorting and CSS selectors.</b> ... That stuff is easy to do with an Update Panel and
ASP.NET, but Update Panels aren't always the best solution to use. ... 
<br /><br />
the goals with ASP.NET AJAX was to integrate into the ASP.NET server-side model ...
that's great for ASP.NET, but it needs more client-side features. ... It works if
your thinking from the ASP.NET control perspective, but <b>if you look at it outside
the ASP.NET model there are a lot easier ways to do it. </b>... 
<br /><br />
ASP.NET AJAX [development] seems to have come to a standstill I'm not seeing a lot
of development in that area and the rest of these [AJAX] Frameworks are doing monthly
releases. <b>Every month that goes by [the ASP.NET AJAX Framework] falls further and
further behind ... it needs to evolve.</b><br /></i></blockquote>Listen to this great podcast here: <a href="http://weblogs.asp.net/jgalloway/archive/2008/05/29/technology-round-table-podcast-2-ajax-frameworks.aspx">Technology
Round Table Podcast #2 - AJAX Frameworks</a><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=128d00d5-c819-417b-996f-268676243143" /></div>
    </content>
  </entry>
  <entry>
    <title>The Good Parts of The ASP.NET Framework and Visual Studio</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/05/31/TheGoodPartsOfTheASPNETFrameworkAndVisualStudio.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,e724903b-65d4-4c94-a1bd-e704c9d80093.aspx</id>
    <published>2008-05-31T14:56:37.992-07:00</published>
    <updated>2008-06-07T16:42:58.1854055-07:00</updated>
    <category term="ASP.NET" label="ASP.NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://adam.kahtava.com/journal/CategoryView,category,JavaScript.aspx" />
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <category term="Themes and Skins" label="Themes and Skins" scheme="http://adam.kahtava.com/journal/CategoryView,category,Themes%2Band%2BSkins.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Douglas Crockford opens his latest book
with these words:<br /><blockquote><i><b>Most programming languages contain good parts and bad parts</b>.
... [the language designers or architects] are usually powerless to do anything except
heap more features on top of the existing pile of imperfections. And the new features
do not always interact harmoniously, thus producing more bad parts. - <a href="http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/">JavaScript:
The Good Parts by Douglas Crockford</a><br /></i></blockquote>His words can apply to all programming languages and frameworks.
Especially the ASP.NET Framework and Visual Studio.<br /><br />
Bad parts in the ASP.NET Framework and Visual Studio:<br /><ul><li>
ASP.NET Themes and Skins</li><li>
The ASP.NET AJAX Framework</li><li>
ASP.NET / Visual Studio Inline Style Properties</li><li>
Visual Studio Design View</li><li>
ASP.NET and Visual Studio's over dependency on XML configuration files<br /></li></ul>
It would be great if someone wrote a book outlining the good parts of ASP.NET and
Visual Studio. :)<br /><br />
What bad parts do you steer clear of?<p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=e724903b-65d4-4c94-a1bd-e704c9d80093" /></div>
    </content>
  </entry>
  <entry>
    <title>Getting a Job at Google: A Web Developer Fizzbuzz</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/05/24/GettingAJobAtGoogleAWebDeveloperFizzbuzz.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,8cfd415e-f895-4115-8713-5a879e1abb15.aspx</id>
    <published>2008-05-24T14:03:23.537-07:00</published>
    <updated>2008-05-28T15:48:56.2696652-07:00</updated>
    <category term=".NET" label=".NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,.NET.aspx" />
    <category term="AJAX" label="AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,AJAX.aspx" />
    <category term="ASP.NET" label="ASP.NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET.aspx" />
    <category term="CSS" label="CSS" scheme="http://adam.kahtava.com/journal/CategoryView,category,CSS.aspx" />
    <category term="Firefox" label="Firefox" scheme="http://adam.kahtava.com/journal/CategoryView,category,Firefox.aspx" />
    <category term="IE" label="IE" scheme="http://adam.kahtava.com/journal/CategoryView,category,IE.aspx" />
    <category term="Interview" label="Interview" scheme="http://adam.kahtava.com/journal/CategoryView,category,Interview.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://adam.kahtava.com/journal/CategoryView,category,JavaScript.aspx" />
    <category term="Programming Languages" label="Programming Languages" scheme="http://adam.kahtava.com/journal/CategoryView,category,Programming%2BLanguages.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Back when the web turned 2.0, AJAX was all
the rage, and gas was cheap, a Google recruiter contacted me. We worked through a
couple screening interviews - I explained how I was a .NET / ASP.NET / C# developer
with some experience with Java and PHP, I described how C# was somewhat similar to
Java. Things went great, I moved on to the next step of the process - writing code
(a JavaScript widget for Gmail) with a 2 day (weekend) hard deadline. At the time
I was wearing JavaScript diapers, but tried the exercise anyways - I'm still convinced
the recruiter confused my Java / C# experience with JavaScript. Anyhow... 
<br /><br /><b>The Google Web Developer Exercise:<br /></b><blockquote style="border: 1px solid rgb(207, 207, 207); padding-left: 7px;"><h3>Web Developer Exercise
</h3>
Attached are three states of a new contacts widget. This widget will be used across
Google and may be anywhere on the page. Designers will also use this in mocks for
usability tests. Create the HTML, CSS, and JavaScript for the widget as described
in the image. Your solution must work in Firefox v1.5+ and IE v6+. Bonus points for
a solution that degrades nicely on older browsers.<br /><br /><img src="http://adam.kahtava.com/journal/images/blog/GoogleExercise02.png" /><br /><img src="http://adam.kahtava.com/journal/images/blog/GoogleExercise03.png" /><br /><img src="http://adam.kahtava.com/journal/images/blog/GoogleExercise01.png" /><br /></blockquote><b>After my first attempt, I concluded that: </b><br /><ol><li>
My JavaScript knowledge was embarrassing 
</li><li><a href="http://en.wikipedia.org/wiki/Dynamic_language">Dynamic programming languages</a> like
JavaScript using <a href="http://en.wikipedia.org/wiki/Prototype-based_programming">prototypical
inheritance</a> were awesome - as a monocultured .NET developer I had sorely been
missing out</li><li>
Framework Web Developers (ASP.NET, Ruby on Rails, and so on) aren't really Web Developers
- we depend on a framework (an API) as a crutch, where the law of <a href="http://en.wikipedia.org/wiki/Leaky_abstraction">Leaky
Abstractions</a> is very real, and often when it rears it's head we use our <a href="http://en.wikipedia.org/wiki/Golden_hammer">golden
hammer</a> (our multipurpose language of choice), but there are better tools at hand<br /></li><li>
Web Developers claiming <i>n</i> years of experience need to at least know JavaScript,
CSS, HTML / XHTML, a server-side language, and some XML / XSL - NOT just a single
multipurpose language or framework<br /></li><li>
Innovation can only happen when you become <i>one</i> with the technologies surrounding
your realm - for example: <a href="http://adaptivepath.com/ideas/essays/archives/000385.php">Jesse
James Garrett</a> probably would not have publicized AJAX had he been an exclusive
ASP.NET developer, <a href="http://en.wikipedia.org/wiki/David_Heinemeier_Hansson">David
Heinemeier Hansson</a> would have never created Rails had he been an exclusive ASP.NET
developer, and <a href="http://en.wikipedia.org/wiki/Scott_Guthrie">Scott Guthrie</a> would
never have developed ASP.NET had he been an exclusive ASP.NET developer. Diversity
is essential for innovation<br /></li></ol>
In retrospect this exercise is brilliant, it's a more complex derivation of a <a href="http://www.codinghorror.com/blog/archives/000781.html">Fizzbuzz
exercise</a>, which effectively weeds out the knowledgeable candidates from the n00bs.
JavaScript is notorious for being one of <a href="http://www.crockford.com/javascript/javascript.html">the
world's most misunderstood language</a>, many developer (and the ASP.NET Framework)
still use JavaScript techniques from the old days of Netscape. For example: <i>&lt;a
onclick="return false;" ...</i>, or &lt;a <i>href="Javascript: do something;" ...</i> are
common <a href="http://en.wikipedia.org/wiki/DOM_Events#DOM_Level_0">DOM Level 0</a> inline
techniques that should be avoided. These techniques have been replaced, but finding
developer that use these JavaScript techniques can be hard.<br /><br /><b>By having a developer complete this exercise you effectively determine that the
they understands these concepts:</b><br /><ul><li>
Cross browser compatibilities and work arounds for both JavaScript and CSS - with
a preference given to <a href="http://www.quirksmode.org/js/support.html">feature
detection (object detection)</a> vs browser detection, an understanding of the different
event handling models between browsers<br /></li><li>
An understanding of the separation of concerns - JavaScript, markup, and CSS should
be separate files, or at least separated within the document<br /></li><li>
Event registration and listening - <a href="http://en.wikipedia.org/wiki/DOM_Events">DOM
events</a>, the different browser event models, no inline level 0 event declarations,
no pseudo JavaScript protocol inline declarations within markup<br /></li><li>
An understanding of <a href="http://en.wikipedia.org/wiki/Functional_languages">functional
languages</a> - <a href="http://en.wikipedia.org/wiki/Closure_%28computer_science%29">closures</a>, <a href="http://adam.kahtava.com/journal/2008/03/17/NamespacingYourJavaScript.aspx">namespaces</a>, <a href="http://en.wikipedia.org/wiki/Lambda_calculus">lambdas</a>,
recursion where necessary<br /></li><li>
Node manipulation - creating, swapping, removing elements</li><li>
Knowledge of <a href="http://icant.co.uk/articles/seven-rules-of-unobtrusive-javascript/">non-obtrusive
JavaScript techniques</a></li><li>
Importance of modular / compartmentalization of CSS and JavaScript - defensive programming
techniques that minimize the risk of interfering with other scripts and elements within
the page, part of the non-obtrusive techniques, how to avoid global variables</li><li>
An understanding on how to debug JavaScript from both IE (<a href="http://www.jonathanboutelle.com/mt/archives/2006/01/howto_debug_jav.html">link</a>)
and Firefox (<a href="http://www.getfirebug.com/js.html">link</a>)</li><li><a href="http://javascript.crockford.com/code.html">JavaScript code conventions</a> -
naming conventions, statement conventions</li><li>
CSS naming conventions</li><li>
General DHTML / AJAX techniques - showing and hiding elements<br /></li><li>
A gauge on their attention to details and UI design intuition - what their gut tells
them to do when things aren't spelled out</li></ul><b>My latest crack at the Google Web Developer Exercise:</b><br /><iframe src="http://adam.kahtava.com/etcetera/GoogleExercise/GoogleExercise.html" style="border-width: 0px; width: 320px; height: 300px; margin-left: 15px; float: left;"></iframe><br /><i>You'll have to visit my site (view this blog post outside a RSS reader) to view
the code in action.<br /><br /></i>The code: <a href="http://adam.kahtava.com/etcetera/GoogleExercise/GoogleExercise.js">GoogleExercise.js</a>, <a href="http://adam.kahtava.com/etcetera/GoogleExercise/GoogleExercise.html">GoogleExercise.html</a>, <a href="http://adam.kahtava.com/etcetera/GoogleExercise/GoogleExercise.css">GoogleExercise.css</a><br /><br /><i>Today I'm wearing JavaScript training wheels - </i><i>feel free to comment on the
code, I'm always looking for improvements and suggestions. I did take a couple shortcuts
on the CSS / UI side of things as I was focusing more on the functionality.</i><br /><br /><i>Using one of the <a href="http://en.wikipedia.org/wiki/Ajax_Libraries">AJAX Libraries</a> (like <a href="http://jquery.com/">jQuery</a>)
we could certainly do this exercise in significantly fewer lines of code.<br /><br /></i><div style="clear: both;">Today I still think about <a href="http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html">Getting
that job at Google</a>, Yahoo!, Amazon, or Microsoft. <a href="http://adam.kahtava.com/journal/2008/01/13/HowWellDoYouKnowJavaScript.aspx">How
well do you know JavaScript?</a><br /><br /></div><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=8cfd415e-f895-4115-8713-5a879e1abb15" /></div>
    </content>
  </entry>
  <entry>
    <title>Actions Speak Louder Than Words:  Goodbye ASP.NET AJAX</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/05/15/ActionsSpeakLouderThanWordsGoodbyeASPNETAJAX.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,200ba4e0-3818-4709-9277-91f85a3ee625.aspx</id>
    <published>2008-05-15T15:35:19.847-07:00</published>
    <updated>2008-06-07T14:57:42.2727026-07:00</updated>
    <category term=".NET" label=".NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,.NET.aspx" />
    <category term="AJAX" label="AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,AJAX.aspx" />
    <category term="ASP.NET" label="ASP.NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET.aspx" />
    <category term="ASP.NET AJAX" label="ASP.NET AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET%2BAJAX.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://adam.kahtava.com/journal/CategoryView,category,JavaScript.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">An anticlimactic conclusion about the ASP.NET
AJAX Framework - this framework's niche seems to be the internal (intranet) business
application realm that depend on ASP.NET Web-Forms. These applications have a handful
of users, a couple developers, no performance or bandwidth requirements, little ambition
for future growth, and the developers typically embrace dragging &amp; dropping controls
in Visual Studio. In this case the ASP.NET AJAX Framework provides some eye candy,
and patches the broken Web-Form metaphor by cramming AJAX into the ASP.NET model,
but then comes along the ASP.NET MVC Framework, Silverlight, WPF and ... ??? Goodbye
ASP.NET AJAX!<br /><br /><b>Interesting observations:<br /></b><blockquote><i>How many applications explicitly state that they use the <b>ASP.NET
AJAX</b> Framework?</i><br /><ul><li><b>25</b>, this includes sites like <a href="http://www.dotnetnuke.com/">DotNetNuke</a> (with
a reputation of being slow), view the list <a href="http://www.asp.net/ajax/showcase/">here</a>.</li></ul><i>How many of these applications are relatively high-traffic?</i><br /><ul><li><b>None. ZERO!</b></li></ul><i>How many applications explicitly </i><i>state </i><i>that they use the</i><i></i><i><b>YUI</b> AJAX
Library?</i><br /><ul><li><b>89,</b> view the list <a href="http://209.73.186.27/yui/poweredby/">here</a> and <a href="http://tech.groups.yahoo.com/group/ydn-javascript/links/YUI_Implementations_001149002597/">here</a>.<b><br /></b></li></ul><i>How many of these applications are relatively high-traffic?</i><ul><li><b>Quite a few. </b>A couple notable sites: Flickr, Slashdot, Linkedin, Paypal, O'Reilly,
My Opera.</li></ul><i>How many applications explicitly </i><i>state </i><i>that they use the</i><i><b>jQuery</b> AJAX
Library?</i><br /><ul><li><b>516,</b> view the list <a href="http://docs.jquery.com/Sites_Using_jQuery">here</a>.<b><br /></b></li></ul><i>How many of these applications are relatively high-traffic?</i><ul><li><b>Many.</b> A couple notable sites: Twitter, Digg, Dell, Slashdot, BBC, Netflix,
Technorati, New York Post.</li></ul></blockquote>If no high-traffic application uses the ASP.NET AJAX Framework then why
would you? Actions (or lack of action) often speak louder than words, and it appears
that the ASP.NET AJAX Framework is not suitable for the real world.<br /><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=200ba4e0-3818-4709-9277-91f85a3ee625" /></div>
    </content>
  </entry>
  <entry>
    <title>Education is a Great Investment: In Honour of the Student Loan</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/05/10/EducationIsAGreatInvestmentInHonourOfTheStudentLoan.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,1d0fed50-9519-466f-ad61-c68c5f395088.aspx</id>
    <published>2008-05-10T11:41:27.178-07:00</published>
    <updated>2008-06-08T08:16:36.5366333-07:00</updated>
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <category term="Personal" label="Personal" scheme="http://adam.kahtava.com/journal/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">As a student I was a pathological penny
pincher, but as much as I've complained about student loans, I'm also grateful for
them. Sure, it would be great if Canada could adopt an approach like Finland and other
European countries where education is free, but that's not in our cards. 
<br /><br /><b>Why are student loans good?</b><br /><a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;geocode=&amp;q=echo+bay&amp;sll=51.04507,-114.06319&amp;sspn=0.605671,0.460052&amp;ie=UTF8&amp;ll=46.485156,-84.070129&amp;spn=0.663314,0.460052&amp;t=h&amp;z=11"><img src="http://adam.kahtava.com/Journal/images/blog/EducationIsGreat_Remote.jpg" style="border: 0px none ; float: right; padding-left: 5px;" /></a>I
grew up in a small village in Northern Ontario, in a huge family - in total there
are 11 of us. YES! I have 8 siblings and we all have the same parents. :) Most Canadians
are familiar with the rural community setting (maybe not the huge family scene). A
railway runs through town, the town has 2 gas stations, a single postal code is associated
to the entire area (including all the outlying hamlets, and farms), the local high
school is 30 minutes from home, the high school kids are bussed from a 100km radius
(and there's still only about 700 students in total). Most of your childhood is spent:
crawling across beaver dams, building tree forts, playing Lego, banging away at BASIC
on rainy days, swinging from ropes in barns, chasing sheep, skateboarding, and shooting
guns. Most of the residents in these towns live modest lives, and have chosen the
rural community because it's cheaper than living in the neighbouring city, or they
have just always lived there. The residents are employed in the dwindling lumber industry,
the agricultural industry, the local businesses, they are seasonal workers, or unemployed.<br /><br />
In short, living in these remote communities can be economically challenging, supporting
a massive family in these areas can be difficult, and receiving educational assistance
from your family is even more difficult. So... If it wasn't for government funded
student loans I probably wouldn't have gone to College/University, and if it wasn't
for an education I probably wouldn't have been able to develop the skills necessary
to be where I am today - yesterday I paid the last of my Student Loans. :)<br /><font size="4"><br />
Thank-you Government of Canada for the student loans!</font><br /><br />
For all the students out there, keep your chin up, keep your eyes on the goal, don't
let finances get you down, focus on your studies, and keep pushing forward. <b>Education
is a sound investment in your future - provided you're not going to school for underwater
basket weaving, or attending an atrociously expensive <a href="http://adam.kahtava.com/journal/2007/03/19/MyExperiencesAtRCCInstituteOfTechnologyPrivateVsPublicEducation.aspx">private
college</a>, and not going to school forever (everything in moderation, right?). As
the old adage goes: <i>"you've got to spend money to make money"</i>, and education
is a sound investment.</b><br /><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=1d0fed50-9519-466f-ad61-c68c5f395088" /></div>
    </content>
  </entry>
  <entry>
    <title>Griping About Users: What's Wrong With Forums?</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/05/10/GripingAboutUsersWhatsWrongWithForums.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,865a3c55-53e2-4824-9ad5-d6a4aba0ef4b.aspx</id>
    <published>2008-05-10T09:46:26.167-07:00</published>
    <updated>2008-06-18T14:55:58.0159415-07:00</updated>
    <category term="ASP.NET" label="ASP.NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET.aspx" />
    <category term="Community" label="Community" scheme="http://adam.kahtava.com/journal/CategoryView,category,Community.aspx" />
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://en.wikipedia.org/wiki/Internet_forum">Forums</a> or <a href="http://en.wikipedia.org/wiki/Newsgroup">Newsgroups</a> are
a great way to <a href="http://adam.kahtava.com/journal/2007/03/04/CommunityKeepsUsGroundedExpandYourCommunity.aspx">expand
your community</a>, contribute to the greater development community, hone your communication
skills, and stay grounded. However, forums can have a frustrating dark side. From
what I can tell, the dark side of forums stem from the wide diversity of users.<br /><br /><b>On Forums we have:</b><br /><ul><li>
the normal users<br /></li><li>
the <a href="http://en.wikipedia.org/wiki/Newbie">newbies</a></li><li>
the <a href="http://en.wikipedia.org/wiki/Troll_%28Internet%29">trolls</a></li><li>
the users suffering from <a href="http://adam.kahtava.com/journal/2007/10/07/ABadCaseOfInformationFatigueSyndromeIFSJustLivingTheHightechIllusion.aspx">information
fatigue syndrome</a></li><li>
in some cases full time employees</li></ul>
As a forum contributor, I like to think that I'm giving something to the community,
but some days I feel like I'm wasting my time and here's why.<br /><b><br />
Frustrating forum threads:</b><br /><blockquote style="margin-right: 0px;"><b>When contributors pass your words off as
their own:</b><br /><blockquote style="margin-right: 0px;">Amanda from Microsoft offers this bit of advice
on 08-28-2007:<br /><a href="http://forums.asp.net/p/1150985/1877003.aspx"><img src="http://adam.kahtava.com/journal/images/blog/forum_copied1.png" style="border: 0px none ;" /></a><br /><br />
Which seems vaguely similar to something I might have said back on 12-07-2006:<br /><a href="http://forums.asp.net/p/1052202/1489510.aspx"><img src="http://adam.kahtava.com/journal/images/blog/forum_copied2.png" style="border: 0px none ;" /></a><br /></blockquote><b>When users are belligerent:</b><a href="http://forums.asp.net/p/1247373/2300364.aspx"><br /></a><blockquote style="margin-right: 0px;"><a href="http://forums.asp.net/p/1247373/2300364.aspx"><img src="http://adam.kahtava.com/journal/images/blog/forum_flame.png" style="border: 0px none ;" /></a><br /><i>"Adam has so little time he can't even read your question ..."</i> - Brian<br /></blockquote><b>When users want a quick fix or want <u>you</u> to do their work:<a href="http://forums.asp.net/p/1225090/2196013.aspx"><br /></a></b><blockquote style="margin-right: 0px;"><a href="http://forums.asp.net/p/1225090/2196013.aspx"><img src="http://adam.kahtava.com/journal/images/blog/forum_quickfix1.png" style="border: 0px none ;" /></a><br /><br /><a href="http://forums.asp.net/p/1225090/2196013.aspx"><img src="http://adam.kahtava.com/journal/images/blog/forum_quickfix2.png" style="border: 0px none ;" /></a><br /><i>"please verify and do for me some work."</i> - dagamishiva<br /></blockquote></blockquote>It makes it all worth while when users are genuinely grateful
for your advice and suggestions. In the end, forums (and helping people in general)
is rewarding, and some forums that explicitly cover more advanced topics omit the
frustrating chatter and facilitate professional level discussions.<br /><br />
What are your experiences with forums?<br /><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=865a3c55-53e2-4824-9ad5-d6a4aba0ef4b" /></div>
    </content>
  </entry>
  <entry>
    <title>Necessary Skepticism: Skepticism is not Pessimism</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/05/04/NecessarySkepticismSkepticismIsNotPessimism.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,5fc57bdc-f172-4cd5-b934-b97430126aaa.aspx</id>
    <published>2008-05-04T08:44:34.549-07:00</published>
    <updated>2008-05-10T10:06:57.6731911-07:00</updated>
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <category term="Software" label="Software" scheme="http://adam.kahtava.com/journal/CategoryView,category,Software.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">In the software realm our opinions are often
polarized (perceived in extremes) with no middle ground - you're a pragmatist or an
idealist, you're a Windows or *nix person, <a href="http://en.wikipedia.org/wiki/You%27re_either_with_us,_or_against_us"><i>"you're
either with us or against us"</i></a>. This train of thought is referred to as <a href="http://en.wikipedia.org/wiki/Black_and_white_thinking#Black_and_white_thinking"><i>Black-and-White
Thinking</i></a>, or <i>All or Nothing Thinking</i>. This thought process continually
manifests itself in the software realm for good reason - we're under pressure to produce,
but have limited time, and can't exhaust all permutations or combinations of technological
possibilities. So we develop coping skills, and make quick decisions (even if they
are wrong). As IT professional we're constantly in <i>The Fight or Flight</i> mentality:<br /><blockquote><i>"All or Nothing thinking ... is part of the most primitive of human
responses: The Fight or Flight Response. When faced with a life-threatening situation,
we must make a snap decision and act on it. There is no time for 'maybe this', or
'maybe that'." -<a href="http://www.clinical-depression.co.uk/Understanding_Depression/all_nothing.htm">All
or Nothing Thinking</a></i><br /></blockquote><b>Some Polarized Views</b><br /><br />
Views or labels that seem to be commonly applied to people, organizations, and people:<br /><ul><li>
A Pessimist or an Optimist</li><li>
A Cynic or an Proponent</li><li>
A Skeptic or a Dreamer</li><li>
A Pragmatist or an Idealist</li><li>
A <a href="http://en.wikipedia.org/wiki/Tigger">Tigger</a> or an <a href="http://en.wikipedia.org/wiki/Eeyore">Eeyore</a><br /></li></ul>
These labels are generally mutually exclusive - you're usually labeled a Pessimist
or an Optimist, but not both. Then there's this general acceptance that Skeptics are
Pessimists and these are <a href="http://dictionary.reference.com/browse/curmudgeon">Curmudgeons</a>,
and Eeyores (but everything in moderation). Switching between views is healthy and
advisable (be a Skeptic and an Optimist), because inherently <i>"[a]ll programmers
are optimists"</i> (1) and too much Enthusiasm, and Optimism often results in Hype,
and <i>"Hype is the plague on the house of software"</i> (2).<br /><br /><b>Why not embrace all these views? Take on the role of a Skeptical Dreamer, then
an Optimistic Cynic, or a Pragmatic Idealist. Let's throw off these polarized thinking
models and fill in the gray areas. As Fred Brooks once said: "Skepticism is not Pessimism",
and critical thinking is also not Skepticism.</b><br /><br /><font size="1">(1) Fred Brooks, The Mythical Man-Month (2) Robert Glass, Facts and
Fallacies of Software Engineering</font><br /><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=5fc57bdc-f172-4cd5-b934-b97430126aaa" /></div>
    </content>
  </entry>
  <entry>
    <title>Free: Win a Copy of Beginning CSS: Cascading Style Sheets for Web Design</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/04/24/FreeWinACopyOfBeginningCSSCascadingStyleSheetsForWebDesign.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,0d25babc-9814-45bc-b73a-1951ac3d9b45.aspx</id>
    <published>2008-04-24T06:59:39.919-07:00</published>
    <updated>2008-07-03T04:07:43.3522013-07:00</updated>
    <category term="Book" label="Book" scheme="http://adam.kahtava.com/journal/CategoryView,category,Book.aspx" />
    <category term="Contest" label="Contest" scheme="http://adam.kahtava.com/journal/CategoryView,category,Contest.aspx" />
    <category term="CSS" label="CSS" scheme="http://adam.kahtava.com/journal/CategoryView,category,CSS.aspx" />
    <category term="DOM" label="DOM" scheme="http://adam.kahtava.com/journal/CategoryView,category,DOM.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://www.amazon.com/gp/product/0470096977?ie=UTF8&amp;tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0470096977">
          <img src="http://ecx.images-amazon.com/images/I/51e-K4w5wOL._SL500_BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg" style="border: 0px none ; float: right;" />
        </a>
        <a href="http://www.amazon.com/gp/product/0470096977?ie=UTF8&amp;tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0470096977">Beginning
CSS: Cascading Style Sheets for Web Design</a> by Richard York is a great book for
any web developer looking to thoroughly understand CSS. 
<br /><br />
This book was required pre-reading for my latest Technical Editing task - I'm editing
Mr. York's newest book. So in the spirit of spring, de-cluttering, and giving. I'd
like to give this book away. This book is like new with a couple minor dings (from
an airport fiasco), it is in full color (like all good design books should be), and
it's free!<br /><br /><b>Contest Rules:</b><br /><ul><li>
Comment on this post.</li><li>
Leave a valid email in the email comment field.</li><li>
The winner will be chosen at random and notified through email on <a href="http://en.wikipedia.org/wiki/Canada_day">Canada
Day</a> (July 1st).</li><li>
I pay for shipping.</li></ul><strike>Good Luck!</strike><br /><br />
The contest has ended and the winner is <span class="commentPermalinkStyle"><b>Devin
Parrish</b>!</span><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=0d25babc-9814-45bc-b73a-1951ac3d9b45" /></div>
    </content>
  </entry>
  <entry>
    <title>Turning the Page on Another Virtual Chapter: Time For a Website Revamp</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/04/23/TurningThePageOnAnotherVirtualChapterTimeForAWebsiteRevamp.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,fda07436-913b-41b5-a2f7-1958150bca8c.aspx</id>
    <published>2008-04-23T08:34:00.591-07:00</published>
    <updated>2008-04-25T06:54:48.7829187-07:00</updated>
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <category term="Personal" label="Personal" scheme="http://adam.kahtava.com/journal/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Life is like a book of infinite chapters
with everyone reading at their own pace - we're not who we were yesterday and won't
be on the same chapter next week, we're all on the same journey, we progress. 
<br /><br />
Time for a change. This site and blog was initially directed at hiring managers, it
worked great, the human resource teams thought the website was great.  It successfully
demonstrated creative potential, communication skills, dedication, and so on, but
that was 3 years ago. Today my audience has changed (has become more developer centric),
but the growing pains of yesterday linger. 
<br /><br />
So over the next couple months I plan to revamp this site to better represent my current
state and anticipated professional direction.<br /><br />
Site update road map:<br /><ul><li>
Transition from a showcase / superficial / professional type site to a more personal
/ how-to / community based / professional site<br /></li><li>
Keep it simple</li><li>
Replace all the ASP.NET AJAX (ATLAS) widgets with hand coded <a href="http://jquery.com/">JQuery</a> or <a href="http://script.aculo.us/">Scriptacolous</a> JavaScript
components</li><li>
Drop the Home landing page, replacing it with my Journal / Blog</li><li>
Drop the Professional Development, Resources menu item</li><li>
Drop the Professional Development Landing page, redirect to Reviews</li><li>
On the Contact page:</li><ul><li>
Remove the lengthy explanation on why I'm using a Captcha</li></ul><li>
General Site Design</li><ul><li>
Replace all HTML images with CSS images</li><li>
Design a new logo</li><li>
Design a new color scheme</li><li>
Switch the CSS design from a fixed width layout to a liquid layout<br /></li></ul></ul>
Since my last name is hard to remember I'm considering www.adamdotcom.com as my primary
domain name, what do you think? 
<br /><br />
Any recommendations are welcome! 
<p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=fda07436-913b-41b5-a2f7-1958150bca8c" /></div>
    </content>
  </entry>
  <entry>
    <title>The ASP.NET AJAX Framework is for DUMMIES!</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/04/21/TheASPNETAJAXFrameworkIsForDUMMIES.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,f3b618d7-4a7d-4892-88d4-3b85bcb01555.aspx</id>
    <published>2008-04-21T14:09:35.354-07:00</published>
    <updated>2008-06-04T19:00:50.998547-07:00</updated>
    <category term=".NET" label=".NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,.NET.aspx" />
    <category term="AJAX" label="AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,AJAX.aspx" />
    <category term="ASP.NET" label="ASP.NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET.aspx" />
    <category term="ASP.NET AJAX" label="ASP.NET AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET%2BAJAX.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://adam.kahtava.com/journal/CategoryView,category,JavaScript.aspx" />
    <category term="Programming Languages" label="Programming Languages" scheme="http://adam.kahtava.com/journal/CategoryView,category,Programming%2BLanguages.aspx" />
    <category term="Review" label="Review" scheme="http://adam.kahtava.com/journal/CategoryView,category,Review.aspx" />
    <category term="Software" label="Software" scheme="http://adam.kahtava.com/journal/CategoryView,category,Software.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">The <a href="http://www.asp.net/ajax/">ASP.NET
AJAX Framework</a> is an embarrassing server-side centric approach to DHTML / AJAX
web development. While most programming languages and frameworks come with both <em>good</em> and <em>bad</em> parts,
the ASP.NET AJAX Framework is probably an example of an overall <em>bad
part</em> of ASP.NET - on the contrast the <a href="http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework">ASP.NET
MVC Framework</a> looks to be a <em>good part</em>.<br /><br /><center><a href="http://www.flickr.com/photos/chuckbiscuito/161971512/"><img style="border: 0px none ;" src="http://farm1.static.flickr.com/78/161971512_bc7776cc98.jpg?v=0" /></a></center><br /><b>What's wrong with the ASP.NET AJAX Framework?</b><br /><blockquote><b>1 .NET Developers are DUMMIES!<br /></b>The ASP.NET AJAX Framework appears to have been designed under the assumption
that <b>.NET developers are dummies and can't learn or don't want to learn JavaScript</b>.
That .NET Developers would rather hobble along with their familiar languages, then
to learn something new. I understand that <a href="http://weblogs.asp.net/jeff/archive/2008/03/26/the-asp-net-community-s-only-real-problem-is-education.aspx">the
ASP.NET community's only real problem is education</a>, so let's ask: <a href="http://danhounshell.com/blogs/dan/archive/2008/03/24/what-is-wrong-with-the-asp-net-community.aspx">What
is wrong with the ASP.NET Community?</a> Then educate ourselves rather than becoming
the .NET Developer statuesque. It's patronizing to use a framework that assumes learning
a new language is beyond our capabilities. Many of these other programming languages
also happen to be more expressive than the statically typed .NET languages. 
<br /><br /><b>2. The <i>"don't write a line of JavaScript"</i> abstraction leaks like a sieve</b><br />
The Framework is intended to shelter .NET Developers from the big bad JavaScript language.
Which, like driving a car across North America without knowing how to pump gas, stops
you dead. Either you depend on someone to pump your gas - depend on something like
the ASP.NET AJAX Control Toolkit and the many authors to write your JavaScript - or
you stop moving. As Web Developers, sooner or later learning how to pump your own
JavaScript becomes a mandatory skill.<br /><br /><b>3. Client-side programming from the Server-side is a absurd</b><br />
The AJAX Framework does back flips to translate server-side code into JavaScript,
and then requires that you write JavaScript anyway. Save yourself the pain, learn
JavaScript. One day <a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html">The
Law of Leaky Abstractions</a> comes into play, the gas station attendant fills your
gas tank with diesel - your AJAX Control Toolkit blows up (requires debugging) so
you have to learn JavaScript anyways. 
<br /><br /><b>4. Bloated, poor performance, bad user and developer experience</b><br />
The AJAX Framework extends many of the native JavaScript objects as it attempts to
turn JavaScript into a <a href="http://en.wikipedia.org/wiki/Static_type#Static_typing">staticly
typed</a> programming language, and tries to hook into the ASP.NET life cycle, but
all these features are unneeded as they are <u>ALL</u> already achievable through
the native JavaScript language - <i>if it walks like a duck and quacks like a duck,
then... err... could someone remind me why we need typed languages in a web browser?</i> Anyhow;
all these object extensions, enhancements, and upgrades, contribute to more scripts
that need to be downloaded and increases the number of scripts running in your browser.
Then to make matters worse there's partial-page rendering and Update Panels which
do full page post backs under the guise of AJAX -bad-bad! Client-side scripting is
supposed to enhance the user experience not make it worse. Other AJAX Frameworks are
built with performance as their number one goal, but in the ASP.NET AJAX Framework.
Adding more widgets to JavaScript seemed to be the first priority, and performance
an after thought.<br /><br /><b>5. Working against the grain is a waste of time</b><br />
The AJAX Framework works against the grain, it would be nice if it embraced the JavaScript
language. Very few of the concepts and metaphors used in the ASP.NET AJAX Framework
transcend AJAX techniques or frameworks - your time is probably better spent
learning how JavaScript works or how the other <a href="http://en.wikipedia.org/wiki/Ajax_framework">AJAX
frameworks</a> work.<br /><br /><b>6. Disconnected from the ASP.NET MVC Framework</b><br />
The ASP.NET MVC Framework throws the ASP.NET life cycle away leaving more dead weight
ASP.NET AJAX Framework script and rendering many of the AJAX Framework techniques
moot. 
<br /><br /><b>7. The </b><b>ASP.NET AJAX Framework</b><b> almost over looks the 'J' in AJAX -
'J' stands for JavaScript, and that is <u>GOOD</u></b><br />
JavaScript is the glue of the web, even the ASP.NET Framework depends heavily on JavaScript,
it is not something to shy away from.<br /><br /><b>8. Aside from local intranet sites, no one really uses the ASP.NET AJAX Framework.</b><br />
The AJAX Framework isn't widely used. The ASP.NET AJAX site showcases <a href="http://www.asp.net/ajax/showcase/">25
sites</a> using ASP.NET AJAX. None of these applications appear to be high-traffic
or moderately high-traffic applications. On the other hand, the YUI site showcases <a href="http://209.73.186.27/yui/poweredby/">89
sites</a>, out of these sites, 6 sites (flickr, Slashdot, Linkedin, Paypal, O'Reilly,
My Opera) could be considered high-traffic. Other AJAX libraries like jQuery, and
Dojo compare similarly. Your time might be better spent learning one of the other <a href="http://en.wikipedia.org/wiki/Ajax_framework">AJAX
frameworks</a>.<br /></blockquote>If we (.NET Developers) are going to claim we know AJAX, then let's focus
on the core of AJAX (JavaScript) and stop obscuring it in poor frameworks. Frankly
the ASP.NET AJAX Framework is embarrassing, <b>the web development community is
laughing at the ASP.NET AJAX Framework and the Developers touting it.</b><br /><br /><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=f3b618d7-4a7d-4892-88d4-3b85bcb01555" /></div>
    </content>
  </entry>
  <entry>
    <title>Book Reviewed: ASP.NET AJAX in Action by Alessandro Gallo, David Barkol, Rama Vavilala</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/04/20/BookReviewedASPNETAJAXInActionByAlessandroGalloDavidBarkolRamaVavilala.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,49f1ae76-9a81-4559-9c19-768f088f304d.aspx</id>
    <published>2008-04-20T15:44:34.467-07:00</published>
    <updated>2008-06-04T19:01:06.4671587-07:00</updated>
    <category term=".NET" label=".NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,.NET.aspx" />
    <category term="AJAX" label="AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,AJAX.aspx" />
    <category term="ASP.NET" label="ASP.NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET.aspx" />
    <category term="ASP.NET AJAX" label="ASP.NET AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET%2BAJAX.aspx" />
    <category term="Book" label="Book" scheme="http://adam.kahtava.com/journal/CategoryView,category,Book.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://adam.kahtava.com/journal/CategoryView,category,JavaScript.aspx" />
    <category term="Review" label="Review" scheme="http://adam.kahtava.com/journal/CategoryView,category,Review.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://www.amazon.com/gp/product/1933988142?ie=UTF8&amp;tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1933988142">
          <img src="http://ecx.images-amazon.com/images/I/51V41qLtOWL._SL500_BO2,204,203,200_PIsitb-dp-500-arrow,TopRight,45,-64_OU01_AA240_SH20_.jpg" style="border: 0px none ; float: right;" />
        </a>The
authors of <a href="http://www.amazon.com/gp/product/1933988142?ie=UTF8&amp;tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1933988142">ASP.NET
AJAX in Action</a> did an <i>OK</i> (Average) job at presenting the ASP.NET AJAX Framework.
However; this book lacked objectivity and suffered from hype. The authors didn't seem
to have proficient experience with the JavaScript language, or enough experience with <u>other</u> AJAX
Frameworks / Libraries, or sufficient experience using the ASP.NET AJAX Framework
in real world projects. This book sadly felt like most technical books - average.<br /><br />
Comments like <i>"we recommend that..."</i>, <i>"because it makes no sense..."</i>, <i>"you
must rely on a special method..."</i>, <i>"you must understand X,Y,Z to run complex
client-side code without writing a single line of JavaScript"</i> were discouraging.
Many of the <i>"whys"</i> were left answered and the technical inner workings of the
framework often trivialized. Don't get me wrong, writing a book is incredibly time
consuming, but if you're an author, presenter or the like, and you don't fully understand
something then admit it. Do some research, provide some links, or move on. Consistently
making comments like these bring the integrity of the whole text into question.<br /><br />
The ASP.NET AJAX Framework itself is technically flawed, bloated, and almost entirely
impractical. I was disappointed with the server-centric approach that both the book
and ASP.NET AJAX Framework takes. I was disappointed that the book continually pushed
JavaScript under the carpet as magic and <b>at the end of the book I was pleased to
see the promise of making <i>"the JavaScript code disappear"</i></b><b>never </b><b>was 
fulfilled. </b>JavaScript is the very most important part of AJAX, without the <i>'J'</i> in
AJAX, we're left with nothing - just <i>'Asynchronous'</i>, <i>'And'</i>, heaps of
more ugly <i>'XML'</i>.<br /><br />
When reading this book, take the contents and the ASP.NET AJAX Framework with a grain
of salt, if you're really serious about learning AJAX then read <a href="http://www.amazon.com/gp/product/0596101996?ie=UTF8&amp;tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596101996">JavaScript:
The Definitive Guide by David Flanagan</a>. 
<br /><br /><i>I typically only contribute positive reviews, but I don't agree with the majority
of reviews found on Amazon and hope this review provides some objectivity. I commend
the authors on their hard work, I'm probably being too harsh with this review - I
know it's tough to write a book, and imagine they made many sacrifices as they worked
towards tight deadlines.</i><br /><br />
View my review on <a href="http://www.amazon.com/gp/cdp/member-reviews/A2JM0EQJELFL69/ref=cm_pdp_reviews_see_all?ie=UTF8&amp;sort_by=MostRecentReview">Amazon</a>.<br /><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=49f1ae76-9a81-4559-9c19-768f088f304d" /></div>
    </content>
  </entry>
  <entry>
    <title>How To Choose a Good Technical Book</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/04/16/HowToChooseAGoodTechnicalBook.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,9ce19ba0-c8df-408f-aa49-cb62bb3992f3.aspx</id>
    <published>2008-04-16T08:19:06.016-07:00</published>
    <updated>2008-04-16T08:35:40.2087606-07:00</updated>
    <category term="Book" label="Book" scheme="http://adam.kahtava.com/journal/CategoryView,category,Book.aspx" />
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <category term="Software" label="Software" scheme="http://adam.kahtava.com/journal/CategoryView,category,Software.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">The quality of technical books have wide
variations between publishers and authors. While choosing a book based on the author <u>is</u> reliable,
depending on a publisher or brand name <u>is not</u> reliable, and choosing a book
based on advertisements is even less reliable. It makes sense to choose your books
wisely since most technical books live a short life (the duration of a single project),
cost money, and require precious time to be read. 
<br /><br /><b>When choosing a book I follow this heuristic approach:</b><br /><ul><li>
Ask experts in the field (friends, forums, newsgroups) for recommendations</li><li>
Ask these experts to differentiate between the high level books and the books that
take a technical deep dive.</li><li>
Filter out (discard) the high level recommendations.</li><li>
Filter out (discard) all recommendations that contain the following keywords in their
title:</li><ul><li><i>Cookbook</i></li><li><i>Problem - Design - Solution </i></li><li><i>Hacks</i></li><li><i>Tips</i></li><li><i>Learn X in 24 hours</i></li></ul><li>
Look for recognizable authors.</li><li>
Cross reference these recommendations through Amazon's Reviews:</li><ul><li>
Books with over 100 excellent ratings on Amazon are instant winners - the Amazon community
is rarely misleading.<br /></li><li>
Books that haven't received more than 50 ratings should be considered with skepticism
- visit a local book store and skim through the text in question before making the
purchase.</li></ul></ul><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=9ce19ba0-c8df-408f-aa49-cb62bb3992f3" /></div>
    </content>
  </entry>
  <entry>
    <title>The ASP.NET AJAX Learning Curve</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/04/09/TheASPNETAJAXLearningCurve.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,a8f6b8fe-dbc5-4963-a735-e92ad3b18d8b.aspx</id>
    <published>2008-04-09T07:36:06.087-07:00</published>
    <updated>2008-06-04T19:01:23.451425-07:00</updated>
    <category term="AJAX" label="AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,AJAX.aspx" />
    <category term="ASP.NET" label="ASP.NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET.aspx" />
    <category term="ASP.NET AJAX" label="ASP.NET AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET%2BAJAX.aspx" />
    <category term="CSS" label="CSS" scheme="http://adam.kahtava.com/journal/CategoryView,category,CSS.aspx" />
    <category term="DOM" label="DOM" scheme="http://adam.kahtava.com/journal/CategoryView,category,DOM.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://adam.kahtava.com/journal/CategoryView,category,JavaScript.aspx" />
    <category term="Software" label="Software" scheme="http://adam.kahtava.com/journal/CategoryView,category,Software.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">The <a href="http://en.wikipedia.org/wiki/ASP.NET_AJAX">ASP.NET
AJAX</a> framework comes with a lot of baggage err... I mean... a huge learning curve
when compared to other <a href="http://en.wikipedia.org/wiki/Ajax_framework">AJAX
Frameworks</a> like <a href="http://jquery.com/">JQuery</a>, <a href="http://developer.yahoo.com/yui/">YUI</a>, <a href="http://dojotoolkit.org/">Dojo</a>, <a href="http://www.prototypejs.org/">Prototype</a> / <a href="http://script.aculo.us/">Scriptaculous</a>.<br /><br />
Here's a running list of the technologies, and concepts you'll encounter when digging
into ASP.NET AJAX:<br /><ul><li>
ASP.NET<img src="http://adam.kahtava.com/journal/images/blog/ajax_logo.png" style="float: right;" /></li><ul><li>
The Page Life Cycle</li><li>
The Control Life Cycle</li><li>
Web Controls</li><li>
User Controls</li><li>
View State</li><li>
Session State</li><li>
Events<br /></li></ul><li>
.NET / Classical Language<br /></li><ul><li>
Interfaces</li><li>
Inheritance</li><li>
Delegates</li><li>
Multicast Delegates</li><li>
Assemblies</li><li>
Properties (Get / Set)</li><li>
Constructors</li></ul></ul>
In addition to these, you also have the technologies universal to all JavaScript libraries:<br /><ul><li>
JavaScript:</li><ul><li>
Closures</li><li>
Object Literals</li><li>
JSON</li><li>
Events</li><li>
DOM Manipulation</li><li>
Prototypical Inheritance</li><li>
Constructors</li><li>
XMLHttpRequest<br /></li></ul><li>
Cascading Style Sheets (CSS):</li><li>
Web Services</li></ul>
The <a href="http://en.wikipedia.org/wiki/ASP.NET_AJAX">ASP.NET AJAX</a> Framework
is more complex than other <a href="http://en.wikipedia.org/wiki/Ajax_framework">AJAX
frameworks</a>, I'm continually lost in it's ambiguity as it attempts to skirt around
the JavaScript language - I think this learning curve (and all it's confusion) is
precisely why <a href="http://en.wikipedia.org/wiki/Silverlight">Silverlight</a> has
so much potential. 
<br /><br />
I'm still diving into the low-level details, but my first impressions of the ASP.NET
AJAX Framework are: 
<br /><ul><li>
Obscure, ambiguous, no clear vision - it offers multiple (resource intensive) ways
to avoid writing JavaScript, but then requires that you write JavaScript anyways<br /></li><li>
Too server centric</li><li>
Too heavy weight (I'm not appreciating how they're trying to turning JavaScript into
a Java, C#, .NET clone, the overhead within the browser for these conversions seems
like a huge performance bottleneck)</li><li>
Has the potential for poor performance 
</li></ul>
Most of the <u>other</u> AJAX libraries have been written with performance, browser
responsiveness, and User Experience as their number one priorities - I'm still not
sure about ASP.NET AJAX. 
<br /><br />
How many ways can we try to avoid writing JavaScript? If an AJAX library doesn't enhance
the User Experience then why use it? Regardless, I'm still digging deeper.<br /><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=a8f6b8fe-dbc5-4963-a735-e92ad3b18d8b" /></div>
    </content>
  </entry>
  <entry>
    <title>A Reflection on Themes, Skins, and Cascading Style Sheets (CSS) in ASP.NET 2.0 (A Final Conclusion)</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/04/07/AReflectionOnThemesSkinsAndCascadingStyleSheetsCSSInASPNET20AFinalConclusion.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,42f9acf9-af59-44fd-aef5-8d3ab773d5ba.aspx</id>
    <published>2008-04-07T16:19:54.272-07:00</published>
    <updated>2008-05-07T08:18:56.9205447-07:00</updated>
    <category term=".NET" label=".NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,.NET.aspx" />
    <category term="ASP.NET" label="ASP.NET" scheme="http://adam.kahtava.com/journal/CategoryView,category,ASP.NET.aspx" />
    <category term="CSS" label="CSS" scheme="http://adam.kahtava.com/journal/CategoryView,category,CSS.aspx" />
    <category term="Themes and Skins" label="Themes and Skins" scheme="http://adam.kahtava.com/journal/CategoryView,category,Themes%2Band%2BSkins.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">A couple years ago I was thrown into a web
application that made heavy use of ASP.NET Themes and Skins. Prior to this I depended
exclusively on Cascading Style Sheet (CSS) for my web development / web design needs.
A first glance at ASP.NET Themes and Skins looked promising, but a number of flaws
surfaced - see the links and issues listed at the end of this post.<br /><br />
In addition to these issues, here are a couple other considerations when thinking
about ASP.NET Themes:<br /><ul><li>
Themes do not adequately separate the levels of concerns within your application.
When using Themes all design related files are baked into the application. From a
maintainability standpoint, this doesn't bode well in large web applications. Hosting
design related files on a single server or an external <a href="http://en.wikipedia.org/wiki/Content_Delivery_Network">Content
Delivery Network (CDN)</a> is an effective way for managing site wide UI updates and
increasing a sites performance, ASP.NET Themes works against this technique. 
</li><li>
Themes add unneeded complexity by obscuring the real technologies at work (CSS). Everything
that ASP.NET Themes offer can be better achieved outside of the ASP.NET Theme Framework.
Technologies like Cascading Style Sheets (CSS),  alternate Style Sheets, and
JavaScript can achieve more than Themes can provide.</li><li>
Themes are a server-side mechanism. Themes become a nuisance in client-side dependent,
heavily dynamic, Web 2.0, DHTML, AJAX type web applications.</li><li>
Themes discourage developers from learning more about web design and the technologies
surrounding it. Themes offer a seemingly simple API, which shelters developers from
the complexities of CSS and JavaScript, but sooner or later <a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html">The
Law of Leaky Abstractions</a> comes into play and knowing the fundamentals of these
technologies is a necessity.</li><li>
Professional web designers don't use ASP.NET Themes, CSS is the language of web designers.</li></ul>
Default Skins on the other hand can be useful for defining consistent CSS hooks into
common ASP.NET controls. It's unfortunate that we can't use Skins without Themes.<br /><br /><b>Related posts:</b><br /><ul><li><a href="http://adam.kahtava.com/journal/4df765e2-b408-471e-9999-652cd804b683.aspx">The
Problems with Themes, Skins, and Cascading Style Sheets (CSS) - Where it all Falls
Apart</a></li><li><a href="http://adam.kahtava.com/journal/7e992478-da0f-4ce4-bb43-3a0b58f6f3ad.aspx">Excluding
a CSS folder (Work Around #1)</a></li><li><a href="http://adam.kahtava.com/journal/63d6c2f3-4cd9-4a7d-ab5a-2796033cb3a1.aspx">Defining
a Media Type(s) (Work Around #2)</a></li><li><a href="http://adam.kahtava.com/journal/003772b4-6ef1-4a6c-ba46-f122c787a052.aspx">Defining
the Load Order (Cascades) for CSS (Work Around #3)</a></li><li><a href="http://adam.kahtava.com/journal/c1575144-e460-464d-b993-259ce96135f4.aspx">Using
Internal (Embedded) Style with Themes (Work Around #4)</a></li><li><a href="http://adam.kahtava.com/journal/002ae3f5-6496-4d64-aab8-d3ccf498d7c7.aspx">Creating
Printer Friendly Pages (defining a CSS Print Media Type) with CSS While Using Themes
(Work Around #5)</a></li><li><a href="http://adam.kahtava.com/journal/CategoryView,category,Themes%20and%20Skins.aspx#acccb1beb-f995-47ca-92ba-137b7d73f082">A
Resolution to The Problems with Themes, Skins, and Cascading Style Sheets (CSS) -
Putting the Cascades back into ASP.NET 2.0 Themes (taking control over CSS Cascades
/ Load Order, Media Types, and Overrides)</a></li></ul><p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=42f9acf9-af59-44fd-aef5-8d3ab773d5ba" /></div>
    </content>
  </entry>
  <entry>
    <title>Founders aren't Employees, but neither are Consultants</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/04/01/FoundersArentEmployeesButNeitherAreConsultants.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,febf2a86-8bc5-42d6-b870-f9921f3ac1fd.aspx</id>
    <published>2008-04-01T16:39:30.876-07:00</published>
    <updated>2008-04-22T11:37:20.5791108-07:00</updated>
    <category term="Musings" label="Musings" scheme="http://adam.kahtava.com/journal/CategoryView,category,Musings.aspx" />
    <category term="Software" label="Software" scheme="http://adam.kahtava.com/journal/CategoryView,category,Software.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">In <a href="http://www.paulgraham.com/boss.html"><i>You
Weren't Meant to Have a Boss</i></a>, Paul Graham makes some clear distinctions between
Founders and Employees. A similar Founder Vs Employee thread was presented in Joel
Spolsky's recent article <a href="http://www.inc.com/magazine/20080301/how-hard-could-it-be-lessons-i-learned-in-the-army.html?partner=fogcreek"><i>How
Hard Could It Be?: Lessons I Learned in the Army</i></a>. Spolsky goes on to make
the point that Employees do not have the same ambitions as Founders, and that Founders
need to realize this dichotomy - that Employees are interested in <i>today</i> (short
term) whereas Founders are focused on the long term.<br /><blockquote><i>The great employees will be devoted, sure, and it's completely reasonable
to expect them to work their butts off. But unlike founders, employees are concerned
about what their jobs are like today. They're not as excited about making sacrifices
for the long run.<br /><br />
I can always tell the founders who haven't figured this out yet, because they're disappointed
in all their employees, firing good people left and right and constantly asking, "Why
hasn't Joe (or Jane) gotten this work done yet? I could have finished it in one weekend!" </i>-
Joel Spolsky: <a href="http://www.inc.com/magazine/20080301/how-hard-could-it-be-lessons-i-learned-in-the-army.html?partner=fogcreek">How
Hard Could It Be?: Lessons I Learned in the Army</a><br /></blockquote>Both these articles highlight the differences between Employees and Founders,
but what about Consultants?<br /><br />
Consultants can often fall under the full-time Employee umbrella, but probably have
an even shorter term interest in their client. Part of a consultant's job is to maintain
objectivity, to distance themselves from becoming financially, emotionally, and personally
invested in their client - objectivity is lost when an attachment or investment is
made. 
<br /><br />
According to <a href="http://www.amazon.com/s?ie=UTF8&amp;tag=mozilla-20&amp;index=blended&amp;link%5Fcode=qs&amp;field-keywords=Janet%20Ruhl%20&amp;sourceid=Mozilla-search">Janet
Ruhl</a> a couple of the biggest Gotchas in consultancy work can be:<br /><ul><li><i>Investing in your client - purchasing shares in your client or agreeing to software
royalties rather than a pay cheque.</i></li><li><i>Being manipulated into working for free.</i></li></ul>
Consultants are kind of like Employees, but different. Consultants probably have an
even shorter term interest in the company they work for then Employees do. I think
it's important to highlight these differences.<p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=febf2a86-8bc5-42d6-b870-f9921f3ac1fd" /></div>
    </content>
  </entry>
  <entry>
    <title>Book Reviewed: JavaScript: The Definitive Guide by David Flanagan</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/03/26/BookReviewedJavaScriptTheDefinitiveGuideByDavidFlanagan.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,d293d1fa-0815-4cf5-9e66-494cdddc8e00.aspx</id>
    <published>2008-03-26T07:49:27.404-07:00</published>
    <updated>2008-04-15T07:02:14.9158314-07:00</updated>
    <category term="AJAX" label="AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,AJAX.aspx" />
    <category term="Book" label="Book" scheme="http://adam.kahtava.com/journal/CategoryView,category,Book.aspx" />
    <category term="CSS" label="CSS" scheme="http://adam.kahtava.com/journal/CategoryView,category,CSS.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://adam.kahtava.com/journal/CategoryView,category,JavaScript.aspx" />
    <category term="Programming Languages" label="Programming Languages" scheme="http://adam.kahtava.com/journal/CategoryView,category,Programming%2BLanguages.aspx" />
    <category term="Review" label="Review" scheme="http://adam.kahtava.com/journal/CategoryView,category,Review.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://www.amazon.com/gp/product/0596101996?ie=UTF8&amp;tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596101996">
          <img src="http://ecx.images-amazon.com/images/I/51OY5KP5ydL._AA240_.jpg" style="float: right;" />
        </a>
        <a href="http://www.amazon.com/gp/product/0596101996?ie=UTF8&amp;tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0596101996"> JavaScript:
The Definitive Guide by David Flanagan</a> is a great book! When I began reading this
book I was convinced that (like many technical books) the first couple chapters would
contain the important stuff and the content would slowly digress into page filler,
fluff, and the book would become just another <a href="http://adam.kahtava.com/journal/2008/03/08/SomethingAboutTheCobblersChildrenHavingNoShoes.aspx">monitor
stand</a>. But not this book! After finishing the formal chapters I started reading
the references - YES, this book is so good I'm reading the references! Flanagan has
raised the bar for all JavaScript books - this book is in its 5th edition, and reviewed
by some of the greats in the Web Development / JavaScript world (<a href="http://www.crockford.com/">Douglas
Crockford</a>, <a href="http://www.quirksmode.org/">Peter-Paul Koch</a>). 
<br /><br />
I often think of JavaScript as the <a href="http://en.wikipedia.org/wiki/Assembly_language">assembly
language</a> of the internet - most of the current-generation web frameworks make
heavy use of JavaScript, CSS, and AJAX. If you really want to understand how ASP.NET
or Ruby on Rails really works, how AJAX works, how JavaScript libraries work. If you
want to really understand how to push the web browser envelope, and how to really
innovate, then this book is a required read. JavaScript (and other functional programming
languages) present a different programming model. <i><b>Once you grock the fundamentals
of JavaScript you'll never be able to look at classical languages (Java, C++, C#,
...) with a straight face again.</b></i> I highly recommend this book to ANY web developer
from ANY web framework camp.<br /><br />
This book is now in my <a href="http://adam.kahtava.com/professionalDev/readingList/">Recommended
Reading</a> section. View <a href="http://www.amazon.com/gp/cdp/member-reviews/A2JM0EQJELFL69/">my
review</a> on Amazon.<p></p><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=d293d1fa-0815-4cf5-9e66-494cdddc8e00" /></div>
    </content>
  </entry>
  <entry>
    <title>A Completely Normal Post: Our Dog</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/03/20/ACompletelyNormalPostOurDog.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,580f6974-b204-487d-94a7-ea95b3fbbcb0.aspx</id>
    <published>2008-03-20T10:34:30.797-07:00</published>
    <updated>2008-03-26T14:23:10.9115196-07:00</updated>
    <category term="Calgary" label="Calgary" scheme="http://adam.kahtava.com/journal/CategoryView,category,Calgary.aspx" />
    <category term="Personal" label="Personal" scheme="http://adam.kahtava.com/journal/CategoryView,category,Personal.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">My blog posts tend to be obscured in programming
languages, and techie gibberish, I thought I'd do a normal post on our dog - after
all, pets are what blogs are really about, right? :)<br /><br />
Steph (my wife) and I had been toying with the idea of getting a dog, we've been looking
at different breeds, visiting shelters, and emailing breeders - I have to give Steph
all the credit, she did most of the research. Anyhow, we came across a post on our <a href="http://calgary.kijiji.ca/">Kijiji</a> for
a mature <a href="http://en.wikipedia.org/wiki/Soft-Coated_Wheaten_Terrier">Soft Coated
Wheaten Terrier</a>. Now we have a dog.<br /><br />
Being a Geek and all, I wasn't sure if I was a dog (or cat person), but Belle is a
great dog. Her constant need for a walks is a great reminder to take a micro break
while working from home.<br /><br /><div style="text-align: center;"><a href="http://www.flickr.com/photos/kahtava/2327548091/"><img src="http://farm3.static.flickr.com/2233/2327548091_bd36704f3f.jpg?v=0" /></a><br /><i>Belle, our dog.</i><br /></div><hints id="hah_hints"></hints><img width="0" height="0" src="http://adam.kahtava.com/journal/aggbug.ashx?id=580f6974-b204-487d-94a7-ea95b3fbbcb0" /></div>
    </content>
  </entry>
  <entry>
    <title>Namespacing Your JavaScript</title>
    <link rel="alternate" type="text/html" href="http://adam.kahtava.com/journal/2008/03/17/NamespacingYourJavaScript.aspx" />
    <id>http://adam.kahtava.com/journal/PermaLink,guid,d9202683-be0a-49d2-8954-05f85a29c0cf.aspx</id>
    <published>2008-03-17T08:23:37.697-07:00</published>
    <updated>2008-04-23T10:41:08.9115678-07:00</updated>
    <category term="AJAX" label="AJAX" scheme="http://adam.kahtava.com/journal/CategoryView,category,AJAX.aspx" />
    <category term="JavaScript" label="JavaScript" scheme="http://adam.kahtava.com/journal/CategoryView,category,JavaScript.aspx" />
    <category term="Software" label="Software" scheme="http://adam.kahtava.com/journal/CategoryView,category,Software.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">Namespacing your JavaScript is critical
for sites that make heavy use of JavaScript, or sites that use any the JavaScript
AJAX libraries (<a href="http://script.aculo.us/">Scriptaculous</a>, <a href="http://asp.net/ajax/documentation/live/ClientReference/">ASP.NET
AJAX Client Side</a>, <a href="http://developer.yahoo.com/yui/">YUI</a>, <a href="http://jquery.com/">JQuery</a>,
...). It's also a great defensive programming technique - this is another post on
JavaScript techniques that I've found useful.<br /><br /><b>Why Namespaces?</b> Well... :) When a browser loads a document, it loads ALL the
JavaScript into the browser. Objects that are not enclosed within a Namespace are
Global, and <a href="http://www.nczonline.net/blog/2006/6/5/global_variables_are_evil">Global
Variables are Evil</a> because they run the risk of interfering / overriding / clobbering
previously defined objects (variables, functions, etc...). The JavaScript language,
in its current form does not have native support for Namespacing . So, as pragmatic
developers we realize the need to <i>"Program Into [Our] Language, Not In It" </i><i>- <a href="http://www.amazon.com/gp/product/0735619670?tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0735619670">Steve
McConnell, Code Complete 2nd Ed, Chapter 34.4</a></i>. In the JavaScript language
we use Objects to achieve Namespacing - we'll cover this closer to the end of this
post.<br /><blockquote><i>Don’t limit your programming thinking only to the concepts that are
supported automatically by your language. The best programmers think of what they
want to do, and then they assess how to accomplish their objectives ... - </i>Steve
McConnell: <a href="http://www.amazon.com/gp/product/0735619670?tag=adamkahtavaap-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0735619670">Code
Complete 2nd Ed, Chapter 34.4</a><br /></blockquote><b>An example of when Namespaces could be used: </b>Let's say, we're
working on a team of 3 developers, each developer is working on a different widget
/ component for the same page. So inside our HTML / XHTML document we define and load
three different JavaScript files and inside these files we have something like: 
<br /><blockquote>In someObscureWidgetJavaScriptFile1.js have: <pre style="white-space: normal;"><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"> 
helloWorld <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">function</span>(){
alert('hello world'); };</span></pre>
In someOtherObscureJavaScriptFile2.js we have: <pre style="white-space: normal;"><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"> 
helloWorld <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span> 'hello
world';</span></pre>
In someOtherObscureJavaScriptFile3.js we have: <pre style="white-space: normal;"><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"> 
helloWorld <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span> {
hello: 'hello', world: 'world' };</span></pre></blockquote>All these JavaScript files get loaded into the browsers global calling
object (window), and each assignment of <span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;">helloWorld </span>interferes
with the previous. When we attempt to reference <span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;">helloWorld</span> we'll
be depending on the order in which the JavaScript files were loaded - if the first
file was loaded we'll be able to display the alert, if the later file was loaded first
we'll be able to reference a string, and so on.<br /><br /><b>Back to the topic at hand, How do I create a Namespace in JavaScript. 
<br /></b><i>Note: this approach to Namespacing was recommended and referenced in <a href="http://www.amazon.com/dp/0596101996?tag=adamkahtavaap-20&amp;camp=15041&amp;creative=373501&amp;link_code=as3">JavaScript:
The Definitive Guide by David Flanagan</a>, other methods of Namespacing can be found
on the web (<a href="http://www.dustindiaz.com/namespace-your-javascript/">Namespacing
your JavaScript</a> by Dustin Diaze outlines an alternate approach). For me, the following
seems more intuitive, and is recommended in <a href="http://www.amazon.com/dp/0596101996?tag=adamkahtavaap-20&amp;camp=15041&amp;creative=373501&amp;link_code=as3">Flanagan's</a> book
- probably, the best JavaScript book written to date.<br /><br /></i><b>Ceating a Namespace in JavaScript:<br /></b><blockquote><pre style="white-space: normal;"><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">//
Create the namespace object. Error checking omitted here for brevity.</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"><br />
var</span> myNameSpace;<br /><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">if</span> (!myNameSpace)
myNameSpace <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span> {};<br />
myNameSpace.myPseudoClass <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span> {}; <span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"><br />
//JavaScript doesn't support classes, 
<br />
// so let's avoid confusing people and call this a Pseudo Class</span><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"><br /><br />
// Don't stick anything into the namespace directly.</span><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"><br />
// Instead we define and invoke an anonymous function to create a closure</span><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"><br />
// that serves as our private namespace. This function will export its</span><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"><br />
// public symbols from the closure into the myNameSpace object</span><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"><br />
// Note that we use an unnamed function so we don't create any other</span><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"><br />
// global symbols.</span><br />
(<span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">function</span>()
{ <span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">//
Begin anonymous function definition</span><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"><br /><br />
  // Nested functions create symbols within the closure</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"><br /></span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">  </span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">function</span> displayMyMessage()
{ alert(myMessage); }<br /><br /><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"></span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">  </span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">//
Local variable are symbols within the closure.</span><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"><br /></span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">  </span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">//
This one will remain private within the closure</span><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;"><br /></span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">  </span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Blue; background-color: transparent; font-family: Courier New; font-size: 11px;">var</span> myMessage <span style="color: Red; background-color: transparent; font-family: Courier New; font-size: 11px;">=</span> 'Hello
World';<br /><br /><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"></span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">  </span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">//
This function can refer to the variable with a simple name</span><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;"><br /></span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">  </span></span><span style="color: Black; background-color: transparent; font-family: Courier New; font-size: 11px;"><span style="color: Green; background-color: transparent; font-family: Courier New; font-size: 11px;">//