<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;C0YGRXw-eip7ImA9WhBTGUg.&quot;"><id>tag:blogger.com,1999:blog-27451825</id><updated>2013-02-15T12:58:44.252-05:00</updated><category term="SharePoint" /><category term="Visual Studio" /><category term="Productivity" /><category term="iPhone" /><category term="DotNet F#" /><category term="iPhone Apps" /><category term="Lotus Notes" /><category term="SQL Server" /><title>Partial Class</title><subtitle type="html">Tips and thoughts on ASP.NET, SharePoint, iPhone development, Lotus Notes, and anything else I happen to be working on.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/PartialClass" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="partialclass" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;AkAFSHs7fSp7ImA9WhdSFkQ.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-57087353686083507</id><published>2011-07-26T12:40:00.001-04:00</published><updated>2011-07-26T12:45:19.505-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-26T12:45:19.505-04:00</app:edited><title>Calculating working days between two dates with Javascript</title><content type="html">&lt;p&gt;Here’s a script that will calculate the number of working days between two Date objects in Javascript.&amp;nbsp; I had a hard time finding an accurate one online so I wrote one myself – please use with caution as it has not been rigorously tested.&lt;/p&gt; &lt;p&gt;Note that the calculation considers the difference between today and today to equal 1.&amp;nbsp; I’m using this to present the number of days left before an event, and in my case on the day of the event it makes sense to see “1 day” instead of “0 days.”&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;div id="codeSnippetWrapper"&gt;&lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;&lt;span style="color: #0000ff"&gt;function&lt;/span&gt; workingDaysBetweenDates(startDate, endDate) {&lt;br&gt;  &lt;br&gt;    &lt;span style="color: #008000"&gt;// Validate input&lt;/span&gt;&lt;br&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (endDate &amp;lt; startDate)&lt;br&gt;        &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; 0;&lt;br&gt;    &lt;br&gt;    &lt;span style="color: #008000"&gt;// Calculate days between dates&lt;/span&gt;&lt;br&gt;    &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; millisecondsPerDay = 86400 * 1000; &lt;span style="color: #008000"&gt;// Day in milliseconds&lt;/span&gt;&lt;br&gt;    startDate.setHours(0,0,0,1);  &lt;span style="color: #008000"&gt;// Start just after midnight&lt;/span&gt;&lt;br&gt;    endDate.setHours(23,59,59,999);  &lt;span style="color: #008000"&gt;// End just before midnight&lt;/span&gt;&lt;br&gt;    &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; diff = endDate - startDate;  &lt;span style="color: #008000"&gt;// Milliseconds between datetime objects    &lt;/span&gt;&lt;br&gt;    &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; days = Math.ceil(diff / millisecondsPerDay);&lt;br&gt;    &lt;br&gt;    &lt;span style="color: #008000"&gt;// Subtract two weekend days for every week in between&lt;/span&gt;&lt;br&gt;    &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; weeks = Math.floor(days / 7);&lt;br&gt;    &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; days = days - (weeks * 2);&lt;br&gt;&lt;br&gt;    &lt;span style="color: #008000"&gt;// Handle special cases&lt;/span&gt;&lt;br&gt;    &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; startDay = startDate.getDay();&lt;br&gt;    &lt;span style="color: #0000ff"&gt;var&lt;/span&gt; endDay = endDate.getDay();&lt;br&gt;    &lt;br&gt;    &lt;span style="color: #008000"&gt;// Remove weekend not previously removed.   &lt;/span&gt;&lt;br&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (startDay - endDay &amp;gt; 1)         &lt;br&gt;        days = days - 2;      &lt;br&gt;    &lt;br&gt;    &lt;span style="color: #008000"&gt;// Remove start day if span starts on Sunday but ends before Saturday&lt;/span&gt;&lt;br&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (startDay == 0 &amp;amp;&amp;amp; endDay != 6)&lt;br&gt;        days = days - 1  &lt;br&gt;            &lt;br&gt;    &lt;span style="color: #008000"&gt;// Remove end day if span ends on Saturday but starts after Sunday&lt;/span&gt;&lt;br&gt;    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (endDay == 6 &amp;amp;&amp;amp; startDay != 0)&lt;br&gt;        days = days - 1  &lt;br&gt;    &lt;br&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; days;&lt;br&gt;}&lt;/pre&gt;&lt;br&gt;&lt;/div&gt;  </content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/57087353686083507/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=57087353686083507" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/57087353686083507?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/57087353686083507?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2011/07/calculating-working-days-between-two.html" title="Calculating working days between two dates with Javascript" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;CEQNRHszfSp7ImA9WhZWGEw.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-8645958148181058994</id><published>2011-05-19T09:13:00.002-04:00</published><updated>2011-05-19T09:39:55.585-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-19T09:39:55.585-04:00</app:edited><title>If I have to tell you what to do...</title><content type="html">&lt;blockquote&gt;&lt;/blockquote&gt;The recent &lt;i&gt;This Developer's Life&lt;/i&gt; podcast features the StackOverflow team discussing &lt;a href="http://thisdeveloperslife.com/post/2-0-2-pressure"&gt;pressure&lt;/a&gt; and how they dealt with the site's unexpected downtime in October 2010.  About 31 minutes in, Scott Hanselman interviews Jeff Atwood, and Jeff revealed an eye-opening insight into how he runs his company.  Speaking about his team, he remarks:&lt;div&gt;&lt;blockquote&gt;If I have to tell you what to do...you suck.&lt;/blockquote&gt;He prefaces that statement with an assurance that it's tongue-in-cheek.  But there is truth behind that statement.  He goes on to say he "unleashes" his team, and expects them to come to him with ideas that he can "simply sign-off on."  He maintains the vision and keeps them moving in the correct direction.  Unlike a traditional work environment where the boss tells the subordinate what to do, here the team's drive comes from the bottom-up.
&lt;div&gt;
&lt;/div&gt;&lt;div&gt;I found this fascinating.  I want to work that way.  Being a solo-developer at my company, I play both roles to a degree, setting the direction for a project while trying to come up with creative ideas to enhance it.   But working alone it is hard to validate whether the way I work would fit within a team environment.  It is really motivating to have this insight on how this successful company (for which I have a ton of respect) operates.&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/8645958148181058994/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=8645958148181058994" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/8645958148181058994?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/8645958148181058994?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2011/05/if-i-have-to-tell-you-what-to-do.html" title="If I have to tell you what to do..." /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0UAR3g-eSp7ImA9Wx5WF0o.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-3857041746967098573</id><published>2010-09-29T10:40:00.001-04:00</published><updated>2010-09-29T10:40:46.651-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-29T10:40:46.651-04:00</app:edited><title>Getting Twitter’s @Anywhere hovercards to work based on URLs</title><content type="html">&lt;p&gt;Twitter has a cool script you can add to your site to turn any references to a twitter account into a helpful hovercard that shows the twitter user, some stats, and a Follow button.&amp;#160; It’s subtle and useful, but it could be a little easier to add for developers.&lt;/p&gt;  &lt;p&gt;I won’t repeat what is already available on the &lt;a href="http://dev.twitter.com/anywhere/begin#hovercards" target="_blank"&gt;docs at Twitter&lt;/a&gt;, but the gist is if I put @kpespisa in a post, the @anywhere script will find that and turn it into a hyperlink that shows a hovercard when you put your mouse over the link.&amp;#160; &lt;/p&gt;  &lt;p&gt;Sadly I noticed there was no &lt;em&gt;simple&lt;/em&gt; way to get a hovercard to appear based on the URL of a hyperlink.&amp;#160; If I added a link that says “Follow me on twitter”, it would be nice to have the hovercard appear when I hover over that hyperlink as well.&amp;#160; &lt;/p&gt;  &lt;p&gt;Adding a little jQuery gets the job done.&amp;#160; Using this code, you can just set the URL to &lt;a href="http://twitter.com/(twitteraccount"&gt;http://twitter.com/(twitteraccount&lt;/a&gt;) and it will create a hovercard for you using the twitter account that is in the URL.&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &amp;lt;script src=&lt;span style="color: #006080"&gt;&amp;quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt; &amp;lt;script src=&lt;span style="color: #006080"&gt;&amp;quot;http://platform.twitter.com/anywhere.js?id=AMyKqypXu1r6qmOvc5OZCQ&amp;amp;amp;v=1&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt; &amp;lt;script type=&lt;span style="color: #006080"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     $(document).ready(&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;() {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum5"&gt;   5:&lt;/span&gt;         $(&lt;span style="color: #006080"&gt;&amp;quot;a[href^='http://twitter.com']&amp;quot;&lt;/span&gt;).add(&lt;span style="color: #006080"&gt;&amp;quot;a[href^='http://www.twitter.com']&amp;quot;&lt;/span&gt;).attr(&lt;span style="color: #006080"&gt;&amp;quot;title&amp;quot;&lt;/span&gt;, &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;() {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum6"&gt;   6:&lt;/span&gt;             &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #006080"&gt;'@'&lt;/span&gt; + &lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.href.substr(&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;.href.lastIndexOf(&lt;span style="color: #006080"&gt;'/'&lt;/span&gt;) + 1);&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum7"&gt;   7:&lt;/span&gt;         });&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum8"&gt;   8:&lt;/span&gt;     });&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum9"&gt;   9:&lt;/span&gt;&amp;#160; &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum10"&gt;  10:&lt;/span&gt;     twttr.anywhere(&lt;span style="color: #0000ff"&gt;function&lt;/span&gt;(T) { &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum11"&gt;  11:&lt;/span&gt;         T.hovercards(); &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum12"&gt;  12:&lt;/span&gt;         &lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum13"&gt;  13:&lt;/span&gt;         T(&lt;span style="color: #006080"&gt;&amp;quot;a[title^='@']&amp;quot;&lt;/span&gt;).hovercards({&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum14"&gt;  14:&lt;/span&gt;             username: &lt;span style="color: #0000ff"&gt;function&lt;/span&gt;(node) {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum15"&gt;  15:&lt;/span&gt;                 &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; node.title;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum16"&gt;  16:&lt;/span&gt;             }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum17"&gt;  17:&lt;/span&gt;         });&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum18"&gt;  18:&lt;/span&gt;     });&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum19"&gt;  19:&lt;/span&gt; &amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;For example:&amp;#160; &lt;a href="http://twitter.com/kpespisa" target="_blank"&gt;Follow me on Twitter!&lt;/a&gt;&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/3857041746967098573/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=3857041746967098573" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/3857041746967098573?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/3857041746967098573?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2010/09/getting-twitters-anywhere-hovercards-to.html" title="Getting Twitter’s @Anywhere hovercards to work based on URLs" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;A08ARn4-eyp7ImA9WxFQEUg.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-8552895948514672313</id><published>2010-05-06T10:32:00.007-04:00</published><updated>2010-05-06T11:30:47.053-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-06T11:30:47.053-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DotNet F#" /><title>DotNetRocks in Boston</title><content type="html">&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ooUcU9D5f7w/S-LWo9fw1KI/AAAAAAAABaA/MY1j3hnaGag/s1600/IMG_1042.JPG"&gt;&lt;img style="margin: 0px 10px 10px 0px; width: 320px; display: inline; height: 240px; cursor: hand" id="BLOGGER_PHOTO_ID_5468168896772101282" border="0" alt="" src="http://4.bp.blogspot.com/_ooUcU9D5f7w/S-LWo9fw1KI/AAAAAAAABaA/MY1j3hnaGag/s320/IMG_1042.JPG" /&gt;&lt;/a&gt;     &lt;br /&gt;This past Monday I went to see the Boston stop of the &lt;a href="http://www.dotnetrocks.com/roadtrip.aspx"&gt;DotNetRocks road trip&lt;/a&gt;, hosted by Carl Franklin and Richard Campbell. The duo put on a good event, bringing in guest Chris Sells for their podcast, as well as a panel of guests to discuss F#. &lt;/p&gt;  &lt;p&gt;The portion of the evening I found most interesting was the F# discussion. I didn't expect to get much out of it. I had heard enough of F# to that point to make up my mind that it wasn't for me. I reasoned that if it isn't a language I can completely switch to, I'm better off focusing on VB or C#.&lt;/p&gt;  &lt;p&gt;So I was surprised when I heard the F# experts suggest that we use the language to complement our projects rather than use it as an all-purpose language. They encouraged us to use the language for its strengths, such as asynchronous processing and parallelism. One could create an assembly written in F# and include that in a VB project, for example, to handle some heavy computations. We already use a handful of non-core languages in our projects such as HTML, Javascript, LINQ or SQL, so the idea of blending yet another language into our projects is not a foreign concept. &lt;/p&gt;  &lt;p&gt;The panel suggested we add F# to our repertoire and understand its strengths, and use it where it's beneficial. I'm going to take that advice. Bottom line is if I can replace 50 lines of confusing C# code with 10 lines of elegant F#, I've done myself a service.&lt;/p&gt;  &lt;p&gt;A big thank you to Carl and Richard for their hard work in putting this event together, and for entertaining me with their podcasts during my commutes, jogs, walks, and housework.&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/8552895948514672313/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=8552895948514672313" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/8552895948514672313?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/8552895948514672313?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2010/05/dotnetrocks-in-boston.html" title="DotNetRocks in Boston" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_ooUcU9D5f7w/S-LWo9fw1KI/AAAAAAAABaA/MY1j3hnaGag/s72-c/IMG_1042.JPG" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Ak4NQ3o-cCp7ImA9WxFRGUU.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-317541485593593473</id><published>2010-05-04T12:03:00.001-04:00</published><updated>2010-05-04T12:03:12.458-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-04T12:03:12.458-04:00</app:edited><title>Setting up a Mercurial server on Win2k3 / IIS 6.0</title><content type="html">&lt;p&gt;There are several tutorials right now explaining how to setup a Mercurial server in Windows, but most are outdated just enough to make the whole process fail due to recent changes to Mercurial.&amp;#160; I tried a few, but the best one available as of Mercurial 1.5.2 is from &lt;a href="http://www.eworldui.net/blog/post/2010/04/08/Setting-up-Mercurial-server-in-IIS7-using-a-ISAPI-module.aspx" target="_blank"&gt;Matt Hawley from eWorldUI.net&lt;/a&gt;.&amp;#160; His post explains how to set up the server using IIS 7.0, and the process is slightly different in IIS 6.0, as I’ll explain.&lt;/p&gt;  &lt;p&gt;First, &lt;a href="http://www.eworldui.net/blog/post/2010/04/08/Setting-up-Mercurial-server-in-IIS7-using-a-ISAPI-module.aspx" target="_blank"&gt;read his blog post&lt;/a&gt; to get a sense of the procedure.&amp;#160; The post is broken into two major sections, Packages Installation, and Configuration.&amp;#160; I followed the Packages Installation section exactly as written, with the exception of downloading the latest source for Mercurial, which is 1.5.2.&amp;#160; &lt;/p&gt;  &lt;p&gt;Once you’ve completed the Packages Installation, follow these steps instead to configure IIS 6.0.&amp;#160; Many of these steps are the same as Matt describes, but for convenience I’ve duplicated them here.&amp;#160; All credit for this goes to Matt for getting us 99% of the way there.&amp;#160; &lt;/p&gt;  &lt;p&gt;These steps assume you have IIS installed already.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a folder to host your Mercurial site.&amp;#160; As Matt suggests, you can use &lt;strong&gt;c:\inetpub\hg&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Copy the hgwebdir_wsgi.py file from &lt;strong&gt;c:\(mercurial source code location)\contrib\win32&lt;/strong&gt; to &lt;strong&gt;c:\inetpub\hg&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Edit hgwebdir_wsgi.py in a text editor and change the two lines as follows:      &lt;br /&gt;      &lt;br /&gt;&lt;font face="Courier New"&gt;hgweb_config = r’c:\inetpub\hg\hgweb.config’        &lt;br /&gt;path_prefix = 0         &lt;br /&gt;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Open a command prompt and go to the &lt;strong&gt;c:\inetpub\hg&lt;/strong&gt; folder &lt;/li&gt;    &lt;li&gt;Run &lt;strong&gt;python&lt;/strong&gt; &lt;strong&gt;hgwebdir_wsgi.py.&lt;/strong&gt;&amp;#160; If python isn’t installed on the system path, you may need to include the path to it and use &lt;strong&gt;c:\python26\python&lt;/strong&gt; &lt;strong&gt;hgwebdir_wsgi.py&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Create a new text file named &lt;strong&gt;hgweb.config&lt;/strong&gt; in the &lt;strong&gt;c:\inetpub\hg&lt;/strong&gt; folder and add the following.&amp;#160; Here c:\repos is the folder where you will store your repositories.       &lt;br /&gt;      &lt;br /&gt;&lt;font face="Courier New"&gt;[paths]        &lt;br /&gt;/ = c:\repos\*&lt;/font&gt;&amp;#160; &lt;br /&gt;      &lt;br /&gt;At this point, your folder should look like this:      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_ooUcU9D5f7w/S-BFGOmhRXI/AAAAAAAABZA/nFRghZLbU-o/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_ooUcU9D5f7w/S-BFG5vWjjI/AAAAAAAABZE/HkMX525XBdA/image_thumb%5B1%5D.png?imgmax=800" width="408" height="151" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;In IIS Manager, create a new application pool with the name &lt;strong&gt;Mercurial&lt;/strong&gt;.       &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_ooUcU9D5f7w/S-BFHWPxIVI/AAAAAAAABZI/dQ1AhON-QZo/s1600-h/image%5B27%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_ooUcU9D5f7w/S-BFH4T2R7I/AAAAAAAABZM/9NzfEr5Pfts/image_thumb%5B13%5D.png?imgmax=800" width="343" height="194" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Create a new website called Mercurial, and set the TCP port to 81 (or any unused port).&amp;#160; Leave the Host header field blank.      &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_ooUcU9D5f7w/S-BFIZi5paI/AAAAAAAABZQ/vuhZyMbmkto/s1600-h/image%5B26%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_ooUcU9D5f7w/S-BFJkM6HUI/AAAAAAAABZU/4dLWraIRbuI/image_thumb%5B12%5D.png?imgmax=800" width="339" height="266" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Set the path to &lt;strong&gt;c:\inetpub\hg&lt;/strong&gt; and finish the wizard.       &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_ooUcU9D5f7w/S-BFKXsQ_tI/AAAAAAAABZY/UF_j2CH9QWw/s1600-h/image%5B25%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_ooUcU9D5f7w/S-BFK1NMhhI/AAAAAAAABZc/W-BVMnVW7r4/image_thumb%5B11%5D.png?imgmax=800" width="333" height="261" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Right-click the Mercurial website and choose properties. &lt;/li&gt;    &lt;li&gt;On the &lt;strong&gt;Home Directory&lt;/strong&gt; tab, click Configuration, and then click Insert… in the Wildcard application maps section.&amp;#160; Enter the path to the isapi dll (&lt;strong&gt;c:\inetpub\hg\_hgwebdir_wsgi.dll&lt;/strong&gt;) and &lt;strong&gt;uncheck &lt;/strong&gt;verify file exists&lt;strong&gt;.&lt;/strong&gt;       &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_ooUcU9D5f7w/S-BFLfz2xCI/AAAAAAAABZg/f4WKEZVwy2Q/s1600-h/image%5B24%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_ooUcU9D5f7w/S-BFMDeUpII/AAAAAAAABZk/iiWx22DMQFA/image_thumb%5B10%5D.png?imgmax=800" width="326" height="357" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;On the &lt;strong&gt;ISAPI filters&lt;/strong&gt; tab, click Add…&lt;strong&gt; &lt;/strong&gt;and enter Mercurial-ISAPI as the filter name and &lt;strong&gt;c:\inetpub\hg\_hgwebdir_wsgi.dll&lt;/strong&gt; as the executable.      &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_ooUcU9D5f7w/S-BFMuYZH9I/AAAAAAAABZo/rpqMbVg3qMA/s1600-h/image%5B23%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_ooUcU9D5f7w/S-BFNaw56lI/AAAAAAAABZs/viWdakI2lsU/image_thumb%5B9%5D.png?imgmax=800" width="320" height="311" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Finally, go to the Web Service Extensions in IIS Manager and Add a new Web service extension.&amp;#160; Give it the name Mercurial-ISAPI, and add the required file &lt;strong&gt;c:\inetpub\hg\_hgwebdir_wsgi.dll&lt;/strong&gt;, and check the “Set extension status to Allowed” option.      &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_ooUcU9D5f7w/S-BFNxEEkzI/AAAAAAAABZw/_37PulNJCZc/s1600-h/image%5B22%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_ooUcU9D5f7w/S-BFOUzCIaI/AAAAAAAABZ0/bGMjklPyjy4/image_thumb%5B8%5D.png?imgmax=800" width="316" height="342" /&gt;&lt;/a&gt;      &lt;br /&gt; &lt;/li&gt;    &lt;li&gt;Finally, browse to &lt;a href="http://localhost:81"&gt;http://localhost:81&lt;/a&gt; (or substitute 81 for the port you chose in step 8).&amp;#160; You should now see the Mercurial Repositories page!      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_ooUcU9D5f7w/S-BFO6kGd8I/AAAAAAAABZ4/2noyGvxmlR4/s1600-h/image%5B31%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_ooUcU9D5f7w/S-BFPnHP-1I/AAAAAAAABZ8/VwRp54zE4yg/image_thumb%5B15%5D.png?imgmax=800" width="375" height="284" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  </content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/317541485593593473/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=317541485593593473" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/317541485593593473?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/317541485593593473?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2010/05/setting-up-mercurial-server-on-win2k3.html" title="Setting up a Mercurial server on Win2k3 / IIS 6.0" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_ooUcU9D5f7w/S-BFG5vWjjI/AAAAAAAABZE/HkMX525XBdA/s72-c/image_thumb%5B1%5D.png?imgmax=800" height="72" width="72" /><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;AkAFRXo5cSp7ImA9WxBVFE8.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-6170291260590635059</id><published>2010-02-17T12:33:00.003-05:00</published><updated>2010-02-17T12:45:14.429-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-17T12:45:14.429-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPhone Apps" /><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><title>iPhone Game Rebates</title><content type="html">Jon Lam, CEO of the game development company &lt;a href="http://ph03nixnewmedia.com/"&gt;Ph03nix New Media&lt;/a&gt;, has started a new program to push iPhone games to the top of the App Store charts.  The site, &lt;a href="http://iphonegamerebates.com"&gt;iPhoneGameRebates.com&lt;/a&gt;, will highlight a selected app for two weeks, offering a full rebate (up to $1) if you purchase that app and forward your iTunes receipt.&lt;div&gt;
&lt;/div&gt;&lt;div&gt;For a limited time, to build up a following, they are offering this program on &lt;i&gt;any&lt;/i&gt; app in the App Store.   The site is legitimate and I have already received my rebate, which was sent directly to my PayPal account.  &lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;How does this work?  Essentially the app developers cover the cost of the rebate (meaning they lose the 30% commission taken by Apple), and in return their apps are pushed up the charts.  By climbing the charts, the app is more exposed and more people are likely to buy it, thus covering the loss taken during the rebate period.  &lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;div&gt;I'm definitely going to be a fan of this site, and can't wait to see what apps they give away starting next month!&lt;/div&gt;</content><link rel="related" href="http://iphonegamerebates.com/" title="iPhone Game Rebates" /><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/6170291260590635059/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=6170291260590635059" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/6170291260590635059?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/6170291260590635059?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2010/02/iphone-game-rebates.html" title="iPhone Game Rebates" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkQHRH45eyp7ImA9WxNQEUg.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-1083979307003760536</id><published>2009-09-16T22:25:00.001-04:00</published><updated>2009-09-16T22:25:35.023-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-16T22:25:35.023-04:00</app:edited><title>10 must-have iPhone apps according to Ken</title><content type="html">&lt;p&gt;These are my favorites as of right now.&amp;#160; At this moment.&amp;#160; Subject to change at any time without notice.&lt;/p&gt;  &lt;p&gt;I left off the social media apps everyone has, like Facebook, LinkedIn, and TweetDeck.&amp;#160; I also excluded the apps I’ve written to eliminate the obvious bias :)&amp;#160; &lt;/p&gt;  &lt;p&gt;Here are 10 apps I use on a regular basis:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://images.appshopper.com/icons/304/677902.png" /&gt;&amp;#160;&lt;font size="4"&gt;&lt;strong&gt;#1 &lt;a href="http://appshopper.com/music/simplify-music-20" target="_blank"&gt;Simplify Media 2&lt;/a&gt; ($5.99)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Simplify Media lets you stream music from your computer to your iPhone.&amp;#160; The downside is you need to leave your computer on.&amp;#160; But if you do that anyway then you can have your entire music collection with you anywhere you go.&amp;#160; For me, that’s enough music to fill 10 iPhones.&amp;#160; Plus I don’t have to sync music to my phone.&amp;#160; Once it is on my computer I can play it on my phone.&amp;#160; And the sound quality is great.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://images.appshopper.com/icons/290/338603.png" /&gt;&amp;#160;&lt;font size="4"&gt;&lt;strong&gt;#2&amp;#160; &lt;a href="http://appshopper.com/entertainment/i-tv" target="_blank"&gt;i.TV 2.0&lt;/a&gt; (Free)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;i.TV is the perfect TV guide app, especially if you have a TiVo.&amp;#160; You can see TV listings in a stylish format and flip through stations and show times quickly.&amp;#160; Once you find a show, you can read the synopsis, tell your TiVo to record it, and even change to the station using a built in TiVo remote (yes, control your TiVo from your iPhone.&amp;#160; Is there &lt;a href="http://www.explosm.net/comics/1797/" target="_blank"&gt;anything the iPhone can’t do&lt;/a&gt;?)&amp;#160; There’s tons more to this app that I haven’t yet explored.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://images.appshopper.com/icons/281/796108.png" /&gt;&amp;#160;&lt;font size="4"&gt;&lt;strong&gt;#3 &lt;a href="http://appshopper.com/productivity/evernote" target="_blank"&gt;Evernote&lt;/a&gt; (Free)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Evernote keeps Text, Pictures, and Voice notes, and does so with a nice easy-to-use inteface.&amp;#160; The real exciting feature, though, is all of your notes are synced and available via the Evernote Web site too.&amp;#160; I jump between using the Evernote Web site at my desk, and the iPhone app on the go.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://images.appshopper.com/icons/297/368629.png" /&gt;&amp;#160;&lt;font size="4"&gt;&lt;strong&gt;#4 &lt;a href="http://appshopper.com/healthcare-fitness/lose-it" target="_blank"&gt;Lose It!&lt;/a&gt; (Free)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Lose it! is designed to help you control your weight, the only way that works – by counting calories.&amp;#160; It has a huge, though not complete, list of foods including store brands and popular restaurant chains.&amp;#160; For the foods it is missing, you can add custom foods or recipes.&amp;#160; It tracks all sorts of exercises too.&amp;#160; You start by setting a goal, then as you track intake and exercise, you can see exactly how well you are doing.&amp;#160; I’ve only just started using it, but it does help you think twice before grabbing that brownie in the cafe (not that it stops me, mind you!)&lt;/p&gt;  &lt;p&gt;&lt;img src="http://images.appshopper.com/icons/284/448147.jpg" /&gt;&amp;#160;&lt;font size="4"&gt;&lt;strong&gt;#5 &lt;a href="http://appshopper.com/productivity/zenbe-lists" target="_blank"&gt;Zenbe Lists&lt;/a&gt; ($2.99)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Zenbe is a simple app for keeping to-do lists, shopping lists, etc.&amp;#160; It syncs with a free Web site so you can update lists in both places.&amp;#160; I use it a lot for grocery shopping and keeping a list of projects I need to do at home.&amp;#160; There are many to-do lists in the App Store, including ones that are made specifically for grocery shopping, but I find this simple app works best for me.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://images.appshopper.com/icons/286/058814.png" /&gt;&amp;#160;&lt;font size="4"&gt;&lt;strong&gt;#6 &lt;a href="http://appshopper.com/sports/sportacular" target="_blank"&gt;Sportacular&lt;/a&gt; (Free)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Sportacular has all the details you need for a sports fan who needs to know the current score of a game, or a team’s upcoming schedule, etc.&amp;#160; It’s a well-designed app and covers all the bases, if you will :)&amp;#160; Gives you play-by-plays, stats, and even has an alert feature to notify you when a score has changed.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://images.appshopper.com/icons/307/901758.png" /&gt;&amp;#160;&lt;font size="4"&gt;&lt;strong&gt;#7 &lt;a href="http://appshopper.com/games/lets-golf" target="_blank"&gt;Let’s Golf&lt;/a&gt; ($1.99)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I haven’t purchased many games for the iPhone, but this one caught my attention and is pretty amazing for the price.&amp;#160; I got it on sale for a buck, and it was worth every penny.&amp;#160; Very addictive once you get the hang of it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://images.appshopper.com/icons/284/035177.png" /&gt;&amp;#160;&lt;font size="4"&gt;&lt;strong&gt;#8 &lt;a href="http://appshopper.com/music/pandora-radio" target="_blank"&gt;Pandora Radio&lt;/a&gt; (Free)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Pandora is a free music streaming application that generates playlists based on a band name you enter.&amp;#160; The app uses a highly analytical process to guess what other music you’d like based on the band you select.&amp;#160; It is usually spot on.&amp;#160; This app was one of the reasons I dumped my Sirius radio subscription.&amp;#160; Who needs a monthly fee when I can get this for free?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://images.appshopper.com/icons/284/993459.png" /&gt;&amp;#160;&lt;font size="4"&gt;&lt;strong&gt;#9 &lt;a href="http://appshopper.com/music/shazam" target="_blank"&gt;Shazam&lt;/a&gt; (Free)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Have you ever heard a song and wished you could push a button to find out who the artist is, and what the name of the song is?&amp;#160; Shazam does that for you in 12 seconds.&amp;#160; Just hit “Tag Now”, hold your iPhone near the speaker, and it finds the artist, song, lyrics, bio, and much more.&amp;#160; It is worth checking out just for the pure novelty of it.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://images.appshopper.com/icons/291/890420.png" /&gt;&amp;#160;&lt;font size="4"&gt;&lt;strong&gt;#10 &lt;a href="http://appshopper.com/healthcare-fitness/imapmyrun" target="_blank"&gt;iMapMyRun&lt;/a&gt; (Free)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Here’s another app that has replaced a separate device I used to use.&amp;#160; iMapMyRun will track your running routes using the GPS on the iPhone.&amp;#160; It records time, distance, pace, etc, and syncs that information to mapmyrun.com, where you can enter way more information about your run than you’d ever care to.&amp;#160; They also have an app for bikers and other activities.&amp;#160; It’s the best run-tracking app out there at the moment.&amp;#160; And I don’t need my giant Garmin wrist watch anymore to track my distances.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So there’s my list.&amp;#160; What are your favorites?&amp;#160; Feel free to comment!&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/1083979307003760536/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=1083979307003760536" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/1083979307003760536?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/1083979307003760536?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2009/09/10-must-have-iphone-apps-according-to.html" title="10 must-have iPhone apps according to Ken" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkcEQXkyeCp7ImA9WxNREEU.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-1267565132012091090</id><published>2009-09-04T12:00:00.001-04:00</published><updated>2009-09-04T12:00:00.790-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-04T12:00:00.790-04:00</app:edited><title>Email enabling your Outlook 2007 To Do List</title><content type="html">&lt;p&gt;I use the Outlook 2007 Tasks, aka To Do List, regularly at work.&amp;#160; Occasionally when I’m out and about and I think of something I need to do, I send myself an email from my iPhone (before my memory is garbage-collected) because I know if I fail to write it down immediately it will be lost from my memory forever.&amp;#160; Then the next day, I can take that email and copy it into my to-do list, set a follow-up date, a project category, etc.&lt;/p&gt;  &lt;p&gt;Wouldn’t it be nice if I could just have that all triggered from the email itself?&amp;#160; I thought so, and I started imagining how I could program a script or Outlook Add-on to handle it.&amp;#160; But thankfully, anyone can do this very easily using just built-in Rules for Outlook 2007.&lt;/p&gt;  &lt;p&gt;First, create a new rule in Outlook by clicking &lt;strong&gt;Tools &amp;gt; Rules &amp;amp; Alerts&lt;/strong&gt;.&amp;#160; I chose to &lt;strong&gt;Start with a Blank Rule&lt;/strong&gt; then clicked the &lt;strong&gt;Check messages when they arrive&lt;/strong&gt; option.&lt;/p&gt;  &lt;p&gt;On the first step of the wizard, I selected a few conditions.&amp;#160; I wanted this to only run if the message was sent only to me, was sent only from one of my few email addresses, and only if there were specific words in the subject.&amp;#160; I entered &lt;strong&gt;TODO:&lt;/strong&gt; as the specific word that triggers the action.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_ooUcU9D5f7w/SqE5fP4NFLI/AAAAAAAABEk/mWTl4aSZUFY/s1600-h/image%5B4%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_ooUcU9D5f7w/SqE5fldzkvI/AAAAAAAABEo/1bW8CqVTJbk/image_thumb%5B2%5D.png?imgmax=800" width="414" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;For step 2 of the wizard, I chose to mark the email message as read, flag it for follow up, assign a specific category and move it into another folder (i.e. out of my Inbox)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_ooUcU9D5f7w/SqE5f2mKKeI/AAAAAAAABEs/l64fUHy8zhI/s1600-h/image%5B8%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_ooUcU9D5f7w/SqE5gEU8tHI/AAAAAAAABEw/ple4k4MfN50/image_thumb%5B4%5D.png?imgmax=800" width="418" height="314" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And that’s it!&amp;#160; Click past step 3, and then click Finish.&amp;#160; The system works great, with the only downside that Outlook must be running for this rule to work.&amp;#160; I leave it running usually while I’m away, so that is not an issue.&amp;#160; &lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/1267565132012091090/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=1267565132012091090" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/1267565132012091090?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/1267565132012091090?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2009/09/email-enabling-your-outlook-2007-to-do.html" title="Email enabling your Outlook 2007 To Do List" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_ooUcU9D5f7w/SqE5fldzkvI/AAAAAAAABEo/1bW8CqVTJbk/s72-c/image_thumb%5B2%5D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;D04EQXczcSp7ImA9WxNTGU0.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-213701898660800253</id><published>2009-08-12T21:20:00.003-04:00</published><updated>2009-08-21T21:51:40.989-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-21T21:51:40.989-04:00</app:edited><title>Relax with Tranzotica has hit the App Store</title><content type="html">&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_ooUcU9D5f7w/SoNqaSGaq7I/AAAAAAAABDs/IwgkAI6cmmI/s1600-h/MainCover%5B3%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="MainCover" border="0" alt="MainCover" align="left" src="http://lh6.ggpht.com/_ooUcU9D5f7w/SoNqaooIE-I/AAAAAAAABDw/qLim6lWfNr4/MainCover_thumb%5B1%5D.jpg?imgmax=800" width="164" height="244" /&gt;&lt;/a&gt; I’m a little late with this post, but my second application, &lt;a href="https://sites.google.com/site/relaxwithtranzotica/"&gt;Relax with Tranzotica&lt;/a&gt;, is available for sale on the App store.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://sites.google.com/site/relaxwithtranzotica/"&gt;Relax with Tranzotica&lt;/a&gt; is a relaxation / meditation aid filled with calming images and soothing ambient music.  If you need to escape for a few moments in a busy day, Relax with Tranzotica can help ease your mind and put you at peace.  &lt;/p&gt;  &lt;p&gt;The music was written by &lt;a href="http://www.pameladavis.net/"&gt;Pamela Davis&lt;/a&gt;, an independent artist who released the album &lt;i&gt;Tranzotica&lt;/i&gt; in 2008.  Part of her inspiration for the album involved studying meditation and how music theory (scales, chords, rhythms) could influence the mind and aid relaxation.&lt;/p&gt;  &lt;p&gt;Images are shown based on a theme that you select.  A number of suggested themes are included such as "Sunrises and sunsets", "Waterfalls", and "Tropical Island Beaches".  You can also create your own custom theme based on keywords you enter.&lt;/p&gt;  &lt;p&gt;There is a free lite version available as well: &lt;a href="https://sites.google.com/site/relaxwithtranzotica/"&gt;Relax with Tranzotica Lite&lt;/a&gt;  It includes two tracks and a limited set of images, but is otherwise similar to the full version.&lt;/p&gt;  &lt;p&gt;Here is the app store description:&lt;/p&gt;  &lt;p&gt;Welcome to Relax with Tranzotica. It’s time to get centered. Relax. Regroup.  
Use Relax with Tranzotica to de-stress during difficult days or unwind before sleep. Beautiful images and music draw you in to create an experience of peace, serenity, and calm.   
Select from these ever-changing visual themes, or create your own atmosphere:   
&amp;gt; Sunrises and sunsets   
&amp;gt; Exotic flowers   
&amp;gt; Tropical island beaches   
&amp;gt; Waterfalls   
&amp;gt; Mountains   
&amp;gt; City skylines   
&amp;gt; Redwood National Forest   
&amp;gt; New England foliage   
&amp;gt; and four more...   
Tranzotica’s music is the creation of Pamela Davis, an accomplished independent artist of 25 years. She describes this recording as "a collage of ambient instrumental music that makes one soul tingle from head to toe...packed full of intriguing music that takes the listener to another place, another time, another realm of reality, to unpredictable heights."   
No time for a yoga class, healthy meal, or spa treatment? Relax with Tranzotica.&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/213701898660800253/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=213701898660800253" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/213701898660800253?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/213701898660800253?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2009/08/relax-with-tranzotica-has-hit-app-store.html" title="Relax with Tranzotica has hit the App Store" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_ooUcU9D5f7w/SoNqaooIE-I/AAAAAAAABDw/qLim6lWfNr4/s72-c/MainCover_thumb%5B1%5D.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEACQ30yeyp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-6078524643734949030</id><published>2009-06-30T09:59:00.002-04:00</published><updated>2009-06-30T14:32:42.393-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:32:42.393-04:00</app:edited><title>It is amazing what a Google Images search on your own name turns up.</title><content type="html">&lt;p&gt;Someone in Japan used my Lotus Notes Export to Excel code and credited me on their blog.  &lt;a href="http://nsfl10n.blog9.fc2.com/blog-entry-3.html"&gt;http://nsfl10n.blog9.fc2.com/blog-entry-3.html&lt;/a&gt;  I'm just a bit amazed at the reach that application had.  &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Not only that, but who knew Lotus Notes was being used in Japan?&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/6078524643734949030/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=6078524643734949030" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/6078524643734949030?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/6078524643734949030?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2009/06/it-is-amazing-what-google-images-search.html" title="It is amazing what a Google Images search on your own name turns up." /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEABSX49fyp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-3839153711267862318</id><published>2009-06-09T11:07:00.002-04:00</published><updated>2009-06-30T14:32:38.067-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:32:38.067-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Productivity" /><title>How to better focus on your job in three easy steps</title><content type="html">&lt;p&gt;(I'm assuming you're a Windows XP user running Outlook, so Mac/Linux users maybe you can do this in two or one steps?)&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;1.  Click Start &amp;gt; Control Panel &amp;gt; Sounds and Audio Devices.&lt;/p&gt;  &lt;p&gt;2.  On the Sounds tab, scroll to New Mail Notification in the list of program events.&lt;/p&gt;  &lt;p&gt;3.  Change the Sound to be played option to "(None)."&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Congratulations, you've broken your Pavlovian chains and are free to concentrate on your project tasks without the need to check email every time you hear a ding.&lt;/p&gt;  &lt;p&gt;In future posts, I will demonstrate how to logout of Facebook, set your cell phone's ring mode to Silent, disable your instant messenger alerts, and turn off your Twitter client.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;UPDATE:  &lt;/em&gt;Apparently in Outlook 2007 you're better off going to Tools &amp;gt; Options &amp;gt; Email Options &amp;gt; Advanced Email Options, and unchecking all the items under "When new items arrive in my Inbox".  You really have to focus to eliminate these distractions.&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/3839153711267862318/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=3839153711267862318" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/3839153711267862318?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/3839153711267862318?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2009/06/how-to-better-focus-on-your-job-in.html" title="How to better focus on your job in three easy steps" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEABRX07fCp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-5120964729090680354</id><published>2009-05-06T10:07:00.002-04:00</published><updated>2009-06-30T14:32:34.304-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:32:34.304-04:00</app:edited><title>FrontBase ODBC Driver SQL Columns error</title><content type="html">&lt;p&gt;Sometimes I feel like the things I write on this blog are so obscure they'll never be read.  But I suppose if I ran into this issue, chances are someone else will too.&lt;/p&gt;  &lt;p&gt;I recently had a great experience with the support team from FrontBase regarding their ODBC driver.  While their documentation included with the driver was lacking, they made up for it with the excellent support.&lt;/p&gt;  &lt;p&gt;I had a problem selecting columns from a table using their FrontBase ODBC driver.  I could select * from a table and get results, but if I tried to select a single column it failed.  Also I could browse the tables and views, but couldn't browse the columns of the tables without receiving an error: &lt;strong&gt;Failed to Execute SQL Columns() statement&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you are using the FrontBase ODBC driver (I'm using version 1.20.0.92), and receive this error, there are a few solutions.  First off, the error is caused by a permission issue.  The driver needs to create a special view appropriately called VIEW_NEEDED_BY_FBODBC.  If you aren't the db owner, or if you've set the ODBC connection in read-only transaction mode, then you'll run into this error.  I'm told you can correct this by simply making the connection as the owner, and the driver will handle creating the view the first time you run a query.&lt;/p&gt;  &lt;p&gt;You can also create the view yourself via FBManager or RazorSQL or whatever querying tool you have.  For this you'll obviously need another way to connect to the database, and I used RazorSQL and the FrontBase JDBC driver.&lt;/p&gt;  &lt;p&gt;Run this query to build the view:&lt;/p&gt;  &lt;div&gt;   &lt;div    style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px;  border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;     &lt;pre    style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span style="color:#0000ff;"&gt;CREATE&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;VIEW&lt;/span&gt; VIEW_NEEDED_BY_FBODBC &lt;span style="color:#0000ff;"&gt;AS&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; COLUMN_PK, TABLE_PK, "COLUMN_NAME", IS_NULLABLE, ORDINAL_POSITION, COLUMN_DEFAULT &lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt; DEFINITION_SCHEMA.COLUMNS; &lt;/pre&gt;

   &lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt; &lt;/pre&gt;

   &lt;pre    style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px;  border-top-style: none;   border-left-style: none; overflow: visible; padding-top: 0pxfont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:black;"&gt;&lt;span style="color:#0000ff;"&gt;GRANT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;ON&lt;/span&gt; VIEW_NEEDED_BY_FBODBC &lt;span style="color:#0000ff;"&gt;TO&lt;/span&gt; "_PUBLIC"; &lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;You'll just need to run this code once and the ODBC driver will work as expected, allowing you to browse the table columns and select individual columns.&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/5120964729090680354/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=5120964729090680354" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/5120964729090680354?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/5120964729090680354?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2009/05/frontbase-odbc-driver-sql-columns-error.html" title="FrontBase ODBC Driver SQL Columns error" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEAASX4_fyp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-7794268078488914066</id><published>2009-04-19T15:30:00.003-04:00</published><updated>2009-06-30T14:32:28.047-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:32:28.047-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPhone Apps" /><category scheme="http://www.blogger.com/atom/ns#" term="iPhone" /><title>Shark Browser iPhone App Submitted</title><content type="html">Today I have submitted my first iPhone app, &lt;span style="font-style: italic;"&gt;Shark Browser&lt;/span&gt;, to the App Store.  With any luck it'll hit the store by the end of the month.  Shark Browser is an alternative browser to Safari, with quick access to searches for many popular sites such as Amazon, IMDB, Flickr, Google and more.  Plus it has full-screen features to take advantage of the full real estate of the iPhone.

