<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Josh Holmes</title><link>http://www.joshholmes.com/blog/</link><description>What Box? Nobody told me about a box...</description><language>en-us</language><copyright>Josh Holmes</copyright><lastBuildDate>Wed, 29 Apr 2009 07:22:14 GMT</lastBuildDate><generator>newtelligence dasBlog 2.3.9074.18820</generator><managingEditor>josh@joshholmes.com</managingEditor><webMaster>josh@joshholmes.com</webMaster><geo:lat>42.14784</geo:lat><geo:long>-84.031232</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/JoshHolmes" type="application/rss+xml" /><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=cce3402c-1695-49e8-9c17-e3f9f842fa0d</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,cce3402c-1695-49e8-9c17-e3f9f842fa0d.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,cce3402c-1695-49e8-9c17-e3f9f842fa0d.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=cce3402c-1695-49e8-9c17-e3f9f842fa0d</wfw:commentRss><title>The Lost Art of Simplicity</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,cce3402c-1695-49e8-9c17-e3f9f842fa0d.aspx</guid><link>http://feedproxy.google.com/~r/JoshHolmes/~3/pQyxzfMMBRs/TheLostArtOfSimplicity.aspx</link><pubDate>Wed, 29 Apr 2009 07:22:14 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;div style="text-align: left; margin: 5px; width: 425px; float: left" id="__ss_1360628"&gt;&lt;a style="margin: 12px 0px 3px; display: block; font: 14px helvetica,arial,sans-serif; text-decoration: underline" title="The Lost Art of Simplicity" href="http://www.slideshare.net/joshholmes/the-lost-art-of-simplicity?type=presentation"&gt;The&#xD;
Lost Art of Simplicity&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=thelostartofsimplicity-090429005537-phpapp01&amp;amp;rel=0&amp;amp;stripped_title=the-lost-art-of-simplicity"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=thelostartofsimplicity-090429005537-phpapp01&amp;amp;rel=0&amp;amp;stripped_title=the-lost-art-of-simplicity" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="font-family: tahoma,arial; height: 26px; font-size: 11px; padding-top: 2px"&gt;View&#xD;
more &lt;a style="text-decoration: underline" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration: underline" href="http://www.slideshare.net/joshholmes"&gt;Josh&#xD;
Holmes&lt;/a&gt;.&#xD;
&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
I recently did a keynote at the &lt;a href="http://cinnug.org/cododn/default.aspx"&gt;Central&#xD;
Ohio Day of .NET&lt;/a&gt; and a session at &lt;a href="http://www.kalamazoox.org/"&gt;Kalamazoo&#xD;
X&lt;/a&gt; called “The Lost Art of Simplicity. I have to say that I’ve not been as excited&#xD;
about a specific talk in quite a while. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
I posted the slides to SlideShare and I’ve signed up for speaker rate for this session.&#xD;
I would love some feedback. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Slides on SlideShare - &lt;a title="http://www.slideshare.net/joshholmes/the-lost-art-of-simplicity" href="http://www.slideshare.net/joshholmes/the-lost-art-of-simplicity"&gt;http://www.slideshare.net/joshholmes/the-lost-art-of-simplicity&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&#xD;
Speaker Rate - &lt;a title="http://www.speakerrate.com/talks/773-the-lost-art-of-simplicity" href="http://www.speakerrate.com/talks/773-the-lost-art-of-simplicity"&gt;http://www.speakerrate.com/talks/773-the-lost-art-of-simplicity&lt;/a&gt; &#xD;
&lt;/p&gt;&lt;h4&gt;The Lost Art of Simplicity - Presentation Transcript&#xD;
&lt;/h4&gt;&lt;ol&gt;&lt;li&gt;&#xD;
The Lost Art of Simplicity Josh Holmes joshholmes.com &lt;a href="mailto:josh.holmes@microsoft.com"&gt;josh.holmes@microsoft.com&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_6.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_2.png" width="354" height="265"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;li&gt;&#xD;
sim·plic·i·ty (sm-pls-t) n. &#xD;
&lt;br&gt;&#xD;
1. The property, condition, or quality of being simple or uncombined. &#xD;
&lt;br&gt;&#xD;
2. Absence of luxury or showiness; plainness. &#xD;
&lt;br&gt;&#xD;
3. Absence of affectation or pretense. &#xD;
&lt;br&gt;&#xD;
4. a. Lack of sophistication or subtlety; naiveté. &#xD;
&lt;br&gt;&#xD;
    b. Lack of good sense or intelligence; foolishness. &#xD;
&lt;br&gt;&#xD;
5. a. Clarity of expression. &#xD;
&lt;br&gt;&#xD;
    b. Austerity in embellishment. &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_8.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_3.png" width="354" height="263"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
Let’s start off by talking about what simplicity is. The official dictionary definition&#xD;
has 5 parts. We are going to focus in on the first definition. Simplicity is the property,&#xD;
condition or quality of being simple or uncombined. This is a beautiful statement&#xD;
that is unfortunately missing in much of our current application development. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
When we talk about something being simple, often people just right to the fourth definition&#xD;
assuming that it’s lacking sophistication or good sense and intelligence. That it’s&#xD;
foolish. As technologists, our tendency when we see something that’s simple is to&#xD;
say “Oh, I could write it in a weekend”. There’s a fair amount of NIH (Not Invented&#xD;
Here) tendencies that are just part of our culture. This is a dangerous concept. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The last definition is the one that I really like. To have a something that has “Clarity&#xD;
of Expression” is awesome. Put that with the first definition and we really have something.&#xD;
I’m striving to solve problems in ways that are “Simple and uncombined” with “Clarity&#xD;
of Expression”. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/Peopletypes_g54-King_type_p124.html"&gt;http://hikingartist.com/Peopletypes_g54-King_type_p124.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&#xD;
http://www.thefreedictionary.com/simplicity &#xD;
&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Simplicity is an acquired taste. Mankind, left free, instinctively complicates life&#xD;
- Katherine F. Gerould &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_10.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_4.png" width="354" height="266"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br&gt;&lt;p&gt;&#xD;
One of the great things about the human race is that we are a race of problem solvers.&#xD;
And we take great pride in our solutions. The issue is that the solutions that we&#xD;
are most proud of are the ones that only we can understand. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The best ideas, however, are the ideas that are immediately obvious once someone shows&#xD;
it to you. It’s that head smack “Duh” moment that accompanies those great ideas that&#xD;
I really like. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/animals_g58-evolution_p60.html"&gt;http://hikingartist.com/animals_g58-evolution_p60.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
I adore simple pleasures. They are the last refuge of the complex. - Oscar Wilde &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_12.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_5.png" width="354" height="266"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
Let’s use the example of this guy dreaming about having that apple for lunch… It’s&#xD;
a fairly simple problem on it’s face. We, as IT folks, get the IT equivalent of this&#xD;
issue day in a day out. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/hikingartist/3010374978/"&gt;http://www.flickr.com/photos/hikingartist/3010374978/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Our life is frittered away by detail. Simplicity, simplicity, simplicity! - Henry&#xD;
David Thoreau &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_14.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_6.png" width="354" height="265"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br&gt;&lt;p&gt;&#xD;
Can I get report of sales by geography? How about splitting that by demographics such&#xD;
as age or gender? What’s the effect of our current marketing efforts on sales of our&#xD;
latest line and how does that differ by geography or demographic? Could I enter a&#xD;
contact I met at the picnic into our CRM? Could that be blue? &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/Cartoon_illustration_g29-Still_want_that_apple__p262.html"&gt;http://hikingartist.com/Cartoon_illustration_g29-Still_want_that_apple__p262.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Any intelligent fool can make things bigger, more complex, and more violent. It takes&#xD;
a touch of genius -- and a lot of courage -- to move in the opposite direction. -&#xD;
Albert Einstein &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_16.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_7.png" width="354" height="266"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
Our biggest fear is that the user is going to go get a copy of Access or something&#xD;
equally destructive and try to solve the problem themselves. Often they can effectively&#xD;
solve the short term problem and in the process bring down the enterprise… &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
And this is a dangerous thing because as they open up the simple tools such as access&#xD;
and solve just their problem, they are potentially causing other issues like data&#xD;
redundancy throughout the company or duplicating efforts with another group. Often&#xD;
these solutions are even done with ignorance to larger concerns such as privacy laws. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Even so, they are solving their problem in the short term and that was their goal. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/hikingartist/3010374978/"&gt;http://www.flickr.com/photos/hikingartist/3010374978/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Most of the fundamental ideas of science are essentially simple, and may, as a rule,&#xD;
be expressed in a language comprehensible to everyone. - Albert Einstein &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_18.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_8.png" width="354" height="268"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
To head that off, we just, we start throwing our favorite technologies and designs&#xD;
at the problem to solve it in the most “elegant” way. This quickly results in over&#xD;
engineering the task at hand. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
One immediate and obvious danger is that we take that simple request and roll it into&#xD;
the next version of the application that’s going to be 18-36 months down the road&#xD;
ignoring the fact that it’s a pain that the user is feeling today. What happens when,&#xD;
18 months down the road, the user that has requested that feature has solved the problem&#xD;
some other way? Or if that user is not even employed by the company anymore? &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/hikingartist/3010375012/sizes/o/"&gt;http://www.flickr.com/photos/hikingartist/3010375012/sizes/o/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
It takes a long time to make something complicated simple, but if you do, it will&#xD;
work w/o problems for a long time. - F. Andy Seidle, &lt;a href="http://faseidl.com/"&gt;http://faseidl.com/&lt;/a&gt; &lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_39.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb.png" width="354" height="265"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br&gt;&lt;p&gt;&#xD;
And the solution that results is not only over engineered but it’s reminiscent of&#xD;
a certain coyote with all of the possible ways that it can fail. The reality is that&#xD;
the more complex a problem is, the more ways that it can fail. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
As a solution ramps up in complexity and “cleverness” it quickly becomes more fragile&#xD;
because there are more moving parts and more possible points of failure. Just because&#xD;
something is using the latest or coolest technology, doesn’t mean that it’s the best&#xD;
idea. If that latest or cool technology reduce complexity in some way, such as reducing&#xD;
the number of tools, streamlining process or raising the bar on the usability then&#xD;
there is a good argument to leverage it. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/hikingartist/3009540065/"&gt;http://www.flickr.com/photos/hikingartist/3009540065/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
The Innovator’s Dilemma that disruptive innovations are almost never the result of&#xD;
technological breakthroughs but are instead recombination's of existing and often&#xD;
inexpensive technology in forms the former market leaders don’t pursue. - Clayton&#xD;
Christensen &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_22.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_10.png" width="354" height="265"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
In all of this, we are missing the obvious. There are known simple solutions to a&#xD;
lot of the requests that we get on a day to day basis. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The first thing that we have to get over is the NIH complex that we all have. When&#xD;
you get a new request is your first thought, I can build that… Or is your first thought,&#xD;
I bet that’s been built… &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The second thing that we have to recognize is that the simple solution is probably&#xD;
the right one. If the solution that we have come up with is a so complicated that&#xD;
we are amazed with ourselves and proud of it, it’s probably the wrong direction. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/Cartoon_illustration_g29-Want_an_apple_p261.html"&gt;http://hikingartist.com/Cartoon_illustration_g29-Want_an_apple_p261.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Dealing with complexity is an inefficient and unnecessary waste of time, attention&#xD;
and mental energy. There is never any justification for things being complex when&#xD;
they could be simple. - Edward de Bono &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_24.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_11.png" width="354" height="271"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
We can’t keep down this destructive path of building more and more complex solutions&#xD;
that take eons to develop when the users have needs that we are not addressing in&#xD;
the short term. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/Cartoon_illustration_g29-Want_an_apple_p258.html"&gt;http://hikingartist.com/Cartoon_illustration_g29-Want_an_apple_p258.html&lt;/a&gt;   &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
  &#xD;
&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
I’m Fine&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_26.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_12.png" width="354" height="271"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
We are living in denial that we are the problem. It’s our insistence that we are the&#xD;
technical gods and know everything that is driving this as a problem in the industry&#xD;
in the first place. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/Cartoon_illustration_g29-Not_to_be_disturbed_p398.html"&gt;http://hikingartist.com/Cartoon_illustration_g29-Not_to_be_disturbed_p398.html&lt;/a&gt;   &#xD;
&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
We need to be very careful about the lure of complexity. We should not fall into the&#xD;
trap of thinking that if it’s hard to design, it must be good; that if it’s using&#xD;
the latest technology, it must be good; that if all our friends think it’s really&#xD;
cool, it must be good. - Gerry McGovern&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_28.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_13.png" width="354" height="269"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
We, as the IT world, tend to go rampant with technology with little to no thought&#xD;
to the consequences. Even though we are trying to make people’s lives easier, at best&#xD;
we do no harm. At worst, we cause a lot of pain and anguish for our users. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The answer that a lot of us, and I’m guilty of this too, turn to is to vet our ideas&#xD;
and our UI designs with our peers. The issue is that our peers are also technologists&#xD;
who are just as geeked as we are about X new technology. This just perpetuates the&#xD;
problem. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
http://hikingartist.com/Peopletypes_g54-The_akward_type_p86.html &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.gerrymcgovern.com/nt/2004/nt_2004_11_22_complexity.htm"&gt;http://www.gerrymcgovern.com/nt/2004/nt_2004_11_22_complexity.htm&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Things should be made as simple as possible, but not any simpler. - Albert Einstein &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_32.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_15.png" width="354" height="265"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
Let’s take a short step back and examine how complexity comes to our applications&#xD;
in the first place. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Often complexity sneaks in under different names. One of my favorite is “Enterprise”&#xD;
which almost automatically means a complexity multiplier of 10. The idea here is that&#xD;
we have to be “Enterprise Quality”. This implies a certain engineering rigor, stability&#xD;
and scalability. One huge issue that I have with this term is that if you look at&#xD;
a mid to large sized enterprise with 10k, 20k or even 50K users you are still looking&#xD;
at a user base that would be considered a rounding error on some of the larger consumer&#xD;
facing applications such as Facebook, Twitter, Wikipedia and the like. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/animals_g58-Trojan_trap_p106.html"&gt;http://hikingartist.com/animals_g58-Trojan_trap_p106.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
The whole point of human-centered design is to tame complexity - Don Norman &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_34.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_16.png" width="354" height="266"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
Often the complexity is as simple as not understanding our users. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
I was recently in a long envisioning session with a customer about the next version&#xD;
of their client facing applications. We spent a lot of time hashing through their&#xD;
current application and came up with a number of ways that we might be able to save&#xD;
time or give a better experience. But at some point I backed up and asked the question,&#xD;
what are the top three things that your customers do with the application? If we knew&#xD;
that, we could focus on surfacing those to three tasks in the UI to help cut complexity&#xD;
and time out of the user’s day. The reality is that they couldn’t answer that question.&#xD;
There were some guesses and opinions thrown out but nothing definitive that they could&#xD;
throw out. Their homework assignment was to go back and find that out. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
I find this as an issue in a lot of customer engagements. Very few companies actually&#xD;
know how many of their users are using Windows 98 or IE5 but there is an assumption&#xD;
that it’s an issue so a lot of complexity is built into the system in order to accommodate&#xD;
what might very well be a small portion of their audience. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The other side of this issue is that there’s what the users say that they want and&#xD;
what they actually need. There are some simple examples. “Could you Web 2.0ify my&#xD;
site?” “I need a X (where X is some buzzword that they just read in some article)&#xD;
technology application” Or any other place where technology enters requirements. This&#xD;
is where we need to redirect the user’s requirements by asking them about their goals&#xD;
and aspirations and then start figuring out what they need from that. “Oh, you want&#xD;
to cut down on the amount of text that your users have to type while increasing the&#xD;
accuracy of their reporting? How about we replace that block of text by allowing them&#xD;
to select a picture of what they are looking for? Yeah, we can do that without requiring&#xD;
them to wait on the page to reload.” &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.flickr.com/photos/hikingartist/3208741909/sizes/o/"&gt;http://www.flickr.com/photos/hikingartist/3208741909/sizes/o/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
I apologize for the length of this letter, but I didn't have time to make it shorter.&#xD;
- Mark Twain &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_36.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_17.png" width="354" height="265"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
An unfortunately common problem that I see in the industry is that given group of&#xD;
developers knows one or two technologies and approach every problem with that technology&#xD;
as the solution. The reality is that that there are tremendous number of technologies&#xD;
at their disposal from web applications to desktop applications to mobile applications&#xD;
to hybrid solutions of all of those. You need to approach each problem with an open&#xD;
mind as to what is the best solution for that problem. Sometimes you’ll find that&#xD;
the solution is not actually a technical solution at all. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The real solution here is to take the time to explore all of the possible solutions,&#xD;
technology based or not. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/meetings_g55-hammer_management_p129.html"&gt;http://hikingartist.com/meetings_g55-hammer_management_p129.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Ok. now what?&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_38.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_18.png" width="354" height="266"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
Where are we now and what can we, as mere cogs in the wheels, do to tackle this problem? &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/Cartoon_illustration_g29-Short_term_solution_p408.html"&gt;http://hikingartist.com/Cartoon_illustration_g29-Short_term_solution_p408.html&lt;/a&gt;   &#xD;
&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
\"Think simple\" as my old master used to say - meaning reduce the whole of its parts&#xD;
into the simplest terms, getting back to first principles. - Frank Lloyd Wright &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_44.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_21.png" width="354" height="266"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
There’s, unfortunately, not a magic solution to the issue of complexity. Simple is&#xD;
hard. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Often you have to come up with several complex solutions that you can boil down to&#xD;
the simple solution. Often, in an effort to find the right solution, I will solve&#xD;
or at least map out solutions to a given problem in several different ways with a&#xD;
number of technologies ranging from desktop to web to mobile to non-technology solutions.&#xD;
Kind of like going to a shoe store and trying on a ton of different styles and sizes&#xD;
of shoes, you can get a lot of interesting ideas from checking out all of the different&#xD;
solutions. You might be surprised by the solutions that make the most sense at the&#xD;
end of the day. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/Cartoon_illustration_g29-Wizard_type_3_p111.html"&gt;http://hikingartist.com/Cartoon_illustration_g29-Wizard_type_3_p111.html&lt;/a&gt;   &#xD;
&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Simplicity is not the goal. It is the by-product of a good idea and modest expectations.&#xD;
- Paul Rand &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_46.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_22.png" width="354" height="266"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
All of that said though and as much as I’m talking about Simplicity in this talk,&#xD;
the reality is that Paul Rand has it right. “Simplicity is not the goal. It is the&#xD;
by-product of a good idea and modest expectations”. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/Motivation_g56-The_just_enough_Type_p116.html"&gt;http://hikingartist.com/Motivation_g56-The_just_enough_Type_p116.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Never again will I make the simple into the complex. Something of true value does&#xD;
not become more valuable because it becomes complicated. - Donald Curtis &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_48.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_23.png" width="354" height="266"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
One of the biggest problems is that we try to, for a large number of reasons, try&#xD;
to boil the ocean with our applications. When we build out our project plan and it’s&#xD;
going to be an 18 month cycle before the users get a new version, they are going to&#xD;
go to battle tooth and nail to get their feature request on the docket because they&#xD;
know that if they are not able to get it in this release, it’s going to be at least&#xD;
36 months out. All of these features crammed into a release adds not only a lot of&#xD;
complexity but a lot of risk to the endeavor. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
We have to get past the misperception that features equal value. Features do not equal&#xD;
value. Solving people’s problems equals value. The amount of complexity and risk that&#xD;
we add with these massive project plans hurt out ability to solve someone’s problem&#xD;
in a reasonable time frame. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/animals_g58-Fishing_type_p112.html"&gt;http://hikingartist.com/animals_g58-Fishing_type_p112.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Willard_Gibbs"&gt;http://en.wikipedia.org/wiki/Willard_Gibbs&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
The ability to simplify means to eliminate the unnecessary so that the necessary may&#xD;
speak. - Hans Hofmann &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_50.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_24.png" width="354" height="268"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
You need to start small. Even if you know that the end game is far bigger, what’s&#xD;
that first step? What’s the minimal set of features that you need to get started?&#xD;
This is a struggle for a lot of people as we all want to go for the big vision. The&#xD;
natural tendency is to think that more is better but in a lot of cases, more just&#xD;
gets in the way of success. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This is a core concepts that groups like 37 Signals have held. Their motto is that&#xD;
the first order of business is to get running and start building a customer base.&#xD;
You can worry about scaling later. But if you spend too much time worrying about scaling&#xD;
up front, you’ll never get out there to build the customer base in the first place. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/meetings_g55-Fools_can_t_you_see_the_bird..._p12.html"&gt;http://hikingartist.com/meetings_g55-Fools_can_t_you_see_the_bird..._p12.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Making the simple complicated is commonplace; making the complicated simple, awesomely&#xD;
simple, that’s creativity - Charles Mingus &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_52.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_25.png" width="354" height="268"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
On the other side of the coin, you need to have a clear concept of the future as you&#xD;
are getting started. I often see applications that are built with no concept future&#xD;
requirements and accidentally build in roadblocks to success. There are a lot of simple&#xD;
things that you can do that will future proof your application to some degree. It’s&#xD;
not hard to build in, if you start from the beginning with a tiered and separated&#xD;
architecture so that you can replace bottle necks if they start to pose a problem. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This is sometimes a hard balance to hit but it’s an important one to tackle. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
There are a lot of straight forward things you can do such as adopting some of the&#xD;
great architectural patterns such as MVC (Model View Controller) or MVP (Model View&#xD;
Presenter) combined with great practices such as Test Driven Development (TDD). TDD&#xD;
is more than just building regression tests. It forces you to design and build your&#xD;
application in a modular fashion that allow you to make changes and modifications&#xD;
to your application quickly and with confidence. MVC and MVP are architectural patterns&#xD;
that work well with TDD and provide for great separation of concerns to further provide&#xD;
the agility that you need to grow and scale your application over time. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/meetings_g55-Not_quite_ready_p7.html"&gt;http://hikingartist.com/meetings_g55-Not_quite_ready_p7.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Hans_Hofmann"&gt;http://en.wikipedia.org/wiki/Hans_Hofmann&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
When thought is too weak to be simply expressed, it's clear proof that it should be&#xD;
rejected - Luc De Clapiers &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_54.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_26.png" width="354" height="268"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/Peopletypes_g54-The_engineer_p121.html"&gt;http://hikingartist.com/Peopletypes_g54-The_engineer_p121.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Luc_de_Clapiers,_marquis_de_Vauvenargues"&gt;http://en.wikipedia.org/wiki/Luc_de_Clapiers,_marquis_de_Vauvenargues&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
The whole is simpler than the sum of its parts. - Willard Gibbs &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_56.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_27.png" width="354" height="266"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
None of this means that I’m not solving complex problems. It just means that I’m layering&#xD;
simple solution on top of simple solution to solve those complex problems. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/Free_print_versions_g79-Building_bridges_p747.html"&gt;http://hikingartist.com/Free_print_versions_g79-Building_bridges_p747.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
The first requirement for an exemplary user experience is to meet the exact needs&#xD;
of the customer, without fuss or bother. Next comes simplicity and elegance that produce&#xD;
products that are a joy to own, a joy to use. True user experience goes far beyond&#xD;
giving customers what they say they want, or providing checklist features. - Nielsen&#xD;
Norman Group &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_58.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_28.png" width="354" height="268"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
So where to from here? &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
As I look into the future, I see a world where we are working hand in hand with our&#xD;
users to solve their real needs rather than reacting to what they say that they want&#xD;
and confusing checklists of features with value. I dream of the day when we are able&#xD;
to respond to the users needs as quickly as we can get them to express those needs&#xD;
to us to the point of being able to forecast and proactively provide exactly the functionality&#xD;
that the user needs, nothing more, when they need and not a moment before they do. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
To do that, we need to forgo our egos, our love of complexity and our die hard grip&#xD;
on our favorite technologies and focus on the user. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/meetings_g55-The_observer_type_p135.html"&gt;http://hikingartist.com/meetings_g55-The_observer_type_p135.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Go confidently in the direction of your dreams! Live the life you've imagined. As&#xD;
you simplify your life, the laws of the universe will be simpler. - Henry David Thoreau &#xD;
&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_60.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_29.png" width="354" height="266"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
You call to action is to go to war against complexity. Stand up for simplicity. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Take the extra time that it is going to take to build the uncombined solution that&#xD;
has clarity of expression. Don’t confuse simple with lack of sophistication. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Focus on your user and their needs. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
  &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
