<?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" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C0AFRHo8eyp7ImA9WhBbFEo.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038</id><updated>2013-05-13T12:01:55.473-07:00</updated><category term="MatLab" /><category term="Reading" /><category term="LINQ" /><category term="Visual Studio" /><category term="jQuery" /><category term="Nontechnical" /><category term="MVVM" /><category term="SQL" /><category term="Technology" /><category term="Javascript" /><category term="Screencast" /><category term="Entertainment" /><category term="F#" /><category term="DataBinding" /><category term="Windows" /><category term="lambda" /><category term="Office 2010" /><category term="Objective C" /><category term="D" /><category term="Ninject" /><category term="XCode" /><category term="Programming" /><category term="Politics" /><category term="Embedded" /><category term="C#" /><category term="C++" /><category term="ReSharper" /><category term="PowerShell" /><category term="WCF" /><category term="STL" /><category term="Knockout" /><category term="NetBurner" /><category term="Eclipse" /><category term="Mac" /><category term="Humor" /><category term="Office 2007" /><category term="CodeContracts" /><category term="iPad" /><category term="Hg" /><category term="SVN" /><category term="WPF" /><category term="Unit Testing" /><category term="vista" /><category term=".NET" /><category term="Windows 7" /><title>Tod's Tomes</title><subtitle type="html">Thoughts on  programming in C# and C++.&lt;br&gt;
The C++ posts will focus on embedded systems, &lt;br&gt;
with an emphasis on the NetBurner and the Eclipse IDE.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://syncor.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>217</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/TodsTomes" /><feedburner:info uri="todstomes" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0AFRHs6fCp7ImA9WhBbFEo.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-8433597561832027475</id><published>2013-05-13T12:01:00.001-07:00</published><updated>2013-05-13T12:01:55.514-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-13T12:01:55.514-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><title>Why I'm avoiding the IE10 upgrade</title><content type="html">&lt;h2&gt;&amp;#160;&lt;/h2&gt;  &lt;p&gt;Back in &lt;a href="http://syncor.blogspot.com/2013/03/windows-764-good-updates-gone-bad.html" target="_blank"&gt;March I wrote about three updates&lt;/a&gt; that caused my Aero transparency effects to go bad but also caused my others browsers to slow to a crawl. At the time I mentioned IE10 was one of the possible culprits but I made a statement that it probably wasn't to blame.&amp;#160; Yesterday, IE 10 appeared to gain elevation in the hierarchy of updates and was the sole item at the top of the update list. It seemed like a good opportunity to exonerate IE10.&lt;/p&gt;  &lt;p&gt;Guess what? Turns out IE10 was guilty. I didn't bother doing all the same tests to see if it slows down all the other browsers (you don't think they would do that on purpose do you?). I just noticed the aero transparency effects were gone. Again doing a system restore failed, so either system restore is broken on my machine, or what seems more likely to me is that IE10 has managed to break much more than just aero.&amp;#160; I tried uninstalling IE10 but Aero transparency was still broken.&lt;/p&gt;  &lt;h2&gt;Getting Aero back&lt;/h2&gt;  &lt;p&gt;Luckily, by this time I have seen more reports about this problem than when I first reported it a couple of months ago. In particular, &lt;a href="http://goo.gl/iY0Nc" target="_blank"&gt;one site&lt;/a&gt; indicated that while installing IE10 causes the problem, restoring Aero required uninstalling a different update: KB2670838. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-2RGAm6iky9g/UZE4n25XbHI/AAAAAAAABfs/aA4pBElzgsg/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/-cFECDNYKcS4/UZE4ouJeNhI/AAAAAAAABf0/Vht415tSkVo/image_thumb%25255B1%25255D.png?imgmax=800" width="419" height="339" /&gt;&lt;/a&gt;Use the &lt;em&gt;Program and Features &lt;/em&gt;control&amp;#160; panel and select the View installed updates. If your system is like mine you then get to search through 400+ updates and find KB2670838. Use the uninstall button at the top to remove it. While there I would suggest you also remove IE10. &lt;/p&gt;  &lt;p&gt;Now I just have to keep a watchful eye out for both IE10 and this KB update to make sure they don't try and reinstall themselves.&amp;#160; There are also &lt;a href="http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_update/kb2670838-major-issues-aero-glass-effects/c63f79ad-0291-4bea-8e68-f810b3b3088b" target="_blank"&gt;other reports&lt;/a&gt; that much more than Aero gets broken and one interpretation that Microsoft did this on purpose to enable some Win8 functionality on Win7. Gee thanks.&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/8433597561832027475/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=8433597561832027475" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8433597561832027475?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8433597561832027475?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/BHN-2BRqYyE/why-i-avoiding-ie10-upgrade.html" title="Why I&amp;#39;m avoiding the IE10 upgrade" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-cFECDNYKcS4/UZE4ouJeNhI/AAAAAAAABf0/Vht415tSkVo/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2013/05/why-i-avoiding-ie10-upgrade.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8MRHk-eip7ImA9WhBUEE8.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-5158918473752222814</id><published>2013-04-26T17:19:00.001-07:00</published><updated>2013-04-26T17:34:45.752-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-26T17:34:45.752-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MVVM" /><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Knockout" /><category scheme="http://www.blogger.com/atom/ns#" term="Javascript" /><category scheme="http://www.blogger.com/atom/ns#" term="NetBurner" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery" /><title>AJAX and the NetBurner Round 3</title><content type="html">&lt;p&gt;Running Ajax in an embedded system: seems like I'm getting in a rut of revisiting this topic every two years. Round two was in December of 2009. This time around I removed both the Prototype library and a lot of the custom JavaScript I had written. Those got replaced with &lt;a href="http://jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt; which seems to be winning the Ajax library wars.&lt;/p&gt;  &lt;p&gt;I'm not going to go into the same level of detail with the &lt;a href="http://www.netburner.com/"&gt;NetBurner&lt;/a&gt; function callbacks and the lower level Ajax details. It really hasn't changed much and if you want to know about that you can watch the video and read the &lt;a href="http://syncor.blogspot.com/2009/12/ajax-and-netburner-round-2.html" target="_blank"&gt;Round two blog post&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;In addition to updating to&amp;#160; jQuery, the real motivation for round 3 was the &lt;a href="http://knockoutjs.com/" target="_blank"&gt;Knockout&lt;/a&gt; library.&amp;#160; Knockout provides support for two-way data-binding, and makes it very easy to implement the &lt;abbr title="Model View View Model"&gt;MVVM&lt;/abbr&gt; design pattern. If you've ever programmed in C# and WPF you know just how nice and maintainable this pattern can be. In addition to data-binding, Knockout combines some data flow and template techniques that make displaying large amounts of data extremely easy. &lt;/p&gt;  &lt;p&gt;This version of the demo takes a single page application approach. I've split the Ajax content over the first two pages and put some About information on the third page. Below is a 4 minute video demo with the web server running in the NetBurner 54441x development board.&amp;#160;&amp;#160; Source code is available on the &lt;a href="http://forum.embeddedethernet.com/viewtopic.php?f=7&amp;amp;t=1661&amp;amp;p=7231#p7231" target="_blank"&gt;NetBurner forums&lt;/a&gt;.&lt;/p&gt;    &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:bd892ed0-eb14-4ee2-9b5e-d951971e9151" class="wlWriterEditableSmartContent"&gt;&lt;div id="aac91eae-538a-4601-9d14-36c3cdb57334" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=x3yzx9baqHk&amp;amp;feature=youtube_gdata_player" target="_new"&gt;&lt;img src="http://lh4.ggpht.com/-RSXz8RsoQ6Q/UXsZl-lZg3I/AAAAAAAABfQ/TIQYxGOMZqo/videoeff65b62760f%25255B27%25255D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('aac91eae-538a-4601-9d14-36c3cdb57334'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;1019\&amp;quot; height=\&amp;quot;570\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/x3yzx9baqHk?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/x3yzx9baqHk?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;1019\&amp;quot; height=\&amp;quot;570\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="width:1019px;clear:both;font-size:.8em"&gt;Demo of Syncor's 3rdVersion of AJAX for the NetBurner&lt;/div&gt;&lt;/div&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/5158918473752222814/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=5158918473752222814" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/5158918473752222814?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/5158918473752222814?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/5qZ6Qqt3CYU/ajax-and-netburner-round-3.html" title="AJAX and the NetBurner Round 3" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2013/04/ajax-and-netburner-round-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQFQ38yeyp7ImA9WhBXFEw.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-5560205127121926298</id><published>2013-03-27T12:25:00.001-07:00</published><updated>2013-03-27T12:25:12.193-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-27T12:25:12.193-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>Doing Upgrades with InstallShield LE</title><content type="html">&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-27nrxRLuPqA/UVNHkAjOqNI/AAAAAAAABeI/dSapp_tk0-g/s1600-h/image%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh5.ggpht.com/-oPRxI-aFOhY/UVNHk9caGQI/AAAAAAAABeQ/XCTKxE8bsYE/image_thumb%25255B4%25255D.png?imgmax=800" width="507" height="258" /&gt;&lt;/a&gt;Getting an InstallShield LE installer to uninstall the previous version takes a couple of extra steps and careful avoidance of one step. &lt;/p&gt;  &lt;p&gt;On the General Information pane are two GUIDs you can modify. The step you don't want to take is modifying the &lt;em&gt;Upgrade Code&lt;/em&gt;, hence the big elongated red circle with the slash through it in the diagram at the right. The line above this is the &lt;em&gt;Product Code&lt;/em&gt; and the line above that is the &lt;em&gt;Product Version&lt;/em&gt; line. I had success when I modified both of these lines. I enter a new version number for the installer and then click on the&lt;em&gt; Product Code&lt;/em&gt; line which makes the bracketed ellipse show up. I then click that symbol to have the system generate a new GUID. &lt;/p&gt;  &lt;p&gt;When you're creating your first installer this is all you need to do, but when you want to issue an upgrade that uninstalls the previous version and installs the current version you have to visit the &lt;em&gt;Upgrade Paths&lt;/em&gt; pane (four icons below the &lt;em&gt;General Information&lt;/em&gt; pane in the above diagram).     &lt;div style="clear: both"&gt;&lt;/div&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-RhgvtR23D9I/UVNHlDZ33yI/AAAAAAAABeY/lzVvGP6hrCs/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh4.ggpht.com/-y77vOCsIdSo/UVNHlhzGgVI/AAAAAAAABeg/1z8rzklMC6w/image_thumb%25255B6%25255D.png?imgmax=800" width="534" height="254" /&gt;&lt;/a&gt;Right-clicking on the &lt;em&gt;Upgrade Paths&lt;/em&gt; as shown at the left allows you to add a &lt;em&gt;New Upgrade Path…&lt;/em&gt;. This opens a dialog that lets you find your previous setup.exe. In the open file dialog that appears, be sure to use the popup at the bottom to select &amp;quot;Setup Exe Files (*.exe). Why it defaults to Windows Installer Packages (*.msi) is just one of the perverse mysteries. Once you select the setup.exe file for the previous version it will fill in the the correct Upgrade Code that should match both your old version and your new version. You can then Enter the Min Version and Max Version fields. In the diagram in the right pane, you can see I've already added a new upgrade path and have set my min version to the previous version and the max version to the current version. I haven't experimented with values for these fields, but this did the trick for my install.&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/5560205127121926298/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=5560205127121926298" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/5560205127121926298?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/5560205127121926298?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/gWYCAw6IQTQ/doing-upgrades-with-installshield-le.html" title="Doing Upgrades with InstallShield LE" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-oPRxI-aFOhY/UVNHk9caGQI/AAAAAAAABeQ/XCTKxE8bsYE/s72-c/image_thumb%25255B4%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2013/03/doing-upgrades-with-installshield-le.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEGRX49cCp7ImA9WhBQGUU.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-7009078011551805692</id><published>2013-03-22T13:20:00.001-07:00</published><updated>2013-03-22T13:20:24.068-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-22T13:20:24.068-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>InstallShield Limited Edition and VS2012</title><content type="html">&lt;h2&gt;Targeting the AppData/Local folder&lt;/h2&gt;  &lt;p&gt;I was recently forced into a downgrade from VS2010 to VS2012 so that I could target .NET 4.5. So far I haven't found a single thing I think is better in this version. The most annoying result of the transition is that Microsoft removed support for the Visual Studio Deployment Projects (.vdproj files). Luckily InstallShield provides a Limited Edition of their installer as an add-in. You can &lt;a href="http://blogs.msdn.com/b/deployment_technologies/archive/2010/04/20/installshield-limited-edition-is-available-for-download-in-visual-studio-2010.aspx" target="_blank"&gt;download it from within Visual Studio&lt;/a&gt; 2012 just like in VS2010.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-QQTSVnBLum4/UUy89XpJMWI/AAAAAAAABdA/UqpPFeVCb3g/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/-PaY4FrAyclU/UUy89wp2LPI/AAAAAAAABdI/6bRHJ4DlerU/image_thumb%25255B8%25255D.png?imgmax=800" width="478" height="419" /&gt;&lt;/a&gt;InstallShield provides an import wizard for .vdproj files. The wizard is only available from the &lt;strong&gt;InstallShield LE&lt;/strong&gt; menu.&amp;#160; The import wizard didn't work correctly for my rather simple installer but it did save me some time.&amp;#160; The problem occurred because I install ContentFiles under the AppData folder like I'm supposed to. The Wizard created a path for these files but it didn't work. I was further led astray by the predefined [AppDataFolder]. I foolishly assumed from its name that it was referring to the AppData folder. Silly of me I know.&amp;#160; I never proved what folder it actually refers to but I suspect it is the Roaming folder under the AppData folder. How wonderfully misleading of them. I came to this conclusion because eventually I kept looking down the list of predefined folders and saw the [LocalAppDataFolder]. I didn't see a [RoamingAppDataFolder] so draw your own conclusions. &lt;/p&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;    &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-PfMnhHtizWU/UUy8-OddE3I/AAAAAAAABdQ/5XtFqq8fccQ/s1600-h/image%25255B18%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh4.ggpht.com/-CXRF9XsjJU0/UUy8-ziMq0I/AAAAAAAABdY/zx1gOW2CQtA/image_thumb%25255B10%25255D.png?imgmax=800" width="460" height="146" /&gt;&lt;/a&gt;Creating my folder hierarchy under [LocalAppDataFolder] as shown at left was the first step to success. The second step was to set the ALLUSERS property on the General Information tab to 1 to indicate this installation was for all users of the machine. &lt;/p&gt;  &lt;div style="clear: both"&gt;&amp;#160;&lt;/div&gt;    &lt;h2&gt;Where's Waldo? – Allowing Upgrades without uninstalling&lt;/h2&gt;  &lt;p&gt;When I run my installer I want it to just upgrade the existing application. I don't want to force my users to uninstall the current version and then run the installer. Reading the help files and the web helped me to understand that for minor upgrades I should &lt;strong&gt;NOT&lt;/strong&gt; change the GUIDs for&lt;em&gt; Product Code&lt;/em&gt; or &lt;em&gt;Upgrade Code&lt;/em&gt;. The help file did point out that I &lt;strong&gt;SHOULD&lt;/strong&gt; change the &lt;em&gt;Package Code&lt;/em&gt; GUID and it stressed how important it was to update the package GUID. OK great, armed with this information I thought I could easily achieve my goal. Or so I thought until I tried to find the &lt;em&gt;Package Code&lt;/em&gt; GUID. I know it's not good form to complain about software you get for free, but sometimes I wish major manufacturers of widely distributed software would read at least an article or two on good design and the concept of discoverability. In particular purveyors of software tools seem to think we all enjoy playing &lt;em&gt;Where's Waldo&lt;/em&gt; all the time. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-4yewHGyeqZo/UUy8_ZzZ1FI/AAAAAAAABdg/3y-gaTKSedQ/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 9px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-eMn5xLJjTMw/UUy8_3fhQ-I/AAAAAAAABdo/gY6-GbKVkGY/image_thumb%25255B2%25255D.png?imgmax=800" width="751" height="233" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;    &lt;p&gt;Turns out the setting does indeed exist, but it's nowhere near where I would have expected it. In fact, in the limited edition you can't change it, it is automatically generated anew each time. This is a fact the help file might have found time to mention. A nod's not always as&amp;#160; good as a wink.&lt;/p&gt;  &lt;p&gt;It also made me wonder if it really would have been so difficult to just put the &lt;em&gt;Package Code&lt;/em&gt; on the General tab under &lt;em&gt;Product Code&lt;/em&gt; and &lt;em&gt;Upgrade Code&lt;/em&gt; and just disable it? What purpose was served by burying it&amp;#160; under The Prepare for Release-&amp;gt;Releases-&amp;gt;Builds=&amp;gt;Express-&amp;gt;General submenu? Another victory for the antithesis of discoverability. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-MpxnxKDD6UI/UUy9A5N6DXI/AAAAAAAABdw/0tQePk0-KTU/s1600-h/image%25255B19%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-2Y7Wv6lsPUY/UUy9BiByR-I/AAAAAAAABd4/thOcd6L5gR0/image_thumb%25255B11%25255D.png?imgmax=800" width="811" height="574" /&gt;&lt;/a&gt;&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/7009078011551805692/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=7009078011551805692" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/7009078011551805692?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/7009078011551805692?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/2L0Ip0g3E6A/installshield-limited-edition-and-vs2012.html" title="InstallShield Limited Edition and VS2012" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-PaY4FrAyclU/UUy89wp2LPI/AAAAAAAABdI/6bRHJ4DlerU/s72-c/image_thumb%25255B8%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2013/03/installshield-limited-edition-and-vs2012.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQHRHc5fyp7ImA9WhBQF08.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-6583862805530849899</id><published>2013-03-19T14:08:00.001-07:00</published><updated>2013-03-19T14:08:55.927-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-19T14:08:55.927-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><title>Moving Windows that open off screen</title><content type="html">&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-4YE2RfdkCOI/UUjT5L8LrNI/AAAAAAAABco/-TWJs8kkbPc/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/-_jH64GEkGL8/UUjT5lgrw0I/AAAAAAAABcw/W9Xi-pjvLqc/image_thumb.png?imgmax=800" width="181" height="150" /&gt;&lt;/a&gt;Sometimes a window will open partially off screen, with the title bar inaccessible. This means it is more difficult than usual to move. My old standby was to use the &lt;font face="Courier New"&gt;&lt;strong&gt;Alt-Space&lt;/strong&gt;&lt;/font&gt; short cut to open the submenu shown at left. I would then press &lt;font face="Courier New"&gt;&lt;strong&gt;M&lt;/strong&gt;&lt;/font&gt; followed by the use of the arrow keys to move it back into position. This still works on a lot of windows, even some that no longer have an icon in the upper left corner to click. However, the Rhapsody music player window doesn't cooperate with this approach. &lt;/p&gt;  &lt;p&gt;It does cooperate with a new Windows 7 feature however. You can hover over an icon in the task bar, move up to the thumbnail that appears, right-click and get the same menu. Alternately, and a little faster, you can hold down the shift key and right click on the icon in the task bar and the menu will appear. Select Move from this menu and the cursor will turn into a four headed arrow and jump to the middle top of the window. Now hit one of the arrow keys to move it. Using the arrows keys just once locks the window to the mouse so now you can drag the window around with the mouse. You can also just continue to move the window with the arrow keys. &lt;/p&gt;  &lt;p&gt;I have seen some anomalies with this approach. If the menu shows up but &lt;font face="Courier New"&gt;&lt;u&gt;M&lt;/u&gt;ove&lt;/font&gt; doesn't have the M underlined it won't work. Try clicking off the window and then use the taskbar icon again. Sometimes the &lt;font face="Courier New"&gt;&lt;u&gt;M&lt;/u&gt;ove&lt;/font&gt; command is there but the cursor doesn't change to the move cursor. Try the process again. Sometimes just left-clicking (to hide) and left-clicking a second time (to show), resets the window so that the &lt;font face="Courier New"&gt;&lt;u&gt;M&lt;/u&gt;ove&lt;/font&gt; menu will appear and work properly. &lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/6583862805530849899/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=6583862805530849899" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/6583862805530849899?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/6583862805530849899?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/7VBUn7YQmzY/moving-windows-that-open-off-screen.html" title="Moving Windows that open off screen" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-_jH64GEkGL8/UUjT5lgrw0I/AAAAAAAABcw/W9Xi-pjvLqc/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2013/03/moving-windows-that-open-off-screen.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYNSXk9eSp7ImA9WhBQFUg.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-4938970202238782410</id><published>2013-03-17T13:46:00.001-07:00</published><updated>2013-03-17T13:46:38.761-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-17T13:46:38.761-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><title>Windows 7/64 Good updates gone bad</title><content type="html">&lt;p&gt;I just spent the weekend recovering my Windows 7 Ultimate/64 bit system from backups. My big mistake was allowing a couple of recent windows updates. I can't be sure which one (or ones) caused the problem. I've narrowed it down to one or more of the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Internet Explorer 10 for Windows 7 for x64-based Systems       &lt;br /&gt;&lt;/strong&gt;Update type: Important&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Security Update for Windows 7 for x64-based Systems (KB2807986)       &lt;br /&gt;&lt;/strong&gt;Update type: Important      &lt;br /&gt;&lt;em&gt;A security issue has been identified that could allow an authenticated local attacker to compromise your system and gain control over it. You can help protect your system by installing this update from Microsoft. After you install this update, you may have to restart your system.&lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Update for Windows 7 for x64-based Systems (KB2791765)        &lt;br /&gt;&lt;/strong&gt;Update type: Recommended      &lt;br /&gt;&lt;em&gt;Install this update to resolve a set of known application compatibility issues with Windows. For a complete listing of the issues that are included in this update, see the associated Microsoft Knowledge Base article for more information. After you install this item, you may have to restart your computer.&lt;/em&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I don't think it was IE10 but I'm not willing to do another recover from backups to find out.&lt;/p&gt;  &lt;h2&gt;The Symptoms&lt;/h2&gt;  &lt;p&gt;After installing the above updates the Aero transparency effects are disabled and I couldn't figure out how to re-enable them. This isn't a big enough deal to bother recovering my system from backups. However, it is a highly visible symptom of more serious problems. The killer flaw was the fact that all my browsers (FF, IE9 and Chrome) became absolute sloths. They would load the initial page, but scrolling and refreshing content became unusably slow. I originally ran all the malware checks I could and they came up clean. I then tried to do a system restore, which failed, followed by attempts at earlier restores which also failed. Then I tried a restore from safe mode. Also failed. Finally I booted from my original installation disks, did a repair and tried a restore, this too failed. I actually decided to try an in-place upgrade but since my original disks are for Windows 7 Ultimate, and my current system is Win 7 SP1, the in-place upgrade will no longer run. &lt;/p&gt;  &lt;p&gt;I finally restored from my &lt;a href="http://www.acronis.com/homecomputing/products/trueimage/#overview" target="_blank"&gt;Acronis True Image&lt;/a&gt; backup (had to boot from my USB Acronis drive). When that completed, I re-installed some applications (notably Visual Studio 2012 and associated plug-ins). I rebooted multiple times and everything appeared to work well. I made a new backup.&amp;#160; Then I ran a windows update, installed all the important and recommended updates and the problem immediately returned. Another restore from backup, followed by updating everything but the above three updates and all is working well again. If anyone has any further information, or has narrowed this down I'd be interested to hear from you.&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/4938970202238782410/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=4938970202238782410" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/4938970202238782410?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/4938970202238782410?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/Qjd3YQt2GnM/windows-764-good-updates-gone-bad.html" title="Windows 7/64 Good updates gone bad" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2013/03/windows-764-good-updates-gone-bad.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkABRX88eCp7ImA9WhBQFEQ.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-1389040822927948198</id><published>2013-03-14T17:36:00.001-07:00</published><updated>2013-03-16T22:39:14.170-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-16T22:39:14.170-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>Visual Studio 2012–LET'S GET UGLY!</title><content type="html">&lt;p&gt;I just downloaded a trial version of VS2012 because I wanted to target .NET 4.5 and it turns out you can't do that in VS2010. I don't know if there is a good reason for this or if Microsoft just found a new way to squeeze money out of developers. &lt;/p&gt;  &lt;p&gt;I realize that beauty is in the eye of the beholder and there are probably people (at least at Microsoft) that like a white-on-white IDE&amp;#160; where all the panes and sections meld into one another and you can't tell what ends where much like a run-on sentence with inadequate punctuation. I find it hard to believe that there is anyone, anywhere that thought PUTTING THE MENUS IN ALL CAPS ACROSS THE TOP was a good idea, or thought that amateurish logo in the upper right hand corner looked nice. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-rZiQZ84NY2M/UUJtHyzVXeI/AAAAAAAABcA/ee6ZxgfKZhQ/s1600-h/image%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/--5szjSj4iMY/UUJtIT62NLI/AAAAAAAABcI/9TV-BCzedCE/image_thumb%25255B3%25255D.png?imgmax=800" width="367" height="210" /&gt;&lt;/a&gt;Luckily, you can fix most of this pretty easily (but not the logo). First you can turn off the ALL Caps by creating a new DWORD 32 registry value&amp;#160; at HKEY_CURRENT_USER\    &lt;br /&gt;&amp;#160;&amp;#160; Software\    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Microsoft\    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; VisualStudio\    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 11.0\    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; General\    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SuppressUppercaseConversion. Then set the value to 1. This particular tip can be found in multiple places on the web but I saw it first on &lt;a href="http://www.richard-banks.org/2012/06/how-to-prevent-visual-studio-2012-all.html" target="_blank"&gt;Richard Bank's blog&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;The white-on-white color theme can be changed two ways. You can select the Dark them in the Tool-Options –Environment-General pane. But to my mind it's no better. The best bet is by using Tools-&amp;gt;Extensions and Updates,&amp;#160; choosing the Online tab on the left, searching for &amp;quot;theme editor&amp;quot; and choosing the Visual Studio 2012 Color Theme Editor and installing it. I'm boring so I just used the pre-built Blue theme. but there are a handful of offerings and you can customize your own. Still not as nice looking as VS2010 but that gives us a reason to upgrade to VS2014. Although I imagine we'll be locked out from targeting newer versions of .NET&amp;#160; unless we do anyway.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-PZ_lGPKvD2Y/UUJtJIMahdI/AAAAAAAABcQ/CaH7qYhikh4/s1600-h/image%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-MHfPN89AeBA/UUJtJ36OogI/AAAAAAAABcY/USMbSr-8LrQ/image_thumb%25255B4%25255D.png?imgmax=800" width="789" height="340" /&gt;&lt;/a&gt;&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/1389040822927948198/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=1389040822927948198" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/1389040822927948198?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/1389040822927948198?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/nI6JqPWtBWw/visual-studio-2012let-get-ugly.html" title="Visual Studio 2012–LET&amp;#39;S GET UGLY!" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/--5szjSj4iMY/UUJtIT62NLI/AAAAAAAABcI/9TV-BCzedCE/s72-c/image_thumb%25255B3%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2013/03/visual-studio-2012let-get-ugly.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0QEQncyfSp7ImA9WhBRGUs.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-6205843374385791802</id><published>2013-03-10T17:21:00.001-07:00</published><updated>2013-03-10T17:21:43.995-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-10T17:21:43.995-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><title>Missing Msvcr71.dll</title><content type="html">&lt;p&gt;I recently had some serious problems with Windows 7. The outward sign was that all the transparency effects were no longer working. The more serious issue was that Chrome, IE8 and IE9 became unusable for browsing web pages. Firefox worked a bit better but, things still weren't working well. I restored my system from a backup and most everything worked well after I booted from my Win7 disk and ran some repairs to fix the master boot record. &lt;/p&gt;  &lt;p&gt;One thing that didn't work was the terminal emulator I use for embedded troubleshooting. Launching it caused me to get an immediate error dialog telling me I was missing msvcr71.dll. From the name I was pretty sure it was a microsoft visual C library. A quick search of my system turned up dozens of copies of this .dll. The question was where did my terminal emulator want it to be. A quick google search led me to a &lt;a href="http://www.addictivetips.com/windows-tips/fix-msvcp71-dll-and-msvcr71-dll-missing-error-in-windows-7/" target="_blank"&gt;page with the answer&lt;/a&gt;: the C:\Windows\SysWOW64 directory. The link provides downloads of the .dll but I would suggest you look on your own system so see if you already have a copy you can use. Downloading .dll's from web sites you don't completely trust can be dangerous. &lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/6205843374385791802/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=6205843374385791802" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/6205843374385791802?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/6205843374385791802?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/1O3i2IyvTb8/missing-msvcr71dll.html" title="Missing Msvcr71.dll" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2013/03/missing-msvcr71dll.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8NRHw9eip7ImA9WhBTF00.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-2635040580571650632</id><published>2013-02-12T13:28:00.001-08:00</published><updated>2013-02-12T13:34:55.262-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-12T13:34:55.262-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="NetBurner" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>Using Lint with GCC and NetBurner</title><content type="html">&lt;p&gt;In a &lt;a href="http://syncor.blogspot.com/2010/03/using-lint-in-eclipse-with-netburner.html" target="_blank"&gt;previous article&lt;/a&gt; on using &lt;a href="http://www.gimpel.com/html/pcl.htm" target="_blank"&gt;Gimpel's PC-lint&lt;/a&gt; in Eclipse, I gave examples of setting up lint using the &lt;em&gt;co‑gnu3.lnt&lt;/em&gt; file as a starting point. It turns out that particular file is no longer in vogue. The preferred choice for GCC compilers is &lt;em&gt;co-gcc.lnt&lt;/em&gt;. Unfortunately, using this version requires that you take some steps to create additional files to make it operate properly. &lt;/p&gt;  &lt;p&gt;If you want to create these files yourself from scratch, you'll need to read the gcc-readme.txt file and the comments at the top of the co-gcc.mak file. Also, if like me, you happen to have minGW installed you might have to adjust your path environment variable to remove the paths to &lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Courier New"&gt;C:\dev\MinGW\msys\1.0\bin\;C:\dev\MinGW\bin\;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;so that the &lt;a href="http://www.netburner.com/"&gt;NetBurner&lt;/a&gt; paths are used when running the recommended make files. I created a small .bat file with this content:&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Courier New"&gt;make -f co-gcc.mak ^      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; GCC_BIN='m68k-elf-gcc' ^       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; GXX_BIN='m68k-elf-g++'       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CXXFLAGS='-O2 -falign-functions=4'&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I then ran that file from a command prompt in a folder that also has&amp;#160; the co-gcc.mak file provided by Gimpel.&amp;#160; It ends with an error and fails to generate the proper &lt;em&gt;size-options.lnt&lt;/em&gt; file but it does generate the required&amp;#160; &lt;em&gt;lint_cmac.h, lint_cppmac.h&lt;/em&gt; and &lt;em&gt;gcc-include-path.lnt&lt;/em&gt; files.&amp;#160; If you run this yourself your files may vary, but I don't see anything module specific in the results. The files just create GCC specific settings.&amp;#160; I made one modification to the &lt;em&gt;co-gcc.lnt&lt;/em&gt; file. Around line 38 you'll find&amp;#160; &lt;font size="3" face="Courier New"&gt;+cpp (.cc, .C)&lt;/font&gt; which tells lint to treat files with those suffixes as C++ files. It was causing errors for me and since I don't use those suffixes I just commented it out. &lt;/p&gt;  &lt;p&gt;I put up on gist the full set of files that&amp;#160; I created for linting NetBurner programs. Clicking each link will take you directly to the contents of that file.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://gist.github.com/Rolias/4773237" target="_blank"&gt;netburner.lnt&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://gist.github.com/Rolias/4773166" target="_blank"&gt;lint_cmac.h&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://gist.github.com/Rolias/4773289" target="_blank"&gt;lint_cppmac.h&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="https://gist.github.com/Rolias/4773308" target="_blank"&gt;gcc-include-path.lnt&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I also needed to add a &lt;a href="https://gist.github.com/Rolias/4773353" target="_blank"&gt;few settings&lt;/a&gt; to my project.lnt file to reduce the false positives from using the &lt;a href="http://www.boost.org/" target="_blank"&gt;boost C++ libraries&lt;/a&gt;.&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/2635040580571650632/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=2635040580571650632" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/2635040580571650632?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/2635040580571650632?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/1zM2DC4KqHk/using-lint-with-gcc-and-netburner.html" title="Using Lint with GCC and NetBurner" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2013/02/using-lint-with-gcc-and-netburner.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YER3c8fSp7ImA9WhNUE04.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-2276167432152011713</id><published>2013-01-04T13:20:00.001-08:00</published><updated>2013-01-04T13:31:46.975-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-04T13:31:46.975-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><title>Quest: Update Your Credit Card Info on Skype</title><content type="html">&lt;p&gt;You would think if you were going to make one thing really easy to do on your web site it would be making it &lt;strong&gt;REALLY EASY&lt;/strong&gt; for your customers to pay you. Well I guess that's if you're anybody but Microsoft. My credit card expired and I got a message inside the Skype application&amp;#160; letting me know I was going to lose my Skype phone number if I didn't update my credit card info. Fair enough, they even provided a link. Unfortunately the link only took me to the log on page. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-RlUeIehDWRI/UOdHjyeXvqI/AAAAAAAABY0/w9kPq7q7BQw/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/-xkm9oPymAQM/UOdHkCYuCzI/AAAAAAAABY8/oF8dusDI78Q/image_thumb.png?imgmax=800" width="244" height="193" /&gt;&lt;/a&gt;After logging in I noticed they put a lot of effort into making the account pages look like you were using a phone app running Windows 8 (I'm, purposely not showing that), this was my first inkling that this wasn't going to be a pleasant experience. However, right there under &lt;font color="#666666" face="Arial Narrow"&gt;Account details&lt;/font&gt; it shows a &lt;em&gt;Billing &amp;amp; payments&lt;/em&gt; link. Since this is where every other company in the world would put the ability to update a credit card that's where I went. You can spend a lot of time in here chasing down red-herrings. But as you might have guessed nothing in the Billing &amp;amp; payments section is going to let you add or update a credit card that you use for billing and payments. That would be ludicrous. &lt;/p&gt;  &lt;h2&gt;Misdirection from support.skype.com&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-gJA4PQB2fVU/UOdKOyJtKtI/AAAAAAAABaI/3GeS-l-Fi_w/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh5.ggpht.com/-kuAllT8W4Ss/UOdKPpODzAI/AAAAAAAABaQ/XObHQwirOUc/image_thumb%25255B6%25255D.png?imgmax=800" width="513" height="184" /&gt;&lt;/a&gt;Don't believe any of the online help that tells you to use the &lt;em&gt;Manage features&lt;/em&gt; area, as far as I can tell that is just a gullibility test (I was suckered). I mean who would put adding a payment method under the manage features area, that is almost as stupid as putting it under the &lt;em&gt;Your Subscriptions&lt;/em&gt; area. Oh…&lt;/p&gt;  &lt;h2&gt;Adding A New Credit Card&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-eVKqYm2yqWc/UOdKQDhb5MI/AAAAAAAABaY/dhC6NDsThWc/s1600-h/image%25255B17%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh5.ggpht.com/-nJKMR5-3NlI/UOdKQaVke9I/AAAAAAAABag/_-6d8erDpSI/image_thumb%25255B7%25255D.png?imgmax=800" width="244" height="165" /&gt;&lt;/a&gt;Eventually with the help of an addicted gamer that never gives up on a quest, I was able to add a new credit card. I never did figure out if there was a way to update the existing card, but I suspect there isn't. The key to adding the new card is the &lt;em&gt;Subscriptions&lt;/em&gt; link. But once in your subscriptions, don't expect it to be obvious. The important things (like repeating the word Subscriptions) are in &lt;font size="5"&gt;BIG FONTS&lt;/font&gt; and the least important things (you know, things like links that aren't trying to sell you something, get &lt;font size="2"&gt;smaller&lt;/font&gt; and &lt;font size="2"&gt;smaller&lt;/font&gt;.&amp;#160; &lt;font size="1"&gt;When you get down to this size look for the &lt;em&gt;Settings&lt;/em&gt; link&lt;/font&gt;. &lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-mHwKxPu9DWk/UOdHlXMc-ZI/AAAAAAAABZU/YDoJk6qin-s/s1600-h/image%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-xW3pQ5IZf7s/UOdHl9P32AI/AAAAAAAABZc/9uycf6-zU0M/image_thumb%25255B4%25255D.png?imgmax=800" width="745" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once you're here click the &lt;em&gt;Change payment method&lt;/em&gt; link.&amp;#160; Which will take you another page that won't do what you want (yet).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-gODrL98soMI/UOdHmaX4DzI/AAAAAAAABZk/9r5a2tADUnM/s1600-h/SNAGHTML2e81d79d%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML2e81d79d" border="0" alt="SNAGHTML2e81d79d" src="http://lh6.ggpht.com/-vUF4AzS_nH4/UOdHm6F_FnI/AAAAAAAABZs/ziUW3MUvkKg/SNAGHTML2e81d79d_thumb%25255B1%25255D.png?imgmax=800" width="775" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now click the Add payment method link. This WILL take you to a page where you can enter your credit card information and slay the boss monster. Score one for Microsoft for frustrating their customers and preventing you from sending them money, a strange goal, but mission accomplished. The good news is a certain percentage of customers won't ever figure this out, so they'll lose their phone numbers and then be motivated to switch to one of the many competitors like &lt;a href="http://www.tokbox.com/" target="_blank"&gt;Tok Box&lt;/a&gt; or&amp;#160; &lt;a href="http://www.icall.com/" target="_blank"&gt;iCall&lt;/a&gt;. Some of their dumber customers will just write ranting blog entries.&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/2276167432152011713/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=2276167432152011713" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/2276167432152011713?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/2276167432152011713?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/-vl7UdDSXzM/quest-update-your-credit-card-info-on.html" title="Quest: Update Your Credit Card Info on Skype" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-xkm9oPymAQM/UOdHkCYuCzI/AAAAAAAABY8/oF8dusDI78Q/s72-c/image_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2013/01/quest-update-your-credit-card-info-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ECSXw7eSp7ImA9WhNSEkQ.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-8189704897319947412</id><published>2012-10-26T15:47:00.001-07:00</published><updated>2012-10-26T15:47:48.201-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-26T15:47:48.201-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title>When the VS Setup Wizard doesn't get the .NET client right</title><content type="html">&lt;p&gt;When I use the Setup and Deployment Wizard project, it never manages to match the .NET Framework I have selected.&amp;#160; I get the following warning:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Warning&amp;#160;&amp;#160;&amp;#160; 2&amp;#160;&amp;#160;&amp;#160; The target version of the .NET Framework in the project does not match the .NET Framework launch condition version '.NET Framework 4 Client Profile'. Update the version of the .NET Framework launch condition to match the target version of the.NET Framework in the Advanced Compile Options Dialog Box (VB) or the Application Page (C#, F#).&lt;/em&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I suppose if I used just the &lt;em&gt;.NET Framework Client Profile,&lt;/em&gt; it would work, but I usually pick the .NET Framework .&amp;#160; I've talked about using this installer in two previous posts, one that &lt;a href="http://syncor.blogspot.com/2011/06/visual-studio-msi-installer.html" target="_blank"&gt;covered the basics&lt;/a&gt;, and one that covered some &lt;a href="http://syncor.blogspot.com/2012/03/visual-studio-installer-part-2.html" target="_blank"&gt;more advanced concepts&lt;/a&gt;. With a little luck the third time is the charm. &lt;/p&gt;  &lt;p&gt;The fix for this warning is fairly easy to implement once you know where to look.&amp;#160; First open the properties for your installer project by right-clicking on the project in the Solution Explorer. You should get the following dialog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-NtWMEGyqOBw/UIsTB2dpC0I/AAAAAAAABXs/pVNKdQ6Rn9M/s1600-h/SNAGHTML10b1328c%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML10b1328c" border="0" alt="SNAGHTML10b1328c" align="left" src="http://lh3.ggpht.com/-qmGQCQSvhxw/UIsTCbYS_rI/AAAAAAAABX0/t6G7MHCzuaA/SNAGHTML10b1328c_thumb%25255B1%25255D.png?imgmax=800" width="426" height="312" /&gt;&lt;/a&gt;Clicking the &lt;em&gt;Prerequisites…&lt;/em&gt; Button will get you another dialog&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-rFiAdFH4MkE/UIsTCwGqBfI/AAAAAAAABX8/KE-zyA3ArWA/s1600-h/SNAGHTML10b1bb2b%25255B6%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML10b1bb2b" border="0" alt="SNAGHTML10b1bb2b" align="left" src="http://lh6.ggpht.com/-c5Z4v7XB9jA/UIsTDqu4ncI/AAAAAAAABYE/0Ur32Y8egfA/SNAGHTML10b1bb2b_thumb%25255B3%25255D.png?imgmax=800" width="426" height="350" /&gt;&lt;/a&gt;Make sure the items clicked here match what you selected on your main project Verify by right-clicking on your main project, select the &lt;em&gt;Application Tab&lt;/em&gt; (the top one) and look at the &lt;em&gt;Target framework:&lt;/em&gt; popup selection. &lt;/p&gt;  &lt;p&gt;But you're not done yet. &lt;/p&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-RS0EvhJ24hI/UIsTEJAVtII/AAAAAAAABYM/oRnVvzc9h7k/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh3.ggpht.com/-epRCtqwYrrI/UIsTEkLpDkI/AAAAAAAABYU/JUhVZ0318pE/image_thumb%25255B1%25255D.png?imgmax=800" width="427" height="198" /&gt;&lt;/a&gt;The final piece of the puzzle requires that you right-click on your installer project again and this time use the&amp;#160; &lt;em&gt;View&lt;/em&gt; Menu and select the &lt;em&gt;Launch Conditions&lt;/em&gt; option. That window will open in the content area. &lt;/p&gt;  &lt;p&gt;Select the .NET Framework as shown; and then in the properties pane use the popup for &lt;em&gt;Version&lt;/em&gt; and select the matching .NET Framework. Rebuild and Bob's your uncle. &lt;/p&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/8189704897319947412/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=8189704897319947412" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8189704897319947412?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8189704897319947412?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/TXGFjVSHodI/when-vs-setup-wizard-doesn-get-net.html" title="When the VS Setup Wizard doesn&amp;#39;t get the .NET client right" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-qmGQCQSvhxw/UIsTCbYS_rI/AAAAAAAABX0/t6G7MHCzuaA/s72-c/SNAGHTML10b1328c_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/10/when-vs-setup-wizard-doesn-get-net.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04HSHY8eip7ImA9WhJaEkU.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-8861861906983057643</id><published>2012-10-03T11:45:00.001-07:00</published><updated>2012-10-03T11:45:39.872-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-03T11:45:39.872-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="NetBurner" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>Eclipse Debugging for NetBurner</title><content type="html">&lt;p&gt;Historically I've had a lot of problems using debuggers in the embedded world. Partly it's the nature of embedded work but it's also the tools. In-Circuit-Emulators used to be the tool of choice and worked extremely well but they're expensive. Serial port based debugging tended to be too slow to be truly useful. Eclipse and the &lt;a href="http://www.netburner.com/"&gt;NetBurner&lt;/a&gt; platform hold out the promise of debugging over Ethernet with GUI based tools.&amp;#160; I've still had limited success but since I recently just went through the exercise again I thought I would document the basic steps (and pitfalls). &lt;/p&gt;  &lt;h2&gt;Device Executables&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-U_wVGfV8ahM/UGyHmU5SqmI/AAAAAAAABVk/kF3t2yCNZsk/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh5.ggpht.com/-t5JZnXpB6DU/UGyHm9XhwGI/AAAAAAAABVs/zkap0hDTauA/image_thumb%25255B1%25255D.png?imgmax=800" width="375" height="111" /&gt;&lt;/a&gt;Debugging a Device Executable project (as opposed to a library) is pretty straight forward. When you create the project you probably created Release and Debug configurations. The Debug configuration will have set everything up for you correctly. If you didn't create a Debug configuration, it's not too late.&amp;#160; Right-click on your project and use the Build &lt;em&gt;Configurations –&amp;gt; Manage…&lt;/em&gt; menu option as shown in the image. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-hTx2pYP4sqg/UGyHodYNV6I/AAAAAAAABV0/e2DFW0JEndQ/s1600-h/SNAGHTMLec0314a%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTMLec0314a" border="0" alt="SNAGHTMLec0314a" align="left" src="http://lh4.ggpht.com/-5j8tSAZkIu0/UGyHpRkCuNI/AAAAAAAABV8/UauecFbjSCo/SNAGHTMLec0314a_thumb%25255B1%25255D.png?imgmax=800" width="352" height="219" /&gt;&lt;/a&gt;In the resulting Dialog click the &lt;em&gt;New…&lt;/em&gt; button. You an see in the image that I already have a Debug and Release configuration. &lt;/p&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt; &lt;a href="http://lh3.ggpht.com/-v4g4zYX2cqM/UGyHqY51YrI/AAAAAAAABWE/nxFNjDTdzPQ/s1600-h/SNAGHTMLec1f968%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTMLec1f968" border="0" alt="SNAGHTMLec1f968" align="left" src="http://lh3.ggpht.com/-Cy7sjucV-ik/UGyHsIdCLBI/AAAAAAAABWM/cEon91dcrIs/SNAGHTMLec1f968_thumb%25255B2%25255D.png?imgmax=800" width="408" height="344" /&gt;&lt;/a&gt;In the &lt;em&gt;Create New Configuration&lt;/em&gt; dialog give your configuration a name (&amp;quot;Debug&amp;quot; is a good choice), select the &lt;em&gt;Default Configuration&lt;/em&gt; button and select &lt;em&gt;Debug&lt;/em&gt; from the drop down.&amp;#160;   &lt;div style="clear: both"&gt;&lt;/div&gt;  &lt;h2&gt;Static Libraries&lt;/h2&gt;  &lt;p&gt;Unfortunately, if you want to debug a library things aren't so simple. When I used the default Debug configuration for a library I was unable to set breakpoints. Also, almost all of my code (including the startup code that initializes the debugger) is in a library. The default Debug configuration won't even allow the debugger to initialize because it doesn't define the _DEBUG symbol. Luckily you can do this manually.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-2cOfV2suEp4/UGyHtBxE2cI/AAAAAAAABWU/GtZALXHbhNQ/s1600-h/image%25255B24%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/-zzQ_CFrVPA0/UGyHuUgMGDI/AAAAAAAABWc/wVHBv7PGgnA/image_thumb%25255B12%25255D.png?imgmax=800" width="581" height="273" /&gt;&lt;/a&gt;Right click on your project and select properties, follow the image to get to the &lt;em&gt;Preprocessor&lt;/em&gt; settings for the Debug configuration. Don't forget to select the Debug Configuration&amp;#160; using the &lt;em&gt;Configuration:&lt;/em&gt; popup at the top (see the topmost green arrow). Click the green plus&amp;#160; icon on the right to add a new symbol and type _DEBUG.&amp;#160; Now when you rebuild you should notice each file gets compiled with the –D _DEBUG flag.&amp;#160; You'll also want to visit the &lt;em&gt;Optimization&lt;/em&gt; tab and set the optimization level to None.&lt;/p&gt;  &lt;p&gt;Your startup code needs to make a call to the debugger. Make this specific to the debug configuration with an #ifdef. You also need to disable smart traps when you're debugging. The canonical initialization code looks like this:&lt;/p&gt;  &lt;div id="codeSnippetWrapper" class="csharpcode-wrapper"&gt;   &lt;div id="codeSnippet" class="csharpcode"&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;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: &amp;#39;Courier New&amp;#39;, 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;#ifndef _DEBUG&lt;br /&gt;    EnableSmartTraps();&lt;br /&gt;&lt;span style="color: #cc6633"&gt;#endif&lt;/span&gt;&lt;br /&gt;    &lt;br /&gt;#ifdef _DEBUG&lt;br /&gt;    &lt;span style="color: #008000"&gt;//InitializeNetworkGDB();&lt;/span&gt;&lt;br /&gt;    cout &amp;lt;&amp;lt; &lt;span style="color: #006080"&gt;&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;gt;SHOULD WAIT FOR GDB&amp;lt;&amp;lt;&amp;lt;&amp;lt;\n&amp;quot;&lt;/span&gt;;&lt;br /&gt;    InitializeNetworkGDB_and_Wait();&lt;br /&gt;&lt;span style="color: #cc6633"&gt;#endif&lt;/span&gt; &lt;span style="color: #008000"&gt;/* _DEBUG */&lt;/span&gt;&lt;/pre&gt;

      &lt;br /&gt;&lt;/div&gt;

    &lt;pre class="alteven"&gt;&lt;span class="rem"&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;I commented out the alternate method that can be used to invoke the debugger. I also added a cout statement just so you'll know if you have the _DEBUG symbol defined properly.&amp;#160; Then you need to&amp;#160; make sure the debug configuration is set up properly.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-0JWiDH0GtI0/UGyHvCLJtyI/AAAAAAAABWk/HTxyAZkSgy4/s1600-h/image%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/-ApKLZAoyIvk/UGyHvuvPQLI/AAAAAAAABWs/Ef53T3YZWjw/image_thumb%25255B4%25255D.png?imgmax=800" width="206" height="244" /&gt;&lt;/a&gt;Using the little green lady bug icon select the Debug Configurations… option. The Debug Configurations dialog will open. Select your project on the left panel. In the right panel select the Debugger tab. You'll notice at the top an option for Stop on startup at:, that should be left unselected. Under the extra tab you can specify how many seconds to wait to connect to the debugger. The default is fairly short so you may want to increase that if you time out when attempting to connect.&amp;#160;&amp;#160; &lt;/p&gt;

