<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Andrew Hay - learning</title>
    <link>http://www.andrewdothay.net/blog/</link>
    <description>Thinking way too long about the subtitle</description>
    <language>en-us</language>
    <copyright>Andrew Hay</copyright>
    <lastBuildDate>Thu, 17 Sep 2009 16:34:56 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>andrewcameronhay@hotmail.com</managingEditor>
    <webMaster>andrewcameronhay@hotmail.com</webMaster>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=c98c6a3b-380b-49e1-b3e7-14a8bd475500</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,c98c6a3b-380b-49e1-b3e7-14a8bd475500.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,c98c6a3b-380b-49e1-b3e7-14a8bd475500.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c98c6a3b-380b-49e1-b3e7-14a8bd475500</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.greghughes.net">Greg Hughes</a>, one of the rock stars I had the
pleasure of working with on a gig has a nice phrase that he likes to whip out from
time to time: trust, but verify. 
</p>
        <p>
Greg didn't coin the term. <a href="http://en.wikipedia.org/wiki/Trust,_but_Verify">Wikipedia
says Ronald Regan used it</a> and others before him. The term indicates you should
trust what people are doing or saying, but verify it nonetheless. I had one such opportunity
recently and I'm sorry to say that I failed miserably. 
</p>
        <p>
The check-engine light went on in my car last Friday. I took it to a repair shop early
Saturday morning and left it there. They called back in a couple of hours with an
estimate to fix this, that, and the other thing. I winced, but said sure, go ahead.
This is over the phone, mind you. 
</p>
        <p>
They called back a few hours after that and said there's one more thing. I asked for
the total, winced again, and said sure, go ahead. Again, on the phone. This time,
the part was offsite and the delivery truck couldn't arrive until Monday. No worries,
we had the spare car thing worked out. 
</p>
        <p>
I get a call on Monday. The truck arrived, but not the part; weird. Apologies were
offered by the repair shop, but I say, no problem, I’ll get the car on Tuesday. 
</p>
        <p>
Tuesday arrives and I get a call in the late afternoon. The car is ready, please come
and get it. I was in a meeting, so I learned this by listening to the voice-mail the
kind man left on my phone. I leave work, pick up the H-man from daycare, drive home
to get the wife and drive over to the dealership. 
</p>
        <p>
We're less than a mile from the repair shop when I notice I have another voice-mail
from them. In this one, the kind man explains that they close at 6pm, but I have until
8pm to pick up the car before the gates close. He explained that I can call him back
and pay over the phone if I plan on picking up the car between 6pm and 8pm tonight.
He also says the amount on the call. It's two times the amount he quoted me on Saturday.
I'm instantly furious. 
</p>
        <p>
I park and walk into the repair shop, the service desk directs me to the cashier.
The cashier grabs my file and asks for the 2X amount. I respond politely with "I can't
pay that amount". She furrows her brow, understandably at 15 minutes to closing time,
and returns with the service desk representative. 
</p>
        <p>
I ask for the amount he quoted me over the phone and he points to the 2X amount. Again,
with all the politeness I can muster, as if I'm speaking to my grandma, I ask if he
quoted me the 1X amount. He scratches his head and explains, it's all right there.
His document identifies who called, when they called, who they talked to, and the
amount of the estimate. 
</p>
        <p>
I'm baffled and I begin to doubt myself. But I'm also resilient and tell myself that
if the man estimated 2X for the repairs, I surely would have declined and pursued
other options. It's an old car and we're thinking of trading it soon. I was very sure,
even now, that I asked him for the full amount. I was also sure that he never said
anything resembling 2X in response to my question about the full amount. Under no
circumstances could 1X be mistaken for 2X, even on a bad phone connection. 
</p>
        <p>
He explains that he'll have to get the manager, so he's off and I stand around for
a few minutes perusing the repair sheets he left on the desk. It's all right there
on the documents, how could two parties be so far apart on an essential matter? 
</p>
        <p>
A large burly man in a nice looking suit emerges from the back offices, introduces
himself and asks me about my problem. I explain the situation and he takes it all
in. Then he turns to the service representative and repeats what I said. Then he turns
to me and repeats what the service manager said. Then, he repeated what the service
manager said two more times, then he repeated what I said one more time followed by
repeating what the service manager said and ending with a finale of "in all of my
20 years here...", you get the idea. 
</p>
        <p>
Those of you who have met me will know that I have a pretty good face for these types
of things. I'm not too pretty, it's hard to tell what I'm thinking if I don’t let
you and the whiskers don't hurt either. Plus, for whatever reason, I decided to wear
a nice button-down blue shirt and dockers today. I looked professional and not like
some punkass kid trying to skip out on part of the bill. Plus, I sincerely felt that
I was right. 
</p>
        <p>
In any case, 2X is a lot of money to screw up. 
</p>
        <p>
The manager explains that the documents with the who-what-when-and-how-much are legal
documents in the state of Oregon. I don't bite. I'm not in any mood to debate the
matter. My position is clear and so is his. No quick, witty comment or sly argument
from me is going to win him over. My only rebuttal is that estimates over the phone
are inherently prone to these types of mistakes. He picks up on this nibble of an
argument and thoroughly explains that in all his years, they've never had a problem
like this. Again, I refuse to argue the point. It's futile to do so.  
</p>
        <p>
So, he explains that he has to go to the general manager of the repair shop. Again,
I’m left alone near the cashier's desk. This time for about 15 minutes, the standard
time one would sit in an office of a car dealership, waiting to see if the manager
would accept your offer on the car. The old wear-you-down trick. 
</p>
        <p>
In the mean time, I think about what to do. I really do like jury duty. It's a lot
of fun. I wonder of small claims court would be as much fun. There's the anxiety of
getting over the problem, the possibility of losing my first case (I was a business
law major until I took my first computer science course in college) and just the general
hassle. Plus, I'm beginning to doubt myself. Did that guy really tell me the full
amount on the phone and I just wasn't paying attention? I decided that they would
offer to split the difference and I'd accept it. 
</p>
        <p>
Damn! 
</p>
        <p>
So, the manager returns, right on time. He repeats what I told him; then he repeats
what the service representative said one more time. Finally, the manager then says
the general manager offered to split the cost with me. I asked if he was offering
me 1.5X and I’m corrected. The general manager is offering it and the manager is merely
saying it to me. 
</p>
        <p>
Whatever. 
</p>
        <p>
I put up the stop hand and said, I think this is the best solution for both of us.
The manager knows to stop selling when the sale is over, so he turns to the cashier
and firmly states that this customer is going to only pay 1.5X of the amount on the
bill. 
</p>
        <p>
I'm relieved that the issue resolved, yet still disappointed that it happened at all.
I'm out 0.5X, but I do have a few extra repairs on the car. Upon further review, I
think some of the repairs are a little suspect. For example, my car is perfect on
oil. It doesn't burn oil and my drive way is void of any oil spots. Why didn't I think
of that when the guy said the oil pan gasket was leaking on the phone? Arrrgg!! 
</p>
        <p>
This is when Greg's term "trust, but verify" really became clear to me. My super smart
wife pointed out that I could have asked him to e-mail me the estimate. I also could
have asked him to call me back and leave the full estimate as a voice-mail on my phone
if they were email-impaired. The amount of money is large enough and use of my car
is important enough that I really should have been more diligent. I should have verified
the estimate instead of just trusting what I heard on the phone. 
</p>
        <p>
Rats. Well, they say the awesome people can tell you all about their mistakes and
the incompetent never see their own mistakes. Here's one more thing on the pile that
I can learn from. I'm going to be riding the "trust, but verify" horse into the ground
for the next couple of weeks. Apologies, in advance, to all my teammates. 
</p>
        <p>
I don't explain the identity of the repair shop or the amount here because you're
going to trust, but verify next time right? So, in that case, it doesn't matter who
I dealt with.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=c98c6a3b-380b-49e1-b3e7-14a8bd475500" />
      </body>
      <title>Trust, but Verify</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,c98c6a3b-380b-49e1-b3e7-14a8bd475500.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2009/09/17/TrustButVerify.aspx</link>
      <pubDate>Thu, 17 Sep 2009 16:34:56 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.greghughes.net"&gt;Greg Hughes&lt;/a&gt;, one of the rock stars I had the
pleasure of working with on a gig has a nice phrase that he likes to whip out from
time to time: trust, but verify. 
&lt;p&gt;
Greg didn't coin the term. &lt;a href="http://en.wikipedia.org/wiki/Trust,_but_Verify"&gt;Wikipedia
says Ronald Regan used it&lt;/a&gt; and others before him. The term indicates you should
trust what people are doing or saying, but verify it nonetheless. I had one such opportunity
recently and I'm sorry to say that I failed miserably. 
&lt;p&gt;
The check-engine light went on in my car last Friday. I took it to a repair shop early
Saturday morning and left it there. They called back in a couple of hours with an
estimate to fix this, that, and the other thing. I winced, but said sure, go ahead.
This is over the phone, mind you. 
&lt;p&gt;
They called back a few hours after that and said there's one more thing. I asked for
the total, winced again, and said sure, go ahead. Again, on the phone. This time,
the part was offsite and the delivery truck couldn't arrive until Monday. No worries,
we had the spare car thing worked out. 
&lt;p&gt;
I get a call on Monday. The truck arrived, but not the part; weird. Apologies were
offered by the repair shop, but I say, no problem, I’ll get the car on Tuesday. 
&lt;p&gt;
Tuesday arrives and I get a call in the late afternoon. The car is ready, please come
and get it. I was in a meeting, so I learned this by listening to the voice-mail the
kind man left on my phone. I leave work, pick up the H-man from daycare, drive home
to get the wife and drive over to the dealership. 
&lt;p&gt;
We're less than a mile from the repair shop when I notice I have another voice-mail
from them. In this one, the kind man explains that they close at 6pm, but I have until
8pm to pick up the car before the gates close. He explained that I can call him back
and pay over the phone if I plan on picking up the car between 6pm and 8pm tonight.
He also says the amount on the call. It's two times the amount he quoted me on Saturday.
I'm instantly furious. 
&lt;p&gt;
I park and walk into the repair shop, the service desk directs me to the cashier.
The cashier grabs my file and asks for the 2X amount. I respond politely with "I can't
pay that amount". She furrows her brow, understandably at 15 minutes to closing time,
and returns with the service desk representative. 
&lt;p&gt;
I ask for the amount he quoted me over the phone and he points to the 2X amount. Again,
with all the politeness I can muster, as if I'm speaking to my grandma, I ask if he
quoted me the 1X amount. He scratches his head and explains, it's all right there.
His document identifies who called, when they called, who they talked to, and the
amount of the estimate. 
&lt;p&gt;
I'm baffled and I begin to doubt myself. But I'm also resilient and tell myself that
if the man estimated 2X for the repairs, I surely would have declined and pursued
other options. It's an old car and we're thinking of trading it soon. I was very sure,
even now, that I asked him for the full amount. I was also sure that he never said
anything resembling 2X in response to my question about the full amount. Under no
circumstances could 1X be mistaken for 2X, even on a bad phone connection. 
&lt;p&gt;
He explains that he'll have to get the manager, so he's off and I stand around for
a few minutes perusing the repair sheets he left on the desk. It's all right there
on the documents, how could two parties be so far apart on an essential matter? 
&lt;p&gt;
A large burly man in a nice looking suit emerges from the back offices, introduces
himself and asks me about my problem. I explain the situation and he takes it all
in. Then he turns to the service representative and repeats what I said. Then he turns
to me and repeats what the service manager said. Then, he repeated what the service
manager said two more times, then he repeated what I said one more time followed by
repeating what the service manager said and ending with a finale of "in all of my
20 years here...", you get the idea. 
&lt;p&gt;
Those of you who have met me will know that I have a pretty good face for these types
of things. I'm not too pretty, it's hard to tell what I'm thinking if I don’t let
you and the whiskers don't hurt either. Plus, for whatever reason, I decided to wear
a nice button-down blue shirt and dockers today. I looked professional and not like
some punkass kid trying to skip out on part of the bill. Plus, I sincerely felt that
I was right. 
&lt;p&gt;
In any case, 2X is a lot of money to screw up. 
&lt;p&gt;
The manager explains that the documents with the who-what-when-and-how-much are legal
documents in the state of Oregon. I don't bite. I'm not in any mood to debate the
matter. My position is clear and so is his. No quick, witty comment or sly argument
from me is going to win him over. My only rebuttal is that estimates over the phone
are inherently prone to these types of mistakes. He picks up on this nibble of an
argument and thoroughly explains that in all his years, they've never had a problem
like this. Again, I refuse to argue the point. It's futile to do so.&amp;nbsp; 
&lt;p&gt;
So, he explains that he has to go to the general manager of the repair shop. Again,
I’m left alone near the cashier's desk. This time for about 15 minutes, the standard
time one would sit in an office of a car dealership, waiting to see if the manager
would accept your offer on the car. The old wear-you-down trick. 
&lt;p&gt;
In the mean time, I think about what to do. I really do like jury duty. It's a lot
of fun. I wonder of small claims court would be as much fun. There's the anxiety of
getting over the problem, the possibility of losing my first case (I was a business
law major until I took my first computer science course in college) and just the general
hassle. Plus, I'm beginning to doubt myself. Did that guy really tell me the full
amount on the phone and I just wasn't paying attention? I decided that they would
offer to split the difference and I'd accept it. 
&lt;p&gt;
Damn! 
&lt;p&gt;
So, the manager returns, right on time. He repeats what I told him; then he repeats
what the service representative said one more time. Finally, the manager then says
the general manager offered to split the cost with me. I asked if he was offering
me 1.5X and I’m corrected. The general manager is offering it and the manager is merely
saying it to me. 
&lt;p&gt;
Whatever. 
&lt;p&gt;
I put up the stop hand and said, I think this is the best solution for both of us.
The manager knows to stop selling when the sale is over, so he turns to the cashier
and firmly states that this customer is going to only pay 1.5X of the amount on the
bill. 
&lt;p&gt;
I'm relieved that the issue resolved, yet still disappointed that it happened at all.
I'm out 0.5X, but I do have a few extra repairs on the car. Upon further review, I
think some of the repairs are a little suspect. For example, my car is perfect on
oil. It doesn't burn oil and my drive way is void of any oil spots. Why didn't I think
of that when the guy said the oil pan gasket was leaking on the phone? Arrrgg!! 
&lt;p&gt;
This is when Greg's term "trust, but verify" really became clear to me. My super smart
wife pointed out that I could have asked him to e-mail me the estimate. I also could
have asked him to call me back and leave the full estimate as a voice-mail on my phone
if they were email-impaired. The amount of money is large enough and use of my car
is important enough that I really should have been more diligent. I should have verified
the estimate instead of just trusting what I heard on the phone. 
&lt;p&gt;
Rats. Well, they say the awesome people can tell you all about their mistakes and
the incompetent never see their own mistakes. Here's one more thing on the pile that
I can learn from. I'm going to be riding the "trust, but verify" horse into the ground
for the next couple of weeks. Apologies, in advance, to all my teammates. 
&lt;p&gt;
I don't explain the identity of the repair shop or the amount here because you're
going to trust, but verify next time right? So, in that case, it doesn't matter who
I dealt with.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=c98c6a3b-380b-49e1-b3e7-14a8bd475500" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,c98c6a3b-380b-49e1-b3e7-14a8bd475500.aspx</comments>
      <category>learning</category>
      <category>observations</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=6e4a1627-605a-4720-a69d-eeaf09e44949</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,6e4a1627-605a-4720-a69d-eeaf09e44949.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,6e4a1627-605a-4720-a69d-eeaf09e44949.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6e4a1627-605a-4720-a69d-eeaf09e44949</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h3>
        </h3>
        <p>
By some cruel trick of nature, I've been surrounded by web content management systems
for the past several years. I've written several (who hasn't?) and stood up instances
of DotNetNuke, Windows SharePoint 2007, and now <a href="http://www.interwoven.com/components/page.jsp?topic=PRODUCT::TEAMSITE&amp;dcr=templatedata/profile/main/data/dcr-wcm-teamsite.xml" target="_blank">Interwoven
TeamSite</a>.
</p>
        <p>
I'm told Interwoven has been around for 14 years and they're currently on version
6.7.1 of their TeamSite product. This offering includes features for enterprise content
management (ECM) and the assorted adjacent technologies that simply must accompany
ECM in a large scale deployment. Since the beginning, their product has included version
control and workflow features. I'll describe a few core parts of Interwoven TeamSite
here.
</p>
        <h4>Source Control Repository
</h4>
        <p>
First off, developers will get a quick leg up if they simply know that TeamSite includes
a source control repository. It works like any other. You can get the latest source,
edit something, check it back in, compare versions, label a snapshot of the repository
as well as branching. There. You're farther ahead than I was when I got my first explanation,
about two years ago.
</p>
        <p>
Standards based developers can relish in the fact that they have carte blanche control
over the HTML and CSS sent down the wire to the browser. I'm talking about the production
site here, not the administration pages used to interact with TeamSite. Nearly everything
you'll do with TeamSite is done through a browser, providing that browser is IE or
Firefox. Sorry Safari, this car is just a two seater. Again, browser support for the
production site you're building is up to you - just talking about the TeamSite administration
pages here. You'll continue editing specific files in your favorite tool, such as
Visual Studio, Photoshop or TextMate. So once you get the subtle nuances of this source
control system in you're brain, the challenge is to build a compelling web site using
the same tools you have now; no silver bullets here.
</p>
        <p>
Its also worth noting that this is only a source control repository; not a web development
platform. You'll still need IIS, Apache, or some other web server technology to host
your site. Interwoven TeamSite is mature enough that it supports Windows, Unix and
Linux environments and several popular databases such as SQL Server and Oracle; just
what you'd expect from an enterprise content management system.
</p>
        <h4>FormsPublisher
</h4>
        <p>
Interwoven's TeamSite product includes a feature called FormsPublisher. This is useful
for scenarios where an information worker needs to contribute to the web site, but
lack HTML and CSS skills. This type of user can complete a form, let the system validate
it, and then press a button to have the system generate the equivalent HTML page.
The form can include validation, business logic, database queries or anything else
you can dream up. While an HTML expert would prefer their favorite text editor and
complete control to the HTML page. An information worker without HTML skills can now
edit an existing page, based on an customized form. Now the challenge shifts to having
the information worker select the appropriate form to build the page.
</p>
        <p>
A developer configures a set of files and folders to support this process. At a high
level, there are three parts in motion. The Data Capture Template (DCT) is an XML
file that describes how TeamSite should present the form to the information worker.
A Data Content Record (DCR) is an XML file that contains an instance of a form completed
by an information worker. You launch TeamSite, click File, New Form Entry and select
the form you want to complete. Next, the given form appears in the browser. The fields
of the form are defined by the DCT. After you click the Save button, the field values
are serialized into a DCR file. These files are organized in a collection of folders
on the TeamSite server; one folder per form. Each folder has a conventional set of
child folders to hold the DCR files as well as the presentation template file(s),
These are the files with the .tpl file extension.
</p>
        <p>
A presentation template converts a DCR into something else. Most of the time, at least
for me, that something else will be an HTML page. Imagine a single DCR file that contains
both public and private information for a company; perhaps the DCR contains public
information about a single product as well as private information for their tech support
staff. The DCR file can be send around via workflow for approval and the finally be
ran through both sets of presentation templates which results in two different HTML
files - one file is deployed to the public and the other file is kept on the Intranet.
Both files are assured of having the appropriate content via the approval process
and the presentation templates apply the correct branding and layout. This model supports
a good workflow model as well as good separation of design from content. Its just
one example of using the FormsPublisher in the enterprise.
</p>
        <p>
Since DCR files are just XML, it's relatively painless to import legacy data into
TeamSite. These imported XML files map to a given DCT, then they're translated into
HTML pages via a presentation template. For example, if you have the last 15 years
of press releases on the legacy system, you can import the existing information with
some batch processes and stand up a new TeamSite server pretty quick.
</p>
        <h4>Workflow
</h4>
        <p>
A workflow describes an automated business process. It can instruct an author to perform
an edit or add a new file to the site and manage the process of approvals, taking
a snapshot of the system for archival purposes and finally deployment. When a task
such as "Edit Content" or "Review Content" becomes active, an
e-mail can notify the appropriate party. When the work is completed, the assigned
person just pushes it through the hole. Reviewers can click "Accept" or
"Reject" after previewing the changes, they don't need to know the next
appropriate step in the process - its automated. The system tracks the state and flow
of information of the activities throughout the lifecycle according to the established
business rules approved by the given company rather than based on how the given employee
feels that particular day.
</p>
        <p>
TeamSite has always included a workflow mechanism, but I can only imagine how difficult
it was to develop them in the past. This latest version includes a Windows client
application that supports drag-and-drop editing of workflow designs. You can work
locally with workflows saved to your desktop in an offline mode, but you will eventually
need to save the workflow up to the TeamSite server via commands in the tool. Workflows
are serialized into XML files in the background, but its rare to look at the raw information.
The workflow designer application helps you do the things you would expect such as
setting up a series of tasks linked by arrows; some might be conditional based on
human interaction or automated entirely by Perl scripts, Java classes or some other
business logic.
</p>
        <p>
Its interesting that Interwoven prides itself on a large number of supported platforms
for the server product, but the Workflow designer client requires the Windows operating
system. As I understand it, some (or all) of the workflow client application was recently
purchased from another company. My hunch is the client application is written in C++
based on the look and feel as well as the OS requirement. Its a little clunky but
it gets the job done; I sure wouldn't want to hand code all of the XML it generates.
</p>
        <h4>Conclusion
</h4>
        <p>
Overall, I'm happy with my experiences thus far with TeamSite. The documentation is
rich, it has a thriving online developer community, and the paradigm isn't too hard
to grasp. At one point, I started getting bogged down with the massive about of XML
configuration files and customization points. After sleeping on it (and a stiff cup-o-coffee)
I realized that any other enterprise level application has a similar amount of customization.
Since TeamSite embraces a litany of platforms, it makes sense that they don't (or
haven't) invested a lot in slick little Windows GUI programs for configuration needs.
Why build a server GUI tools when Windows is only one of your supported OS platforms?
On the other hand, they could build a few more web based administration forms to get
around some of these XML file updates. Once I started tallying up how many configuration
pages I go through for Windows SharePoint, I stopped feeling like I was building my
own box and installing Linux and started thinking about the broader ideas and why
I was configuring the system instead of how - perhaps it just semantics, but I felt
better.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=6e4a1627-605a-4720-a69d-eeaf09e44949" />
      </body>
      <title>Interwoven TeamSite 6.7.1</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,6e4a1627-605a-4720-a69d-eeaf09e44949.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2007/11/05/InterwovenTeamSite671.aspx</link>
      <pubDate>Mon, 05 Nov 2007 18:29:32 GMT</pubDate>
      <description>&lt;h3&gt;
&lt;/h3&gt;
&lt;p&gt;
By some cruel trick of nature, I've been surrounded by web content management systems
for the past several years. I've written several (who hasn't?) and stood up instances
of DotNetNuke, Windows SharePoint 2007, and now &lt;a href="http://www.interwoven.com/components/page.jsp?topic=PRODUCT::TEAMSITE&amp;amp;dcr=templatedata/profile/main/data/dcr-wcm-teamsite.xml" target="_blank"&gt;Interwoven
TeamSite&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
I'm told Interwoven has been around for 14 years and they're currently on version
6.7.1 of their TeamSite product. This offering includes features for enterprise content
management (ECM) and the assorted adjacent technologies that simply must accompany
ECM in a large scale deployment. Since the beginning, their product has included version
control and workflow features. I'll describe a few core parts of Interwoven TeamSite
here.
&lt;/p&gt;
&lt;h4&gt;Source Control Repository
&lt;/h4&gt;
&lt;p&gt;
First off, developers will get a quick leg up if they simply know that TeamSite includes
a source control repository. It works like any other. You can get the latest source,
edit something, check it back in, compare versions, label a snapshot of the repository
as well as branching. There. You're farther ahead than I was when I got my first explanation,
about two years ago.
&lt;/p&gt;
&lt;p&gt;
Standards based developers can relish in the fact that they have carte blanche control
over the HTML and CSS sent down the wire to the browser. I'm talking about the production
site here, not the administration pages used to interact with TeamSite. Nearly everything
you'll do with TeamSite is done through a browser, providing that browser is IE or
Firefox. Sorry Safari, this car is just a two seater. Again, browser support for the
production site you're building is up to you - just talking about the TeamSite administration
pages here. You'll continue editing specific files in your favorite tool, such as
Visual Studio, Photoshop or TextMate. So once you get the subtle nuances of this source
control system in you're brain, the challenge is to build a compelling web site using
the same tools you have now; no silver bullets here.
&lt;/p&gt;
&lt;p&gt;
Its also worth noting that this is only a source control repository; not a web development
platform. You'll still need IIS, Apache, or some other web server technology to host
your site. Interwoven TeamSite is mature enough that it supports Windows, Unix and
Linux environments and several popular databases such as SQL Server and Oracle; just
what you'd expect from an enterprise content management system.
&lt;/p&gt;
&lt;h4&gt;FormsPublisher
&lt;/h4&gt;
&lt;p&gt;
Interwoven's TeamSite product includes a feature called FormsPublisher. This is useful
for scenarios where an information worker needs to contribute to the web site, but
lack HTML and CSS skills. This type of user can complete a form, let the system validate
it, and then press a button to have the system generate the equivalent HTML page.
The form can include validation, business logic, database queries or anything else
you can dream up. While an HTML expert would prefer their favorite text editor and
complete control to the HTML page. An information worker without HTML skills can now
edit an existing page, based on an customized form. Now the challenge shifts to having
the information worker select the appropriate form to build the page.
&lt;/p&gt;
&lt;p&gt;
A developer configures a set of files and folders to support this process. At a high
level, there are three parts in motion. The Data Capture Template (DCT) is an XML
file that describes how TeamSite should present the form to the information worker.
A Data Content Record (DCR) is an XML file that contains an instance of a form completed
by an information worker. You launch TeamSite, click File, New Form Entry and select
the form you want to complete. Next, the given form appears in the browser. The fields
of the form are defined by the DCT. After you click the Save button, the field values
are serialized into a DCR file. These files are organized in a collection of folders
on the TeamSite server; one folder per form. Each folder has a conventional set of
child folders to hold the DCR files as well as the presentation template file(s),
These are the files with the .tpl file extension.
&lt;/p&gt;
&lt;p&gt;
A presentation template converts a DCR into something else. Most of the time, at least
for me, that something else will be an HTML page. Imagine a single DCR file that contains
both public and private information for a company; perhaps the DCR contains public
information about a single product as well as private information for their tech support
staff. The DCR file can be send around via workflow for approval and the finally be
ran through both sets of presentation templates which results in two different HTML
files - one file is deployed to the public and the other file is kept on the Intranet.
Both files are assured of having the appropriate content via the approval process
and the presentation templates apply the correct branding and layout. This model supports
a good workflow model as well as good separation of design from content. Its just
one example of using the FormsPublisher in the enterprise.
&lt;/p&gt;
&lt;p&gt;
Since DCR files are just XML, it's relatively painless to import legacy data into
TeamSite. These imported XML files map to a given DCT, then they're translated into
HTML pages via a presentation template. For example, if you have the last 15 years
of press releases on the legacy system, you can import the existing information with
some batch processes and stand up a new TeamSite server pretty quick.
&lt;/p&gt;
&lt;h4&gt;Workflow
&lt;/h4&gt;
&lt;p&gt;
A workflow describes an automated business process. It can instruct an author to perform
an edit or add a new file to the site and manage the process of approvals, taking
a snapshot of the system for archival purposes and finally deployment. When a task
such as &amp;quot;Edit Content&amp;quot; or &amp;quot;Review Content&amp;quot; becomes active, an
e-mail can notify the appropriate party. When the work is completed, the assigned
person just pushes it through the hole. Reviewers can click &amp;quot;Accept&amp;quot; or
&amp;quot;Reject&amp;quot; after previewing the changes, they don't need to know the next
appropriate step in the process - its automated. The system tracks the state and flow
of information of the activities throughout the lifecycle according to the established
business rules approved by the given company rather than based on how the given employee
feels that particular day.
&lt;/p&gt;
&lt;p&gt;
TeamSite has always included a workflow mechanism, but I can only imagine how difficult
it was to develop them in the past. This latest version includes a Windows client
application that supports drag-and-drop editing of workflow designs. You can work
locally with workflows saved to your desktop in an offline mode, but you will eventually
need to save the workflow up to the TeamSite server via commands in the tool. Workflows
are serialized into XML files in the background, but its rare to look at the raw information.
The workflow designer application helps you do the things you would expect such as
setting up a series of tasks linked by arrows; some might be conditional based on
human interaction or automated entirely by Perl scripts, Java classes or some other
business logic.
&lt;/p&gt;
&lt;p&gt;
Its interesting that Interwoven prides itself on a large number of supported platforms
for the server product, but the Workflow designer client requires the Windows operating
system. As I understand it, some (or all) of the workflow client application was recently
purchased from another company. My hunch is the client application is written in C++
based on the look and feel as well as the OS requirement. Its a little clunky but
it gets the job done; I sure wouldn't want to hand code all of the XML it generates.
&lt;/p&gt;
&lt;h4&gt;Conclusion
&lt;/h4&gt;
&lt;p&gt;
Overall, I'm happy with my experiences thus far with TeamSite. The documentation is
rich, it has a thriving online developer community, and the paradigm isn't too hard
to grasp. At one point, I started getting bogged down with the massive about of XML
configuration files and customization points. After sleeping on it (and a stiff cup-o-coffee)
I realized that any other enterprise level application has a similar amount of customization.
Since TeamSite embraces a litany of platforms, it makes sense that they don't (or
haven't) invested a lot in slick little Windows GUI programs for configuration needs.
Why build a server GUI tools when Windows is only one of your supported OS platforms?
On the other hand, they could build a few more web based administration forms to get
around some of these XML file updates. Once I started tallying up how many configuration
pages I go through for Windows SharePoint, I stopped feeling like I was building my
own box and installing Linux and started thinking about the broader ideas and why
I was configuring the system instead of how - perhaps it just semantics, but I felt
better.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=6e4a1627-605a-4720-a69d-eeaf09e44949" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,6e4a1627-605a-4720-a69d-eeaf09e44949.aspx</comments>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=72bd7bf5-72cf-460d-b16e-6f2705559321</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,72bd7bf5-72cf-460d-b16e-6f2705559321.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,72bd7bf5-72cf-460d-b16e-6f2705559321.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=72bd7bf5-72cf-460d-b16e-6f2705559321</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been using Google Reader <a href="http://www.andrewdothay.net/PermaLink,guid,693e459e-caf1-488a-86c4-114960833dce.aspx" target="_blank">for
a while now</a> and I love it. Its very quick to launch with my <a href="http://www.bayden.com/SlickRun/" target="_blank">SlickRun</a> shortcut
of "gr" and it manages my current list of 96 RSS subscriptions very well. 
</p>
        <p>