As you do this. As you take on this challenge and “as you simplify your life, the&#xD;
laws of the universe will be simpler”. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://hikingartist.com/Motivation_g56-The_gatekeeper_type_p48.html"&gt;http://hikingartist.com/Motivation_g56-The_gatekeeper_type_p48.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
All artwork used in this presentation is licensed under Creative Commons by Frits&#xD;
Ahlefeldt, aka hikingartist Support his amazing craft at &lt;a href="http://hikingartist.com"&gt;http://hikingartist.com&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_62.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_30.png" width="354" height="265"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
Before I finish, I need to say a quick thank you to Fritz Ahlefeldt. He’s a Danish&#xD;
artist with obvious talent. He publishes a large amount of his work under creative&#xD;
commons. If you like this art, you can see much more at http://www.hikingartist.com&#xD;
and support him and his amazing craft. &#xD;
&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&#xD;
The Lost Art of Simplicity Josh Holmes joshholmes.com &lt;a href="mailto:josh.holmes@microsoft.com"&gt;josh.holmes@microsoft.com&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_6.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/TheLostArtofSimplicity_2E90/image_thumb_2.png" width="354" height="265"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&#xD;
I’m looking forward to evolving this talk as I move towards CodeStock and DevLink.&#xD;
I know that there was a really nice progression in just a week between &lt;a href="http://cinnug.org/cododn/default.aspx"&gt;Central&#xD;
Ohio Day of .NET&lt;/a&gt; and &lt;a href="http://www.kalamazoox.org/"&gt;Kalamazoo X&lt;/a&gt; as my&#xD;
message got a lot crisper and more direct based on a lot of great constructive advice&#xD;
I got from &lt;a href="http://mjeaton.net/"&gt;Michael Eaton&lt;/a&gt;, &lt;a href="http://mvwood.com"&gt;Michael&#xD;
Wood&lt;/a&gt;, &lt;a href="http://frazzleddad.blogspot.com/"&gt;Jim Homes&lt;/a&gt; and more. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=cce3402c-1695-49e8-9c17-e3f9f842fa0d"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=pQyxzfMMBRs:4rRNgCp6-rU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=pQyxzfMMBRs:4rRNgCp6-rU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=pQyxzfMMBRs:4rRNgCp6-rU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=pQyxzfMMBRs:4rRNgCp6-rU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=pQyxzfMMBRs:4rRNgCp6-rU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/pQyxzfMMBRs" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,cce3402c-1695-49e8-9c17-e3f9f842fa0d.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2009/04/29/TheLostArtOfSimplicity.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=9a80b8ad-f930-43db-9e55-1e62987e17c8</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,9a80b8ad-f930-43db-9e55-1e62987e17c8.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,9a80b8ad-f930-43db-9e55-1e62987e17c8.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9a80b8ad-f930-43db-9e55-1e62987e17c8</wfw:commentRss><title>Glimmer – A jQuery Designer</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,9a80b8ad-f930-43db-9e55-1e62987e17c8.aspx</guid><link>http://feedproxy.google.com/~r/JoshHolmes/~3/5ZOWclHe6eM/GlimmerAJQueryDesigner.aspx</link><pubDate>Tue, 28 Apr 2009 18:46:40 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;img style="margin: 5px; display: inline" align="left" src="http://visitmix.com/content/files/glim4s.png" width="292" height="218"&gt;&lt;/img&gt;I&#xD;
had heard about this effort a few weeks back but I’m thrilled that it’s public and&#xD;
I can talk about it now. &lt;a href="http://visitmix.com/about/karstenj"&gt;Karsten Januszewski&lt;/a&gt; and&#xD;
some of the other whiz kids on the &lt;a href="http://visitmix.com/"&gt;MIX&lt;/a&gt; team have&#xD;
put together a visual designer for &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt; called &lt;a href="http://visitmix.com/lab/glimmer"&gt;Glimmer&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Right now, they’ve got a number of design wizards that you can leverage but they’ve&#xD;
built a great plug-in model so that you can write your own for your favorite &lt;a href="http://ui.jquery.com/"&gt;jQuery&#xD;
UI&lt;/a&gt; plug-in. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Check out their video on how to leverage &lt;a href="http://visitmix.com/lab/glimmer"&gt;Glimmer&lt;/a&gt; and&#xD;
how it all came to be. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="304" height="228"&gt;&lt;param name="source" value="http://channel9.msdn.com/App_Themes/default/VideoPlayer2009_02_24.xap"&gt;&lt;/param&gt;&lt;param name="initParams" value="m=http://mschannel9.vo.msecnd.net/o9/mix/labs/glimmer/glimmer.wmv,autostart=false,autohide=true,showembed=true, thumbnail=http://mschannel9.vo.msecnd.net/o9/mix/labs/glimmer/glimmerVideo.jpg, postid=0"&gt;&lt;/param&gt;&lt;param name="background" value="#00FFFFFF"&gt;&lt;/param&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;&#xD;
I’m really geeked and am looking forward to using this in my next web dev projects… &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=9a80b8ad-f930-43db-9e55-1e62987e17c8"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=5ZOWclHe6eM:kZBBqx5tetI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=5ZOWclHe6eM:kZBBqx5tetI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=5ZOWclHe6eM:kZBBqx5tetI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=5ZOWclHe6eM:kZBBqx5tetI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=5ZOWclHe6eM:kZBBqx5tetI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/5ZOWclHe6eM" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,9a80b8ad-f930-43db-9e55-1e62987e17c8.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2009/04/28/GlimmerAJQueryDesigner.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=2ed09b8f-8381-47f8-bd2a-f22ad69e020a</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,2ed09b8f-8381-47f8-bd2a-f22ad69e020a.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,2ed09b8f-8381-47f8-bd2a-f22ad69e020a.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2ed09b8f-8381-47f8-bd2a-f22ad69e020a</wfw:commentRss><slash:comments>1</slash:comments><title>Creating a Simple Silverlight Countdown Blog badge</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,2ed09b8f-8381-47f8-bd2a-f22ad69e020a.aspx</guid><link>http://feedproxy.google.com/~r/JoshHolmes/~3/pPWqOqKD3rc/CreatingASimpleSilverlightCountdownBlogBadge.aspx</link><pubDate>Tue, 28 Apr 2009 03:37:24 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/CreatingaSimpleSilverlightCountdownBlogb_14954/image_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/CreatingaSimpleSilverlightCountdownBlogb_14954/image_thumb.png" width="104" height="204"&gt;&lt;/img&gt;&lt;/a&gt; I’m&#xD;
going to be speaking at &lt;a href="http://www.riapalooza.com/"&gt;RIAPalooza&lt;/a&gt; in about&#xD;
two weeks, well more specifically at the time of this writing it’s 10 days, 12 hours,&#xD;
48 minutes and 45 seconds. :) &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
I’m going to be tag teaming with &lt;a href="http://blogs.digitalprimates.net/codeslinger/"&gt;Mike&#xD;
Labriola&lt;/a&gt; again talking about “10 questions about RIA you haven’t had the courage&#xD;
to ask”. We’ve got a short list of questions but are hoping to get some questions&#xD;
from the crowd as well. If you happen to have any questions, feel free to shoot them&#xD;
to me in the comments section on this post. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Anyways, we were discussing different ways to get the word out about RIAPalooza and&#xD;
someone mentioned that we didn’t have have a blog badge so I decided to create one. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
I started by grabbing some art from the &lt;a href="http://www.riapalooza.com/"&gt;RIAPalooza&lt;/a&gt; web&#xD;
site. I started out in Expression Blend with a simple Silverlight project. Here are&#xD;
the steps that I took. &#xD;
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&#xD;
Resize the Page.xaml user control to 100x200 to fit the blog badge size. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Add the wood background that I grabbed from the &lt;a href="http://www.riapalooza.com/"&gt;RIAPalooza&lt;/a&gt; web&#xD;
site trimmed down to the blog badge size. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Paste in the two other images, one for the logo (referred to as i and one for a a&#xD;
free t-shirt offer. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Animate the two images to wiggle, spin, wiggle, wait, wiggle, spin, wiggle, wait,&#xD;
reverse. &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
 &lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/CreatingaSimpleSilverlightCountdownBlogb_14954/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/CreatingaSimpleSilverlightCountdownBlogb_14954/image_thumb_4.png" width="244" height="106"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br&gt;&#xD;
To do this, I opened a timeline and started by rotating the first image -6 degrees&#xD;
and then a frame later rotating it to 6 degrees and then a frame later back to 0.&#xD;
This gives the images a nice little wiggle and catches the viewer’s eye without being&#xD;
too annoying. Well, I don’t think it’s too annoying but you can tell me… &#xD;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/CreatingaSimpleSilverlightCountdownBlogb_14954/image_6.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/CreatingaSimpleSilverlightCountdownBlogb_14954/image_thumb_2.png" width="244" height="169"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br&gt;&#xD;
Then I kicked forward 2 seconds and did the wiggle again in preparation of swapping&#xD;
to two images. The wiggle makes a nice little transition before the action starts. &#xD;
&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/CreatingaSimpleSilverlightCountdownBlogb_14954/image_8.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/CreatingaSimpleSilverlightCountdownBlogb_14954/image_thumb_3.png" width="244" height="106"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br&gt;&#xD;
At the end of the wiggle, I spun the image on it’s X axis over the span of half a&#xD;
second. That’s accomplished by setting the X Skew to zero. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
On the same frame that the first logo hits an X Skew of zero, I make the other image&#xD;
visible with it’s X Skew to zero an proceed to transform it’s skew to 1 (normal) over&#xD;
the course of a half second. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Then I wiggled the t-shirt offer image in the same manner that I did the first logo. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Now, back in the code, I set a few properties and started the animation. &lt;pre class="code"&gt;AnimateLogos.AutoReverse = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&#xD;
AnimateLogos.RepeatBehavior = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RepeatBehavior&lt;/span&gt;(1000);&#xD;
AnimateLogos.Begin();&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&#xD;
Now that the logos are moving, I needed a link to the site. Simple enough using a&#xD;
HyperLinkButton. &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Last thing I needed was to provide some type of count down. At first I just used a&#xD;
couple of labels and set the text. &#xD;
&lt;ul&gt;&lt;li&gt;&#xD;
First, I used a timer set to go every second and set the time&lt;br&gt;&#xD;
_timer = &lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Timer&lt;/span&gt;(&lt;span style="color: blue"&gt;new&lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimerCallback&lt;/span&gt;(Timer_Tick), &lt;span style="color: blue"&gt;null&lt;/span&gt;,&#xD;
0, 1000); &#xD;
&lt;/li&gt;&lt;li&gt;&#xD;
Next I used the dispatch object to work on the UI thread as follows:&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public&#xD;
void &lt;/span&gt;Timer_Tick(&lt;span style="color: blue"&gt;object &lt;/span&gt;state) { Dispatcher.BeginInvoke(()&#xD;
=&amp;gt; { &lt;span style="color: blue"&gt;try &lt;/span&gt;{ &lt;span style="color: #2b91af"&gt;DateTime &lt;/span&gt;launchDate&#xD;
= &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;(2009,&#xD;
5, 8, 8, 0, 0).ToUniversalTime(); &lt;span style="color: #2b91af"&gt;TimeSpan &lt;/span&gt;span&#xD;
= launchDate.Subtract(&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now.ToUniversalTime());&#xD;
txtDays.Text = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"{0}&#xD;
Days"&lt;/span&gt;, span.Days); ... } &lt;span style="color: blue"&gt;catch &lt;/span&gt;{ &lt;span style="color: green"&gt;//Eat&#xD;
all errors. We'll get another chance in a second... &lt;/span&gt;} } ); }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&#xD;
There are a couple of things to notice about the code above. First, I just used everything&#xD;
as UniversalTime. I thought about trying to do the whole timezone thing but realized&#xD;
that it didn’t matter for a countdown because as long as everything was in the same&#xD;
timezone the math would be right. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Second, notice that I’m eating all of the errors in the timer. The basic error that&#xD;
I can get from this code is a threading issue and since this is low priority code,&#xD;
I didn’t care about the threading issue. It’s not like there’s a real recovery path&#xD;
other than trying again in a second. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Now that I had the simple countdown and badge done, I decided that I didn’t like the&#xD;
flat labels and wanted a real clock style count down. To accomplish this I started&#xD;
a Silverlight FlipClock project to build a reusable clock face. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Since I was creating a flipping clock with a separate top and bottom, it made sense&#xD;
to create a control to encapsulate those bits in user controls that I could reuse.&#xD;
There were two interesting parts here. First, how to get the text to cut off at the&#xD;
top and second, how to get the text to scale correctly with the number if we resized&#xD;
it. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/CreatingaSimpleSilverlightCountdownBlogb_14954/image_12.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/CreatingaSimpleSilverlightCountdownBlogb_14954/image_thumb_5.png" width="191" height="244"&gt;&lt;/img&gt;&lt;/a&gt; The&#xD;
first issue was solved by using a brush that cut off to an opacity of zero just under&#xD;
halfway. I did that on both the background and the textbox. The whole gradient is&#xD;
actually made up of three stop points. Two set to be the same color and opacity of&#xD;
100% and a third that is set to the same color but opacity of zero. This third stop&#xD;
is just a hair further down than the second. The purpose of the second stop is to&#xD;
keep it from fading from top to bottom rather than having the hard like that I desired. &#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;LinearGradientBrush &lt;/span&gt;&lt;span style="color: red"&gt;EndPoint&lt;/span&gt;&lt;span style="color: blue"&gt;="0.5,1" &lt;/span&gt;&lt;span style="color: red"&gt;StartPoint&lt;/span&gt;&lt;span style="color: blue"&gt;="0.5,0"&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;GradientStop &lt;/span&gt;&lt;span style="color: red"&gt;Color&lt;/span&gt;&lt;span style="color: blue"&gt;="#FFFFFFFF" &lt;/span&gt;&lt;span style="color: red"&gt;Offset&lt;/span&gt;&lt;span style="color: blue"&gt;="0"/&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;GradientStop &lt;/span&gt;&lt;span style="color: red"&gt;Color&lt;/span&gt;&lt;span style="color: blue"&gt;="#FFFFFFFF" &lt;/span&gt;&lt;span style="color: red"&gt;Offset&lt;/span&gt;&lt;span style="color: blue"&gt;="0.48"/&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;GradientStop &lt;/span&gt;&lt;span style="color: red"&gt;Color&lt;/span&gt;&lt;span style="color: blue"&gt;="#00FFFFFF" &lt;/span&gt;&lt;span style="color: red"&gt;Offset&lt;/span&gt;&lt;span style="color: blue"&gt;="0.49"/&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;LinearGradientBrush&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
The second issue was solved thanks to &lt;a href="http://www.galasoft.ch/"&gt;Laurent Bugnion&lt;/a&gt;.&#xD;
He pointed out that although Silverlight doesn’t have a scalable font, there is a&#xD;
VIewbox in the Silverlight Control Toolkit on Codeplex that will scale anything inside&#xD;
itself correctly. &#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Viewbox &lt;/span&gt;&lt;span style="color: red"&gt;Height&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto" &lt;/span&gt;&lt;span style="color: red"&gt;HorizontalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Stretch" &lt;/span&gt;&lt;span style="color: red"&gt;Margin&lt;/span&gt;&lt;span style="color: blue"&gt;="0,0,0,0" &lt;/span&gt;&lt;span style="color: red"&gt;VerticalAlignment&lt;/span&gt;&lt;span style="color: blue"&gt;="Stretch" &lt;/span&gt;&lt;span style="color: red"&gt;Width&lt;/span&gt;&lt;span style="color: blue"&gt;="Auto" &lt;/span&gt;&lt;span style="color: red"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;="Viewbox" &lt;/span&gt;&lt;span style="color: red"&gt;Stretch&lt;/span&gt;&lt;span style="color: blue"&gt;="Fill"&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid &lt;/span&gt;&lt;span style="color: red"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;="LayoutRoot" &lt;/span&gt;&lt;span style="color: red"&gt;Background&lt;/span&gt;&lt;span style="color: blue"&gt;="{&lt;/span&gt;&lt;span style="color: #a31515"&gt;x&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Null&lt;/span&gt;&lt;span style="color: blue"&gt;}"&amp;gt; &lt;/span&gt;&lt;span style="color: blue"&gt;.&#xD;
. . &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Grid&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;controls&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Viewbox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;p&gt;&#xD;
I added a simple property to set the value in the textbox. &#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public int &lt;/span&gt;Value { &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return&#xD;
int&lt;/span&gt;.Parse(txtNumber.Text); } &lt;span style="color: blue"&gt;set &lt;/span&gt;{ txtNumber.Text&#xD;
= &lt;span style="color: blue"&gt;value&lt;/span&gt;.ToString(); } }&lt;/pre&gt;&lt;p&gt;&#xD;
Then I just played with the styling a little with a slight highlight on the top and&#xD;
the like. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Next, I created a FlippingNumber control that would be the base for the various numbers&#xD;
on the clock. To make it look right,  I actually needed 4 sections to the control.&#xD;
Two to show the current number and two to show the next number and we flip between&#xD;
them. I simply put two of the top and two of the bottom number controls one the page.&#xD;
The flip was just an animation similar to the flipping of the two images in the top&#xD;
of the badge. The only difference is that I skewed the controls a little to give it&#xD;
a slight 3d effect. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Once that was done, the rest of the number was built in code. &#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public &lt;/span&gt;FlippingNumber() { InitializeComponent();&#xD;
FlipDown.Completed += &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;EventHandler&lt;/span&gt;(FlipDown_Completed);&#xD;
} &lt;span style="color: blue"&gt;void &lt;/span&gt;FlipDown_Completed(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;EventArgs &lt;/span&gt;e)&#xD;
{ numBottomBack.Value = _val; numTopFlip.Value = _val; } &lt;span style="color: blue"&gt;int &lt;/span&gt;_val&#xD;
= -9999; &lt;span style="color: blue"&gt;public int &lt;/span&gt;Value { &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;_val;&#xD;
} &lt;span style="color: blue"&gt;set &lt;/span&gt;{ &lt;span style="color: blue"&gt;if &lt;/span&gt;(&lt;span style="color: blue"&gt;value &lt;/span&gt;!=&#xD;
_val) { _val = &lt;span style="color: blue"&gt;value&lt;/span&gt;; numBottomFlip.Value = _val;&#xD;
numTopBack.Value = _val; FlipDown.Begin(); } } }&lt;/pre&gt;&lt;p&gt;&#xD;
The other property that I added was so that the clock could adjust the speed at which&#xD;
the number flipped. &#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public double &lt;/span&gt;SpeedRatio { &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;FlipDown.SpeedRatio;&#xD;
} &lt;span style="color: blue"&gt;set &lt;/span&gt;{ FlipDown.SpeedRatio = &lt;span style="color: blue"&gt;value&lt;/span&gt;;&#xD;
} }&lt;/pre&gt;&lt;p&gt;&#xD;
Finally, I was ready to piece together the clock. That was a simple matter of placing&#xD;
6 of the flipping number controls on the clock face. All that was left was set the&#xD;
time on the clock based on a value in the passed in TimeSpan. &#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;TimeSpan &lt;/span&gt;_timeSpan; &lt;span style="color: blue"&gt;public &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TimeSpan &lt;/span&gt;TimeSpan&#xD;
{ &lt;span style="color: blue"&gt;get &lt;/span&gt;{ &lt;span style="color: blue"&gt;return &lt;/span&gt;_timeSpan;&#xD;
} &lt;span style="color: blue"&gt;set &lt;/span&gt;{ _timeSpan = &lt;span style="color: blue"&gt;value&lt;/span&gt;;&#xD;
numSecondOne.Value = FirstCharacter(_timeSpan.Seconds); numSecondTwo.Value = SecondCharacter(_timeSpan.Seconds);&#xD;
numMinuteOne.Value = FirstCharacter(_timeSpan.Minutes); numMinuteTwo.Value = SecondCharacter(_timeSpan.Minutes);&#xD;
numHourOne.Value = FirstCharacter(_timeSpan.Hours); numHourTwo.Value = SecondCharacter(_timeSpan.Hours);&#xD;
} } &lt;span style="color: blue"&gt;private int &lt;/span&gt;FirstCharacter(&lt;span style="color: blue"&gt;int &lt;/span&gt;num)&#xD;
{ &lt;span style="color: blue"&gt;string &lt;/span&gt;s = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"{0:00}"&lt;/span&gt;,&#xD;
num); &lt;span style="color: blue"&gt;return int&lt;/span&gt;.Parse(s.Substring(1, 1)); } &lt;span style="color: blue"&gt;private&#xD;
int &lt;/span&gt;SecondCharacter(&lt;span style="color: blue"&gt;int &lt;/span&gt;num) { &lt;span style="color: blue"&gt;string &lt;/span&gt;s&#xD;
= &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;"{0:00}"&lt;/span&gt;,&#xD;
num); &lt;span style="color: blue"&gt;return int&lt;/span&gt;.Parse(s.Substring(0, 1)); }&lt;/pre&gt;&lt;p&gt;&#xD;
The last thing on the badge that I did was change the timer control code on the overall&#xD;
blog badge to pass the time span into the clock face rather than parsing it into textboxes. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Now I wanted people to be able to use it from their own blog. To allow that to happen,&#xD;
I needed a put together a cross domain policy via the clientaccesspolicy.xml file. &#xD;
&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;1.0&lt;/span&gt;" &lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;"&lt;span style="color: blue"&gt;?&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;access-policy&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;cross-domain-access&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;policy&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;allow-from &lt;/span&gt;&lt;span style="color: red"&gt;http-request-headers&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;*&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;domain &lt;/span&gt;&lt;span style="color: red"&gt;uri&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;*&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;allow-from&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;grant-to&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;resource &lt;/span&gt;&lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;/resources/SilverCountDown.xap&lt;/span&gt;" &lt;span style="color: red"&gt;include-subpaths&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;true&lt;/span&gt;"&lt;span style="color: blue"&gt;/&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;grant-to&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;policy&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;cross-domain-access&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;access-policy&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&#xD;
Notice that I’m allowing access from any domain but restricting access to only load&#xD;
the specific xap file. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Anyone who wants to put it on their blog can do so simply by leveraging the following&#xD;
object tag.&#xD;
&lt;/p&gt;&lt;div style="margin: 5px; float: left" id="silverlightControlHost"&gt;&lt;object data="data:application/x-silverlight," type="application/x-silverlight-2" width="100px" height="200px"&gt;&lt;param name="source" value="http://www.joshholmes.com/resources/SilverCountDown.xap"&gt;&lt;/param&gt;&lt;param name="background" value="white"&gt;&lt;/param&gt;&lt;param name="minRuntimeVersion" value="2.0.31005.0"&gt;&lt;/param&gt;&lt;param name="autoUpgrade" value="true"&gt;&lt;/param&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/object&gt;&lt;iframe style="border-right-width: 0px; width: 0px; border-top-width: 0px; border-bottom-width: 0px; height: 0px; visibility: hidden; border-left-width: 0px"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;div &lt;/span&gt;&lt;span style="color: red"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;="silverlightControlHost"&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;object &lt;/span&gt;&lt;span style="color: red"&gt;data&lt;/span&gt;&lt;span style="color: blue"&gt;="data:application/x-silverlight," &#xD;
&lt;br&gt;&lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;="application/x-silverlight-2" &lt;/span&gt;&lt;span style="color: red"&gt;width&lt;/span&gt;&lt;span style="color: blue"&gt;="100px" &lt;/span&gt;&lt;span style="color: red"&gt;height&lt;/span&gt;&lt;span style="color: blue"&gt;="200px"&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;param &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;="source" &lt;/span&gt;&lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;="http://www.joshholmes.com/resources/SilverCountDown.xap"/&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;param &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;="background" &lt;/span&gt;&lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;="white"&#xD;
/&amp;gt; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;param &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;="minRuntimeVersion" &lt;/span&gt;&lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;="2.0.31005.0"&#xD;
/&amp;gt; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;param &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;="autoUpgrade" &lt;/span&gt;&lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;="true"&#xD;
/&amp;gt; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;a &lt;/span&gt;&lt;span style="color: red"&gt;href&lt;/span&gt;&lt;span style="color: blue"&gt;="http://go.microsoft.com/fwlink/?LinkID=124807" &lt;/span&gt;&lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;="&lt;/span&gt;&lt;span style="color: red"&gt;text-decoration&lt;/span&gt;: &lt;span style="color: blue"&gt;none&lt;/span&gt;;&lt;span style="color: blue"&gt;"&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;img &lt;/span&gt;&lt;span style="color: red"&gt;src&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;a href="http://go.microsoft.com/fwlink/?LinkId=108181"&gt;http://go.microsoft.com/fwlink/?LinkId=108181&lt;/a&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color: red"&gt; alt&lt;/span&gt;&lt;span style="color: blue"&gt;="Get Microsoft&#xD;
Silverlight" &lt;/span&gt;&lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;="&lt;/span&gt;&lt;span style="color: red"&gt;border-style&lt;/span&gt;: &lt;span style="color: blue"&gt;none"/&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;a&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;object&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;iframe &lt;/span&gt;&lt;span style="color: red"&gt;style&lt;/span&gt;&lt;span style="color: blue"&gt;='&lt;/span&gt;&lt;span style="color: red"&gt;visibility&lt;/span&gt;:&lt;span style="color: blue"&gt;hidden&lt;/span&gt;;&lt;span style="color: red"&gt;height&lt;/span&gt;:&lt;span style="color: blue"&gt;0&lt;/span&gt;;&lt;span style="color: red"&gt;width&lt;/span&gt;:&lt;span style="color: blue"&gt;0&lt;/span&gt;;&lt;span style="color: red"&gt;border&lt;/span&gt;:&lt;span style="color: blue"&gt;0px'&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;iframe&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&#xD;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;div&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&#xD;
Feel free to place the badge on your own blog to help promote RIAPalooza – When this&#xD;
year finishes, I’ll update the counter with next years dates as soon as we know it…&#xD;
:) &#xD;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&#xD;
Also – I put the code up at &lt;a href="http://www.joshholmes.com/resources/silvercountdown.zip"&gt;http://www.joshholmes.com/resources/silvercountdown.zip&lt;/a&gt;.&#xD;
Feel free to take it and play with it. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=2ed09b8f-8381-47f8-bd2a-f22ad69e020a"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=pPWqOqKD3rc:gOZSaFIedyo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=pPWqOqKD3rc:gOZSaFIedyo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=pPWqOqKD3rc:gOZSaFIedyo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=pPWqOqKD3rc:gOZSaFIedyo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=pPWqOqKD3rc:gOZSaFIedyo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/pPWqOqKD3rc" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,2ed09b8f-8381-47f8-bd2a-f22ad69e020a.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2009/04/28/CreatingASimpleSilverlightCountdownBlogBadge.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=77167377-f49f-46c3-a3ab-f0daaca1a5b9</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,77167377-f49f-46c3-a3ab-f0daaca1a5b9.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,77167377-f49f-46c3-a3ab-f0daaca1a5b9.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=77167377-f49f-46c3-a3ab-f0daaca1a5b9</wfw:commentRss><slash:comments>2</slash:comments><title>Antidotal info on JavaScript Library Ext JS</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,77167377-f49f-46c3-a3ab-f0daaca1a5b9.aspx</guid><link>http://feedproxy.google.com/~r/JoshHolmes/~3/QPUhuunIau8/AntidotalInfoOnJavaScriptLibraryExtJS.aspx</link><pubDate>Tue, 07 Apr 2009 22:47:57 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&#xD;
I’m in conversation with a group that’s using &lt;a href="http://extjs.com/"&gt;Ext JS&lt;/a&gt; for&#xD;
their RIA. As I haven’t used it, I thought I’d go ask at the international water fountain&#xD;
that is &lt;a href="http://twitter.com/joshholmes"&gt;twitter&lt;/a&gt; about it. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://twitter.com/account/profile_image/joshholmes"&gt;&lt;img style="margin: 0px 5px 0px 0px; display: inline" border="0" alt="" align="left" src="http://s3.amazonaws.com/twitter_production/profile_images/37793692/JoshOnMountCrestedButteS_bigger.jpg" width="73" height="73"&gt;&lt;/img&gt;&lt;/a&gt;Anyone&#xD;
using Ext JS? Thoughts compared to jQuery or Prototype/Scriptaculous?&lt;a href="http://twitter.com/joshholmes/status/1471707440"&gt;about&#xD;
3 hours ago&lt;/a&gt; from &lt;a href="http://www.tweetdeck.com/"&gt;TweetDeck&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&#xD;
 &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This is what I got back (I love twitter):&#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://twitter.com/parkerkrhoyt"&gt;&lt;img style="margin: 5px; display: inline" alt="Kevin Hoyt" align="left" src="http://s3.amazonaws.com/twitter_production/profile_images/51152312/khoyt-headshot_normal.jpg" width="48" height="48"&gt;&lt;/img&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://twitter.com/parkerkrhoyt"&gt;parkerkrhoyt&lt;/a&gt;&lt;/strong&gt;@&lt;a href="http://twitter.com/joshholmes"&gt;joshholmes&lt;/a&gt; IMHO,&#xD;