&lt;div style="clear: both"&gt;&lt;/div&gt;
&lt;a href="http://lh3.ggpht.com/-VRF3MvWCOKk/UGyHwXcdK6I/AAAAAAAABW0/I3AhBW1sIHc/s1600-h/image%25255B15%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-lD75HabFj0E/UGyHxP0348I/AAAAAAAABW8/2Jbyr-GZlA8/image_thumb%25255B7%25255D.png?imgmax=800" width="681" height="385" /&gt;&lt;/a&gt; 

&lt;div style="clear: both"&gt;&lt;/div&gt;
&lt;a href="http://lh5.ggpht.com/-dJ61Ojpih14/UGyHyxr16JI/AAAAAAAABXE/DWOkEk8j86w/s1600-h/image%25255B23%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/-tqwKWJNl3I4/UGyHzkCLuMI/AAAAAAAABXM/K53omYXZGDo/image_thumb%25255B11%25255D.png?imgmax=800" width="469" height="228" /&gt;&lt;/a&gt;Finally, use the Connection tab and make sure the IP Address is set to the address of your NetBurner. This often defaults to &lt;em&gt;localhost&lt;/em&gt; which is not going to do you any good. 



&lt;div style="clear: both"&gt;&lt;/div&gt;

&lt;p&gt;While I can generally get things to work somewhat, I have a lot of trouble setting reliable breakpoints. Any that I set before I run seem to work and I can stop and examine variable and call stacks and other associated data. Once I clear a breakpoint, I can't ever set it again and If I need a new breakpoint I have to stop the debug session (which never stops cleanly) and start over again. This may all be a result of trying to debug libraries or it may be the integration of Eclipse and GDB is just not that solid.&amp;#160; &lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/8861861906983057643/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=8861861906983057643" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8861861906983057643?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8861861906983057643?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/KeyqvBCoUNY/eclipse-debugging-for-netburner.html" title="Eclipse Debugging for NetBurner" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-t5JZnXpB6DU/UGyHm9XhwGI/AAAAAAAABVs/zkap0hDTauA/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/10/eclipse-debugging-for-netburner.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8MQXwyeip7ImA9WhJQFE8.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-4637237150050683061</id><published>2012-07-26T10:29:00.001-07:00</published><updated>2012-07-27T15:08:00.292-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-27T15:08:00.292-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Embedded" /><title>Touch Panel Round II–Reach SLCD5+ Review</title><content type="html">&lt;p&gt;We are making our second touch panel based instrument, and due to response times and false triggerings of the &lt;a href="http://syncor.blogspot.com/search?q=gtt" target="_blank"&gt;GTT&lt;/a&gt; product we used last time we decided to try a touch panel from &lt;a href="http://www.reachtech.com/" target="_blank"&gt;Reach Technology&lt;/a&gt;. I got my development&amp;#160; kit last week (&lt;a href="http://www.reachtech.com/products/development_kits/" target="_blank"&gt;5.7” High Resolution Development Kit (VGA), SLCD5&lt;/a&gt;+). The touch sensitivity on this panel is in my opinion far superior to the GTT. It is still a resistive touch panel, but for standard button touches it acts very much like a capacitive touchscreen. Lightly tapping a button with the pad of your finger works very well. Of course, being resistive, touching with your fingernail or stylus also works.&amp;#160; &lt;/p&gt;  &lt;p&gt;Scrolling and sliding requires more pressure than I am used to when using a capacitive screen but my intended use won't include swiping or sliding controls. If yours does you'll need to train users to press harder. The firmware worked properly from day one, and the programming interface is a bit higher level than GTT's and easier to work with. There could still be even more high level commands. In fact I don't understand why manufacturers of touch screens don't supply some generic library C++ code that could be a starting point for most developers to use in their final applications. Surprisingly, while they have many unexpected features like a command to create a button with auto-centered text, they don't have a rounded rectangle command. That's a pretty glaring omission in my mind. &lt;/p&gt;  &lt;p&gt;The biggest problem I have with the display is that it only supports bitmap artwork. This means there is no transparency support. This is a pretty big limitation in my mind. If I decide to change the background of my application I have to recreate all my artwork. Many of the lower level primitives like shapes and text do support drawing on a transparent background. Reach sorely needs to get on board with png support. &lt;/p&gt;  &lt;p&gt;The display itself is gorgeous (but still limited to 16 bits). The development kit appears at first glance to be a bit pricey at $500 especially considering they couldn't be bothered to include even a single page of printed documentation. A single Getting Started page pointing out the hidden location of the SD card and the buried path on the CD of the primary manual would have been much appreciated.&amp;#160; That's a relatively minor nit (but easily fixed) and after that first day annoyance the development kit has been a pleasure to work with. &lt;/p&gt;  &lt;p&gt;It's also worth mentioning that I wrote technical support inquiring about the ability to get a retro 7 segment LED type font, I asked specifically about several large sizes. &lt;em&gt;GTT supplies a tool that allows&amp;#160; you to create versions of fonts you own that work on their touch panel. Reach includes no such tool.&lt;/em&gt; Reach's technical support not only responded within a day, but their response included the requested font in the requested sizes. That kind of technical support made both the $500 price and the lack of printed documentation a lot more palatable.&amp;#160; &lt;/p&gt;  &lt;p&gt;We build limited production laboratory instrumentation so the cost of the display pales in comparison to the development costs. If you're in a similar situation I would recommend taking a look at what Reach offers.&amp;#160; They do offer volume discounts as well.&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/4637237150050683061/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=4637237150050683061" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/4637237150050683061?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/4637237150050683061?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/VHEjGPG0NK0/touch-panel-round-iireach-slcd5-review.html" title="Touch Panel Round II–Reach SLCD5+ Review" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/07/touch-panel-round-iireach-slcd5-review.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUUDRncyeip7ImA9WhJWEk4.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-8261161713568199185</id><published>2012-07-13T14:54:00.001-07:00</published><updated>2012-08-17T12:54:37.992-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-17T12:54:37.992-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>Parsing Lint Errors In Eclipse</title><content type="html">&lt;p&gt;In my 2010 post on &lt;a href="http://syncor.blogspot.com/2010/03/using-lint-in-eclipse-with-netburner.html" target="_blank"&gt;Using Lint In Eclipse&lt;/a&gt;, I mentioned the one missing piece was having an error list that was clickable and would take you to the offending line in source code. Thanks to Colin O'Flynn's comment and &lt;a href="http://www.newae.com/tiki-index.php?page=LintEclipse" target="_blank"&gt;blog post&lt;/a&gt; I was able to get things working just the way I want. I had to modify several of the steps in Colin's post. Here are the specific steps I took using the Juno release of Eclipse.&lt;/p&gt;  &lt;h2&gt;Install the RegEx Parser Plugin&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-NmV4DEa2IZ0/UACY1g5AQNI/AAAAAAAABRs/Pakt20gAMh0/s1600-h/image%25255B19%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh3.ggpht.com/-hJA6Ve1ryqA/UACY3s3cGSI/AAAAAAAABR0/v5XtZu3toEk/image_thumb%25255B9%25255D.png?imgmax=800" width="534" height="262" /&gt;&lt;/a&gt;Using the Help-&amp;gt;Install New Software… option I used the Add… button and put in a path of &lt;a title="http://www.isystem.si/eclipseUpdate/regExErrorParser/" href="http://www.isystem.si/eclipseUpdate/regExErrorParser/"&gt;http://www.isystem.si/eclipseUpdate/regExErrorParser/&lt;/a&gt;, and installed the regular expression parser.&lt;/p&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;  &lt;h2&gt;Setup the RegEx Parser Plugin&lt;/h2&gt;  &lt;p&gt;Just to be safe I copied RegEx&amp;#160; configuration file &lt;font size="3" face="Courier New"&gt;errParserExpressions.properties&lt;/font&gt; located in my eclipse plugins folder &lt;font size="2" face="Courier New"&gt;…\eclipse\plugins\si.isystem.regExErrorParser_1.0.8.i9_9_72_20090403_134038\regex&lt;/font&gt;&lt;/p&gt; I then replaced the contents of &lt;font size="3" face="Courier New"&gt;errParserExpressions.properties&lt;/font&gt; with the text specified in Colin's post:  &lt;pre&gt;logLevel = 0
info = 1, 2, 3:LINT Info: (.*?):([0-9]+) (.*)\n \
       0, 0, 1:LINT Info (.*)\n 