Here's the description from the App Store:

SHARK is a full screen Web browser with a twist.  Focus your keyword searches by tapping your favorite Web site including Wikipedia, Flickr, Google, ESPN, Amazon.com, IMDB and more!

SHARK has many of the features you’ve come to expect from alternative iPhone browsers and some you haven’t seen before:

- Show and Save Images:  Tap to show all the images on the current Web page.  Then tap any individual image to save it to your photo library.  You can easily save any size image this way (this is difficult to do in Safari).

- Find Text in Page:  After you search a site, use this option to find and highlight the keyword for you.

- Full screen mode:  Hides the status bar and toolbars to use the full screen real estate of the iPhone.  Jump automatically to full screen when you hit “GO.”

- Privacy Browsing:  When you close the application, your session is erased and there is no trace of your personal information or what you were searching for.

- Shrinkster.com users will appreciate the shrinkster code search mode.  Great for listeners of Mondays and other pwop.com podcasts.</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/7794268078488914066/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=7794268078488914066" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/7794268078488914066?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/7794268078488914066?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2009/04/shark-browser-iphone-app-submitted.html" title="Shark Browser iPhone App Submitted" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>3</thr:total></entry><entry gd:etag="W/&quot;DEAAQ3o4cSp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-3934227823326961113</id><published>2009-04-10T14:31:00.002-04:00</published><updated>2009-06-30T14:32:22.439-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:32:22.439-04:00</app:edited><title>iPhone SDK:  Device is case-sensitive, Simulator is not.</title><content type="html">&lt;p&gt;I've started developing for the iPhone this past month and ran into an issue that only appears on the device and worked fine in the simulator.  It boiled down to case sensitivity for image filenames.  The simulator doesn't care about case, but the iPhone itself does.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I called [UIImage imageNamed:@"myfilename.png"] and my images appeared fine in the simulator.  When I tested my app on the device, it didn't crash, but the images never showed up.  I fixed it by making sure all of my image files were named in lowercase, and then I used the lowercaseString method of NSString when calling the imageNamed method.&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/3934227823326961113/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=3934227823326961113" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/3934227823326961113?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/3934227823326961113?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2009/04/iphone-sdk-device-is-case-sensitive.html" title="iPhone SDK:  Device is case-sensitive, Simulator is not." /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEAHSX0yeSp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-2321465275251104276</id><published>2009-04-10T12:52:00.003-04:00</published><updated>2009-06-30T14:32:18.391-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:32:18.391-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server" /><title>SQL Debugging within Visual Studio</title><content type="html">&lt;p&gt;Today's revelation:  You can debug SQL stored procedures and functions.  OMG.  I just saved a half hour of digging through code by stepping through the debugger to see where my code went wrong.&lt;/p&gt;  &lt;p&gt;It is simple to do and &lt;a href="http://www.4guysfromrolla.com/articles/051607-1.aspx"&gt;described well here&lt;/a&gt;.  I just fired up Visual Studio 2008, opened Server Explorer, and opened a Data Connection.  I had to make sure the connection was using Windows authentication, and that my AD account was registered as a user with the sysadmin role on the server.  That was true, so I then right-clicked and chose "Step Into Function".  Voila!  The debugger console came up, asked me for parameters, and showed my function.  This is extremely useful.&lt;/p&gt;  &lt;p&gt;Apparently I'm late to the game since I've read this has been around since SQL Server 2000!  &lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/2321465275251104276/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=2321465275251104276" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/2321465275251104276?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/2321465275251104276?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2009/04/sql-debugging-within-visual-studio.html" title="SQL Debugging within Visual Studio" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkABQ34-eSp7ImA9Wx9aF0w.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-6209943852338053110</id><published>2009-02-19T17:33:00.006-05:00</published><updated>2011-03-09T17:45:52.051-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-09T17:45:52.051-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Lotus Notes" /><title>Export To Excel 2.0 for Lotus Notes</title><content type="html">I'm posting this in case anyone has questions about the Export to Excel scripts I wrote (way back in 2002!).  The code lives on the Lotus Notes sandbox and apparently folks have still been downloading it occasionally.  The email address I reference in the code is long gone, so hopefully this will lead someone to me if they have a question.&lt;div&gt;
&lt;/div&gt;&lt;div&gt;UPDATE:  The Lotus Sandbox has been closed down, so here is the &lt;a href="https://docs.google.com/leaf?id=0B7lOnxAld4anMWFlNTdlYWEtOTM2Ny00YjllLTkwZjQtMjdjMmVmNzc0NGQ3&amp;amp;hl=en"&gt;original Export to Excel 2.0 database&lt;/a&gt; I created.&lt;div&gt;&lt;div&gt;
  &lt;div&gt;