Ext is more about traditional applications. jQuery is a Swiss Army knife. Ext can&#xD;
do that, but rarely is used that way.&lt;a href="http://twitter.com/parkerkrhoyt/status/1472263691"&gt;about&#xD;
1 hour ago&lt;/a&gt; from &lt;a href="http://twitterfon.net/"&gt;TwitterFon&lt;/a&gt;&lt;a href="http://twitter.com/joshholmes/status/1471707440"&gt;in&#xD;
reply to joshholmes&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;a href="http://twitter.com/home?status=@parkerkrhoyt%20&amp;amp;in_reply_to_status_id=1472263691&amp;amp;in_reply_to=parkerkrhoyt"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://twitter.com/ntschutta"&gt;&lt;img style="margin: 5px; display: inline" alt="Nate Schutta" align="left" src="http://s3.amazonaws.com/twitter_production/profile_images/61102156/nts_low_small_normal.png" width="48" height="48"&gt;&lt;/img&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://twitter.com/ntschutta"&gt;ntschutta&lt;/a&gt;&lt;/strong&gt;@&lt;a href="http://twitter.com/joshholmes"&gt;joshholmes&lt;/a&gt; friend&#xD;
of mine loves ext but the learning curve can be steep and leads to lots of js config&#xD;
rather then HTML. I like proto a ton&lt;a href="http://twitter.com/ntschutta/status/1472093998"&gt;about&#xD;
2 hours ago&lt;/a&gt; from &lt;a href="http://iconfactory.com/software/twitterrific"&gt;twitterrific&lt;/a&gt;&lt;a href="http://twitter.com/joshholmes/status/1471707440"&gt;in&#xD;
reply to joshholmes&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;a href="http://twitter.com/home?status=@ntschutta%20&amp;amp;in_reply_to_status_id=1472093998&amp;amp;in_reply_to=ntschutta"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://twitter.com/objo"&gt;&lt;img style="margin: 5px; display: inline" alt="Joe O'Brien" align="left" src="http://s3.amazonaws.com/twitter_production/profile_images/82028006/Photo_87_revised_normal.jpg" width="48" height="48"&gt;&lt;/img&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://twitter.com/objo"&gt;objo&lt;/a&gt;&lt;/strong&gt;@&lt;a href="http://twitter.com/joshholmes"&gt;joshholmes&lt;/a&gt; we&#xD;
have tried all three and much prefer jquery. but ext is in a very different space&#xD;
with diff objectives&lt;a href="http://twitter.com/objo/status/1471939618"&gt;about 2 hours&#xD;
ago&lt;/a&gt; from &lt;a href="http://www.nambu.com"&gt;Nambu&lt;/a&gt;&lt;a href="http://twitter.com/joshholmes/status/1471707440"&gt;in&#xD;
reply to joshholmes&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;a href="http://twitter.com/home?status=@objo%20&amp;amp;in_reply_to_status_id=1471939618&amp;amp;in_reply_to=objo"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://twitter.com/ksmarshall"&gt;&lt;img style="margin: 5px; display: inline" alt="Kevin Marshall" align="left" src="http://s3.amazonaws.com/twitter_production/profile_images/33705482/MyPicture_normal.jpg" width="48" height="48"&gt;&lt;/img&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://twitter.com/ksmarshall"&gt;ksmarshall&lt;/a&gt;&lt;/strong&gt;@&lt;a href="http://twitter.com/joshholmes"&gt;joshholmes&lt;/a&gt; I&#xD;
use extjs and jquery together. I just use extjs for some of the nice ui controls it&#xD;
creates and jquery for the rest of the js&lt;a href="http://twitter.com/ksmarshall/status/1471939439"&gt;about&#xD;
2 hours ago&lt;/a&gt; from &lt;a href="http://iconfactory.com/software/twitterrific"&gt;twitterrific&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://twitter.com/dmeeker"&gt;&lt;img style="margin: 5px; display: inline" alt="Dave Meeker" align="left" src="http://s3.amazonaws.com/twitter_production/profile_images/59463338/me_close_normal.jpg" width="48" height="48"&gt;&lt;/img&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://twitter.com/dmeeker"&gt;dmeeker&lt;/a&gt;&lt;/strong&gt;@&lt;a href="http://twitter.com/joshholmes"&gt;joshholmes&lt;/a&gt; We've&#xD;
looked at it extensively. It seems to be a mishmosh of those other libraries, no?&#xD;
I can put you in touch with someone here&lt;a href="http://twitter.com/dmeeker/status/1471737314"&gt;about&#xD;
3 hours ago&lt;/a&gt; from web &lt;a href="http://twitter.com/joshholmes/status/1471707440"&gt;in&#xD;
reply to joshholmes&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;a href="http://twitter.com/home?status=@dmeeker%20&amp;amp;in_reply_to_status_id=1471737314&amp;amp;in_reply_to=dmeeker"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://twitter.com/jblankenburg"&gt;&lt;img style="margin: 5px; display: inline" alt="Jeff Blankenburg" align="left" src="http://s3.amazonaws.com/twitter_production/profile_images/119021018/jeffatmix_normal.jpg" width="48" height="48"&gt;&lt;/img&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://twitter.com/jblankenburg"&gt;jblankenburg&lt;/a&gt;&lt;/strong&gt;@&lt;a href="http://twitter.com/joshholmes"&gt;joshholmes&lt;/a&gt; My&#xD;
limited experience suggests it's much more a RIA development framework than jquery,&#xD;
etc.&lt;a href="http://twitter.com/jblankenburg/status/1471722235"&gt;about 3 hours ago&lt;/a&gt; from &lt;a href="http://www.tweetdeck.com/"&gt;TweetDeck&lt;/a&gt;&lt;a href="http://twitter.com/joshholmes/status/1471707440"&gt;in&#xD;
reply to joshholmes&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;a href="http://twitter.com/home?status=@jblankenburg%20&amp;amp;in_reply_to_status_id=1471722235&amp;amp;in_reply_to=jblankenburg"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://twitter.com/nkohari"&gt;&lt;img style="margin: 5px; display: inline" alt="Nate Kohari" align="left" src="http://s3.amazonaws.com/twitter_production/profile_images/84745000/avatar_normal.jpeg" width="48" height="48"&gt;&lt;/img&gt;&lt;/a&gt;&lt;strong&gt;&lt;a href="http://twitter.com/nkohari"&gt;nkohari&lt;/a&gt;&lt;/strong&gt;@&lt;a href="http://twitter.com/joshholmes"&gt;joshholmes&lt;/a&gt; ExtJS&#xD;
is nice if you're looking for a full control toolkit. If you just want a low-level&#xD;
JS library, jQuery is the best imo.&lt;a href="http://twitter.com/nkohari/status/1471715841"&gt;about&#xD;
3 hours ago&lt;/a&gt; from &lt;a href="http://www.tweetdeck.com/"&gt;TweetDeck&lt;/a&gt;&lt;a href="http://twitter.com/joshholmes/status/1471707440"&gt;in&#xD;
reply to joshholmes&lt;/a&gt;&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=77167377-f49f-46c3-a3ab-f0daaca1a5b9"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=QPUhuunIau8:gfKQ3RENB00:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=QPUhuunIau8:gfKQ3RENB00:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=QPUhuunIau8:gfKQ3RENB00:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=QPUhuunIau8:gfKQ3RENB00:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=QPUhuunIau8:gfKQ3RENB00:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=QPUhuunIau8:gfKQ3RENB00:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=QPUhuunIau8:gfKQ3RENB00:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/QPUhuunIau8" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,77167377-f49f-46c3-a3ab-f0daaca1a5b9.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2009/04/07/AntidotalInfoOnJavaScriptLibraryExtJS.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=7bbd5f67-bd59-483e-80f6-3b4ab09d4f70</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,7bbd5f67-bd59-483e-80f6-3b4ab09d4f70.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,7bbd5f67-bd59-483e-80f6-3b4ab09d4f70.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7bbd5f67-bd59-483e-80f6-3b4ab09d4f70</wfw:commentRss><title>Kalamazoo X conference</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,7bbd5f67-bd59-483e-80f6-3b4ab09d4f70.aspx</guid><link>http://feedproxy.google.com/~r/JoshHolmes/~3/p2pa9esVesE/KalamazooXConference.aspx</link><pubDate>Mon, 06 Apr 2009 14:15:19 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;a href="http://kalamazooX.org"&gt;&lt;img style="border-bottom-style: none; border-right-style: none; margin: 5px; display: inline; border-top-style: none; border-left-style: none" border="0" align="left" src="http://KalamazooX.org/images/KalamazooX.BlogBadgeSpeaker.png"&gt;&lt;/img&gt;&lt;/a&gt;&lt;p&gt;&#xD;
On the heels of the &lt;a href="http://mjeaton.net/blog/archive/2009/04/06/the-kalamazoo-x-conference-ndash-major-announcement.aspx"&gt;announcement&#xD;
by Michael Eaton&lt;/a&gt;, I thought I should post about how excited I am about the upcoming &lt;a href="http://kalamazoox.org/"&gt;Kalamazoo&#xD;
X Conference&lt;/a&gt;… &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The &lt;a href="http://kalamazoox.org/"&gt;Kalamazoo X conference&lt;/a&gt;, while being put on&#xD;
by the technical community, is a very different sort of conference. You’re not going&#xD;
to hear “technical” talks. All of talks pertain to technical folk but it’s a step&#xD;
back from the nuts and bolts that we usually deal with day in and day out and focusing&#xD;
on the topics that are really important. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;img style="margin: 5px; display: inline" alt="Jeffatmix" align="right" src="http://s3.amazonaws.com/twitter_production/profile_images/119021018/jeffatmix.jpg" width="120" height="120"&gt;&lt;/img&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://jeffblankenburg.com/default.aspx"&gt;Jeff Blankenburg&lt;/a&gt; will be giving&#xD;
Six Tips for Improving User Experience. Jeff is one of those amazing people that cross&#xD;
easily between the designer and developer world and can talk to either group with&#xD;
complete credibility. Again, he's bringing great experience to the table as his roots&#xD;
in development are in the digital marketing arena.&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img style="margin: 5px; display: inline" alt="Photo_11" align="left" src="http://s3.amazonaws.com/twitter_production/profile_images/112509104/Photo_11.jpg" width="120" height="90"&gt;&lt;/img&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://fallenrogue.com/"&gt;Leon Gersing&lt;/a&gt; will lead a discussion about Change.&#xD;
Leon is a great software craftsman who has worked in all types of development shops&#xD;
from large consulting shops and independent software vendors to the small and nimble&#xD;
consulting shops working in technology ranging from his much loved Sharepoint to Ruby&#xD;
on Rails. His deep passion and experience combine to make him a dynamic and engaging&#xD;
speaker.&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="margin: 5px 10px 5px 5px; display: inline" align="right" src="http://profile.ak.facebook.com/profile5/1507/57/n683692061_8747.jpg" width="92" height="120"&gt;&lt;/img&gt;We&#xD;
have the great fortune to hear from &lt;a href="http://frazzleddad.blogspot.com/"&gt;Jim&#xD;
Holmes&lt;/a&gt; twice speaking on 3 Tips to Improve Your Development Process and Leadership&#xD;
101. The first talk is a great talk that is important to anyone doing development&#xD;
regardless of their current process, tooling or any other variables. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Jim's second talk on Leadership 101 couldn't be given by a more perfect guy. Jim is&#xD;
a born leader in the truest sense of the word. Management, as a role on a team, can&#xD;
be given to someone regardless of their qualifications. Leadership is proven and earned&#xD;
over time. Jim's led the CodeMash conference, which he downplays but he is the head&#xD;
cat herder. He doesn't play a "management" role but rather leads through great thought&#xD;
leadership, influence and enablement of the people around him. But he knows when the&#xD;
buck has come to his desk and he has the ability to make those hard decisions that&#xD;
are required of a true leader. &#xD;
&lt;br&gt;&#xD;
I've heard Jim speak on similar topics in the past and I can attest that he's bringing&#xD;
real world hard fought battle proven experience to the table. You can get some of&#xD;
his thoughts on the topic reading &lt;a href="http://nplus1.org/tidbits/jim-holmes-on-leadership/"&gt;his&#xD;
blog post about Leadership 101&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;img style="margin: 5px; display: inline" alt="Head_shot_v2" align="left" src="http://s3.amazonaws.com/twitter_production/profile_images/59200747/Head_Shot_v2.jpg" width="89" height="120"&gt;&lt;/img&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.brianhprince.com/"&gt;Brian Prince&lt;/a&gt; will be reprising his Soft&#xD;
Skills talk. This is a great talk that speaks to the non-technical side of our jobs&#xD;
that we all need to work on. I’ve seen, and actually delivered once when Brian came&#xD;
down with the plague the night before the &lt;a href="http://www.dayofdotnet.org/PastEvents.aspx"&gt;Grand&#xD;
Rapids Day of .NET&lt;/a&gt;, this talk before. It strikes to the heart of how you, as a&#xD;
technical person, need to work on and grow your soft skills. It’s not fuzzy feel good&#xD;
bits, it’s things that will actually help you in your career. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/ct.ashx?id=914c96c0-bdfa-4874-846f-972d09c6c61a&amp;amp;url=http%3a%2f%2fwww.joshholmes.com%2fimages%2fJoshHolmesOnMountCrestedButte.jpg"&gt;&lt;img style="margin: 5px" border="0" alt="Josh Holmes on Mount Crested Butte - photo by James Ward" align="right" src="http://www.joshholmes.com/images/JoshHolmesOnMountCrestedButteSmall.jpg" width="120" height="80"&gt;&lt;/img&gt;&lt;/a&gt;And&#xD;
I'll be speaking on the Lost Art of Simplicity. I've decided to go to war with complexity.&#xD;
Simplicity is a lost art in the application development space. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The Wikipedia definition of Simplicity is “Simplicity is the property, condition,&#xD;
or quality of being simple or un-combined. It often denotes beauty, purity or clarity.&#xD;
Simple things are usually easier to explain and understand than complicated ones.&#xD;
Simplicity can mean freedom from hardship, effort or confusion.” &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This is a beautiful statement that we often lose sight of when we are building our&#xD;
applications. Instead we are on a never ending quest to fill out a checklist of features&#xD;
or to build something clever forgetting about the actual needs of our users to get&#xD;
a specific task done. This session takes complexity to task and challenges you to&#xD;
bring simplicity to the center of your development with some straightforward ideas&#xD;
and guidance.&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
I’ve not even touched on the sessions by &lt;a href="http://blog.timwingfield.com/"&gt;Tim&#xD;
Wingfield&lt;/a&gt;, &lt;a href="http://www.cloudsocket.com/"&gt;Chris Woodruff&lt;/a&gt;, &lt;a href="http://mvwood.com/"&gt;Michael&#xD;
Wood&lt;/a&gt;, &lt;a href="http://www.pinnsg.com/"&gt;Phil Japikse&lt;/a&gt;, &lt;a href="http://www.codinggeekette.com/"&gt;Sarah&#xD;
Dutkiewicz&lt;/a&gt;, &lt;a href="http://www.jamescbender.com/"&gt;James Bender&lt;/a&gt;, &lt;a href="http://www.davidgiard.com/"&gt;Dave&#xD;
Giard&lt;/a&gt;, &lt;a href="http://www.visualhero.com/v_06/"&gt;Andy van Solkema&lt;/a&gt; or Clovis&#xD;
Bordeaux! I know most of these speakers and have seen them speak on a variety of topics.&#xD;
I guarantee that they are great speakers and that you’ll learn something from each&#xD;
and every one of them…&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Best of all, you don't have to choose between the all of these great sessions. I was&#xD;
terrified that I’d be in a time slot opposite of &lt;a href="http://frazzleddad.blogspot.com/"&gt;Jim&#xD;
Holmes&lt;/a&gt; and A: miss his talk and B: have to compete with him for audience. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
As per the &lt;a href="http://mjeaton.net/blog/archive/2009/04/06/the-kalamazoo-x-conference-ndash-major-announcement.aspx"&gt;announcement&#xD;
by Michael Eaton&lt;/a&gt;, the conference format has been radically altered to be a single&#xD;
track conference with 20-30 minute sessions rather than the typical 4 track conference&#xD;
with 70 minute sessions. This will let me catch all of the sessions and it gives a&#xD;
new energy to all of the sessions as the speakers have to stay very tight to their&#xD;
topic and come with high energy to hit the time limit. I’ll be working with Mike to&#xD;
make sure that we have the hook ready  to go for people that go over. That might&#xD;
include me… &#xD;
&lt;/p&gt;&lt;p&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" alt="" align="left" src="http://KalamazooX.org/images/KalamazooX-BlogBadgeAttendee.png"&gt;&lt;/img&gt;As&#xD;
you can tell, the &lt;a href="http://kalamazoox.org/"&gt;Kalamazoo X Conference&lt;/a&gt; will&#xD;
be a very different conference than you’re used to. Now, it does cost $20.00 for professionals&#xD;
and $10.00 for students. That’s a VERY reasonable price for the quality of the speakers,&#xD;
topics and format that the &lt;a href="http://kalamazoox.org/aboutus"&gt;organizing committee&lt;/a&gt; has&#xD;
been able to assemble. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Hopefully I’ll see you in Kalamazoo on Sat. April 25th. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=7bbd5f67-bd59-483e-80f6-3b4ab09d4f70"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=p2pa9esVesE:l3yjXhAvM78:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=p2pa9esVesE:l3yjXhAvM78:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=p2pa9esVesE:l3yjXhAvM78:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=p2pa9esVesE:l3yjXhAvM78:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=p2pa9esVesE:l3yjXhAvM78:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=p2pa9esVesE:l3yjXhAvM78:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=p2pa9esVesE:l3yjXhAvM78:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/p2pa9esVesE" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,7bbd5f67-bd59-483e-80f6-3b4ab09d4f70.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2009/04/06/KalamazooXConference.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=b705c37b-b47f-4e8d-8f8b-091efc4cb684</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,b705c37b-b47f-4e8d-8f8b-091efc4cb684.aspx</pingback:target><dc:creator /><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,b705c37b-b47f-4e8d-8f8b-091efc4cb684.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=b705c37b-b47f-4e8d-8f8b-091efc4cb684</wfw:commentRss><title>Congratulations, you've installed dasBlog with Web Deploy!</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,b705c37b-b47f-4e8d-8f8b-091efc4cb684.aspx</guid><link>http://feedproxy.google.com/~r/JoshHolmes/~3/3tckViz0Duo/CongratulationsYouveInstalledDasBlogWithWebDeploy.aspx</link><pubDate>Wed, 11 Mar 2009 07:00:00 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&#xD;
After &lt;a href="Login.aspx"&gt;logging in&lt;/a&gt;, be sure to visit all the options under &lt;a href="EditConfig.aspx"&gt;Configuration&lt;/a&gt; in&#xD;
the Admin Menu Bar above. There are &lt;a href="http://dasblog.info/ThemeScreenShots.aspx"&gt;26&#xD;
themes to choose from&lt;/a&gt;, and you can also &lt;a href="http://dasblog.info/ThemesAndMacros.aspx"&gt;create&#xD;
your own&lt;/a&gt;.&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=b705c37b-b47f-4e8d-8f8b-091efc4cb684"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=3tckViz0Duo:dPLiX-aM6xc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=3tckViz0Duo:dPLiX-aM6xc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=3tckViz0Duo:dPLiX-aM6xc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=3tckViz0Duo:dPLiX-aM6xc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=3tckViz0Duo:dPLiX-aM6xc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/3tckViz0Duo" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,b705c37b-b47f-4e8d-8f8b-091efc4cb684.aspx</comments><category>dasBlog</category><feedburner:origLink>http://www.joshholmes.com/blog/2009/03/11/CongratulationsYouveInstalledDasBlogWithWebDeploy.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=37594a17-d807-471e-a14c-e7088dbff499</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,37594a17-d807-471e-a14c-e7088dbff499.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,37594a17-d807-471e-a14c-e7088dbff499.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=37594a17-d807-471e-a14c-e7088dbff499</wfw:commentRss><title>Interesting Web Development Related Resources</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,37594a17-d807-471e-a14c-e7088dbff499.aspx</guid><link>http://feedproxy.google.com/~r/JoshHolmes/~3/dyAjGg-78as/InterestingWebDevelopmentRelatedResources.aspx</link><pubDate>Thu, 26 Feb 2009 23:19:19 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&#xD;
Like so many thing that we do in our daily development, there’s a high probability&#xD;
that someone has already solved the problem if you know where to look. This is just&#xD;
a collection of resources that I’ve found useful over time. Honestly, I’m posting&#xD;
these here because I need them in one place so that I can find them easily… &#xD;
&lt;/p&gt;&lt;h3&gt;JavaScript Resources&#xD;
&lt;/h3&gt;&lt;p&gt;&#xD;
Like a lot of you, I’ve been doing JavaScript since 1996. I’ve been pretty geeked,&#xD;
however, with the recent (well, last 2-4 years) emergence of a ton of JavaScript frameworks&#xD;
that are making this work a lot easier. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://dojotoolkit.org"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_23.png" width="111" height="83"&gt;&lt;/img&gt;&lt;/a&gt;The&#xD;
first one to talk about it &lt;a href="http://dojotoolkit.org"&gt;dojo&lt;/a&gt;. It’s one of&#xD;
the more mature ones that’s out there. I’ll be honest and say that it’s been a little&#xD;
while since I’ve used it because I’ve started using jQuery or Prototype more often.&#xD;
That said, &lt;a href="http://dojotoolkit.org"&gt;dojo&lt;/a&gt; is one of the most complete frameworks&#xD;
out there. I do love it’s drag and drop support. It includes offline support and a&#xD;
whole lot more. Check out and play with some of it’s cool features at &lt;a title="http://dojocampus.org/explorer" href="http://dojocampus.org/explorer"&gt;http://dojocampus.org/explorer&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Of course, any group that has a conference called &lt;a href="http://dojotoolkit.org/tags/dojo-beer"&gt;dojo.beer()&lt;/a&gt; is&#xD;
a winner in my book. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.mochikit.com/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_24.png" width="200" height="108"&gt;&lt;/img&gt;&lt;/a&gt;The&#xD;
second toolkit is &lt;a href="http://www.mochikit.com/"&gt;MochiKit&lt;/a&gt;. I love it’s tag&#xD;
line of “Making JavaScript Suck Less”. I first worked with MochiKit when I was playing&#xD;
around with &lt;a href="http://turbogears.org"&gt;TurboGears&lt;/a&gt; – a Python web application&#xD;
stack. What it’s really outstanding at is doing async work which is particularly useful&#xD;
in doing AJAX and other service based work. It’s interesting to note that &lt;a href="http://www.blueskyonmars.com/"&gt;Kevin&#xD;
Dangoor&lt;/a&gt; started Turbo Gears and then at some point later ended up working for &lt;a href="http://www.sitepen.com"&gt;SitePen&lt;/a&gt; who&#xD;
paid him to work on &lt;a href="http://dojotoolkit.org"&gt;dojo&lt;/a&gt;. Check out demos of&#xD;
it in action at &lt;a title="http://www.mochikit.com/demos.html" href="http://www.mochikit.com/demos.html"&gt;http://www.mochikit.com/demos.html&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.prototypejs.org/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_27.png" width="152" height="85"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.prototypejs.org/"&gt;Prototype&lt;/a&gt; is a slick relatively low level&#xD;
framework. What it does is extend the HTML DOM to include a lot of really useful features&#xD;
like element, class and css selectors. One of the useful things that it does is add&#xD;
a number of manipulations to the built in string class. This gives us startsWith,&#xD;
stripScripts, stripTags, isJSON, strip and a whole lot of other really useful functions.&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_29.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_thumb_10.png" width="244" height="74"&gt;&lt;/img&gt;&lt;/a&gt; By&#xD;
itself, &lt;a href="http://www.prototypejs.org/"&gt;Prototype&lt;/a&gt;’s useful but I have a&#xD;
hard time talking about it without mentioning &lt;a href="http://script.aculo.us/"&gt;script.aculo.us&lt;/a&gt; and&#xD;
some of the other plugins. &lt;a href="http://script.aculo.us/"&gt;script.aculo.us&lt;/a&gt; brings&#xD;
drag and drop support, animation frameworks a number of controls and makes it all&#xD;
really easy. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Check out demos of &lt;a href="http://www.prototypejs.org/"&gt;Prototype&lt;/a&gt; and &lt;a href="http://script.aculo.us/"&gt;script.aculo.us&lt;/a&gt; working&#xD;
together at &lt;a title="http://wiki.github.com/madrobby/scriptaculous/demos" href="http://wiki.github.com/madrobby/scriptaculous/demos"&gt;http://wiki.github.com/madrobby/scriptaculous/demos&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://jquery.com/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_32.png" width="236" height="81"&gt;&lt;/img&gt;&lt;/a&gt;&lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; is&#xD;
a fantastic and relatively light-weight framework that’s garnering a lot of new supporters&#xD;
recently. Honestly, I was happy with &lt;a href="http://dojotoolkit.org"&gt;dojo&lt;/a&gt; and &lt;a href="http://www.prototypejs.org/"&gt;Prototype&lt;/a&gt; until&#xD;
I saw the &lt;a href="http://blogs.msdn.com/webdevtools/archive/2009/02/24/vsdoc-for-jquery-1-3-2-now-available.aspx"&gt;Visual&#xD;
Studio Support for jQuery&lt;/a&gt; at which point I started playing with it. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
I’m a convert. :) Now, because it’s not as low level as &lt;a href="http://www.prototypejs.org/"&gt;Prototype&lt;/a&gt;, &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; doesn’t&#xD;
have some things like the string manipulation, but overall I’m really pleased. I find&#xD;
that I have to write a lot less code to accomplish the same results. And very importantly,&#xD;
the &lt;a href="http://docs.jquery.com/"&gt;jQuery Documentation&lt;/a&gt; is really good. Another&#xD;
really useful thing is that &lt;a href="http://jquery.org"&gt;jQuery&lt;/a&gt;, being a really&#xD;
nice citizen, has built in support to make sure that it’s &lt;a href="http://docs.jquery.com/Using_jQuery_with_Other_Libraries"&gt;compatible&#xD;
with other JavaScript frameworks&lt;/a&gt;. Throw all of that in with intellisense in Visual&#xD;
Studio and it makes life easy. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
There are also a ton of different &lt;a href="http://plugins.jquery.com/"&gt;plugins for&#xD;
jQuery&lt;/a&gt; that do everything from menus to rude string manipulation (not as good&#xD;
as Prototype but it’s a start). &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Some of my favorite jQuery plugins in no particular order are:&#xD;
&lt;/p&gt;&lt;h5&gt;&lt;a href="http://www.jqueryplugins.com/plugins/view/62/"&gt;AJAX History&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.jqueryplugins.com/plugins/view/97/"&gt;Mousewheel&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.jqueryplugins.com/plugins/view/96/"&gt;JSON&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.jqueryplugins.com/plugins/view/14/"&gt;Curvy Corners&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.jqueryplugins.com/plugins/view/22/"&gt;jCarousel&lt;/a&gt;&lt;br&gt;&lt;a href="http://www.jqueryplugins.com/plugins/view/51/"&gt;xWin&lt;/a&gt;&lt;/h5&gt;&lt;p&gt;&lt;a href="http://www.asp.net/ajax/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_35.png" width="180" height="82"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;a href="http://www.asp.net/ajax/"&gt;ASP.NET&#xD;
AJAX&lt;/a&gt; is the last framework I’m going to talk about here not because there aren’t&#xD;
other frameworks but I haven’t used the others so I don’t really want to comment on&#xD;
them. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
First, as the name does imply, what it does really well is AJAX stuff. One of the&#xD;
really powerful features is the JavaScript proxy generation. &#xD;
&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptManager&lt;/span&gt;&lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="ScriptManager1"&lt;/span&gt;&lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Services&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ServiceReference&lt;/span&gt;&lt;span class="attr"&gt;Path&lt;/span&gt;&lt;span class="kwrd"&gt;="~/CustomersService.asmx"&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Services&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptManager&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&lt;p&gt;&#xD;
That allows you to call web services as if they were methods on an object. &#xD;
&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;function&lt;/span&gt; GetCustomerByCountry()&#xD;
{ &lt;span class="kwrd"&gt;var&lt;/span&gt; country = $get(&lt;span class="str"&gt;"txtCountry"&lt;/span&gt;).value;&#xD;
InterfaceTraining.CustomersService.GetCustomersByCountry(country, OnWSRequestComplete);&#xD;
} &lt;span class="kwrd"&gt;function&lt;/span&gt; OnWSRequestComplete(results) { &lt;span class="kwrd"&gt;if&lt;/span&gt; (results&#xD;
!= &lt;span class="kwrd"&gt;null&lt;/span&gt;) { CreateCustomersTable(results); GetMap(results);&#xD;
} }&lt;/pre&gt;&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&#xD;
&lt;/style&gt;&lt;p&gt;&#xD;
Second, despite the name, &lt;a href="http://www.asp.net/ajax/"&gt;ASP.NET AJAX&lt;/a&gt; can&#xD;
work with more than just &lt;a href="http://www.asp.net"&gt;ASP.NET&lt;/a&gt;. There’s a project&#xD;
on CodePlex to generate the service proxies for PHP called &lt;a href="http://www.codeplex.com/phpmsajax"&gt;PHP&#xD;
MS AJAX&lt;/a&gt; (which is a whole lot of capital letters…). &#xD;
&lt;/p&gt;&lt;h5&gt;How do you choose? &#xD;
&lt;/h5&gt;&lt;p&gt;&#xD;
There are a ton of different tests out there some of which you can look at the results,&#xD;
others of which you can actually run yourself…&#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://blog.creonfx.com/javascript/mootools-vs-jquery-vs-prototype-vs-yui-vs-dojo-comparison-revised:"&gt;Dojo&#xD;
vs JQuery vs MooTools vs Prototype Performance Comparison | Peter Velichkov's Blog&#xD;
- Jan 19, 2009&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://mootools.net/slickspeed/ "&gt;Mootools Slickspeed Test&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&#xD;
I like to see if there’s broad support so the project won’t go away, see if it’s actively&#xD;
being developed, what tooling is available, how easy the syntax is, how well it plays&#xD;
with others, what it brings to the table from a functionality standpoint and a whole&#xD;
lot more. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Really though, it comes down to your preferences. The good news is that it’s not the&#xD;
end of the world if you decide to switch frameworks. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
My current JavaScript work is being done with a combination of &lt;a href="http://jquery.org"&gt;jQuery&lt;/a&gt; for&#xD;
most of my client side work with &lt;a href="http://www.asp.net/ajax/"&gt;ASP.NET AJAX&lt;/a&gt; doing&#xD;
my communications (and some of the controls) with a little bit of &lt;a href="http://www.prototypejs.org/"&gt;Prototype&lt;/a&gt; thrown&#xD;
in when I need to go lower level. &#xD;
&lt;/p&gt;&lt;h3&gt;CSS Resources&#xD;
&lt;/h3&gt;&lt;p&gt;&#xD;
I used to spend days getting exactly the right alignment in my HTML/CSS work. But&#xD;
as time has gone on, I’ve gotten more mature and realized that I don’t have to work&#xD;
that hard. Instead of me figuring out how to do the exact right layout should be,&#xD;
I’m starting to leverage the various CSS Frameworks that are out there – especially&#xD;
since there are so many new browsers and form factors out there from IE8 to Safari&#xD;
4 to iPhone. I want a framework to &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://960.gs/"&gt;&lt;a href="http://960.gs/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_17.png" width="143" height="105"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/a&gt;One&#xD;
really simple CSS Framework is the &lt;a href="http://960.gs/"&gt;960 Grid System&lt;/a&gt;. It’s&#xD;
simple and gives you a lot of flexibility. The idea is that it breaks up the page&#xD;
into either 12 or 16 different columns and then lets you put in areas that spread&#xD;
across any number of those columns. This is a direct nod to the print industry which&#xD;
does exactly the same thing on paper. This gives you a tremendous number of possibilities&#xD;
from a simple two column layout to a really complicated layouts with multiple width&#xD;
columns and variety. Check it out, it’s simple and it works. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.designinfluences.com/fluid960gs/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_16.png" width="244" height="36"&gt;&lt;/img&gt;&lt;/a&gt; &#xD;
The downside of it is that it’s a fixed width layout so it’s not always the right&#xD;
choice. The good news, however, is that the project has been extended by &lt;a href="http://www.designinfluences.com/fluid960gs/"&gt;Fluid&#xD;
960 Grid System&lt;/a&gt;. &lt;a href="http://www.mootools.net/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_15.png" width="191" height="48"&gt;&lt;/img&gt;&lt;/a&gt;This&#xD;
adds JavaScript to the &lt;a href="http://960.gs/"&gt;960 Grid System&lt;/a&gt; to give is a much&#xD;
more dynamic layout that resized to your screen size. It also brings dynamic menus&#xD;
to the table. It’s JavaScript it based off of a project called &lt;a href="http://www.mootools.net/"&gt;MooTools&lt;/a&gt;.  &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://layouts.ironmyers.com"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 5px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_18.png" width="244" height="27"&gt;&lt;/img&gt;&lt;/a&gt;If&#xD;
the you really don’t want to think that hard and the others don’t give you what you&#xD;
need tied up in a neat enough package, check out &lt;a href="http://layouts.ironmyers.com"&gt;Layouts.IronMyers.com&lt;/a&gt;.&#xD;
It’s simple to use web site gives you a preview of exactly the layout that you’re&#xD;
looking for and lets you download a zip file with a sample HTML and CSS inside. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.freecsstemplates.org/"&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/InterestingWebDevRelatedResources_DA24/image_thumb_4.png" width="244" height="59"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/a&gt;And&#xD;
if that’s not enough and you really just need the design and all of the layout handed&#xD;
to you – check out &lt;a href="http://www.freecsstemplates.org/"&gt;FreeCSSTemplates.org&lt;/a&gt;.&#xD;
It’s got a large number of Creative Commons licensed CSS templates and layouts. &#xD;
&lt;/p&gt;&lt;h3&gt;Conclusion&#xD;
&lt;/h3&gt;&lt;p&gt;&#xD;
I hope these resources are as useful to you as they are to me. I’ve banged my head&#xD;
against the wall a ton of times until I realized that someone else had already solved&#xD;
the problem and I can leverage their solution. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=37594a17-d807-471e-a14c-e7088dbff499"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=dyAjGg-78as:h9OCaIgzK-8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=dyAjGg-78as:h9OCaIgzK-8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=dyAjGg-78as:h9OCaIgzK-8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=dyAjGg-78as:h9OCaIgzK-8:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=dyAjGg-78as:h9OCaIgzK-8:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/JoshHolmes?a=dyAjGg-78as:h9OCaIgzK-8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/JoshHolmes?i=dyAjGg-78as:h9OCaIgzK-8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/dyAjGg-78as" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,37594a17-d807-471e-a14c-e7088dbff499.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2009/02/26/InterestingWebDevelopmentRelatedResources.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=e74bffe6-10c3-499c-9dab-37e926dbf3d8</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,e74bffe6-10c3-499c-9dab-37e926dbf3d8.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,e74bffe6-10c3-499c-9dab-37e926dbf3d8.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e74bffe6-10c3-499c-9dab-37e926dbf3d8</wfw:commentRss><slash:comments>1</slash:comments><title>Measuring ROI – Moving from Cost Center To Strategic Partner</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,e74bffe6-10c3-499c-9dab-37e926dbf3d8.aspx</guid><link>http://feedproxy.google.com/~r/JoshHolmes/~3/QVRIRbi8k5c/MeasuringROIMovingFromCostCenterToStrategicPartner.aspx</link><pubDate>Mon, 16 Feb 2009 21:17:52 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a title="Moneyman" href="http://www.flickr.com/photos/32066106@N06/3000883956/"&gt;&lt;img class="flickr" border="0" alt="Moneyman" align="left" src="http://static.flickr.com/3206/3000883956_1e15b95584_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;I&#xD;
ran across this article on ZDNet (&lt;a href="http://blogs.zdnet.com/BTL/?p=11749"&gt;Wanted:&#xD;
ROI for internal app development&lt;/a&gt;)  that really worried me. My friends at &lt;a href="http://www.preemptive.com/"&gt;PreEmptive&#xD;
Solutions&lt;/a&gt; ran a &lt;a href="http://www.preemptive.com/survey-only-42-of-companies-calculate-return-on-investment-of-applications-they-develop.html"&gt;survey&lt;/a&gt; across&#xD;
a wide number of developers that included people from 21 different industry segments&#xD;
in 33 countries asking about how the company measure the &lt;a href="http://en.wikipedia.org/wiki/Return_on_Investment"&gt;ROI&lt;/a&gt; of&#xD;
an application that they are building. The terrifying part is that the survey found&#xD;
that 58% of companies don't bother measuring ROI on their internal applications and&#xD;
the majority of the ones that do measure don't do so in a consistent and proven way. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This means that you are almost positively throwing away time and effort and therefore&#xD;
money. For some crazy reason, companies don't like that. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/MeasuringROIIsITaCostCenterorStrategicPa_11E11/image_4.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/MeasuringROIIsITaCostCenterorStrategicPa_11E11/image_thumb_1.png" width="548" height="274"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&#xD;
Of all of the companies surveyed, only 6% have a consistent and reliable approach&#xD;
to measuring ROI. That terrifies me.&#xD;
&lt;/p&gt;&lt;h4&gt;What are your Goals?&#xD;
&lt;/h4&gt;&lt;p&gt;&#xD;
For a long time I've been preaching that IT needs to become a strategic partner to&#xD;
the business. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The issue is that most IT departments are considered &lt;a href="http://en.wikipedia.org/wiki/Cost_centre"&gt;cost&#xD;
centers&lt;/a&gt;. This means that they are the first to be cut when times get tough, they&#xD;
are the least invested in, they are the last at the table to be heard and they are&#xD;
pushed around by all of the other departments. This is not a good position to be in.&#xD;
This is why a lot of companies look to outsource IT. Since they don't see it as a&#xD;
strategic asset and partner it doesn't matter if they keep it close. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The way to move from cost center to strategic partner is to start showing value and&#xD;
to start pushing the edge on ideas that will drive a great ROI for the business. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;But, if you're not measuring the ROI, how can you talk to the business about&#xD;
the possible ROI?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a title="The math type of guy" href="http://www.flickr.com/photos/32066106@N06/3000698562/"&gt;&lt;img style="margin: 5px" class="flickr" border="0" alt="Explaining the numbers..." align="right" src="http://static.flickr.com/3138/3000698562_3f0fa25e47_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;And&#xD;
every time that someone asks me how to sell their management on usability studies&#xD;
or spending any time on a UI, I tell them to go to the numbers. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
And every time someone asks me how to sell their management on buying a given tool,&#xD;
I tell them to go to the numbers. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
And every time someone asks me how to sell their management on training, I tell them&#xD;
to go to the numbers. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
And every time someone asks me how to sell their management on anything at all, I&#xD;
tell them to go to the numbers. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
ROI really it comes down to a simple question. How much money did the business &lt;strong&gt;make&lt;/strong&gt; or &lt;strong&gt;save&lt;/strong&gt; based&#xD;
on their investment in the software that they just paid to have developed? &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
There are two ways businesses think about investments. ROI, the first, is the percentage&#xD;
of return over a given period of time. Payback, the second, very closely related to&#xD;
ROI but very importantly different, is the length of time that it takes to recoup&#xD;
the investment. The reason that payback is important is because once you hit the payback&#xD;
point everything else is profit. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/MeasuringROIIsITaCostCenterorStrategicPa_11E11/image_6.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/MeasuringROIIsITaCostCenterorStrategicPa_11E11/image_thumb_2.png" width="244" height="116"&gt;&lt;/img&gt;&lt;/a&gt; I&#xD;
borrowed the graphic to the left from &lt;a href="http://www.pdsa.com/PDSA/frmPaulSheriff.aspx"&gt;Paul&#xD;
Sheriff'&lt;/a&gt;s article called &lt;a href="http://msdn.microsoft.com/en-us/library/ms953309.aspx"&gt;The&#xD;
Business Value of .NET&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
An overly simplistic example is as follows. Let's say a company wants to build a new&#xD;
online e-commerce site. If it takes 4 developers whose salaries are each $100,000.00&#xD;
working for 3 months on a project with tools that they already own and so on. That&#xD;
means that it cost $100,000.00 to build. If the new site generates an average of an&#xD;
additional $15,000.00 a month for the first year, the gross profit is $180,000.00&#xD;
with a net of $80,000.00. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
We look at that as $80,000.00. That's a good thing. However, there are two ways that&#xD;
the business is going to look at this example. The ROI is 180% and the payback is&#xD;
6.6 months. Now, if the business sees an investment in another department that could&#xD;
yield a higher percentage or lower payback, that department is more likely to get&#xD;
the investment. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This is not a new problem. Back in 1999, Bill Gates wrote &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com/exec/obidos/ASIN/0446525685/joshholmes-20"&gt;&lt;img style="border-right-width: 0px; margin: 5px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/MeasuringROIIsITaCostCenterorStrategicPa_11E11/image_18.png" width="109" height="164"&gt;&lt;/img&gt;&lt;/a&gt;"When&#xD;
I sit down with developers to review product specifications, or with Microsoft's product&#xD;
divisions to review their three-year business plans, or with our sales groups to review&#xD;
their financial performance, we work through the difficult issues. We discuss feature&#xD;
tradeoffs vs. time to market, marketing spend vs. revenue, head count vs. return and&#xD;
so on. Through human intelligence and collaboration, we transform static sales, customer,&#xD;
and demographic data into the design of a product or a program."&lt;br&gt;&lt;a title="Business @ the Speed of Thought : Using a Digital Nervous System" href="http://www.amazon.com/exec/obidos/ASIN/0446525685/joshholmes-20"&gt;Business&#xD;
@ the Speed of Thought : Using a Digital Nervous System&lt;br&gt;&#xD;
By: Bill Gates&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&#xD;
Whether you are selling software or building internal applications, you need to go&#xD;
through the same process. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
  &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
