<?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:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>CTRLALT313373.com</title>
    <link>http://weblog.ctrlalt313373.com/</link>
    <description>.Net Wanderings</description>
    <language>en-us</language>
    <copyright>David A. Osborn</copyright>
    <lastBuildDate>Sun, 07 Jun 2009 17:16:18 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>davido@ctrlalt313373.com</managingEditor>
    <webMaster>davido@ctrlalt313373.com</webMaster>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/netWandering" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <trackback:ping>http://weblog.ctrlalt313373.com/Trackback.aspx?guid=871765c5-65c2-4849-8974-e38c35b3f5ad</trackback:ping>
      <pingback:server>http://weblog.ctrlalt313373.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.ctrlalt313373.com/PermaLink,guid,871765c5-65c2-4849-8974-e38c35b3f5ad.aspx</pingback:target>
      <dc:creator>David A. Osborn</dc:creator>
      <wfw:comment>http://weblog.ctrlalt313373.com/CommentView,guid,871765c5-65c2-4849-8974-e38c35b3f5ad.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.ctrlalt313373.com/SyndicationService.asmx/GetEntryCommentsRss?guid=871765c5-65c2-4849-8974-e38c35b3f5ad</wfw:commentRss>
      
      <title>Updating Channels in MythTV</title>
      <guid isPermaLink="false">http://weblog.ctrlalt313373.com/PermaLink,guid,871765c5-65c2-4849-8974-e38c35b3f5ad.aspx</guid>
      <link>http://feedproxy.google.com/~r/netWandering/~3/JHjLo2mepzY/UpdatingChannelsInMythTV.aspx</link>
      <pubDate>Sun, 07 Jun 2009 17:16:18 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
This is one of those blog posts that is getting written mostly for my future reference,&#xD;
but someone out there may possibly find it useful as well. Recently Mediacom, the&#xD;
local cable provider, decided to move around a few channels and I found myself needing&#xD;
to update my MythTV box so that it knew the proper channels to record my shows from.&#xD;
This turned out to be fairly simple. I logged into the box via ssh and executed a&#xD;
su command to elevate myself to the root account. Then I executed the following command: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
$ mythfilldatabase --do-channel-updates &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
After a few minutes of updates, everything was taken care of. There was no need to&#xD;
reboot the computer and my records still existed unharmed. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://weblog.ctrlalt313373.com/aggbug.ashx?id=871765c5-65c2-4849-8974-e38c35b3f5ad"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hfW1VX4dFDna240oduKA1Vl4O7U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hfW1VX4dFDna240oduKA1Vl4O7U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hfW1VX4dFDna240oduKA1Vl4O7U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hfW1VX4dFDna240oduKA1Vl4O7U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netWandering/~4/JHjLo2mepzY" height="1" width="1"/&gt;</description>
      <comments>http://weblog.ctrlalt313373.com/CommentView,guid,871765c5-65c2-4849-8974-e38c35b3f5ad.aspx</comments>
    <feedburner:origLink>http://weblog.ctrlalt313373.com/2009/06/07/UpdatingChannelsInMythTV.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://weblog.ctrlalt313373.com/Trackback.aspx?guid=25499510-a83d-4dbc-829d-5c60307cd123</trackback:ping>
      <pingback:server>http://weblog.ctrlalt313373.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.ctrlalt313373.com/PermaLink,guid,25499510-a83d-4dbc-829d-5c60307cd123.aspx</pingback:target>
      <dc:creator>David A. Osborn</dc:creator>
      <wfw:comment>http://weblog.ctrlalt313373.com/CommentView,guid,25499510-a83d-4dbc-829d-5c60307cd123.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.ctrlalt313373.com/SyndicationService.asmx/GetEntryCommentsRss?guid=25499510-a83d-4dbc-829d-5c60307cd123</wfw:commentRss>
      
      <title>The framework is dead.  Long live the framework!</title>
      <guid isPermaLink="false">http://weblog.ctrlalt313373.com/PermaLink,guid,25499510-a83d-4dbc-829d-5c60307cd123.aspx</guid>
      <link>http://feedproxy.google.com/~r/netWandering/~3/JZhGqbomz30/TheFrameworkIsDeadLongLiveTheFramework.aspx</link>
      <pubDate>Wed, 01 Apr 2009 01:49:54 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Over the last couple of years I have been involved with companies that have built&#xD;
their own frameworks using the .Net Framework to encapsulate such functionality as&#xD;
data access, security, and even UI elements such as page management and common list&#xD;
box controls. In their purest forms I think frameworks are great to have and can bring&#xD;
a lot of positive things to a project and a development team, but in practice what&#xD;
I seem to be finding is that frameworks turn into a brick wall to getting things done,&#xD;
a crutch for bad habits, and a roadblock to innovation. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Here are a few positives that come from a framework when done right: &#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;Concise code where common functionality exists in one place. &lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 36pt"&gt;&#xD;
Duplicate code means duplicate bugs, more lines to dig though, and more lines to tests. &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;A strong foundation for projects that allows milestones to be reached&#xD;
quicker. &lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 36pt"&gt;&#xD;
Time is money in every industry and what ever gets you in the right direction the&#xD;
fastest will save you money. (Notice I said the right direction.) &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;An abstraction layer so that new developers don't need to learn everything&#xD;
before getting started on a project. &lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 36pt"&gt;&#xD;
It can take new developers time to get up to speed and contribute to a project. If&#xD;
they have a framework that abstracts the details of certain areas away from them to&#xD;
start out they can more quickly begin adding value. &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;A standardization that guides projects in a consistent manner. &lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 36pt"&gt;&#xD;
Assuming the framework is consistent, then the way you interact with it helps to structure&#xD;
your program and give projects a similar look and feel. &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;A time tested code base that evolves to be trusted and bug free. &lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 36pt"&gt;&#xD;
Well maybe not completely bug free, but overtime and use we start to trust code more&#xD;
and feel more comfortable deploying it. If a framework gets a good work out on multiple&#xD;
projects then it tends to become fairly stable. &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
Here are a few of the negatives that I see that really happen with frameworks: &#xD;
&lt;/p&gt;&#xD;
        &lt;ul&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;Too much stuff gets put into the framework that doesn't get used. &lt;img align="right" src="http://weblog.ctrlalt313373.com/content/binary/040109_0149_Theframewor1.png" alt=""&gt;&lt;/img&gt;&lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 36pt"&gt;&#xD;