warning = 1, 2, 3:LINT Warning: (.*?):([0-9]+) (.*)\n \
          0, 0, 1:LINT Warning (.*)\n
error = 1, 2, 3:LINT Error: (.*?):([0-9]+) (.*)\n \
        0, 0, 1:LINT Error (.*)\n&lt;/pre&gt;
&lt;strong&gt;Exit Eclipse and restart to that it picks up the changes to this file.
  &lt;br /&gt;&lt;/strong&gt;

&lt;h2&gt;&amp;#160;&lt;/h2&gt;

&lt;h2&gt;Create a new build configuration&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-S6b4FVh0T6U/UACY4IcfmBI/AAAAAAAABR8/ItpOlqPwnNc/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh4.ggpht.com/-kKhPzhgsl3c/UACY42gUvhI/AAAAAAAABSE/HETPvnBZU-4/image_thumb%25255B1%25255D.png?imgmax=800" width="451" height="272" /&gt;&lt;/a&gt;Creating a new build configuration starts with using the &lt;font size="3"&gt;&lt;em&gt;Project-&amp;gt;Build Configurations-&amp;gt;Manage…&lt;/em&gt;&lt;/font&gt; option to open the &lt;em&gt;Manage Configurations&lt;/em&gt;&lt;strong&gt; &lt;/strong&gt;dialog. Alternately, if this item is disabled in your perspective, try right-clicking on the project and selecting &lt;em&gt;Build Configurations-&amp;gt;Manage&lt;/em&gt; from there. &lt;/p&gt;