In fact, I recently figured out that this application is perhaps one of the <strong>worst
web applications to use with the mouse</strong>. The mouse is such an impediment to
reading several posts efficiently. I launch Google Reader several times a day and
its common for me to have nearly 50 unread posts from over
30 RSS subscriptions at any given perusal session.
</p>
        <p>
Here are the Google Reader keyboard shortcuts I use on a regular basis.
</p>
        <ol>
          <li>
Click the "Show Updated" hyperlink in the left column to show only the RSS subscriptions
with unread posts 
</li>
          <li>
Click the first RSS subscription link of the list in the
left column (getting in the mood) 
</li>
          <li>
Click the first unread post of the list if the right column (tee it
up) 
</li>
          <li>
Press <strong>space bar</strong> to traverse multi-page posts <strong>and</strong> advance
to the next unread post for a given RSS subscription 
</li>
          <li>
When all the posts are read for a given RSS subscription, press <strong>Shift+N</strong> to
advance the highlight to the next RSS subscription of the list in the left column 
</li>
          <li>
Press <strong>Shift+O</strong> (this is my Oh face) to open the list of the new highlighted
RSS subscription 
</li>
          <li>
Press the <strong>space bar</strong> to traverse this new feed like the
previous RSS subscription 
</li>
        </ol>
        <p>
 
</p>
        <p>
 <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="314" alt="googlereader" src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/GoogleReaderKeyboardShortcuts_134B6/googlereader_ba731b6d-14fb-4def-9681-7b7e3eaa282f.png" width="500" border="0" /></p>
        <p>
To Summarize:
</p>
        <table cellspacing="0" cellpadding="4" border="1" unselectable="on">
          <tbody>
            <tr>
              <td>
                <strong>Space Bar</strong>
              </td>
              <td>
Scroll through a long post, then skip to next post when the last line of
current post is visible</td>
            </tr>
            <tr>
              <td>
                <strong>Shift + N</strong>
              </td>
              <td>
Highlight the next RSS subscription in the left column</td>
            </tr>
            <tr>
              <td>
                <strong>Shift + O</strong>
              </td>
              <td>
Open the list of posts for the highlighted RSS subscription</td>
            </tr>
          </tbody>
        </table>
        <p>
 There are a <a href="http://www.google.com/help/reader/faq.html#shortcuts" target="_blank">bunch
of other keyboard shortcuts</a> for Google Reader. These are the ones I use the most.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=72bd7bf5-72cf-460d-b16e-6f2705559321" />
      </body>
      <title>Google Reader Keyboard Shortcuts</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,72bd7bf5-72cf-460d-b16e-6f2705559321.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2007/07/19/GoogleReaderKeyboardShortcuts.aspx</link>
      <pubDate>Thu, 19 Jul 2007 04:57:20 GMT</pubDate>
      <description>&lt;p&gt;
I've been using Google Reader &lt;a href="http://www.andrewdothay.net/PermaLink,guid,693e459e-caf1-488a-86c4-114960833dce.aspx" target="_blank"&gt;for
a while now&lt;/a&gt; and I love it. Its very quick to launch with my &lt;a href="http://www.bayden.com/SlickRun/" target="_blank"&gt;SlickRun&lt;/a&gt; shortcut
of "gr" and it manages my current&amp;nbsp;list of 96 RSS subscriptions very well. 
&lt;/p&gt;
&lt;p&gt;
In fact, I recently figured out&amp;nbsp;that this application is perhaps one of the &lt;strong&gt;worst
web applications to use with the mouse&lt;/strong&gt;. The mouse is such an impediment to
reading several posts efficiently. I launch Google Reader several times a day and
its&amp;nbsp;common&amp;nbsp;for me to&amp;nbsp;have nearly&amp;nbsp;50 unread&amp;nbsp;posts from over
30&amp;nbsp;RSS subscriptions at any given perusal session.
&lt;/p&gt;
&lt;p&gt;
Here are the Google Reader keyboard shortcuts&amp;nbsp;I use on a regular basis.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Click the "Show Updated" hyperlink in the left column&amp;nbsp;to show only the RSS subscriptions
with unread posts 
&lt;li&gt;
Click the&amp;nbsp;first RSS subscription link&amp;nbsp;of&amp;nbsp;the&amp;nbsp;list&amp;nbsp;in the
left column (getting in the mood) 
&lt;li&gt;
Click the&amp;nbsp;first unread&amp;nbsp;post&amp;nbsp;of the list if the right column (tee it
up) 
&lt;li&gt;
Press &lt;strong&gt;space bar&lt;/strong&gt; to&amp;nbsp;traverse multi-page posts &lt;strong&gt;and&lt;/strong&gt; advance
to the next unread&amp;nbsp;post for a given&amp;nbsp;RSS subscription 
&lt;li&gt;
When all the&amp;nbsp;posts are read for a given RSS subscription, press &lt;strong&gt;Shift+N&lt;/strong&gt; to
advance the highlight to the next RSS subscription&amp;nbsp;of the list in the left column 
&lt;li&gt;
Press &lt;strong&gt;Shift+O&lt;/strong&gt; (this is my Oh face) to open the list of the new highlighted
RSS subscription 
&lt;li&gt;
Press the &lt;strong&gt;space bar&lt;/strong&gt; to&amp;nbsp;traverse this&amp;nbsp;new feed like the
previous RSS subscription 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="314" alt="googlereader" src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/GoogleReaderKeyboardShortcuts_134B6/googlereader_ba731b6d-14fb-4def-9681-7b7e3eaa282f.png" width="500" border="0"&gt;
&lt;/p&gt;
&lt;p&gt;
To Summarize:
&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="4" border="1" unselectable="on"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Space&amp;nbsp;Bar&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
Scroll&amp;nbsp;through a long post, then skip to next post&amp;nbsp;when the last line of
current post is visible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Shift&amp;nbsp;+&amp;nbsp;N&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
Highlight the next RSS subscription in the left column&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Shift&amp;nbsp;+&amp;nbsp;O&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;
Open the list of posts for the highlighted RSS subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;
&amp;nbsp;There are a &lt;a href="http://www.google.com/help/reader/faq.html#shortcuts" target="_blank"&gt;bunch
of other keyboard shortcuts&lt;/a&gt; for Google Reader. These are the ones I use the most.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=72bd7bf5-72cf-460d-b16e-6f2705559321" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,72bd7bf5-72cf-460d-b16e-6f2705559321.aspx</comments>
      <category>blogging</category>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=69771599-2192-437f-88da-704cc5f6cde5</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,69771599-2192-437f-88da-704cc5f6cde5.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,69771599-2192-437f-88da-704cc5f6cde5.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=69771599-2192-437f-88da-704cc5f6cde5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here's the <a href="http://www.andrewdothay.net/blog/content/binary/2007pdxcodecamp.zip" target="_blank">link