There are two basic ways to increase ROI, produce things cheaper or provide more value. &#xD;
&lt;/p&gt;&lt;h4&gt;How did it cost to develop the software? &#xD;
&lt;/h4&gt;&lt;p&gt;&lt;a title="Money fight" href="http://www.flickr.com/photos/32066106@N06/3000884104/"&gt;&lt;img class="flickr" border="0" alt="Money fight" align="right" src="http://static.flickr.com/3174/3000884104_d77dc2f8a5_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;The&#xD;
problem is that this includes more than just the developer's salary. This includes&#xD;
how much were the machines, rent for the building they were in, telecom costs, training&#xD;
costs, their secretaries, management, consultants, tools, components that they bought&#xD;
and more. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
You can keep costs down in a tremendous number of different ways. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Understanding what you're building&lt;/strong&gt; - There are many different types&#xD;
of processes that are out there that are more or less efficient depending on the team,&#xD;
project and a whole lot of different requirements. There are a handful of absolutes. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0130266922?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0130266922"&gt;&lt;img style="border-right-width: 0px; margin: 5px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/MeasuringROIIsITaCostCenterorStrategicPa_11E11/image_21.png" width="118" height="164"&gt;&lt;/img&gt;&lt;/a&gt; The&#xD;
first is that you need to know that you're building. You can accomplish this through&#xD;
solid requirements analysis. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/"&gt;Martin Shoemaker&lt;/a&gt; makes &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/archive/2008/12/16/an-argument-for-requirements-analysts.aspx"&gt;An&#xD;
Argument for Requirements Analysts&lt;/a&gt; where he points out research done by &lt;a href="http://en.wikipedia.org/wiki/Barry_Boehm"&gt;Boehm&lt;/a&gt; and&#xD;
published in &lt;a href="http://www.amazon.com/gp/product/0130266922?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0130266922"&gt;Software&#xD;
Cost Estimation with COCOMO II&lt;/a&gt; found that "&lt;em&gt;Excellent requirements analysts&#xD;
can reduce a project’s schedule by almost 30%, while inadequate analysis can increase&#xD;
the schedule by over 40%&lt;/em&gt;.". &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0321466756?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321466756"&gt;&lt;img style="border-right-width: 0px; margin: 5px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" align="right" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/MeasuringROIIsITaCostCenterorStrategicPa_11E11/image_24.png" width="111" height="164"&gt;&lt;/img&gt;&lt;/a&gt;&lt;a href="http://suckbusters.com/"&gt;David&#xD;
Platt&lt;/a&gt; has been talking about this same problem for years as "Why Software Sucks".&#xD;
He's been on &lt;a href="http://www.arcast.tv/"&gt;ArCast&lt;/a&gt; twice, once with &lt;a href="http://channel9.msdn.com/shows/ARCast+with+Ron+Jacobs/ARCastnet-Why-Software-Sucks-with-David-Platt/"&gt;Ron&#xD;
Jacobs&lt;/a&gt; and once again with &lt;a href="http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Why-Software-Still-Sucks/"&gt;Bob&#xD;
Familiar&lt;/a&gt;. And he's got a book on the topic called &lt;a href="http://www.amazon.com/gp/product/0321466756?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0321466756"&gt;Why&#xD;
Software Sucks...and What You Can Do About It&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&#xD;
Before you freak out, this does not mean &lt;a href="http://en.wikipedia.org/wiki/Waterfall_process"&gt;Waterfall&lt;/a&gt;.&#xD;
This means that you understand what you're going to be building and have a good grasp&#xD;
on the requirements. You're going to make different web framework decisions if you&#xD;
have to scale to 10 users verses scaling to a million users. You're going to make&#xD;
different input type decisions if your users are working outside and likely to be&#xD;
wearing gloves. You're going to make different data locale choices if your user is&#xD;
going to be sitting in the corporate office next to the data center verses sitting&#xD;
in India or somewhere. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/B001KW00X4?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B001KW00X4"&gt;&lt;img style="border-right-width: 0px; margin: 5px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/MeasuringROIIsITaCostCenterorStrategicPa_11E11/image_14.png" width="125" height="164"&gt;&lt;/img&gt;&lt;/a&gt; With&#xD;
the &lt;a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language"&gt;Unified Modeling&#xD;
Language (UML)&lt;/a&gt;, which can be leveraged with almost any process, requirements are&#xD;
captured in &lt;a href="http://en.wikipedia.org/wiki/Use_case_diagram"&gt;Use Case Diagrams&lt;/a&gt;.&#xD;
Check out &lt;a href="http://geekswithblogs.net/UlteriorMotiveLounge/Default.aspx"&gt;Martin&#xD;
Shoemaker&lt;/a&gt;'s &lt;a href="http://www.amazon.com/gp/product/B001KW00X4?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=B001KW00X4"&gt;UML&#xD;
Applied&lt;/a&gt; for a light weight process he calls &lt;a href="http://www.devshed.com/c/a/Practices/FiveStep-UML-OOAD-for-Short-Attention-Spans-Define-Refine-Assign/"&gt;5&#xD;
step UML&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
In &lt;a href="http://en.wikipedia.org/wiki/Extreme_Programming"&gt;Extreme Programming&lt;/a&gt;,&#xD;
one of the Agile methodologies, these requirements are captured in &lt;a href="http://en.wikipedia.org/wiki/User_story"&gt;User&#xD;
Stories&lt;/a&gt;. Regardless of your process, there is a way to do requirements analysis&#xD;
and it's absolute that you have to do it. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Another absolute when it comes to process is that you need to have some form of user&#xD;
acceptance. A huge issue with most waterfall methodologies is that they push this&#xD;
user acceptance to the end of the project. At this point in time, the cost of fixing&#xD;
issues that the user finds with the software is prohibitively expensive. This is why&#xD;
Agile methodologies have the user involved in the project the whole way through and&#xD;
get smaller bits of functionality in front of the user earlier and more often. Course&#xD;
corrections along the way are a lot less costly than reversing and undoing months&#xD;
of work. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Buying a component or application&lt;/strong&gt; - Building software is expensive. &lt;strong&gt;&lt;strong&gt;&lt;a title="Going shopping again" href="http://www.flickr.com/photos/32066106@N06/3005682627/"&gt;&lt;img style="margin: 5px" class="flickr" border="0" alt="Going shopping again" align="right" src="http://static.flickr.com/3144/3005682627_78d9db93b8_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/strong&gt;Most&#xD;
of the time, it's cheaper to acquire something than to write it yourself. The question&#xD;
is, how close is the component or application to what you needed and how much customization&#xD;
do you need? Many people have heard me talk about "Buy, Rent or Generate". If it's&#xD;
not adding to your business' bottom line, why are you spending the time and energy&#xD;
to build up the intellectual property yourself? &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Think about a control suite such as &lt;a href="http://www.infragistics.com/dotnet/netadvantage/wpf.aspx#Overview"&gt;NetAdvantage&lt;/a&gt; for&#xD;
WPF from &lt;a href="http://www.infragistics.com"&gt;Infragistics&lt;/a&gt;. It's a $995.00 price&#xD;
tag. At first glance that's a lot of money but how long would it take for you to write&#xD;
a control such as their xamChart that does 2D and 3D charting? A month? Two? Let's&#xD;
be overly optimistic and confident like all of us technical folk are and say a week.&#xD;
If you're making $50,000.00 a year, you just broke even if you actually hit the ridiculously&#xD;
tight deadline (technically you still lost because of all of the other factors that&#xD;
go into the cost of supporting you as a developer but for the moment, let's pretend&#xD;
that you broke even...). What about support or feature enhancements? &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The question you have to answer is does building the control, component, application&#xD;
yourself worth more to the company than buying it? What's the (you should have seen&#xD;
this coming) Return on Investment? &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
With any of type of components or applications, you have to look at the full cost&#xD;
however. Often you'll find that the licensing cost is a small part of the overall&#xD;
acquisition. How long does it take to integrate with the rest of your application?&#xD;
How much modification does it require? How much maintenance does it require? Whether&#xD;
it's free (as in beer - i.e. no licensing fees) or not, there's a cost associated.&#xD;
People who charge money for their software, open source or not, are betting on the&#xD;
fact that the cost of acquisition is going to be lower than you building it yourself.&#xD;
Sometimes they're right, sometimes they're wrong. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;More efficient tools&lt;/strong&gt; - The more efficient you are with your tools,&#xD;
the less time it will take for you to get features and functionality in front of the&#xD;
business. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a title="When the boss is a hammer..." href="http://www.flickr.com/photos/32066106@N06/3000698020/"&gt;&lt;img style="margin: 5px" class="flickr" border="0" alt="Right tool for the job..." align="left" src="http://static.flickr.com/2121/3000698020_05ae69ff11_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;For&#xD;
example, if you start leveraging &lt;a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/index.xml"&gt;CodeRush&lt;/a&gt; and/Or &lt;a href="http://www.jetbrains.com/resharper/"&gt;Resharper&lt;/a&gt; on&#xD;
top of &lt;a href="http://msdn.microsoft.com/en-us/vstudio/default.aspx"&gt;Visual Studio&lt;/a&gt;,&#xD;
it will save you a lot of time. Or if you are leveraging tools that cut down on the&#xD;
amount of time you spend reporting or anything else you are saving time. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Again, pull out the numbers. If you can prove that you'll have a 5 minute a day savings&#xD;
in time by leveraging &lt;a href="http://www.devexpress.com/Products/Visual_Studio_Add-in/Coding_Assistance/index.xml"&gt;CodeRush&lt;/a&gt; for&#xD;
example you might have a good case. At $50,000.00 a year / 2080 paid hours per year&#xD;
= about $24 an hour and a savings of 5 minutes * work days (with two weeks of vacation)&#xD;
is a savings of 900 minutes or 15 hour which equals $360.00. This means that at a&#xD;
price tag of $249.00, the ROI is 144% with a payback of 8.3 months. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The same type exercise applies if you are looking at buying a source control management&#xD;
system, bug tracking system or any other set of tools such as &lt;a href="http://msdn.microsoft.com/en-us/vsts2008/default.aspx"&gt;VSTS&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/tfs2008/bb887602.aspx"&gt;Team&#xD;
System&lt;/a&gt;. In fact, there's a whole lot of case studies that lay out the &lt;a href="http://msdn.microsoft.com/en-us/vsts2008/aa718812.aspx"&gt;ROI&#xD;
of VSTS and Team Suite&lt;/a&gt;.&#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Not building a feature&lt;/strong&gt; - The cheapest feature is the one that you&#xD;
don't build in the first place. The &lt;a title="When it would have been better with a plan" href="http://www.flickr.com/photos/32066106@N06/3000885128/"&gt;&lt;img style="margin: 5px" class="flickr" border="0" alt="When it would have been better with a plan" align="right" src="http://static.flickr.com/3226/3000885128_2615389bc9_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;question&#xD;
is, how do you know which features you need to build in the first place? First and&#xD;
foremost, you need to understand the user. This is accomplished by doing user research.&#xD;
Next you need to, going back to my first point, do solid requirements analysis so&#xD;
that you know what you are supposed to build. And most importantly, you need to look&#xD;
at partnering with the business to build out the application. This is a core tenet&#xD;
all of the Agile methodologies. This means that you're going to be building only the&#xD;
features that the folks on the business side want, not the features that you think&#xD;
that they need.&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The second question here is after you build a feature, do you measure to see if the&#xD;
users are actually using a given feature? In other words, if you spent X amount of&#xD;
time and energy building out a specific set of functionality, how do you know that&#xD;
the business is actually realizing the potential return? It's a simple matter of logging&#xD;
when a given menu item or button is clicked or code path is executed. There are tools&#xD;
that will automate setting all of this up. &lt;a href="http://www.preemptive.com/"&gt;PreEmptive&#xD;
Solutions&lt;/a&gt;, for example, can build this functionality into your application without&#xD;
you having to write any code with their &lt;a href="http://www.preemptive.com/images/documentation/Microsoft_vs10_press_release.pdf"&gt;2010&#xD;
Dotfuscator&lt;/a&gt; application. &#xD;
&lt;/p&gt;&lt;h4&gt;How much does it cost to run the software? &#xD;
&lt;/h4&gt;&lt;p&gt;&lt;a title="When money wins the race" href="http://www.flickr.com/photos/32066106@N06/3000884022/"&gt;&lt;img style="margin: 5px" class="flickr" border="0" alt="When money wins the race" align="left" src="http://static.flickr.com/3182/3000884022_92c3d51738_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;There's&#xD;
a lot that goes into calculating the cost of running the software. It includes not&#xD;
only the cost of running the data center, hardware that the users use, the electricity&#xD;
to run the machines and the like but it also includes training to user to use the&#xD;
software, the user's salary while they wait on latency issues and a whole lot more. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Again, there's a tremendous amount of ways that you can save money in this arena. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Deploy in the cloud&lt;/strong&gt; -  The idea of &lt;a href="http://en.wikipedia.org/wiki/Utility_computing"&gt;utility&#xD;
computing&lt;/a&gt; is that you only pay for the service that you use just like the electric&#xD;
bill. In a recent conversation with a friend whose company maintains MASSIVE data&#xD;
centers, he said that the servers were averaging less than 15% utilization. This is&#xD;
nuts but smart at the same time. On the one hand, you've got 6-7 times the data center&#xD;
that you need. On the other hand, you're ready to handle spike traffic. The issue&#xD;
is that you're still paying for that unused 85%. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This is where &lt;a href="http://www.microsoft.com/azure/register.mspx"&gt;Windows Azure&lt;/a&gt; and&#xD;
other cloud computing platforms comes in. By deploying to the cloud you are cutting&#xD;
the costs of the data center down to what you are utilizing rather than what you anticipate&#xD;
as the possible high water marks. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This comes back to the question, however, what's more valuable to the company? Keeping&#xD;
the data and processing in-house or saving the cost of the data center. A key architectural&#xD;
decision that you need to make here is what's business critical to keep in house and&#xD;
how can you architect to keep that in house while rolling other parts out to rented&#xD;
data centers? &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Build a better UX&lt;/strong&gt; - If done correctly, this can make you user more&#xD;
efficient, cut down on the training costs and reduce support costs.  &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0672326140?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0672326140"&gt;&lt;img style="border-right-width: 0px; margin: 5px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/MeasuringROIIsITaCostCenterorStrategicPa_11E11/image_15.png" width="110" height="164"&gt;&lt;/img&gt;&lt;/a&gt; A&#xD;
great book that talks about UX is &lt;a href="http://www.amazon.com/gp/product/0672326140?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0672326140"&gt;The&#xD;
Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore&#xD;
the Sanity&lt;/a&gt; by &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26redirect%3Dtrue%26search-type%3Dss%26index%3Dbooks%26ref%3Dntt%255Fathr%255Fdp%255Fsr%255F1%26field-author%3DAlan%2520Cooper&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=390957"&gt;Alan&#xD;
Cooper&lt;/a&gt;. I can recommend reading not only any book that Alan Cooper has written&#xD;
but also can recommend reading &lt;a href="http://www.cooper.com/journal/alan_cooper/"&gt;his&#xD;
blog&lt;/a&gt;. In this book, Alan makes the analogy that most technology is like the dancing&#xD;
bear at the circus. The reality is that the bear is not a great dancer but people&#xD;
still flock to the circus to see the bear dance because, well, it's a dancing bear.&#xD;
Many (maybe even most) of our technology solutions are really not that great for the&#xD;
user but the fact that it does anything at all is a novelty. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0201192462?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0201192462"&gt;&lt;img style="border-right-width: 0px; margin: 5px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Principles of Software Engineering Management" align="right" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/MeasuringROIIsITaCostCenterorStrategicPa_11E11/image_12.png" width="109" height="164"&gt;&lt;/img&gt;&lt;/a&gt;In &lt;a href="http://www.amazon.com/gp/product/0201192462?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0201192462"&gt;Principles&#xD;
Of Software Engineering Management&lt;/a&gt;, &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26redirect%3Dtrue%26search-type%3Dss%26index%3Dbooks%26ref%3Dntt%255Fathr%255Fdp%255Fsr%255F1%26field-author%3DTom%2520Gilb&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=390957"&gt;Tom&#xD;
Gilb&lt;/a&gt; wrote that "The rule of thumb in many usability-aware organizations is that&#xD;
the cost-benefit ratio for usability is $1:$10-$100."&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This cost benefit ratio is realized in several ways. Users will often call support&#xD;
to figure out how accomplish a given task. These calls can be eliminated by careful&#xD;
building of the user experience so that it's "intuitive". To figure out what's "intuitive"&#xD;
to your users, you need to understand who they are and how they work. You can attract&#xD;
new users to your application. As mentioned before, you cut down on the number of&#xD;
features that you build that don't get used and more. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Reduce the cost to maintain the software&lt;/strong&gt; - This includes support&#xD;
calls, time and effort finding and fixing bugs, adding new features and the like.&#xD;
Dealing with &lt;a href="http://en.wikipedia.org/wiki/Legacy_system"&gt;legacy systems&lt;/a&gt; is&#xD;
what a very high percentage of developers do in their day to day jobs. The cost of&#xD;
maintenance can be mitigated on the front end in a number of ways. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
There are a ton of books out there that cover this topic in great detail. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
First, you have to have sound architectural principles and rigor. The larger the application&#xD;
is, the more important this is. If you can separate out your business logic from your&#xD;
data tier from your UI cleanly and absolutely, you have a much better chance of being&#xD;
able to do maintenance on one piece without devastating the rest of the pile of spaghetti. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0735619670?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0735619670"&gt;&lt;img style="border-right-width: 0px; margin: 5px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/MeasuringROIIsITaCostCenterorStrategicPa_11E11/image_9.png" width="135" height="164"&gt;&lt;/img&gt;&lt;/a&gt; Second,&#xD;
you have to write maintainable code. The definition of "Maintainable" varies but my&#xD;
go to book in this topic is &lt;a href="http://www.amazon.com/gp/product/0735619670?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=0735619670"&gt;Code&#xD;
Complete: A Practical Handbook of Software Construction&lt;/a&gt;. I had the great fortune&#xD;
to have the &lt;a href="http://www.amazon.com/gp/product/1556154844?ie=UTF8&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=390957&amp;amp;creativeASIN=1556154844"&gt;first&#xD;
edition of Code Complete&lt;/a&gt;. It taught me things from properly named variables to&#xD;
building high performance data structures. I highly recommend anything that &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2Fs%3Fie%3DUTF8%26redirect%3Dtrue%26search-type%3Dss%26index%3Dbooks%26ref%3Dntt%255Fathr%255Fdp%255Fsr%255F1%26field-author%3DSteve%2520McConnell&amp;amp;tag=joshholmescom-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=390957"&gt;McConnell&lt;/a&gt; writes. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Third, find a good way to do a given task and make it the standard. For example, if&#xD;
you've got 3 different logging mechanisms, that's probably 2 too many. If you're doing&#xD;
one off security mechanisms in every application or even different parts of the same&#xD;
application, you've got huge headaches. If you have many different mechanisms for&#xD;
hitting the database you need to simplify and standardize. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
There are lots of other techniques that will cut down on the amount of time and effort&#xD;
that it takes to maintain the software. However, there is a tipping point where it&#xD;
makes a lot more sense to do a rewrite than it does to keep maintaining the existing&#xD;
code base. This tipping point depends on the function of the application, state of&#xD;
the code, state of the architecture, practices used to build the application in the&#xD;
first place, availability of tools, availability of talent who understand the technologies&#xD;
used to write it in the first place and the requirements for new features. Determine&#xD;
whether it's going to be more cost effective, given all of those variables, to do&#xD;
a rewrite or to keep maintaining. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This is not an easy decision. You have to fully understand the risks. Legacy code&#xD;
contains often vast amounts of implicit requirements: lessons learned that were never&#xD;
documented anywhere but the code. They should be documented elsewhere, but reality&#xD;
says otherwise. This is especially common when the original developers are no longer&#xD;
around: the new developers, in their hubris, assume all the old code is junk and can&#xD;
be “easily” replaced. Along the way, they lose implicit requirements that they’ll&#xD;
have to relearn the hard way. Additionally, rewrites from the ground up invariably&#xD;
take longer than adding a single small feature. &lt;a href="http://www.joelonsoftware.com"&gt;Joel&#xD;
Spolsky&lt;/a&gt; is talks about these risks in an article called &lt;a href="http://www.joelonsoftware.com/articles/fog0000000069.html"&gt;Things&#xD;
You Should Never Do, Part I&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Even with Joel's wise words of warning, there comes a time when it's cost effective&#xD;
to do a rewrite. In 2004, &lt;a href="http://www.eostar.com"&gt;Rutherford and Associates&lt;/a&gt; took&#xD;
their 15 year product and rewrite 80-90% of their existing functionality and enabled&#xD;
a tremendous amount of new functionality with a 6-9 month investment of time from&#xD;
3 developers. They had gotten to the point where they were not able to respond in&#xD;
an efficient manner to new customer requirements with the existing C code base. Of&#xD;
course, part of that code base was their own database engine because when they started&#xD;
15 years prior, there was not a database engine for mobile devices. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
But again, that's going back to the numbers and understanding the needs of the business. &#xD;
&lt;/p&gt;&lt;h4&gt;What's the return?&#xD;
&lt;/h4&gt;&lt;p&gt;&lt;a title="Thinking &amp;quot;more&amp;quot;" href="http://www.flickr.com/photos/32066106@N06/3000043467/"&gt;&lt;img class="flickr" border="0" alt="Thinking &amp;quot;more&amp;quot;" align="right" src="http://static.flickr.com/3295/3000043467_c78979545e_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;This&#xD;
is the really difficult part to measure. Most of the time there's a way to measure&#xD;
how much your application costs to develop in the first place but there are many ways&#xD;
to measure return. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Returns come in three basic forms, money saved, time saved or new business enabled&#xD;
which brings in more revenue. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
To really bring and measure a great return, you have to understand the current state&#xD;
of the business. This involves studying how the company earns money today and how&#xD;
they spend that money. When you understand this, you can start looking for ways to&#xD;
improve things. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Money Saved&lt;/strong&gt; is not hard to explain but you can look for it in a lot&#xD;
of different places. One contract that I did before joining Microsoft was building&#xD;
out a specialized survey engine specific to the medical field to replace the paper&#xD;
one that they were currently using. This saved on printing costs, typists to type&#xD;
in the returned results into a spreadsheet but the real savings came in shipping costs.&#xD;
That alone paid for my contract within the first year. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Are you cutting back the costs in the data center or even cutting portions of it by&#xD;
rolling out to the cloud? &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Are you cutting the power requirements of the client software by employing green methodologies? &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Time Saved&lt;/strong&gt; is a little more nebulous to measure but possible. Are&#xD;
you cutting down on the amount of time that it takes to process an order? One CTO&#xD;
of a call center told me that if he could save an average of 3 seconds a call, he&#xD;
would save 2 million a year. That's a lot of money. Because of that level of savings,&#xD;
he was willing to spend a lot of time and money researching where users were spending&#xD;
time and what we cut. Latency issues were a killer. Near side caching, GEO location&#xD;
of data and many other relatively simple things shaved seconds and therefore saved&#xD;
time and money.  &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Are you automating currently manual processes? If so, how long do those tasks take&#xD;
and what's that cost? &#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Enabling New Business&lt;/strong&gt; is where you want to be. This is where you&#xD;
start to become that strategic partner to the business and get a first class seat&#xD;
at the table with the rest of the business leadership team. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a title="Fake it till you make it..." href="http://www.flickr.com/photos/32066106@N06/3000883908/"&gt;&lt;img style="margin: 5px" class="flickr" border="0" alt="Growing..." align="left" src="http://static.flickr.com/3232/3000883908_692fcae919_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;Are&#xD;
you increasing capacity? This has to be carefully examined. If you are increasing&#xD;
the capacity to take orders but not the capacity to fulfill those orders, this is&#xD;
wasted effort. For benefit from the increased capacity, capacity for ordering, fulfillment&#xD;
and marketing all have to be working in concert. This comes back to understanding&#xD;
the business and asking people "where are the bottlenecks?". &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Are you attracting new customers to the business? Is your new online presence ranks&#xD;
higher in the search engines or taping into social media to leverage the "word of&#xD;
mouth" marketing that happens in that arena? &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Are you making it simpler for people to buy your products? I recently &lt;a href="http://www.joshholmes.com/blog/2009/01/14/JaredSpoolReconvincesMeThatUXMatters.aspx"&gt;blogged&#xD;
about Jarod Spool&lt;/a&gt; and how he changed the text on a button and created &lt;a href="http://www.uie.com/brainsparks/2009/01/14/uietips-300-million-button/"&gt;The&#xD;
$300 Million Button&lt;/a&gt;. The quick moral of the story was that the old wording was&#xD;
confusing customers and driving them away. The new button brought in $300 Million&#xD;
dollars. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Are you enabling new lines of business?  One example of enabling new business&#xD;
is when a wine distributor bought &lt;a href="http://www.eostar.com/"&gt;EO Star&lt;/a&gt;'s distribution&#xD;
management application and realized that they could start managing and distributing&#xD;
many different types of foods with their wine and manage those as easily sold and&#xD;
packaged deals. A counter example is where one restaurant chain couldn't offer a new&#xD;
type of food because they had to rewrite their menu application to handle it. &#xD;
&lt;/p&gt;&lt;h4&gt;Conclusion&#xD;
&lt;/h4&gt;&lt;p&gt;&lt;a title="Money as a position" href="http://www.flickr.com/photos/32066106@N06/3000883936/"&gt;&lt;img style="margin: 5px" class="flickr" border="0" alt="Money as a position" align="right" src="http://static.flickr.com/3003/3000883936_a2f12e5cfb_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;As&#xD;
technology folk, we have to understand business or we will be at the mercy of the&#xD;
business. The primary motivation for all businesses is making money. This is measured&#xD;
via ROI and payback. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
In order to become a strategic partner to the business you have to prove that you&#xD;
are providing a great ROI for the business's investments in you. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
You can improve your projects ROI by reducing development costs, runtime costs, maintenance&#xD;
costs and by saving the company time, money and enabling new business. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
While this measurement can be a lot of work and a little scary sometimes, it will&#xD;
prove to be absolutely essential because once you have that data, you will be in a&#xD;
great position with the business. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=e74bffe6-10c3-499c-9dab-37e926dbf3d8"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=VH9vwG7b"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=lxO3INdx"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=lxO3INdx" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=oz7P1AvQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=oz7P1AvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=ahAcLZi1"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=ahAcLZi1" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/QVRIRbi8k5c" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,e74bffe6-10c3-499c-9dab-37e926dbf3d8.aspx</comments><category>Tangent</category><feedburner:origLink>http://www.joshholmes.com/blog/2009/02/16/MeasuringROIMovingFromCostCenterToStrategicPartner.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=3238275d-1111-4eca-a0b4-7604f43bc953</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,3238275d-1111-4eca-a0b4-7604f43bc953.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,3238275d-1111-4eca-a0b4-7604f43bc953.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=3238275d-1111-4eca-a0b4-7604f43bc953</wfw:commentRss><slash:comments>1</slash:comments><title>Taking The Polar Plunge</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,3238275d-1111-4eca-a0b4-7604f43bc953.aspx</guid><link>http://feedproxy.google.com/~r/JoshHolmes/~3/JeUTnSMxXVQ/TakingThePolarPlunge.aspx</link><pubDate>Sat, 14 Feb 2009 21:58:44 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a title="Josh Holmes doing the Polar Plunge" href="http://www.flickr.com/photos/11400133@N05/3279848934/"&gt;&lt;img class="flickr" border="0" hspace="5" alt="Josh Holmes doing the Polar Plunge" vspace="5" align="left" src="http://static.flickr.com/3522/3279848934_2fcb2cf68f_m.jpg"&gt;&lt;/img&gt;&lt;/a&gt;As&#xD;
I talked about in a &lt;a href="http://www.joshholmes.com/blog/2009/02/09/PolarPlungingForTheSpecialOlympics.aspx"&gt;recent&#xD;
post&lt;/a&gt;, I recently participated in a fund raiser for the Special Olympics of Michigan.&#xD;
The end of the fund raiser was that I did a &lt;a href="http://en.wikipedia.org/wiki/Polar_bear_plunge"&gt;Polar&#xD;
Plunge&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/ct.ashx?id=1367de25-102d-4b15-b286-a65531ee0e11&amp;amp;url=http%3a%2f%2fwww.joshholmes.com%2fblog%2fcontent%2fbinary%2fWindowsLiveWriter%2fPolarPlungingfortheSpecialOlympics_13808%2fclip_image002_2.jpg"&gt;&lt;img title="clip_image002" border="0" hspace="12" alt="clip_image002" align="right" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/PolarPlungingfortheSpecialOlympics_13808/clip_image002_thumb.jpg" width="160" height="204"&gt;&lt;/img&gt;&lt;/a&gt;This&#xD;
is a charity that is special to me because of my youngest daughter, Maura, who has&#xD;
a lot of challenges of her own. One day, my hope is to see her compete in the Special&#xD;
Olympics. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
  &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