&lt;div style="clear: both"&gt;&amp;#160;&lt;/div&gt;



&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-xkSXBMDJjGc/UACY6JjdiXI/AAAAAAAABSM/-yneiO8NjeM/s1600-h/SNAGHTML6080128%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML6080128" border="0" alt="SNAGHTML6080128" align="left" src="http://lh4.ggpht.com/-fMlSlnLI5JU/UACY6hsRVZI/AAAAAAAABSU/PV5hAPiCMNg/SNAGHTML6080128_thumb%25255B1%25255D.png?imgmax=800" width="292" height="197" /&gt;&lt;/a&gt;Click the&lt;font size="3" face="Courier New"&gt; &lt;font face="Georgia"&gt;&lt;em&gt;New…&lt;/em&gt;&lt;/font&gt;&lt;/font&gt; button and give the new configuration a name.&lt;/p&gt;

&lt;h2&gt;
  &lt;div style="clear: both"&gt;&lt;/div&gt;
Modify the ToolChain&lt;/h2&gt;

&lt;p&gt;Now open up the project properties dialog. &lt;a href="http://www.netburner.com/"&gt;NetBurner&lt;/a&gt; uses the managed build system so by default you can't uncheck the &lt;em&gt;Use default build command&lt;/em&gt; option. You can enable this by using the &lt;em&gt;Tool Chain Editor&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-kdIjj6v3arA/UACY7fiJ5xI/AAAAAAAABSc/8BkcF8qppkE/s1600-h/SNAGHTML60ab96e%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML60ab96e" border="0" alt="SNAGHTML60ab96e" align="left" src="http://lh6.ggpht.com/-6tUk20j-UXM/UACY8HP5kCI/AAAAAAAABSk/d1ZNnKn2K0I/SNAGHTML60ab96e_thumb%25255B1%25255D.png?imgmax=800" width="569" height="303" /&gt;&lt;/a&gt;I believe I had to first uncheck the option for &lt;em&gt;Display compatible toolchains only&lt;/em&gt;. Then I was able to select another toolchain. I intially picked one of the GCC options, but later after turning off the automated make file (see next step) I came back here and selected the &lt;em&gt;No ToolChain&lt;/em&gt; from the dropdown.&amp;#160; Prior to disabling the makefile generation this option was not present.&amp;#160; Once this was done I could switch back to the C/C++ Build tab and… &lt;/p&gt;

&lt;div style="clear: both"&gt;&amp;#160;&lt;/div&gt;

&lt;h2&gt;Specify the Lint command as your build command.&lt;/h2&gt;



&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-Pw74S3RyDQg/UACY9cHK2jI/AAAAAAAABUA/hvJEKUSHqU4/s1600-h/SNAGHTML60c53e9%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML60c53e9" border="0" alt="SNAGHTML60c53e9" src="http://lh6.ggpht.com/-LN8b-Iafwm0/UACY-HqxegI/AAAAAAAABUE/MiwyBbtMfuI/SNAGHTML60c53e9_thumb%25255B2%25255D.png?imgmax=800" width="789" height="425" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;…uncheck the Use default build command and the &lt;em&gt;Generate Makefile automatically&lt;/em&gt; check box.&amp;#160;&amp;#160; Then on the &lt;em&gt;Build command&lt;/em&gt; text box I entered the command line to launch lint. The line I used is shown below.&lt;/p&gt;
&lt;font size="2" face="Courier New"&gt;
  &lt;p style="clear: both"&gt;&lt;strong&gt;&lt;font size="3" face="Georgia"&gt;My build command:&amp;#160; (for copy and paste convenience)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

  &lt;p style="clear: both"&gt;c:\lint/lint-nt.exe C:\lint\netburner.lnt&amp;#160; ${ProjDirPath}\project.lnt&amp;#160;&amp;#160; ${ProjDirPath}\src\*.cpp&lt;/p&gt;
&lt;/font&gt;

&lt;p&gt;The contents of the netburner.lnt and project.lnt were discussed in the previous post. I also had to tell lint which files to process. I don't know how Colin got around doing this, but without the line above that specifies *.cpp, lint does nothing. Note that I have all my files in a folder named &amp;quot;src&amp;quot; inside my project directory. If you just have yours at the root of the project you won't need the \src specifier. &lt;/p&gt;

&lt;h2&gt;Change the Behavior&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-Qcut4E1wf1U/UACY_aVKKAI/AAAAAAAABS8/DYxyz39ozG0/s1600-h/SNAGHTML6148229%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML6148229" border="0" alt="SNAGHTML6148229" align="left" src="http://lh4.ggpht.com/-pOdn6g0IUcY/UACZAFQzBlI/AAAAAAAABTE/FCl11k8w-Mo/SNAGHTML6148229_thumb%25255B2%25255D.png?imgmax=800" width="577" height="312" /&gt;&lt;/a&gt;Click on the Behaviour tab (someone on the Eclipse project must be British) and Clear the &lt;em&gt;Clean&lt;/em&gt; check box and remove anything in the &lt;em&gt;Build (increment build)&lt;/em&gt; text box. I had to leave the &lt;em&gt;Stop on first build error &lt;/em&gt;check box enabled. If I cleared it, Eclipse would automatically add a &lt;em&gt;–k&lt;/em&gt; option to my build command, which caused lint to fail. &lt;/p&gt;

&lt;div style="clear: both"&gt;&lt;/div&gt;

&lt;h2&gt;Turn on the RegEx Error Parser &lt;font size="3"&gt;(Update to original post)&lt;/font&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-GxfIqBmP-AQ/UC6heCmhHaI/AAAAAAAABU8/AGHLdrfcdes/s1600-h/SNAGHTML715bf5d%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML715bf5d" border="0" alt="SNAGHTML715bf5d" align="left" src="http://lh3.ggpht.com/-ao3RoDC0xy8/UC6hfPCIlvI/AAAAAAAABVE/mfunrnMHBPY/SNAGHTML715bf5d_thumb%25255B1%25255D.png?imgmax=800" width="545" height="356" /&gt;&lt;/a&gt;Eclipse needs to know you want to parse the output with the RegEx parser. Using the &lt;em&gt;C/C++ Build-&amp;gt;Settings&lt;/em&gt;&amp;#160; tab click on the &lt;em&gt;Error Parsers&lt;/em&gt; tab and turn off any parsers that are enabled and turn on the RegEx parser as shown.

  &lt;div style="clear: both"&gt;&amp;#160;&lt;/div&gt;
&lt;/p&gt;

&lt;h2&gt;Linting A Single File&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-xTjFeV0XVMg/UACx8KrcuLI/AAAAAAAABUI/DdacMxXgxv4/s1600-h/SNAGHTML6892f6b%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML6892f6b" border="0" alt="SNAGHTML6892f6b" align="left" src="http://lh6.ggpht.com/-df4XrLB2tPk/UACx8mzDkqI/AAAAAAAABUQ/efHSJ-tF3HQ/SNAGHTML6892f6b_thumb%25255B1%25255D.png?imgmax=800" width="566" height="112" /&gt;&lt;/a&gt;The only change I made to lint a single file was I removed the&lt;font size="3" face="Courier New"&gt; ${ProjDirPath}\src\*.cpp&lt;/font&gt; portion of the build command and then on the &lt;em&gt;Behaviour&lt;/em&gt; tab, in the &lt;em&gt;Build (Incremental build)&lt;/em&gt; text box I added &lt;font face="Courier New"&gt;-u ${selected_resource_loc}. &lt;/font&gt;

  &lt;div style="clear: both"&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;/font&gt;



&lt;h2&gt;The Lint Build&lt;/h2&gt;