to my slide deck and code</a> that I presented at the Portland Code Camp. Organizing
this content and presenting it was a ton of fun and great way to dive into WCF and
CardSpace. My laptop had some problems chatting with the projector (guess it wasn't
using WS-* protocols) so my backup plan of toting my own projector around all day
proved worthwhile. I did have to run a bit and scraped a message level encryption
demo and all of the OpenID demo due to time constraints. :(
</p>
        <p>
Jason Mauer recorded the session though, so I'm curious to see how well it looks from
the tripod.
</p>
        <p>
Now I'm on the east coast and 8:30am comes a little earlier in the morning here than
it does on the west coast. Its the first break in the Master WCF class with Brian
Noyes and we've already had one Carl Franklin siting. Booya!! I'm hoping I can get
a tour of Pwop Studios sometime this week while I'm in New London.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=69771599-2192-437f-88da-704cc5f6cde5" />
      </body>
      <title>2007 PDX Code Camp</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,69771599-2192-437f-88da-704cc5f6cde5.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2007/05/21/2007PDXCodeCamp.aspx</link>
      <pubDate>Mon, 21 May 2007 13:51:25 GMT</pubDate>
      <description>&lt;p&gt;
Here's the &lt;a href="http://www.andrewdothay.net/blog/content/binary/2007pdxcodecamp.zip" target="_blank"&gt;link
to my slide deck and code&lt;/a&gt; that I presented at the Portland Code Camp. Organizing
this content and presenting it was a ton of fun and great way to dive into WCF and
CardSpace. My laptop had some problems chatting with the projector (guess it wasn't
using WS-* protocols) so my backup plan of toting my own projector around all day
proved worthwhile. I did have to run a bit and scraped a message level encryption
demo and all of the OpenID demo due to time constraints. :(
&lt;/p&gt;
&lt;p&gt;
Jason Mauer recorded the session though, so I'm curious to see how well it looks from
the tripod.
&lt;/p&gt;
&lt;p&gt;
Now I'm on the east coast and 8:30am comes a little earlier in the morning here than
it does on the west coast. Its the first break in the Master WCF class with Brian
Noyes and we've already had one Carl Franklin siting. Booya!! I'm hoping I can get
a tour of Pwop Studios sometime this week while I'm in New London.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=69771599-2192-437f-88da-704cc5f6cde5" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,69771599-2192-437f-88da-704cc5f6cde5.aspx</comments>
      <category>CardSpace</category>
      <category>events</category>
      <category>learning</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=e443cb44-3dec-4dcf-8433-e0f6234ab290</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,e443cb44-3dec-4dcf-8433-e0f6234ab290.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,e443cb44-3dec-4dcf-8433-e0f6234ab290.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e443cb44-3dec-4dcf-8433-e0f6234ab290</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 I'm gearing up for my week-long excursion to New London, Connecticut in late
May for some Windows Communication Foundation training at <a href="http://training.franklins.net/" target="_blank">Carl
Franklin's house</a>. This is going to be awesome. <a href="http://www.softinsight.com/bnoyes/" target="_blank">Brian
Noyse</a> is teaching it. Here's a nifty fact from Brian's profile:
</p>
        <blockquote>
          <p>
            <em>Brian got started with programming to stimulate his brain while flying </em>
            <em>F-14
Tomcats </em>
            <em>in the Navy, graduating from Top Gun and U.S. Naval Test Pilot School.</em>
          </p>
        </blockquote>
        <p>
          <img height="130" hspace="8" src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/WindowsCommunicationFoundation_139FA/WCF-Step-By-Step%5B2%5D.gif" width="130" align="right" />In
preparation for the class, I selected <a href="http://www.microsoft.com/MSPress/books/10022.aspx" target="_blank">WCF
Step by Step</a> by John Sharp from MS Press. This is a solid book that nicely augments
the <a href="http://www.dotnetrocks.com/default.aspx?showNum=222" target="_blank">podcast with
MLB</a> that I've easily listened to over twenty times. Its so cool to pick up new
things every time I listen to it on my Treo. 
</p>
        <p>
I've been listening to Carl and Richard's podcasts for a while now - literally
years I suppose. I heard that Carl is <a href="http://www.intellectualhedonism.com/2007/03/07/TwoDNRShowsAWeekTelerikBecomesFranklinsNETGoldSponsorStudioRenovationsAndPublicClassesMoveToAtlanta.aspx" target="_blank">moving
his public ILT training</a> over to <a href="http://dunntraining.com/" target="_blank">Mark
Dunn's place</a> in Atlanta to make space for more podcast studios. So this sounded
like one of the last opportunities to catch a flight to the east coast, albeit the
nearby Radisson, <a href="http://photos.pwop.com/studio_renovation/" target="_blank">for
good reason</a>.
</p>
        <p>
          <img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="156" hspace="8" src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/WindowsCommunicationFoundation_139FA/learning-wcf-mlb%5B1%5D.jpg" width="120" align="left" border="0" /> Now
that its early May and MLB's book is out, I suspect I'll head over to Powell's someday
soon pick up a copy of <a href="http://www.powells.com/biblio/62-9780596101626-0" target="_blank">Learning
WCF: A Hands On Guide</a>. I have a layover in Chicago and only so much battery life.
Have you ever tried to find an outlet at O'Hare to recharge? WTF!?!?!?!
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=e443cb44-3dec-4dcf-8433-e0f6234ab290" />
      </body>
      <title>Windows Communication Foundation</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,e443cb44-3dec-4dcf-8433-e0f6234ab290.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2007/05/05/WindowsCommunicationFoundation.aspx</link>
      <pubDate>Sat, 05 May 2007 05:19:45 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp;I'm gearing up for my week-long excursion to New London, Connecticut in late
May for some Windows Communication Foundation training at &lt;a href="http://training.franklins.net/" target=_blank&gt;Carl
Franklin's house&lt;/a&gt;. This is going to be awesome. &lt;a href="http://www.softinsight.com/bnoyes/" target=_blank&gt;Brian
Noyse&lt;/a&gt; is teaching it. Here's a nifty fact from Brian's profile:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Brian got started with programming to stimulate his brain while flying &lt;/em&gt;&lt;em&gt;F-14
Tomcats &lt;/em&gt;&lt;em&gt;in the Navy, graduating from Top Gun and U.S. Naval Test Pilot School.&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;img height=130 hspace=8 src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/WindowsCommunicationFoundation_139FA/WCF-Step-By-Step%5B2%5D.gif" width=130 align=right&gt;In
preparation for the class, I selected &lt;a href="http://www.microsoft.com/MSPress/books/10022.aspx" target=_blank&gt;WCF
Step by Step&lt;/a&gt; by John Sharp from MS Press. This is a solid book that nicely augments
the &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=222" target=_blank&gt;podcast&amp;nbsp;with
MLB&lt;/a&gt; that I've easily listened to over twenty times. Its so cool to pick up new
things every time I listen to it on my Treo. 
&lt;/p&gt;
&lt;p&gt;
I've been listening to&amp;nbsp;Carl and Richard's podcasts for a while now - literally
years I suppose. I heard that&amp;nbsp;Carl is&amp;nbsp;&lt;a href="http://www.intellectualhedonism.com/2007/03/07/TwoDNRShowsAWeekTelerikBecomesFranklinsNETGoldSponsorStudioRenovationsAndPublicClassesMoveToAtlanta.aspx" target=_blank&gt;moving
his public ILT training&lt;/a&gt;&amp;nbsp;over to &lt;a href="http://dunntraining.com/" target=_blank&gt;Mark
Dunn's place&lt;/a&gt; in Atlanta to make space for more podcast studios. So this sounded
like one of the last opportunities to catch a flight to the east coast, albeit&amp;nbsp;the
nearby Radisson, &lt;a href="http://photos.pwop.com/studio_renovation/" target=_blank&gt;for
good reason&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=156 hspace=8 src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/WindowsCommunicationFoundation_139FA/learning-wcf-mlb%5B1%5D.jpg" width=120 align=left border=0&gt; Now
that its early May and MLB's book is out, I suspect I'll head over to Powell's someday
soon pick up a copy of &lt;a href="http://www.powells.com/biblio/62-9780596101626-0" target=_blank&gt;Learning
WCF: A Hands On Guide&lt;/a&gt;. I have a layover in Chicago and only so much battery life.
Have you ever tried to find an outlet at O'Hare to recharge? WTF!?!?!?!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=e443cb44-3dec-4dcf-8433-e0f6234ab290" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,e443cb44-3dec-4dcf-8433-e0f6234ab290.aspx</comments>
      <category>learning</category>
      <category>WCF</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=4b8d7183-369e-41b9-b242-53f13d1e9b5e</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,4b8d7183-369e-41b9-b242-53f13d1e9b5e.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,4b8d7183-369e-41b9-b242-53f13d1e9b5e.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=4b8d7183-369e-41b9-b242-53f13d1e9b5e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN: 0px 20px 10px 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="206" alt="Silverlight Samples In Action" src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/SilverlightCramSession_134E2/sliverlight1%5B9%5D.png" width="219" align="left" border="0" /> For
no particular reason, I decided to make this weekend a <a href="http://www.microsoft.com/silverlight/" target="_blank">Silverlight</a> Cram
Session. Two of my fellow developers are on a plane (and perhaps have already started
the party) at <a href="http://www.visitmix.com/" target="_blank">MIX07</a>. 
</p>
        <p>
From everything that's been said in the prior two weeks, I expect some pretty sweet
announcments at MIX. My friend, <a href="http://www.morks.org/" target="_blank">Erik</a>,
is also getting ramped up on Silverlight. He presented at Innotech and is giving v2
at the <a href="http://pdx.techevents.info/codecamp/3/default.aspx" target="_blank">PDX
Code Camp</a>. 
</p>
        <p>
So, I downloaded the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c744cbb8-d4d9-4bf9-ad5c-eef36e064911&amp;displaylang=en" target="_blank">Feb
2007 Silverlight SDK</a> and the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=515684FD-C8A0-4588-88C5-54CE224925E7&amp;displaylang=en" target="_blank">Feb
2007 CTP Sample Pack</a>. For some odd reason, I feel that they are already obsolete.
However, they served their purpose quite well. The WPF/E Quickstart that comes with
the SDK rocks - you should just block out some time and go through it. The author
of this content did an spectacular job of explaining new technology in a way that
just worked. I can't recall anything that was more well written. Its just brilliant.
</p>
        <p>
I bit it off in 30 minute chunks and devoured the entire Quickstart samples on Saturday
afternoon. I started writing each example manually, and then by the middle, I
succumbed to the clip-board inheritence methodology.
</p>
        <p>
It's weird to think back to Friday when I had just a conceptual idea of what WPF and
Silverlight does from various podcasts on Channel9, Hanselminutes, DotNetRocks
and DNRTV. Now, after doing it for several hours, I get it. 
</p>
        <p>
Sweet.
</p>
        <p>
This is one of the biggest reasons to love my job; and boy, do I. Good stuff
like this gives you the will to come back for more, day after day, week after week.
</p>
        <p>
I'm still in a mode where NotePad2 or VS.Net 2005 is my best friend for XAML. Perhaps
I'll shed that kinship and move on to Expressions later. For now, I'll just bask in
the glory of learning something new and wondering how I can implement various types
of media experiences with lines, rectangles, elipsi (pural?), polygons, polylines,
and paths.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=4b8d7183-369e-41b9-b242-53f13d1e9b5e" />
      </body>
      <title>Silverlight Cram Session</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,4b8d7183-369e-41b9-b242-53f13d1e9b5e.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2007/04/30/SilverlightCramSession.aspx</link>
      <pubDate>Mon, 30 Apr 2007 04:58:24 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN: 0px 20px 10px 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=206 alt="Silverlight Samples In Action" src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/SilverlightCramSession_134E2/sliverlight1%5B9%5D.png" width=219 align=left border=0&gt; For
no particular reason,&amp;nbsp;I decided to make this weekend a &lt;a href="http://www.microsoft.com/silverlight/" target=_blank&gt;Silverlight&lt;/a&gt; Cram
Session. Two of my fellow developers are on a plane (and perhaps have already started
the party) at &lt;a href="http://www.visitmix.com/" target=_blank&gt;MIX07&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
From everything that's been said in the prior two weeks, I expect some pretty sweet
announcments at MIX. My friend, &lt;a href="http://www.morks.org/" target=_blank&gt;Erik&lt;/a&gt;,
is also getting ramped up on Silverlight. He presented at Innotech and is giving v2
at the &lt;a href="http://pdx.techevents.info/codecamp/3/default.aspx" target=_blank&gt;PDX
Code Camp&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
So, I downloaded the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c744cbb8-d4d9-4bf9-ad5c-eef36e064911&amp;amp;displaylang=en" target=_blank&gt;Feb
2007 Silverlight SDK&lt;/a&gt;&amp;nbsp;and the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=515684FD-C8A0-4588-88C5-54CE224925E7&amp;amp;displaylang=en" target=_blank&gt;Feb
2007 CTP Sample Pack&lt;/a&gt;. For some odd reason, I feel that they are already obsolete.
However, they served their purpose quite well. The WPF/E Quickstart that comes with
the SDK rocks - you should just block out some time and go through it. The author
of this content did an spectacular job of explaining new technology in a way that
just worked. I can't recall anything that was more well written. Its just brilliant.
&lt;/p&gt;
&lt;p&gt;
I bit it off in 30 minute chunks and devoured the entire Quickstart samples on Saturday
afternoon. I started writing each&amp;nbsp;example manually, and then by the middle, I
succumbed to the clip-board inheritence methodology.
&lt;/p&gt;
&lt;p&gt;
It's weird to think back to Friday when I had just a conceptual idea of what WPF and
Silverlight&amp;nbsp;does from various podcasts on Channel9, Hanselminutes, DotNetRocks
and DNRTV. Now, after doing it for several hours, I get it. 
&lt;/p&gt;
&lt;p&gt;
Sweet.
&lt;/p&gt;
&lt;p&gt;
This is one of the biggest reasons to&amp;nbsp;love my job; and boy, do I. Good stuff
like this gives you the will to come back for more, day after day, week after week.
&lt;/p&gt;
&lt;p&gt;
I'm still in a mode where NotePad2 or VS.Net 2005 is my best friend for XAML. Perhaps
I'll shed that kinship and move on to Expressions later. For now, I'll just bask in
the glory of learning something new and wondering how I can implement various types
of media experiences with lines, rectangles, elipsi (pural?),&amp;nbsp;polygons, polylines,
and paths.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=4b8d7183-369e-41b9-b242-53f13d1e9b5e" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,4b8d7183-369e-41b9-b242-53f13d1e9b5e.aspx</comments>
      <category>learning</category>
      <category>Silverlight</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=63b89405-d50d-4ff6-b1af-351b5f1e55a6</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,63b89405-d50d-4ff6-b1af-351b5f1e55a6.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,63b89405-d50d-4ff6-b1af-351b5f1e55a6.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=63b89405-d50d-4ff6-b1af-351b5f1e55a6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was chatting with my pal <a href="http://whitepdx.com/blogs/kelly/default.aspx" target="_blank">Kelly</a> at
work last week about code snippets. This weekend, I had a pile of dirty dishes to
clean, so I fired up my laptop and downloaded the archived <a href="http://www.dotnetrocks.com/default.aspx?showNum=128" target="_blank">DotNetRocks
interview with Michael Palermo</a> on code snippets. Before I knew it, the dishes
were clean and I had refresher on code snippets! 
</p>
        <p>
I took a look at Palermo's site, <a title="http://www.gotcodesnippets.com/" href="http://www.gotcodesnippets.com">www.gotcodesnippets.com</a>.
I was looking for some snippets I'd could install. I downloaded one that
creates a property whose value is stored in the ASP.Net viewstate. I do that technique
quite a bit, so it'll be fun to hit ctrl+k+x to run that snippet.
</p>
        <p>
Next, I was interested in writing one by myself, just to see what it was like. I had
downloaded the <a href="http://www.gotcodesnippets.com/1109.snippet" target="_blank">ternary
code snippet</a>, but I wasn't to warm and fuzzy about it. The snippet ought to have
given me the opportunity to type in the variables using the special code snippet mode
before reverting back to standard mode in Visual Studio. So, I grabbed their code,
made a few changes and now creates a line of code with a ternary operator in it -
just how I like. Here' the snippet that I dropped into my snippet folder.
</p>
        <p>
          <strong>
            <em>Folder:</em>
          </strong> \My Documents\Visual Studio 2005\Code Snippets\Visual
C#\My Code Snippets
</p>
        <p>
          <strong>
            <em>ternary.snippet XML File:</em>
          </strong>
        </p>
        <p>
        </p>
        <pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"&gt;
   &lt;CodeSnippet Format="1.0.0"&gt;
      &lt;Header&gt;
         &lt;Title&gt;Ternary&lt;/Title&gt;
         &lt;Shortcut&gt;ter&lt;/Shortcut&gt;
         &lt;Description&gt;Custom code snippet for ternary operator&lt;/Description&gt;
         &lt;Author&gt;andrewdothay&lt;/Author&gt;
         &lt;SnippetTypes&gt;
            &lt;SnippetType&gt;Expansion&lt;/SnippetType&gt;
         &lt;/SnippetTypes&gt;
      &lt;/Header&gt;
      &lt;Snippet&gt;
         &lt;Declarations&gt;
             &lt;Literal&gt;
                 &lt;ID&gt;result&lt;/ID&gt;
                 &lt;ToolTip&gt;Replace with the field or property that will recieve the value&lt;/ToolTip&gt;
                 &lt;Default&gt;result&lt;/Default&gt;
             &lt;/Literal&gt;
             &lt;Literal&gt;
                 &lt;ID&gt;expression&lt;/ID&gt;
                 &lt;ToolTip&gt;Replace with the expression to compare&lt;/ToolTip&gt;
                 &lt;Default&gt;expression&lt;/Default&gt;
             &lt;/Literal&gt;
             &lt;Literal&gt;
                 &lt;ID&gt;trueValue&lt;/ID&gt;
                 &lt;ToolTip&gt;Replace with the value if the expression is true&lt;/ToolTip&gt;
                 &lt;Default&gt;trueValue&lt;/Default&gt;
             &lt;/Literal&gt;
             &lt;Literal&gt;
                 &lt;ID&gt;falseValue&lt;/ID&gt;
                 &lt;ToolTip&gt;Replace with the value if the expression is false&lt;/ToolTip&gt;
                 &lt;Default&gt;falseValue&lt;/Default&gt;
             &lt;/Literal&gt;
         &lt;/Declarations&gt;
         &lt;Code Language="csharp"&gt;
            &lt;![CDATA[ $result$ = ( $expression$ ) ? $trueValue$ : $falseValue$;$end$]]&gt;
         &lt;/Code&gt;
      &lt;/Snippet&gt;
   &lt;/CodeSnippet&gt;
&lt;/CodeSnippets&gt;
</pre>
        <p>
This snippet uses four variables. The &lt;Code&gt; element contains placeholders for
the line that will be emitted by the code snippet. The "$" symbol surrounds the variable
so its easily identifiable by the snippet engine. When Visual Studio is in the special
mode, I can tab between the variable fields to enter the value, then hit tab+tab to
switch back to normal view after I've entered in the customizations. Sweet!
</p>
        <p>
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
</p>
        <p>
I just found this <a href="http://channel9.msdn.com/Showpost.aspx?postid=295242" target="_blank">four
minute screencast</a> on Channel 9 too! She does an excellent job of showing one up
close.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=63b89405-d50d-4ff6-b1af-351b5f1e55a6" />
      </body>
      <title>Writing Custom Code Snippets</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,63b89405-d50d-4ff6-b1af-351b5f1e55a6.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2007/04/01/WritingCustomCodeSnippets.aspx</link>
      <pubDate>Sun, 01 Apr 2007 23:51:09 GMT</pubDate>
      <description>&lt;p&gt;
I was chatting with my pal &lt;a href="http://whitepdx.com/blogs/kelly/default.aspx" target="_blank"&gt;Kelly&lt;/a&gt; at
work last week about code snippets. This weekend, I had a pile of dirty dishes to
clean, so I fired up my laptop and downloaded the archived &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=128" target="_blank"&gt;DotNetRocks
interview with Michael Palermo&lt;/a&gt; on code snippets. Before I knew it, the dishes
were clean and I had refresher on code snippets! 
&lt;/p&gt;
&lt;p&gt;
I took a look at Palermo's site, &lt;a title="http://www.gotcodesnippets.com/" href="http://www.gotcodesnippets.com"&gt;www.gotcodesnippets.com&lt;/a&gt;.
I was looking for some&amp;nbsp;snippets I'd&amp;nbsp;could install. I downloaded one that
creates a property whose value is stored in the ASP.Net viewstate. I do that technique
quite a bit, so it'll be fun to hit ctrl+k+x to run that snippet.
&lt;/p&gt;
&lt;p&gt;
Next, I was interested in writing one by myself, just to see what it was like. I had
downloaded the &lt;a href="http://www.gotcodesnippets.com/1109.snippet" target="_blank"&gt;ternary
code snippet&lt;/a&gt;, but I wasn't to warm and fuzzy about it. The snippet ought to have
given me the opportunity to type in the variables using the special code snippet mode
before reverting back to standard mode in Visual Studio. So, I grabbed their code,
made a few changes and now creates a line of code with a ternary operator in it -
just how I like. Here' the snippet that I dropped into my snippet folder.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;Folder:&lt;/em&gt;&lt;/strong&gt; \My Documents\Visual Studio 2005\Code Snippets\Visual
C#\My Code Snippets
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;ternary.snippet XML File:&lt;/em&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"&amp;gt;
   &amp;lt;CodeSnippet Format="1.0.0"&amp;gt;
      &amp;lt;Header&amp;gt;
         &amp;lt;Title&amp;gt;Ternary&amp;lt;/Title&amp;gt;
         &amp;lt;Shortcut&amp;gt;ter&amp;lt;/Shortcut&amp;gt;
         &amp;lt;Description&amp;gt;Custom code snippet for ternary operator&amp;lt;/Description&amp;gt;
         &amp;lt;Author&amp;gt;andrewdothay&amp;lt;/Author&amp;gt;
         &amp;lt;SnippetTypes&amp;gt;
            &amp;lt;SnippetType&amp;gt;Expansion&amp;lt;/SnippetType&amp;gt;
         &amp;lt;/SnippetTypes&amp;gt;
      &amp;lt;/Header&amp;gt;
      &amp;lt;Snippet&amp;gt;
         &amp;lt;Declarations&amp;gt;
             &amp;lt;Literal&amp;gt;
                 &amp;lt;ID&amp;gt;result&amp;lt;/ID&amp;gt;
                 &amp;lt;ToolTip&amp;gt;Replace with the field or property that will recieve the value&amp;lt;/ToolTip&amp;gt;
                 &amp;lt;Default&amp;gt;result&amp;lt;/Default&amp;gt;
             &amp;lt;/Literal&amp;gt;
             &amp;lt;Literal&amp;gt;
                 &amp;lt;ID&amp;gt;expression&amp;lt;/ID&amp;gt;
                 &amp;lt;ToolTip&amp;gt;Replace with the expression to compare&amp;lt;/ToolTip&amp;gt;
                 &amp;lt;Default&amp;gt;expression&amp;lt;/Default&amp;gt;
             &amp;lt;/Literal&amp;gt;
             &amp;lt;Literal&amp;gt;
                 &amp;lt;ID&amp;gt;trueValue&amp;lt;/ID&amp;gt;
                 &amp;lt;ToolTip&amp;gt;Replace with the value if the expression is true&amp;lt;/ToolTip&amp;gt;
                 &amp;lt;Default&amp;gt;trueValue&amp;lt;/Default&amp;gt;
             &amp;lt;/Literal&amp;gt;
             &amp;lt;Literal&amp;gt;
                 &amp;lt;ID&amp;gt;falseValue&amp;lt;/ID&amp;gt;
                 &amp;lt;ToolTip&amp;gt;Replace with the value if the expression is false&amp;lt;/ToolTip&amp;gt;
                 &amp;lt;Default&amp;gt;falseValue&amp;lt;/Default&amp;gt;
             &amp;lt;/Literal&amp;gt;
         &amp;lt;/Declarations&amp;gt;
         &amp;lt;Code Language="csharp"&amp;gt;
            &amp;lt;![CDATA[ $result$ = ( $expression$ ) ? $trueValue$ : $falseValue$;$end$]]&amp;gt;
         &amp;lt;/Code&amp;gt;
      &amp;lt;/Snippet&amp;gt;
   &amp;lt;/CodeSnippet&amp;gt;
&amp;lt;/CodeSnippets&amp;gt;
&lt;/pre&gt;
&lt;p&gt;
This snippet uses four variables. The &amp;lt;Code&amp;gt; element contains placeholders for
the line that will be emitted by the code snippet. The "$" symbol surrounds the variable
so its easily identifiable by the snippet engine. When Visual Studio is in the special
mode, I can tab between the variable fields to enter the value, then hit tab+tab to
switch back to normal view after I've entered in the customizations. Sweet!
&lt;/p&gt;
&lt;p&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;
&lt;/p&gt;
&lt;p&gt;
I just found this &lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=295242" target="_blank"&gt;four
minute screencast&lt;/a&gt; on Channel 9 too! She does an excellent job of showing one up
close.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=63b89405-d50d-4ff6-b1af-351b5f1e55a6" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,63b89405-d50d-4ff6-b1af-351b5f1e55a6.aspx</comments>
      <category>learning</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=9e1c8ecf-5f00-4164-ae86-bc74621429b4</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,9e1c8ecf-5f00-4164-ae86-bc74621429b4.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,9e1c8ecf-5f00-4164-ae86-bc74621429b4.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9e1c8ecf-5f00-4164-ae86-bc74621429b4</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I recently became aware of the "??" operator in C#. I guess it doesn't have a real
name like the ternary operator that I've long been a fan of using. I'll call it the
WTF operator until I learn a better (more popular) name. Let's take a look at the
"What The <a href="mailto:#$@#%">#$@#%</a>@#" operator in action:
</p>
        <p style="COLOR: #fff; BACKGROUND-COLOR: #666">
        </p>
        <pre>public int PageTabId
{
   get { return Convert.ToInt32(Request.QueryString["PageTabId"] ?? "-1"); }
}</pre>
        <p>
        </p>
        <p>
Per the <a href="http://msdn2.microsoft.com/en-us/library/ms173224.aspx" target="_blank">MSDN
reference</a>, the WTF operator inspects the value on the left side of the "??".
If it's null, the value on the right is returned. If its not null, the value on the
left is returned. Its a lot like IsNull in T-SQL. The code example above is just a
simple helper property for an ASP.Net page. The property looks for a querystring value.
If its there, the value is cast as an integer and returned to the caller. If its not
in the querystring, the default integer value of -1 is returned.
</p>
        <p>
I've been using the ternary operator for a while. Here's the same property as above,
but uses the ternary operator instead. Its more verbose than WTF, but still one line
of code.
</p>
        <p style="COLOR: #fff; BACKGROUND-COLOR: #666">
        </p>
        <pre>public int PageTabId
{
   get 
   { 
      return Request.QueryString["PageTabId"] != null 
         ? Convert.ToInt32( Request.QueryString["PageTabId"] ) : -1; 
   }
}</pre>
        <p>
        </p>
        <p>
I love writing WTF all over my code!
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=9e1c8ecf-5f00-4164-ae86-bc74621429b4" />
      </body>
      <title>C# Operators</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,9e1c8ecf-5f00-4164-ae86-bc74621429b4.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2007/04/01/COperators.aspx</link>
      <pubDate>Sun, 01 Apr 2007 23:29:02 GMT</pubDate>
      <description>&lt;p&gt;
I recently became aware of the "??" operator in C#. I guess it doesn't have a real
name like the ternary operator that I've long been a fan of using. I'll call it the
WTF operator until I learn a better (more popular) name. Let's take a look at the
"What The &lt;a href="mailto:#$@#%"&gt;#$@#%&lt;/a&gt;@#" operator in action:
&lt;/p&gt;
&lt;p style="COLOR: #fff; BACKGROUND-COLOR: #666"&gt;
&lt;pre&gt;public int PageTabId
{
   get { return Convert.ToInt32(Request.QueryString["PageTabId"] ?? "-1"); }
}&lt;/pre&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
Per the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms173224.aspx" target=_blank&gt;MSDN
reference&lt;/a&gt;, the&amp;nbsp;WTF operator inspects the value on the left side of the "??".
If it's null, the value on the right is returned. If its not null, the value on the
left is returned. Its a lot like IsNull in T-SQL. The code example above is just a
simple helper property for an ASP.Net page. The property looks for a querystring value.
If its there, the value is cast as an integer and returned to the caller. If its not
in the querystring, the default integer value of -1 is returned.
&lt;/p&gt;
&lt;p&gt;
I've been using the ternary operator for a while. Here's the same property as above,
but uses the ternary operator instead. Its more verbose than WTF, but still one line
of code.
&lt;/p&gt;
&lt;p style="COLOR: #fff; BACKGROUND-COLOR: #666"&gt;
&lt;pre&gt;public int PageTabId
{
   get 
   { 
      return Request.QueryString["PageTabId"] != null 
         ? Convert.ToInt32( Request.QueryString["PageTabId"] ) : -1; 
   }
}&lt;/pre&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
I love writing WTF all over my code!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=9e1c8ecf-5f00-4164-ae86-bc74621429b4" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,9e1c8ecf-5f00-4164-ae86-bc74621429b4.aspx</comments>
      <category>asp.net</category>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=7edd54c5-41af-46ea-958e-ec2c26432115</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,7edd54c5-41af-46ea-958e-ec2c26432115.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,7edd54c5-41af-46ea-958e-ec2c26432115.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7edd54c5-41af-46ea-958e-ec2c26432115</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I watched episodes #1 and #2 of the Developer, Meet Server series on <a href="http://channel9.msdn.com/ShowPost.aspx?PostID=296861" target="_blank">Channel
9</a>. Jason Olson is a phenomenal presenter. There are so many switches to flip in
the Vista, Longhorn and WCF stack that it can make your head spin. Jason explains
the technology really well so the act of shoving more knowledge in my head is less
painless.
</p>
        <p>
The first episode explained how Vista can take advantage of Transactional NTFS (TxF).
The concept is really simple but the operating system has to make some incredible
leaps to provide this feature. TxF provides full ACID support for writing files
to disk. Jason mentions this scenario that benefits from TxF support in
the video: 
</p>
        <p>
          <em>You write a large file to disk and write meta data of the file to SQL
Server. This TxF technology can increase your confidence that the database and
the document are always in sync. </em>
        </p>
        <p>
We've database transactions for a while - seems odd that its taking so long to
do this at a file level... easy for me to say I suppose. In the video it sounded like
Jason and some pals wrote a managed wrapper that does deep dive into unmanaged
code for us. He said that perhaps later on it'll be more tightly integrated into the
platform if the community likes it.
</p>
        <p>
The second episode elaborates on TxF by using WCF. A smart client app makes a transactional
WCF call to the server. The server uses the TxF service to create a file on the server's
hard drive. Later, the client issues a commit and the file is visible to Windows Explorer,
you and me. 
</p>
        <p>
I wonder what happens to files that never get committed - ala a long running transaction.
They have to be taking up file space. Jason says not even Windows Explorer knows about
them, but they have to exist somewhere. What if they overflow? Is there a way to clean
house? If the poop is invisible, does it still stink?
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=7edd54c5-41af-46ea-958e-ec2c26432115" />
      </body>
      <title>Developer, Meet Server</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,7edd54c5-41af-46ea-958e-ec2c26432115.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2007/04/01/DeveloperMeetServer.aspx</link>
      <pubDate>Sun, 01 Apr 2007 22:27:05 GMT</pubDate>
      <description>&lt;p&gt;
I watched episodes #1 and #2 of&amp;nbsp;the Developer, Meet&amp;nbsp;Server&amp;nbsp;series on &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=296861" target="_blank"&gt;Channel
9&lt;/a&gt;. Jason Olson is a phenomenal presenter. There are so many switches to flip in
the Vista, Longhorn and WCF&amp;nbsp;stack that it can make your head spin. Jason explains
the technology really well so the act of shoving more knowledge in my head is less
painless.
&lt;/p&gt;
&lt;p&gt;
The first episode explained how Vista can take advantage of Transactional NTFS (TxF).
The concept is really simple but the operating system has to make some incredible
leaps to provide this feature.&amp;nbsp;TxF provides full ACID support for writing files
to disk. Jason mentions&amp;nbsp;this scenario that&amp;nbsp;benefits from&amp;nbsp;TxF support&amp;nbsp;in
the video: 
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;You write a large file to disk and write meta data&amp;nbsp;of the file&amp;nbsp;to SQL
Server. This TxF&amp;nbsp;technology can increase your confidence that the database and
the document are always in sync. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
We've database transactions&amp;nbsp;for a while - seems odd that its taking so long to
do this at a file level... easy for me to say I suppose. In the video it sounded like
Jason and some pals wrote a managed wrapper that does&amp;nbsp;deep dive into unmanaged
code for us. He said that perhaps later on it'll be more tightly integrated into the
platform if the community likes it.
&lt;/p&gt;
&lt;p&gt;
The second episode elaborates on TxF by using WCF. A smart client app makes a transactional
WCF call to the server. The server uses the TxF service to create a file on the server's
hard drive. Later, the client issues a commit and the file is visible to Windows Explorer,
you and me. 
&lt;/p&gt;
&lt;p&gt;
I wonder what happens to files that never get committed - ala a long running transaction.
They have to be taking up file space. Jason says not even Windows Explorer knows about
them, but they have to exist somewhere. What if they overflow? Is there a way to clean
house? If the poop is invisible, does it still stink?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=7edd54c5-41af-46ea-958e-ec2c26432115" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,7edd54c5-41af-46ea-958e-ec2c26432115.aspx</comments>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=3d797a6e-afb3-4c9c-a290-a6b53c33079f</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,3d797a6e-afb3-4c9c-a290-a6b53c33079f.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,3d797a6e-afb3-4c9c-a290-a6b53c33079f.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3d797a6e-afb3-4c9c-a290-a6b53c33079f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was lucky to learn SQL early in my career. It was in a DB2 environment; in order
to call the database, my assembly language program called out to a COBOL
program to make the actual database query. Whoo-yah!! 
</p>
        <p>
I transferred my skills to SQL 6.5, SQL 7 and SQL 2000 along the way and
gotten pretty good at using the technology; I can hold my own with most database challenges.
I've been a little pokey about learning the new features in SQL 2005 - the "use
it until you run into a problem" worked well enough for the lightweight stuff I've
been working on so far. I've set my sights on bringing my skills up to par
with my understanding of the previous products. Geesh! I don't have a SQL Server category
on my blog yet; I guess that sums up the past few years.
</p>
        <p>
Today, I'm using a database with *many* stored procedures in it. I only want
to view/peek inside my own. So, there's this great feature in SQL Server
Management Studio to apply a filter. Once its set, only the stored prcedures matching
the given criteria are visible. Right click on the Stored Procedures folder and
select the "Filter" item in the context menu. Then, set your filter choices. It rocks!
</p>
        <p>
          <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="239" src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/FilteringStoredProcedures_92A6/sqlsvr-mgmt-studio-sproc-filter%5B2%5D.png" width="408" border="0" />
        </p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=3d797a6e-afb3-4c9c-a290-a6b53c33079f" />
      </body>
      <title>Filtering Stored Procedures</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,3d797a6e-afb3-4c9c-a290-a6b53c33079f.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2007/03/05/FilteringStoredProcedures.aspx</link>
      <pubDate>Mon, 05 Mar 2007 18:28:20 GMT</pubDate>
      <description>&lt;p&gt;
I was lucky to learn SQL early in my career. It was in a DB2 environment; in order
to call the database, my&amp;nbsp;assembly language program called&amp;nbsp;out to a COBOL
program to make the actual database query. Whoo-yah!!&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
I transferred my&amp;nbsp;skills to SQL&amp;nbsp;6.5, SQL 7 and SQL 2000 along the way and
gotten pretty good at using the technology; I can hold my own with most database challenges.
I've been a little&amp;nbsp;pokey about learning the new features in SQL 2005 - the "use
it until you run into a problem" worked well enough for the lightweight stuff I've
been&amp;nbsp;working on&amp;nbsp;so far. I've set my sights on bringing my skills up to par
with my understanding of the previous products. Geesh! I don't have a SQL Server category
on my blog yet; I guess that sums up the past few years.
&lt;/p&gt;
&lt;p&gt;
Today, I'm using&amp;nbsp;a database with *many* stored procedures in it. I only want
to&amp;nbsp;view/peek inside my own. So, there's this great feature in SQL&amp;nbsp;Server
Management Studio to&amp;nbsp;apply a filter. Once its set,&amp;nbsp;only the stored prcedures&amp;nbsp;matching
the given criteria are visible.&amp;nbsp;Right click on the Stored Procedures folder and
select the "Filter" item in the context menu. Then, set your filter choices. It rocks!
&lt;/p&gt;
&lt;p&gt;
&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="239" src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/FilteringStoredProcedures_92A6/sqlsvr-mgmt-studio-sproc-filter%5B2%5D.png" width="408" border="0"&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=3d797a6e-afb3-4c9c-a290-a6b53c33079f" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,3d797a6e-afb3-4c9c-a290-a6b53c33079f.aspx</comments>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=a802161d-8f36-480d-b56d-f9151b3d87aa</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,a802161d-8f36-480d-b56d-f9151b3d87aa.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,a802161d-8f36-480d-b56d-f9151b3d87aa.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a802161d-8f36-480d-b56d-f9151b3d87aa</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN: 0px 25px 10px 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="200" src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/CardSpacetheLawsofIdentity_B37A/sao-devsig-cardspace-openid%5B2%5D.jpg" width="250" align="left" border="0" /> I
attended the Software Association of Oregon (SAO) event today. The Development
Special Interest Group (DEV SIG) hosted a discussion about Microsoft CardSpace, the
open source framework of OpenID, and basic identity management.
</p>
        <p>
Stuart Celarier walked the audience through <a href="http://www.identityblog.com/" target="_blank">Kim
Cameron's</a> paper called <a href="http://www.identityblog.com/?page_id=354" target="_blank">The
Laws of Identity</a> that articulate seven desired aspects of a good identity
system.
</p>
        <p>
Microsoft CardSpace was formerly named "InfoCard". This is a joint effort to implement
the identity metasystem defined by the laws of identity. CardSpace is the "identity
selector" for Windows. It needs IE7 and Microsoft .Net Framework 3.0 to operate. It implements
the WS-* specifications in this service.
</p>
        <p>
          <a href="http://osis.netmesh.org/" target="_blank">OSIS - Open Source Identity System</a>:
This is an open source group that's involved in the identity space.
</p>
        <p>
Stuart also showed a demo of a system he's been working on. It logs a user into Wachovia
banking site using CardSpace.  Scott Kveton of <a href="http://janrain.com/" target="_blank">JANRAIN</a> presented
OpenID to the SAO DEV SIG group. OpenID hopes to solve the problem of having too many
usernames and passwords. 
</p>
        <ul>
          <li>
Single Signon for the web 
</li>
          <li>
Simple, light-weight 
</li>
          <li>
Easy to use, easy to deploy 
</li>
          <li>
Open development process 
</li>
          <li>
Decentralized</li>
        </ul>
        <p>
Your OpenID is a URL: <a title="http://kveton.myopenid.com/" href="http://kveton.myopenid.com/">http://kveton.myopenid.com/</a></p>
        <ul>
          <li>
OpenID comes from the blogosphere 
</li>
          <li>
Biggest problem with identity; namespace 
</li>
          <li>
OpenID solves this by using DNS 
</li>
          <li>
Your identity is a destination 
</li>
          <li>
You have a unique endpoint on the web</li>
        </ul>
        <p>
Scott Kveton explained how sites enabled with OpenID enable users to authenticate.
Visitors type in their OpenID, and the browser redirects to your OpenID provider.
The visitor makes the appropriate decision and the browser redirects back the website.
</p>
        <p>
Scott's site is <a href="http://scott.kveton.com">http://scott.kveton.com</a></p>
        <p>
Last week Bill Gates announced support for OpenID. AOL announced support for OpenID
this morning. More companies are about to make similar announcments. Here's some interesting
stats on adoption:
</p>
        <ul>
          <li>
12-15 million users with OpenIDs. 
</li>
          <li>
1000+ OpenID enabled sites 
</li>
          <li>
10-15 new OpenID enabled sites each day 
</li>
          <li>
7% grown each week with new sites</li>
        </ul>
        <p>
Kveton also brought up "Microformats" - a way to describe data in an HTML format (contact
info, social network, calendar). These can be embedded on pages. There are some interesting
ways to use OpenID with these technologies:
</p>
        <ul>
          <li>
OpenID + iCal 
</li>
          <li>
OpenID + hCards 
</li>
          <li>
OpenID + Social Networking (XFN, FOAP or FOAF?) 
</li>
          <li>
OpenId + Reputation (jyte.com)</li>
        </ul>
        <p>
OpenID Predictions from Kveton:
</p>
        <ul>
          <li>
7500 sites supporting OpenID 
</li>
          <li>
100 million users with OpenID 
</li>
          <li>
Big players adopt OpenID</li>
        </ul>
        <p>
OpenID.net has a ton of info.
</p>
        <p>
Scott Hanselman explained how he enabled OpenID on his blog. Hte added two HTML
&lt;link&gt; tags to his website. <a href="http://simonwillison.net/" target="_blank">Simon
Willison</a> has an OpenID enabled blog. A visitor can click Sign in with OpenID.
The OpenID logo lives inside the textbox. Scott entered his OpenID in the textbox
on Simon's site. Using a web service, Simon's blog discovered Hanselman's
OpenID provider, then it redirected the browser to Scott's OpenID provider. 
</p>
        <p>
Scott's website indicates the OpenID provider is <a href="http://www.myopenid.com">www.myopenid.com</a>. 
</p>
        <p>
The OpenID provider prompts Scott to authenticate. After a successful login,
the browser redirects back to Simon's page and recogizes Scott Hanselman. This is
how Simon doesn't need to keep track of usernames and passwords for his blog; <font size="5">a
huge benefit.</font></p>
        <p>
Stuart helped explain the difference between self-insued cards and managed cards:
Business Cards from Kinko's versus a card issued from Visa.
</p>
        <p>
Scott Hanselman displayed a different identity selector using Firefox on Windows.
The page contains an HTML &lt;object&gt; tag of type "application/x-informationCard".
It wasn't as pretty as the CardSpace in IE7 and .Net 3.0, but it had the same behavior.
</p>
        <p>
There was some last minute discusson on "I-Name", an XRI technology (extensible
resource identifier). It sounds like its still being baked.
</p>
        <p>
2idi relays comments on Scott's blog. They will issue an I-Name. =kveton is Scott's
I-Name. They have an DNS resolver where visitors may enter xri://=scott.hanselman/photo
to redirect to his Flickr account.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=a802161d-8f36-480d-b56d-f9151b3d87aa" />
      </body>
      <title>CardSpace &amp;amp; the Laws of Identity</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,a802161d-8f36-480d-b56d-f9151b3d87aa.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2007/02/16/CardSpaceAmpTheLawsOfIdentity.aspx</link>
      <pubDate>Fri, 16 Feb 2007 00:47:54 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN: 0px 25px 10px 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=200 src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/CardSpacetheLawsofIdentity_B37A/sao-devsig-cardspace-openid%5B2%5D.jpg" width=250 align=left border=0&gt; I
attended the Software Association of Oregon (SAO)&amp;nbsp;event today. The Development
Special Interest Group (DEV SIG) hosted a discussion about Microsoft CardSpace, the
open source framework of OpenID, and basic identity management.
&lt;/p&gt;
&lt;p&gt;
Stuart Celarier walked the audience through &lt;a href="http://www.identityblog.com/" target=_blank&gt;Kim
Cameron's&lt;/a&gt; paper called &lt;a href="http://www.identityblog.com/?page_id=354" target=_blank&gt;The
Laws of Identity&lt;/a&gt;&amp;nbsp;that articulate seven desired aspects of a good identity
system.
&lt;/p&gt;
&lt;p&gt;
Microsoft CardSpace was formerly named "InfoCard". This is a joint effort to implement
the identity metasystem defined by the laws of identity. CardSpace is the "identity
selector" for Windows. It needs IE7 and Microsoft .Net Framework 3.0 to operate. It&amp;nbsp;implements
the WS-* specifications in this service.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://osis.netmesh.org/" target=_blank&gt;OSIS - Open Source Identity System&lt;/a&gt;:
This is an open source&amp;nbsp;group that's involved in the identity space.
&lt;/p&gt;
&lt;p&gt;
Stuart also showed a demo of a system he's been working on. It logs a user into Wachovia
banking site using CardSpace.&amp;nbsp; Scott Kveton of&amp;nbsp;&lt;a href="http://janrain.com/" target=_blank&gt;JANRAIN&lt;/a&gt; presented
OpenID to the SAO DEV SIG group. OpenID hopes to solve the problem of having too many
usernames and passwords. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Single Signon for the web 
&lt;li&gt;
Simple, light-weight 
&lt;li&gt;
Easy to use, easy to deploy 
&lt;li&gt;
Open development process 
&lt;li&gt;
Decentralized&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Your OpenID is a URL: &lt;a title=http://kveton.myopenid.com/ href="http://kveton.myopenid.com/"&gt;http://kveton.myopenid.com/&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
OpenID comes from the blogosphere 
&lt;li&gt;
Biggest problem with identity; namespace 
&lt;li&gt;
OpenID solves this by using DNS 
&lt;li&gt;
Your identity is a destination 
&lt;li&gt;
You have a unique endpoint on the web&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Scott Kveton explained how sites enabled with OpenID enable users to authenticate.
Visitors type in their OpenID, and the browser redirects to your OpenID provider.
The visitor makes the appropriate decision and the browser redirects back the website.
&lt;/p&gt;
&lt;p&gt;
Scott's site is &lt;a href="http://scott.kveton.com"&gt;http://scott.kveton.com&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Last week Bill Gates announced support for OpenID. AOL announced support for OpenID
this morning. More companies are about to make similar announcments. Here's some interesting
stats on adoption:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
12-15 million users with OpenIDs. 
&lt;li&gt;
1000+ OpenID enabled sites 
&lt;li&gt;
10-15 new OpenID enabled sites each day 
&lt;li&gt;
7% grown each week with new sites&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Kveton also brought up "Microformats" - a way to describe data in an HTML format (contact
info, social network, calendar). These can be embedded on pages. There are some interesting
ways to use OpenID with these technologies:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
OpenID + iCal 
&lt;li&gt;
OpenID + hCards 
&lt;li&gt;
OpenID + Social Networking (XFN, FOAP or FOAF?) 
&lt;li&gt;
OpenId + Reputation (jyte.com)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
OpenID Predictions from Kveton:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
7500 sites supporting OpenID 
&lt;li&gt;
100 million users with OpenID 
&lt;li&gt;
Big players adopt OpenID&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
OpenID.net has a ton of info.
&lt;/p&gt;
&lt;p&gt;
Scott Hanselman&amp;nbsp;explained how he enabled OpenID on his blog. Hte added two HTML
&amp;lt;link&amp;gt; tags to his website. &lt;a href="http://simonwillison.net/" target=_blank&gt;Simon
Willison&lt;/a&gt; has an OpenID enabled blog. A visitor can click Sign in with OpenID.
The OpenID logo lives inside the textbox. Scott entered his OpenID in the textbox
on Simon's site.&amp;nbsp;Using a web service, Simon's blog&amp;nbsp;discovered&amp;nbsp;Hanselman's
OpenID&amp;nbsp;provider, then it&amp;nbsp;redirected the browser to Scott's OpenID provider. 
&lt;/p&gt;
&lt;p&gt;
Scott's&amp;nbsp;website indicates the OpenID provider is &lt;a href="http://www.myopenid.com"&gt;www.myopenid.com&lt;/a&gt;.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
The OpenID provider&amp;nbsp;prompts&amp;nbsp;Scott to authenticate. After a successful login,
the browser redirects back to Simon's page and recogizes Scott Hanselman. This is
how Simon doesn't need to keep track of usernames and passwords for his blog; &lt;font size=5&gt;a
huge benefit.&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Stuart helped explain the difference between self-insued cards and managed cards:
Business Cards from Kinko's versus a card issued from Visa.
&lt;/p&gt;
&lt;p&gt;
Scott Hanselman displayed a different identity selector using Firefox on Windows.
The page contains an HTML &amp;lt;object&amp;gt; tag&amp;nbsp;of type "application/x-informationCard".
It wasn't as pretty as the CardSpace in IE7 and .Net 3.0, but it had the same behavior.
&lt;/p&gt;
&lt;p&gt;
There was some last minute discusson on&amp;nbsp;"I-Name",&amp;nbsp;an XRI technology (extensible
resource identifier). It sounds like its still being baked.
&lt;/p&gt;
&lt;p&gt;
2idi&amp;nbsp;relays comments on Scott's blog. They will issue an I-Name. =kveton is Scott's
I-Name. They have an DNS resolver where visitors may enter xri://=scott.hanselman/photo
to redirect to his Flickr account.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=a802161d-8f36-480d-b56d-f9151b3d87aa" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,a802161d-8f36-480d-b56d-f9151b3d87aa.aspx</comments>
      <category>asp.net</category>
      <category>blogging</category>
      <category>events</category>
      <category>ie7</category>
      <category>learning</category>
      <category>software</category>
      <category>CardSpace</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=ce939d4d-acfe-4fd9-badf-db49bf16ca90</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,ce939d4d-acfe-4fd9-badf-db49bf16ca90.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,ce939d4d-acfe-4fd9-badf-db49bf16ca90.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ce939d4d-acfe-4fd9-badf-db49bf16ca90</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just made my first trip to Costco Wholesale Corporation yesterday with The Wife.
She's been going with her lady friends for quite a while and I've managed to dodge
the bullet up until yesterday. 
</p>
        <p>
It was an enjoyable outing and my buddy Marc turned me on to the deal for
a hotdog or polish sausage and a soda pop for $1.50 after making your purchases. Quite
a deal! They even have these little boxes with a crank on one side. You hold your
dog on the other side, turn the crank and either onions or relish come out the other
side! Brilliant!!
</p>
        <p>
So, I was meandering down an isle of wholesale goods with other shoppers when I laid
eyes on the Rogaine. 
</p>
        <p>
Now, I've always said that when it comes time, I'll give it the ol' buzz cut instead
of the comb-over, swirl over, or other means of denial. But this was Costco Wholesale
Corporation and it was cheap! Like $10.00 cheap! Why pass up an opportunity for imortality?!?!
</p>
        <p>
So on a lark, I was about to chuck a box in the cart until The Wife reads the side
of the package and says "<em>This isn't for you, dear.</em>" Turns out this
Rogaine is for balding around the crown of your noggin' and not for the exceedingly
high forehead, like mine. Alas, it'll be the clippers for me before too long.
I wonder if I'd make a good Mr. Clean head like Doug Purdy or King Kong Bundy?
It's not too smooth, but I do have a lot of "character" bumps.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=ce939d4d-acfe-4fd9-badf-db49bf16ca90" />
      </body>
      <title>Rogaine Is Not For Me</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,ce939d4d-acfe-4fd9-badf-db49bf16ca90.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/12/31/RogaineIsNotForMe.aspx</link>
      <pubDate>Sun, 31 Dec 2006 23:36:16 GMT</pubDate>
      <description>&lt;p&gt;
I just made my first trip to Costco Wholesale Corporation yesterday with The Wife.
She's been going with her lady friends for quite a while and I've managed to dodge
the bullet up until yesterday. 
&lt;/p&gt;
&lt;p&gt;
It was an enjoyable outing and my&amp;nbsp;buddy Marc&amp;nbsp;turned me on to the deal for
a hotdog or polish sausage and a soda pop for $1.50 after making your purchases. Quite
a deal! They even have these little boxes with a crank on one side. You hold your
dog on the other side, turn the crank and either onions or relish come out the other
side! Brilliant!!
&lt;/p&gt;
&lt;p&gt;
So, I was meandering down an isle of wholesale goods with other shoppers when I laid
eyes on the Rogaine. 
&lt;/p&gt;
&lt;p&gt;
Now, I've always said that when it comes time, I'll give it the ol' buzz cut instead
of the comb-over, swirl over, or other means of denial. But this was Costco Wholesale
Corporation and it was cheap! Like $10.00 cheap! Why pass up an opportunity for imortality?!?!
&lt;/p&gt;
&lt;p&gt;
So on a lark, I was about to chuck a box in the cart until The Wife reads the side
of the package and says "&lt;em&gt;This&amp;nbsp;isn't for you, dear.&lt;/em&gt;" Turns out&amp;nbsp;this
Rogaine is&amp;nbsp;for balding around the crown of your noggin' and not for the exceedingly
high forehead, like mine. Alas, it'll be the&amp;nbsp;clippers for me before too long.
I wonder if I'd make a good Mr. Clean head&amp;nbsp;like Doug Purdy or King Kong Bundy?
It's not too smooth, but I do have a lot of "character" bumps.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=ce939d4d-acfe-4fd9-badf-db49bf16ca90" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,ce939d4d-acfe-4fd9-badf-db49bf16ca90.aspx</comments>
      <category>learning</category>
      <category>observations</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=0456a1b7-d8f0-4ebc-ba56-74f7252b94c5</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,0456a1b7-d8f0-4ebc-ba56-74f7252b94c5.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,0456a1b7-d8f0-4ebc-ba56-74f7252b94c5.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0456a1b7-d8f0-4ebc-ba56-74f7252b94c5</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I saw this <a href="http://www.codinghorror.com/blog/archives/000720.html" target="_blank">post</a> on
Jeff Atwood's blog about a <a href="http://www.slickedit.com/content/view/441" target="_blank">new
tool</a> from SlickEdit, the makers of SlickRun; easily the most frequently used program
on my laptop day-in and day-out.
</p>
        <p>
          <em>
            <strong>The Command Spy</strong>
            <br />
Whenever you click on a menu item or toolbar button in Visual Studio, you are executing
what is known as a "command". Unfortunately, it's almost impossible to tell what command
is linked to which menu items or toolbar buttons. The Command Spy monitors command
execution and allows you to see exactly what commands you've run, how many times you've
run them and what key bindings are used to invoke those commands. The main purpose
of this tool is to allow you to learn what commands are bound to which keystrokes,
so that you can work faster within the IDE. </em>
        </p>
        <p>
I installed Command Spy over the Thanksgiving holiday. It totally rocks!
Just run the VS.Net add-in while you're coding for a couple of hours and then take
a look at your metrics. Command Spy will tell you how many times you've run a command
without using the short-cut keystrokes. Its a great way to improve on your productivity.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=0456a1b7-d8f0-4ebc-ba56-74f7252b94c5" />
      </body>
      <title>Command Spy</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,0456a1b7-d8f0-4ebc-ba56-74f7252b94c5.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/11/27/CommandSpy.aspx</link>
      <pubDate>Mon, 27 Nov 2006 18:48:29 GMT</pubDate>
      <description>&lt;p&gt;
I saw this &lt;a href="http://www.codinghorror.com/blog/archives/000720.html" target="_blank"&gt;post&lt;/a&gt; on
Jeff Atwood's blog about a &lt;a href="http://www.slickedit.com/content/view/441" target="_blank"&gt;new
tool&lt;/a&gt; from SlickEdit, the makers of SlickRun; easily the most frequently used&amp;nbsp;program
on my laptop day-in and day-out.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;strong&gt;The Command Spy&lt;/strong&gt;
&lt;br&gt;
Whenever you click on a menu item or toolbar button in Visual Studio, you are executing
what is known as a "command". Unfortunately, it's almost impossible to tell what command
is linked to which menu items or toolbar buttons. The Command Spy monitors command
execution and allows you to see exactly what commands you've run, how many times you've
run them and what key bindings are used to invoke those commands. The main purpose
of this tool is to allow you to learn what commands are bound to which keystrokes,
so that you can work faster within the IDE. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
I installed&amp;nbsp;Command Spy&amp;nbsp;over the Thanksgiving holiday. It totally rocks!
Just run the VS.Net add-in while you're coding for a couple of hours and then take
a look at your metrics. Command Spy will tell you how many times you've run a command
without using the short-cut keystrokes. Its a great way to improve on your productivity.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=0456a1b7-d8f0-4ebc-ba56-74f7252b94c5" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,0456a1b7-d8f0-4ebc-ba56-74f7252b94c5.aspx</comments>
      <category>learning</category>
      <category>popart</category>
      <category>software</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=f3278fd4-64a8-49e6-99b8-138b6c0c0db7</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,f3278fd4-64a8-49e6-99b8-138b6c0c0db7.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,f3278fd4-64a8-49e6-99b8-138b6c0c0db7.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=f3278fd4-64a8-49e6-99b8-138b6c0c0db7</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
I started using the RSS reader in Microsoft Outlook 2007. 
</p>
        <p>
I was using SharpReader for as long as I've ever had an RSS reader and subscribed
to feeds. I really like having just one application running for my communications
and work items (email, tasks, calendar, RSS feeds...). Its super easy to
add a feed when you're visiting a web page too. I used folders quite a bit in
SharpReader to categorize feeds, but I'm trying the "one big folder" approach for
now in Outlook.
</p>
        <p>
Sometimes, I got lazy and didn't open SharpReader on my laptop for a while. The
posts would get way out of control. Sure, I could add it to my Start Up
programs, but one of my quirks is to keep that list short, if not empty. Some weeks
I even tell SQL Server to not startup automatically. Perhaps that's one of the old
carry overs from living too long with too little RAM on a weak laptop.
</p>
        <p>
Outlook 2007 as an RSS reader is nice, but I miss some of the basics, like identifying
the URL to a blog I've already subscribed to. There's probably a way to display that
information easily in Outlook, but I haven't discovered it yet.
</p>
        <p>
To date, the most frustrating thing has been refreshing feeds. It gets joined at the
hip with my email send/receive request. So, when someone comes by my desk in a general
freak-out mode and asks how to solve a problem raised in a recent e-mail,
I click on Send/Receive if I haven't gotten it yet. Now, thanks to the additional
RSS feeds, I have to wait much longer as everything is updated. There must be a way
to decouple these requests from each other in Outlook.
</p>
        <p>
Overall, I'm very happy with the switch so far.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=f3278fd4-64a8-49e6-99b8-138b6c0c0db7" />
      </body>
      <title>Using Microsoft Outlook 2007 as an RSS Reader</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,f3278fd4-64a8-49e6-99b8-138b6c0c0db7.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/11/27/UsingMicrosoftOutlook2007AsAnRSSReader.aspx</link>
      <pubDate>Mon, 27 Nov 2006 18:39:22 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
I started using the RSS reader in Microsoft Outlook 2007. 
&lt;/p&gt;
&lt;p&gt;
I was using SharpReader for as long as I've ever had an RSS reader and subscribed
to feeds. I really like having just one application running for my communications
and work items&amp;nbsp;(email, tasks, calendar,&amp;nbsp;RSS feeds...). Its super easy to
add a feed when you're visiting a web page too. I used&amp;nbsp;folders quite a bit in
SharpReader to categorize feeds, but I'm trying the "one big folder" approach for
now in Outlook.
&lt;/p&gt;
&lt;p&gt;
Sometimes, I&amp;nbsp;got lazy and&amp;nbsp;didn't open SharpReader on my laptop for a while.&amp;nbsp;The
posts would get way out of control. Sure, I could&amp;nbsp;add it to&amp;nbsp;my Start Up
programs, but one of my quirks is to keep that list short, if not empty. Some weeks
I even tell SQL Server to not startup automatically. Perhaps that's one of the old
carry overs from living too long with too little RAM on a weak laptop.
&lt;/p&gt;
&lt;p&gt;
Outlook 2007 as an RSS&amp;nbsp;reader is nice, but I miss some of the basics, like&amp;nbsp;identifying
the URL to a blog I've already subscribed to. There's probably a way to display that
information easily in Outlook, but I haven't discovered it yet.
&lt;/p&gt;
&lt;p&gt;
To date, the most frustrating thing has been refreshing feeds. It gets joined at the
hip with my email send/receive request. So, when someone comes by my desk in a general
freak-out mode&amp;nbsp;and asks how to solve a problem raised in a recent&amp;nbsp;e-mail,
I click on Send/Receive if I haven't gotten it yet. Now, thanks to the additional
RSS feeds, I have to wait much longer as everything is updated. There must be a way
to decouple these requests from each other in Outlook.
&lt;/p&gt;
&lt;p&gt;
Overall, I'm very happy with the switch so far.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=f3278fd4-64a8-49e6-99b8-138b6c0c0db7" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,f3278fd4-64a8-49e6-99b8-138b6c0c0db7.aspx</comments>
      <category>learning</category>
      <category>popart</category>
      <category>software</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=e7b968e3-4f73-4a01-993b-c7c16fea5793</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,e7b968e3-4f73-4a01-993b-c7c16fea5793.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,e7b968e3-4f73-4a01-993b-c7c16fea5793.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e7b968e3-4f73-4a01-993b-c7c16fea5793</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.amazon.com/Essential-Workflow-Foundation-Microsoft-Development/dp/0321399838/sr=8-1/qid=1161795099/ref=pd_bbs_sr_1/102-8314675-8411338?ie=UTF8&amp;s=books">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" hspace="8" src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/EssentialWIndowsWorkflowFoundation_8FD2/wwfshuklaschmidt%5B1%5D.jpg" width="240" align="left" vspace="4" border="0" />
          </a> I
saw this link on <a href="http://pluralsight.com/blogs/dbox/archive/2006/10/25/41185.aspx" target="_blank">Don
Box's blog</a> about a new Workflow book coming out. Since I'm considering WF, I'm
going to take his advice and get the book.
</p>
        <p>
This is a nice parlay for me after a session at the recent Seattle
Code Camp. I sat in on a Windows Workflow Foundation talk by <a href="http://geekswithblogs.net/paulmehner/" target="_blank">Paul
Mehner</a>, the South Sound .Net User Group Leader in Olympia, WA. 
</p>
        <p>
I could tell this guy is a professional trainer; he had a thorough understanding of
Windows Workflow Foundation, solid content and a ton of energy. Not a sleepy
eye in the whole audience!
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=e7b968e3-4f73-4a01-993b-c7c16fea5793" />
      </body>
      <title>Essential WIndows Workflow Foundation</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,e7b968e3-4f73-4a01-993b-c7c16fea5793.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/11/01/EssentialWIndowsWorkflowFoundation.aspx</link>
      <pubDate>Wed, 01 Nov 2006 18:14:52 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.amazon.com/Essential-Workflow-Foundation-Microsoft-Development/dp/0321399838/sr=8-1/qid=1161795099/ref=pd_bbs_sr_1/102-8314675-8411338?ie=UTF8&amp;amp;s=books"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="240" hspace="8" src="http://www.andrewdothay.net/blog/content/binary/WindowsLiveWriter/EssentialWIndowsWorkflowFoundation_8FD2/wwfshuklaschmidt%5B1%5D.jpg" width="240" align="left" vspace="4" border="0"&gt;&lt;/a&gt; I
saw this link on &lt;a href="http://pluralsight.com/blogs/dbox/archive/2006/10/25/41185.aspx" target="_blank"&gt;Don
Box's blog&lt;/a&gt; about a new Workflow book coming out. Since I'm considering WF, I'm
going to take his advice and get the book.
&lt;/p&gt;
&lt;p&gt;
This&amp;nbsp;is a nice&amp;nbsp;parlay for me&amp;nbsp;after&amp;nbsp;a session at the recent Seattle
Code Camp. I sat in on a Windows Workflow Foundation&amp;nbsp;talk by &lt;a href="http://geekswithblogs.net/paulmehner/" target="_blank"&gt;Paul
Mehner&lt;/a&gt;, the South Sound .Net User Group Leader in Olympia, WA. 
&lt;/p&gt;
&lt;p&gt;
I could tell this guy is a professional trainer; he had a thorough understanding of
Windows Workflow Foundation,&amp;nbsp;solid content and a ton of energy. Not a sleepy
eye in the whole audience!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=e7b968e3-4f73-4a01-993b-c7c16fea5793" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,e7b968e3-4f73-4a01-993b-c7c16fea5793.aspx</comments>
      <category>books</category>
      <category>learning</category>
      <category>popart</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=ab9bb52a-03ac-4abc-ad3a-1dc7eb75053a</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,ab9bb52a-03ac-4abc-ad3a-1dc7eb75053a.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,ab9bb52a-03ac-4abc-ad3a-1dc7eb75053a.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=ab9bb52a-03ac-4abc-ad3a-1dc7eb75053a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The Seattle Code Camp 2 was a great weekend. It was held at <a href="http://www.digipen.edu/" target="_blank">Digipen</a>,
the world's first video game university. Its a cool office, and judging by all of
the labs, the auditorium, and extensive media clippings framed on the wall,
its a fantastic place to learn 2D and 3D animation, game programming, art and anything
else related to game development. Jason Mauer did a great job of pulling everything
together. I'd love to help out and organize the next Portland or Seattle gathering.
</p>
        <p>
My presentation on DotNetNuke and web content management went well; I think its got
some legs. Here's the <a href="http://www.andrewdothay.net/blog/content/binary/seattle-codecamp-2.zip">zip
file of my presentation</a> and the code I was talking about. This was the first time
I've presented this material and it went fairly well. I really believe in the concepts
that I've been whittling on and DNN has just been the delivery vehicle of the moment.
I think it'd be a lot of fun to take this one on the road and hit up a couple of code
camps in other cities. I wonder what The Wife would think of that?
</p>
        <p>
One of my favorite presentors last weekend was <a href="http://www.amazon.com/s/103-8879201-4311041?ie=UTF8&amp;index=books&amp;rank=-relevance%2C%2Bavailability%2C-daterank&amp;field-author-exact=Vaughn%2C%20William%20R." target="_blank">Bill
Vaughn</a>. He's with Beta V, and a prolific author; he's written a couple of SQL
Server books recently. I took advantage of the opportunity to learn quite a bit about
SQL Server 2005 Compact Edition and Reporting Services from him.
</p>
        <p>
The <a href="http://msdn.microsoft.com/directx/xna/" target="_blank">XNA</a> team
was also on hand to present some brand new material. The new beta is due very soon,
if its not out already. Charles Cox was on hand (a Digipen graduate) to give a great
demo on building a XBox 360 game with C#.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=ab9bb52a-03ac-4abc-ad3a-1dc7eb75053a" />
      </body>
      <title>Seattle Code Camp 2</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,ab9bb52a-03ac-4abc-ad3a-1dc7eb75053a.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/10/30/SeattleCodeCamp2.aspx</link>
      <pubDate>Mon, 30 Oct 2006 22:11:59 GMT</pubDate>
      <description>&lt;p&gt;
The Seattle Code Camp 2 was a great weekend. It was held at &lt;a href="http://www.digipen.edu/" target="_blank"&gt;Digipen&lt;/a&gt;,
the world's first video game university. Its a cool office, and judging by all of
the labs,&amp;nbsp;the auditorium,&amp;nbsp;and extensive media clippings framed on the wall,
its a fantastic place to learn 2D and 3D animation, game programming, art and anything
else related to game development. Jason Mauer did a great job of pulling everything
together. I'd love to help out and organize the next Portland or Seattle gathering.
&lt;/p&gt;
&lt;p&gt;
My presentation on DotNetNuke and web content management went well; I think its got
some legs. Here's the &lt;a href="http://www.andrewdothay.net/blog/content/binary/seattle-codecamp-2.zip"&gt;zip
file of my presentation&lt;/a&gt; and the code I was talking about. This was the first time
I've presented this material and it went fairly well. I really believe in the concepts
that I've been whittling on and DNN has just been the delivery vehicle of the moment.
I think it'd be a lot of fun to take this one on the road and hit up a couple of code
camps in other cities. I wonder what The Wife would think of that?
&lt;/p&gt;
&lt;p&gt;
One of my favorite presentors&amp;nbsp;last weekend&amp;nbsp;was &lt;a href="http://www.amazon.com/s/103-8879201-4311041?ie=UTF8&amp;amp;index=books&amp;amp;rank=-relevance%2C%2Bavailability%2C-daterank&amp;amp;field-author-exact=Vaughn%2C%20William%20R." target="_blank"&gt;Bill
Vaughn&lt;/a&gt;. He's with Beta V, and a prolific author; he's written a couple of SQL
Server books recently. I took advantage of the opportunity to learn quite a bit about
SQL Server 2005 Compact Edition and Reporting Services from him.
&lt;/p&gt;
&lt;p&gt;
The &lt;a href="http://msdn.microsoft.com/directx/xna/" target="_blank"&gt;XNA&lt;/a&gt; team
was also on hand to present some brand new material. The new beta is due very soon,
if its not out already. Charles Cox was on hand (a Digipen graduate) to give a great
demo on building a XBox 360 game with C#.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=ab9bb52a-03ac-4abc-ad3a-1dc7eb75053a" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,ab9bb52a-03ac-4abc-ad3a-1dc7eb75053a.aspx</comments>
      <category>DotNetNuke</category>
      <category>learning</category>
      <category>popart</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=c670602b-ffcb-4002-bcae-d4ff1af85aa7</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,c670602b-ffcb-4002-bcae-d4ff1af85aa7.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,c670602b-ffcb-4002-bcae-d4ff1af85aa7.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=c670602b-ffcb-4002-bcae-d4ff1af85aa7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was accepted to speak at the next Code Camp, the weekend of Oct 28th, in
Seattle! Hooray!! I thought for a little bit on (A) what would be a fun topic
and (2) what do I have to say about said fun topic. I finally settled on talking about <a href="http://seattle.techevents.info/codecamp/2/PresenterInfo.aspx?ID=42f50129-5d63-4818-9cdc-9d40a19ba22f" target="_blank">something
I do on a daily basis</a>: balancing the needs of the web designer, leveraging sufficient
power of a great platform (read that as using the base class libraries and everything
else given to me), along with the needs of the client and the overall budget.
</p>
        <p>
Our designers at Pop Art are top shelf. They've come up with some fantastic ideas
for sites. They're on the leading edge of what's possible with today's browsers and
giving consideration to the downlevel browser folk.
</p>
        <p>
Given that, they have some high demands on the HTML emitted by anything on the server.
It absolutely, positively must be W3C compliant. It doesn't matter if its HTML 4.01
Transitional, or HTML 1.0 Strict; so long as it conforms to the given specification.
Gone are the days of using menu server controls that emitted glorious reams of &lt;table&gt;,
&lt;tr&gt; and &lt;td&gt; tags. Enough for you to knit a small blanket. Amen for the <a href="http://weblogs.asp.net/scottgu/archive/2006/09/08/CSS-Control-Adapter-Toolkit-Update.aspx">CSS
Control Adapters</a>. 
</p>
        <p>
The designers have a lot to say on usability too. There are just some things that
developers will step right over like a country boy; where as the country boy's college
roommate visiting for the weekend will stop, stare, point, hold their nose
and give it a wide birth.
</p>
        <p>
Enter DotNetNuke. Out-of-the-box, DNN is a developers playground. They know there's
so much capability under the hood that they're (and I'm generalizing here) too busy
envisioning what they're going to build next instead of rethinking the user interface
that a client would need to maintain a site. That seems like small potatoes next to
the glorious reams of code we can write.
</p>
        <p>
So, I've settled on presenting the issues, challenges, arguments, counter-points and
three-point-takedowns that we've had to address over the past 18 months with
DNN. That would be a little too gloomy, so the remaining 67% of the discussion will contain some
solutions that bridge the gap and keep the web site looking beautiful long after it
launches. My presentation is in no way the rule; simply my experiences in dealing
with this issue since I came to Pop Art in 2002. As with most things, I'm sure they
are lots of ways to handle them, and I'm as open minded as the next guy; providing
the next guy is sans jerk.
</p>
        <p>
A basic introduction of DotNetNuke would be better served by a different session,
but people who've never downloaded the bits from <a href="http://www.dotnetnuke.com">www.dotnetnuke.com</a> will
still get a reasonable insight into the problem sets and ways to deal with them.
</p>
        <p>
My basic fear is probably the same as any other presenter who ever presented in all
of presentation-land: getting slotted in the same time slot as ScottGu or anyone else
in the rock star line up. What a problem to have!!   :)
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=c670602b-ffcb-4002-bcae-d4ff1af85aa7" />
      </body>
      <title>Presenting at Seattle Code Camp</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,c670602b-ffcb-4002-bcae-d4ff1af85aa7.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/10/15/PresentingAtSeattleCodeCamp.aspx</link>
      <pubDate>Sun, 15 Oct 2006 15:35:33 GMT</pubDate>
      <description>&lt;p&gt;