To find out more about Maura, see the “About” page at Wonderpuzzle.org. &lt;a href="http://www.wonderpuzzle.org/site/About.aspx"&gt;http://www.wonderpuzzle.org/site/About.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&#xD;
  &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Turns out a lot of people wanted to see me jump in a frozen lake… :) In the end, I&#xD;
raised $725.00 + whatever we get through matching funds so probably a little over&#xD;
$1000.00. So, for all of you who paid to see me do it – here’s the video. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
  &#xD;
&lt;/p&gt;&lt;p&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/pajMhUJZb8E&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/pajMhUJZb8E&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;p&gt;&#xD;
Special thanks to all of you who donated – many of who are friends on twitter… &#xD;
&lt;/p&gt;&lt;!-- donations table host starts here --&gt;&lt;table border="0" cellspacing="0" cellpadding="0" width="551"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;!-- donation table and tab starts here --&gt;&lt;table border="0" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;!-- amounts list table starts here --&gt;&lt;table class="clsFRPAccTxtSmB" border="0" cellspacing="0" cellpadding="4" width="100%"&gt;&lt;tbody&gt;&lt;tr valign="center" align="middle" bgcolor="#285383"&gt;&lt;td class="clsFRPAccCelTop" width="24%" align="left"&gt;&lt;font color="#ffffff"&gt;&lt;b&gt;Display Name&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td class="clsFRPAccCelTop" width="16%"&gt;&lt;font color="#ffffff"&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td class="clsFRPAccCelTop" width="12%"&gt;&lt;font color="#ffffff"&gt;&lt;b&gt;Amount&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td class="clsFRPAccCelTop" width="48%" align="left"&gt;&#xD;
 &lt;font color="#ffffff"&gt;&lt;b&gt;Comment&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Omar Greene &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/14/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Josh is a fine person. Known him since his boyhood.   &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