&lt;div style="clear: both"&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-RE6vnzbdcn0/UACZAcfYmII/AAAAAAAABTM/w5GWTgR8DK4/s1600-h/image%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/-KRcCwmINTYg/UACZA-QuWGI/AAAAAAAABTU/7YlOn6WAyCY/image_thumb%25255B3%25255D.png?imgmax=800" width="375" height="135" /&gt;&lt;/a&gt;My build drop down now has my new build and to lint my project I no longer have to use the External tools command. I just use this new build. &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-sxfERKnK7cI/UACZCtL6b0I/AAAAAAAABTc/DSb0GLGMCos/s1600-h/image%25255B11%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/-icdXW3NcR4Q/UACZDmOrwjI/AAAAAAAABTk/TNk0DGIVMQE/image_thumb%25255B5%25255D.png?imgmax=800" width="502" height="168" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The command console looks very similar while the project is being &lt;em&gt;linted&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div style="clear: both"&gt;&lt;/div&gt;
&lt;a href="http://lh6.ggpht.com/-dQv0GKXfVgY/UACZEncXMaI/AAAAAAAABTs/sVX4sKu60BQ/s1600-h/image%25255B15%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh5.ggpht.com/-ijkSDPVczlc/UACZFgk6X7I/AAAAAAAABT0/0yt2H2aLi4g/image_thumb%25255B7%25255D.png?imgmax=800" width="501" height="221" /&gt;&lt;/a&gt;But the problems tab now shows a clickable list of warnings and errors. 










  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/8261161713568199185/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=8261161713568199185" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8261161713568199185?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8261161713568199185?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/AHsmNRcHeHo/parsing-lint-errors-in-eclipse.html" title="Parsing Lint Errors In Eclipse" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-hJA6Ve1ryqA/UACY3s3cGSI/AAAAAAAABR0/v5XtZu3toEk/s72-c/image_thumb%25255B9%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/07/parsing-lint-errors-in-eclipse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUGQH4-eip7ImA9WhJREU8.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-1474368517171410074</id><published>2012-07-12T13:17:00.001-07:00</published><updated>2012-07-12T13:17:01.052-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-12T13:17:01.052-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="NetBurner" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>Eclipse: Meet the New Workspace–Same as the Old Workspace</title><content type="html">&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When you create a lot of projects under Eclipse you'll probably eventually find you want to have more than one workspace. Sometimes when you upgrade to a new version of Eclipse (like to Juno) you might decide that is a good time to start a fresh workspace. The problem is, if you're like me, you're mostly interested in cleaning out the old projects. You like your customized fonts, colors, key bindings, external tools etc. Here are a couple of tips on making life a little easier when creating a new workspace.&lt;/p&gt;  &lt;h3&gt;Preferences&lt;/h3&gt;  &lt;ol&gt;   &lt;li&gt;In the old workspace, use &lt;em&gt;File-&amp;gt;Export&lt;/em&gt; and in the dialog that results&amp;#160; open the &lt;em&gt;General-&amp;gt;Preferences&lt;/em&gt; option as shown in the first image below. Hit &lt;em&gt;Next&lt;/em&gt; and in that dialog select all preferences and browse to a location to save those preferences (see second image).       &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-AG_LeP4Nf50/T_8wqbJ3TwI/AAAAAAAABQ4/gzUlofmern4/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 10px 9px 0px 1px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/-odmWbX0Y4Cs/T_8wrN0-LrI/AAAAAAAABRA/r-H1J9eH3j8/image_thumb%25255B1%25255D.png?imgmax=800" width="348" height="355" /&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/-nswDmzBBTMQ/T_8wr3eDQSI/AAAAAAAABRI/gTcGjXjTDXA/s1600-h/SNAGHTML8abb84%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 10px 0px 0px 10px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML8abb84" border="0" alt="SNAGHTML8abb84" src="http://lh6.ggpht.com/-B9jN0eC-FkU/T_8wsq9QZ5I/AAAAAAAABRQ/QD9UKKHs7qs/SNAGHTML8abb84_thumb%25255B2%25255D.png?imgmax=800" width="404" height="459" /&gt;&lt;/a&gt;       &lt;div style="clear: both"&gt;&lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;In your new workspace, you'll use &lt;em&gt;File-&amp;gt;Import&lt;/em&gt; and open the same &lt;em&gt;General-&amp;gt;Preferences&lt;/em&gt; item and click &lt;em&gt;Next&lt;/em&gt;.In the dialog, you then select &lt;em&gt;Import All&lt;/em&gt; and browse to where you saved your preferences in step 1. &lt;font size="3"&gt;&lt;em&gt;(If you want to save your current new workspace settings feel free to export them to a file before importing the old settings. This way you can get back to a clean install slate if it's ever needed).&lt;/em&gt; &lt;/font&gt;&lt;a href="http://lh3.ggpht.com/-6b-WeKtcyw4/T_8wtFHvnjI/AAAAAAAABRY/pVuPtT9PEPg/s1600-h/SNAGHTML9f2148%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 9px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML9f2148" border="0" alt="SNAGHTML9f2148" src="http://lh3.ggpht.com/-J6U7aA1ReDg/T_8wu0VA1SI/AAAAAAAABRg/I_JssUFftoQ/SNAGHTML9f2148_thumb%25255B1%25255D.png?imgmax=800" width="417" height="420" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Alternately many settings are stored in the workspace under the &lt;font face="Courier New"&gt;.metadata\.plugins\org.eclipse.core.runtime&lt;/font&gt; folder. You'll find a directory called &lt;font face="Courier New"&gt;.settings&lt;/font&gt; that you can just copy from the old workspace into the new workspace. When I use this method, I prefer to rename my original &lt;font face="Courier New"&gt;.settings&lt;/font&gt; to &lt;font face="Courier New"&gt;orig.settings&lt;/font&gt; just in case I ever need it.       &lt;br /&gt;      &lt;br /&gt;      &lt;h3&gt;External Tool Configurations&lt;/h3&gt;   &lt;/li&gt;    &lt;li&gt; If you've painstakingly set up some external tools (like Lint) you don't have to go through that process again either. Like application run/debug configurations, external tools are just another form of a launch configuration and they too can be copied from the old workspace directory in the new workspace directory. You'll find your launches in the old workspace directory under &lt;font face="Courier New"&gt;.metadata\.plugins\org.eclipse.debug.core\.launches&lt;/font&gt;. You can just pick and choose the&lt;font face="Courier New"&gt; .launch&lt;/font&gt; files you want to copy over. Your launch configurations should be easily recognizable: for example if you had an external tool configured to read &amp;quot;Lint Current File&amp;quot;, you should see a corresponding&lt;font face="Courier New"&gt; Lint Current File.launch&lt;/font&gt; file. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;And of course if you want to copy over some of the existing projects into the new workspace the same &lt;em&gt;File-&amp;gt;Import&lt;/em&gt; dialog has an option under &lt;em&gt;General&lt;/em&gt; named &lt;em&gt;Existing Projects into Workspace&lt;/em&gt;, that will be your friend. In the second dialog don't miss the &lt;em&gt;Copy projects into workspace&lt;/em&gt; check box that will copy the project into your new workspace. If you don't select that it will keep all the old files in their original location in the old workspace and just let you use those files from the new workspace.&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/1474368517171410074/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=1474368517171410074" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/1474368517171410074?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/1474368517171410074?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/w7_rqkuLXJ0/eclipse-meet-new-workspacesame-as-old.html" title="Eclipse: Meet the New Workspace–Same as the Old Workspace" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-odmWbX0Y4Cs/T_8wrN0-LrI/AAAAAAAABRA/r-H1J9eH3j8/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/07/eclipse-meet-new-workspacesame-as-old.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UGQXo-cCp7ImA9WhJTGEQ.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-1757282497793333889</id><published>2012-06-28T06:47:00.000-07:00</published><updated>2012-06-28T06:47:00.458-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-28T06:47:00.458-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><title>CPU 100% Busy?</title><content type="html">&lt;p&gt;This same problem has bitten me twice, once in 2009 and once in 2012 so it's worth a post. &lt;/p&gt;  &lt;p&gt;If your computer is approaching old age (if it's a laptop that can be the ripe old age of 2) and seems to need a walker to keep moving the Task Manager application can be your best friend. Right-click on the status bar in an empty area and from the popup select&lt;font face="Consolas"&gt;&lt;em&gt; &lt;font face="Georgia"&gt;Start Task Manager&lt;/font&gt;&lt;/em&gt;&lt;/font&gt;. In the &lt;em&gt;View&lt;/em&gt; menu select &lt;em&gt;Show Kernel Times&lt;/em&gt;. Now the red portion of the graph is showing you low level kernel time being used by the CPU. Typically this will be very low. When your CPU is busy and a significant portion of the graph is red, beware!&lt;/p&gt;  &lt;p&gt;If you're running a particular application and it always starts consuming 100% of your CPU, the application may not be to blame. It could very well be your hard drive. It just so happens that this application writes out temporary files and it's the first application to run across the bad portion of your hard drive. &lt;/p&gt;  &lt;p&gt;The first time I experienced unusually high CPU usage it was happening all the time so it was easy to see the problem as systemic. The next time it only happened when I was in Visual Studio and even then only when using &lt;a href="http://www.jetbrains.com/resharper"&gt;ReSharper&lt;/a&gt; and even then only when viewing .xaml files. At first I even thought I narrowed it down to the use of the color settings on the .xaml files. All of these were red herrings. ReSharper does create lots of files to speed up usage and the problem was probably due to corruption of these files.&amp;#160; I should have become more suspicious when Skype also started consuming all my CPU (turns out it creates a lot more temporary files than you would think).&lt;/p&gt;  &lt;p&gt;Still not convinced it's your hard drive? Run &lt;a href="http://www.grc.com/sr/spinrite.htm" target="_blank"&gt;SpinRite&lt;/a&gt; and find out. No, Steve Gibson didn't pay me to say that. It's just that I have used it to rescue data from three different systems and it has proven to be well worth the purchase price. If I had used it in maintenance mode every couple of months I probably would have saved myself a lot of pain. Running it will not only confirm that you have hard drive damage it will do its darndest to recover your data. This can be very, very slow so you want to start this process when you have a couple of days to let it run. If you don't have any damage it will take hours instead of days, the time depends on many factors including the speed of your HD and its size. &lt;/p&gt;  &lt;p&gt;If I don't have a recent back-up that I'm confident doesn't have damage, I run SpinRite to recover as much data as possible. If SpinRite can't recover data it will tell you so you'll know you have to keep an eye out for apps that don't behave right even after a HD replacement. Once SpinRite finishes I do a fresh backup. Then I purchase a new hard drive (moving to a SDD drive takes the sting out of this) and restore my backup onto the new drive. I &lt;a href="http://syncor.blogspot.com/2012/06/why-i-happy-my-laptop-hard-drive-failed.html" target="_blank"&gt;detailed the process on another blog post&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;I just wanted to make this post to &lt;strong&gt;EMPHASIZE&lt;/strong&gt; that seeing unusually high CPU usage is commonly (in my experience) a result of a bad HD.&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/1757282497793333889/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=1757282497793333889" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/1757282497793333889?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/1757282497793333889?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/hPbTbUIQDHY/cpu-100-busy.html" title="CPU 100% Busy?" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/06/cpu-100-busy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8AR3gzfip7ImA9WhJTF04.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-4527824750721261233</id><published>2012-06-26T12:10:00.001-07:00</published><updated>2012-06-26T12:10:46.686-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-26T12:10:46.686-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="iPad" /><category scheme="http://www.blogger.com/atom/ns#" term="Nontechnical" /><category scheme="http://www.blogger.com/atom/ns#" term="Entertainment" /><title>iPad App Euthanasia</title><content type="html">&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-FG1zirAXuMM/T-oJEJuqWTI/AAAAAAAABQQ/OjQasyArW70/s1600-h/photo%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 4px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="photo" border="0" alt="photo" align="left" src="http://lh4.ggpht.com/-oM12401OKOM/T-oJFN7ZusI/AAAAAAAABQY/JTlpSblujNI/photo_thumb%25255B1%25255D.png?imgmax=800" width="460" height="354" /&gt;&lt;/a&gt;I love &lt;a href="http://www.pluralsight-training.net/microsoft/" target="_blank"&gt;Pluralsight&lt;/a&gt; and they have a pretty nice iPad app, but fairly often I'll be in the middle of going from one segment to the next and it will fail to retrieve the video leaving me with a black screen. I can exit the app, restart the app etc. but I can't watch anymore videos. My solution in the past has been to hold down the button that completely powers off the iPad and then do a cold boot. This causes everything to start over. If you have an app that hangs, there's now an easier way to teach it a lesson. Plus this is useful if you just feel like killing an app you don't want your spouse to know you were using. (You know like the one you use to buy anniversary gifts, yeah that's the one). &lt;/p&gt;  &lt;p&gt;The key is the multitasking menu. You can get to it by double-clicking the home button ( or by awkwardly swiping four fingers up if you have the multi-touch gestures enabled under settings). This brings up the running apps on the menu bar at the bottom. Now you can touch and hold an application. A little red circle with a minus symbol appears as shown in the image. Touch that icon and the app dies without so much as a whimper. Then you can just launch it again and if you're lucky the hung behavior will be cured. &lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/4527824750721261233/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=4527824750721261233" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/4527824750721261233?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/4527824750721261233?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/Ny1x-SSfvMg/ipad-app-euthanasia.html" title="iPad App Euthanasia" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-oM12401OKOM/T-oJFN7ZusI/AAAAAAAABQY/JTlpSblujNI/s72-c/photo_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/06/ipad-app-euthanasia.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0EGQHo4eyp7ImA9WhNWEUs.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-2849596184399339220</id><published>2012-06-22T14:59:00.001-07:00</published><updated>2012-12-10T12:00:21.433-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-10T12:00:21.433-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><category scheme="http://www.blogger.com/atom/ns#" term="Hg" /><title>Shouldn't You be Using Version Control?</title><content type="html">&lt;p&gt;By &amp;quot;you&amp;quot; I don't mean just everyone involved with software development, I'm thinking that &lt;strong&gt;EVERYONE &lt;/strong&gt;would see benefits. If you use Word and Excel in a company of one person&amp;#160; you would see benefits to using version control software. If you use &lt;a href="http://www.dropbox.com" target="_blank"&gt;DropBox&lt;/a&gt; you're already using version control software but you may not realize it. &lt;em&gt;Did you know that DropBox keeps track of past revisions of modified documents?&lt;/em&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Have you ever opened a document, made changes and hit Save instead of Save As? &lt;/li&gt;    &lt;li&gt;Have you ever accidentally modified or deleted some text and not noticed until the next time you opened the document? &lt;/li&gt;    &lt;li&gt;Have you ever changed a document and then decided you had it right the first time? &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If so, version control will be your best friend and you can feel free to send me free espresso for life. The ascent of distributed version control software (DVCS) is changing the game for everyone. You'll notice I'm avoiding using terms like Source Code Management here because I think DVCS can be so much more. &lt;/p&gt;  &lt;h2&gt;The Cost of Entry is Gone&lt;/h2&gt;  &lt;p&gt;It used to be that using version control software had a high up-front cost in terms of labor and knowledge. You had to set up a server (it could be on the same machine as the client), then you had to set up the client. The server tools were usually command line driven, and you had to learn a set of commands just for set up and maintenance of the server.&amp;#160; Many people found it easier to just make manual backups. &lt;/p&gt;  &lt;p&gt;Distributed version control uses a peer-to-peer approach. You can get many benefits from version control just by setting it up on your one machine.&amp;#160; Oh yeah the cost in $ is gone too, all the tools I'm talking about are free.&lt;/p&gt;  &lt;h2&gt;Getting Started with Mercurial&lt;/h2&gt;  &lt;p&gt;I'm going to focus on one DVCS tool called Mercurial (aka Hg) because I found it the easiest to work with. I'll also focus on Windows but Hg is available for Linux and Mac.&amp;#160;&amp;#160; Let's get to the &amp;quot;hard&amp;quot; part, how do you set it up. It's a two step process.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&amp;#160;&lt;a href="http://tortoisehg.bitbucket.org/download/index.html" target="_blank"&gt;Download TortoiseHg&lt;/a&gt; and install it. &lt;/li&gt;    &lt;li&gt;Right click on a folder you want to put under version control and select &lt;font face="Consolas"&gt;TortoiseHg-&amp;gt;Create Repository Here&lt;/font&gt;. In the dialog that pops up, feel free to read the options but typically all the defaults are exactly what you want so just click &lt;font face="Segoe UI"&gt;Create&lt;/font&gt;. &lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="http://lh6.ggpht.com/-67gSHNh6olk/T-TqnWCoiqI/AAAAAAAABO8/aHwUZcZb374/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-7DRwgVts1yQ/T-Tqnzqsg1I/AAAAAAAABPE/qvQc92jvITA/image_thumb%25255B1%25255D.png?imgmax=800" width="473" height="428" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;strong&gt;Geek Tip:&lt;/strong&gt; A repository is really nothing but a sophisticated folder called .hg that gets created at the root level of the folder you're working with. You don't ever need to look in here and you shouldn't modify anything in there either, unless you read the manuals and really know what your doing. Just consider it magic. Also if you want to sound hip at your next dinner party don't call it a repository, all the cool kids say &amp;quot;repo&amp;quot;. Of course I use words like hip and groovy so my cool credentials are pretty suspect.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Adding Files To Track&lt;/h2&gt;  &lt;p&gt;That's it your done (well with setting it up anyway)! You are now running version control software. It &lt;strong&gt;can&lt;/strong&gt; keep track of every file in that folder and in every subfolder under that folder. You still have to tell Hg which files you want track. Actually it's easier to tell it which files you &lt;strong&gt;don't&lt;/strong&gt; want to track&amp;#160; and then let it automatically track all the others.&amp;#160; &lt;/p&gt;  &lt;h3&gt;Tracking Everything&lt;/h3&gt;  &lt;p&gt;If you want to track everything, just right click on the folder, select TortoiseHg-&amp;gt;Add Files…&amp;#160;&amp;#160; (see the image below and follow the green arrows to Add Files… ignore the green arrow pointing to Edit Ignore Filter for now ).&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;RED HOT TIP:&lt;/font&gt;&lt;/strong&gt; You can also get to this menu from anywhere inside the tracked folder, you can even just right-click on some white space inside a folder view and the menu will work. The commands apply to the entire repository, that includes all the subfolders&lt;/em&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh5.ggpht.com/-RWfHUAYIJdg/T-TqoZrHedI/AAAAAAAABPM/59-TPnZgRx4/s1600-h/image%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-K9Fc5jijhK0/T-Tqo4otIHI/AAAAAAAABPU/Ggy6V3JHVwQ/image_thumb%25255B3%25255D.png?imgmax=800" width="364" height="398" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You'll get a dialog with a list of all the files in all the subfolders on the left and they will all be checked. Click the Add button and they will all be added. This is a good way to go if this folder (and all subfolders only contain files like the Word and Excel files you want to protect). If for some reason the files aren't all selected you can click that single checkbox at the top to select them all, clearing that checkbox at the top clears all the ones below.&lt;/p&gt;  &lt;h3&gt;Hg can work with binary files too&lt;/h3&gt;  &lt;p&gt;Hg can keep track of binary files as well as straight text files. Depending on the type of binary file this might require much less storage than you think. I'll talk a little more about that later but in case you deal mostly with binary files I wanted to keep you interested.&lt;/p&gt;  &lt;h3&gt;Being Selective about what you track&lt;/h3&gt;  &lt;p&gt;If you have some files you &lt;strong&gt;don't&lt;/strong&gt; want to track, let's say you always create pdf's of all your word documents and since you can easily re-create those you don't want to track them. Or perhaps you have some gargantuan file that you feel will take too much space to track, you can tell Hg to ignore files. The dialog box is very powerful and a little geeky but I'll keep it simple. You can type in the top simple things like *.pdf and all pdf files in all folders will be ignored. You can type the name of a subfolder and all files in the subfolder will be ignored. You&amp;#160; can also click on a file in the right hand &lt;strong&gt;&lt;font face="Segoe UI"&gt;Untracked files&lt;/font&gt;&lt;/strong&gt; area and this will copy the path to the top and you can click &lt;font face="Segoe UI"&gt;Add&lt;/font&gt;. All ignored entries will be shown on the left. As soon as you click &lt;font face="Segoe UI"&gt;Add&lt;/font&gt; any untracked files on the right that match what you type will disappear. The &lt;strong&gt;&lt;font face="Segoe UI"&gt;Untracked files&lt;/font&gt;&lt;/strong&gt; is showing you only the files Hg doesn't know what to do with, meaning you haven't added or ignored them yet.&amp;#160; Once you have the ignore list set up, close it and then do the Add procedure as described above.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-axdCBpfws7M/T-TqpOFHmkI/AAAAAAAABPc/4XiT3rRoyig/s1600-h/SNAGHTML33f52e1%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML33f52e1" border="0" alt="SNAGHTML33f52e1" src="http://lh5.ggpht.com/-vnpvvZADs6U/T-TqpnUqnnI/AAAAAAAABPk/PGqsUXyWbBA/SNAGHTML33f52e1_thumb%25255B2%25255D.png?imgmax=800" width="658" height="339" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Why not just track everything?&lt;/h3&gt;  &lt;p&gt;Tracking files does require disk space. Hg is very, very efficient about how it does it but there is a cost. Generally tracking compressed binary files (like those ending in .zip) can be expensive. That's not because it's a binary file but because compression tends to change every byte in a file so Hg has to make a full copy. That said Hg is smart about tracking already compressed files (like .png, or .jpeg) files. It doesn't try to compress them again when storing copies to track.&amp;#160; If a binary file changes in a logical manner, Hg will track just enough so that it can recreate any version of the binary. If you have gobs of disk space you can track everything with impunity. &lt;/p&gt;  &lt;h2&gt;The Daily Routine – Checking in&lt;/h2&gt;  &lt;p&gt;So now you have a repository set up and it knows which files you want to track. Now you tell it to actually go ahead and track them, software weenies like me call this &lt;em&gt;committing&lt;/em&gt;. This is why most software engineers are married, we're not afraid of commitment.&amp;#160; Right click anywhere in the folder hierarchy being tracked select TortoiseHg-&amp;gt;Hg Commit…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-yOR00kkXuws/T-TqqG8IJ9I/AAAAAAAABPs/7HAnTnzFXEI/s1600-h/SNAGHTML3640761%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML3640761" border="0" alt="SNAGHTML3640761" src="http://lh3.ggpht.com/-cWTBQHhoHp0/T-TqqsWAWxI/AAAAAAAABP0/uVk8zNPAb9E/SNAGHTML3640761_thumb%25255B1%25255D.png?imgmax=800" width="816" height="363" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="clear: both"&gt;You'll get a dialog much like the one shown above. Again the techie roots of Hg are showing but you can ignore most of what is here.&amp;#160; The one thing you can't omit is section 3. You must enter something (anything will do) in this area. I would encourage you to enter something meaningful. These messages entered here show up in tools you can use later to see a list of commits and they can be very helpful in finding a previous version. Once you have a message you can hit Commit. The green arrow is showing a popup that will let you quickly select previous commit messages. This can be helpful to stick in boiler plate code like. &amp;quot;Acme Proposal changes as requested by &amp;quot;. Remember even though this example only shows one file being checked in a commit can check in every file that's been modified since the previous commit. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;font color="#ff00ff"&gt;Hot Pink Tip:&lt;/font&gt; The pink entry shown above is a file Hg doesn't know what to do with. It hasn't been added for tracking and it hasn't been ignored. I did this on purpose because this is a special directory Word creates to automatically back up your changes. This directory (and the file) goes away once you close Word. You can safely ignore these files. If it bothers you, you can add &amp;quot;~$&amp;quot; to your filter list and they will no longer show up.&lt;/em&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you created a new Word document, it too will show up in the list in hot pink. Put a checkmark next to it and Hg will both add it and then commit it for you in one step. It will show a dialog asking you to confirm that you do want to track the file. Just Click &lt;font face="Segoe UI"&gt;Add&lt;/font&gt; and your new document is now tracked and committed to the repo.&amp;#160; The dialog will stay open (I think it's lonely), so just click &lt;font face="Segoe UI"&gt;Close&lt;/font&gt;.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;strong&gt;Hot Confession:&lt;/strong&gt; Remember when I told you, you had to add files first and then commit them? Well I lied. I wanted you to know all the steps. You can really skip the Add Files… step and just jump right to commitment. The commitment dialog does the adding for you&lt;/em&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you're committing a lot of files at once and feeling overwhelmed you can use section 1 to type a filter to only show you matching files. Then you can type a message for just those files and commit. Now you know why the dialog hangs around. Remove the filter or type a new one and keep committing files in logical groups with logical commit messages. &lt;/p&gt;  &lt;h2&gt;What's the Diff&lt;/h2&gt;  &lt;p&gt;One thing software weenies really like about version control is that we can run tools that show us all the changes from version to version. This is incredibly useful, it lets us find quickly where we inserted the bug into the code you bought. It would be useful for you too, but unfortunately, Microsoft .doc and .docx formats are binary. That means they look something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;ííVð¶æÇÛF§{¬e&amp;lt;n!³‰ZÌx\„ÇUvm&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you save your files in .rtf, that is a text format and you can do compares between various versions to see what's changed. Unfortunately changing a few characters in an .rtf file shows up in the difference viewer looking like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;-\par This is a .doc not a .docx}{\rtlch\fcs1 \af1\afs48 \ltrch\fcs0 \f1\fs48\kerning32\insrsid4134052\charrsid2456785 \line }{\rtlch\fcs1 \af1\afs48 \ltrch\fcs0 \f1\fs48\kerning32\insrsid6251120\charrsid2456785        &lt;br /&gt;+\par This is a .}{\rtlch\fcs1 \af1\afs48 \ltrch\fcs0 \f1\fs48\kerning32\insrsid8134959 rtf}{\rtlch\fcs1 \af1\afs48 \ltrch\fcs0 \f1\fs48\kerning32\insrsid14756322&amp;#160; not a .docx}{\rtlch\fcs1 \af1\afs48 \ltrch\fcs0 \f1\fs48\kerning32\insrsid8134959&amp;#160; and not a .doc         &lt;br /&gt;+}{\rtlch\fcs1 \af1\afs48 \ltrch\fcs0 \f1\fs48\kerning32\insrsid4134052\charrsid2456785 \line }{\rtlch\fcs1 \af1\afs48 \ltrch\fcs0 \f1\fs48\kerning32\insrsid6251120\charrsid2456785&lt;/em&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;&lt;strong&gt;Hot Meandering Aside you can skip&lt;/strong&gt;: Sort of makes you long for the simplicity of WordPerfect doesn't it? Believe it or not if you read that gibberish carefully you can tell what I deleted (that line starts with –) and what I added (the lines that starts with +). Actually I just changed a few words on a single line. This by the way is a small subset of hundreds of lines that were different between the two .rtf docs.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So while you do get significant advantages from using version control, the Hg difference tool is not one of them. Word however can compare two versions of a document for you in a meaningful way so you can still have the advantage. It does require &amp;quot;updating&amp;quot; to an old version, making a copy outside your repo, then updating back to most recent version but that and topics like cloning your repo are best left for another day. &lt;/p&gt;  &lt;h2&gt;The Workbench&lt;/h2&gt;  &lt;p&gt;The penultimate topic I want to mention is the Hg Workbench. It's right there in the right-click menu. It can do a lot but I won't go into details. I just want you to know it's there and that it's one of easiest ways to see a history of your commits. Here's a look at the one I created while writing this post.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-WdglABU7CUM/T-TqrenakAI/AAAAAAAABP8/jOoYDicut2I/s1600-h/SNAGHTML3c1dbb1%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML3c1dbb1" border="0" alt="SNAGHTML3c1dbb1" src="http://lh6.ggpht.com/-Baxta1UFReY/T-Tqr1y2nfI/AAAAAAAABQE/6jFhEeMygNQ/SNAGHTML3c1dbb1_thumb%25255B1%25255D.png?imgmax=800" width="528" height="318" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;&amp;#160;&lt;/h2&gt;  &lt;h2&gt;Backups in the cloud made free and easy&lt;/h2&gt;  &lt;p&gt;The ultimate topic I want to mention is that you can still use a centralized Hg server. In fact &lt;a href="http://bitbucket.org" target="_blank"&gt;BitBucket&lt;/a&gt; (the place you downloaded TortoiseHg from) offers free accounts for teams of 5 or fewer for unlimited repos. This means you can push your local repo up to their servers whenever you want. When your computer explodes, you'll be able to get all your files back by doing a simple clone of your repo from their server. Not bad for free. Again I'm not going into the details on this but BitBucket has a &lt;a href="https://confluence.atlassian.com/display/BITBUCKET/bitbucket+101" target="_blank"&gt;nice tutorial&lt;/a&gt; for those interested. &lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/2849596184399339220/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=2849596184399339220" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/2849596184399339220?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/2849596184399339220?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/zgdhx0BhLl8/shouldn-you-be-using-version-control.html" title="Shouldn&amp;#39;t You be Using Version Control?" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-7DRwgVts1yQ/T-Tqnzqsg1I/AAAAAAAABPE/qvQc92jvITA/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/06/shouldn-you-be-using-version-control.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UCQXo_fSp7ImA9WhJTE0s.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-6002002228384640751</id><published>2012-06-22T04:41:00.000-07:00</published><updated>2012-06-22T04:41:00.445-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-22T04:41:00.445-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Hg" /><category scheme="http://www.blogger.com/atom/ns#" term="SVN" /><title>Splitting a large SVN into multiple Hg repos</title><content type="html">&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In my previous post on moving from SVN to Hg I gave the detailed steps on how to move a single project. This post doesn't have the same level of detail so I'm assuming you read that post. This post talks about the things you'll do differently that allow you to more easily extract many projects to their own Hg repos.&lt;/p&gt;  &lt;p&gt;You'll want to start by creating a new directory for your full svn repo, so you'll &lt;font face="Consolas"&gt;svnadmin create&lt;/font&gt; just like before. This time though the &lt;font face="Consolas"&gt;svnsync init&lt;/font&gt; should be done to the root level of your svn repo. You'll then &lt;font face="Consolas"&gt;svnsync sync&lt;/font&gt; into your new full repo. Once you have a fully copy of your repo locally there are a few changes to the hg convert process. &lt;/p&gt;  &lt;p&gt;First you'll need a mapping file for each project. The mapping file will instruct &lt;font face="Consolas"&gt;hg convert&lt;/font&gt; to extract just the project of interest and rename that project without the extra folders that were probably in your svn repo for organizational purposes.&lt;/p&gt;  &lt;p&gt;For example, in my &lt;a href="http://www.projectlocker.com/"&gt;ProjectLocker&lt;/a&gt; svn repo I have the following path&lt;/p&gt;  &lt;p&gt;…/svn/HarborShipSupply/HssDataLayer&lt;/p&gt;  &lt;p&gt;I want to both extract just this project, and I want the files to end up directly in the folder I specify. For example let's assume I&amp;#160; convert to a folder called &lt;em&gt;DataLayer&lt;/em&gt;. I don't want to end up with &lt;em&gt;DataLayer/HarborShipSupply/HssDataLayer&lt;/em&gt;. I just want all the source files and directories that belong to the HssDataLayer project directly under the &lt;em&gt;DataLayer &lt;/em&gt;folder.&amp;#160;&amp;#160; I can achieve both of these goals with a file mapping text file&amp;#160; named &lt;em&gt;DataLayerImport.txt&lt;/em&gt; that looks like this:&lt;/p&gt; &lt;font face="Consolas"&gt;&lt;font size="3"&gt;include &amp;quot;HarborShipSupply/HssDataLayer&amp;quot;&amp;#160;&amp;#160;&amp;#160;&amp;#160; # gets just the project of interest     &lt;br /&gt;rename &amp;quot;HarborShipSupply/HssDataLayer&amp;quot; &amp;quot;.&amp;quot;&amp;#160; # removes folder hierarchy&lt;/font&gt;&amp;#160;&lt;/font&gt;  &lt;p&gt;Now when I use the hg convert command I specify the filemap, the file that has my entire svn repo, and the destination folder.&lt;/p&gt;  &lt;p&gt;&lt;font size="3" face="Consolas"&gt;hg convert –filemap DataLayerImport.txt file:///g:/test/full_project_locker g:/Test/DataLayer&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;When that's done I can use TortoiseHg to issue and Update and my project's in Hg ready for more coding.&lt;/p&gt;  &lt;p&gt;Once I create multiple file maps. I can put all the hg convert commands in a .bat file and let all my svn projects convert while I go write some code.&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/6002002228384640751/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=6002002228384640751" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/6002002228384640751?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/6002002228384640751?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/C0XAkIWNgqc/splitting-large-svn-into-multiple-hg.html" title="Splitting a large SVN into multiple Hg repos" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/06/splitting-large-svn-into-multiple-hg.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4MRnY8eCp7ImA9WhJTE0w.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-3552308210211403497</id><published>2012-06-20T17:05:00.000-07:00</published><updated>2012-06-21T14:43:07.870-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-21T14:43:07.870-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Hg" /><category scheme="http://www.blogger.com/atom/ns#" term="SVN" /><title>Moving a repo from SVN to Hg</title><content type="html">&lt;p&gt;I currently use SVN (aka Subversion) with my projects hosted on &lt;a href="http://www.projectlocker.com/"&gt;ProjectLocker&lt;/a&gt;. For a variety of reasons I got interested in Hg (aka Mercurial) for my source code control. One big impediment to switching source code control systems is losing your existing history. Here are the steps I went through to move all of my current revisions for a single project from Subversion to Hg.&lt;/p&gt;  &lt;h2&gt;Moving the History&lt;/h2&gt;  &lt;p&gt;I originally thought I could sync directly from ProjectLocker to a local Hg repository but it didn't work, I had to create a local copy of my svn repo. In the steps below I'm using the actual paths I used just for simplicity, obviously your path names will vary. &lt;em&gt;[Note: The steps below are best if you just want to get one project out of an svn repo and move it to Hg. If you're going to move a bunch a projects, there's a more efficient process that I'll go over in an upcoming post. It will still help you to read this post to be familiar with the detailed steps. The alternate approach only changes a few things]&lt;/em&gt;.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Commit any changes still outstanding up to your old svn repo. &lt;/li&gt;    &lt;li&gt;Create a folder for your local copy of your old svn repo G:\Test\PulseGenLib &lt;/li&gt;    &lt;li&gt;Overview of this step: Open a Command prompt and move to that folder. Use svnadmin to create an empty repository. Create an empty pre-revprop-change.bat hook file. Here are the explicit commands:&amp;#160; &lt;ol&gt;       &lt;li&gt;&lt;font face="Consolas"&gt;cd G:\Test\PulseGenLib&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Consolas"&gt;svnadmin create G:\Test\PulseGenLib&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Consolas"&gt;touch&amp;#160; pre-revprop-change.bat&lt;strong&gt; &lt;/strong&gt;&lt;/font&gt;&lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Move this new empty hook&amp;#160; file into G:\Test\PulseGenLib\hooks &lt;/li&gt;    &lt;li&gt;Back in the Command Prompt initialize the new svn repo to the single project of interest. Then you will use svnsync to download all the revisions. This points out one of the weaknesses of a SCC system like SVN. Even if the project you're interested in is new with only a handful of revisions the sync has to walk through all the revisions. In my case that was only 1500 but it still took about 20 minutes.&amp;#160; Thank goodness I didn't move the history from my own svn server when I started on ProjectLocker.      &lt;ol&gt;       &lt;li&gt;&lt;font face="Consolas"&gt;svnsync init &lt;a href="file:///G:/Test/PulseGenLib"&gt;file:///G:/Test/PulseGenLib&lt;/a&gt; &lt;/font&gt;&lt;a href="https://free1.projectlocker.com/Company/svn/Folder/Project"&gt;&lt;font face="Consolas"&gt;https://free1.projectlocker.com/Company/svn/Folder/Project&lt;/font&gt;&lt;/a&gt;           &lt;br /&gt;(Of course this should be a real path to your project on your host provider. I usually just use &lt;a href="http://tortoisesvn.tigris.org/"&gt;TortoiseSvn&lt;/a&gt; and right-click on my local project folder and select Repo-Browser to make sure I get the proper path. You should see – &amp;quot;copied properties for revision 0 after executing this.) &lt;/li&gt;        &lt;li&gt;&lt;font face="Consolas"&gt;svnsync sync &lt;/font&gt;&lt;a href="file:///G:/Test/PulseGenLib"&gt;&lt;font face="Consolas"&gt;file:///G:/Test/PulseGenLib&lt;/font&gt;&lt;/a&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/li&gt;    &lt;li&gt;Start the TortoiseHG Workbench.&amp;#160; Select File –&amp;gt; Settings. Select Extensions from&amp;#160; from the list on the left. Check the 'convert' checkbox and click OK. You'll only need to do this once as this method does it in the&amp;#160; Global settings. &lt;/li&gt;    &lt;li&gt;     &lt;div style="clear: both"&gt;&lt;/div&gt; Go back to the command prompt       &lt;ol&gt;       &lt;li&gt;&lt;font face="Consolas"&gt;G:&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Consolas"&gt;cd G:\Test&lt;/font&gt; &lt;/li&gt;        &lt;li&gt;&lt;font face="Consolas"&gt;hg convert &lt;a href="file:///G:/Test/PulseGenLib"&gt;file:///G:/Test/PulseGenLib&lt;/a&gt;&lt;/font&gt; &lt;/li&gt;     &lt;/ol&gt;      &lt;p&gt;You should see some converting messages and a revision number for every commit in your project. (Not every commit in the SVN repo).&amp;#160; Your _hg folder will now have all the revisions. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;Using TortoiseHg you can right click on the folder and do an Update. Examine the structure to make sure the structure imposed by your svn cloning is to your liking. If not you can move files and folders around by right-clicking and using the TortoiseHg-&amp;gt;Rename File… command. &lt;/li&gt;    &lt;li&gt;Log in to your &lt;a href="http://bitbucket.org" target="_blank"&gt;BitBuckets&lt;/a&gt; account and create a new repository.&amp;#160; &lt;/li&gt;    &lt;li&gt;I use ssh (so I don't have to type names and passwords – but you can use https ) and since I've previously used PuttyGen to generate keys I fire up Pageant (if it isn't running) and right click and add my key. Then I can grab the ssh URL from BitBucket and push this repository up. That looks something like:      &lt;br /&gt;&lt;font face="Consolas"&gt;hg push ssh://hg@bitbucket.org/username/target_repo. &lt;/font&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;h2&gt;&amp;#160;&lt;/h2&gt;  &lt;h2&gt;Switching Over Your Eclipse Project Folder&lt;/h2&gt;  &lt;p&gt;I use both Eclipse (for embedded C++ work) and Visual Studio for C# and related PC development work. I do all the above steps in new folders and haven't yet touched my development folders. Now it's time to get the folder usable by Eclipse. (I'll save Visual Studio for another post). I wanted to gradually start using projects from Hg instead of SVN so I wanted&amp;#160; to keep using the same Eclipse workspace. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open Eclipse and&amp;#160; right-click the old project and select delete. If you want to move the folder to a safe backup don't delete the files on disk but you will want to then move the old folder off to a safe backup location. &lt;/li&gt;    &lt;li&gt;Using Windows explorer create a new folder with the same name as the old folder in the same directory. &lt;/li&gt;    &lt;li&gt;Right-click and use &lt;em&gt;TortoiseHg-&amp;gt;Clone…&lt;/em&gt;&amp;#160; Paste in the URL provided by BitBucket into the Source text box. Verify the destination is correct in the destination text box and then click Clone. &lt;/li&gt;    &lt;li&gt;Go back to Eclipse and select &lt;em&gt;File-&amp;gt;Import…&lt;/em&gt; Under &lt;em&gt;General&lt;/em&gt; select the &lt;em&gt;Existing Projects into Workspace&lt;/em&gt; option.&amp;#160; Select the &lt;em&gt;Select root directory:&lt;/em&gt; radio button and browse to the newly cloned project directory. Do &lt;strong&gt;NOT&lt;/strong&gt; select the &lt;em&gt;Copy projects into workspace&lt;/em&gt; check box.&amp;#160; Click the &lt;em&gt;Finish&lt;/em&gt; button. &lt;/li&gt;    &lt;li&gt;Go back to Windows Explorer and right click on the project folder and&amp;#160; use &lt;em&gt;TortoiseHg-&amp;gt;Edit Ignore Filter&lt;/em&gt; I typically add Release and Debug and a special &lt;a href="http://www.netburner.com/"&gt;NetBurner&lt;/a&gt; file called htmldata.cpp. Also I use a PowerShell script and a prebuild step to create a version.h file that I don't want in the repo so I add that as well.&amp;#160; Add the ignore filter to the repo&amp;#160; and do a commit. &lt;/li&gt;    &lt;li&gt;Back to Eclipse, right-click Team-&amp;gt;Share Project , select Mercurial &lt;/li&gt;    &lt;li&gt;Right click project Team-&amp;gt;Push. Enter the ssh url. For some reason my username field always comes up with &amp;quot;hg&amp;quot; so I type a username BitBucket will recognize and then click Finish or Next. The username isn't used for authentication but BitBucket does use it so show who did the commit. &lt;/li&gt; &lt;/ol&gt;  &lt;h2&gt;Troubleshooting&lt;/h2&gt;  &lt;p&gt;My first attempt at running svnsync appeared to fail. It stopped after 359 revisions.&amp;#160; I&amp;#160; used task manager to find the process called svnsync and kill it.&amp;#160; The destination repository was then locked so I had to use&lt;/p&gt;  &lt;pre&gt;     svn pd svn:sync-lock --revprop -r 0 &lt;a href="file:///G:/Test/PulseGenLib_hg"&gt;file:///G:/Test/PulseGenLib_hg&lt;/a&gt;&lt;/pre&gt;

&lt;p&gt;to unlock it. &lt;/p&gt;

&lt;p&gt;Turns out I just wasn't being patient enough. Revision 359 has a gobsmack of data in it so it takes a while (5 minutes or more) for the sync process to filter through it.&amp;#160; &lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/3552308210211403497/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=3552308210211403497" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/3552308210211403497?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/3552308210211403497?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/IGclEwnFEkY/moving-repo-from-svn-to-hg.html" title="Moving a repo from SVN to Hg" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/06/moving-repo-from-svn-to-hg.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQGRH05eSp7ImA9WhJTE00.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-8862943465308371656</id><published>2012-06-20T15:15:00.001-07:00</published><updated>2012-06-21T12:52:05.321-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-21T12:52:05.321-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="Hg" /><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><category scheme="http://www.blogger.com/atom/ns#" term="SVN" /><title>Replacing SVN's SubWCRev when using Hg</title><content type="html">&lt;p&gt;&lt;a href="http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html" target="_blank"&gt;SubWCRev&lt;/a&gt; is a nice tool bundled with Subversion. It allows you to replace tokens in a file with information from the source code repository. I previously blogged about how to &lt;a href="http://syncor.blogspot.com/2011/02/putting-current-svn-revision-in-header.html" target="_blank"&gt;use it in Eclipse&lt;/a&gt;. &lt;em&gt;I'm not going to repeat all the steps I used for the overall process so if you're wondering what the deal is with version.txt and version.h take a look at that post.&lt;/em&gt; Now that I'm switching over to Hg (Mercurial) for Source Code Control I wanted the equivalent functionality.&lt;/p&gt;  &lt;p&gt;I couldn't find an exact replacement but since I've been studying up on PowerShell I thought I could leverage it to achieve the goal.&lt;/p&gt;  &lt;p&gt;The tutorials I read indicated that typing PowerShell from a command prompt would launch the executable but I found I had to modify my Path environment variable to explicitly include the path:&lt;/p&gt;  &lt;p&gt;&lt;font color="#4bacc6"&gt;&amp;#160;&lt;/font&gt;&lt;font color="#008080" face="Consolas"&gt;C:\WINDOWS\system32\WindowsPowerShell\v1.0&lt;/font&gt; &lt;/p&gt;  &lt;p&gt;The new path variable was accessible to the next Command Prompt (the old DOS one) window I opened. It wasn't available to Eclipse until I restarted my machine. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;If you've never heard of PowerShell it is the new command line shell and scripting language for Windows. It is integrated with (and requires) .NET. This is a much more modern shell than the old cmd.exe we've all come to know and hate. If you have Windows 7 you already have PowerShell 2.0, if not you can &lt;/em&gt;&lt;a href="http://technet.microsoft.com/en-us/scriptcenter/dd742419.aspx"&gt;&lt;strong&gt;&lt;em&gt;downloaded Windows PowerShell&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;em&gt;. It's easy to think you have PowerShell 1.0 on Windows 7 because in their infinite goofiness MS put the executable here:&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&lt;font face="Consolas"&gt;C:\Windows\System32\WindowsPowerShell\&lt;strong&gt;&lt;font size="5"&gt;V1.0&lt;/font&gt;&lt;/strong&gt;\PowerShell.exe&lt;/font&gt; &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;You can always type $Host.Version from a PowerShell command window and it will display the version information.&lt;/em&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;The PowerShell Script&lt;/h2&gt;  &lt;p&gt;Hg has a lot of different ways to retrieve the information I want from the repository. I ended up using:&lt;/p&gt;  &lt;p&gt;&lt;font color="#008080" face="Consolas"&gt;hg tip –template &amp;quot;{rev}:{date|shortdate}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font size="3"&gt;I should point out that I work alone, so the simple rev numbers work for me. If you work on a team, rev numbers are &lt;strong&gt;not&lt;/strong&gt; an adequate way to identify a code release since each clone of the repo can duplicate rev numbers&lt;/font&gt;&lt;/em&gt;. &lt;/p&gt;  &lt;p&gt;I no longer need all the SVN tokens in version.txt so I replaced the line that had them with this:&lt;/p&gt;  &lt;p&gt;&lt;font color="#008080"&gt;&lt;font face="Consolas"&gt;const char ITS_6100_VERSION[] = &amp;quot;1.0.hgRevision&amp;quot;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The script will replace hgRevision with the revision and date. Keep in mind I'm a beginner in PowerShell scripting so this may not be the best or most elegant approach. Here's the full script:&lt;/p&gt;  &lt;p class="csharpcode-wrapper"&gt;&lt;a href="http://lh5.ggpht.com/-sgFfD6JkUKE/T-JLXSul4XI/AAAAAAAABOY/EG_CS790Nyo/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-o0prsVW3qUo/T-JLX9ZbbOI/AAAAAAAABOg/FVZeQUyRIIM/image_thumb%25255B2%25255D.png?imgmax=800" width="827" height="210" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="csharpcode-wrapper"&gt;Here's a harder to read (but easier to copy and paste) text version: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Consolas"&gt;$exe = &amp;quot;C:\Program Files\TortoiseHg\hg.exe&amp;quot;        &lt;br /&gt;$my_dir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent         &lt;br /&gt;$vers_text_path = Join-Path $my_dir &amp;quot;version.txt&amp;quot;         &lt;br /&gt;$vers_inc_path = Join-Path $my_dir &amp;quot;version.h&amp;quot;         &lt;br /&gt;$rev_date = &amp;amp;$exe tip --template &amp;quot;{rev}:{date|shortdate}&amp;quot;         &lt;br /&gt;Get-Content $vers_text_path|ForEach-Object{$_ -replace &amp;quot;hgRevision&amp;quot;, $rev_date}|Set-Content $vers_inc_path         &lt;br /&gt;trap         &lt;br /&gt;{         &lt;br /&gt;Write-Host &amp;quot;An error occurred.&amp;quot;         &lt;br /&gt;Write-Host $_.ErrorID         &lt;br /&gt;Write-Host $_.Exception.Message         &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="csharpcode-wrapper"&gt;You can see that $rev_date is holding the results of the hg command. The Get-Content command is loading the version.txt file and looking for the token &amp;quot;hgRevision&amp;quot; and replacing it with the contents of $rev_date. Finally Set-Content writes the result out to version.h. $MyInvocation is a PowerShell variable. The rest of the script is just an attempt to create paths that will work correctly when I use this script in multiple projects. I saved this script off in a file called hgRevAndDate.ps1. &lt;/div&gt;  &lt;h2&gt;Getting The Script To Run&lt;/h2&gt;  &lt;div class="csharpcode-wrapper"&gt;As a security precaution PowerShell scripts aren't allowed to run by default.&amp;#160; My solution was to set the execution policy right in the command where I run PowerShell. In Eclipse I used the following line:&lt;/div&gt;  &lt;div class="csharpcode-wrapper"&gt;&lt;font size="3" face="Consolas"&gt;PowerShell&amp;#160;&amp;#160; -executionpolicy&amp;#160; RemoteSigned&amp;#160; ${workspace_loc}\PulseGenLib_hg\hgRevAndDate.ps1&lt;/font&gt;&lt;/div&gt;  &lt;div class="csharpcode-wrapper"&gt;&lt;font face="Consolas"&gt;&lt;/font&gt;Below you can where this command goes:     &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-YNw8olXiDpU/T-JLYXfNLoI/AAAAAAAABOo/LF-YV3nM8D0/s1600-h/SNAGHTML323553%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML323553" border="0" alt="SNAGHTML323553" src="http://lh6.ggpht.com/-sF4CciNQSxk/T-JLY98IAOI/AAAAAAAABOw/Dih4P7W0a9I/SNAGHTML323553_thumb%25255B2%25255D.png?imgmax=800" width="805" height="477" /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;p&gt;When the project is built the version.h file now has this line:&lt;/p&gt;  &lt;p&gt;&lt;font face="Consolas"&gt;const char ITS_6100_VERSION[] = &amp;quot;1.0.39:2012-06-20&amp;quot;;&lt;/font&gt;&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/8862943465308371656/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=8862943465308371656" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8862943465308371656?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8862943465308371656?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/PYavOKvYyiw/replacing-svn-subwcrev-when-using-hg.html" title="Replacing SVN&amp;#39;s SubWCRev when using Hg" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-o0prsVW3qUo/T-JLX9ZbbOI/AAAAAAAABOg/FVZeQUyRIIM/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/06/replacing-svn-subwcrev-when-using-hg.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIBSXk8cSp7ImA9WhJTEEs.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-1902806558274696571</id><published>2012-06-18T17:59:00.001-07:00</published><updated>2012-06-18T17:59:18.779-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-18T17:59:18.779-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Technology" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows 7" /><title>Why I'm happy my laptop hard drive failed!</title><content type="html">&lt;p&gt;OK , I wasn't that happy at first. My system had been behaving wonky for a while, the CPU was going to 100% usage, Visual Studio and &lt;a href="http://www.jetbrains.com/resharper"&gt;ReSharper&lt;/a&gt; would consume all of one CPU, rebooting sometimes caused startup repair to run, you get the picture. It started with the high CPU usage so I was slow to suspect the hard disk (the laptop isn't even two years old yet). Finally, the computer wouldn't boot, so out came my USB stick with &lt;a href="http://www.grc.com/sr/spinrite.htm" target="_blank"&gt;SpinRite 6&lt;/a&gt;. If found 5 corrupt regions with multiple sectors in most regions. There were about 12 or so sub-sectors it couldn't recover but it recovered maybe 50 other sectors. It took over a day to run because SpinRite tends to be very slow when it runs into corruption. I'm not complaining because it tries very hard to get back my data and it mostly worked. When it was done the system again booted and seemed to behaving much better. This is the third time SpinRite has rescued hard drives for me. While my hard disk may have now been fine, I'm not one to gamble with my data.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-7IqfDe5IsVk/T9_O34pTpnI/AAAAAAAABN0/1aQNbZcqx1s/s1600-h/SNAGHTML420e53%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 9px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML420e53" border="0" alt="SNAGHTML420e53" align="left" src="http://lh5.ggpht.com/-yXTR9O89fYA/T9_O4cBoMUI/AAAAAAAABN8/lzf8tcc2Cr4/SNAGHTML420e53_thumb%25255B1%25255D.png?imgmax=800" width="492" height="368" /&gt;&lt;/a&gt;After the system was booting again I started up &lt;a href="http://www.acronis.com/" target="_blank"&gt;Acronis&lt;/a&gt; TrueImage Home 2010&amp;#160; and made a fresh full backup of the disk (not a full sector by sector backup)&amp;#160; and ordered a Crucial M4 256 Gig drive ($200 from Amazon). Since I'm downgrading the quantity from 500 Gig to 256 gig, I couldn't do a full sector backup. I have an E-Z gig setup that lets me clone my existing hard drive to a new drive, but it's old and it requires a PCMCIA slot which my new laptop doesn't have. Rather than order a new one, I thought I 'd see how&amp;#160; I fared with just using Acronis and the backup.&lt;/p&gt;  &lt;p&gt;The first step was to make a bootable USB stick with Acronis. Acronis is a little confusing in that it looks like by itself, it will create bootable media. The Create Bootable Rescue Media option shown above&amp;#160; will walk you through a wizard and act like it creates a bootable disk but it doesn't. It just puts the Acronis files you'll need if you make your USB stick bootable. I just followed the same steps I used with SpinRite. From the SpinRite FAQ &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font size="3" face="Consolas"&gt;Hewlett Packard (HP) makes an easy-to-use utility called “HP USB Disk Format Tool”, which includes a &amp;quot;Create a DOS Startup Disk&amp;quot; option. It's freely available from: &lt;/font&gt;&lt;a href="http://files.extremeoverclocking.com/file.php?f=197"&gt;&lt;font size="3" face="Consolas"&gt;http://files.extremeoverclocking.com/file.php?f=197&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Consolas"&gt; along with the &lt;/font&gt;&lt;a href="http://files.extremeoverclocking.com/file.php?f=196"&gt;&lt;font size="3" face="Consolas"&gt;Windows 98/DOS boot files&lt;/font&gt;&lt;/a&gt;&lt;font size="3" face="Consolas"&gt;.&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-dG-_R-aicEA/T9_O46mf_TI/AAAAAAAABOE/K2R7JB1BbaA/s1600-h/SNAGHTML4dc39d%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML4dc39d" border="0" alt="SNAGHTML4dc39d" align="left" src="http://lh5.ggpht.com/-XE5dyFspNBM/T9_O5VUcYcI/AAAAAAAABOM/ZVDf6Kp0hNg/SNAGHTML4dc39d_thumb%25255B1%25255D.png?imgmax=800" width="384" height="295" /&gt;&lt;/a&gt;In the Acronis wizard I added&amp;#160; &lt;font color="#000000" face="Consolas"&gt;&lt;em&gt;run bootmenu.exe&lt;/em&gt;&lt;/font&gt; to the &lt;em&gt;Command-line parameters:&lt;/em&gt; text box.&amp;#160; Now when my Dell Studio XPS reboots I hit F12 to get to the boot options. Then I select USB Storage and my laptop boots from the Acronis USB stick into Windows 98 and immediately launches the Acronis application.&amp;#160; I also have my backups sitting on an external USB drive. &lt;/p&gt;  &lt;p&gt;When the new SSD drive came I flipped over the laptop removed all the screws and flexed the bottom panel to remove it. I removed the three screws holding the existing drive (the fourth screw came from the just removed cover). After taking out the old drive I removed the small metal carrier and reused the same four screws to attach it to the new SSD drive. The fit for everything was identical to the Toshiba 512 Gig drive that was in my laptop.&amp;#160; Total time was under 10 minutes. I put everything back together and booted from the USB stick which automatically launched Acronis. &lt;/p&gt;  &lt;p&gt;I selected the Recover disk option but at first my external USB drive with my backups wasn't visible, causing a mild panic. I unplugged both the power cable and the USB cable from the external HD and plugged them back in and then they showed up in Acronis. Whew! I selected my recently created .tib file and the MBR option and restored. It took a little under an hour to complete. &lt;/p&gt;  &lt;p&gt;I then unplugged the stick drive and rebooted, and was greeted by a&amp;#160; &lt;strong&gt;&lt;font face="Consolas"&gt;BootMgr is missing&lt;/font&gt;&lt;/strong&gt; error. I'm not sure why this happened, but my original drive did have that Dell emergency recover partition of about 8 gig and maybe some boot essentials were stored there. Fighting down another mild panic attack I dug out my Win 7 Ultimate X64 DVD. Again using F12 I booted from the CD/DVD option. I selected my language prefs and hit Next. Instead of proceeding with an install I selected the Repair link near the bottom of the wizard. Once the next screen appeared (this took a minute or so), I was able to walk through some simple options to select an automated Startup Repair. It was fairly fast and a quick review of the log showed that it had detected BootMgr was missing and it installed it.&amp;#160; Whew again!&lt;/p&gt;  &lt;p&gt;One final reboot and all was well.&amp;#160; I didn't time the first reboot but I did time some subsequent ones. It takes about 35 seconds for my laptop to show me the logon icon and textbox. This feels about the same as it always was. In the past, entering my password and hitting return required just over 5 minutes before Windows 7 Ultimate booted into a fully usable state. That time is now 20 seconds! Booting office apps is instantaneous (I don't run the background helper service). Everything feels and operates much smoother now. The only remaining question is reliability. Of course the original hard drive supplied by Dell didn't even last two years&amp;#160; and the new Crucial M4 comes with a three year warranty so I'm thinking I'm no worse off.&amp;#160; In two years I'll probably be able to get a 512G drive for $200 (or under?). &lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/1902806558274696571/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=1902806558274696571" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/1902806558274696571?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/1902806558274696571?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/OZLcUzKOEY0/why-i-happy-my-laptop-hard-drive-failed.html" title="Why I&amp;#39;m happy my laptop hard drive failed!" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-yXTR9O89fYA/T9_O4cBoMUI/AAAAAAAABN8/lzf8tcc2Cr4/s72-c/SNAGHTML420e53_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/06/why-i-happy-my-laptop-hard-drive-failed.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4CQXc6eCp7ImA9WhJRFkk.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-754073657036973904</id><published>2012-05-25T10:58:00.001-07:00</published><updated>2012-07-18T13:22:40.910-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-18T13:22:40.910-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Nontechnical" /><title>In Support of Teachers Everywhere</title><content type="html">&lt;p&gt;This will be one of my few non-technical posts. At one point the teachers at Merrimack, NH were considering a strike, the public debate got rather ugly. At one point the local Dairy Queen owner who felt teachers were overpaid put up on his sign&amp;#160; &amp;quot;Teachers Only Work 9-3&amp;quot;. I believe that might have been the final catalyst for my father to take pen in hand and write the following. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Nashua Telegraph March 18, 1990&lt;/strong&gt;&lt;/p&gt;  &lt;h2&gt;Negative comments in letters discourage teachers who care.&lt;/h2&gt;  &lt;p&gt;To the Editor:&lt;/p&gt;  &lt;p&gt;After having spent most of a lifetime with a&amp;#160; spouse who works in the field of education, it is difficult for me to read and to accept all the negative aspects of the letters that have filled the editorial pages of the local papers. I feel I must respond.&lt;/p&gt;  &lt;p&gt;Of the professions that require a college education, teaching has traditionally been one of the poorest paid. It is also one of the few vocations that, in order to continue in the profession, continuing education is required for each year of one's career.&lt;/p&gt;  &lt;p&gt;Contrary to many beliefs, the hours are extremely long; many committee meetings take up more hours than the general public can begin to realize. Teachers are available after school to provide additional help when students seek it and to monitor after-school detentions. &lt;/p&gt;  &lt;p&gt;The day's work is seldom ever done when one gets home. The student papers are always there to be corrected; and plans for tomorrow's lessons must be formulated. Summer is the time to get refreshed by taking additional courses.&lt;/p&gt;  &lt;p&gt;We watch our own children graduate from college and go out into industry. At entry-level positions they make more money than the teachers do after 25 years of experience and work.&lt;/p&gt;  &lt;p&gt;The question then is: &amp;quot;Why not go out into industry?&amp;quot; Unfortunately, too many have already left education. many of the teachers have had the opportunity. Those who choose to stay do so because they love the profession, and they feel they benefit the young people who represent the future of this country. &lt;/p&gt;  &lt;p&gt;The biggest reason, though is that once in a while they are shown a little love by students who will thank them for all they have done. It doesn't happen often, but it's enough to keep them going.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Many letters to the editor have shown very little love or appreciation for teacher's efforts. It becomes difficult for anyone to give love when there is none in return.&lt;/p&gt;  &lt;p&gt;John I. Gentille&lt;/p&gt;  &lt;p&gt;Nashua &lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/754073657036973904/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=754073657036973904" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/754073657036973904?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/754073657036973904?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/HdfKCyEggks/in-support-of-teacher-everywhere.html" title="In Support of Teachers Everywhere" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/05/in-support-of-teacher-everywhere.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUGRXkyeSp7ImA9WhVXGEo.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-4585203317030099268</id><published>2012-04-19T14:50:00.001-07:00</published><updated>2012-04-19T14:50:24.791-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-19T14:50:24.791-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="SQL" /><title>SQL Server Management Studio for non-DBAs</title><content type="html">&lt;p&gt;SQL Server Management Studio (SSMS) can really trip you up. I was reminded of this the other day when I decided to script some database tables and put them in a second database. It seems really straight forward, you right-click on a Table and you can create a script in various places. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-7VGR1wSU4Uo/T5CIkLCrk9I/AAAAAAAABNQ/fxtWHYr1HJE/s1600-h/SNAGHTML413a0f5%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML413a0f5" border="0" alt="SNAGHTML413a0f5" src="http://lh6.ggpht.com/-bL7DrXqzpcI/T5CIkoV7WwI/AAAAAAAABNY/QBNp8W8cFd8/SNAGHTML413a0f5_thumb%25255B1%25255D.png?imgmax=800" width="553" height="288" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Days after doing this and after importing some data I noticed something strange. The data import was allowing duplicate data that I know I had a unique index set up to prevent. Turns out that by default (don't ask me why) but SSMS does not have the option for scripting indexes turned on by default.&amp;#160; Using the Tools-&amp;gt;Options… menu I scrolled down and set it to true and then went about starting over. While you're there you might as well check every setting that is false and make sure it is what you want.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-p5aiJaDaOo8/T5CInLej6qI/AAAAAAAABNg/I_GGLOMddLw/s1600-h/SNAGHTML418ed5f%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML418ed5f" border="0" alt="SNAGHTML418ed5f" src="http://lh6.ggpht.com/-bJJCSEsGhUU/T5CIn7h29LI/AAAAAAAABNo/VrMCq6w1MLY/SNAGHTML418ed5f_thumb%25255B2%25255D.png?imgmax=800" width="654" height="396" /&gt;&lt;/a&gt;&lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/4585203317030099268/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=4585203317030099268" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/4585203317030099268?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/4585203317030099268?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/m7HhwDfZzE8/sql-server-management-studio-for-non.html" title="SQL Server Management Studio for non-DBAs" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-bL7DrXqzpcI/T5CIkoV7WwI/AAAAAAAABNY/QBNp8W8cFd8/s72-c/SNAGHTML413a0f5_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/04/sql-server-management-studio-for-non.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04HQno_eCp7ImA9WhVXEUU.&quot;"><id>tag:blogger.com,1999:blog-7714188728416201038.post-8295359336227892117</id><published>2012-04-11T15:05:00.001-07:00</published><updated>2012-04-11T15:05:33.440-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-04-11T15:05:33.440-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Eclipse" /><category scheme="http://www.blogger.com/atom/ns#" term="NetBurner" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>Importing a Project into Eclipse</title><content type="html">&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-5b0VWyGAUdQ/T4YAJQ4p5WI/AAAAAAAABMQ/rfVoJrYAgno/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 8px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh6.ggpht.com/-9yv05svKCK0/T4YAJuJdS0I/AAAAAAAABMY/qiO9LbGu4VY/image_thumb%25255B2%25255D.png?imgmax=800" width="374" height="110" /&gt;&lt;/a&gt;If you've ever deleted an old project, grabbed the latest version from your source code repository and tried to import it you've probably seen the &lt;em&gt;&amp;quot;Some projects cannot be imported because they already exist in the workspace&amp;quot; &lt;/em&gt;error. The key here is to get Eclipse to do a refresh, but you have to do it from the correct place. Just using the &lt;em&gt;File&lt;/em&gt; menu and selecting &lt;em&gt;Refresh&lt;/em&gt; won't do it. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-e01TbdQ7l3g/T4YAJ29q1jI/AAAAAAAABMg/VR8brZLA6GM/s1600-h/SNAGHTMLa395aa2%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTMLa395aa2" border="0" alt="SNAGHTMLa395aa2" align="left" src="http://lh4.ggpht.com/-tKcX1Iw9Y5Q/T4YAKOix4FI/AAAAAAAABMo/Q46j4xKxY5E/SNAGHTMLa395aa2_thumb%25255B1%25255D.png?imgmax=800" width="469" height="277" /&gt;&lt;/a&gt;Start with doing your &lt;em&gt;File-&amp;gt;Import&lt;/em&gt; and select the &lt;em&gt;Existing Projects into Workspace&lt;/em&gt; option under the &lt;em&gt;General&lt;/em&gt; folder as shown in the image. &lt;/p&gt;  &lt;div style="clear: both"&gt;&lt;/div&gt;   &lt;a href="http://lh5.ggpht.com/-y3DOalhkzmk/T4YAKkf8HRI/AAAAAAAABMw/AZa9g-E5ZPk/s1600-h/SNAGHTMLa3a8cba%25255B5%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTMLa3a8cba" border="0" alt="SNAGHTMLa3a8cba" align="left" src="http://lh5.ggpht.com/-Ov09kWHc5Ec/T4YALFRe3EI/AAAAAAAABM4/PqUfFs0_Yh4/SNAGHTMLa3a8cba_thumb%25255B2%25255D.png?imgmax=800" width="455" height="549" /&gt;&lt;/a&gt;  &lt;p&gt;Click &lt;em&gt;Next&lt;/em&gt; and in the Import dialog, uncheck the &lt;em&gt;Copy projects into workspace&lt;/em&gt; (I'm assuming you checked out from your source code control directly into a folder inside your workspace).&amp;#160; Here is where you click the Refresh button. Once you've clicked the error should go away and you should be able to import the project. &lt;/p&gt;  </content><link rel="replies" type="application/atom+xml" href="http://syncor.blogspot.com/feeds/8295359336227892117/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7714188728416201038&amp;postID=8295359336227892117" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8295359336227892117?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7714188728416201038/posts/default/8295359336227892117?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/TodsTomes/~3/ZANbxJHIJFw/importing-project-into-eclipse.html" title="Importing a Project into Eclipse" /><author><name>Tod</name><uri>http://www.blogger.com/profile/17212382407893076905</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="24" src="http://4.bp.blogspot.com/_8WbLM5HMd2A/SueU28pDCEI/AAAAAAAAAPU/nkuyB-isgko/S220/TodFullKit.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-9yv05svKCK0/T4YAJuJdS0I/AAAAAAAABMY/qiO9LbGu4VY/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://syncor.blogspot.com/2012/04/importing-project-into-eclipse.html</feedburner:origLink></entry></feed>