&lt;/div&gt;&lt;div&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/6209943852338053110/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=6209943852338053110" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/6209943852338053110?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/6209943852338053110?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2009/02/export-to-excel-20-for-lotus-notes.html" title="Export To Excel 2.0 for Lotus Notes" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEAGRXw9fyp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-2180361783408632066</id><published>2008-11-21T11:42:00.002-05:00</published><updated>2009-06-30T14:32:04.267-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:32:04.267-04:00</app:edited><title>Notes Import Hell.</title><content type="html">&lt;p&gt;I needed to import some data from Excel into Lotus Notes.  We're phasing out Lotus Notes and we're stuck on version 6.0.4, which only allows you to import from Lotus 123, tabular text, or structured text.  The latter two options were not ideal because of the special characters that live within the data, so I decided to try the old, trusted, method of saving the Excel spreadsheet as 123, setting up a COL file, and running the import.  I've done this dozens of times before.&lt;/p&gt;  &lt;p&gt;This time, however, when I tried to save the Excel spreadsheet to 123 I received the following message:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;"You are attempting to save a file type that is blocked by your registry policy setting."&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I'm guessing a recent service pack or update must've added the restriction.  I fought with this for at least 2 hours...what a waste.  I found a site that told me what registry setting to adjust, and it didn't work either.  Turns out they had the key misspelled...&lt;/p&gt;  &lt;p&gt;So for any of you with this problem, here's the real fix:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Edit your registry using regedit.  Create this key with a DWORD value of 0.  That's it.  &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Excel\Security\FileSaveBlock\LotusandQuattroFiles&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can substitute FileSaveBlock with FileOpenBlock if you'd like to allow opening of Lotus files.&lt;/p&gt;  &lt;p&gt;This google group entry helped me solve the problem finally (&lt;a href="http://groups.google.com/group/microsoft.public.excel.misc/browse_thread/thread/283da40744cc51f4?pli=1"&gt;http://groups.google.com/group/microsoft.public.excel.misc/browse_thread/thread/283da40744cc51f4?pli=1&lt;/a&gt;)&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/2180361783408632066/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=2180361783408632066" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/2180361783408632066?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/2180361783408632066?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2008/11/notes-import-hell.html" title="Notes Import Hell." /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEAFSHg8eSp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-506348479187595625</id><published>2008-08-14T10:17:00.002-04:00</published><updated>2009-06-30T14:31:59.671-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:31:59.671-04:00</app:edited><title>Errors after installing Infrastructure update for MOSS 2007</title><content type="html">&lt;p&gt; &lt;/p&gt;  &lt;p&gt;After I ran the Infrastructure updates, which add new search features to MOSS 2007, I received a few errors trying to access the Search Admin interface.  &lt;/p&gt;  &lt;p&gt;When I clicked the Search administration link at &lt;a title="http://&amp;lt;myserver&amp;gt;/ssp/admin/default.aspx" href="http://%26lt/;myserver&amp;gt;/ssp/admin/default.aspx"&gt;/ssp/admin/default.aspx" href="http:///ssp/admin/default.aspx"&amp;gt;/ssp/admin/default.aspx" href="http:///ssp/admin/default.aspx"&amp;gt;http://&amp;lt;myserver&amp;gt;/ssp/admin/default.aspx&lt;/a&gt;, I first received this error&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="color:#ff0000;"&gt;"The resource object with key 'S2SearchAdminDashboard_Title' was not found"&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Also, the other links under the Search heading were all failing (either giving errors or giving the dreaded Unknown Error)&lt;/p&gt;  &lt;p&gt;After searching a while on Google, I intuited the fix for this, which was to look in my Default Web Site's App_GlobalResources folder and compare it to the App_GlobalResources folder within my Shared Services Provider virtual directory.  I noticed a few files that were in the Default Web Site folder, and not in the SSP folder.  They had a newer date of 3/25/2008, so I copied them over to the SSP virtual directory and made a step forward.  The files were:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;searchadmin.en-us.resx&lt;/p&gt;    &lt;p&gt;SearchAdmin.resx&lt;/p&gt;    &lt;p&gt;sps.en-US.resx&lt;/p&gt;    &lt;p&gt;and sps.resx&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I then tried to open the Search Administration page again, and ran into another error:&lt;/p&gt;  &lt;blockquote&gt;&lt;span style="color:#ff0000;"&gt;Could not find the sitemap node with URL  '/SearchAdministration.aspx'.&lt;/span&gt;&lt;/blockquote&gt;  &lt;p&gt;More digging around led me to discover other files that were newer in my Default Web site that hadn't been copied to the SSP site.  Within the _app_bin folder, there is a layouts.sitemap file that needs to be copied over.  As soon as that was copied over, the search administration page appeared fine.  &lt;/p&gt;  &lt;p&gt;One last thing - when the page came up, there were missing images for refresh and the left and right arrows at the bottom of the screen.  This was a authorization error and I discovered that my Shared Services Provider Web site was using an incorrect Application Pool.  I switched it to the correct one and the images appeared.  Some incorrect access rights may be why the infrastructure update failed to copy the files over in the first place.&lt;/p&gt;  &lt;p&gt;One other possible reason for the bug in the Infrastructure update is that I changed my SSP's port number after installing SharePoint.  The port number conflicted with a backup product that used the same port, and changing the port number on SharePoint was much easier than changing the port on the backup product.  As a result, the name of the virtual directory folder, which usually matches the port number for that virtual directory, did not match.  Perhaps the install looked for a virtual directory via the port number.&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/506348479187595625/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=506348479187595625" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/506348479187595625?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/506348479187595625?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2008/08/errors-after-installing-infrastructure.html" title="Errors after installing Infrastructure update for MOSS 2007" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;DEAFQnw4fip7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-8632033267900928811</id><published>2008-04-24T16:29:00.002-04:00</published><updated>2009-06-30T14:31:53.236-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:31:53.236-04:00</app:edited><title>SharePoint Error:  Access web datasheet is attempting to retrieve data from a different domain.</title><content type="html">&lt;p&gt;A user reported this error today on a custom list built using the Datasheet view.  We both could open the view, but as soon as any changes were made, the error would popup:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Access web datasheet is attempting to retrieve data from a different domain...&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I had recently moved the site collection from a server (let's call it Terrance) to a new server (let's call it Phillip).  I have to assume that when the datasheet view was trying to save changes, it was posting to http://terrance... instead of http://phillip...&lt;/p&gt;  &lt;p&gt;I did some searching and found the answer:  Alternate Access Mappings.  You'll find this in SharePoint Central Administration, under Operations, and Global Configuration.&lt;/p&gt;  &lt;p&gt;I needed to add a new Internal URL for http://terrance for the default zone, which has a public URL of http://phillip&lt;/p&gt;  &lt;p&gt;According to Microsoft's documentation, when someone visits the site using the internal URL, the the public URL for the zone will be returned to the browser.  So, visiting http://terrance/default.aspx, returns http://phillip/default.aspx in the address bar of the browser and the page that exists there.&lt;/p&gt;  &lt;p&gt;Adding this Alternate Access Mapping immediately solved the problem the datasheet view was having.&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/8632033267900928811/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=8632033267900928811" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/8632033267900928811?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/8632033267900928811?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2008/04/sharepoint-error-access-web-datasheet.html" title="SharePoint Error:  Access web datasheet is attempting to retrieve data from a different domain." /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>8</thr:total></entry><entry gd:etag="W/&quot;DEAEQ34zfSp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-6573939202288502480</id><published>2008-04-24T15:46:00.002-04:00</published><updated>2009-06-30T14:31:42.085-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:31:42.085-04:00</app:edited><title>Specified Cast is Invalid using LINQ to SQL</title><content type="html">&lt;p&gt;I found a helpful troubleshooting option when debugging an error in some LINQ to SQL code.&lt;/p&gt;  &lt;p&gt;I have a custom class in my designer called &lt;strong&gt;ActualHoursData&lt;/strong&gt; and it has a few properties.  This is not auto-generated from the designer but rather is used as a class to hold results from a method call to the database.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/kpespisa/SBDjfld9hbI/AAAAAAAAAlo/05VLY8Q62bY/s1600-h/image%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="147" alt="image" src="http://lh4.ggpht.com/kpespisa/SBDjgld9hcI/AAAAAAAAAlw/Vwm4qZKBx9k/image_thumb.png?imgmax=800" width="203" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I have a simple ASP:Repeater on a Web Form bound to a LINQ to SQL method result that is essentially a collection of this class.&lt;/p&gt;  &lt;p&gt;When I opened the Web form in a browser, I kept getting the "Specified Cast is Invalid" error, and the stack trace showed the error occurred during the databind.&lt;/p&gt;  &lt;p&gt;I couldn't easily tell which column from the database was causing the issue, and as far as I could tell, the data types were correct.  But I discovered that I can set each property's type to &lt;strong&gt;System.Object&lt;/strong&gt;, instead of System.Decimal, and the code runs fine.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/kpespisa/SBDjhld9hdI/AAAAAAAAAl4/rqpvuIFZepQ/s1600-h/image%5B13%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="316" alt="image" src="http://lh4.ggpht.com/kpespisa/SBDjild9heI/AAAAAAAAAmA/xebpiUkJe1U/image_thumb%5B5%5D.png?imgmax=800" width="213" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I was then able to revert each property's type back to the expected specific type, and I found which property that was really causing the problem.&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/6573939202288502480/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=6573939202288502480" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/6573939202288502480?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/6573939202288502480?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2008/04/specified-cast-is-invalid-using-linq-to.html" title="Specified Cast is Invalid using LINQ to SQL" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/kpespisa/SBDjgld9hcI/AAAAAAAAAlw/Vwm4qZKBx9k/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEENR309fSp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-3327564649789237657</id><published>2008-04-18T13:18:00.002-04:00</published><updated>2009-06-30T14:31:36.365-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:31:36.365-04:00</app:edited><title>Using WrenSoft's ZoomSearch engine on an ASP.NET Web site</title><content type="html">&lt;p&gt;&lt;a href="http://www.wrensoft.com/" target="_blank"&gt;Wrensoft&lt;/a&gt; makes a very affordable and easy to use search engine that you can plug into your existing Web site.  There are a few versions that are supported directly (ASP, CGI, and Javascript), but you can also use it on an ASP.NET Web site.&lt;/p&gt;  &lt;p&gt;There are some &lt;a href="http://www.wrensoft.com/zoom/support/aspdotnet.html" target="_blank"&gt;instructions&lt;/a&gt; located on Wrensoft's website, which will help you build a basic search.aspx page for querying your website.  However, if you want to integrate the search form into your own theme or site with masterpages, you'll need to take another approach.&lt;/p&gt;  &lt;p&gt;The key is to use an asp:Literal control, and place it wherever you'd like the search results to appear.  You can then build your search.aspx page just like any other themed page on your site and consider the Literal control to act like a 'Search results' control.&lt;/p&gt;  &lt;p&gt;Using the code provided by wrensoft we'll write the output to that Literal control instead of the Response stream.&lt;/p&gt;  &lt;p&gt;First, add your literal wherever you want the results to appear.&lt;/p&gt;  &lt;div    style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px;  padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid;  background-font-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;   &lt;div    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;     &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;p&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:Literal&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="ZoomSearch"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="server"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;asp:Literal&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;p&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Then insert the code below (written in VB) in the Page_Load event.  Note the code is copied from wrensoft's page, but I've changed the last line to take the results from the CGI search and place them into the asp:Literal&lt;/p&gt;

