<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6933785</id><updated>2011-04-21T14:50:54.238-04:00</updated><title type='text'>Kevin's Cache</title><subtitle type='html'>On Microsoft developer technology and other random bits &amp; pieces.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6933785.post-7754577948176486592</id><published>2007-09-05T08:38:00.000-04:00</published><updated>2007-09-05T08:46:07.543-04:00</updated><title type='text'>Making Silage</title><content type='html'>Did you know silos are expensive? So we make a pile right on the ground. To keep it from spoiling, you have to drive it over it with heavy tractors and compact it again &amp; again. It helps to have a nice new tractor like this one! :-) No, it's not ours; we rented it.&lt;br /&gt;&lt;br /&gt;&lt;A HREF='http://3.bp.blogspot.com/_z8qsrsymst0/Rt6jR81byiI/AAAAAAAAAgo/McqVagTydBc/s1600-h/IMG_2087.JPG'&gt;&lt;IMG SRC='http://3.bp.blogspot.com/_z8qsrsymst0/Rt6jR81byiI/AAAAAAAAAgo/McqVagTydBc/s320/IMG_2087.JPG' border=0 alt='' id='BLOGGER_PHOTO_ID_' style='clear:both; margin:0 0 10px 10px;'&gt;&lt;/A&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;This is how a silage pile 330x35x12 appears from the driver's seat.&lt;br /&gt;&lt;br /&gt;&lt;A HREF='http://4.bp.blogspot.com/_z8qsrsymst0/Rt6jSM1byjI/AAAAAAAAAgw/exXmeMDe-jc/s1600-h/IMG_2093.JPG'&gt;&lt;IMG SRC='http://4.bp.blogspot.com/_z8qsrsymst0/Rt6jSM1byjI/AAAAAAAAAgw/exXmeMDe-jc/s320/IMG_2093.JPG' border=0 alt='' id='BLOGGER_PHOTO_ID_' style='clear:both; margin:0 0 10px 10px;'&gt;&lt;/A&gt;&amp;nbsp;&lt;div style='clear:both; text-align:RIGHT'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-7754577948176486592?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/7754577948176486592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=7754577948176486592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/7754577948176486592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/7754577948176486592'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2007/09/making-silage.html' title='Making Silage'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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://3.bp.blogspot.com/_z8qsrsymst0/Rt6jR81byiI/AAAAAAAAAgo/McqVagTydBc/s72-c/IMG_2087.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6933785.post-115569830083359713</id><published>2006-08-15T23:17:00.000-04:00</published><updated>2006-08-15T23:23:51.330-04:00</updated><title type='text'>Cows!</title><content type='html'>&lt;A HREF='http://photos1.blogger.com/blogger/4591/401/640/IMG_0057.jpg'&gt;&lt;IMG SRC='http://photos1.blogger.com/blogger/4591/401/320/IMG_0057.jpg' border=0 alt='' style='clear:all;float:left;margin: 0px 10px 10px 0px; cursor:hand'&gt;&lt;/A&gt;&amp;nbsp;&lt;br /&gt;Yep, we have heifers now. And the children are fascinated. Looks like a cow is too!&amp;nbsp;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-115569830083359713?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/115569830083359713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=115569830083359713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/115569830083359713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/115569830083359713'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2006/08/cows.html' title='Cows!'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-115325815922692253</id><published>2006-07-18T17:17:00.000-04:00</published><updated>2006-07-18T17:29:20.520-04:00</updated><title type='text'>SmartFormat the entire solution</title><content type='html'>At work, we recently decided to all use the same c# formatting options in Visual Studio 2005. (Yes, it would be nice to have hooks in the version control package so we each could see the source with our own formatting, but svn doesn't have that.) So, I've been looking for an easy way reformat thousands of files without opening each file manually. I finally gave up looking and cobbled together a quick macro. Here it is. &lt;br /&gt;&lt;br /&gt;Let me know if you improve it, ok?&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Option Strict Off&lt;br /&gt;Option Explicit Off&lt;br /&gt;&lt;br /&gt;Imports EnvDTE&lt;br /&gt;Imports System&lt;br /&gt;Imports System.IO&lt;br /&gt;Imports System.text&lt;br /&gt;&lt;br /&gt;Public Module Tools&lt;br /&gt;&lt;br /&gt;    Sub SmartFormatSolution()&lt;br /&gt;        Dim project As Project&lt;br /&gt;        Dim projects As Projects = DTE.Solution.Projects()&lt;br /&gt;&lt;br /&gt;        For Each project In projects&lt;br /&gt;            Dim pi As ProjectItems = project.ProjectItems()&lt;br /&gt;            If Not (pi Is Nothing) Then&lt;br /&gt;                SmartFormatProjectItems(pi, Level + 1)&lt;br /&gt;            End If&lt;br /&gt;        Next&lt;br /&gt;        MsgBox("Reformat Done", MsgBoxStyle.Information)&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Sub SmartFormatProject()&lt;br /&gt;        Dim projects As System.Array = DTE.ActiveSolutionProjects()&lt;br /&gt;        If projects.Length &gt; 0 Then&lt;br /&gt;            Dim proj As Project = CType(projects.GetValue(0), EnvDTE.Project)&lt;br /&gt;            Dim pi As ProjectItems = proj.ProjectItems()&lt;br /&gt;            If Not (pi Is Nothing) Then&lt;br /&gt;                SmartFormatProjectItems(pi, Level + 1)&lt;br /&gt;            End If&lt;br /&gt;        Else&lt;br /&gt;            MsgBox("No project selected", MsgBoxStyle.Critical)&lt;br /&gt;        End If&lt;br /&gt;        MsgBox("Reformat Done", MsgBoxStyle.Information)&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Sub SmartFormatProjectItems(ByVal ProjItems As ProjectItems, ByVal Level As Integer)&lt;br /&gt;        Dim ProjItem As ProjectItem&lt;br /&gt;        For Each ProjItem In ProjItems&lt;br /&gt;            If InStrRev(ProjItem.Name, ".cs") &lt;&gt; 0 Then&lt;br /&gt;                Dim ActiveWin As Window = ProjItem.Open(Constants.vsViewKindCode)&lt;br /&gt;                ActiveWin.Activate()&lt;br /&gt;                Dim txtDoc As TextDocument = DTE.ActiveDocument.Object("TextDocument")&lt;br /&gt;                Dim StartPoint As EditPoint = txtDoc.StartPoint.CreateEditPoint&lt;br /&gt;                Dim EndPoint As EditPoint = txtDoc.EndPoint.CreateEditPoint&lt;br /&gt;                EndPoint.SmartFormat(StartPoint)&lt;br /&gt;                ActiveWin.Close(vsSaveChanges.vsSaveChangesYes)&lt;br /&gt;            End If&lt;br /&gt;            ' Recurse if the project item has sub-items...&lt;br /&gt;            Dim projitems2 As ProjectItems = ProjItem.ProjectItems()&lt;br /&gt;            Dim notsubcoll As Boolean = projitems2 Is Nothing&lt;br /&gt;            If Not notsubcoll Then&lt;br /&gt;                SmartFormatProjectItems(projitems2, Level + 1)&lt;br /&gt;            End If&lt;br /&gt;        Next&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;End Module&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-115325815922692253?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/115325815922692253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=115325815922692253' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/115325815922692253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/115325815922692253'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2006/07/smartformat-entire-solution.html' title='SmartFormat the entire solution'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-115262757850798747</id><published>2006-07-11T10:18:00.000-04:00</published><updated>2006-07-11T10:22:57.093-04:00</updated><title type='text'>Rafting on the Juniata River 2006</title><content type='html'>&lt;A HREF='http://photos1.blogger.com/blogger/4591/401/640/collage.jpg'&gt;&lt;IMG SRC='http://photos1.blogger.com/blogger/4591/401/320/collage.jpg' border=0 alt='' style='clear:all;margin: 0px 10px 10px 0px; cursor:hand'&gt;&lt;/A&gt;&lt;br /&gt;&lt;br /&gt;This past weekend 74 fathers &amp; sons traveled the Juniata River in homemade rafts. Our goal was to spend time with our sons in the outdoors, creating memories and learning to know them better. However, my 9-year old spent most of the time on the river swimming or on inner tubes like this one while my preferred place was on the raft! We took our neighbers, the Bergs, along as guests. It was a rough-and-tough father-son weekend and the boys loved it!&lt;br /&gt;&lt;br /&gt;We even had a visit from the PA Game Commission to check if we had one life-vest per person. Thankfully, most of us did. The $70/person fines for those who were short was a test of character and submission to authority, for sure!&lt;br /&gt;&lt;br /&gt;You can see all my digital pics at &lt;a href="http://www.flickr.com/photos/10495407@N00/sets/72157594193962163/"&gt;Flickr&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-115262757850798747?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.flickr.com/photos/10495407@N00/sets/72157594193962163/' title='Rafting on the Juniata River 2006'/><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/115262757850798747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=115262757850798747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/115262757850798747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/115262757850798747'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2006/07/rafting-on-juniata-river-2006_11.html' title='Rafting on the Juniata River 2006'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-113677167227720908</id><published>2006-01-08T20:12:00.000-05:00</published><updated>2006-01-08T20:54:33.176-05:00</updated><title type='text'>Visual SourceSafe RSS Generator Bug Fix</title><content type='html'>I've downloaded Greg Reinacker's c# source to generate RSS feeds from Visual SourceSafe and improved it by reducing the working set. Following is the unified diff. (Be careful of wrapped lines when you select it into a text file.) If you need a tool to apply this diff, I recommend Tortise Merge which is a part of &lt;a href="http://tortoisesvn.tigris.org/"&gt;TortiseSVN&lt;/a&gt; which is a Windows shell extension for &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;Index: GenRss.cs&lt;br /&gt;===================================================================&lt;br /&gt;--- GenRss.cs (revision 12)&lt;br /&gt;+++ GenRss.cs (working copy)&lt;br /&gt;@@ -91,29 +91,37 @@&lt;br /&gt;     foreach (SourceSafeTypeLib.IVSSVersion ver in versions)&lt;br /&gt;     {&lt;br /&gt;      i++;&lt;br /&gt;-     if (i &gt; maxItems)&lt;br /&gt;-      continue;&lt;br /&gt; &lt;br /&gt;-     string action = ver.Action;&lt;br /&gt;-     string file = ver.VSSItem.Name;&lt;br /&gt;-     string user = ver.Username;&lt;br /&gt;-     string vernum = ver.VersionNumber.ToString();&lt;br /&gt;-     string comment = ver.Comment;&lt;br /&gt;+     // Kevin Greiner &lt;greinerk@gmail.com&gt; (2/22/2005) The following loop is&lt;br /&gt;+     // specifically written to allow the foreach to completely finish. Testing has&lt;br /&gt;+     // shown that aborting the foreach prematurely increases the working set&lt;br /&gt;+     // 10-fold.&lt;br /&gt;+     if (i &lt;= maxItems) &lt;br /&gt;+     {&lt;br /&gt;+&lt;br /&gt;+      string action = ver.Action;&lt;br /&gt;+      string file = ver.VSSItem.Name;&lt;br /&gt;+      string user = ver.Username;&lt;br /&gt;+      string vernum = ver.VersionNumber.ToString();&lt;br /&gt;+      string comment = ver.Comment;&lt;br /&gt;     &lt;br /&gt;-     DateTime dt = ver.Date;&lt;br /&gt;+      DateTime dt = ver.Date;&lt;br /&gt; &lt;br /&gt;-     w.WriteStartElement("item");&lt;br /&gt;-     w.WriteElementString("title", String.Format("{0}/{1}", action, file));&lt;br /&gt;-     w.WriteStartElement("guid");&lt;br /&gt;-     w.WriteAttributeString("isPermaLink","false");&lt;br /&gt;-     w.WriteString(String.Format("{0}:{1}:{2}", file, vernum, action));&lt;br /&gt;-     w.WriteEndElement();&lt;br /&gt;-     w.WriteElementString("description", String.Format("{0}",comment));&lt;br /&gt;-     w.WriteElementString("pubDate", dt.ToUniversalTime().ToString("r"));&lt;br /&gt;-     w.WriteElementString("creator", "http://purl.org/dc/elements/1.1/", user);&lt;br /&gt;-     w.WriteEndElement(); // item&lt;br /&gt;+      w.WriteStartElement("item");&lt;br /&gt;+      w.WriteElementString("title", String.Format("{0}/{1}", action, file));&lt;br /&gt;+      w.WriteStartElement("guid");&lt;br /&gt;+      w.WriteAttributeString("isPermaLink","false");&lt;br /&gt;+      w.WriteString(String.Format("{0}:{1}:{2}", file, vernum, action));&lt;br /&gt;+      w.WriteEndElement();&lt;br /&gt;+      w.WriteElementString("description", String.Format("{0}",comment));&lt;br /&gt;+      w.WriteElementString("pubDate", dt.ToUniversalTime().ToString("r"));&lt;br /&gt;+      w.WriteElementString("creator", "http://purl.org/dc/elements/1.1/", user);&lt;br /&gt;+      w.WriteEndElement(); // item&lt;br /&gt;+     &lt;br /&gt;+     }&lt;br /&gt;+     &lt;br /&gt;+     Marshal.ReleaseComObject(ver);&lt;br /&gt; &lt;br /&gt;-     Marshal.ReleaseComObject(ver);&lt;br /&gt;     }&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-113677167227720908?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.rassoc.com/gregr/weblog/archive.aspx?post=747' title='Visual SourceSafe RSS Generator Bug Fix'/><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/113677167227720908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=113677167227720908' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/113677167227720908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/113677167227720908'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2006/01/visual-sourcesafe-rss-generator-bug.html' title='Visual SourceSafe RSS Generator Bug Fix'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6933785.post-111430928334584602</id><published>2005-04-23T22:19:00.000-04:00</published><updated>2005-04-23T22:21:23.346-04:00</updated><title type='text'>Sold the cycle</title><content type='html'>I sold the cycle last weekend. A young man bought it for his wife to ride. Talk about mixed feelings; I'm sad to see it go but it was definitely time. I just couldn't ride it anymore without being semi-paralyzed by considering the consequences of a serious wreck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-111430928334584602?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/111430928334584602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=111430928334584602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/111430928334584602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/111430928334584602'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2005/04/sold-cycle.html' title='Sold the cycle'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-111430606416089988</id><published>2005-04-23T21:27:00.000-04:00</published><updated>2005-04-23T21:27:44.160-04:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/img/9/2804/1024/IMG_0283_edited.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/9/2804/400/IMG_0283_edited.jpg'&gt;&lt;/a&gt;&lt;br /&gt;A goofy grin! Remember being 8? My dad always told me not to make silly faces because my face might just *stay* that way....and I believed him, for a while anyway.&amp;nbsp;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-111430606416089988?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/111430606416089988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=111430606416089988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/111430606416089988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/111430606416089988'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2005/04/goofy-grin-remember-being-8-my-dad.html' title=''/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-111430513407167644</id><published>2005-04-23T21:12:00.000-04:00</published><updated>2005-04-23T21:12:14.070-04:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/img/9/2804/1024/project.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/9/2804/400/project.jpg'&gt;&lt;/a&gt;&lt;br /&gt;An interesting, if cynical, view of project management and customer communications!&amp;nbsp;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-111430513407167644?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/111430513407167644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=111430513407167644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/111430513407167644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/111430513407167644'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2005/04/interesting-if-cynical-view-of-project.html' title=''/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-111114659342674785</id><published>2005-03-18T06:49:00.000-05:00</published><updated>2005-03-18T07:08:37.326-05:00</updated><title type='text'>Dad's new old Christmas present</title><content type='html'>&lt;a href='http://photos1.blogger.com/img/9/2804/1024/IMG_1063.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/9/2804/400/IMG_1063.jpg'&gt;&lt;/a&gt;&lt;br /&gt;Does Dad like his "new" Scout? Shortly after I was born in 1971, Dad bought a new blue &lt;a href="http://cgi.ebay.ca/ws/eBayISAPI.dll?ViewItem&amp;category=84157&amp;item=4536179160&amp;rd=1&amp;ssPageName=WDVW"&gt;International Scout 800B&lt;/a&gt;. When I was 17, he sold it because it was getting very rusty. Of course, now he wishes he had just put it in a barn somewhere!&lt;br /&gt;&lt;br /&gt;A few months ago, my sister saw this 1970 800A Scout on her way to work. The children and Mom all went together to buy it for Dad's Christmas present. It took some work to get it hauled home and running. We had to rebuild the starter, install a new battery and mount a gas tank. But it was worth it. He was very pleasantly surprised.&lt;br /&gt;&lt;br /&gt;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-111114659342674785?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/111114659342674785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=111114659342674785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/111114659342674785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/111114659342674785'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2005/03/dads-new-old-christmas-present.html' title='Dad&apos;s new old Christmas present'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-110849696093005756</id><published>2005-02-15T14:24:00.000-05:00</published><updated>2005-02-15T14:49:20.930-05:00</updated><title type='text'>For Sale: 2001 Suzuki SV-650S</title><content type='html'>Yes, my motorcycle is for sale. It's a 2001 Suzuki SV-650S with 13,000 miles. I've had it for two years and it's time to move on. I've made a few cosmetic modifications to it like removing the rear fender, replacing the rear turn signals, and installing higher clipons from a Honda Hawk GT. The factory 12.5k service (adjusting the valves, basically) was done at the &lt;a href="http://www.trans-amcycles.com/"&gt;local Suzuki dealer, Trans-Am&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.imageshack.us"&gt;&lt;img alt="Image Hosted by ImageShack.us" src="http://img19.exs.cx/img19/9249/leftrear7qi.jpg" width="800" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-110849696093005756?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/110849696093005756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=110849696093005756' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/110849696093005756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/110849696093005756'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2005/02/for-sale-2001-suzuki-sv-650s.html' title='For Sale: 2001 Suzuki SV-650S'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-110847559358379822</id><published>2005-02-15T06:32:00.000-05:00</published><updated>2005-02-15T08:53:13.586-05:00</updated><title type='text'>Visual SourceSafe and RSS</title><content type='html'>I was looking for a way for Visual SourceSafe to tell me that someone has checked in changed files. I found &lt;a href="http://www.codeproject.com/vbscript/ssmonitor.asp"&gt;SSMonitor&lt;/a&gt; (email notification) and &lt;a href="http://www.codeproject.com/vb/net/LmVMS.asp"&gt;Visual SourceSafe Journal Monitor Service&lt;/a&gt; (email, IM, or custom) but it was &lt;a href="http://www.rassoc.com/gregr/weblog/archive.aspx?post=747"&gt;VSS RSS Generator&lt;/a&gt; that really delivered a great solution: an RSS feed that listed the check-in changes.&lt;br /&gt;&lt;br /&gt;VSS RSS Generator runs as a Windows service (nice) but it's very CPU intensive (not nice), consuming about 1.5 minutes of CPU time per database per run. And I had to change some code in the inner foreach loop to reduce the memory footprint from 150MB to 15MB. But in general, it works very well.&lt;br /&gt;&lt;br /&gt;The company I work for uses Bugzilla to track bugs and enhancements. In the check-in comments, we post either the bug number or a URL to the bug like: http://bugzilla/show_bug.cgi?id=1186. The next step is to autodetect these URLs and reformat to make them clickable from within an RSS reader.&lt;br /&gt;&lt;br /&gt;I wonder if anyone else has taken the VSS RSS Generator's source and improved it? If so, we should talk. Drop me an email, please...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-110847559358379822?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.rassoc.com/gregr/weblog/archive.aspx?post=747' title='Visual SourceSafe and RSS'/><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/110847559358379822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=110847559358379822' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/110847559358379822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/110847559358379822'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2005/02/visual-sourcesafe-and-rss.html' title='Visual SourceSafe and RSS'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6933785.post-110440948787265702</id><published>2004-12-30T07:24:00.000-05:00</published><updated>2004-12-30T07:29:09.996-05:00</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/img/9/2804/1024/IMG_1134.jpg'&gt;&lt;img border='0' style='border:1px solid #000000; margin:2px' src='http://photos1.blogger.com/img/9/2804/400/IMG_1134.jpg'&gt;&lt;/a&gt;&lt;br /&gt;What did Anika get for Christmas? A "sheep chair"?!? What aunt's don't think of! :)&amp;nbsp;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-110440948787265702?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/110440948787265702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=110440948787265702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/110440948787265702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/110440948787265702'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2004/12/what-did-anika-get-for-christmas-sheep.html' title=''/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-110304336534747546</id><published>2004-12-14T11:49:00.000-05:00</published><updated>2004-12-14T11:56:05.346-05:00</updated><title type='text'>Got a blank MSDN?</title><content type='html'>So I finally get Visual Studio configured almost perfectly and what happens? My wireless flakes out and I had to reinstall Windows. Ugh. Visual Studio, MSDN 2003FEB, Office XP, and much more. Three days later, everything works again and it's even faster. Except that MSDN help is totally blank. No errors but no help either.&lt;br /&gt;&lt;br /&gt;Neither Google's Groups nor Microsoft KnowledgeBase yielded a solution. So after various repairs and re-installs, I called Microsoft Support. Mr. Ted Bechel helped me out and we soon had a solution! And it was easy, if non-obvious. Here it is:&lt;br /&gt;&lt;br /&gt;REGSVR –U C:\Program Files\Common Files\Microsoft Shared\Help\HXDS.DLL&lt;br /&gt;REGSVR C:\Program Files\Common Files\Microsoft Shared\Help\HXDS.DLL&lt;br /&gt;&lt;br /&gt;Nice job, Ted. Thanks again!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-110304336534747546?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/110304336534747546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=110304336534747546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/110304336534747546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/110304336534747546'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2004/12/got-blank-msdn.html' title='Got a blank MSDN?'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-110295668287201087</id><published>2004-12-13T11:43:00.000-05:00</published><updated>2004-12-13T11:51:22.873-05:00</updated><title type='text'>Visual Studio 2003 Solution's Active Item</title><content type='html'>Like a commenter on &lt;a href="http://blogs.msdn.com/shaykatc/archive/2004/02/13/72703.aspx"&gt;Shaykatc's blog&lt;/a&gt;, I wanted a way to not have the Solution Explorer jump around but still &lt;strong&gt;easily&lt;/strong&gt; scroll the Solution Explorer to the current file.&lt;br /&gt;&lt;br /&gt;Turns out, it's pretty easy! Use Tools -&gt; Options -&gt; Keyboard dialog to bind a key to View.TrackActivityinSolutionExplorer. This toggles the setting so hit it twice to turn tracking off again.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-110295668287201087?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/110295668287201087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=110295668287201087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/110295668287201087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/110295668287201087'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2004/12/visual-studio-2003-solutions-active.html' title='Visual Studio 2003 Solution&apos;s Active Item'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-108680809238756880</id><published>2004-06-09T14:59:00.000-04:00</published><updated>2004-06-09T15:08:12.386-04:00</updated><title type='text'>VSFileFinder - version 3</title><content type='html'>As mentioned on the &lt;a href="http://blogs.msdn.com/powertoys/archive/2004/04/20/117196.aspx"&gt;Powertoys WebLog&lt;/a&gt; and on &lt;a href="http://blogs.msdn.com/jledgard/archive/0001/01/01/141752.aspx"&gt;scooblog&lt;/a&gt;, VSFileFinder is a pretty neat tool for Visual Studio 2003.&lt;br /&gt;&lt;br /&gt;June 1, Jonathan released a new version at &lt;a href="http://www.codeproject.com/dotnet/VS_File_Finder.asp?df=100&amp;forumid=35338&amp;select=845728#xx838829xx"&gt;Code Project&lt;/a&gt; (click on "New new version") that includes much better support for keyboard navigation. He also describes how to bind a shortcut key to display the window.&lt;br /&gt;&lt;br /&gt;Back to work...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-108680809238756880?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/108680809238756880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=108680809238756880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108680809238756880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108680809238756880'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2004/06/vsfilefinder-version-3.html' title='VSFileFinder - version 3'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-108672638618036792</id><published>2004-06-08T16:23:00.000-04:00</published><updated>2004-06-08T16:28:33.436-04:00</updated><title type='text'>WinXP WiFi Hiccups Explained</title><content type='html'>Yeah! I just love it when I find a fix to a maddening problem just by reading blogs. Like today, I was reading &lt;a href="http://microsoft.weblogsinc.com/"&gt;The Unofficial Microsoft Weblog&lt;/a&gt; and stumbled across an entry explaining a &lt;a href="http://microsoft.weblogsinc.com/entry/2868755886686398/"&gt;workaround for Windows XP's WiFi random disconnections&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And I thought it was my SMC 2804-WBR!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-108672638618036792?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/108672638618036792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=108672638618036792' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108672638618036792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108672638618036792'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2004/06/winxp-wifi-hiccups-explained.html' title='WinXP WiFi Hiccups Explained'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-108576166228198391</id><published>2004-05-28T12:20:00.000-04:00</published><updated>2004-05-28T12:27:42.280-04:00</updated><title type='text'>Details on source control in Visual Studio 2005 Team Foundation</title><content type='html'>&lt;a href="http://blogs.msdn.com/korbyp/articles/142713.aspx"&gt;Korby Parnell takes notes&lt;/a&gt; on Doug Neumann, the source control PM on the Visual Studio 2005 Team System team, at TechEd2004. He talked about how to manage software configurations with Visual Studio 2005. Lots of interesting details and a very new feature. &lt;br /&gt;&lt;br /&gt;Although I think "shelving" could be easily handled in &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; by using branches. In fact, I was talking to a team member just yesterday about switching away from VSS for precisely this reason. Daily checkins against one's private branch would be a very nice form of backup, too. Then when one is all done, merge against the head.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-108576166228198391?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/108576166228198391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=108576166228198391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108576166228198391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108576166228198391'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2004/05/details-on-source-control-in-visual.html' title='Details on source control in Visual Studio 2005 Team Foundation'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-108553431859627776</id><published>2004-05-25T20:55:00.000-04:00</published><updated>2004-05-25T21:18:38.596-04:00</updated><title type='text'>The magic of Edit.CycleClipboardRing</title><content type='html'>I've been using various text editors (QEdit, &lt;a href="http://www.semware.com/"&gt;The Semware Editor&lt;/a&gt;, &lt;a href="http://www.gnu.org/software/emacs/emacs.html"&gt;Emacs&lt;/a&gt;) for, ummm, 15 years. And I learned something from each of them. I just love using a well-designed editor with a powerful built-in macro language. The ability to &lt;strong&gt;easily&lt;/strong&gt; customize, extend, and automate the environment one spends 8+ hours a day using is underrated. There was a community around builing macros for TSE and there is one for Emacs as well. (People actually write email &amp; NNTP clients inside these text editors!) But I've given up using these editors in exchange for the editor built into Visual Studio 2003. Why? Integrated building, source control, and debugging. I've learned to live with a dumbed-down editor and was content with that. Until today.&lt;br /&gt;&lt;br /&gt;Today I found Edit.CycleClipboardRing (ctrl-shift-v) in Visual Studio 2003. And it awoke in me a dormant desire to customize Visual Studio's editor. I'm wondering why, among all the various .NET fansites, isn't there one that focuses on extending and customizing Visual Studio? Sure, there are a few blog posts around here and there but no central repository.&lt;br /&gt;&lt;br /&gt;Hmmmm....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-108553431859627776?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/108553431859627776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=108553431859627776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108553431859627776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108553431859627776'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2004/05/magic-of-editcycleclipboardring.html' title='The magic of Edit.CycleClipboardRing'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-108550200644012492</id><published>2004-05-25T11:52:00.000-04:00</published><updated>2004-05-25T12:21:47.406-04:00</updated><title type='text'>Visual Studio 2005 Team System not for individuals or small teams???</title><content type='html'>Via &lt;a href="http://wesnerm.blogs.com/net_undocumented/2004/05/microsoft_squas.html"&gt;Wesner Moise's blog&lt;/a&gt;, I ended up at the &lt;a href="http://msdn.microsoft.com/vstudio/teamsystem/burtonfaq.aspx"&gt;Visual Studio 2005 Team System FAQ&lt;/a&gt;. If you're interested in source control, as I am, scroll immediately to the very bottom and read the "Source Code Control" section.&lt;br /&gt;&lt;br /&gt;I work on a small distributed team and we're ready to ditch SourceSafe for something more robust with a story for both multiple checkouts and WAN connections. With only 3.5 developers, we're not interested in scalability; we're interested in performance and features! Yeah, I tried all the VSS add-ons and they just didn't work well with multiple checkouts or Visual Studio 2003 integration.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-108550200644012492?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/108550200644012492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=108550200644012492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108550200644012492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108550200644012492'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2004/05/visual-studio-2005-team-system-not-for.html' title='Visual Studio 2005 Team System not for individuals or small teams???'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-108549455819095118</id><published>2004-05-25T10:04:00.000-04:00</published><updated>2004-05-25T10:15:58.190-04:00</updated><title type='text'>Clearing Terminal Services Connections</title><content type='html'>How to clear a hung Terminal Services connection? Particularly when *both* are hung and the both is miles away! I found the answer in this &lt;a href="http://www.thinktecture.com/staff/ingo/weblog/archives/001334.html"&gt;blog from Ingo Rammer&lt;/a&gt;. Interestingly, the solution Ingo found wasn't the easiest to use. I'm planning to use the technique mentioned in the second comment.&lt;br /&gt;&lt;br /&gt;I wonder how often the real content of blog entries are not in the actual posts but rather in the comments? Pretty often, I'll bet. Again, this lends a lot of weight to the argument that rss aggregators should support the Comment API. We want &lt;strong&gt;conversation&lt;/strong&gt;! How long until we'll need to support scoring the replies for relevance and/or value?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-108549455819095118?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/108549455819095118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=108549455819095118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108549455819095118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108549455819095118'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2004/05/clearing-terminal-services-connections.html' title='Clearing Terminal Services Connections'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-108427322236493561</id><published>2004-05-11T06:35:00.001-04:00</published><updated>2004-05-11T07:11:57.766-04:00</updated><title type='text'>Visual SourceSafe is shrinking my pipe</title><content type='html'>I work from home, connecting to our servers using DSL (512/256) and a VPN. Most of my develoment work is done in Visual Studio 2003 with Visual SourceSafe 6.0 (multiple checkouts enabled). The most annoying aspect of this setup is that any VSS interaction is very slow. I mean, is usually takes that long that I lose focus on my current task. Not good. So I've been looking at tools and techniques to help me work effectively. &lt;br /&gt;&lt;br /&gt;Here are the options I've found so far:&lt;br /&gt;&lt;br /&gt;a. &lt;a href="http://www.sourcegear.com/sos/"&gt;SourceGear's SourceOffSite Classic&lt;/a&gt; ($239) &lt;br /&gt;I used SOS at a prior job and found it to be quite functional and stable. It is the most expensive option of all the tools but is also the most effective. It's just to expensive for me, at the moment.&lt;br /&gt;&lt;br /&gt;b. &lt;a href="http://www.nesterovsky-bros.com/html/css2/SCCBridge.htm"&gt;SCCBridge&lt;/a&gt; (free)&lt;br /&gt;I've tried to use this tool several times but each time gave up due to a lack of robustness. It spits out very obscure messages and has a fairly difficult configuration process. When I finally got it working, the speed just wasn't much better, if at all.&lt;br /&gt;&lt;br /&gt;c. &lt;a href="http://www.vssconnect.com/VssConnect.htm"&gt;VssConnect&lt;/a&gt; ($30)&lt;br /&gt;I haven't actually looked at this product yet but intend to check out the eval version later this week. If their website is to be believed, it's precisely what I'm looking for!&lt;br /&gt;&lt;br /&gt;d. Working disconnected (free, it's a feature of Visual Studio &amp; VSS)&lt;br /&gt;It just occurred to me yesterday that I could disconnect (File menu, Source Control, Change Source Control) from the VSS database and work offline. I'll post my observations on this technique separately.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-108427322236493561?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/108427322236493561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=108427322236493561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108427322236493561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108427322236493561'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2004/05/visual-sourcesafe-is-shrinking-my-pipe.html' title='Visual SourceSafe is shrinking my pipe'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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><id>tag:blogger.com,1999:blog-6933785.post-108427174524745210</id><published>2004-05-11T06:35:00.000-04:00</published><updated>2004-05-11T07:10:09.323-04:00</updated><title type='text'>Visual Studio 2003 - working disconnected from VSS</title><content type='html'>I work from my home and connect via DSL (512/256) to a VPN where our servers are located. Most of my work is done with ASP.NET projects in Visual Studio 2003. Even with broadband access, Visual SourceSafe interactions are incredibly slow. So I've been looking into working disconnected (File menu, Source Control, Change Source Control) in an attempt to speed things up. We have multiple checkouts enabled.&lt;br /&gt;&lt;br /&gt;1. Working disconnected is really nice. Adding new files, checking out, etc, is instant (&lt; 1 sec). No more multi-second pauses waiting for the UI to respond when you start to change a file; you get a dialog box immediately.&lt;br /&gt;&lt;br /&gt;2. When reconnecting, there are several dialogs that warn of potentially lost work. None of these apply to multiple check-out scenario's of course, but they still need to read and the correct button needs to be clicked.&lt;br /&gt;&lt;br /&gt;3. One of the useful tasks that just can't be done when working disconnected is "undo checkout". You would either reconnect or use the VSS Explorer to retrieve the file contents via cut-n-paste.&lt;br /&gt;&lt;br /&gt;4. The process of working disconnected requires 4 additional steps; 2 to disconnect and 2 more to reconnect. While the disconnecting step isn't too bad, the time VSS takes to reconnect is intolerable. In addition, the time isn't constant, as I've noted below. What was the difference? I don't think it was my network connection as I wasn't doing anything else and none of my other PCs were turned on. This is just too slow for me. &lt;br /&gt; &lt;br /&gt;5. If I have time later this week, I'll check out the eval version of VssConnect. It only costs $30/developer and is specially designed to speed up VSS interactions over a WAN. http://www.vssconnect.com/VssConnect.htm&lt;br /&gt; &lt;br /&gt;Connected Process&lt;br /&gt;    Time to load solution   2:16&lt;br /&gt;    Time to checkout        0:07&lt;br /&gt;    Time to checkin         0:09&lt;br /&gt;    Time to do get latest   6:30&lt;br /&gt; &lt;br /&gt;Process to Disconnect&lt;br /&gt;    Time to load solution   2:16&lt;br /&gt;    Time to open VSS menu   1:45-3:29 &lt;br /&gt;    Time to disconnect      0:05&lt;br /&gt; &lt;br /&gt;Disconnected Process&lt;br /&gt;    Time to load solution   0:10&lt;br /&gt;    Time to checkout        0:01&lt;br /&gt; &lt;br /&gt;Process to Reconnect&lt;br /&gt;    Time to open VSS menu   1:45-3:29&lt;br /&gt;    Time to reconnect       7:20&lt;br /&gt;    Time to do get latest   6:30&lt;br /&gt;    Time to checkin         0:08&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6933785-108427174524745210?l=kevingreiner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kevingreiner.blogspot.com/feeds/108427174524745210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6933785&amp;postID=108427174524745210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108427174524745210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6933785/posts/default/108427174524745210'/><link rel='alternate' type='text/html' href='http://kevingreiner.blogspot.com/2004/05/visual-studio-2003-working.html' title='Visual Studio 2003 - working disconnected from VSS'/><author><name>Kevin G.</name><uri>http://www.blogger.com/profile/02603523404993388926</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>