I was accepted to speak at the next Code Camp,&amp;nbsp;the weekend of Oct 28th,&amp;nbsp;in
Seattle! Hooray!!&amp;nbsp;I thought for a little bit on (A) what would be a fun topic
and (2) what do I have to say about said fun topic. I finally settled on talking about&amp;nbsp;&lt;a href="http://seattle.techevents.info/codecamp/2/PresenterInfo.aspx?ID=42f50129-5d63-4818-9cdc-9d40a19ba22f" target=_blank&gt;something
I do on a daily basis&lt;/a&gt;: balancing the needs of the web designer, leveraging&amp;nbsp;sufficient
power of a great platform (read that as using the base class libraries and everything
else given to me), along with the needs of the client and the overall budget.
&lt;/p&gt;
&lt;p&gt;
Our designers at Pop Art are top shelf. They've come up with some fantastic ideas
for sites. They're on the leading edge of what's possible with today's browsers and
giving consideration to the downlevel browser folk.
&lt;/p&gt;
&lt;p&gt;
Given that, they have some high demands on the HTML emitted by anything on the server.
It absolutely, positively must be W3C compliant. It doesn't matter if its HTML 4.01
Transitional, or HTML 1.0 Strict; so long as it conforms to the given specification.
Gone are the days of using menu server controls that emitted glorious reams of &amp;lt;table&amp;gt;,
&amp;lt;tr&amp;gt; and &amp;lt;td&amp;gt; tags. Enough for you to knit a small blanket. Amen for the &lt;a href="http://weblogs.asp.net/scottgu/archive/2006/09/08/CSS-Control-Adapter-Toolkit-Update.aspx"&gt;CSS
Control Adapters&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
The designers have a lot to say on usability too. There are just some things that
developers will step right over like a country boy; where as the&amp;nbsp;country boy's&amp;nbsp;college
roommate&amp;nbsp;visiting&amp;nbsp;for the weekend will stop, stare, point, hold their nose
and give it a wide birth.
&lt;/p&gt;
&lt;p&gt;
Enter DotNetNuke. Out-of-the-box, DNN is a developers playground. They know there's
so much capability under the hood that they're (and I'm generalizing here) too busy
envisioning what they're going to build next instead of rethinking the user interface
that a client would need to maintain a site. That seems like small potatoes next to
the glorious reams of code we can write.
&lt;/p&gt;
&lt;p&gt;
So, I've settled on presenting the issues, challenges, arguments, counter-points and
three-point-takedowns&amp;nbsp;that we've had to address over the past 18 months with
DNN. That would be a little too gloomy, so the remaining 67% of the discussion will&amp;nbsp;contain&amp;nbsp;some
solutions that bridge the gap and keep the web site looking beautiful long after it
launches. My presentation is in no way the rule; simply my experiences in dealing
with this issue since I came to Pop Art in 2002. As with most things, I'm sure they
are lots of ways to handle them, and I'm as open minded as the next guy; providing
the next guy is sans jerk.
&lt;/p&gt;
&lt;p&gt;
A basic introduction of DotNetNuke would be better served by a different session,
but people who've never downloaded the bits from &lt;a href="http://www.dotnetnuke.com"&gt;www.dotnetnuke.com&lt;/a&gt; will
still get a reasonable insight into the problem sets and&amp;nbsp;ways to deal with them.
&lt;/p&gt;
&lt;p&gt;
My basic fear is probably the same as any other presenter who ever presented in all
of presentation-land: getting slotted in the same time slot as ScottGu or anyone&amp;nbsp;else
in the&amp;nbsp;rock star line up. What a problem to have!!&amp;nbsp;&amp;nbsp; :)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=c670602b-ffcb-4002-bcae-d4ff1af85aa7" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,c670602b-ffcb-4002-bcae-d4ff1af85aa7.aspx</comments>
      <category>asp.net</category>
      <category>DotNetNuke</category>
      <category>events</category>
      <category>learning</category>
      <category>popart</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=54b9cf0c-ca0b-4033-a7cd-5701057ed3a1</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,54b9cf0c-ca0b-4033-a7cd-5701057ed3a1.aspx</pingback:target>
      <dc:creator>Andrew Hay</dc:creator>
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,54b9cf0c-ca0b-4033-a7cd-5701057ed3a1.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=54b9cf0c-ca0b-4033-a7cd-5701057ed3a1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Jason Mauer's <a href="http://www.jasonmauer.com/EntryView.aspx?id=1AAEB531-0D82-4332-BD12-8AF33E1AF6EF" target="_blank">blog</a> let
me know that <a href="http://seattle.techevents.info/codecamp/2/default.aspx" target="_blank">Seattle
Code Camp</a> is coming up at the end of the month! Ack!
</p>
        <p>
I'm thinking about heading up with my buddy <a href="http://kelly.staging.popart.com/">Kelly</a>.
I told myself at the Portland Code camp, I said "Self," that's what I call myself, "you
should present at the next code camp." Well, this is the next one, but its right around
the corner! 
</p>
        <p>
I could do the DotNetNuke presentation, but seeing as how they just incorporated combined
with their proximity to Seattle, there's a good probability that a DNN big shot
will be there doing a far better show than I could. I was very impressed at the last
Portland Code Camp at the quality of the "simple" talks. Things that you should already
know, but are fun and refreshing to go over again. For example, the Subversion discussion
was really well attended and you always end up learning some new trick or insight.
I love that.
</p>
        <p>
I'll put my thinking hat on and see what I come up with.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=54b9cf0c-ca0b-4033-a7cd-5701057ed3a1" />
      </body>
      <title>Seattle Code Camp</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,54b9cf0c-ca0b-4033-a7cd-5701057ed3a1.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/10/03/SeattleCodeCamp.aspx</link>
      <pubDate>Tue, 03 Oct 2006 22:42:21 GMT</pubDate>
      <description>&lt;p&gt;
Jason Mauer's &lt;a href="http://www.jasonmauer.com/EntryView.aspx?id=1AAEB531-0D82-4332-BD12-8AF33E1AF6EF" target=_blank&gt;blog&lt;/a&gt; let
me know that &lt;a href="http://seattle.techevents.info/codecamp/2/default.aspx" target=_blank&gt;Seattle
Code Camp&lt;/a&gt; is coming up at the end of the month! Ack!
&lt;/p&gt;
&lt;p&gt;
I'm thinking about heading up with my buddy &lt;a href="http://kelly.staging.popart.com/"&gt;Kelly&lt;/a&gt;.
I told myself at the Portland Code camp, I said "Self," that's&amp;nbsp;what I call myself,&amp;nbsp;"you
should present at the next code camp." Well, this is the next one, but its right around
the corner! 
&lt;/p&gt;
&lt;p&gt;
I could do the DotNetNuke presentation, but seeing as how they just incorporated&amp;nbsp;combined
with their&amp;nbsp;proximity to Seattle, there's a good probability that a DNN big shot
will be there doing a far better show than I could. I was very impressed at the last
Portland Code Camp at the quality of the "simple" talks. Things that you should already
know, but are fun and refreshing to go over again. For example, the Subversion discussion
was really well attended and you always end up learning some new trick or insight.
I love that.
&lt;/p&gt;
&lt;p&gt;
I'll put my thinking hat on and see what I come up with.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=54b9cf0c-ca0b-4033-a7cd-5701057ed3a1" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,54b9cf0c-ca0b-4033-a7cd-5701057ed3a1.aspx</comments>
      <category>fun</category>
      <category>learning</category>
      <category>popart</category>
      <category>events</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=a5941110-5cf8-41ac-8a9e-aafe2d7a18d5</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,a5941110-5cf8-41ac-8a9e-aafe2d7a18d5.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,a5941110-5cf8-41ac-8a9e-aafe2d7a18d5.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=a5941110-5cf8-41ac-8a9e-aafe2d7a18d5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
With an extra helping of curiosity and hell bent on learning something new &amp; valuable,
I opened the book <a href="http://www.bbd.com/stylin/index.htm">Stylin’ with CSS,
A Designers Guide</a> written by Charles Wyke-Smith.
</p>
        <p>
I’ve been using CSS since the late 90’s so I’ve got most of the normal stuff committed
to memory. As a small aside, when I built my first site for Pop Art, I got a bunch
of Oohs and Ahhs for my use of CSS and then abruptly fell on my face when I realized
we had to support Netscape 4. So with some distance between us, I'm ready to get the
band back together.
</p>
        <p>
Before reading this book, I didn’t have a good grasp on CSS positioning. I consider
myself a fairly savvy pirate, so I said my best “Arrrrrgggg” and read the book. It’s
a really good read and chop full of examples. I highly recommend it. Here’s a few
things that I learned or thought of along the way:
</p>
        <h1>Percent of Content to Markup
</h1>
        <p>
Early in the book, Charles makes a point of comparing the HTML &lt;table&gt; method
with the CSS method of laying out a page. Using &lt;div&gt; tags results in much less
HTML around the content. When I read that, I thought back to my days of Assembly language
on an IBM OS/390 machine. This guy would have just hated to see what it took to open
a file, write something to it and close it. Hee!
</p>
        <h1>Quirks Mode
</h1>
        <p>
I first heard of quirks mode about a year ago while listening to a podcast. You’re
in quirks mode if you don’t declare the document type in Internet Explorer; in which
case IE will try to guess how to render the site. It normally does a really good job,
but it can behave oddly and render some markup in an unexpected manner. Its best to
steer clear of quirks mode. You no likey.
</p>
        <h1>Content Type Meta Tag
</h1>
        <p>
I learned this tag the hard way on a client site. Some of the text was rendering the
odd, non-printable characters, but only for certain browsers. It turned out that if
you set the encoding in IE manually it would work, but auto-select behaved oddly.
Simply setting the content type via a meta tag in the web page told IE what to expect
and the problem was solved. 
</p>
        <h1>Child Selectors and XPath
</h1>
        <p>
CSS has a way of defining selectors that resembles that XPath syntax. XPath is a way
to query an XML document for things like “get the third child of a node that is named
“employee”.
</p>
        <p>
This is how you would write a rule that says make content inside an &lt;em&gt; tag
green if its directly a child of the &lt;p&gt; tag:
</p>
        <div class="sourcecodeblock">p&gt;em {color:green;} 
</div>
        <p>
There’s also a way to select adjacent tags, a similar concept in XPath. Here’s the
rule to select a &lt;p&gt; tag that is adjacent to an &lt;h1&gt; tag:
</p>
        <div class="sourcecodeblock">h1 + p {font-variant:small-caps;}
</div>
        <p>
There’s even a way to select tags based on their attributes. This is something that’s
done all the time when you write an XSLT document. This rule sets a border around
&lt;img&gt; tags when they have a title attribute:
</p>
        <div class="sourcecodeblock">img[title] {border:2px solid blue;}
</div>
        <h1>Universal Selector
</h1>
        <p>
The universal selector was new to me. The asterisk means anything, so this is the
rule to make all margins and padding set to zero. This sets all browsers to the same
standard, rather than relay on all browsers to have a similar padding and margin for
their &lt;p&gt; tags (which is a bad thing to rely on).
</p>
        <div class="sourcecodeblock">* {margin:0px; padding:0px}
</div>
        <h1>Pseudo-Classes and Pseudo-Elements
</h1>
        <p>