&lt;div    style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px;  padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid;  height: 266px; background-font-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;
 &lt;div    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;
   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#008000;"&gt;'Code from Wrensoft.com:  http://www.wrensoft.com/zoom/support/aspdotnet.html#vbdotnet&lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt;  &lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; paramStr &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;String&lt;/span&gt; = &lt;span style="color:#006080;"&gt;""&lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; parampos &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;Integer&lt;/span&gt; = Request.RawUrl.IndexOf(&lt;span style="color:#006080;"&gt;"?"&lt;/span&gt;)&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;If&lt;/span&gt; (parampos &amp;gt;= 0) &lt;span style="color:#0000ff;"&gt;Then&lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt;             paramStr = Request.RawUrl.Substring((parampos + 1))&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;If&lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; psi &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; ProcessStartInfo = &lt;span style="color:#0000ff;"&gt;New&lt;/span&gt; ProcessStartInfo&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt;         psi.FileName = Server.MapPath(&lt;span style="color:#006080;"&gt;"~/search/search.cgi"&lt;/span&gt;)&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt;         psi.EnvironmentVariables(&lt;span style="color:#006080;"&gt;"REQUEST_METHOD"&lt;/span&gt;) = &lt;span style="color:#006080;"&gt;"GET"&lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt;         psi.EnvironmentVariables(&lt;span style="color:#006080;"&gt;"QUERY_STRING"&lt;/span&gt;) = paramStr&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt;         psi.EnvironmentVariables(&lt;span style="color:#006080;"&gt;"REMOTE_ADDR"&lt;/span&gt;) = Request.ServerVariables(&lt;span style="color:#006080;"&gt;"REMOTE_ADDR"&lt;/span&gt;)&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt;         psi.RedirectStandardInput = &lt;span style="color:#0000ff;"&gt;False&lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt;         psi.RedirectStandardOutput = &lt;span style="color:#0000ff;"&gt;True&lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;  15:&lt;/span&gt;         psi.UseShellExecute = &lt;span style="color:#0000ff;"&gt;False&lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; proc &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; Process = Process.Start(psi)&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;  17:&lt;/span&gt;         proc.StandardOutput.ReadLine()&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;Dim&lt;/span&gt; zoom_results &lt;span style="color:#0000ff;"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;String&lt;/span&gt; = proc.StandardOutput.ReadToEnd&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;  19:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;' read from stdout &lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;  20:&lt;/span&gt;         proc.WaitForExit()&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:white;"&gt;&lt;span style="color:#606060;"&gt;  21:&lt;/span&gt;         &lt;span style="color:#008000;"&gt;' Print the output &lt;/span&gt;&lt;/pre&gt;

   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#606060;"&gt;  22:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;Me&lt;/span&gt;.ZoomSearch.Text = zoom_results&lt;/pre&gt;
 &lt;/div&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/3327564649789237657/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=3327564649789237657" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/3327564649789237657?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/3327564649789237657?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2008/04/using-wrensoft-zoomsearch-engine-on.html" title="Using WrenSoft&amp;#39;s ZoomSearch engine on an ASP.NET Web site" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEENQH44eyp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-6648136966514106399</id><published>2008-02-06T10:06:00.002-05:00</published><updated>2009-06-30T14:31:31.033-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:31:31.033-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint" /><title>Sorting DataView in SharePoint</title><content type="html">&lt;p&gt;Recently I was trying to connect a DataView Web Part to another Web Part containing sort options, so I could present a view of names and phone numbers and let the end-user choose how they'd like the view sorted.&lt;/p&gt;  &lt;p&gt;Seems simple enough, right?&lt;/p&gt;  &lt;p&gt;Maybe there's an easier way, but twice I've been trapped by the same idiosyncrasy in XSL sorting.  &lt;/p&gt;  &lt;p&gt;When you add a DataView Web Part in SharePoint designer, the XSL code is generated for you.  If you specify a sort for your DataView, for example a sort by 'Name', you'll see something similar as your xsl-sort tag:&lt;/p&gt;  &lt;div&gt;   &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;xsl:sort&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;select&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Name"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;order&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="ascending"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;To make it dynamic, I connected the Web Parts and passed a parameter from my sort options Web Part to my DataView Web Part.  The parameter was called SortOrder, so I assumed I could just change the select attribute to $SortOrder and it would sort by Name or Phone depending on what the user had selected.&lt;/p&gt;