JSConf 2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/13/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$100.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Michael Eaton &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/13/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
David Giard &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/13/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Aaron Lerch &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/13/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Carey Payette &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/13/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Great Cause  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
tye &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/12/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Anonymous &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/12/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
good luck!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Dennis Burton &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/12/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Frank Martin &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/11/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Happy to help this cause.  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Susan Holmes &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/11/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Because we love you and yours  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
kellie englund &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/10/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
hope Phoebe gets your new suit done in time!!!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Denny Boynton &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/10/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Because you're even willing to do it...  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Pandamonial &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/10/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$40.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Good luck!   &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Ryan Stewart &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/10/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$50.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Anonymous &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/9/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$20.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
don't freeze your butt off!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Bruce Szabo &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/9/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$25.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Good Luck!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Anonymous &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/9/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$40.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Good luck!   &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;tr valign="center"&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
Tim Adams &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="middle"&gt;&#xD;
2/9/2009 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="right"&gt;&#xD;
$100.00 &#xD;
&lt;/td&gt;&lt;td class="clsFRPAccCelBtm" align="left"&gt;&#xD;
God Bless!!!  &#xD;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;!-- amounts table ends here --&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;!-- totals and buttons table starts here --&gt;&lt;table border="0" cellspacing="0" cellpadding="0" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="center" width="401"&gt;&#xD;
 &lt;/td&gt;&lt;td&gt;&lt;table class="clsFRPDVAccTxtSm" border="0" cellspacing="0" cellpadding="4" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="/images/spacer.gif" width="1" height="1"&gt;&lt;/img&gt;&lt;/td&gt;&lt;td class="clsFRPDVAccCelTotBOn" valign="center" width="62" align="right"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="clsFRPDVAccCelTotBOn" valign="center" width="69" align="right"&gt;&#xD;
 &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="/images/spacer.gif" width="1" height="1"&gt;&lt;/img&gt;&lt;/td&gt;&lt;td class="clsFRPDVAccCelTotBOn" valign="center" width="64" align="right"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;td class="clsFRPDVAccCelTotBOn" valign="center" align="right"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="/images/spacer.gif" width="1" height="1"&gt;&lt;/img&gt;&lt;/td&gt;&lt;td class="clsFRPDVAccCelTotBOn" valign="center" align="right"&gt;&lt;b&gt;Grand Total:&lt;/b&gt;&lt;/td&gt;&lt;td class="clsFRPDVAccCelTotBOn" valign="center" align="right"&gt;&lt;b&gt;$725.00&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4"&gt;&lt;img src="/images/spacer.gif" width="1" height="1"&gt;&lt;/img&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;!-- totals and buttons table ends here --&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&#xD;