People start rolling stuff into the framework because it has potential to be reused,&#xD;
but even if the item can be reused, it involves so much customization for a particular&#xD;
client or project that it is no longer the original piece. &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;Items go into the framework that aren't documented and in turn the&#xD;
functionality gets reproduced somewhere else. &lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 36pt"&gt;&#xD;
I'm starting to see this one over and over again and it is partially a side effect&#xD;
of frameworks getting too big. People don't know what's in the framework, whether&#xD;
it be because they are new or simply because the framework is so big and has so many&#xD;
people working on /with it. People end up reproducing the same functionality someplace&#xD;
else. &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;Existing framework functionality is not maintained well and becomes&#xD;
a hindrance down the road when new technology comes around that doesn't mesh well&#xD;
with the framework. &lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 36pt"&gt;&#xD;
A framework in .Net 1.1 becomes a framework in .Net 2.0, which then turns into a framework&#xD;
in .Net 3.5, but the code stays the same. Technology advances and the framework elements&#xD;
need to as well, but the mentality of "if it ain't broke, don't fix it", seems to&#xD;
hang out with frameworks. &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;Developers never learn how to code outside the framework. &lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 36pt"&gt;&#xD;
I actually worked with a young developer at a previous employer who, when it came&#xD;
time to leave the company, realized that he didn't really know how to get data out&#xD;
of a database without the framework. I considered him a decent developer for his level&#xD;
of experience and a person with a lot of potential, but he'd been stuck using the&#xD;
same framework for all of his short development career so there were many things he&#xD;
never needed to know how to do. &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;img align="left" src="http://weblog.ctrlalt313373.com/content/binary/040109_0149_Theframewor2.png" alt=""&gt;&lt;/img&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;Old,&#xD;
Fat, whiny people get worked up even at the thought of making a change to the framework.&#xD;
(They're not always old or fat, but they tend to always be whiny.)&lt;/em&gt;&#xD;
                &lt;em&gt;&#xD;
                &lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 108pt"&gt;&#xD;
Really is there anything else that needs to be said here? You know the exact type&#xD;
of person I mean and if you don't then say hi to them in the mirror while brushing&#xD;
your teeth in the morning. &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;em&gt;&#xD;
                &lt;strong&gt;The framework becomes the solution to every project even when it&#xD;
shouldn't be. &lt;/strong&gt;&#xD;
              &lt;/em&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 144pt"&gt;&#xD;
This is the using a sledgehammer to kill a fly type problem. People get a one track&#xD;
mind and big or small the framework is the solution to every project's needs. Worst&#xD;
yet, project specifications start getting tailored to what the framework can and can't&#xD;
do. &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;New developers don't feel empowered to make changing or additions&#xD;
to the framework. &lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 36pt"&gt;&#xD;
This doesn't even necessarily need to be new developers either. Frameworks seem to&#xD;
take on this bigger than life image that makes people feel like they are unworthy&#xD;
to make a modification. Either the developer modifies their code in a way they didn't&#xD;
want to in order to interact with the framework, or they do something crazy like copy&#xD;
the functionality out of the framework into their custom project and make changes&#xD;
to it. I've seen classes that were directly copied, with the namespace even duplicated&#xD;
and then minor changes being made to the copy to handle functionality that the developer&#xD;
wanted. &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
            &lt;div&gt;&#xD;
              &lt;strong&gt;&#xD;
                &lt;em&gt;The framework is rigid. &lt;/em&gt;&#xD;
              &lt;/strong&gt;&#xD;
            &lt;/div&gt;&#xD;
            &lt;p style="margin-left: 36pt"&gt;&#xD;
Come on; mark a few methods virtual people! &#xD;
&lt;/p&gt;&#xD;
          &lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Well I know I listed a lot more negatives than positives, but the positives definitely&#xD;
score highly. Having a reusable framework that handles a lot of common scenarios that&#xD;
come up with your projects can really help shorten the time to delivering a milestone.&#xD;
At each employer that I have worked at the projects during that time were fairly similar,&#xD;
needing the same type of functionality, and these types of scenarios benefit from&#xD;
a quality framework. Projects can get from point A to point B much faster, which translates&#xD;
into less money. Client and managers always like things to cost less. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
I think the best solution to the negatives is to have individuals that have the key&#xD;
responsibility to maintain and grow the framework. Without individuals that have defined&#xD;
ownership in the framework it becomes a tool that is neglected. The "regulation" of&#xD;
the framework needs to fall someplace between a communist leadership and a capitalistic&#xD;
society. An individual utilizing the framework needs to have input into what is going&#xD;
on and provide feedback into what is needed, but in the end there needs to be a smaller&#xD;
group of individuals who decide what should be included and what shouldn't be. The&#xD;
framework in general is going to be driven by what developers need for a project and&#xD;
a client, but the framework needs to expand beyond the needs of a single client and&#xD;
project. Contrary to what some people believe, I've noticed in my career that if there&#xD;
isn't someone to go to that provides the firm yes or no, then nothing tends to happen.&#xD;
Problems get discussed, solutions get discussed, but nothing goes forward. Either&#xD;
no one feels empowered to take the reins or no one wants to be the fall guy if things&#xD;
don't work out. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Overall, I really do think a framework can be a positive thing, but it needs to be&#xD;
managed and budgeted for just like any other project the company works on, especially&#xD;
if it starts to become an integral part of most projects that are being done.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://weblog.ctrlalt313373.com/aggbug.ashx?id=25499510-a83d-4dbc-829d-5c60307cd123"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yJOM79QgKg6AIn_A4D1jf2zi-7Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yJOM79QgKg6AIn_A4D1jf2zi-7Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yJOM79QgKg6AIn_A4D1jf2zi-7Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yJOM79QgKg6AIn_A4D1jf2zi-7Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netWandering/~4/JZhGqbomz30" height="1" width="1"/&gt;</description>
      <comments>http://weblog.ctrlalt313373.com/CommentView,guid,25499510-a83d-4dbc-829d-5c60307cd123.aspx</comments>
      <category>Ramblings</category>
    <feedburner:origLink>http://weblog.ctrlalt313373.com/2009/04/01/TheFrameworkIsDeadLongLiveTheFramework.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://weblog.ctrlalt313373.com/Trackback.aspx?guid=2736755a-cef4-4189-9c70-cda3a8e31840</trackback:ping>
      <pingback:server>http://weblog.ctrlalt313373.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.ctrlalt313373.com/PermaLink,guid,2736755a-cef4-4189-9c70-cda3a8e31840.aspx</pingback:target>
      <dc:creator>David A. Osborn</dc:creator>
      <wfw:comment>http://weblog.ctrlalt313373.com/CommentView,guid,2736755a-cef4-4189-9c70-cda3a8e31840.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.ctrlalt313373.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2736755a-cef4-4189-9c70-cda3a8e31840</wfw:commentRss>
      
      <title>Email, it’s the new phone call….</title>
      <guid isPermaLink="false">http://weblog.ctrlalt313373.com/PermaLink,guid,2736755a-cef4-4189-9c70-cda3a8e31840.aspx</guid>
      <link>http://feedproxy.google.com/~r/netWandering/~3/B4nSPvFmfWU/EmailItsTheNewPhoneCall.aspx</link>
      <pubDate>Tue, 31 Mar 2009 00:54:31 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;em&gt;Hello Mr. Osborn, how are you today….How's the weather there in…Iowa"….Please&#xD;
hold while I look up your information…Sorry sir, my computer is really slow today….Hold&#xD;
on while I go talk to my supervisor….. &lt;/em&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Okay, I'm an introvert, I'll admit that, but isn't it time that email is elevated&#xD;
to the status of the phone call? In my opinion an email is simply an asynchronous&#xD;
phone call when it comes to business related conversations. I'm busy throughout the&#xD;
day and I'm sure everyone else is too, but I do have a few minutes of down time here&#xD;
and there when I'm waiting for data to load or a project to build and I utilize that&#xD;
time to get some other tasks done. What I don't have time for during a build process&#xD;
is to sit on hold or wait for a receptionist to look up some information. &lt;em&gt;The&#xD;
weather is either too hot or too cold and I'm sure your kids are great. Oh, you're&#xD;
computer is slow? No, I don't want the credit protection plan.&lt;/em&gt; Half the time&#xD;
I am probably going to get someone's voicemail anyways, so why not just send them&#xD;
my questions in an email in the first place. Sure in some cases a phone call can be&#xD;
quicker or the urgency requires a phone call, but in most cases a few emails will&#xD;
suffice and it allows me to space out the time into the random free minutes I have&#xD;
throughout the day. Sure I could just put you on hold every time my build finishes&#xD;
and take you off hold when I am waiting on data to load, but most likely you would&#xD;
find that extremely rude. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The problem I am running into is that apparently other individuals don't consider&#xD;
an email on the same level as a phone call. Don't get me wrong, I don't expect an&#xD;
immediate reply, but there are a few things that I would like to be able to start&#xD;
expecting. &#xD;
&lt;/p&gt;&#xD;
        &lt;ul style="margin-left: 72pt"&gt;&#xD;
          &lt;li&gt;&#xD;
If you're out of the office for more than a day, I would like to receive an out of&#xD;
office reply. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
If I send you an email before 2pm on a work day, I would at least like to get an email&#xD;
before 5pm saying that you are looking into it and when you will be getting back to&#xD;
me. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
If there's a document you need me to sign, then scan it and email it to me. If I don't&#xD;
have the time to call you then I sure don't have the time to stop by your office. &#xD;
&lt;/li&gt;&#xD;
          &lt;li&gt;&#xD;
Don't send any data like a credit card number or social security number to me in an&#xD;
email unencrypted. If you need that information then you won yourself a phone call&#xD;
(or I'll decide it wasn't that important). &#xD;
&lt;/li&gt;&#xD;
        &lt;/ul&gt;&#xD;
        &lt;p&gt;&#xD;
Is that too hard to expect? Obviously there will always be exceptions, but I would&#xD;
say that they are pretty simple to adhere to. The great thing about email is that&#xD;
people don't really want to type very much, which is great because I don't really&#xD;
want to read very much, so they keep their answers as concise as possible. I think&#xD;
most people want that phone call initiated because they feel they are going to have&#xD;
to do a lot of explaining, but it is most likely the case that I'm not going to retain&#xD;
the big long explanation you provide over the phone, so just answer my question via&#xD;
email which I have most likely phrased in the form of a yes or no question and save&#xD;
us both some time. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Seriously, am I way off base here? &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://weblog.ctrlalt313373.com/aggbug.ashx?id=2736755a-cef4-4189-9c70-cda3a8e31840"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/e7eP4ov_mxrglA-tAwvtJ-N4X3M/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e7eP4ov_mxrglA-tAwvtJ-N4X3M/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/e7eP4ov_mxrglA-tAwvtJ-N4X3M/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/e7eP4ov_mxrglA-tAwvtJ-N4X3M/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netWandering/~4/B4nSPvFmfWU" height="1" width="1"/&gt;</description>
      <comments>http://weblog.ctrlalt313373.com/CommentView,guid,2736755a-cef4-4189-9c70-cda3a8e31840.aspx</comments>
      <category>Ramblings</category>
    <feedburner:origLink>http://weblog.ctrlalt313373.com/2009/03/31/EmailItsTheNewPhoneCall.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://weblog.ctrlalt313373.com/Trackback.aspx?guid=64920de6-4594-4f7d-918d-a895ab5731af</trackback:ping>
      <pingback:server>http://weblog.ctrlalt313373.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.ctrlalt313373.com/PermaLink,guid,64920de6-4594-4f7d-918d-a895ab5731af.aspx</pingback:target>
      <dc:creator>David A. Osborn</dc:creator>
      <wfw:comment>http://weblog.ctrlalt313373.com/CommentView,guid,64920de6-4594-4f7d-918d-a895ab5731af.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.ctrlalt313373.com/SyndicationService.asmx/GetEntryCommentsRss?guid=64920de6-4594-4f7d-918d-a895ab5731af</wfw:commentRss>
      
      <title>$12,500 Twitter Client</title>
      <guid isPermaLink="false">http://weblog.ctrlalt313373.com/PermaLink,guid,64920de6-4594-4f7d-918d-a895ab5731af.aspx</guid>
      <link>http://feedproxy.google.com/~r/netWandering/~3/54W6_zhM7qI/12500TwitterClient.aspx</link>
      <pubDate>Sun, 29 Mar 2009 04:09:13 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/032909_0408_12500Twitte1.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Well I got a little bored this evening and started to play around with the Microsoft&#xD;
Surface SDK. Nothing too exciting in this first iteration, but I wired it up to my&#xD;
Twitter account and started pulling down new tweets every couple of minutes. With&#xD;
a little styling I was able to get each of the messages to look like a handwritten&#xD;
Post It note. The messages are created using the ScatterView control which is a Microsoft&#xD;
Surface specific WPF control that allows each item to be picked up, dragged, resized,&#xD;
and even thrown around the screen. Microsoft uses this control a lot during demos&#xD;
of the Surface, wiring it up to pictures to provide a table full of photos type environment.&#xD;
Why is this a $12,500 Twitter client? Well because that is how much it is going to&#xD;
cost you to get a MS Surface, or $15,000 for the developer version. Though, if you&#xD;
buy one in the next 15 minutes, I'll throw in this nifty Twitter client for free.&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://weblog.ctrlalt313373.com/aggbug.ashx?id=64920de6-4594-4f7d-918d-a895ab5731af"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FaE_4eZs5xpJD1-y_S8Wv8Ah5Z4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FaE_4eZs5xpJD1-y_S8Wv8Ah5Z4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FaE_4eZs5xpJD1-y_S8Wv8Ah5Z4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FaE_4eZs5xpJD1-y_S8Wv8Ah5Z4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netWandering/~4/54W6_zhM7qI" height="1" width="1"/&gt;</description>
      <comments>http://weblog.ctrlalt313373.com/CommentView,guid,64920de6-4594-4f7d-918d-a895ab5731af.aspx</comments>
      <category>Microsoft Surface</category>
      <category>Twitter</category>
      <category>WPF</category>
    <feedburner:origLink>http://weblog.ctrlalt313373.com/2009/03/29/12500TwitterClient.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://weblog.ctrlalt313373.com/Trackback.aspx?guid=2943bbeb-dd0c-440c-846b-15ffcbd46206</trackback:ping>
      <pingback:server>http://weblog.ctrlalt313373.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.ctrlalt313373.com/PermaLink,guid,2943bbeb-dd0c-440c-846b-15ffcbd46206.aspx</pingback:target>
      <dc:creator>David A. Osborn</dc:creator>
      <wfw:comment>http://weblog.ctrlalt313373.com/CommentView,guid,2943bbeb-dd0c-440c-846b-15ffcbd46206.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.ctrlalt313373.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2943bbeb-dd0c-440c-846b-15ffcbd46206</wfw:commentRss>
      
      <title>Surface SDK</title>
      <guid isPermaLink="false">http://weblog.ctrlalt313373.com/PermaLink,guid,2943bbeb-dd0c-440c-846b-15ffcbd46206.aspx</guid>
      <link>http://feedproxy.google.com/~r/netWandering/~3/NEpQH4bVeuY/SurfaceSDK.aspx</link>
      <pubDate>Fri, 13 Feb 2009 02:20:29 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
Well after a bit of work and some help from this blog &lt;a href="http://www.grumpydev.com/2008/12/26/surface-sdk-on-vista-x64/"&gt;post&lt;/a&gt;,&#xD;
I was able to get the Microsoft Surface SDK working on my 64bit Vista machine. The&#xD;
documentation for the SDK says that it needs to run on 32bit Vista but Steven Robbins&#xD;
seems to have figured out the steps to get around that. Now that I have it up and&#xD;
running I hope to put up a few blog posts on doing Surface development and hopefully&#xD;
I won't run into any issues using 64bit. If anyone would like to donate me the money&#xD;
to buy an actual Surface unit I would be grateful, but until then the Surface simulator&#xD;
appears to be a decent environment that allows you to hook up multiple mice to act&#xD;
as different finger touches. The below sample application comes with the sdk and allows&#xD;
you to select a picture to create a puzzle out of and then put the puzzle together.&#xD;
I can't wait to get my hands dirty and create a Surface application of my own. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/021309_0219_SurfaceSDK1.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://weblog.ctrlalt313373.com/aggbug.ashx?id=2943bbeb-dd0c-440c-846b-15ffcbd46206"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PpILFnLxnT8yufAReK7IWetmYFQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PpILFnLxnT8yufAReK7IWetmYFQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PpILFnLxnT8yufAReK7IWetmYFQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PpILFnLxnT8yufAReK7IWetmYFQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netWandering/~4/NEpQH4bVeuY" height="1" width="1"/&gt;</description>
      <comments>http://weblog.ctrlalt313373.com/CommentView,guid,2943bbeb-dd0c-440c-846b-15ffcbd46206.aspx</comments>
      <category>Development</category>
      <category>Microsoft Surface</category>
    <feedburner:origLink>http://weblog.ctrlalt313373.com/2009/02/13/SurfaceSDK.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://weblog.ctrlalt313373.com/Trackback.aspx?guid=2da2f1cf-b0be-487d-b5b4-4df5aa379407</trackback:ping>
      <pingback:server>http://weblog.ctrlalt313373.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.ctrlalt313373.com/PermaLink,guid,2da2f1cf-b0be-487d-b5b4-4df5aa379407.aspx</pingback:target>
      <dc:creator>David A. Osborn</dc:creator>
      <wfw:comment>http://weblog.ctrlalt313373.com/CommentView,guid,2da2f1cf-b0be-487d-b5b4-4df5aa379407.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.ctrlalt313373.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2da2f1cf-b0be-487d-b5b4-4df5aa379407</wfw:commentRss>
      
      <title>Deep Zoom Example</title>
      <guid isPermaLink="false">http://weblog.ctrlalt313373.com/PermaLink,guid,2da2f1cf-b0be-487d-b5b4-4df5aa379407.aspx</guid>
      <link>http://feedproxy.google.com/~r/netWandering/~3/G3gBbp0yOYs/DeepZoomExample.aspx</link>
      <pubDate>Sun, 07 Dec 2008 17:21:38 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
With the release of Silverlight 2.0 also came the functionality of Deep Zoom. Deep&#xD;
Zoom optimizes the viewing of large images in a smooth manner by partitioning an image&#xD;
into tiles and levels of resolution of the original image. Using this method allows&#xD;
for the browser to download a lower resolution image for a faster download speed and&#xD;
then only grab the higher resolution image if the user zooms in. When the user does&#xD;
zoom in the tile that represents that section of the higher resolution image is download&#xD;
to the browser again saving the viewer download time and enhancing the user experience. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In order to begin working with Deep Zoom the first thing we need to do is prepare&#xD;
an image for Deep Zoom by creating tiles out of the image of different resolutions.&#xD;
This would be a bit cumbersome to do by hand so luckily Microsoft has provided us&#xD;
with the Deep Zoom Composer which you can &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.microsoft.com%2Fdownloads%2Fdetails.aspx%3Ffamilyid%3D457b17b7-52bf-4bda-87a3-fa8a4673f8bf&amp;amp;ei=igM8SbX_MojaM8-R2a8F&amp;amp;usg=AFQjCNE5i8Ndl2AZGRxmQ8seQB1MZawSVA&amp;amp;sig2=3w05HjQyqEhCJaSEFkrewA"&gt;download&lt;/a&gt; for&#xD;
free. This allows us to create the Deep Zoom images and even allows us to create a&#xD;
collage of image in Deep Zoom. We will be doing the latter, using the numerous amount&#xD;
of photos that I took while traveling through Europe for the month of September. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The first thing we need to do is create a new project in Deep Zoom Composer. Do this&#xD;
by running the Deep Zoom Composer and selecting new project. After doing this you&#xD;
will see three tabs along the top – Import, Compose, and Export. If you are not already&#xD;
on the Import tab, select it, and then we need to add the images that we want to work&#xD;
with. In my case I will be adding in all my pictures from Rome. Click the Add Image…&#xD;
button on the right and select the images that you want to add. Remember that you&#xD;
can select multiple images at once to get your images imported in faster. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/120708_1721_DeepZoomExa1.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Once the images are imported we then switch over to the Compose tab. The tab allows&#xD;
you to create how the final image will look in your Silverlight Application. Select&#xD;
your imported images from the side and place them on the canvas how you would like&#xD;
them to appear. You can zoom in and out on the canvas and place your photos at different&#xD;
depths, even embedding them within each other. For instance I have an image of the&#xD;
Coliseum from the distance with a sign that is on the side of it. I then have a closer&#xD;
image of that sign as another picture. The Deep Zoom composer allows me to embed the&#xD;
more detailed image of the sign into the image of the Coliseum. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/120708_1721_DeepZoomExa2.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/120708_1721_DeepZoomExa3.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In the composer you also have the ability to associate tags with the images. I have&#xD;
associated various tags with all my images. Through the composer you can only apply&#xD;
one string as a tag, so I have used this field to enter multiple "tags" separated&#xD;
by commas. In a future tutorial I will demonstrate how to create a tag filter to filter&#xD;
down images shown in the MultiScaleImage. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/120708_1721_DeepZoomExa4.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Once we have exported the images from Deep Zoom Composer it is now time to get our&#xD;
hands dirty in Visual Studio 2008. In order to work with Silverlight 2.0 applications&#xD;
you are going to need 3 things, Visual Studio 2008 SP1, the Silverlight SDK, and the&#xD;
Silverlight tools for Visual Studio 2008. Fire up vs2008, go to File-&amp;gt;New-&amp;gt;Project&#xD;
and under Visual C# (or if you prefer you can select VB) select Silverlight. Then&#xD;
select Silverlight Application on the right, name your solution, and select where&#xD;
you want to save it. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/120708_1721_DeepZoomExa5.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Next a window will appear that will ask you if you want to add a new ASP.NET web project&#xD;
to the solution or generate a test page at build time. Every Silverlight application&#xD;
needs to be hosted inside a web application so we will let Visual Studio add a project&#xD;
to our solution for this purpose. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/120708_1721_DeepZoomExa6.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you now look in the Solution Explorer you will see that we have an empty Silverlight&#xD;
Application called DeepZoomExample2 and a ASP.NET web project called DeepZoomExample2.Web.&#xD;
The web project has two pages that were created for us, an aspx page and a html page&#xD;
that hosts our Silverlight Application. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/120708_1721_DeepZoomExa7.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Next we need to add our exported images to the web project. Add a new folder under&#xD;
the ClientBin folder on the Web Project and call it GeneratedImages. The ClientBin&#xD;
folder is where the compiled .xap file from your Silverlight will live so this is&#xD;
the easiest place to put our exported files. Now go into your exported folder from&#xD;
the Deep Zoom Composer and open up the generated images folder and copy the dzc_output_files&#xD;
folder, and the dzc_output_images folder along with the three files, dzc_output.xml,&#xD;
Metadata.xml, SparseImageSceneGraph.xml into the new GeneratedImages folder that you&#xD;
created in your web project. If you used a lot of images this may take some time to&#xD;
copy. Your Solution Explorer should now look like the following image. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/120708_1721_DeepZoomExa8.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Now it's time to start writing some code. First we add a MultiScaleImage to the Page.xaml&#xD;
file. The Source property will be directed at the dzc_output.zml files that we copied&#xD;
into our GeneratedImages folder. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color:#a31515"&gt;Grid&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:red"&gt;x:Name&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;=&lt;/span&gt;"&lt;span style="color:blue"&gt;LayoutRoot&lt;/span&gt;"&lt;span style="color:blue"&gt;&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:blue"&gt;White&lt;/span&gt;"&lt;span style="color:blue"&gt;&amp;gt; &lt;/span&gt;&lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt; &amp;lt;&lt;/span&gt;&#xD;
            &lt;span style="color:#a31515"&gt;MultiScaleImage&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:red"&gt;x:Name&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;=&lt;/span&gt;"&lt;span style="color:blue"&gt;msi&lt;/span&gt;"&lt;span style="color:blue"&gt;&lt;/span&gt;&lt;span style="color:red"&gt;ViewportWidth&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:blue"&gt;&lt;/span&gt;&lt;span style="color:red"&gt;Source&lt;/span&gt;&lt;span style="color:blue"&gt;=&lt;/span&gt;"&lt;span style="color:blue"&gt;/GeneratedImages/dzc_output.xml&lt;/span&gt;"&lt;span style="color:blue"&gt; /&amp;gt; &lt;/span&gt;&lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;&amp;lt;/&lt;/span&gt;&#xD;
            &lt;span style="color:#a31515"&gt;Grid&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
This is all we need to do to get the basic images on the screen, but that isn't very&#xD;
exciting so lets wire up some zooming using the mouse button. In the Page.xaml.cs&#xD;
file we need to add a few variables to store some information: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="color:green; font-family:Courier New; font-size:10pt"&gt;//This variable&#xD;
is used to know if the user has just click the left button or has clicked and dragged &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;bool&lt;/span&gt; mouseIsDragging&#xD;
= &lt;span style="color:blue"&gt;false&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Indicates&#xD;
if left mouse button is down &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;bool&lt;/span&gt; mouseButtonPressed&#xD;
= &lt;span style="color:blue"&gt;false&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Starting&#xD;
Point of the Drag &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:#2b91af"&gt;Point&lt;/span&gt; dragOffset; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Get&#xD;
Current ViewPort position of MSI &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:#2b91af"&gt;Point&lt;/span&gt; currentPosition; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Last&#xD;
Position of Mouse &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:#2b91af"&gt;Point&lt;/span&gt; lastMousePos&#xD;
= &lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;span style="color:#2b91af"&gt;Point&lt;/span&gt;(); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;double&lt;/span&gt; ZoomFactor &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;get&lt;/span&gt;; &lt;span style="color:blue"&gt;set&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
We then have three mouse events that we need to handle, LeftMouseButton down, LeftMouseButton&#xD;
up, and Mouse Move. Then we need to handle the actual zoom. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt; Handles&#xD;
Left Mouse button down event &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="sender"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="e"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;void&lt;/span&gt; LeftMouseButtonDownHandler(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;MouseEventArgs&lt;/span&gt; e) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Indicate&#xD;
that the button is down &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; mouseButtonPressed = &lt;span style="color:blue"&gt;true&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Reset&#xD;
Dragging &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; mouseIsDragging = &lt;span style="color:blue"&gt;false&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Set&#xD;
Starting point of the drag if the user start dragging &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; dragOffset = e.GetPosition(&lt;span style="color:blue"&gt;this&lt;/span&gt;); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; currentPosition = msi.ViewportOrigin; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In the left mouse button down even, we first set the indicator that the button is&#xD;
pressed. We then reset the dragging indicator, get the current position of the mouse,&#xD;
and finally get the current position of the MultiScaleImage. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt; Handles&#xD;
Left Mouse button up event &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="sender"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="e"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;void&lt;/span&gt; LeftMouseButtonUpHandler(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;MouseEventArgs&lt;/span&gt; e) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Change&#xD;
flag to mouse button no longer pressed &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; mouseButtonPressed = &lt;span style="color:blue"&gt;false&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//If&#xD;
the user wasn't dragging then we do zooming &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;if&lt;/span&gt;(!mouseIsDragging) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Check&#xD;
if shift was pressed. If so we zoom out, otherwise we zoom in &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;bool&lt;/span&gt; shiftDown&#xD;
= (&lt;span style="color:#2b91af"&gt;Keyboard&lt;/span&gt;.Modifiers &amp;amp; &lt;span style="color:#2b91af"&gt;ModifierKeys&lt;/span&gt;.Shift)&#xD;
== &lt;span style="color:#2b91af"&gt;ModifierKeys&lt;/span&gt;.Shift; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; ZoomFactor = 2.0; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;if&lt;/span&gt; (shiftDown)&#xD;
ZoomFactor = 0.5; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; Zoom(ZoomFactor, &lt;span style="color:blue"&gt;this&lt;/span&gt;.lastMousePos); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
When the left mouse button is lifted we change the flag that indicates that the left&#xD;
mouse button is down and if the user was not dragging. We then check to see if shift&#xD;
was pressed. If shift was not pressed we zoom in by a factor of 2, but if shift was&#xD;
pressed we zoom out by a factor of .5. We then call our zoom function (which we have&#xD;
yet to create) with the zoom factor and the last point the mouse was at. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p style="margin-left: 36pt"&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt; ///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt; Handlers&#xD;
the moving of the mouse &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="sender"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="e"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;void&lt;/span&gt; MouseMoveHandler(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;MouseEventArgs&lt;/span&gt; e) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.lastMousePos&#xD;
= e.GetPosition(&lt;span style="color:blue"&gt;this&lt;/span&gt;.msi); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
With the mouse move function all we need to do is capture the position that the mouse&#xD;
is at. Finally in the below Zoom function that is called from the LeftMouseButtonUpHandler,&#xD;
we do the actual zooming. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;public&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;void&lt;/span&gt; Zoom(&lt;span style="color:blue"&gt;double&lt;/span&gt; zoom, &lt;span style="color:#2b91af"&gt;Point&lt;/span&gt; pointToZoom) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:#2b91af"&gt;Point&lt;/span&gt; logicalPoint&#xD;
= &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.ElementToLogicalPoint(pointToZoom); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.ZoomAboutLogicalPoint(zoom,&#xD;
logicalPoint.X, logicalPoint.Y); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
As you can see above we have to translate the mouse pointer relative to our MultiScaleImage&#xD;
and then we use the ZoomAboutLogicalPoint method to handle the zooming for us. The&#xD;
last thing we need to do is wire up the events to the MultiScaleImage control in the&#xD;
Page constructor which will look like the following: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;public&lt;/span&gt; Page() &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; InitializeComponent(); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Wire&#xD;
up events &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.MouseLeftButtonDown&#xD;
+= LeftMouseButtonDownHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.MouseLeftButtonUp&#xD;
+= LeftMouseButtonUpHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.MouseMove&#xD;
+= MouseMoveHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you now run the application you will get the layout of all images on your screen&#xD;
as seen in the first picture below, and if I click on the picture of St. Peter's Square&#xD;
in the center of the image the MultiScaleImage control will zoom in on that particular&#xD;
image as seen in the second picture below. Holding down the shift key while clicking&#xD;
will zoom the MultiScaleImage back out. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/120708_1721_DeepZoomExa9.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img src="http://weblog.ctrlalt313373.com/content/binary/120708_1721_DeepZoomExa10.png" alt=""&gt;&lt;/img&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In order to enable panning we need to augment a few functions that we have already&#xD;
created. Obviously we need to modify the MouseMoveHandler. Initially all this event&#xD;
was doing was updating the mouse position so that when we zoomed in or out we knew&#xD;
where the mouse was pointing. Now we are going to have it check to see if the mouse&#xD;
button is down to indicate that dragging is occurring. Also if the mouse is dragging&#xD;
we need to update the position so that the MultiScaleImage is centered on to where&#xD;
the mouse is dragging. Our new MouseMoveHandler appears below. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt; Handlers&#xD;
the moving of the mouse &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="sender"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="e"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;void&lt;/span&gt; MouseMoveHandler(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;MouseEventArgs&lt;/span&gt; e) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;if&lt;/span&gt;(mouseButtonPressed) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; mouseIsDragging = &lt;span style="color:blue"&gt;true&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.lastMousePos&#xD;
= e.GetPosition(&lt;span style="color:blue"&gt;this&lt;/span&gt;.msi); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Update&#xD;
this View of the MultiScaleImage is dragging &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;if&lt;/span&gt;(mouseIsDragging) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:#2b91af"&gt;Point&lt;/span&gt; newOrigin&#xD;
= &lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;span style="color:#2b91af"&gt;Point&lt;/span&gt;(); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; newOrigin.X = currentPosition.X&#xD;
- &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; (((e.GetPosition(msi).X - dragOffset.X)/msi.ActualWidth)*msi.ViewportWidth); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; newOrigin.Y = currentPosition.Y&#xD;
- &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; (((e.GetPosition(msi).Y - dragOffset.Y)/msi.ActualWidth)*msi.ViewportWidth); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; msi.ViewportOrigin = newOrigin; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
In our left mouse button down handler we are already handling the dragging functionality&#xD;
by initializing the mouseIsDragging variable to false, and setting dargOffset to the&#xD;
initial point that the mouse was at when dragging was started. In the left mouse button&#xD;
up handler we need to update the dragging indicator that was set to true in the left&#xD;
mouse button down indicated. The new handler appears below: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt; Handles&#xD;
Left Mouse button up event &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="sender"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="e"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;void&lt;/span&gt; LeftMouseButtonUpHandler(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;MouseEventArgs&lt;/span&gt; e) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Change&#xD;
flag to mouse button no longer pressed &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; mouseButtonPressed = &lt;span style="color:blue"&gt;false&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//If&#xD;
the user wasn't dragging then we do zooming &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;if&lt;/span&gt;(!mouseIsDragging) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Check&#xD;
if shift was pressed. If so we zoom out, otherwise we zoom in &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;bool&lt;/span&gt; shiftDown&#xD;
= (&lt;span style="color:#2b91af"&gt;Keyboard&lt;/span&gt;.Modifiers &amp;amp; &lt;span style="color:#2b91af"&gt;ModifierKeys&lt;/span&gt;.Shift)&#xD;
== &lt;span style="color:#2b91af"&gt;ModifierKeys&lt;/span&gt;.Shift; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; ZoomFactor = 2.0; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;if&lt;/span&gt; (shiftDown)&#xD;
ZoomFactor = 0.5; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; Zoom(ZoomFactor, &lt;span style="color:blue"&gt;this&lt;/span&gt;.lastMousePos); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; mouseIsDragging = &lt;span style="color:blue"&gt;false&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
We now need to add one more handler. If the mouse goes outside the MultiScaleImage&#xD;
we what to stop the panning so we need to add a Mouse Leave event handler. In the&#xD;
handler I am also going to reset the mouse down variable when the user leaves the&#xD;
MultiScaleImage. This way if they leave the image, lift up the mouse button, and re-enter&#xD;
the image, it won't continue to pan. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt; Handles&#xD;
the mouse leave event &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="sender"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="e"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;void&lt;/span&gt; MouseLeaveHandler(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;MouseEventArgs&lt;/span&gt; e) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; mouseIsDragging = &lt;span style="color:blue"&gt;false&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; mouseButtonPressed = &lt;span style="color:blue"&gt;false&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
We now need to assign the event, so in the constructor where we wired up the other&#xD;
events we need to also wire up the MouseLeave event of the MultiScaleImage: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;public&lt;/span&gt; Page() &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; InitializeComponent(); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Wire&#xD;
up events &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.MouseLeftButtonDown&#xD;
+= LeftMouseButtonDownHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.MouseLeftButtonUp&#xD;
+= LeftMouseButtonUpHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.MouseMove&#xD;
+= MouseMoveHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.MouseLeave&#xD;
+= MouseLeaveHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
There you go. Adding panning was that easy. Now if you fire up the site you can click&#xD;
and dragging the image around and still zoom in and out using click and shit click. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The next thing we need to do is add zooming with the scroll wheel. We are going to&#xD;
do this by using the MouseWheelHelper class provided by &lt;a href="http://blois.us/blog/2008/03/ive-heard-number-of-people-wondering.html"&gt;Peter&#xD;
Blois&lt;/a&gt;. So grab this class and add it to your Silverlight Application. With Silverlight&#xD;
2.0 the silverlight application can reach into the DOM using the Sliverlight DOM bridge&#xD;
and listen to events in the class, abstracting that away from us. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
The first thing we need to do is create an event to handle the mouse wheel. Inside&#xD;
this event we set the event to handled so that the system knows that the event has&#xD;
be taken care of, we set the zoom factor by checking the Delta value that is passed&#xD;
to us from the MouseWheelHelper class. Finally we call the Zoom method passing the&#xD;
factor that we want to zoom by and the point we are zooming at, just like if the user&#xD;
had clicked the mouse button to zoom. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt; Handles&#xD;
the mouse wheel events &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;/summary&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="sender"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:gray"&gt;///&lt;/span&gt;&#xD;
            &lt;span style="color:green"&gt;&#xD;
            &lt;/span&gt;&#xD;
            &lt;span style="color:gray"&gt;&amp;lt;param&#xD;
name="e"&amp;gt;&amp;lt;/param&amp;gt; &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;private&lt;/span&gt;&#xD;
            &lt;span style="color:blue"&gt;void&lt;/span&gt; MouseWheelHandler(&lt;span style="color:blue"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;MouseWheelEventArgs&lt;/span&gt; e) &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Notify&#xD;
that we handled the event &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; e.Handled = &lt;span style="color:blue"&gt;true&lt;/span&gt;; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; ZoomFactor = e.Delta &amp;gt; 0&#xD;
? 1.2 : .80; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; Zoom(ZoomFactor, &lt;span style="color:blue"&gt;this&lt;/span&gt;.lastMousePos); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
Lastly we wire up with event in our constructor just below where we we wiring up the&#xD;
rest of the events. The newly modify constructor appears as follows: &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;public&lt;/span&gt; Page() &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; { &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; InitializeComponent(); &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:green"&gt;//Wire&#xD;
up events &lt;/span&gt;&#xD;
          &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.MouseLeftButtonDown&#xD;
+= LeftMouseButtonDownHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.MouseLeftButtonUp&#xD;
+= LeftMouseButtonUpHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.MouseMove&#xD;
+= MouseMoveHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;this&lt;/span&gt;.msi.MouseLeave&#xD;
+= MouseLeaveHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt;&#xD;
            &lt;span style="color:blue"&gt;new&lt;/span&gt;&#xD;
            &lt;span style="color:#2b91af"&gt;MouseWheelHelper&lt;/span&gt;(&lt;span style="color:blue"&gt;this&lt;/span&gt;).Moved&#xD;
+= MouseWheelHandler; &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Courier New; font-size:10pt"&gt; } &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
If you now build and run the application you'll see that the ability to have zoom&#xD;
with the scroll wheel of the mouse is now present. Hopefully this has demonstrated&#xD;
that working with the Deep Zoom functionality and Deem Zoom Composer is fairly simple&#xD;
and can greatly enhance the user experience for a web site. The even better news is&#xD;
that Deep Zoom composer will now generate all this functionality for you wrapped into&#xD;
a Silverlight 2.0 application when you export your Deep Zoom image. This particular&#xD;
sample was pieced together from what I learned from &lt;a href="http://blog.kirupa.com/"&gt;Kirupa&#xD;
Chinnathambi blog&lt;/a&gt; who is currently a member of the Expression Blend team at Microsoft. &#xD;
&lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://weblog.ctrlalt313373.com/aggbug.ashx?id=2da2f1cf-b0be-487d-b5b4-4df5aa379407"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DpQGwbUAJkYBZpMiBB3XvIlZ6Mc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DpQGwbUAJkYBZpMiBB3XvIlZ6Mc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DpQGwbUAJkYBZpMiBB3XvIlZ6Mc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DpQGwbUAJkYBZpMiBB3XvIlZ6Mc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netWandering/~4/G3gBbp0yOYs" height="1" width="1"/&gt;</description>
      <comments>http://weblog.ctrlalt313373.com/CommentView,guid,2da2f1cf-b0be-487d-b5b4-4df5aa379407.aspx</comments>
      <category>Deep Zoom</category>
      <category>Deep Zoom Composer</category>
      <category>Development</category>
      <category>Silverlight</category>
    <feedburner:origLink>http://weblog.ctrlalt313373.com/2008/12/07/DeepZoomExample.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://weblog.ctrlalt313373.com/Trackback.aspx?guid=d1facc08-9f3b-436d-8f19-d2d6b5731bb0</trackback:ping>
      <pingback:server>http://weblog.ctrlalt313373.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.ctrlalt313373.com/PermaLink,guid,d1facc08-9f3b-436d-8f19-d2d6b5731bb0.aspx</pingback:target>
      <dc:creator>David A. Osborn</dc:creator>
      <wfw:comment>http://weblog.ctrlalt313373.com/CommentView,guid,d1facc08-9f3b-436d-8f19-d2d6b5731bb0.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.ctrlalt313373.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d1facc08-9f3b-436d-8f19-d2d6b5731bb0</wfw:commentRss>
      
      <title>Yielding to Your Colleague’s Expertise</title>
      <guid isPermaLink="false">http://weblog.ctrlalt313373.com/PermaLink,guid,d1facc08-9f3b-436d-8f19-d2d6b5731bb0.aspx</guid>
      <link>http://feedproxy.google.com/~r/netWandering/~3/2r6NLqCIE54/YieldingToYourColleaguesExpertise.aspx</link>
      <pubDate>Sat, 18 Oct 2008 08:53:42 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;img align="left" src="http://weblog.ctrlalt313373.com/content/binary/101808_0853_YieldingtoY1.jpg" alt=""&gt;&lt;/img&gt;This&#xD;
isn't a post about blindly following someone, but this is a posting about acknowledging&#xD;
and yielding to your colleague's specific knowledge in an area. We all don't and can't&#xD;
know everything and each of us as individuals has spent time developing our knowledge&#xD;
in specific areas of expertise. I sit in countless meetings where everyone feels the&#xD;
need to question and understanding everything. Once you realize that you can't understand&#xD;
everything, you then get to limit your scope and you are going to find that your life&#xD;
is a lot easier (and meetings much shorter and productive). One of the important reasons&#xD;
that we have teams is that each individual brings a unique set of skills to the table&#xD;
and at some point when you don't understand something you need to yield to the "expert"&#xD;
on your team, or possible outside your team, on the subject matter. I use the term&#xD;
expert loosely because I consider very few people I know to be a complete expert on&#xD;
any specific subject matter, but I do consider people around me to be experts over&#xD;
me in a subject matter. Just as we yield to a master chef to prepare a meal properly,&#xD;
we need to yield to our colleagues in their areas of expertise. Sure most of us know&#xD;
how to prepare a hamburger, but there are obviously much more complicated dishes that&#xD;
we could/should never attempt. I am not a master at UI design and I don't claim to&#xD;
be. Sure I can put a button and a grid on the screen, but I have no problems yielding&#xD;
to an "expert" colleague in this area. This doesn't mean that you can't way in when&#xD;
you think something is a completely bad idea, but when the conversation/debate continues&#xD;
to drag on and a decision needs to be made then the "expert" needs to be yielded to.&#xD;
This also doesn't imply that everyone on the team has an expertise. Some members are&#xD;
still too green, and unfortunately in some cases a team member has enough problems&#xD;
staying up with the basics to ever dive deeper into a topic. These individuals just&#xD;
need to realize that they can't understand everything right away and sometimes they&#xD;
just need to sit back and listen. I understood about 10% of the &lt;a href="http://www.iadnug.org/"&gt;IADNUG&lt;/a&gt; meetings&#xD;
when I first started attending and it took me a better part of a year before I fell&#xD;
in stride with the other members. I'm not saying you shouldn't ask questions, but&#xD;
sometimes you should sit back, absorb the information, and realize that you don't&#xD;
understand it now, but in the future when you seen more examples, more applications,&#xD;
and have absorbed more you might and until then you can yield to the "expert". Of&#xD;
course all this still leaves you needing to decide who are the "experts" on your team&#xD;
and what are they "experts" in….&#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://weblog.ctrlalt313373.com/aggbug.ashx?id=d1facc08-9f3b-436d-8f19-d2d6b5731bb0"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fTRAeLaie1xTnCOjTafRnwQPuBs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fTRAeLaie1xTnCOjTafRnwQPuBs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fTRAeLaie1xTnCOjTafRnwQPuBs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fTRAeLaie1xTnCOjTafRnwQPuBs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netWandering/~4/2r6NLqCIE54" height="1" width="1"/&gt;</description>
      <comments>http://weblog.ctrlalt313373.com/CommentView,guid,d1facc08-9f3b-436d-8f19-d2d6b5731bb0.aspx</comments>
      <category>Team Dynamics</category>
    <feedburner:origLink>http://weblog.ctrlalt313373.com/2008/10/18/YieldingToYourColleaguesExpertise.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://weblog.ctrlalt313373.com/Trackback.aspx?guid=7098b8e8-5a24-4237-b4fd-f67f681d3e69</trackback:ping>
      <pingback:server>http://weblog.ctrlalt313373.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.ctrlalt313373.com/PermaLink,guid,7098b8e8-5a24-4237-b4fd-f67f681d3e69.aspx</pingback:target>
      <dc:creator>David A. Osborn</dc:creator>
      <wfw:comment>http://weblog.ctrlalt313373.com/CommentView,guid,7098b8e8-5a24-4237-b4fd-f67f681d3e69.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.ctrlalt313373.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7098b8e8-5a24-4237-b4fd-f67f681d3e69</wfw:commentRss>
      
      <title>Just Finished Reading….</title>
      <guid isPermaLink="false">http://weblog.ctrlalt313373.com/PermaLink,guid,7098b8e8-5a24-4237-b4fd-f67f681d3e69.aspx</guid>
      <link>http://feedproxy.google.com/~r/netWandering/~3/sWLl3RyPB58/JustFinishedReading.aspx</link>
      <pubDate>Mon, 06 Oct 2008 00:45:03 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
In continuing with my postings on books that I have finished reading, not those that&#xD;
I have just simply started or skimmed, I just finished the book &lt;a href="http://www.amazon.com/Founders-Work-Stories-Startups-Problem-Solution/dp/1430210788/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1223253482&amp;amp;sr=8-1"&gt;Founders&#xD;
at Work&lt;/a&gt; by Jessica Livingston. The book is a series of interviews with various&#xD;
founders of technology startup companies such as Apple, Lotus, Flickr, and PayPal.&#xD;
Not without its slow points the book was a very interesting read and I would recommend&#xD;
it to anyone who is interested in technology and entrepreneurship. If you are looking&#xD;
for the key to creating a successful startup I'll warn you that several of the philosophies&#xD;
suggested by interviewees in the book contradict each other. This apparently indicates&#xD;
that there is no surefire way to create your startup. Most of the interviews were&#xD;
of perfect length for reading in one sitting so it was a good book to read for awhile&#xD;
and then not get back to for a bit. Pick up a copy today and keep it on your coffee&#xD;
table for when you can't find anything good on tv. &#xD;
&lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://weblog.ctrlalt313373.com/aggbug.ashx?id=7098b8e8-5a24-4237-b4fd-f67f681d3e69"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KgHRxsDBXYxBz5OK6o0u9cQ3yBc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KgHRxsDBXYxBz5OK6o0u9cQ3yBc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KgHRxsDBXYxBz5OK6o0u9cQ3yBc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KgHRxsDBXYxBz5OK6o0u9cQ3yBc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netWandering/~4/sWLl3RyPB58" height="1" width="1"/&gt;</description>
      <comments>http://weblog.ctrlalt313373.com/CommentView,guid,7098b8e8-5a24-4237-b4fd-f67f681d3e69.aspx</comments>
      <category>Books</category>
    <feedburner:origLink>http://weblog.ctrlalt313373.com/2008/10/06/JustFinishedReading.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://weblog.ctrlalt313373.com/Trackback.aspx?guid=60ff140f-e11e-4fa8-8540-4d54b2102447</trackback:ping>
      <pingback:server>http://weblog.ctrlalt313373.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.ctrlalt313373.com/PermaLink,guid,60ff140f-e11e-4fa8-8540-4d54b2102447.aspx</pingback:target>
      <dc:creator />
      <wfw:comment>http://weblog.ctrlalt313373.com/CommentView,guid,60ff140f-e11e-4fa8-8540-4d54b2102447.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.ctrlalt313373.com/SyndicationService.asmx/GetEntryCommentsRss?guid=60ff140f-e11e-4fa8-8540-4d54b2102447</wfw:commentRss>
      
      <title>Day Five in Spain</title>
      <guid isPermaLink="false">http://weblog.ctrlalt313373.com/PermaLink,guid,60ff140f-e11e-4fa8-8540-4d54b2102447.aspx</guid>
      <link>http://feedproxy.google.com/~r/netWandering/~3/jqVPKqN3y2A/DayFiveInSpain.aspx</link>
      <pubDate>Wed, 10 Sep 2008 23:23:36 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;Well today is the end of day five in Spain&#xD;
(I suppose really only day four as the first was all travel time.) The first day consisted&#xD;
of 4 different flight that took me from Des Moines to Chicago to Boston to Madrid&#xD;
and finally to Marbella to meet up with my host parents, Manuel and Maria Luisa, the&#xD;
sister of Maria Luisa, and the daughter of my host sister, Gabriella. I left DM on&#xD;
a Saturday and arrived on Sunday. Sunday was mainly spent adjusting to the seven hour&#xD;
time difference and working on my rusty Spanish. The highlight of the day was being&#xD;
able to see Africa from our patio. The two other days spent in Marbella consisted&#xD;
of laying on the beach and eating. I was able to eat some authenticate Spanish paella,&#xD;
not as good as what Maria Luisa makes but better than what I make. I also took a walk&#xD;
on the beach and took some photos of Antonio Bandaras's house though he didn't invite&#xD;
me in for drinks. Today was spent riding in the car up to Madrid. It took about seven&#xD;
hours including stops which suprised me as I would have thought it was less than that&#xD;
to cross the whole country. Other than that the evening was spent settling into the&#xD;
house just outside of Madrid and trying to get a trip to Lisbon figured out. If things&#xD;
work out this post should also contain a photo of us at lunch the second day in Marbella.&#xD;
Going from my right in the photo we have Maria Luisa's sister, Gabriella, Maria Luisa,&#xD;
Manuel, and two friends of my host parents. &lt;img width="0" height="0" src="http://weblog.ctrlalt313373.com/aggbug.ashx?id=60ff140f-e11e-4fa8-8540-4d54b2102447"&gt;&lt;/img&gt;&lt;/body&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aWR37B49cRqzA81qSJrCEbUwfcg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aWR37B49cRqzA81qSJrCEbUwfcg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aWR37B49cRqzA81qSJrCEbUwfcg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aWR37B49cRqzA81qSJrCEbUwfcg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netWandering/~4/jqVPKqN3y2A" height="1" width="1"/&gt;</description>
      <comments>http://weblog.ctrlalt313373.com/CommentView,guid,60ff140f-e11e-4fa8-8540-4d54b2102447.aspx</comments>
    <feedburner:origLink>http://weblog.ctrlalt313373.com/2008/09/10/DayFiveInSpain.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://weblog.ctrlalt313373.com/Trackback.aspx?guid=81dc32af-551f-4f22-831d-335cd8093a73</trackback:ping>
      <pingback:server>http://weblog.ctrlalt313373.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.ctrlalt313373.com/PermaLink,guid,81dc32af-551f-4f22-831d-335cd8093a73.aspx</pingback:target>
      <dc:creator>David A. Osborn</dc:creator>
      <wfw:comment>http://weblog.ctrlalt313373.com/CommentView,guid,81dc32af-551f-4f22-831d-335cd8093a73.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.ctrlalt313373.com/SyndicationService.asmx/GetEntryCommentsRss?guid=81dc32af-551f-4f22-831d-335cd8093a73</wfw:commentRss>
      
      <title>Knowing Your Dreams and Achieving Them</title>
      <guid isPermaLink="false">http://weblog.ctrlalt313373.com/PermaLink,guid,81dc32af-551f-4f22-831d-335cd8093a73.aspx</guid>
      <link>http://feedproxy.google.com/~r/netWandering/~3/P4daWmoaYnE/KnowingYourDreamsAndAchievingThem.aspx</link>
      <pubDate>Mon, 28 Jul 2008 02:55:56 GMT</pubDate>
      <description>&lt;body xmlns="http://www.w3.org/1999/xhtml"&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Arial"&gt;Today I set aside an hour and fifteen minutes and&#xD;
watched the famous &lt;a href="http://www.youtube.com/watch?v=ji5_MqicxSo"&gt;last lecture&lt;/a&gt; titled&#xD;
"Really Achieving Your Childhood Goals" by the late Randy Pausch a computer science&#xD;
professor at Carnegie Mellon University. In August of 2006 Pausch was diagnosed with&#xD;
pancreatic cancer and he passed away on July 25, 2008. I encourage you to watch the&#xD;
lecture and then ask yourself the question "Am I achieving my childhood goals?" &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Arial"&gt; I've been pondering this thought for about 6 months&#xD;
now, wondering if I have achieved anything that I intend to so far in my life. This&#xD;
is a tough concept to contemplate. I know personally that I find it very easy to know&#xD;
what I don't want to be doing and what I don't like, but I find it difficult to know&#xD;
what exactly I want to be doing. I think it is all too common that society expects&#xD;
us to clock in and out of our 40 hour a week job and we're suppose to believe that&#xD;
this is what it is all about. Is that really what life is about? If you found out&#xD;
tomorrow that you were going to die in the near future what would you do? &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Arial"&gt; Personally I don't feel like I'm working towards&#xD;
a dream. What I am working towards is my mortgage payment, health insurance, and achieving&#xD;
society's expectation of being a standup citizen. I'm beginning to believe that by&#xD;
working toward these goals I am failing myself and my dreams and I think that this&#xD;
is the case for most people. We get stuck doing what is expected of us and locked&#xD;
into financial concerns that prevent us from achieving our dreams. Working towards&#xD;
society goals causes us to lose sight and motivation for our own goals. When this&#xD;
happens then was life really worth it? &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Arial"&gt; I think that a lot of factors add up to us achieving&#xD;
our dreams. &lt;strong&gt;Knowing the dream – &lt;/strong&gt;this can sometimes be the hardest.&#xD;
The daily noise seems to drown out the internal part of us that causes us to dream.&#xD;
I'm so busy accomplishing "tasks' during the day that the only thing I dream about&#xD;
doing is sitting down and doing nothing. &lt;strong&gt;Having&lt;/strong&gt;&lt;strong&gt;the means&#xD;
to accomplish the dream – &lt;/strong&gt;Accomplishing a dream can be a financial and time&#xD;
consuming task. Even when accomplishing the dream does not require a direct financial&#xD;
investment the time that is required for a dream could have an overall impact on things&#xD;
either financially or otherwise. &lt;strong&gt;Motivation – &lt;/strong&gt;It's strange to not&#xD;
be motivated to accomplish your dreams, but the shear challenges faced in accomplishing&#xD;
a dream can affect the desire to complete it. &lt;strong&gt;Support from others – &lt;/strong&gt;Support&#xD;
from others to achieve your dream can have a powerful impact. I've found that most&#xD;
people are negative towards the concept of me accomplishing my dreams, either because&#xD;
they feel it is impossible, or because the dream goes against society's norm. If one&#xD;
person I trusted pulled me aside and told me to per sue one of my dreams now it would&#xD;
probably be enough motivation for me to go do it. &lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;p&gt;&#xD;
          &lt;span style="font-family:Arial"&gt;Are you achieving your dreams?&lt;/span&gt;&#xD;
        &lt;/p&gt;&#xD;
        &lt;img width="0" height="0" src="http://weblog.ctrlalt313373.com/aggbug.ashx?id=81dc32af-551f-4f22-831d-335cd8093a73"&gt;&lt;/img&gt;&#xD;
      &lt;/body&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8osA3TCdMksysw2Hn4WOvJCsUx0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8osA3TCdMksysw2Hn4WOvJCsUx0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8osA3TCdMksysw2Hn4WOvJCsUx0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8osA3TCdMksysw2Hn4WOvJCsUx0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/netWandering/~4/P4daWmoaYnE" height="1" width="1"/&gt;</description>
      <comments>http://weblog.ctrlalt313373.com/CommentView,guid,81dc32af-551f-4f22-831d-335cd8093a73.aspx</comments>
      <category>Ramblings</category>
    <feedburner:origLink>http://weblog.ctrlalt313373.com/2008/07/28/KnowingYourDreamsAndAchievingThem.aspx</feedburner:origLink></item>
  </channel>
</rss>