&lt;p&gt;It turns out this does not work, and the workaround is to use this code instead in the select attribute:&lt;/p&gt;

&lt;div&gt;
 &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;xsl:sort&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;select&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="*[name()=$SortOrder]"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;order&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="ascending"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;That worked great for me the first time I ran into this problem.  The XML that was feeding the DataView had the data stored in  elements like so:&lt;/p&gt;

&lt;div&gt;
 &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;People&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
 &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Person&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Joe Smith&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
   &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Phone&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;999-999-9999&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Phone&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
 &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Person&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;People&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;But what if the data is stored in attributes instead?  This is the case when you feed your DataView Web Part with another SharePoint List.  The data comes over in a form somewhat like this (thanks to David Wise's &lt;a href="http://www.sharepointblogs.com/dwise/archive/2008/01/10/accessing-sharepoint-list-data-as-xml.aspx" target="_blank"&gt;post&lt;/a&gt; for help in discovering this)&lt;/p&gt;

&lt;div&gt;
 &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;People&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
 &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Person&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="Joe Smith"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Phone&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="999-999-9999"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
 &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Person&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;People&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;In this case, you'll need to use the following select attribute to make this work (note the @ attribute sign)&lt;/p&gt;

&lt;div&gt;
 &lt;pre    style="padding-right: 0px; padding-left: 0px;  padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px;  border-right-style: none; border-left-style: none; background- border-bottom-style: nonefont-family:consolas, 'Courier New', courier, monospace;font-size:8pt;color:#f4f4f4;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;xsl:sort&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;select&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="@*[name()=$SortOrder]"&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;order&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="ascending"&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;I'm no expert in XSL, but essentially this says to me select all attributes with an attribute name of $SortOrder.&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/6648136966514106399/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=6648136966514106399" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/6648136966514106399?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/6648136966514106399?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2008/02/sorting-dataview-in-sharepoint.html" title="Sorting DataView in SharePoint" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEEDRno6fCp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-117337449351724695</id><published>2007-03-08T12:21:00.001-05:00</published><updated>2009-06-30T14:31:17.414-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:31:17.414-04:00</app:edited><title>Daylight Savings Time issues</title><content type="html">&lt;p&gt;We realized late last week that this DST change on 3/11/2007 is going to affect individual calendar entries in Lotus Notes and it can't be fixed simply by changing the clocks manually.  Doh!  The affected calendar entries will show meetings as one hour off their intended times when looking at them in the calendar view&lt;/p&gt; &lt;p&gt;Anyway, any calendar entry created from a computer that does not have the Daylight Savings Time patch installed (i.e. does not recognize the &lt;a href="http://www.timeanddate.com/time/dstevents.html"&gt;new Time Zones&lt;/a&gt;).  &lt;/p&gt; &lt;p&gt;Calendar entries in Notes have a field called StartTimeZone that tells you the time zone code used when the meeting or appointment was scheduled.  On unpatched machines this time zone is different than on patched machines, so this lets us spot calendar entries that will show the wrong time in the calendar view.&lt;/p&gt; &lt;p&gt;I added this column to the Calendar view in our mail template and now all of our users can spot these potentially wrong meetings easily.  Make sure it is the right-most column which has the "Use Value as Color" setting checked, otherwise another column to the right will override these color highlights.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;span style="color:#0000ff;"&gt;REM {this color column is used only if the user has not saved their mail preferences};
badtimezonelist := "Z=6$DO=1$DL=4 1 1 10 -1 1$ZX=18$ZN=Central":"Z=5$DO=1$DL=4 1 1 10 -1 1$ZX=25$ZN=Eastern":"Z=7$DO=1$DL=4 1 1 10 -1 1$ZX=41$ZN=Mountain"
meeting := 194:229:255:0:0:0;
appointment := 197:255:228:0:0:0;
reminder := 250:236:218:0:0:0;
event := 240:255:215:0:0:0;
anniversary := 255:232:246:0:0:0;
todo := 197:255:255:0:0:0;
warning := 255:48:0:0:0:0;
withindates := @If(@Elements(@Keywords(@Text(CalendarDateTime); @Text(@Explode([03/11/2007 - 03/30/2007])))) = 0; @False; @True);
@If(@IsMember(StartTimeZone; badtimezonelist) &amp;amp; withindates; warning;
@LowerCase(form) = "task" todo;
AppointmentType = "0" appointment;
AppointmentType = "1" anniversary;
AppointmentType = "2" event;
AppointmentType = "3" meeting;
AppointmentType = "4" reminder; "")&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;span style="color:#000000;"&gt;As many sites recommend, we also told our uses to check all entries between March 11th and April 1st, just as a precaution.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;The code above only takes into consideration calendar entries that were scheduled in the Eastern, Central, and Mountain timezones.  There are a few other timezones implementing this early change, but I wasn't able to find the codes for them.  You can find the codes by viewing Document Properties on any calendar entry set for another timezone, and then checking the StartTimeZone field.  I'd assume if the $DL section is set to 4 1 1 10 -1, then you've found the code for an unpatched version of that time zone.  Then just add that code to the text list called "badtimezonelist".&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/117337449351724695/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=117337449351724695" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/117337449351724695?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/117337449351724695?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2007/03/daylight-savings-time-issues.html" title="Daylight Savings Time issues" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEECRnY6fCp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-117250443673258152</id><published>2007-02-26T10:40:00.001-05:00</published><updated>2009-06-30T14:31:07.814-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:31:07.814-04:00</app:edited><title>Upgrading Sharepoint v3.0 SSEE to SQL 2005 Standard</title><content type="html">&lt;p&gt;I've been working hard the past few months to prepare for our move from Lotus Notes to Exchange.  One of the key tasks of that project is finding a new home for the hundreds of the Lotus Notes databases/apps we currently use.  &lt;/p&gt; &lt;p&gt;Many of the simple Notes apps can be redesigned quickly and effectively using Microsoft SharePoint.  This new version is so good, it's moved from test server to production server overnight!&lt;/p&gt; &lt;p&gt;Unfortunately, I loaded up SharePoint v3 as a stand-alone server which means it installed the SQL Server Express Edition, aka Windows Internal Database, for its database server.  SSEE is nice in that it's free and has no size limitations.  However, you can't easily back it up (no SQL agent) and with the use of SharePoint growing so rapidly at my company I decided I'd better upgrade this to SQL Server 2005 as soon as possible.  &lt;/p&gt; &lt;p&gt;The searched all over the net for solutions, but couldn't find anyone who had written about moving from SSEE to SQL Server 2005.  The best instructions I could find were for Sharepoint 2.0 on &lt;a href="http://office.microsoft.com/en-us/winsharepointadmin/HA100363461033.aspx"&gt;moving from WMSDE to SQL 2005&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I tried these instructions thinking that they'd be close enough to get the job done. I didn't realize that a key step would get me stuck at a point of no return. The section "Reconnecting to the Configuration Database and restarting the Virtual Servers" expects that you can connect back to the configuration database using Sharepoint Central Admin, but you can't at that point. It has been moved to a different sql server instance and it won't be found. Perhaps there's a way to change that by some hack, but I wasn't about to start messing around. &lt;/p&gt; &lt;p&gt;After panicking for a few moments, and kicking myself for not taking backups of the data other than the mdf and ldf files, I finally did get this to work. &lt;/p&gt;&lt;p&gt;First I uninstalled Sharepoint entirely, and then uninstalling Windows Internal Database using these instructions from &lt;a href="http://www.sharepointblogs.com/jemm/archive/2007/01/27/18653.aspx"&gt;Jemm's Sharepoint Blog&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Next, I reinstalled Sharepoint v3 and chose the Advanced options and setup the server as a server farm.  I went through the wizard and connected the server to my SQL 2005 Standard default instance.   &lt;/p&gt;&lt;p&gt;When I got to the screen asking about the configuration database, I thought I might be able to connect it to the previously setup database from SSEE.  Using the instructions in the &lt;a href="http://office.microsoft.com/en-us/winsharepointadmin/HA100363461033.aspx"&gt;WMSDE to SQL 2005 technote&lt;/a&gt; I had gotten the SSEE databases attached to my SQL 2005 Standard edition, but the wizard wouldn't let me connect to the existing database, so I had to create a new one. &lt;/p&gt;&lt;p&gt;I finished the install and then started to configure the Sharepoint server using the SharePoint Central Administrator.  I got to the point where you create a content database and at that point I just specified the existing one.  SharePoint didn't complain and all the sites and data were in tact. &lt;/p&gt;&lt;p&gt;Thankfully that was all I needed to do.  To sum up, the processed I followed was this: &lt;/p&gt;&lt;ol&gt; &lt;li&gt;Move the SharePoint database files out of the SSEE directory and attach them to the SQL Server 2005 Standard Edition instance.&lt;/li&gt; &lt;li&gt;Uninstall SharePoint and SSEE&lt;/li&gt; &lt;li&gt;Reinstall SharePoint, specifying Advanced - Web Fronted server instead of stand alone server&lt;/li&gt; &lt;li&gt;Finish install, creating a new configuration database&lt;/li&gt; &lt;li&gt;Specify your old content database(s) using SharePoint Central Administration.&lt;/li&gt;&lt;/ol&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/117250443673258152/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=117250443673258152" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/117250443673258152?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/117250443673258152?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2007/02/upgrading-sharepoint-v30-ssee-to-sql.html" title="Upgrading Sharepoint v3.0 SSEE to SQL 2005 Standard" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total></entry><entry gd:etag="W/&quot;DEECQHozcSp7ImA9WxJVE0U.&quot;"><id>tag:blogger.com,1999:blog-27451825.post-115264674043821985</id><published>2006-07-11T15:39:00.001-04:00</published><updated>2009-06-30T14:31:01.489-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-30T14:31:01.489-04:00</app:edited><title>Google Site Maps and Http Handlers Part 2</title><content type="html">&lt;p&gt;In my last post I discussed using the &lt;remove&gt; method for the &lt;httphandlers&gt; section of the web.config file.  The remove element comes in handy if you’ve added an HttpHandler to the root of your Web site, but don’t want that handler to be loaded in sites below the root Web site.&lt;/p&gt;
&lt;p&gt;Today I found a better way to control inheritance of the Http Handlers.  The &amp;lt;add&amp;gt; element for Http Handlers has an attribute, validate, which tells ASP.NET whether it should load the class immediately or wait until a request comes.  By default the value is set to &lt;strong&gt;true&lt;/strong&gt;.  Setting validate to false prevents the class from being loaded and thus eliminates the error. &lt;/p&gt;
&lt;p style="margin-right: 0px"&gt;In the case of the Google Site Maps handler, we had the following where validate was defaulting to true&lt;/p&gt;
&lt;blockquote style="margin-right: 0px"&gt;
&lt;p style="margin-right: 0px"&gt;&amp;lt;httpHandlers&amp;gt;
&amp;lt;add verb="*" path="googlesitemap.axd" type="Newtonsoft.GoogleSitemap.GoogleSitemapHandler, Newtonsoft.GoogleSitemap"/&amp;gt;
&amp;lt;/httpHandlers&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;We can change the add element to this to prevent ASP.NET from loading the googlesitemap.dll until we browse to googlesitemap.axd.
&lt;/p&gt;&lt;blockquote style="margin-right: 0px"&gt;
&lt;p style="margin-right: 0px"&gt;&amp;lt;httpHandlers&amp;gt;
&amp;lt;add verb="*" path="googlesitemap.axd" type="Newtonsoft.GoogleSitemap.GoogleSitemapHandler, Newtonsoft.GoogleSitemap" &lt;strong&gt;validate="false”&lt;/strong&gt;/&amp;gt;
&amp;lt;/httpHandlers&amp;gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Of course within your subsites, ASP.NET will generate an error if you try to browse to &lt;a href="http://yourdomain.com/subsite/googlesitemap.axd"&gt;http://yourdomain.com/subsite/googlesitemap.axd&lt;/a&gt;.  Ideally I wish there were an attribute like&lt;strong&gt; inheritance=false&lt;/strong&gt; but until then this gets the job done.&lt;/p&gt;</content><link rel="replies" type="application/atom+xml" href="http://partialclass.blogspot.com/feeds/115264674043821985/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=27451825&amp;postID=115264674043821985" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/115264674043821985?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/27451825/posts/default/115264674043821985?v=2" /><link rel="alternate" type="text/html" href="http://partialclass.blogspot.com/2006/07/google-site-maps-and-http-handlers_11.html" title="Google Site Maps and Http Handlers Part 2" /><author><name>Ken Pespisa</name><uri>http://www.blogger.com/profile/16686695173899126050</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry></feed>