It was a surreal experience. I watched how far across the water it was and decided&#xD;
that I just needed to make a dive for it. The water was about 8 foot deep where I&#xD;
made the jump. When I hit the water, every last bit of breath left my body. As one&#xD;
person said, that’s God’s way of making sure you don’t yell bad words when you hit&#xD;
the surface. I said something about “Man that’s cold” but it came out “BBBBBRBRRRBBRBBBRBBRBBRBRBRB”.&#xD;
The really bizarre thing was getting out of the water and realizing that I was walking&#xD;
across the snow and my feet didn’t feel cold. The snow actually felt a little warm.&#xD;
I got in and changed the feelings got more bizarre as my skin warmed up but I was&#xD;
still cold inside – exactly the opposite of normal when it’s cold outside your skin&#xD;
is usually the first to get cold. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
I just got off the phone with a friend who asked “Would you do it again?”. I answered&#xD;
“Yes”. He rephrased the question with “Would you do it again if there wasn’t a good&#xD;
cause involved?”. I answered “No…” &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Look for me to do it again next year but I’m going to go bigger on the fund raising&#xD;
and possibly go with a costume… &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=3238275d-1111-4eca-a0b4-7604f43bc953"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=jAUDlbQp"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=nLpdWivK"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=nLpdWivK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=F5X6Kk9R"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=F5X6Kk9R" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=L1oWy9zf"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=L1oWy9zf" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/JeUTnSMxXVQ" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,3238275d-1111-4eca-a0b4-7604f43bc953.aspx</comments><category>Non Profits</category><category>Tangent</category><feedburner:origLink>http://www.joshholmes.com/blog/2009/02/14/TakingThePolarPlunge.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=32169b26-bd10-45b2-ae31-6e5537d9f48f</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,32169b26-bd10-45b2-ae31-6e5537d9f48f.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,32169b26-bd10-45b2-ae31-6e5537d9f48f.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=32169b26-bd10-45b2-ae31-6e5537d9f48f</wfw:commentRss><slash:comments>3</slash:comments><title>Three Essential Expression Blend Add-ins</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,32169b26-bd10-45b2-ae31-6e5537d9f48f.aspx</guid><link>http://feedproxy.google.com/~r/JoshHolmes/~3/nhr8fOAJ_Rw/ThreeEssentialExpressionBlendAddins.aspx</link><pubDate>Wed, 11 Feb 2009 14:30:33 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_16.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_thumb_7.png" width="240" height="216"&gt;&lt;/img&gt;&lt;/a&gt; Expression&#xD;
Blend, believe or not, has an add-in model. It’s highly unsupported but it exists.&#xD;
The unsupported nature of it means that you have to do a little Red Green style patching&#xD;
to get them to run in the first place and if they cause instability, don’t call Microsoft&#xD;
support. However, there are a couple of really cool ones that are out there. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
There are three that I think that you have to have – &lt;a href="http://blogs.msdn.com/psiman/archive/2008/12/05/unify-for-expression-blend-2.aspx"&gt;Unify&lt;/a&gt;, &lt;a href="http://www.codeplex.com/colorful"&gt;Colorful&#xD;
Expression&lt;/a&gt; and &lt;a href="http://www.rhizohm.net/irhetoric/blog/77/default.aspx"&gt;BlendSense:&#xD;
XAML Intellisense for Expression Blend. &lt;/a&gt;&lt;/p&gt;&lt;h5&gt;Getting a Blend Add-in to run&#xD;
&lt;/h5&gt;&lt;p&gt;&#xD;
Because it’s not a supported add-in model, there’s not a built in add-in manager that&#xD;
does the heavy lifting like the Visual Studio Add-In manager. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_8.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_thumb_3.png" width="374" height="25"&gt;&lt;/img&gt;&lt;/a&gt;What&#xD;
you have to do is open up Expression Blend (or Design) passing in your add-in as a&#xD;
command line option. This starts up blend with that add-in enabled. The good news&#xD;
is that you don’t have to do any type of COM registration or anything to get it to&#xD;
work. The bad news is that it’s a hassle for those of us who don’t live on the command&#xD;
line like &lt;a title="Still not sure why you'd by a mac to run a command line all day long..." href="http://www.objo.com"&gt;some&#xD;
people&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_10.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_thumb_4.png" width="311" height="183"&gt;&lt;/img&gt;&lt;/a&gt;Another&#xD;
other option, is to alter your Blend Shortcut to include the –addin parameter. This&#xD;
accomplishes the same task as the command line, it just does so without all the hassle&#xD;
of opening a command line. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
There are multiple problems with both of these solutions. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
First, it is only able to handle one add-in at a time. Second, that only loads the&#xD;
add-in when you specifically click on that shortcut but doesn’t work from a lot of&#xD;
other places, like launching from Visual Studio. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The great news about the first issue is that it can be solved by another add-in. &#xD;
&lt;/p&gt;&lt;h5&gt;&lt;a href="http://blogs.msdn.com/psiman/archive/2008/12/05/unify-for-expression-blend-2.aspx"&gt;Unify&lt;/a&gt; Add-in&#xD;
&lt;/h5&gt;&lt;p&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_thumb_5.png" width="226" height="244"&gt;&lt;/img&gt;&lt;a href="http://blogs.msdn.com/psiman/archive/2008/12/05/unify-for-expression-blend-2.aspx"&gt;Unify&lt;/a&gt; is&#xD;
an add-in manager. It’s going to do all of the heavy lifting of loading and launch&#xD;
a number of different plug-ins such as the &lt;a href="http://www.rhizohm.net/irhetoric/blog/77/default.aspx"&gt;Xaml&#xD;
Intellisense for Blend&lt;/a&gt; and &lt;a href="http://www.codeplex.com/colorful"&gt;Colorful&lt;/a&gt;. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
When Unify installs it automatically gives you a prompt that starts the Unify add-in.&#xD;
However, that still only solves the first problem of getting the add-in loaded when&#xD;
we deliberately set out to do so. &#xD;
&lt;/p&gt;&lt;h5&gt;Launching Blend with Unity from Anywhere&#xD;
&lt;/h5&gt;&lt;p&gt;&#xD;
The second problem, as mentioned above, is a little harrier. It’s that the shortcut&#xD;
is not the only way to run Blend. What you have to do is fix all of the different&#xD;
ways that you can run Blend. That includes selecting a project file from Windows Explorer&#xD;
and clicking Edit in Blend in Visual Studio. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
This, unfortunately requires some registry hacks and the like but you can get there&#xD;
from here. The first registry hack to fix is the opening a solution from Windows Explorer.&#xD;
To accomplish this, the following code copied into a reg file works on a 64X machine.&#xD;
You’ll have to remove the (86) on a 32X machine. &#xD;
&lt;/p&gt;&lt;blockquote&gt;Windows Registry Editor Version 5.00&lt;br&gt;&lt;br&gt;&#xD;
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Expression.Blend.ProjectFile\Shell\Open\Command]&lt;br&gt;&#xD;
@="\"c:\\Program Files (x86)\\Microsoft Expression\\Blend 2\\Blend.exe\" \"%1\" /addin:Unify.dll"&lt;br&gt;&lt;br&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
The second registry hack to fix is the launching from Expression Blend by right-clicking&#xD;
on a XAML file in Visual Studio and selecting “Edit in Expression Blend”. To do this&#xD;
requires understanding how the right click in Visual Studio works. The list of available&#xD;
commands comes from the registry. When selected, it passes in two parameter. The first&#xD;
is the path to the actual solution and the second is a /file:filename.extension parameter.&#xD;
It looks as follows:&#xD;
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
"C:\Program Files (x86)\Microsoft Expression\Blend 2\blend.exe" "C:\Projects\QuickNavigation\QuickNavigation.csproj"&#xD;
/file:"Page.xaml"&#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
What we have to do is redirect this in the registry to a bat file that will pass in&#xD;
our /addin parameter. Personally, I created a BlendWithUnify.bat file in the /Blend&#xD;
directory as follows:&#xD;
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
start "Blend" "C:\Program Files (x86)\Microsoft Expression\Blend 2\blend.exe" /addin:Unify.dll&#xD;
%1 %2&#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
Technically, we could have used the .bat file with the first mechanism as well. We&#xD;
need to fix the registry key as follows:&#xD;
&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&#xD;
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Expression\Blend\VS]&lt;br&gt;&#xD;
"BlendLaunchPath"="\"c:\\Program Files (x86)\\Microsoft Expression\\Blend 2\\BlendWithUnify.bat\""&#xD;
&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&#xD;
Now we are cooking with gas and are ready to investigate a few more add-ins. &#xD;
&lt;/p&gt;&lt;h5&gt;&lt;a href="http://www.codeplex.com/colorful"&gt;Colorful Expression&lt;/a&gt; Add-In&#xD;
&lt;/h5&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_2.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_thumb.png" width="99" height="96"&gt;&lt;/img&gt;&lt;/a&gt;&lt;a href="http://www.codeplex.com/colorful"&gt;Colorful&#xD;
Expression&lt;/a&gt; was directed to me by &lt;a href="http://blogs.msdn.com/jbienz"&gt;Jared&#xD;
Bienz&lt;/a&gt; after the &lt;a href="http://www.joshholmes.com/blog/2009/02/05/UIDesignForDevelopersSeriesByTotalTraining.aspx"&gt;Expression&#xD;
Design tutorial&lt;/a&gt; that I talked about recently. It’s a sweet add-in to Expression&#xD;
Blend (or Design) that gives you access to a ton of different color swatches that&#xD;
are out there on the web. Specifically, it taps into &lt;a href="http://kuler.adobe.com/"&gt;Kulor&lt;/a&gt; on&#xD;
the Adobe site. These are mostly swatches put together by pro-designers. These are&#xD;
also rated so you can pick the higher rated groups to be sure. In any case, they are&#xD;
definitely better than the ones that my color-blind self can choose. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://jonas.follesoe.no/"&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_6.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="right" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_thumb_2.png" width="219" height="401"&gt;&lt;/img&gt;&lt;/a&gt;Jonas&#xD;
Follesø&lt;/a&gt; saw that Kulor has a open restful API and couldn’t resist playing with&#xD;
it. Combine that with the (unfortunately unsupported – see below on how to get it&#xD;
to actually run in Blend…) add-in model for Blend and magic happens. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
What it does is that it shows up as a tab in Expression Blend (or Design) and alls&#xD;
you to browse color pallets from Kulor for use in your application. There are a couple&#xD;
of slick ways that you can do that. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
First, if you are running Design, you can hit the down arrow looking thing under a&#xD;
swatch and save it as an Expression Design Color Swatch. The next two work in either&#xD;
Blend or Design. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
First, you can click the # button or select the swatch and hit Ctrl-C to copy the&#xD;
swatch to the clip board. If you paste that on a Page or UserControl, you get the&#xD;
swatch, but more importantly, you get the colors created as static resource brushes.&#xD;
You can also just go into the XAML in either the UI surface or the app.xaml and paste&#xD;
them that way. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Second, you can use the color picker from the normal color picker to select an individual&#xD;
color. This is pretty cool as well as it allows you to be very selective about your&#xD;
colors. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
You can also run it as a standalone application if you want to pick a color swatch&#xD;
for use in something other than Blend or Design. I can see using to figure out color&#xD;
pallets for my CSS style sheets. I’m also going to contact Jonas and see if he has&#xD;
thought about building it for Expression Web. But that’s just me wishing and hoping&#xD;
until I hear back from him. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Check out &lt;a href="http://www.codeplex.com/colorful"&gt;Colorful Expression&lt;/a&gt; and give&#xD;
it a whirl. I’m interested to see how you use it. &#xD;
&lt;/p&gt;&lt;h5&gt;&lt;a href="http://www.rhizohm.net/irhetoric/blog/77/default.aspx"&gt;BlendSense: XAML&#xD;
Intellisense for Expression Blend &lt;/a&gt;Add-in&#xD;
&lt;/h5&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_14.png"&gt;&lt;img style="border-right-width: 0px; margin: 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" align="left" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/ExpressionBlendAddins_FB06/image_thumb_6.png" width="333" height="225"&gt;&lt;/img&gt;&lt;/a&gt; Just&#xD;
yesterday I was on a call with a guy who was frustrated by the fact that there’s no&#xD;
Intellisense in Blend for XAML. Well, ask and you shall receive. There’s a skunk works&#xD;
project called BlendSense that was put up at &lt;a title="http://code.msdn.microsoft.com/BlendSense" href="http://code.msdn.microsoft.com/BlendSense"&gt;http://code.msdn.microsoft.com/BlendSense&lt;/a&gt; but&#xD;
it was only for the Beta versions of Expression Blend 2.5. They haven’t updated it&#xD;
for the release which was actually called Expression Blend 2 SP1. So, the good folks&#xD;
at &lt;a href="http://www.rhizohm.net"&gt;http://www.rhizohm.net&lt;/a&gt; recompiled the code&#xD;
for us and posted it at &lt;a href="http://www.rhizohm.net/irhetoric/blog/77/default.aspx"&gt;BlendSense:&#xD;
XAML Intellisense for Expression Blend. &lt;/a&gt;&lt;/p&gt;&lt;p&gt;&#xD;
There are a couple of limitations on it’s functionality. right now, it’s using the&#xD;
WPF namespace types and the like for it’s Intellisense. That means that it’s not ideal&#xD;
for Silverlight as the Intellisense might be lie to you – but that would just take&#xD;
me back to my MFC days... The second limitation is that it doesn’t handle custom namespaces&#xD;
and the like so you’re out of luck if you are using a custom control or third party&#xD;
components.&#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
Technically, it’s using an XSD file that is built for Intellisense so you could edit&#xD;
it to fit your needs. &#xD;
&lt;/p&gt;&lt;h5&gt;Conclusion&#xD;
&lt;/h5&gt;&lt;p&gt;&#xD;
These three add-ins are fantastic and I’m thrilled that they are here. Both of them&#xD;
have already, in the day that I’ve been using them, saved me time and energy in some&#xD;
things that I’m working on. It’s a little bit of a frustrating process to get Unify&#xD;
running for every scenario but it’s worth it and hopefully I’ve done the leg work&#xD;
on figuring it out for for you. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=32169b26-bd10-45b2-ae31-6e5537d9f48f"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=buJXFbBF"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=d08pEVro"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=d08pEVro" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=tquCVnK5"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=tquCVnK5" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=raByw3PG"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=raByw3PG" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/nhr8fOAJ_Rw" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,32169b26-bd10-45b2-ae31-6e5537d9f48f.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2009/02/11/ThreeEssentialExpressionBlendAddins.aspx</feedburner:origLink></item><item><trackback:ping>http://www.joshholmes.com/blog/Trackback.aspx?guid=1367de25-102d-4b15-b286-a65531ee0e11</trackback:ping><pingback:server>http://www.joshholmes.com/blog/pingback.aspx</pingback:server><pingback:target>http://www.joshholmes.com/blog/PermaLink,guid,1367de25-102d-4b15-b286-a65531ee0e11.aspx</pingback:target><dc:creator>Josh Holmes</dc:creator><wfw:comment>http://www.joshholmes.com/blog/CommentView,guid,1367de25-102d-4b15-b286-a65531ee0e11.aspx</wfw:comment><wfw:commentRss>http://www.joshholmes.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=1367de25-102d-4b15-b286-a65531ee0e11</wfw:commentRss><title>Polar Plunging for the Special Olympics</title><guid isPermaLink="false">http://www.joshholmes.com/blog/PermaLink,guid,1367de25-102d-4b15-b286-a65531ee0e11.aspx</guid><link>http://feedproxy.google.com/~r/JoshHolmes/~3/u_yfHeAax9c/PolarPlungingForTheSpecialOlympics.aspx</link><pubDate>Mon, 09 Feb 2009 03:11:18 GMT</pubDate><description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;b&gt;What I’m doing:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&#xD;
I’m going to be polar plunging to raise money for the Special Olympics Michigan this&#xD;
coming weekend in Belleville. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/PolarPlungingfortheSpecialOlympics_13808/clip_image002_2.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="clip_image002" border="0" hspace="12" alt="clip_image002" align="right" src="http://www.joshholmes.com/blog/content/binary/WindowsLiveWriter/PolarPlungingfortheSpecialOlympics_13808/clip_image002_thumb.jpg" width="160" height="204"&gt;&lt;/img&gt;&lt;/a&gt;This&#xD;
is a charity that is special to me because of my youngest daughter, Maura, who has&#xD;
a lot of challenges of her own. One day, my hope is to see her compete in the Special&#xD;
Olympics. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
To find out more about Maura, see the “About” page at Wonderpuzzle.org. &#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.wonderpuzzle.org/site/About.aspx"&gt;http://www.wonderpuzzle.org/site/About.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;  &#xD;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;How you can help:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&#xD;
If you can donate, please check out my donation page at &lt;a href="http://www.firstgiving.com/joshholmes"&gt;http://www.firstgiving.com/joshholmes&lt;/a&gt;.   &#xD;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;  &#xD;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;About the Event:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&#xD;
If you want to watch (video – whatever), come and ‘bear’ the elements at the 2009&#xD;
Polar Plunge – Belleville at 11:30 a.m. Saturday, Feb. 14 at the Belleville Moose&#xD;
Lodge (831 East Huron Dr. Belleville, MI 48111). Registration begins at 10:30 a.m.&#xD;
with the plunge and parade of costumes beginning at 11:30 a.m. with a warm post-plunge&#xD;
party at 12:30 p.m. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
The polar plunge is a fun-filled event open to all courageous and community-minded&#xD;
individuals willing to plunge into the cold water and raise critical funds to support&#xD;
the year-round athletic training of more than 16,000 athletes across the state. Be&#xD;
sure to pre-register to receive detailed information. &#xD;
&lt;/p&gt;&lt;p&gt;&#xD;
  &#xD;