You’re probably familiar with the pseudo-classes for the anchor tag, &lt;a&gt;:
</p>
        <div class="sourcecodeblock">a:link { color:#000; }<br />
a:visited { color:#FF0000; }<br />
a:hover { color:#FFF; }<br />
a:active { color:#CCC; }
</div>
        <p>
Pseudo-classes are helpful when you need to change a class based on the state of the
item. Pseudo-elements were brand new to me. 
</p>
        <p>
I can target the first letter in an element:
</p>
        <div class="sourcecodeblock">p:first-letter { font-size:20pt; }
</div>
        <p>
and I can also target the entire first line:
</p>
        <div class="sourcecodeblock">p:first-line { font-variant:small-caps; }
</div>
        <p>
There are a bunch of other pseudo-elements like x:before and x:after, which get to
a very elegant way of clearing a float. This next method injects code into the page
using the :after pseudo-element.
</p>
        <h1>Alsett Clearing Method
</h1>
        <p>
When you float some elements left or write. One way to stop a lower element from floating
beside it is to set the “clear” instruction. Depending on your content is marked up,
this might be easy. However, it might require the use of some markup that has no other
purpose than to clear your float. This is something that should make your little CSS
red flag go up. So, some smart person named <a href="http://www.csscreator.com/">Tony
Alsett</a> figured out a snazzy way to insert some non-floated content in the page
just using CSS. So all you need is the right CSS class or ID reference and you’re
done. No crap hanging out in the markup just for presentational purposes.
</p>
        <p>
Here’s the technique:
</p>
        <div class="sourcecodeblock">.clearfix:after<br />
{ <br />
   content: “.”; <br />
   display:block; <br />
   height: 0; <br />
   clear:both; <br />
   visibility:hidden;<br />
}<br />
.clearfix { display:inline-block;}<br />
html .clearfix { height:1%;}<br />
.clearfix {display:block;}
</div>
        <p>
So, not that you would ever come up with this hack on your own, but this is the stuff
that gets you to a CSS standards based website with minimal presentation markup in
your XHTML file.
</p>
        <p>
So now we get on to the good stuff.
</p>
        <h1>Positioning
</h1>
        <h3>Set all margins and padding to zero
</h3>
        <p>
Just like a good brew master cleans his equipment before making a batch of BS IPA,
you should set all margins and padding to zero as a first step.
</p>
        <div class="sourcecodeblock">* {margin:0; padding:0}
</div>
        <h3>Vertical Margins Collapse
</h3>
        <p>
When you set vertical margins on tags, remember that when they meet, they will overlap
margins until one of the margins touches the border of the other element; they collapse.
This is not the case for horizontal margins. They no collapsey.
</p>
        <h3>How Big Is a Box
</h3>
        <p>
This is topic that can make you screwy if you care too deeply about multiple browsers.
When you set a with on a &lt;p&gt; tag to 400px and then add a left and right pad
of 50px, you’ve just created a 500px wide &lt;p&gt; tag. Now, if you add a border,
the width will grow even more. Basically, its additive. It doesn’t shrink the contents
of the &lt;p&gt; tag to keep the element set to 400px. 
</p>
        <p>
So now that you think you’ve got that, keep in mind that IE 5 and IE 5.5 for Windows
handles the box model differently. They do squeeze the content if you pad it. IE 6
does the same thing in Quirks mode too. Like I said, don’t be in Quirks mode, jerk.
</p>
        <h1>The Positioning Property
</h1>
        <p>
So, here it is. Positioning. Mmmm. Doesn’t it smell good?
</p>
        <h3>Static Positioning
</h3>
        <p>
This is the default. You know how it works, so move on. Nothing to see here.
</p>
        <h3>Relative Positioning
</h3>
When you set a tag to render using relative positioning, it renders relative to where
it would have gone normally. For example, this rule will push a &lt;p&gt; tag down
30px and left 20px from where it would have normally rendered: 
<p></p><div class="sourcecodeblock">.MyRelativeParaGraph { position:relative; top:30px; left:30px;
}
</div><p>
Now, your &lt;p&gt; will be moved, and perhaps on top of thing item below it in the
flow of the document.
</p><h3>Absolute Positioning
</h3><p>
This setting takes the item out of the flow of the document. It’s baseline is the
item that is the positioning context for the absolutely positioned element. By default,
the body tag is the positioning context for elements. You can set a different positioning
context by using two tags, one nested inside the other. The outer tag can be set to
relative positioning. This makes the outer tag the positioning context for the inner
tag. The inner tag is set to absolute positioning and thus the &lt;body&gt; tag is
no longer the baseline.
</p><h3>Fixed Positioning
</h3><p>
This blows, don’t do it. It keeps an item fixed on a given spot in your browser, regardless
of where you scroll in a long document. It’s fixed. Get it?
</p><h1>Floating &amp; Clearing
</h1><p>
Floating and clearing allow for the creating of a two or three column template in
the book. It’s a pretty cool concept. The easiest way to think about it is a simple
two column layout. Imagine a simple page with two &lt;div&gt; tags. You can make a
simple two column layout with these CSS rules:
</p><div class="sourcecodeblock">#div1 { float:left; width:200px; background-color:#FFFF00;
}<br />
#div2 { background-color:#FF0000; }
</div><p>
Three column layouts are nearly as easy. Its sweet tasty goodness. Dish up!
</p><img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=a5941110-5cf8-41ac-8a9e-aafe2d7a18d5" /></body>
      <title>Stylin' with CSS, A Designers Guide</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,a5941110-5cf8-41ac-8a9e-aafe2d7a18d5.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/07/25/StylinWithCSSADesignersGuide.aspx</link>
      <pubDate>Tue, 25 Jul 2006 01:10:56 GMT</pubDate>
      <description>&lt;p&gt;
With an extra helping of curiosity and hell bent on learning something new &amp;amp; valuable,
I opened the book &lt;a href="http://www.bbd.com/stylin/index.htm"&gt;Stylin’ with CSS,
A Designers Guide&lt;/a&gt; written by Charles Wyke-Smith.
&lt;/p&gt;
&lt;p&gt;
I’ve been using CSS since the late 90’s so I’ve got most of the normal stuff committed
to memory. As a small aside, when I built my first site for Pop Art, I got a bunch
of Oohs and Ahhs for my use of CSS and then abruptly fell on my face when I realized
we had to support Netscape 4. So with some distance between us, I'm ready to get the
band back together.
&lt;/p&gt;
&lt;p&gt;
Before reading this book, I didn’t have a good grasp on CSS positioning. I consider
myself a fairly savvy pirate, so I said my best “Arrrrrgggg” and read the book. It’s
a really good read and chop full of examples. I highly recommend it. Here’s a few
things that I learned or thought of along the way:
&lt;/p&gt;
&lt;h1&gt;Percent of Content to Markup
&lt;/h1&gt;
&lt;p&gt;
Early in the book, Charles makes a point of comparing the HTML &amp;lt;table&amp;gt; method
with the CSS method of laying out a page. Using &amp;lt;div&amp;gt; tags results in much less
HTML around the content. When I read that, I thought back to my days of Assembly language
on an IBM OS/390 machine. This guy would have just hated to see what it took to open
a file, write something to it and close it. Hee!
&lt;/p&gt;
&lt;h1&gt;Quirks Mode
&lt;/h1&gt;
&lt;p&gt;
I first heard of quirks mode about a year ago while listening to a podcast. You’re
in quirks mode if you don’t declare the document type in Internet Explorer; in which
case IE will try to guess how to render the site. It normally does a really good job,
but it can behave oddly and render some markup in an unexpected manner. Its best to
steer clear of quirks mode. You no likey.
&lt;/p&gt;
&lt;h1&gt;Content Type Meta Tag
&lt;/h1&gt;
&lt;p&gt;
I learned this tag the hard way on a client site. Some of the text was rendering the
odd, non-printable characters, but only for certain browsers. It turned out that if
you set the encoding in IE manually it would work, but auto-select behaved oddly.
Simply setting the content type via a meta tag in the web page told IE what to expect
and the problem was solved. 
&lt;/p&gt;
&lt;h1&gt;Child Selectors and XPath
&lt;/h1&gt;
&lt;p&gt;
CSS has a way of defining selectors that resembles that XPath syntax. XPath is a way
to query an XML document for things like “get the third child of a node that is named
“employee”.
&lt;/p&gt;
&lt;p&gt;
This is how you would write a rule that says make content inside an &amp;lt;em&amp;gt; tag
green if its directly a child of the &amp;lt;p&amp;gt; tag:
&lt;/p&gt;
&lt;div class=sourcecodeblock&gt;p&amp;gt;em {color:green;} 
&lt;/div&gt;
&lt;p&gt;
There’s also a way to select adjacent tags, a similar concept in XPath. Here’s the
rule to select a &amp;lt;p&amp;gt; tag that is adjacent to an &amp;lt;h1&amp;gt; tag:
&lt;/p&gt;
&lt;div class=sourcecodeblock&gt;h1 + p {font-variant:small-caps;}
&lt;/div&gt;
&lt;p&gt;
There’s even a way to select tags based on their attributes. This is something that’s
done all the time when you write an XSLT document. This rule sets a border around
&amp;lt;img&amp;gt; tags when they have a title attribute:
&lt;/p&gt;
&lt;div class=sourcecodeblock&gt;img[title] {border:2px solid blue;}
&lt;/div&gt;
&lt;h1&gt;Universal Selector
&lt;/h1&gt;
&lt;p&gt;
The universal selector was new to me. The asterisk means anything, so this is the
rule to make all margins and padding set to zero. This sets all browsers to the same
standard, rather than relay on all browsers to have a similar padding and margin for
their &amp;lt;p&amp;gt; tags (which is a bad thing to rely on).
&lt;/p&gt;
&lt;div class=sourcecodeblock&gt;* {margin:0px; padding:0px}
&lt;/div&gt;
&lt;h1&gt;Pseudo-Classes and Pseudo-Elements
&lt;/h1&gt;
&lt;p&gt;
You’re probably familiar with the pseudo-classes for the anchor tag, &amp;lt;a&amp;gt;:
&lt;/p&gt;
&lt;div class=sourcecodeblock&gt;a:link { color:#000; }&lt;br&gt;
a:visited { color:#FF0000; }&lt;br&gt;
a:hover { color:#FFF; }&lt;br&gt;
a:active { color:#CCC; }
&lt;/div&gt;
&lt;p&gt;
Pseudo-classes are helpful when you need to change a class based on the state of the
item. Pseudo-elements were brand new to me. 
&lt;/p&gt;
&lt;p&gt;
I can target the first letter in an element:
&lt;/p&gt;
&lt;div class=sourcecodeblock&gt;p:first-letter { font-size:20pt; }
&lt;/div&gt;
&lt;p&gt;
and I can also target the entire first line:
&lt;/p&gt;
&lt;div class=sourcecodeblock&gt;p:first-line { font-variant:small-caps; }
&lt;/div&gt;
&lt;p&gt;
There are a bunch of other pseudo-elements like x:before and x:after, which get to
a very elegant way of clearing a float. This next method injects code into the page
using the :after pseudo-element.
&lt;/p&gt;
&lt;h1&gt;Alsett Clearing Method
&lt;/h1&gt;
&lt;p&gt;
When you float some elements left or write. One way to stop a lower element from floating
beside it is to set the “clear” instruction. Depending on your content is marked up,
this might be easy. However, it might require the use of some markup that has no other
purpose than to clear your float. This is something that should make your little CSS
red flag go up. So, some smart person named &lt;a href="http://www.csscreator.com/"&gt;Tony
Alsett&lt;/a&gt; figured out a snazzy way to insert some non-floated content in the page
just using CSS. So all you need is the right CSS class or ID reference and you’re
done. No crap hanging out in the markup just for presentational purposes.
&lt;/p&gt;
&lt;p&gt;
Here’s the technique:
&lt;/p&gt;
&lt;div class=sourcecodeblock&gt;.clearfix:after&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;content: “.”;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;display:block;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;height: 0;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;clear:both;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;visibility:hidden;&lt;br&gt;
}&lt;br&gt;
.clearfix { display:inline-block;}&lt;br&gt;
html .clearfix { height:1%;}&lt;br&gt;
.clearfix {display:block;}
&lt;/div&gt;
&lt;p&gt;
So, not that you would ever come up with this hack on your own, but this is the stuff
that gets you to a CSS standards based website with minimal presentation markup in
your XHTML file.
&lt;/p&gt;
&lt;p&gt;
So now we get on to the good stuff.
&lt;/p&gt;
&lt;h1&gt;Positioning
&lt;/h1&gt;
&lt;h3&gt;Set all margins and padding to zero
&lt;/h3&gt;
&lt;p&gt;
Just like a good brew master cleans his equipment before making a batch of BS IPA,
you should set all margins and padding to zero as a first step.
&lt;/p&gt;
&lt;div class=sourcecodeblock&gt;* {margin:0; padding:0}
&lt;/div&gt;
&lt;h3&gt;Vertical Margins Collapse
&lt;/h3&gt;
&lt;p&gt;
When you set vertical margins on tags, remember that when they meet, they will overlap
margins until one of the margins touches the border of the other element; they collapse.
This is not the case for horizontal margins. They no collapsey.
&lt;/p&gt;
&lt;h3&gt;How Big Is a Box
&lt;/h3&gt;
&lt;p&gt;
This is topic that can make you screwy if you care too deeply about multiple browsers.
When you set a with on a &amp;lt;p&amp;gt; tag to 400px and then add a left and right pad
of 50px, you’ve just created a 500px wide &amp;lt;p&amp;gt; tag. Now, if you add a border,
the width will grow even more. Basically, its additive. It doesn’t shrink the contents
of the &amp;lt;p&amp;gt; tag to keep the element set to 400px. 
&lt;/p&gt;
&lt;p&gt;
So now that you think you’ve got that, keep in mind that IE 5 and IE 5.5 for Windows
handles the box model differently. They do squeeze the content if you pad it. IE 6
does the same thing in Quirks mode too. Like I said, don’t be in Quirks mode, jerk.
&lt;/p&gt;
&lt;h1&gt;The Positioning Property
&lt;/h1&gt;
&lt;p&gt;
So, here it is. Positioning. Mmmm. Doesn’t it smell good?
&lt;/p&gt;
&lt;h3&gt;Static Positioning
&lt;/h3&gt;
&lt;p&gt;
This is the default. You know how it works, so move on. Nothing to see here.
&lt;/p&gt;
&lt;h3&gt;Relative Positioning
&lt;/h3&gt;
When you set a tag to render using relative positioning, it renders relative to where
it would have gone normally. For example, this rule will push a &amp;lt;p&amp;gt; tag down
30px and left 20px from where it would have normally rendered: 
&lt;p&gt;
&lt;/p&gt;
&lt;div class=sourcecodeblock&gt;.MyRelativeParaGraph { position:relative; top:30px; left:30px;
}
&lt;/div&gt;
&lt;p&gt;
Now, your &amp;lt;p&amp;gt; will be moved, and perhaps on top of thing item below it in the
flow of the document.
&lt;/p&gt;
&lt;h3&gt;Absolute Positioning
&lt;/h3&gt;
&lt;p&gt;
This setting takes the item out of the flow of the document. It’s baseline is the
item that is the positioning context for the absolutely positioned element. By default,
the body tag is the positioning context for elements. You can set a different positioning
context by using two tags, one nested inside the other. The outer tag can be set to
relative positioning. This makes the outer tag the positioning context for the inner
tag. The inner tag is set to absolute positioning and thus the &amp;lt;body&amp;gt; tag is
no longer the baseline.
&lt;/p&gt;
&lt;h3&gt;Fixed Positioning
&lt;/h3&gt;
&lt;p&gt;
This blows, don’t do it. It keeps an item fixed on a given spot in your browser, regardless
of where you scroll in a long document. It’s fixed. Get it?
&lt;/p&gt;
&lt;h1&gt;Floating &amp;amp; Clearing
&lt;/h1&gt;
&lt;p&gt;
Floating and clearing allow for the creating of a two or three column template in
the book. It’s a pretty cool concept. The easiest way to think about it is a simple
two column layout. Imagine a simple page with two &amp;lt;div&amp;gt; tags. You can make a
simple two column layout with these CSS rules:
&lt;/p&gt;
&lt;div class=sourcecodeblock&gt;#div1 { float:left; width:200px; background-color:#FFFF00;
}&lt;br&gt;
#div2 { background-color:#FF0000; }
&lt;/div&gt;
&lt;p&gt;
Three column layouts are nearly as easy. Its sweet tasty goodness. Dish up!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=a5941110-5cf8-41ac-8a9e-aafe2d7a18d5" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,a5941110-5cf8-41ac-8a9e-aafe2d7a18d5.aspx</comments>
      <category>asp.net</category>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=9e2c79db-e274-4e8c-a0b2-d35ef27d6f0f</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,9e2c79db-e274-4e8c-a0b2-d35ef27d6f0f.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,9e2c79db-e274-4e8c-a0b2-d35ef27d6f0f.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9e2c79db-e274-4e8c-a0b2-d35ef27d6f0f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <h3>Presented by Stuart Celarier
</h3>
        <p>
I planned on attending the <a href="http://subversion.tigris.org/">Subversion</a> talk
as a brush up on what I already felt fairly comfortable with. It turned out to be
the best session I attended at the entire conference. There's just something about
learning new things that rocks!
</p>
        <p>
Stuart presented the foundations of Subversion and how it differs from <a href="http://en.wikipedia.org/wiki/Concurrent_Versions_System">CVS</a>.
Corillian runs Subversion on Win2K3 server with Apache, where SVN executes as Apache
module. This exposes SVN over the http:// protocol. We run SVN as a Windows service,
so its exposed over the svn:// protocol. I'm not sure if we're missing out on anything
here. I can get to my source code repository remotely or in the office; the protocol
hasn't mattered to me yet.
</p>
        <p>
So I learned some huge things about SVN, and a few tiny things:
</p>
        <p>
          <strong>Huge Thing #1: SVN tracks file name changes</strong>
        </p>
        <p>
So, if I need to change the name of a file, or even move a file, SVN will keep working
just fine. It handles that event just fine. CVS would loose all of its history for
a file if you moved it. There were even some gasps in the audience.
</p>
        <p>
          <strong>Huge Thing #2: SVN has ACID transaction semantics</strong>
        </p>
        <p>
That's right, its atomic! If you commit ten files, and the ninth commit fails due
to a merge conflict, then they all roll back. This has implications for continuous
integration too. You don't want your build to kick off before all of your files are
checked in, or if the checkin bombs and only part of your code makes it into the repository. 
</p>
        <p>
          <strong>Tiny Thing #1: Branching and Tagging are cool</strong>
        </p>
        <p>
A branch is a copy of the code base that you intend to modify. A tag is a copy of
the code that you do not intend to change. You just tag it to place a reference to
a state of the code at a given point in time. SVN doesn't care if you think its a
branch or just tagged, it does the same thing; make a copy.
</p>
        <p>
The copy is physically just a map of the changes. Its not a physical copy of all the
files. That makes for much less work. You can branch locally and create a new path
of code or you can branch remotely on the SVN server. That was a handy little tip.
</p>
        <p>
Stuart walked the group through a nice example of branching some code, making changes,
merging it with the trunk, continuing to modify it, then doing a final merge with
the code to close out the branch. It can still get mind boggling at times, but the
feature is so cool, I might have to find a T-Shirt for it on Wireless or something.
</p>
        <p>
          <strong>Tiny Thing #2: Hook scripts</strong>
        </p>
        <p>
Hook scripts are little bits of code that you can execute before a transaction commits.
It might send an email or inspect the work to commit for business rules. 
</p>
        <p>
          <strong>Tiny Thing #3: _svn folder contents</strong>
        </p>
        <p>
The _svn folder contains a pristine copy of the files in a given folder. This is what
lets you checkout a project, get on an airplane, make changes to the file, groan in
dispair at your bad idea, and simply revert back to the original. You don't need direct
access to SVN to revert your changes. Of course, this means that your local copy is
twice as big as the project files because you have physical duplicates of everything.
</p>
        <p>
Stuart also recommended a white paper called Stringed Lines presented at Pattern Languages
of Programming (PLoP) in '98. It describes patterns of branching and merging. I haven't
been able to find an online reference yet.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=9e2c79db-e274-4e8c-a0b2-d35ef27d6f0f" />
      </body>
      <title>Code Camp - Understanding Subversion</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,9e2c79db-e274-4e8c-a0b2-d35ef27d6f0f.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/07/24/CodeCampUnderstandingSubversion.aspx</link>
      <pubDate>Mon, 24 Jul 2006 15:18:21 GMT</pubDate>
      <description>&lt;h3&gt;Presented by Stuart Celarier
&lt;/h3&gt;
&lt;p&gt;
I planned on attending the &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; talk
as a brush up on what I already felt fairly comfortable with. It turned out to be
the best session I attended at the entire conference. There's just something about
learning new things that rocks!
&lt;/p&gt;
&lt;p&gt;
Stuart presented the foundations of Subversion and how it differs from &lt;a href="http://en.wikipedia.org/wiki/Concurrent_Versions_System"&gt;CVS&lt;/a&gt;.
Corillian runs Subversion on Win2K3 server with Apache, where SVN executes as Apache
module. This exposes SVN over the http:// protocol. We run SVN as a Windows service,
so its exposed over the svn:// protocol. I'm not sure if we're missing out on anything
here. I can get to my source code repository remotely or in the office; the protocol
hasn't mattered to me yet.
&lt;/p&gt;
&lt;p&gt;
So I learned some huge things about SVN, and a few tiny things:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Huge Thing #1: SVN tracks file name changes&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
So, if I need to change the name of a file, or even move a file, SVN will keep working
just fine. It handles that event just fine. CVS would loose all of its history for
a file if you moved it. There were even some gasps in the audience.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Huge Thing #2: SVN has ACID transaction semantics&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
That's right, its atomic! If you commit ten files, and the ninth commit fails due
to a merge conflict, then they all roll back. This has implications for continuous
integration too. You don't want your build to kick off before all of your files are
checked in, or if the checkin bombs and only part of your code makes it into the repository. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Tiny Thing #1: Branching and Tagging are cool&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
A branch is a copy of the code base that you intend to modify. A tag is a copy of
the code that you do not intend to change. You just tag it to place a reference to
a state of the code at a given point in time. SVN doesn't care if you think its a
branch or just tagged, it does the same thing; make a copy.
&lt;/p&gt;
&lt;p&gt;
The copy is physically just a map of the changes. Its not a physical copy of all the
files. That makes for much less work. You can branch locally and create a new path
of code or you can branch remotely on the SVN server. That was a handy little tip.
&lt;/p&gt;
&lt;p&gt;
Stuart walked the group through a nice example of branching some code, making changes,
merging it with the trunk, continuing to modify it, then doing a final merge with
the code to close out the branch. It can still get mind boggling at times, but the
feature is so cool, I might have to find a T-Shirt for it on Wireless or something.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Tiny Thing #2: Hook scripts&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Hook scripts are little bits of code that you can execute before a transaction commits.
It might send an email or inspect the work to commit for business rules. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Tiny Thing #3: _svn folder contents&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The _svn folder contains a pristine copy of the files in a given folder. This is what
lets you checkout a project, get on an airplane, make changes to the file, groan in
dispair at your bad idea, and simply revert back to the original. You don't need direct
access to SVN to revert your changes. Of course, this means that your local copy is
twice as big as the project files because you have physical duplicates of everything.
&lt;/p&gt;
&lt;p&gt;
Stuart also recommended a white paper called Stringed Lines presented at Pattern Languages
of Programming (PLoP) in '98. It describes patterns of branching and merging. I haven't
been able to find an online reference yet.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=9e2c79db-e274-4e8c-a0b2-d35ef27d6f0f" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,9e2c79db-e274-4e8c-a0b2-d35ef27d6f0f.aspx</comments>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=00bba46e-e3c8-4600-8274-7956b07cdd09</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,00bba46e-e3c8-4600-8274-7956b07cdd09.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,00bba46e-e3c8-4600-8274-7956b07cdd09.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=00bba46e-e3c8-4600-8274-7956b07cdd09</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just realized today that I learned that trick about <a href="http://andrew.staging.popart.com/2006/07/02/ThankYouKonrad.aspx">overriding
span tags that wrap a custom server control</a> about eight months ago, and probably
another time before that. Is it age, stupidity, or just having to learn an entirely
new technology every couple of years doing this to me?
</p>
        <p>
Back then, I was writing a custom web part for a client's <a href="http://www.microsoft.com/windowsserver2003/technologies/sharepoint/default.mspx">SharePoint</a> installation.
As you may or may not know, writing controls for versions earlier than <a href="http://www.microsoft.com/office/preview/servers/sharepointserver/highlights.mspx">SharePoint
2007</a> can be quite a bear, and these were no exception. That control was emitting
tags that I didn't bake in, and I learned the technique back then too.
</p>
        <p>
Any who, it was sure fun to re-live (and re-learn) that experience all over again. Yay.
</p>
        <p>
Hey, careful with those sparklers. Happy Fourth!
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=00bba46e-e3c8-4600-8274-7956b07cdd09" />
      </body>
      <title>Hey deja vu...did you see that cat?</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,00bba46e-e3c8-4600-8274-7956b07cdd09.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/07/04/HeyDejaVudidYouSeeThatCat.aspx</link>
      <pubDate>Tue, 04 Jul 2006 03:21:10 GMT</pubDate>
      <description>&lt;p&gt;
I just realized today that I learned that trick about &lt;a href="http://andrew.staging.popart.com/2006/07/02/ThankYouKonrad.aspx"&gt;overriding
span tags that wrap a custom server control&lt;/a&gt; about eight months ago, and probably
another time before that. Is it age, stupidity, or just having to learn an entirely
new technology every couple of years doing this to me?
&lt;/p&gt;
&lt;p&gt;
Back then, I was writing a custom web part for a client's &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/sharepoint/default.mspx"&gt;SharePoint&lt;/a&gt;&amp;nbsp;installation.
As you may or may not&amp;nbsp;know,&amp;nbsp;writing controls for versions earlier than &lt;a href="http://www.microsoft.com/office/preview/servers/sharepointserver/highlights.mspx"&gt;SharePoint
2007&lt;/a&gt; can be quite a bear, and these were no exception. That control was emitting
tags that I didn't bake in, and I learned the technique back then too.
&lt;/p&gt;
&lt;p&gt;
Any who, it was sure fun to re-live&amp;nbsp;(and re-learn) that experience all over again.&amp;nbsp;Yay.
&lt;/p&gt;
&lt;p&gt;
Hey, careful with those sparklers. Happy Fourth!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=00bba46e-e3c8-4600-8274-7956b07cdd09" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,00bba46e-e3c8-4600-8274-7956b07cdd09.aspx</comments>
      <category>learning</category>
      <category>SharePoint</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=36bf0cdb-1838-4544-bd46-9dc8dda79f56</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,36bf0cdb-1838-4544-bd46-9dc8dda79f56.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,36bf0cdb-1838-4544-bd46-9dc8dda79f56.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=36bf0cdb-1838-4544-bd46-9dc8dda79f56</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img alt="Per Tag Formatting options" src="http://andrew.staging.popart.com/content/binary/autoformat.png" border="1" />
        </p>
        <p>
We employ the use of <a href="http://www.mikeindustries.com/sifr/">sIFR</a> on
a regular basis. Its great at showing cool fonts without resorting to a massive effort
of managing image text files, plus they're search engine friendly.
</p>
        <p>
We encountered a problem the other day where sIFR was displaying a space character
to the left of the text. It wasn't horrible, but still undesireable. Upon examination
of the xHTML source, the markup looked like this:
</p>
        <div style="BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #000 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #000 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #000 1px solid; FONT-FAMILY: courier new; BACKGROUND-COLOR: #ffdf8c">&lt;h1&gt;<br />
   Upcoming Events&lt;/h1&gt;
</div>
        <p>
That was the default formatting behavior of VS.Net 2005. My normal M.O. is to type
or paste in the xHTML content, press CTRL+E+D (the chord that equates to the
menu bar command of Edit, Advanced, Format Document). This command formats both
xHTML content and C# code, whatever you're doing in VS.Net; a nice time
saver.
</p>
        <p>
In the back of my mind, I recall seeing something on Google Groups or a web site where
someone asked if the formatting template was editable, and I thought the response
was negative. It would be nice to edit that template, but it is what it is, and perhaps
in a future version. Well, the template that VS.Net applies isn't exactly how
I would format the code if I was doing it manually, but it was pretty close, so that
didn't bother me much at all.
</p>
        <p>
Enter: The problem with sIFR displaying the first space before the "U" in Upcoming
Events.
</p>
        <p>
There was no reason sIFR should be displaying this space. The only way we saw to fix
it was delete the opening spaces so the xHTML looked like this:
</p>
        <div style="BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #000 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #000 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #000 1px solid; FONT-FAMILY: courier new; BACKGROUND-COLOR: #ffdf8c">&lt;h1&gt;Upcoming
Events&lt;/h1&gt;
</div>
        <p>
Easy enough to do for one instance, but we're talking about a lot of pages here.
</p>
        <p>
Justin Garrity from <a href="http://popcornsmell.blogspot.com/">the Design Team</a> asked
the obvious question, "<em>Can you modify the formating template?</em>" I answered,
"<em>Nope, it is what it is. Where are the interns?</em>"
</p>
        <p>
Justin wasn't satisfied with that answer and proceeded to tackle the problem with
a tanacity that suggested he was actually an undercover expert in Visual Studio.Net
2005 and perhaps also certified in deep sea welding.
</p>
        <p>
The converstation went somewhat like this:
</p>
        <p>
Justin said "<em>Hey, uh, can you bring up that options window?</em>" I said "<em>Sure</em>"
and clicked Tools, Options. Then he said, "<em>Uh.. yeah, can you click expand Text
Editor, HTML and click the Format item?</em>" I was getting nervous. I hadn't delved
into this section of VS.Net too far, and it seemed oddly appropriate for exactly what
we were looking for. My suspicions about Justin where beginning to rise.
</p>
        <p>
"<em>Hey Andrew, can you click the Tag Specific Options button? Yeah, now expand the
Client HTML Tags item. Now click the New Tag button and create a rule for the H1 tag.
Its not in the rule set by default. Edit the Per Tag Formatting options section
and set the Line Breaks item to the value of Before and After...</em>"
</p>
        <p>
And there we go. The auto format command of ctrl+E+D works like a champ. Rather than
solve the sIFR problem, we changed the rules and away we go.
</p>
        <p>
Now, what else is Justin going to show us about VS.Net 2005?
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=36bf0cdb-1838-4544-bd46-9dc8dda79f56" />
      </body>
      <title>Want to learn VS.Net 2005? Then ask a graphic designer for help.</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,36bf0cdb-1838-4544-bd46-9dc8dda79f56.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/07/02/WantToLearnVSNet2005ThenAskAGraphicDesignerForHelp.aspx</link>
      <pubDate>Sun, 02 Jul 2006 16:47:38 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img alt="Per Tag Formatting options" src="http://andrew.staging.popart.com/content/binary/autoformat.png" border=1&gt;
&lt;/p&gt;
&lt;p&gt;
We&amp;nbsp;employ the use of&amp;nbsp;&lt;a href="http://www.mikeindustries.com/sifr/"&gt;sIFR&lt;/a&gt; on
a regular basis. Its great at showing cool fonts without resorting to a massive effort
of managing image text files, plus they're search engine friendly.
&lt;/p&gt;
&lt;p&gt;
We encountered a problem the other day where sIFR was displaying a space character
to the left of the text. It wasn't horrible, but still undesireable. Upon examination
of the xHTML source, the markup looked like this:
&lt;/p&gt;
&lt;div style="BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #000 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #000 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #000 1px solid; FONT-FAMILY: courier new; BACKGROUND-COLOR: #ffdf8c"&gt;&amp;lt;h1&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;nbsp; Upcoming Events&amp;lt;/h1&amp;gt;
&lt;/div&gt;
&lt;p&gt;
That was the default formatting behavior of VS.Net 2005. My normal M.O. is to type
or paste&amp;nbsp;in the xHTML content, press CTRL+E+D (the chord that equates to the
menu bar command of Edit, Advanced, Format Document). This command formats&amp;nbsp;both
xHTML content&amp;nbsp;and C# code, whatever you're doing in VS.Net;&amp;nbsp;a nice time
saver.
&lt;/p&gt;
&lt;p&gt;
In the back of my mind, I recall seeing something on Google Groups or a web site where
someone asked if the formatting template was editable, and I thought the response
was negative. It would be nice to edit that template, but it is what it is, and perhaps
in a future version. Well, the template that&amp;nbsp;VS.Net applies isn't exactly how
I would format the code if I was doing it manually, but it was pretty close, so that
didn't bother me much at all.
&lt;/p&gt;
&lt;p&gt;
Enter: The problem with sIFR displaying the first space before the "U" in Upcoming
Events.
&lt;/p&gt;
&lt;p&gt;
There was no reason sIFR should be displaying this space. The only way we saw to fix
it was delete the opening spaces so the xHTML looked like this:
&lt;/p&gt;
&lt;div style="BORDER-RIGHT: #000 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #000 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #000 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #000 1px solid; FONT-FAMILY: courier new; BACKGROUND-COLOR: #ffdf8c"&gt;&amp;lt;h1&amp;gt;Upcoming
Events&amp;lt;/h1&amp;gt;
&lt;/div&gt;
&lt;p&gt;
Easy enough to do for one instance, but we're talking about a lot of pages here.
&lt;/p&gt;
&lt;p&gt;
Justin Garrity&amp;nbsp;from &lt;a href="http://popcornsmell.blogspot.com/"&gt;the&amp;nbsp;Design&amp;nbsp;Team&lt;/a&gt;&amp;nbsp;asked
the obvious question, "&lt;em&gt;Can you modify the formating template?&lt;/em&gt;" I answered,
"&lt;em&gt;Nope, it is what it is. Where are the interns?&lt;/em&gt;"
&lt;/p&gt;
&lt;p&gt;
Justin wasn't satisfied with that answer and proceeded to tackle the problem with
a tanacity that suggested he was actually an undercover expert in Visual Studio.Net
2005 and perhaps also certified in deep sea welding.
&lt;/p&gt;
&lt;p&gt;
The converstation went somewhat like this:
&lt;/p&gt;
&lt;p&gt;
Justin said "&lt;em&gt;Hey, uh, can you bring up that options window?&lt;/em&gt;" I said "&lt;em&gt;Sure&lt;/em&gt;"
and clicked Tools, Options. Then he said, "&lt;em&gt;Uh.. yeah, can you click expand Text
Editor, HTML and click the Format item?&lt;/em&gt;" I was getting nervous. I hadn't delved
into this section of VS.Net too far, and it seemed oddly appropriate for exactly what
we were looking for. My suspicions about Justin where beginning to rise.
&lt;/p&gt;
&lt;p&gt;
"&lt;em&gt;Hey Andrew, can you click the Tag Specific Options button? Yeah, now expand the
Client HTML Tags item. Now click the New Tag button and create a rule for the H1 tag.
Its not in the rule set by default.&amp;nbsp;Edit the Per Tag Formatting options section
and set the Line Breaks item to the value of Before and After...&lt;/em&gt;"
&lt;/p&gt;
&lt;p&gt;
And there we go. The auto format command of ctrl+E+D works like a champ. Rather than
solve the sIFR problem, we changed the rules and away we go.
&lt;/p&gt;
&lt;p&gt;
Now, what else is Justin going to show us about VS.Net 2005?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=36bf0cdb-1838-4544-bd46-9dc8dda79f56" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,36bf0cdb-1838-4544-bd46-9dc8dda79f56.aspx</comments>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=d816f991-06bb-400e-bfa7-459bc2808629</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,d816f991-06bb-400e-bfa7-459bc2808629.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,d816f991-06bb-400e-bfa7-459bc2808629.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d816f991-06bb-400e-bfa7-459bc2808629</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img alt="Developer Toolbar" hspace="6" src="http://andrew.staging.popart.com/content/binary/iedevtoolbar.png" align="left" vspace="6" border="1" />Well,
just where did the time go? My last post was about 23 days ago. Ack!
</p>
        <p>
So, I installed <a href="http://www.microsoft.com/windows/ie/downloads/default.mspx">Internet
Explorer 7 Beta 3</a> today. It looks pretty much the same as the last beta, as in
good. 
</p>
        <p>
In the <a href="http://www.microsoft.com/windows/ie/ie7/downloads/checklists.mspx">checklist</a> page
for IE7, you'll find the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;displaylang=en">Developer
Toolbar</a>. Under the menu item named "Misc", you'll see a link to the W3C specifications
for XHTML and CSS. 
</p>
        <p>
What are they thinking? Do they know that people are more likely to author web content
according to established specifications if they put these items in the toolbar? There's
a validation button too! 
</p>
        <p>
These types of enhancements just might be the thing to help Internet Explorer take
hold in the market and become the number one browser in the world!
</p>
        <p>
So, I've decided that its high time I learn more about CSS. I've been using it regularly
for several years but I've never ventured too far into the positioning stuff. I have
most of the normal css instructions memorized. The real trick is learning how to use
them in Windows IE &amp; Firefox, plus Mac Firefox and Safari. That's about the extent
that we care to travel.
</p>
        <p>
When I first started at <a href="http://www.popart.com/">Pop Art</a>, I was all about
the latest CSS commands, but I was quickly reeled back in by the requirement
to support Netscape 4. Mr. &lt;table&gt;, please say hello to spacer.gif. Ack!! Just
like a fine wine, we've aged a bit and it's time to get on to the better stuff. 
</p>
        <p>
I've been reading <a href="http://www.bbd.com/stylin/index.htm">Stylin' with CSS</a> by
Charles Wyke-Smith. It's a pretty good read and not to thick. It was recommended to
me by <a href="http://www.parrfolio.com/">Ryan Parr</a>, our resident CSS expert
in the Design department. I have two other books that are waiting on desks after I
finish this one.
</p>
        <p>
But after loading up the Developer Toolbar in IE7, I think I need to read the CSS
specification on the W3C site too. After all, it is the spec. That's what all these
books are actually writing about. I wonder if the spec has any good stories in it...
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=d816f991-06bb-400e-bfa7-459bc2808629" />
      </body>
      <title>Built To Spec? You Jerks!!!</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,d816f991-06bb-400e-bfa7-459bc2808629.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/07/01/BuiltToSpecYouJerks.aspx</link>
      <pubDate>Sat, 01 Jul 2006 21:45:28 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img alt="Developer Toolbar" hspace=6 src="http://andrew.staging.popart.com/content/binary/iedevtoolbar.png" align=left vspace=6 border=1&gt;Well,
just where did the time go? My last post was about 23 days ago. Ack!
&lt;/p&gt;
&lt;p&gt;
So, I installed &lt;a href="http://www.microsoft.com/windows/ie/downloads/default.mspx"&gt;Internet
Explorer 7 Beta 3&lt;/a&gt; today. It looks pretty much the same as the last beta, as in
good. 
&lt;/p&gt;
&lt;p&gt;
In the &lt;a href="http://www.microsoft.com/windows/ie/ie7/downloads/checklists.mspx"&gt;checklist&lt;/a&gt; page
for IE7, you'll find the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displaylang=en"&gt;Developer
Toolbar&lt;/a&gt;.&amp;nbsp;Under the menu item named "Misc", you'll see a link to the W3C specifications
for XHTML and CSS. 
&lt;/p&gt;
&lt;p&gt;
What are they thinking? Do they know that people are more likely to author web content
according to established specifications if they put these items in the toolbar? There's
a validation button too! 
&lt;/p&gt;
&lt;p&gt;
These types of enhancements just might be the thing to help Internet Explorer take
hold in the market and become the number one browser in the world!
&lt;/p&gt;
&lt;p&gt;
So, I've decided that its high time I learn more about CSS. I've been using it regularly
for several years but I've never ventured too far into the positioning stuff. I have
most of the normal css instructions memorized. The real trick is learning how to use
them in Windows IE &amp;amp; Firefox, plus Mac Firefox and Safari. That's about the extent
that we care to travel.
&lt;/p&gt;
&lt;p&gt;
When I first started at &lt;a href="http://www.popart.com/"&gt;Pop Art&lt;/a&gt;, I was all about
the latest CSS commands, but&amp;nbsp;I was quickly reeled back in by the requirement
to support Netscape 4. Mr. &amp;lt;table&amp;gt;, please say hello to spacer.gif. Ack!! Just
like a fine wine, we've aged a bit and it's time to get on to the better stuff. 
&lt;/p&gt;
&lt;p&gt;
I've been reading &lt;a href="http://www.bbd.com/stylin/index.htm"&gt;Stylin' with CSS&lt;/a&gt; by
Charles Wyke-Smith. It's a pretty good read and not to thick. It was recommended to
me by &lt;a href="http://www.parrfolio.com/"&gt;Ryan Parr&lt;/a&gt;, our resident CSS&amp;nbsp;expert
in the Design department. I have two other books that are waiting on desks after I
finish this one.
&lt;/p&gt;
&lt;p&gt;
But after loading up the Developer Toolbar in IE7, I think I need to read the CSS
specification on the W3C site too. After all, it is the spec. That's what all these
books are actually writing about. I wonder if the spec has any good stories in it...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=d816f991-06bb-400e-bfa7-459bc2808629" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,d816f991-06bb-400e-bfa7-459bc2808629.aspx</comments>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=5ac67449-2372-48ec-96f7-ecef586e26e7</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,5ac67449-2372-48ec-96f7-ecef586e26e7.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,5ac67449-2372-48ec-96f7-ecef586e26e7.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=5ac67449-2372-48ec-96f7-ecef586e26e7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img height="132" alt="dnn creative magazine" hspace="6" src="http://andrew.staging.popart.com/content/binary/dnncreativemagazine.png" width="294" align="left" border="0" />We've
been making some great progress on DNN customizations, skins and implementations.
I know there's a large community of DNN enthusiasts out there. Last weekend, I came
across this web site, <a href="http://dnncreative.com/">http://dnncreative.com</a>. 
</p>
        <p>
Its a great resource for one of the items we enjoy, creativity and CSS on DNN. I signed
up and paid my fee to get the member only content. There's a large collection of screen
casts that explain the details of CSS in the DNN environment. They're currently on
Issue #9. Each issue is chop full of great DNN information. The content is spot on
for what we like to do. It's a real gem.
</p>
        <p>
There's great content on here for people just getting started with DNN as well as
advanced info for CSS specialists. A great job by some blokes across the pond. 
</p>
        <p>
Sometimes I really enjoy starting at the beginning, and this is one of those times.
I settle down in my chair with a snack, and watch all the videos from the very beginning,
no matter how basic. For one thing, it helps me keep fresh on how to explain DNN to
other folks. Plus, le Wife will be out of town for a bit. That means I can plug my
laptop into the big screen projection system in my basement, and watch to some
great content in the confort of my home media center; uninterrupted.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=5ac67449-2372-48ec-96f7-ecef586e26e7" />
      </body>
      <title>Small Fish, Big Pond</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,5ac67449-2372-48ec-96f7-ecef586e26e7.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/05/18/SmallFishBigPond.aspx</link>
      <pubDate>Thu, 18 May 2006 17:50:26 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img height=132 alt="dnn creative magazine" hspace=6 src="http://andrew.staging.popart.com/content/binary/dnncreativemagazine.png" width=294 align=left border=0&gt;We've
been making some great progress on DNN customizations, skins and implementations.
I know there's a large community of DNN enthusiasts out there. Last weekend, I came
across this web site, &lt;a href="http://dnncreative.com/"&gt;http://dnncreative.com&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Its a great resource for one of the items we enjoy, creativity and CSS on DNN. I signed
up and paid my fee to get the member only content. There's a large collection of screen
casts that explain the details of CSS in the DNN environment. They're currently on
Issue #9. Each issue is chop full of great DNN information. The content is spot on
for what we like to do. It's a real gem.
&lt;/p&gt;
&lt;p&gt;
There's great content on here for people just getting started with DNN as well as
advanced info for CSS specialists. A great job by some blokes across the pond. 
&lt;/p&gt;
&lt;p&gt;
Sometimes I really enjoy starting at the beginning, and this is one of those times.
I settle down in my chair with a snack, and watch all the videos from the very beginning,
no matter how basic. For one thing, it helps me keep fresh on how to explain DNN to
other folks. Plus, le Wife will be out of town for a bit. That means I can plug my
laptop into the big screen projection system in my basement, and&amp;nbsp;watch to some
great content in the confort of my home media center; uninterrupted.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=5ac67449-2372-48ec-96f7-ecef586e26e7" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,5ac67449-2372-48ec-96f7-ecef586e26e7.aspx</comments>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=37b46884-5fd3-456c-8f45-452acf2cd451</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,37b46884-5fd3-456c-8f45-452acf2cd451.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,37b46884-5fd3-456c-8f45-452acf2cd451.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=37b46884-5fd3-456c-8f45-452acf2cd451</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been meaning to learn more about the VS.Net 2005 details, so after a nicely grilled
steak and a glass of wine, I set myself down to read the MSDN library on the topic
of Code Snippets.
</p>
        <p>
Code Snippets are one of the great new features in VS.Net 2005. They provide a method
for a programmer to quickly insert snippets of code by typing just a few keystrokes. 
</p>
        <p>
An examination of the code over the course of several projects will reveal a set of
patterns: classes, properties, event handlers, constructors and methods. Just a few
characters vary in these patterns.
</p>
        <div style="PADDING-RIGHT: 6px; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; PADDING-TOP: 6px; FONT-FAMILY: courier new; BACKGROUND-COLOR: #cccccc">private
int _name;<br /><br />
public int Name<br />
{<br />
   get { return _name; }<br />
   set { _name = value; }<br />
}
</div>
        <p>
The preceding lines of code provide an example of the pattern inherent in a property.
The values "_name" and "Name" represent the private and public values accessible to
the class. Code Snippets allow you to produce this code with a minimal amount of keystrokes. 
</p>
        <p>
To produce the property show above:
</p>
        <p>
Move your cursor to an appropriate position the class<br />
Press Control+K, Control+X to bring up the Code Snippets Intellisense Context Menu<br />
Type "prop" and press the Tab key
</p>
        <p>
This will result in the following code:
</p>
        <p>
          <img src="http://andrew.staging.popart.com/content/binary/snippet1.png" border="1" />
        </p>
        <p>
The cursor starts at the first green section, which defaults to the integer data type.
Entering the new data type will overwrite the characters "int". After the actual datatype
is entered, pressing the Tab key will advance the cursor to the next green section,
which defaults to "myVar". Entering the actual value here will overwrite the characters
on line 19, line 23 and line 24 simultaneously. This is where you should see the value
of code snippets. While C# is slightly more cryptic than VB.Net, there is still a
great deal of value to be gained by using a tool like Code Snippets.
</p>
        <p>
There are similar snippets for classes, interfaces and many other patterns. There
are over 50 snippets by default. Custom snippets can also be created. 
</p>
        <p>
Anywhere a pattern exists in code, a solid case can be made for using Code Snippets.
Imagine a class that has over 20 properties. The economy of scale becomes obvious.
</p>
        <p>
Code Snippets are great, but its just the start. 3rd party vendors like <a href="http://www.devexpress.com/">Developer
Express</a> have built great tools like <a href="http://www.devexpress.com/Products/NET/CodeRush/">CodeRush</a>,
which represent the next level up in productivity. If you have a great deal of code
that could be automatically generated, tools like <a href="http://www.codesmithtools.com/">CodeSmith</a> represent
the 3rd level. If you stand to gain a huge advantage from code generation, you can
author your own code generator using Microsoft.Net classes. That's right; code that
writes code. I just blew your mind.<br /></p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=37b46884-5fd3-456c-8f45-452acf2cd451" />
      </body>
      <title>Code Snippets</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,37b46884-5fd3-456c-8f45-452acf2cd451.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/05/02/CodeSnippets.aspx</link>
      <pubDate>Tue, 02 May 2006 04:02:51 GMT</pubDate>
      <description>&lt;p&gt;
I've been meaning to learn more about the VS.Net 2005 details, so after a nicely grilled
steak and a glass of wine, I set myself down to read the MSDN library on the topic
of Code Snippets.
&lt;/p&gt;
&lt;p&gt;
Code Snippets are one of the great new features in VS.Net 2005. They provide a method
for a programmer to quickly insert snippets of code by typing just a few keystrokes. 
&lt;/p&gt;
&lt;p&gt;
An examination of the code over the course of several projects will reveal a set of
patterns: classes, properties, event handlers, constructors and methods. Just a few
characters vary in these patterns.
&lt;/p&gt;
&lt;div style="PADDING-RIGHT: 6px; PADDING-LEFT: 6px; PADDING-BOTTOM: 6px; PADDING-TOP: 6px; FONT-FAMILY: courier new; BACKGROUND-COLOR: #cccccc"&gt;private
int _name;&lt;br&gt;
&lt;br&gt;
public int Name&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get { return _name; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set { _name = value; }&lt;br&gt;
}
&lt;/div&gt;
&lt;p&gt;
The preceding lines of code provide an example of the pattern inherent in a property.
The values "_name" and "Name" represent the private and public values accessible to
the class. Code Snippets allow you to produce this code with a minimal amount of keystrokes. 
&lt;/p&gt;
&lt;p&gt;
To produce the property show above:
&lt;/p&gt;
&lt;p&gt;
Move your cursor to an appropriate position the class&lt;br&gt;
Press Control+K, Control+X to bring up the Code Snippets Intellisense Context Menu&lt;br&gt;
Type "prop" and press the Tab key
&lt;/p&gt;
&lt;p&gt;
This will result in the following code:
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://andrew.staging.popart.com/content/binary/snippet1.png" border=1&gt;
&lt;/p&gt;
&lt;p&gt;
The cursor starts at the first green section, which defaults to the integer data type.
Entering the new data type will overwrite the characters "int". After the actual datatype
is entered, pressing the Tab key will advance the cursor to the next green section,
which defaults to "myVar". Entering the actual value here will overwrite the characters
on line 19, line 23 and line 24 simultaneously. This is where you should see the value
of code snippets. While C# is slightly more cryptic than VB.Net, there is still a
great deal of value to be gained by using a tool like Code Snippets.
&lt;/p&gt;
&lt;p&gt;
There are similar snippets for classes, interfaces and many other patterns. There
are over 50 snippets by default. Custom snippets can also be created. 
&lt;/p&gt;
&lt;p&gt;
Anywhere a pattern exists in code, a solid case can be made for using Code Snippets.
Imagine a class that has over 20 properties. The economy of scale becomes obvious.
&lt;/p&gt;
&lt;p&gt;
Code Snippets are great, but its just the start. 3rd party vendors like &lt;a href="http://www.devexpress.com/"&gt;Developer
Express&lt;/a&gt; have built great tools like &lt;a href="http://www.devexpress.com/Products/NET/CodeRush/"&gt;CodeRush&lt;/a&gt;,
which represent the next level up in productivity. If you have a great deal of code
that could be automatically generated, tools like &lt;a href="http://www.codesmithtools.com/"&gt;CodeSmith&lt;/a&gt; represent
the 3rd level. If you stand to gain a huge advantage from code generation, you can
author your own code generator using Microsoft.Net classes. That's right; code that
writes code. I just blew your mind.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=37b46884-5fd3-456c-8f45-452acf2cd451" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,37b46884-5fd3-456c-8f45-452acf2cd451.aspx</comments>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=31b0be01-5dc9-4f86-b017-66b845b6eb8c</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,31b0be01-5dc9-4f86-b017-66b845b6eb8c.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,31b0be01-5dc9-4f86-b017-66b845b6eb8c.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=31b0be01-5dc9-4f86-b017-66b845b6eb8c</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So I'm writing this little program that calls web services from BaseCamp. I'm creating
some functionality that exports milestone lists to Microsoft Excel. Anyone who is
particularly fond of Excel can then make any necessary edits, then upload the changes
back into BaseCamp.
</p>
        <p>
There's not much to the Excel query, so long as you know what your doing. This <a href="http://weblogs.asp.net/donxml/archive/2003/08/21/24908.aspx">post</a> helped
quite a bit with the necessary code to issue select queries on Excel documents.
</p>
        <p>
Right now I'm importing and exporting in ASP.Net using the wizard control to
step through the process. I'm thinking this could also be a reasonable Visual Studio
Tools for Office (VSTO) project too. Ahhh, its only Friday night, and I've got all
weekend to tinker. Yay!
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=31b0be01-5dc9-4f86-b017-66b845b6eb8c" />
      </body>
      <title>Query Excel from ADO.Net</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,31b0be01-5dc9-4f86-b017-66b845b6eb8c.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/04/15/QueryExcelFromADONet.aspx</link>
      <pubDate>Sat, 15 Apr 2006 04:51:40 GMT</pubDate>
      <description>&lt;p&gt;
So I'm writing this little program that calls web services from BaseCamp. I'm creating
some functionality that exports milestone lists to Microsoft Excel. Anyone who is
particularly fond of Excel can then make any necessary edits, then upload the changes
back into BaseCamp.
&lt;/p&gt;
&lt;p&gt;
There's not much to the Excel query, so long as you know what your doing. This &lt;a href="http://weblogs.asp.net/donxml/archive/2003/08/21/24908.aspx"&gt;post&lt;/a&gt; helped
quite a bit with the necessary code to issue select queries on Excel documents.
&lt;/p&gt;
&lt;p&gt;
Right now I'm importing and exporting in ASP.Net using&amp;nbsp;the wizard control to
step through the process. I'm thinking this could also be a reasonable Visual Studio
Tools for Office (VSTO) project too. Ahhh, its only Friday night, and I've got all
weekend to tinker. Yay!
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=31b0be01-5dc9-4f86-b017-66b845b6eb8c" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,31b0be01-5dc9-4f86-b017-66b845b6eb8c.aspx</comments>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=0d31b178-0580-49fa-afc4-19c211bce2f9</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,0d31b178-0580-49fa-afc4-19c211bce2f9.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,0d31b178-0580-49fa-afc4-19c211bce2f9.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0d31b178-0580-49fa-afc4-19c211bce2f9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We had a bit of a false alarm starting about 30 hours ago. Microsoft is releasing
an update through their normal means that will alter the way Flash and similar ActiveX
technologies render in Internet Explorer. Its due to legal action; but that part of
the issue is not relevant here. The facts, as I believe them to be today at 1:35pm,
Pacific are as follows:
</p>
        <ul>
          <li>
Microsoft <a href="http://msdn.microsoft.com/ieupdate/">announced</a> the intended
action in December, 2005.</li>
          <li>
On February 10, 2006, Microsoft made a preview of the update, indexed
as <a href="http://www.microsoft.com/downloads/details.aspx?amp;amp;displaylang=en&amp;familyid=999d37c3-4013-48de-b950-ee01256aaa92&amp;displaylang=en">912945</a>, so
ISVs and corporations could test the behavior. It was not included in the Windows
Automatic Updates feature. Windows users would only have this patch installed
if they manually installed it, or their system administrator pushed it onto their
machine.</li>
          <li>
On April 11, 2006, Microsoft released a patch, indexed as <a href="http://www.microsoft.com/technet/security/Bulletin/MS06-013.mspx">912812</a>, that
cancels (reverts) the ActiveX behavior change made in 912945. This release, 912812, was distributed
up by the Windows Automatic Update feature as a High Priority update.</li>
          <li>
The June, 2006 update cycle will include a patch that will perminently change the
behavior of the ActiveX controls, like 912945 exhibits. This patch will likely be
distributed by the Windows Automatic Update feature as a High Priority update.</li>
        </ul>
        <p>
The false alarm started when a rumor started that Microsoft had released the June
patch early. We mistakenly assumed that 912812 was the behavior altering patch that
would destroy some websites due to the lack of preparation on our part. 
</p>
        <p>
I'm reminded of a saying that my friend's dad says: "I thought I was wrong once, and
that was when I thought I was wrong." 
</p>
        <p>
It never really sat well with me when I heard the rumor. There are corporations that
spend millions of dollars with Microsoft, and they probably have significant interests
at stake here. I couldn't account for the apparent no-warning deployment of a significant
behavior change. Especially when they said the deployment would be in June. It didn't
follow the historical pattern of my experiences with Microsoft.
</p>
        <p>
I read the 912812 article over and over. About the tenth or fifteenth time, it finally
struck me. By the time my eyes got to the meat of the article, they were so glazed
over that I had been skipping the most imporant facts. <strong>The rumors had brainwashed
me and I was reading what I wanted to see, not was was printed on the document.</strong></p>
        <p>
This text is the important part:
</p>
        <p>
          <em>Microsoft is releasing a Compatibility Patch on April 11, 2006. As soon as it
is deployed, the Compatibility Patch will temporarily return Internet Explorer to
the previous functionality for handling ActiveX controls. This Compatibility Patch
will function until an Internet Explorer update is released as part of the June update
cycle, at which time the changes to the way Internet Explorer handles ActiveX controls
will be permanent.</em>
        </p>
        <p>
So that's pretty clear. The 4/11 patch, 912812, is the compatibility patch and it
returns the previous functionality for a short time. It should have been written better.
Its still hard to decifier without a good mental picture of the issues.
</p>
        <p>
Now, to be clear, I could be wrong and I will continue some cross checking, but this
is what I believe at this moment.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=0d31b178-0580-49fa-afc4-19c211bce2f9" />
      </body>
      <title>Confusion and Misinformation</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,0d31b178-0580-49fa-afc4-19c211bce2f9.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/04/13/ConfusionAndMisinformation.aspx</link>
      <pubDate>Thu, 13 Apr 2006 20:48:20 GMT</pubDate>
      <description>&lt;p&gt;
We had a bit of a false alarm starting about 30 hours ago. Microsoft is releasing
an update through their normal means that will alter the way Flash and similar ActiveX
technologies render in Internet Explorer. Its due to legal action; but that part of
the issue is not relevant here. The facts, as I believe them to be today at 1:35pm,
Pacific are as follows:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Microsoft &lt;a href="http://msdn.microsoft.com/ieupdate/"&gt;announced&lt;/a&gt; the intended
action&amp;nbsp;in December, 2005.&lt;/li&gt;
&lt;li&gt;
On February 10, 2006, Microsoft made&amp;nbsp;a preview&amp;nbsp;of the update,&amp;nbsp;indexed
as&amp;nbsp;&lt;a href="http://www.microsoft.com/downloads/details.aspx?amp;amp;displaylang=en&amp;amp;familyid=999d37c3-4013-48de-b950-ee01256aaa92&amp;amp;displaylang=en"&gt;912945&lt;/a&gt;,&amp;nbsp;so
ISVs and corporations could test the behavior. It was not included in the Windows
Automatic Updates feature. Windows users&amp;nbsp;would only have this patch installed
if they manually installed it, or their system administrator pushed it onto their
machine.&lt;/li&gt;
&lt;li&gt;
On April 11, 2006, Microsoft released a patch, indexed as &lt;a href="http://www.microsoft.com/technet/security/Bulletin/MS06-013.mspx"&gt;912812&lt;/a&gt;,&amp;nbsp;that
cancels (reverts)&amp;nbsp;the ActiveX behavior change made in 912945. This release, 912812,&amp;nbsp;was&amp;nbsp;distributed
up by the Windows Automatic Update feature as a High Priority update.&lt;/li&gt;
&lt;li&gt;
The June, 2006 update cycle will include a patch that will perminently change the
behavior of the ActiveX controls, like 912945 exhibits. This patch will likely be
distributed by the Windows Automatic Update feature as a High Priority update.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The false alarm started when a rumor started that Microsoft had released the June
patch early. We mistakenly assumed that 912812 was the behavior altering patch that
would destroy some websites due to the lack of preparation on our part. 
&lt;/p&gt;
&lt;p&gt;
I'm reminded of a saying that my friend's dad says: "I thought I was wrong once, and
that was when I thought I was wrong." 
&lt;/p&gt;
&lt;p&gt;
It never really sat well with me when I heard the rumor. There are corporations that
spend millions of dollars with Microsoft, and they probably have significant interests
at stake here. I couldn't account for the apparent no-warning deployment of a significant
behavior change. Especially when they said the deployment would be in June. It didn't
follow the historical pattern of my experiences with Microsoft.
&lt;/p&gt;
&lt;p&gt;
I read the 912812 article over and over. About the tenth or fifteenth time, it finally
struck me. By the time my eyes got to the meat of the article, they were so glazed
over that I had been skipping the most imporant facts. &lt;strong&gt;The rumors had&amp;nbsp;brainwashed
me and I was reading what I wanted to see, not was was printed on the document.&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
This text is the important part:
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Microsoft is releasing a Compatibility Patch on April 11, 2006. As soon as it
is deployed, the Compatibility Patch will temporarily return Internet Explorer to
the previous functionality for handling ActiveX controls. This Compatibility Patch
will function until an Internet Explorer update is released as part of the June update
cycle, at which time the changes to the way Internet Explorer handles ActiveX controls
will be permanent.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
So that's pretty clear. The 4/11 patch, 912812, is the compatibility patch and it
returns the previous functionality for a short time. It should have been written better.
Its still hard to decifier without a good mental picture of the issues.
&lt;/p&gt;
&lt;p&gt;
Now, to be clear, I could be wrong and I will continue some cross checking, but this
is what I believe at this moment.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=0d31b178-0580-49fa-afc4-19c211bce2f9" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,0d31b178-0580-49fa-afc4-19c211bce2f9.aspx</comments>
      <category>learning</category>
      <category>observations</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=d6e7c29c-14a5-4b60-911f-547731a3dcd6</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,d6e7c29c-14a5-4b60-911f-547731a3dcd6.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,d6e7c29c-14a5-4b60-911f-547731a3dcd6.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d6e7c29c-14a5-4b60-911f-547731a3dcd6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img src="http://andrew.staging.popart.com/content/binary/www_asp_net_logo.gif" align="left" border="0" />Over
the weekend, I was playing in a sandbox, working out some ideas for our client, PICA.
</p>
        <p>
I was really impressed with all of the out-of-the-box functionality available in ASP.Net
2.0, specifically these:
</p>
        <ul>
          <li>
Personalization 
</li>
          <li>
Membership 
</li>
          <li>
Menu Control 
</li>
          <li>
Security Trimming 
</li>
          <li>
Two Way Data Binding</li>
        </ul>
        <p>
I was able to build a full app, albeit wanting of some CSS love, in about four hours
time.
</p>
        <p>
The site shows a few pages of content. It lists some events that were created in a
password protected part of the site. The events can be added to a cart and "bought"
by a user by clicking a dynamic link to PayPal. The user's cart is persisted via cookies
if they come back later. The user's cart is also migrated to a persistant data
source if they decide to authenticate. The menu of the site uses the asp.net
menu control and it has a nice "Security Trimming" feature that omits any items in
the site map that the given user doesn't have access to view.
</p>
        <p>
These features really let me focus on the core business problem, rather than getting
bogged down by plumbing and implementation details. The number of new features in
ASP.Net 2.0 is huge and a little overwhelming, but I'm starting to wrap my arms around
it, after months of reading. I really dig it.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=d6e7c29c-14a5-4b60-911f-547731a3dcd6" />
      </body>
      <title>ASP.Net 2.0 Out-Of-The-Box</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,d6e7c29c-14a5-4b60-911f-547731a3dcd6.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/04/10/ASPNet20OutOfTheBox.aspx</link>
      <pubDate>Mon, 10 Apr 2006 22:15:14 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img src="http://andrew.staging.popart.com/content/binary/www_asp_net_logo.gif" align=left border=0&gt;Over
the weekend, I was playing in a sandbox, working out some ideas for our client, PICA.
&lt;/p&gt;
&lt;p&gt;
I was really impressed with all of the out-of-the-box functionality available in ASP.Net
2.0, specifically these:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Personalization 
&lt;li&gt;
Membership 
&lt;li&gt;
Menu Control 
&lt;li&gt;
Security Trimming 
&lt;li&gt;
Two Way Data Binding&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I was able to build a full app, albeit wanting of some CSS love, in about four hours
time.
&lt;/p&gt;
&lt;p&gt;
The site shows a few pages of content. It lists some events that were created in a
password protected part of the site. The events can be added to a cart and "bought"
by a user by clicking a dynamic link to PayPal. The user's cart is persisted via cookies
if they come back later. The user's cart is also migrated to a&amp;nbsp;persistant data
source&amp;nbsp;if they decide to authenticate. The menu of the site uses the asp.net
menu control and it has a nice "Security Trimming" feature that omits any items in
the site map that the given user doesn't have access to view.
&lt;/p&gt;
&lt;p&gt;
These features really let me focus on the core business problem, rather than getting
bogged down by plumbing and implementation details. The number of new features in
ASP.Net 2.0 is huge and a little overwhelming, but I'm starting to wrap my arms around
it, after months of reading. I really dig it.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=d6e7c29c-14a5-4b60-911f-547731a3dcd6" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,d6e7c29c-14a5-4b60-911f-547731a3dcd6.aspx</comments>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=9ccf7272-2313-4bf6-a259-0ccf1c287099</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,9ccf7272-2313-4bf6-a259-0ccf1c287099.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,9ccf7272-2313-4bf6-a259-0ccf1c287099.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9ccf7272-2313-4bf6-a259-0ccf1c287099</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img src="http://andrew.staging.popart.com/content/binary/professionalaspdotnet.jpg" align="right" border="0" /> So
I picked up a copy of <a href="http://www.amazon.com/gp/product/0764576100/sr=8-1/qid=1144165596/ref=pd_bbs_1/104-9211969-4009565?%5Fencoding=UTF8" target="_blank">Professional
ASP.Net</a> a few weeks ago and I'm really digging it. Wrox Press has usually done
a great job of explaining new technologies and ideas to me, and this book is no exception.
I've been reading chapters in my own preferred order, starting with databinding and
moving into profiling and membership. 
</p>
        <p>
At the end of each chapter my grin just keeps getting wider. I can't believe all of
the features that we have available in ASP.Net 2.0, like creating a membership system
in about <strong>10 minutes</strong>, perhaps in <strong>60 seconds</strong> if I
study hard enough. 
</p>
        <p>
For example, ASP.Net has several authorization and authentication controls
that can be dragged onto a webpage from the toolbar. One control contains a prebuilt
set of fields to enable a user to register for an account. Another control enables
a user to login to the site, another control for resetting a forgotten password, and
a couple others. Each control handles all of the internal business logic and database
access. It even creates the appropriate database tables. It's a true out-of-the-box
situation, AND they're all skinable which lets me pass the buck to our great CSS folks. 
</p>
        <p>
Since version 1.0, ASP.Net has been moving in a direction that handles so much of
the internal plumbing that most systems need which lets me focus on the real business
problem of the day. I love it!
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=9ccf7272-2313-4bf6-a259-0ccf1c287099" />
      </body>
      <title>Professional ASP.Net</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,9ccf7272-2313-4bf6-a259-0ccf1c287099.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/04/04/ProfessionalASPNet.aspx</link>
      <pubDate>Tue, 04 Apr 2006 16:01:09 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img src="http://andrew.staging.popart.com/content/binary/professionalaspdotnet.jpg" align=right border=0&gt; So
I picked up a copy of &lt;a href="http://www.amazon.com/gp/product/0764576100/sr=8-1/qid=1144165596/ref=pd_bbs_1/104-9211969-4009565?%5Fencoding=UTF8" target=_blank&gt;Professional
ASP.Net&lt;/a&gt; a few weeks ago and I'm really digging it. Wrox Press has usually done
a great job of explaining new technologies and ideas to me, and this book is no exception.
I've been reading chapters in my own preferred order, starting with databinding and
moving into profiling and membership. 
&lt;/p&gt;
&lt;p&gt;
At the end of each chapter my grin just keeps getting wider. I can't believe all of
the features that we have available in ASP.Net 2.0, like creating a membership system
in about &lt;strong&gt;10 minutes&lt;/strong&gt;, perhaps in &lt;strong&gt;60 seconds&lt;/strong&gt; if I
study hard enough. 
&lt;/p&gt;
&lt;p&gt;
For example, ASP.Net has&amp;nbsp;several&amp;nbsp;authorization and authentication&amp;nbsp;controls
that can be dragged onto a webpage from the toolbar. One control&amp;nbsp;contains a prebuilt
set of fields to enable a user to register for an account. Another control enables
a user to login to the site, another control for resetting a forgotten password, and
a couple others. Each control handles all of the internal business logic and database
access. It even creates the appropriate database tables. It's a true out-of-the-box
situation, AND they're all skinable which lets me pass the buck to our great CSS folks. 
&lt;/p&gt;
&lt;p&gt;
Since version 1.0, ASP.Net has been moving in a direction that handles so much of
the internal plumbing that most systems need which lets me focus on the real business
problem of the day. I love it!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=9ccf7272-2313-4bf6-a259-0ccf1c287099" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,9ccf7272-2313-4bf6-a259-0ccf1c287099.aspx</comments>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=163beda2-eff6-44ba-b4bd-1639b739c802</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,163beda2-eff6-44ba-b4bd-1639b739c802.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,163beda2-eff6-44ba-b4bd-1639b739c802.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=163beda2-eff6-44ba-b4bd-1639b739c802</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The .Net programmers on my team were debating the concepts of how a generic class
is better than an object array. This <a href="http://www.15seconds.com/issue/031024.htm">website</a> seems
to explain it well.
</p>
        <p>
Basically, it comes down to this:
</p>
        <ol>
          <li>
If you want to change the item(s) in an array, you have to create a temp storage area,
copy them over, make the change to the array, and finally copy the items back. Boo.</li>
          <li>
You sure could write your own collection class; that would violate the best practice
of using the most of the Base Class Library. The less code YOU write, the better.
Microsoft has thought about it longer, harder and better than you ever could. Don't
re-code the wheel. Geometry and other concepts like pi are easy to flub up.</li>
          <li>
This <a href="http://blogs.msdn.com/joshwil/archive/2004/04/13/112598.aspx">site</a> does
a handy job of explaining the performance gains seen in generics. The memory footprint
stays lower with generics too.</li>
        </ol>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=163beda2-eff6-44ba-b4bd-1639b739c802" />
      </body>
      <title>Generics versus Object Arrays</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,163beda2-eff6-44ba-b4bd-1639b739c802.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/03/10/GenericsVersusObjectArrays.aspx</link>
      <pubDate>Fri, 10 Mar 2006 22:34:29 GMT</pubDate>
      <description>&lt;p&gt;
The .Net programmers on my team were debating the concepts of how a generic class
is better than an object array. This &lt;a href="http://www.15seconds.com/issue/031024.htm"&gt;website&lt;/a&gt; seems
to explain it well.
&lt;/p&gt;
&lt;p&gt;
Basically, it comes down to this:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
If you want to change the item(s) in an array, you have to create a temp storage area,
copy them over, make the change to the array, and finally copy the items back. Boo.&lt;/li&gt;
&lt;li&gt;
You sure could write your own collection class; that would violate the best practice
of using the most of the Base Class Library. The less code YOU write, the better.
Microsoft has thought about it longer, harder and better than you ever could. Don't
re-code the wheel. Geometry and other concepts like pi are easy to flub up.&lt;/li&gt;
&lt;li&gt;
This &lt;a href="http://blogs.msdn.com/joshwil/archive/2004/04/13/112598.aspx"&gt;site&lt;/a&gt; does
a handy job of explaining the performance gains seen in generics. The memory footprint
stays lower with generics too.&lt;/li&gt;
&lt;/ol&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=163beda2-eff6-44ba-b4bd-1639b739c802" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,163beda2-eff6-44ba-b4bd-1639b739c802.aspx</comments>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=2b8076d6-f0a8-4f9c-a12e-69b2e8e88056</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,2b8076d6-f0a8-4f9c-a12e-69b2e8e88056.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,2b8076d6-f0a8-4f9c-a12e-69b2e8e88056.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2b8076d6-f0a8-4f9c-a12e-69b2e8e88056</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <img src="http://andrew.staging.popart.com/content/binary/kbalerts.png" border="0" />
          <br />
I subscribe to a free service from the KBAlertz.com site. You register for the topics
that interest you, and they'll send you batches of alerts from Microsoft that are
applicable to your work. Today I saw this:
</p>
        <p>
          <strong>Users who are explicitly denied access to an ASP.NET Web application are still
allowed access</strong>
        </p>
        <p>
          <a href="http://www.kbalertz.com/Feedback_910610.aspx">http://www.kbalertz.com/Feedback_910610.aspx</a>
        </p>
        <p>
Wow, that one will grab your attention eh? It turns out that SharePoint installed
on the same server is the cause and a simple fix exists. This is a great service to
have, especially in my niche, where I'm expected to know these types of gotchas.
</p>
        <p>
The service isn't just about programming, check out the KBAlertz.com site and see
the categories that apply to your work. Its a great way to separate the wheat from
the chaffe. An RSS feed might provide similar behavior, but maybe not as granular.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=2b8076d6-f0a8-4f9c-a12e-69b2e8e88056" />
      </body>
      <title>KBAlertz.com Rocks!</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,2b8076d6-f0a8-4f9c-a12e-69b2e8e88056.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/03/02/KBAlertzcomRocks.aspx</link>
      <pubDate>Thu, 02 Mar 2006 17:39:54 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img src="http://andrew.staging.popart.com/content/binary/kbalerts.png" border=0&gt;
&lt;br&gt;
I subscribe to a free service from the KBAlertz.com site. You register for the topics
that interest you, and they'll send you batches of alerts from Microsoft that are
applicable to your work. Today I saw this:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Users who are explicitly denied access to an ASP.NET Web application are still
allowed access&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.kbalertz.com/Feedback_910610.aspx"&gt;http://www.kbalertz.com/Feedback_910610.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Wow, that one will grab your attention eh? It turns out that SharePoint installed
on the same server is the cause and a simple fix exists. This is a great service to
have, especially in my niche, where I'm expected to know these types of gotchas.
&lt;/p&gt;
&lt;p&gt;
The service isn't just about programming, check out the KBAlertz.com site and see
the categories that apply to your work. Its a great way to separate the wheat from
the chaffe.&amp;nbsp;An RSS feed might provide similar behavior, but maybe not as granular.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=2b8076d6-f0a8-4f9c-a12e-69b2e8e88056" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,2b8076d6-f0a8-4f9c-a12e-69b2e8e88056.aspx</comments>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=b56d1690-1cc5-4e6b-aba7-143785bd5bce</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,b56d1690-1cc5-4e6b-aba7-143785bd5bce.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,b56d1690-1cc5-4e6b-aba7-143785bd5bce.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b56d1690-1cc5-4e6b-aba7-143785bd5bce</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A few of us went to a local MSDN event today. A well known .net rock star, <a href="http://www.neopoleon.com/tinythings/">Rory
Blyth</a>, was on display and evangelizing the Visual Studio Tools for Office (VSTO),
mobile development and some teasers from Avalon.
</p>
        <p>
I was most impressed with VSTO for its immediate use. I can imagine a couple of things
that would be really sweet in Excel and some managed code. The second session on mobile
development really interested Holly &amp; Kelly. I bet a nice prototype app for my
boss that displayed a calculation of total project revenue and percentage complete
on his new <a href="http://www.palm.com/us/products/smartphones/treo700w/">Treo 700w</a>. 
</p>
        <p>
The last bomb was Avalon. The release name for this is Windows Presentation Foundation
(WPF). It includes extensive use of XAML. That little nugget is going to make a shift
in the industry. The output from the framework is outstanding. It will likely change
web app production as well as smart client production. There are a few vector based
designer tools that will probably make sense to people who use illustrator; but not
me. It seems like they're really making an effort to solve that problem a a designer
going way out on the edge and a programmer having to reel them in on what is possible.
Basically, Microsoft is giving the designer a tool to go as far as they like, and
the programmer just ties a long rope to them and holds on for dear life. The integration
battles should really be subdued after this product releases in late 2006.
</p>
        <p>
          <img src="http://andrew.staging.popart.com/content/binary/swap.jpg" border="0" />
        </p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=b56d1690-1cc5-4e6b-aba7-143785bd5bce" />
      </body>
      <title>MSDN Event</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,b56d1690-1cc5-4e6b-aba7-143785bd5bce.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/02/15/MSDNEvent.aspx</link>
      <pubDate>Wed, 15 Feb 2006 01:44:12 GMT</pubDate>
      <description>&lt;p&gt;
A few of us went to a local&amp;nbsp;MSDN event today. A well known .net rock star, &lt;a href="http://www.neopoleon.com/tinythings/"&gt;Rory
Blyth&lt;/a&gt;, was on display and evangelizing the Visual Studio Tools for Office (VSTO),
mobile development and some teasers from Avalon.
&lt;/p&gt;
&lt;p&gt;
I was most impressed with VSTO for its immediate use. I can imagine a couple of things
that would be really sweet in Excel and some managed code. The second session on mobile
development really interested Holly &amp;amp; Kelly. I bet a nice prototype app for my
boss that displayed a calculation of total project revenue and percentage complete
on his new &lt;a href="http://www.palm.com/us/products/smartphones/treo700w/"&gt;Treo 700w&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
The last bomb was Avalon. The release name for this is Windows Presentation Foundation
(WPF). It includes extensive use of XAML. That little nugget is going to make a shift
in the industry. The output from the framework is outstanding. It will likely change
web app production as well as smart client production. There are a few vector based
designer tools that will probably make sense to people who use illustrator; but not
me. It seems like they're really making an effort to solve that problem a a designer
going way out on the edge and a programmer having to reel them in on what is possible.
Basically, Microsoft is giving the designer a tool to go as far as they like, and
the programmer just ties a long rope to them and holds on for dear life. The integration
battles should really be subdued after this product releases in late 2006.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://andrew.staging.popart.com/content/binary/swap.jpg" border=0&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=b56d1690-1cc5-4e6b-aba7-143785bd5bce" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,b56d1690-1cc5-4e6b-aba7-143785bd5bce.aspx</comments>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=e4dea525-0cc8-42ad-8e54-b2990b380f88</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,e4dea525-0cc8-42ad-8e54-b2990b380f88.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,e4dea525-0cc8-42ad-8e54-b2990b380f88.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e4dea525-0cc8-42ad-8e54-b2990b380f88</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hey, we just got back from the 2006 Strategic Offsite. The company had some good thoughts, big
ideas and best of all, a great plan for 2006. As required by all great plans,
here's a <a href="http://andrew.staging.popart.com/content/binary/Strategic-Offsite-2006.wmv">video
montage</a>. A big thanks to L.B. and Frank for lending their wisdom over the two
day event.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=e4dea525-0cc8-42ad-8e54-b2990b380f88" />
      </body>
      <title>2006 Strategic Offsite</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,e4dea525-0cc8-42ad-8e54-b2990b380f88.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/02/13/2006StrategicOffsite.aspx</link>
      <pubDate>Mon, 13 Feb 2006 18:40:09 GMT</pubDate>
      <description>&lt;p&gt;
Hey, we just got back from the 2006 Strategic Offsite. The company had some good thoughts,&amp;nbsp;big
ideas&amp;nbsp;and best of all, a great plan for 2006. As required by all great plans,
here's a &lt;a href="http://andrew.staging.popart.com/content/binary/Strategic-Offsite-2006.wmv"&gt;video
montage&lt;/a&gt;. A big thanks to L.B. and Frank for lending their wisdom&amp;nbsp;over the&amp;nbsp;two
day event.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=e4dea525-0cc8-42ad-8e54-b2990b380f88" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,e4dea525-0cc8-42ad-8e54-b2990b380f88.aspx</comments>
      <category>learning</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=cd8ae339-8ed0-4ad7-9613-7392f6c71ed6</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,cd8ae339-8ed0-4ad7-9613-7392f6c71ed6.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,cd8ae339-8ed0-4ad7-9613-7392f6c71ed6.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=cd8ae339-8ed0-4ad7-9613-7392f6c71ed6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <em>Hey, I got the January post in just in time (that's JIT) to you programmers.</em>
        </p>
        <p>
          <a href="http://www.web2con.com/">
            <img src="http://andrew.staging.popart.com/content/binary/web20conf.gif" border="0" />
          </a>
        </p>
        <p>
So, like a lot of things, the importance of Web 2.0 depends on who you are.
If you're new to the term of Web 2.0, I've included some important links that help
frame the conversation below. Its a difficult term to define. Some of the best I've
seen define it as an attitude or thought process. They utilize the most compelling
features of the latest software: the web as a service, exposing data that was once
isoloated in a silo, enabling the network to comprehend data as well as you do, and
applications that improve simply by having more people use them.
</p>
        <p>
Here are a few brief scenarios of people who may or may not know the Web 2.0
stick came up and knocked 'em in the head.
</p>
        <p>
          <strong>Chuckie the 14 year old music enthusiast</strong>
          <br />
Come on, Chuckie doesn't know what this is!?!? He was his <a href="http://www.music.com/">rock</a> and
he wants it now. Its tough being a teen! Services like <a href="http://www.napster.com/">Napster</a> and
blogs are great for exposing people to ideas, concepts and points of view. Chuckie
has over 200 people in his <a href="http://messenger.msn.com/">Instant Messenger</a> list
and he interacts with them every night after school.
</p>
        <p>
          <strong>Shawndell the housewife and online consumer</strong>
          <br />
Websites like <a href="http://www.amazon.com/">Amazon</a> expose their data for others
to consume and build upon. The plethora of services spawned by <a href="http://www.codeproject.com/aspnet/amazonportal.asp">Amazon’s
web service</a> contributes to a rich market place of products and services available.
Where else can you read up and compare the <a href="http://www.irobot.com/">iRobot</a> Roomba
4210? 
</p>
        <p>
          <strong>Mystie the hardcore C# web application programmer</strong>
          <br />
Well, it means Mystie has a good job for a while. No matter which Web 2.0 camp you're
in, <em>computer-centric</em> or <em>people-centric</em>, you have to admit its not
easy to build systems that run quickly, without errors and get better the more people
use them. Mystie also has to get on her horse and start learning a ton of new technologies: <a href="http://www.telerik.com/Default.aspx?PageId=2527">AJAX</a>, <a href="http://msdn.microsoft.com/webservices/">Web
Services</a>, <a href="http://msdn.microsoft.com/windowsvista/">Avalon</a>, <a href="http://msdn.microsoft.com/webservices/default.aspx?pull=/library/en-us/dnlong/html/introindigov1-0.asp">Indigo</a>,
and <a href="http://msdn.microsoft.com/windowsvista/building/workflow/">WinFX</a>. 
</p>
        <p>
          <strong>Alphonzo the designer</strong>
          <br />
Zo’s realm of possibilities just got bigger; Photoshop is just the start. He’s <a href="http://popcornsmell.blogspot.com/">thinking</a> about
interactivity, how to represent dynamic information that he’ll never see, like a movie
review, instant message, or aggregated blog posts. <a href="http://en.wikipedia.org/wiki/Mainframe_computer">A
few years ago</a>, he was greatly limited by how much could be accomplished in the
project lifecycle. The <a href="http://www.dotnetnuke.com/">frameworks</a> that have <a href="http://lhotka.net/">sprung</a> up
in the past year have reduced the barriers to really <a href="http://www.dasblog.info/">cool</a> applications. 
</p>
        <p>
There have been some great posts about this new word. I've aggregated some of them
here. I've included the links to the website and some excerpts from the postings.
I encourage you to follow those links and keep up on the conversation. Its sure to
have some insightful nuggets beyond what I've posted here. They respresent a wide
range of opinions and viewpoints on the definition and significance of Web 2.0.
</p>
        <p>
          <hr />
        </p>
        <p>
        </p>
        <p>
          <a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html">
            <strong>http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html</strong>
          </a>
        </p>
        <p>
          <em>The concept of "Web 2.0" began with a conference brainstorming session between
O'Reilly and MediaLive International. Dale Dougherty, web pioneer and O'Reilly VP,
noted that far from having "crashed", the web was more important than ever, with exciting
new applications and sites popping up with surprising regularity. What's more, the
companies that had survived the collapse seemed to have some things in common. Could
it be that the dot-com collapse marked some kind of turning point for the web, such
that a call to action such as "Web 2.0" might make sense? We agreed that it did, and
so the Web 2.0 Conference was born.</em>
        </p>
        <p>
          <em>In our initial brainstorming, we formulated our sense of Web 2.0 by example: </em>
        </p>
        <p>
          <em>Web 1.0 --&gt; Web 2.0 </em>
        </p>
        <p>
          <em>DoubleClick --&gt; Google 
<br />
AdSense Ofoto --&gt; Flickr 
<br />
Akamai --&gt; BitTorrent 
<br />
mp3.com --&gt; Napster 
<br />
Britannica Online --&gt; Wikipedia 
<br />
personal websites --&gt; blogging 
<br />
evite --&gt; upcoming.org and EVDB 
<br />
domain name speculation --&gt; search engine optimization 
<br />
page views --&gt; cost per click 
<br />
screen scraping --&gt; web services 
<br />
publishing --&gt; participation 
<br />
content management systems --&gt; wikis 
<br />
directories (taxonomy) --&gt; tagging ("folksonomy") 
<br />
stickiness --&gt; syndication </em>
        </p>
        <p>
          <em>What we believe to be the core competencies of Web 2.0 companies: </em>
        </p>
        <ul>
          <li>
            <em>Services, not packaged software, with cost-effective scalability </em>
          </li>
          <li>
            <em>Control over unique, hard-to-recreate data sources that get richer as more people
use them</em>
          </li>
          <li>
            <em>Trusting users as co-developers </em>
          </li>
          <li>
            <em>Harnessing collective intelligence </em>
          </li>
          <li>
            <em>Leveraging the long tail through customer self-service </em>
          </li>
          <li>
            <em>Software above the level of a single device </em>
          </li>
          <li>
            <em>Lightweight user interfaces, development models, AND business models </em>
          </li>
        </ul>
        <p>
          <em>The next time a company claims that it's "Web 2.0," test their features against
the list above. The more points they score, the more they are worthy of the name.
Remember, though, that excellence in one area may be more telling than some small
steps in all seven. </em>
        </p>
        <p>
          <a href="http://radar.oreilly.com/archives/2005/10/web_20_compact_definition.html">
            <strong>http://radar.oreilly.com/archives/2005/10/web_20_compact_definition.html</strong>
          </a>
        </p>
        <ul>
          <li>
            <em>Web 2.0 is the network as platform, spanning all connected devices; Web 2.0 applications
are those that make the most of the intrinsic advantages of that platform: delivering
software as a continually-updated service that gets better the more people use it,
consuming and remixing data from multiple sources, including individual users, while
providing their own data and services in a form that allows remixing by others, creating
network effects through an "architecture of participation," and going beyond the page
metaphor of Web 1.0 to deliver rich user experiences.</em>
          </li>
          <li>
            <em>That's a great definition, though it also seems that many people pushing various
web technologies (AJAX) seem to think that's a Web 2.0 thing even though its been
around for years. Your definition is the most accurate for what I'd consider the "true"
Web 2.0 applications (del.icio.us, Upcoming, etc.) Posted by: Ben Bangert at October
2, 2005 10:05 AM</em>
          </li>
          <li>
            <em>Web 2.0 is definitely about people -- I believe that the central principle of
success in web 2.0 applications is harnessing the collective intelligence of users
-- and in my talks, I've often pointed to "the mechanical Turk, a 19th century chess
playing automaton with a man hidden inside, as a metaphor for modern web applications,
with programmers hidden inside them, performing their daily tasks. (See also my debate
with Dave Stutz about how even these web applications harden over time.) I believe
that time will show that Web 2.0 started out with exactly the opposite of Dan's formulation:
"Web 1.0 was about connecting computers and making technology more efficient for computers.
Web 2.0 is about connecting people, and making technology for efficient for people.” </em>
          </li>
        </ul>
        <p>
          <a href="http://radar.oreilly.com/archives/2005/08/not_20.html">
            <em>
              <strong>http://radar.oreilly.com/archives/2005/08/not_20.html</strong>
            </em>
          </a>
        </p>
        <p>
          <em>Tim Bray writes: I just wanted to say how much I’ve come to dislike this “Web
2.0” faux-meme. It’s not only vacuous marketing hype, it can’t possibly be right.
In terms of qualitative changes of everyone’s experience of the Web, the first happened
when Google hit its stride and suddenly search was useful for, and used by, everyone
every day. The second—syndication and blogging turning the Web from a library into
an event stream—is in the middle of happening. So a lot of us are already on 3.0.
Anyhow, I think Usenet might have been the real 1.0. But most times, the whole thing
still feels like a shaky early beta to me.</em>
        </p>
        <ul>
          <li>
            <em>While being completely right in the details (we are quite arguably on 3.0 or even
8.0 if we're thinking about the internet compared to other software versioning), Tim
is completely wrong about the big picture. Memes are almost always "marketing hype"
-- bumper stickers is a better way to say it -- but they tend to catch on only if
they capture some bit of the zeitgeist. The reason that the term "Web 2.0" has been
bandied about so much since Dale Dougherty came up with it a year and a half ago in
a conference planning session (leading to our Web 2.0 Conference) is because it does
capture the widespread sense that there's something qualitatively different about
today's web.</em>
          </li>
          <li>
            <em>More immediately, Web 2.0 is the era when people have come to realize that it's
not the software that enables the web that matters so much as the services that are
delivered over the web.</em>
          </li>
          <li>
            <em>You have to remember that every revolution occurs in stages, and often isn't recognized
till long after the new world is in place. The PC revolution began in the early 80s,
and most of the key PC companies and technology innovations were founded in that decade,
but it wasn't till the mid-90s that the new shape of the computer industry was clear
to everyone.</em>
          </li>
          <li>
            <em>Perhaps I'm biased, because O'Reilly was the source and has been one of the biggest
promoters of the Web 2.0 meme, but I think it captures exactly where we are at this
moment: a widespread awakening to the fact that the game has changed.</em>
          </li>
          <li>
            <em>There might be a better name (I tried "internet operating system" on for size
starting back in 2000), but the fact that Web 2.0 has caught on says that it's as
good a term as any. While the patterns that constitute Web 2.0 are far from completely
understood, there's a kind of intuitive recognition of sites that are expressing the
new model.</em>
          </li>
          <li>
            <em>I guess it's the old debate between language purists, and language pragmatists.
The right words are the ones people actually use, and this word is catching on.</em>
          </li>
          <li>
            <em>Obviously I can't disagree with your definition of Web 2.0, with O'Reilly being
the source... But what shifted my opinion of the meme from "hot air" to "something
useful" was Ian Davis' suggestion that Web 2.0 is an attitude not a technology. </em>
          </li>
        </ul>
        <p>
          <a href="http://www.nik.com.au/archives/2005/10/26/what-web-20-means-for-business/">
            <em>
              <strong>http://www.nik.com.au/archives/2005/10/26/what-web-20-means-for-business/</strong>
            </em>
          </a>
        </p>
        <ul>
          <li>
            <em>Tim O'Reilly, who describes Web 2.0 as an "architecture of participation"</em>
          </li>
          <li>
            <em>Jeff Bezos said "Web 1.0 was all about making the web easier for users to understand,
Web2.0 is all about making the web easier for computers to understand".</em>
          </li>
          <li>
            <em>Web 2.0 is all about making software, web applications and a web service easier
to inter-operate.</em>
          </li>
          <li>
            <em>AJAX is about making the web experience for a user as easy if not better than
the desktop experience.</em>
          </li>
          <li>
            <em>Flickr and Gmail are not Web 2.0 applications – Web 2.0 applications have nothing
to do with using Javascript, CSS, XHTML, using Web 2.0 colors and fonts but rather
how the application presents itself to other applications</em>
          </li>
          <li>
            <em>The great Web2.0 applications will be those that take care of a small niche, and
do it very well. A great Web 2.0 application becomes a module in a bigger broader
solution while at the same time being an application that the user can also make use
of independently.</em>
            <ul>
              <li>
                <em>Google maps</em>
              </li>
              <li>
                <em>Google Maps Mania, a blog showcasing integration work. o As an analogy, it is
like using standard libraries when developing applications – there is no need to write
your own components when they are readily available.</em>
              </li>
              <li>
                <em>The core competency at Amazon is their massive catalog and the breadth of metadata
available with each article within the catalog. Amazon are adapting to Web 2.0 and
are opening up their application as a web service. This service becomes a back-end
component to other offerings that have added value in their own way.</em>
              </li>
              <li>
                <em>Salesforce.com realizes that they are never going to be able to extend their application
to suit every requirement of every customer. Their approach is to open up their CRM
and allow others to develop interfaces that are able to speak to it.</em>
              </li>
              <li>
                <em>If today you are designing a web application for Web 2.0, think not about how
the user will see it. Do not attempt to implement a solution that does everything,
and do not attempt 'one size fits all' solutions. A Web 2.0 business should rather
think more about how they can take and application and work with other solutions,
specifically piggy-backing off of large base providers such as Salesforce. This approach
provides maximum value to your customer or user and allows a Web2.0 company to focus
on one core competency and to be the best at it.</em>
              </li>
            </ul>
          </li>
        </ul>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=cd8ae339-8ed0-4ad7-9613-7392f6c71ed6" />
      </body>
      <title>Web 2.0 and What It Means To You</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,cd8ae339-8ed0-4ad7-9613-7392f6c71ed6.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2006/01/31/Web20AndWhatItMeansToYou.aspx</link>
      <pubDate>Tue, 31 Jan 2006 23:09:26 GMT</pubDate>
      <description>&lt;p&gt;
&lt;em&gt;Hey, I got the January post in just in time (that's JIT) to you programmers.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.web2con.com/"&gt;&lt;img src="http://andrew.staging.popart.com/content/binary/web20conf.gif" border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
So, like a lot of things,&amp;nbsp;the importance of Web 2.0&amp;nbsp;depends on who you are.
If you're new to the term of Web 2.0, I've included some important links that help
frame the conversation below. Its a difficult term to define. Some of the best I've
seen define it as an attitude or thought process. They utilize the most compelling
features of the latest software: the web as a service, exposing data that was once
isoloated in a silo, enabling the network to comprehend data as well as you do, and
applications that improve simply by having more people use them.
&lt;/p&gt;
&lt;p&gt;
Here are a few brief&amp;nbsp;scenarios of people who may or may not know the Web 2.0
stick came up and knocked 'em in the head.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Chuckie the 14 year old music enthusiast&lt;/strong&gt;
&lt;br&gt;
Come on, Chuckie doesn't know what this is!?!? He was his &lt;a href="http://www.music.com/"&gt;rock&lt;/a&gt; and
he wants it now. Its tough being a teen! Services like &lt;a href="http://www.napster.com/"&gt;Napster&lt;/a&gt; and
blogs are great for exposing people to ideas, concepts and points of view. Chuckie
has over 200 people in his &lt;a href="http://messenger.msn.com/"&gt;Instant Messenger&lt;/a&gt; list
and he&amp;nbsp;interacts with them every night after school.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Shawndell the housewife and online consumer&lt;/strong&gt; 
&lt;br&gt;
Websites like &lt;a href="http://www.amazon.com/"&gt;Amazon&lt;/a&gt; expose their data for others
to consume and build upon. The plethora of services spawned by &lt;a href="http://www.codeproject.com/aspnet/amazonportal.asp"&gt;Amazon’s
web service&lt;/a&gt; contributes to a rich market place of products and services available.
Where else can you read up and compare&amp;nbsp;the &lt;a href="http://www.irobot.com/"&gt;iRobot&lt;/a&gt; Roomba
4210? 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Mystie the hardcore C# web application programmer&lt;/strong&gt; 
&lt;br&gt;
Well, it means Mystie has a good job for a while. No matter which Web 2.0 camp you're
in, &lt;em&gt;computer-centric&lt;/em&gt; or &lt;em&gt;people-centric&lt;/em&gt;, you have to admit its not
easy to build systems that run quickly, without errors and get better the more people
use them. Mystie also has to get on her horse and start learning a ton of new technologies: &lt;a href="http://www.telerik.com/Default.aspx?PageId=2527"&gt;AJAX&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/webservices/"&gt;Web
Services&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/windowsvista/"&gt;Avalon&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/webservices/default.aspx?pull=/library/en-us/dnlong/html/introindigov1-0.asp"&gt;Indigo&lt;/a&gt;,
and &lt;a href="http://msdn.microsoft.com/windowsvista/building/workflow/"&gt;WinFX&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Alphonzo the designer&lt;/strong&gt; 
&lt;br&gt;
Zo’s realm of possibilities just got bigger; Photoshop is just the start. He’s &lt;a href="http://popcornsmell.blogspot.com/"&gt;thinking&lt;/a&gt; about
interactivity, how to represent dynamic information that he’ll never see, like a movie
review, instant message, or aggregated blog posts. &lt;a href="http://en.wikipedia.org/wiki/Mainframe_computer"&gt;A
few years ago&lt;/a&gt;, he was greatly limited by how much could be accomplished in the
project lifecycle. The &lt;a href="http://www.dotnetnuke.com/"&gt;frameworks&lt;/a&gt; that have &lt;a href="http://lhotka.net/"&gt;sprung&lt;/a&gt; up
in the past year have reduced the barriers to really &lt;a href="http://www.dasblog.info/"&gt;cool&lt;/a&gt; applications. 
&lt;/p&gt;
&lt;p&gt;
There have been some great posts about this new word. I've aggregated some of them
here. I've included the links to the website and some excerpts from the postings.
I encourage you to follow those links and keep up on the conversation. Its sure to
have some insightful nuggets beyond what I've posted here. They respresent a wide
range of opinions and viewpoints on the definition and significance of Web 2.0.
&lt;/p&gt;
&lt;p&gt;
&lt;hr&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html"&gt;&lt;strong&gt;http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.html&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;The concept of "Web 2.0" began with a conference brainstorming session between
O'Reilly and MediaLive International. Dale Dougherty, web pioneer and O'Reilly VP,
noted that far from having "crashed", the web was more important than ever, with exciting
new applications and sites popping up with surprising regularity. What's more, the
companies that had survived the collapse seemed to have some things in common. Could
it be that the dot-com collapse marked some kind of turning point for the web, such
that a call to action such as "Web 2.0" might make sense? We agreed that it did, and
so the Web 2.0 Conference was born.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;In our initial brainstorming, we formulated our sense of Web 2.0 by example: &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Web 1.0 --&amp;gt; Web 2.0 &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;DoubleClick --&amp;gt; Google 
&lt;br&gt;
AdSense Ofoto --&amp;gt; Flickr 
&lt;br&gt;
Akamai --&amp;gt; BitTorrent 
&lt;br&gt;
mp3.com --&amp;gt; Napster 
&lt;br&gt;
Britannica Online --&amp;gt; Wikipedia 
&lt;br&gt;
personal websites --&amp;gt; blogging 
&lt;br&gt;
evite --&amp;gt; upcoming.org and EVDB 
&lt;br&gt;
domain name speculation --&amp;gt; search engine optimization 
&lt;br&gt;
page views --&amp;gt; cost per click 
&lt;br&gt;
screen scraping --&amp;gt; web services 
&lt;br&gt;
publishing --&amp;gt; participation 
&lt;br&gt;
content management systems --&amp;gt; wikis 
&lt;br&gt;
directories (taxonomy) --&amp;gt; tagging ("folksonomy") 
&lt;br&gt;
stickiness --&amp;gt; syndication &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;What we believe to be the core competencies of Web 2.0 companies: &lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Services, not packaged software, with cost-effective scalability &lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Control over unique, hard-to-recreate data sources that get richer as more people
use them&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Trusting users as co-developers &lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Harnessing collective intelligence &lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Leveraging the long tail through customer self-service &lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Software above the level of a single device &lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Lightweight user interfaces, development models, AND business models &lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;em&gt;The next time a company claims that it's "Web 2.0," test their features against
the list above. The more points they score, the more they are worthy of the name.
Remember, though, that excellence in one area may be more telling than some small
steps in all seven. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://radar.oreilly.com/archives/2005/10/web_20_compact_definition.html"&gt;&lt;strong&gt;http://radar.oreilly.com/archives/2005/10/web_20_compact_definition.html&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Web 2.0 is the network as platform, spanning all connected devices; Web 2.0 applications
are those that make the most of the intrinsic advantages of that platform: delivering
software as a continually-updated service that gets better the more people use it,
consuming and remixing data from multiple sources, including individual users, while
providing their own data and services in a form that allows remixing by others, creating
network effects through an "architecture of participation," and going beyond the page
metaphor of Web 1.0 to deliver rich user experiences.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;That's a great definition, though it also seems that many people pushing various
web technologies (AJAX) seem to think that's a Web 2.0 thing even though its been
around for years. Your definition is the most accurate for what I'd consider the "true"
Web 2.0 applications (del.icio.us, Upcoming, etc.) Posted by: Ben Bangert at October
2, 2005 10:05 AM&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Web 2.0 is definitely about people -- I believe that the central principle of
success in web 2.0 applications is harnessing the collective intelligence of users
-- and in my talks, I've often pointed to "the mechanical Turk, a 19th century chess
playing automaton with a man hidden inside, as a metaphor for modern web applications,
with programmers hidden inside them, performing their daily tasks. (See also my debate
with Dave Stutz about how even these web applications harden over time.) I believe
that time will show that Web 2.0 started out with exactly the opposite of Dan's formulation:
"Web 1.0 was about connecting computers and making technology more efficient for computers.
Web 2.0 is about connecting people, and making technology for efficient for people.” &lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://radar.oreilly.com/archives/2005/08/not_20.html"&gt;&lt;em&gt;&lt;strong&gt;http://radar.oreilly.com/archives/2005/08/not_20.html&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Tim Bray writes: I just wanted to say how much I’ve come to dislike this “Web
2.0” faux-meme. It’s not only vacuous marketing hype, it can’t possibly be right.
In terms of qualitative changes of everyone’s experience of the Web, the first happened
when Google hit its stride and suddenly search was useful for, and used by, everyone
every day. The second—syndication and blogging turning the Web from a library into
an event stream—is in the middle of happening. So a lot of us are already on 3.0.
Anyhow, I think Usenet might have been the real 1.0. But most times, the whole thing
still feels like a shaky early beta to me.&lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;While being completely right in the details (we are quite arguably on 3.0 or even
8.0 if we're thinking about the internet compared to other software versioning), Tim
is completely wrong about the big picture. Memes are almost always "marketing hype"
-- bumper stickers is a better way to say it -- but they tend to catch on only if
they capture some bit of the zeitgeist. The reason that the term "Web 2.0" has been
bandied about so much since Dale Dougherty came up with it a year and a half ago in
a conference planning session (leading to our Web 2.0 Conference) is because it does
capture the widespread sense that there's something qualitatively different about
today's web.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;More immediately, Web 2.0 is the era when people have come to realize that it's
not the software that enables the web that matters so much as the services that are
delivered over the web.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;You have to remember that every revolution occurs in stages, and often isn't recognized
till long after the new world is in place. The PC revolution began in the early 80s,
and most of the key PC companies and technology innovations were founded in that decade,
but it wasn't till the mid-90s that the new shape of the computer industry was clear
to everyone.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Perhaps I'm biased, because O'Reilly was the source and has been one of the biggest
promoters of the Web 2.0 meme, but I think it captures exactly where we are at this
moment: a widespread awakening to the fact that the game has changed.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;There might be a better name (I tried "internet operating system" on for size
starting back in 2000), but the fact that Web 2.0 has caught on says that it's as
good a term as any. While the patterns that constitute Web 2.0 are far from completely
understood, there's a kind of intuitive recognition of sites that are expressing the
new model.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;I guess it's the old debate between language purists, and language pragmatists.
The right words are the ones people actually use, and this word is catching on.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Obviously I can't disagree with your definition of Web 2.0, with O'Reilly being
the source... But what shifted my opinion of the meme from "hot air" to "something
useful" was Ian Davis' suggestion that Web 2.0 is an attitude not a technology. &lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;a href="http://www.nik.com.au/archives/2005/10/26/what-web-20-means-for-business/"&gt;&lt;em&gt;&lt;strong&gt;http://www.nik.com.au/archives/2005/10/26/what-web-20-means-for-business/&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Tim O'Reilly, who describes Web 2.0 as an "architecture of participation"&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Jeff Bezos said "Web 1.0 was all about making the web easier for users to understand,
Web2.0 is all about making the web easier for computers to understand".&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Web 2.0 is all about making software, web applications and a web service easier
to inter-operate.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;AJAX is about making the web experience for a user as easy if not better than
the desktop experience.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Flickr and Gmail are not Web 2.0 applications – Web 2.0 applications have nothing
to do with using Javascript, CSS, XHTML, using Web 2.0 colors and fonts but rather
how the application presents itself to other applications&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;The great Web2.0 applications will be those that take care of a small niche, and
do it very well. A great Web 2.0 application becomes a module in a bigger broader
solution while at the same time being an application that the user can also make use
of independently.&lt;/em&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Google maps&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Google Maps Mania, a blog showcasing integration work. o As an analogy, it is
like using standard libraries when developing applications – there is no need to write
your own components when they are readily available.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;The core competency at Amazon is their massive catalog and the breadth of metadata
available with each article within the catalog. Amazon are adapting to Web 2.0 and
are opening up their application as a web service. This service becomes a back-end
component to other offerings that have added value in their own way.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;Salesforce.com realizes that they are never going to be able to extend their application
to suit every requirement of every customer. Their approach is to open up their CRM
and allow others to develop interfaces that are able to speak to it.&lt;/em&gt; 
&lt;li&gt;
&lt;em&gt;If today you are designing a web application for Web 2.0, think not about how
the user will see it. Do not attempt to implement a solution that does everything,
and do not attempt 'one size fits all' solutions. A Web 2.0 business should rather
think more about how they can take and application and work with other solutions,
specifically piggy-backing off of large base providers such as Salesforce. This approach
provides maximum value to your customer or user and allows a Web2.0 company to focus
on one core competency and to be the best at it.&lt;/em&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=cd8ae339-8ed0-4ad7-9613-7392f6c71ed6" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,cd8ae339-8ed0-4ad7-9613-7392f6c71ed6.aspx</comments>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=d101d2dc-2379-40bb-a504-674f36014b92</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,d101d2dc-2379-40bb-a504-674f36014b92.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,d101d2dc-2379-40bb-a504-674f36014b92.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d101d2dc-2379-40bb-a504-674f36014b92</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hey, I figured out how to open a door!
</p>
        <ol>
          <li>
Approach the door (see figure A) 
</li>
          <li>
Enter the secret code 
</li>
          <li>
Wait for the buzzing sound 
</li>
          <li>
Place hand on door knob 
</li>
          <li>
Do not twist the door knob 
</li>
          <li>
Push the door closed, then open the door (see figure B)</li>
        </ol>
        <p>
 
</p>
        <p>
          <strong>Figure A<img src="http://andrew.staging.popart.com/content/binary/door1.jpg" border="0" /><br /></strong>
        </p>
        <p>
          <strong>
          </strong> 
</p>
        <p>
          <strong>Figure B<br /></strong>
        </p>
        <img src="http://andrew.staging.popart.com/content/binary/door2.jpg" border="0" />
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=d101d2dc-2379-40bb-a504-674f36014b92" />
      </body>
      <title>How to open a door</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,d101d2dc-2379-40bb-a504-674f36014b92.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2005/11/08/HowToOpenADoor.aspx</link>
      <pubDate>Tue, 08 Nov 2005 21:30:59 GMT</pubDate>
      <description>&lt;p&gt;
Hey, I figured out how to open a door!
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Approach the door (see figure A) 
&lt;li&gt;
Enter the secret code 
&lt;li&gt;
Wait for the buzzing sound 
&lt;li&gt;
Place hand on door knob 
&lt;li&gt;
Do not twist the door knob 
&lt;li&gt;
Push the door closed, then open the door (see figure B)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Figure A&lt;img src="http://andrew.staging.popart.com/content/binary/door1.jpg" border=0&gt;
&lt;br&gt;
&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Figure B&lt;br&gt;
&lt;/strong&gt;
&lt;/p&gt;
&lt;img src="http://andrew.staging.popart.com/content/binary/door2.jpg" border=0&gt;&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=d101d2dc-2379-40bb-a504-674f36014b92" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,d101d2dc-2379-40bb-a504-674f36014b92.aspx</comments>
      <category>learning</category>
      <category>observations</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=657b821d-25c7-4215-a59f-f4d908e07d81</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,657b821d-25c7-4215-a59f-f4d908e07d81.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,657b821d-25c7-4215-a59f-f4d908e07d81.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=657b821d-25c7-4215-a59f-f4d908e07d81</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
AJAX - Asynchronous Javascript and XML
</p>
        <p>
I had a great time working with some AJAX controls on Friday. Telerik has a product
named r.a.d. Callback that implements AJAX and extends its other products nicely. 
</p>
        <p>
AJAX has been around since I.E. 4, so its nothing new. I worked on an Intranet application
in 2000 made use of it. No postbacks in a browser business application is pretty damn
cool. 
</p>
        <p>
This is the way it works: Most browser have javascript enabled. Its a common technique
to do execute some business logic on the browser, without having to post back to the
web server. It has access to everything you see in the browser: textboxes, drop down
lists, radio buttons, checkboxes and even just plain old HTML text.
</p>
        <p>
Here's an example. The user requests a page in their web browser; nothing new here.
The secret is in the javascript in that page. The developer has wired up buttons and
other user actions to the javascript. , The click event of a button could open up
a connection to the web server, send some bits down the wire to the web server, and
expects a response back from the web server; much like a normal postback that every
browser can do. The difference is this communication with the web server is done behind
the scenes and the user doesn't see the browser flicker during the postback event.
The javascript processes the response from the server, and updates a textbox field
on the page. That's about it. 
</p>
        <p>
Now its up to the creativity of the programmer to make it sizzle. Imagine a page that
accepts scores from a dart league game. The user could enter in a set of scores, click
a button, see a new row pop insert into a table in another part of the page, all without
seeing the browser flicker or loose their scroll position on the page. 
</p>
        <p>
Web pages that make use of AJAX behave much like a windows client application. A windows
client application is the opposite of a browser based application. Things like Microsoft
Money or Quickbooks are examples of windows client appications. There are only a few
other types of programs that run on Windows. There are command line programs that
require the use to open up what looks like the old DOS prompt (c:\&gt;), type in the
name of the program, followed by any paramters and what it run. The only other type
of program is a windows service application. This is a program that runs continuously
in the background. It starts up when you turn on your computer and stops when you
turn your computer off. Your virus scanning software is an example of a windows server
application.
</p>
        <p>
AJAX technology has been around for a while in IE, and now are also available in Netscape
and Firefox.
</p>
        <p>
The first A in AJAX is for asynchronous. This means that I can wire up a button click
event that will start up three independent calls to three different web servers and
execute processing at the same time. Each call may take different amounts of time.
The first call might finish immediately and make some update to the page, like turn
a light from red to green. The second call might finish a few seconds later and select
a checkbox. The third call might take the longest and update a timestamp on the page.
The point is that all three calls are executing at the same time. The opposite is
a synchronous processing where the second call cannot start until the first call has
finished. Asynchronous processing can be a real time saver for long running transactions.
</p>
        <p>
The X in AJAX is for XML. This is just an indication of how the javascript sends and
receives data from a web server. It uses XML. The data is packaged up into XML, then
send across the wire to the server. The server reciprocates by receiving the XML package,
processing the request and sending an XML package back to the browser. Its just a
procedure for communicating that's easy for two different computers to understand.
XML is fairly new. I remember using it for the first time in Chicago around 1998.
Before that, if you wanted to exchange data with another computer, you had to agree
on a less intuitive structure, like comma delimited files. But what if your data contained
a comma. You could use a fixed position file where fields start and end at fixed locations.
For example, the name of an employee could start at position 52 and end at position
86. That's how most mainframe computers work today. Its a real hassle understanding
the position to get a single field out of a row in a text file. 
</p>
        <p>
XML is great. It marks up a file much like HTML. For example, this is some XML: 
</p>
        <p>
&lt;root&gt;<br />
 &lt;name&gt;Andrew&lt;/name&gt;<br />
 &lt;age&gt;32&lt;/age&gt;<br />
 &lt;address&gt;Portland, Oregon&lt;/address&gt;<br />
&lt;/root&gt;
</p>
        <p>
Just from that little snippet of XML, and without knowing anything else, your computer
could easily tell what my name was, how old I am and where I live. You didn't have
to know to start looking in position 7 for my name or sort out commas. Its just great.
</p>
        <p>
So the Telerik controls starts with AJAX and extends it quite a bit. I can place one
control on a page, which is as easy as dragging a control from my toolbar onto a page,
and it will automatically write any javascript for me to update a field on my browser.
It writes all of the glue for me. The stuff that opens a connection to the server,
sends a request, receives a request, and updates fields. All by itself!! I don't have
to worry about errors in my own code because I'm not writing it, they are! Its a great
extension that goes well beyond the raw level of access that AJAX provides. I'll give
a show-and-tell demo sometime in the near future. Keep a look out!
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=657b821d-25c7-4215-a59f-f4d908e07d81" />
      </body>
      <title>AJAX and Telerik's r.a.d. Callback product</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,657b821d-25c7-4215-a59f-f4d908e07d81.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2005/11/05/AJAXAndTeleriksRadCallbackProduct.aspx</link>
      <pubDate>Sat, 05 Nov 2005 20:34:43 GMT</pubDate>
      <description>&lt;p&gt;
AJAX - Asynchronous Javascript and XML
&lt;/p&gt;
&lt;p&gt;
I had a great time working with some AJAX controls on Friday. Telerik has a product
named r.a.d. Callback that implements AJAX and extends its other products nicely. 
&lt;/p&gt;
&lt;p&gt;
AJAX has been around since I.E. 4, so its nothing new. I worked on an Intranet application
in 2000 made use of it. No postbacks in a browser business application is pretty damn
cool. 
&lt;/p&gt;
&lt;p&gt;
This is the way it works: Most browser have javascript enabled. Its a common technique
to do execute some business logic on the browser, without having to post back to the
web server. It has access to everything you see in the browser: textboxes, drop down
lists, radio buttons, checkboxes and even just plain old HTML text.
&lt;/p&gt;
&lt;p&gt;
Here's an example. The user requests a page in their web browser; nothing new here.
The secret is in the javascript in that page. The developer has wired up buttons and
other user actions to the javascript. , The click event of a button could open up
a connection to the web server, send some bits down the wire to the web server, and
expects a response back from the web server; much like a normal postback that every
browser can do. The difference is this communication with the web server is done behind
the scenes and the user doesn't see the browser flicker during the postback event.
The javascript processes the response from the server, and updates a textbox field
on the page. That's about it. 
&lt;/p&gt;
&lt;p&gt;
Now its up to the creativity of the programmer to make it sizzle. Imagine a page that
accepts scores from a dart league game. The user could enter in a set of scores, click
a button, see a new row pop insert into a table in another part of the page, all without
seeing the browser flicker or loose their scroll position on the page. 
&lt;/p&gt;
&lt;p&gt;
Web pages that make use of AJAX behave much like a windows client application. A windows
client application is the opposite of a browser based application. Things like Microsoft
Money or Quickbooks are examples of windows client appications. There are only a few
other types of programs that run on Windows. There are command line programs that
require the use to open up what looks like the old DOS prompt (c:\&amp;gt;), type in the
name of the program, followed by any paramters and what it run. The only other type
of program is a windows service application. This is a program that runs continuously
in the background. It starts up when you turn on your computer and stops when you
turn your computer off. Your virus scanning software is an example of a windows server
application.
&lt;/p&gt;
&lt;p&gt;
AJAX technology has been around for a while in IE, and now are also available in Netscape
and Firefox.
&lt;/p&gt;
&lt;p&gt;
The first A in AJAX is for asynchronous. This means that I can wire up a button click
event that will start up three independent calls to three different web servers and
execute processing at the same time. Each call may take different amounts of time.
The first call might finish immediately and make some update to the page, like turn
a light from red to green. The second call might finish a few seconds later and select
a checkbox. The third call might take the longest and update a timestamp on the page.
The point is that all three calls are executing at the same time. The opposite is
a synchronous processing where the second call cannot start until the first call has
finished. Asynchronous processing can be a real time saver for long running transactions.
&lt;/p&gt;
&lt;p&gt;
The X in AJAX is for XML. This is just an indication of how the javascript sends and
receives data from a web server. It uses XML. The data is packaged up into XML, then
send across the wire to the server. The server reciprocates by receiving the XML package,
processing the request and sending an XML package back to the browser. Its just a
procedure for communicating that's easy for two different computers to understand.
XML is fairly new. I remember using it for the first time in Chicago around 1998.
Before that, if you wanted to exchange data with another computer, you had to agree
on a less intuitive structure, like comma delimited files. But what if your data contained
a comma. You could use a fixed position file where fields start and end at fixed locations.
For example, the name of an employee could start at position 52 and end at position
86. That's how most mainframe computers work today. Its a real hassle understanding
the position to get a single field out of a row in a text file. 
&lt;/p&gt;
&lt;p&gt;
XML is great. It marks up a file much like HTML. For example, this is some XML: 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;root&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;lt;name&amp;gt;Andrew&amp;lt;/name&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;lt;age&amp;gt;32&amp;lt;/age&amp;gt;&lt;br&gt;
&amp;nbsp;&amp;lt;address&amp;gt;Portland, Oregon&amp;lt;/address&amp;gt;&lt;br&gt;
&amp;lt;/root&amp;gt;
&lt;/p&gt;
&lt;p&gt;
Just from that little snippet of XML, and without knowing anything else, your computer
could easily tell what my name was, how old I am and where I live. You didn't have
to know to start looking in position 7 for my name or sort out commas. Its just great.
&lt;/p&gt;
&lt;p&gt;
So the Telerik controls starts with AJAX and extends it quite a bit. I can place one
control on a page, which is as easy as dragging a control from my toolbar onto a page,
and it will automatically write any javascript for me to update a field on my browser.
It writes all of the glue for me. The stuff that opens a connection to the server,
sends a request, receives a request, and updates fields. All by itself!! I don't have
to worry about errors in my own code because I'm not writing it, they are! Its a great
extension that goes well beyond the raw level of access that AJAX provides. I'll give
a show-and-tell demo sometime in the near future. Keep a look out!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=657b821d-25c7-4215-a59f-f4d908e07d81" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,657b821d-25c7-4215-a59f-f4d908e07d81.aspx</comments>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <trackback:ping>http://www.andrewdothay.net/blog/Trackback.aspx?guid=7958dcb1-809d-42e4-a569-f0f1ba9b312a</trackback:ping>
      <pingback:server>http://www.andrewdothay.net/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.andrewdothay.net/blog/PermaLink,guid,7958dcb1-809d-42e4-a569-f0f1ba9b312a.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://www.andrewdothay.net/blog/CommentView,guid,7958dcb1-809d-42e4-a569-f0f1ba9b312a.aspx</wfw:comment>
      <wfw:commentRss>http://www.andrewdothay.net/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7958dcb1-809d-42e4-a569-f0f1ba9b312a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The Wife is headed back to school this fall. Highschool math teacher. Ack!
</p>
        <p>
That gets me to thinking about my own learning progress, and more specifically,
how much effort I've been applying towards the academic method of my learning. I have
several methods: magazines, websites, coworkers, and groups. I place books and papers
in a slightly different group: academia. I find these items to be much longer and
much more thought out and scrutinized before I see it. While its fun to be inspired
about new things I can do, its reassuring to know that I'm not reinventing stuff.
I using patterns and practices that have been thought out and work.
</p>
        <p>
Here's the current item I'm chewing through: <a href="http://msdn.microsoft.com/practices/patterns/default.aspx?pull=/library/en-us/dnpag/html/intpatt.asp">http://msdn.microsoft.com/practices/patterns/default.aspx?pull=/library/en-us/dnpag/html/intpatt.asp</a></p>
        <p>
It goes over software integration patterns, and there's a ton! One of my favorite
parts of the paper is the phoney dialog that occurs during the team. I find its one
of the best parts to think about and see how I can reproduce that behavior and process
in my office. I think each department here should have a few academic style items
on the shelf, ready to work through when the time is right and the schedule is managable.
Its an outstanding method to add to your learning suite.
</p>
        <img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=7958dcb1-809d-42e4-a569-f0f1ba9b312a" />
      </body>
      <title>Back To School</title>
      <guid isPermaLink="false">http://www.andrewdothay.net/blog/PermaLink,guid,7958dcb1-809d-42e4-a569-f0f1ba9b312a.aspx</guid>
      <link>http://www.andrewdothay.net/blog/2005/08/24/BackToSchool.aspx</link>
      <pubDate>Wed, 24 Aug 2005 13:54:20 GMT</pubDate>
      <description>&lt;p&gt;
The Wife is headed back to school this fall. Highschool math teacher. Ack!
&lt;/p&gt;
&lt;p&gt;
That gets me to thinking about&amp;nbsp;my own learning progress,&amp;nbsp;and more specifically,
how much effort I've been applying towards the academic method of my learning. I have
several methods: magazines, websites, coworkers, and groups. I place books and papers
in a slightly different group: academia. I find these items to be much longer and
much more thought out and scrutinized before I see it. While its fun to be inspired
about new things I can do, its reassuring to know that I'm not reinventing stuff.
I using patterns and practices that have been thought out and work.
&lt;/p&gt;
&lt;p&gt;
Here's the current item I'm chewing through: &lt;a href="http://msdn.microsoft.com/practices/patterns/default.aspx?pull=/library/en-us/dnpag/html/intpatt.asp"&gt;http://msdn.microsoft.com/practices/patterns/default.aspx?pull=/library/en-us/dnpag/html/intpatt.asp&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
It goes over software integration patterns, and there's a ton! One of my favorite
parts of the paper is the phoney dialog that occurs during the team. I find its one
of the best parts to think about and see how I can reproduce that behavior and process
in my office. I think each department here should have a few academic style items
on the shelf, ready to work through when the time is right and the schedule is managable.
Its an outstanding method to add to your learning suite.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.andrewdothay.net/blog/aggbug.ashx?id=7958dcb1-809d-42e4-a569-f0f1ba9b312a" /&gt;</description>
      <comments>http://www.andrewdothay.net/blog/CommentView,guid,7958dcb1-809d-42e4-a569-f0f1ba9b312a.aspx</comments>
      <category>learning</category>
    </item>
  </channel>
</rss>