&lt;/p&gt;&lt;p&gt;&lt;b&gt;About the Special Olympic Michigan:&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&#xD;
The mission of Special Olympics Michigan is to provide sports training and athletic&#xD;
competition in a variety of Olympic-type sports for the children and adults with intellectual&#xD;
disabilities. Athletes are given continuing opportunities to develop physical fitness;&#xD;
demonstrate courage; experience joy; and participate in a sharing of gifts, skills,&#xD;
and friendship with their families, other Special Olympics athletes and the community.&#xD;
Through Special Olympics, athletes gain self-confidence and prove their own capabilities. &#xD;
&lt;/p&gt;&lt;img width="0" height="0" src="http://www.joshholmes.com/blog/aggbug.ashx?id=1367de25-102d-4b15-b286-a65531ee0e11"&gt;&lt;/img&gt;&lt;br&gt;&lt;hr&gt;&lt;/hr&gt;&#xD;
This weblog is sponsored by &amp;lt;a href="http://www.joshholmes.com"&amp;gt;Josh Holmes&amp;lt;/a&amp;gt;. &#xD;
&lt;/body&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=DctCGF2V"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=i2j9omnN"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=i2j9omnN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=9T4Sy0um"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=9T4Sy0um" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/JoshHolmes?a=cJUo24gK"&gt;&lt;img src="http://feeds.feedburner.com/~f/JoshHolmes?i=cJUo24gK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/JoshHolmes/~4/u_yfHeAax9c" height="1" width="1"/&gt;</description><comments>http://www.joshholmes.com/blog/CommentView,guid,1367de25-102d-4b15-b286-a65531ee0e11.aspx</comments><feedburner:origLink>http://www.joshholmes.com/blog/2009/02/09/PolarPlungingForTheSpecialOlympics.aspx</feedburner:origLink></item></channel></rss>
