<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Pete Samuel&#039;s software blog</title>
	<atom:link href="http://petesamuel.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://petesamuel.wordpress.com</link>
	<description>Another blog on software, hardware and other technology</description>
	<lastBuildDate>Mon, 06 Jun 2011 05:55:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='petesamuel.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Pete Samuel&#039;s software blog</title>
		<link>http://petesamuel.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://petesamuel.wordpress.com/osd.xml" title="Pete Samuel&#039;s software blog" />
	<atom:link rel='hub' href='http://petesamuel.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Thoughts on Source Control</title>
		<link>http://petesamuel.wordpress.com/2010/07/09/thoughts-on-source-control/</link>
		<comments>http://petesamuel.wordpress.com/2010/07/09/thoughts-on-source-control/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 17:43:21 +0000</pubDate>
		<dc:creator>Pete Samuel</dc:creator>
				<category><![CDATA[Source Control]]></category>

		<guid isPermaLink="false">http://petesamuel.wordpress.com/?p=35</guid>
		<description><![CDATA[I get a few questions that come up repeatedly as a developer and this is one of them; Why should I use source control?; Which should I use? This post hopes to answer with personal opinion and experience. <a href="http://petesamuel.wordpress.com/2010/07/09/thoughts-on-source-control/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=petesamuel.wordpress.com&amp;blog=12372633&amp;post=35&amp;subd=petesamuel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I get a few questions that come up repeatedly as a developer and this is one of them; Why should I use source control?; Which should I use?</p>
<p>I used to be in that position at the beginning of my career, now? There&#8217;s no way I&#8217;d go back to this:</p>
<div class="wp-caption aligncenter" style="width: 548px"><a href="http://hginit.com/top/01.html"><img title="Common old skool version control" src="http://hginit.com/top/i/01-copies.png" alt="Don't do version control this way!" width="538" height="337" /></a><p class="wp-caption-text">Borrowed from http://hginit.com/top/01.html</p></div>
<p>Here’s the scenario I think a lot of companies out there are working with:</p>
<ul>
<li>One (or more) server(s) containing
<ul>
<li>Files</li>
<li>MS Exchange</li>
<li>Intranet</li>
<li>Customer accounts</li>
<li>Other business specific data</li>
</ul>
</li>
<li>Several PC/Laptops connected to the server</li>
</ul>
<p>In these companies I think people work by copying files from your server, modifying files on their own PC, then saving them back into the respective clients’ folders. This may work for the first few clients because you can&#8217;t keep track of the latest version of your product/sotware but when it comes to upgrade to your latest and greatest version…uh oh. Migration is a pain.</p>
<p>Problems I imagine they may still encounter:</p>
<ul>
<li>Bugs reappearing</li>
<li>Not knowing which version of code is the right one or latest</li>
<li>Two people can’t work on the same project very easily</li>
<li>You shout across the office to say “is anyone using xxx”</li>
</ul>
<p>Not all source control systems fix all of these issues but many will make your life easier.</p>
<p>Read <a href="http://hginit.com/top/01.html">this</a> to explain why you need source control!</p>
<p>I have some experience with the following and will try to explain my thoughts</p>
<ul>
<li>Microsoft Visual Source Safe
<ul>
<li>An old souce control solution now and much hated by many who have had any experience with any other system!</li>
<li>Avoid</li>
<li>Developer must check in a file before another can access it. If the first developer leaves without checking files in, you had better get their password!</li>
<li>Not free</li>
</ul>
</li>
<li>Microsoft Team Foundation Server
<ul>
<li>This is a powerful enterprise tool at enterprise prices</li>
<li>Good integration with Visual Studio (which I imagine you don’t use)</li>
<li>Integration with a build server (more info on request)</li>
<li>Supports branching and merging</li>
<li>Very not free</li>
</ul>
</li>
<li><a title="Subversion Home Page" href="http://subversion.apache.org/" target="_blank">Subversion</a>
<ul>
<li>Centralised Source Control – there is a master copy of all code. You have to check in to the master code repository</li>
<li>You can work offline locally but you can’t check anything in</li>
<li>Windows integration with <a href="http://tortoisesvn.tigris.org/">http://tortoisesvn.tigris.org/</a></li>
<li>Free with support option</li>
</ul>
</li>
<li><a title="Git Home Page" href="http://git-scm.com/" target="_blank">Git</a>
<ul>
<li>Distributed Source Control – each copy of the source control is its own repository and you can work on code, checking in changes, without having a connection to the server</li>
<li>Command line but has tools available for windows shell integration (<a href="http://code.google.com/p/tortoisegit/">TortoiseGit</a>)</li>
<li>Free</li>
</ul>
</li>
<li><a title="Mercurial Home Page" href="http://mercurial.selenic.com" target="_blank">Mercurial</a>
<ul>
<li>I have no experience with</li>
<li>Command line much like Git but also has tools available (<a href="http://tortoisehg.bitbucket.org/">http://tortoisehg.bitbucket.org/</a>)</li>
</ul>
</li>
</ul>
<p>I’m interested in more but I see the above reappearing most often, in my work at least</p>
<p>I think this is a good illustration of source control with Subversion (borrowed from <a href="http://hginit.com/top/00.html">http://hginit.com/top/00.html</a>):</p>
<div class="wp-caption aligncenter" style="width: 627px"><a href="http://hginit.com/top/00.html"><img title="A simple illustration of life under Subversion" src="http://hginit.com/top/i/00-svn.png" alt="A simple illustration of life under Subversion" width="617" height="452" /></a><p class="wp-caption-text">Borrowed from http://hginit.com/top/00.html</p></div>
<p>This is a really good article discussing what source control provider to use based on your needs:<br />
<a href="http://stackoverflow.com/questions/111031/comparison-between-centralized-and-distributed-version-control-systems">http://stackoverflow.com/questions/111031/comparison-between-centralized-and-distributed-version-control-systems</a></p>
<p>A quote from the above Stackoverflow question regarding Subversion (SVN) vs Git:</p>
<p>… say you are a solo developer working on your own personal project. A centralized repository [SVN] might be an obvious choice but consider this scenario. You are away from network access (on a plane, at a park, etc) and want to work on your project. You have your local copy so you can do work fine but you really want to commit because you have finished one feature and want to move on to another, or you found a bug to fix or whatever. The point is that with a centralized repo you end up either mashing all the changes together and committing them in a non-logical changeset or you manually split them out later.</p>
<div class="wp-caption aligncenter" style="width: 632px"><a href="http://hginit.com/top/00.html"><img title="Distributed Source Control Model" src="http://hginit.com/top/i/00-hg.png" alt="Distributed Source Control Model" width="622" height="653" /></a><p class="wp-caption-text">Borrowed from http://hginit.com/top/00.html</p></div>
<p>Another quote from <a href="http://hginit.com/top/">http://hginit.com/top/</a> regarding distributed (Git/Mercurial) source control:</p>
<blockquote><p>.. you can have a QA repository that lets the QA team try out the code. If it works, the QA team can push it up to the central repository, meaning, the central repository always has solid, tested code. And <em>it works!</em></p>
<p>That means you can run experiments in separate repositories, and if they work, you can merge them into the main repository, and if they don’t work, you can abandon them, and <em>it </em>works<em>!</em></p></blockquote>
<h1>What would I do?</h1>
<p>From my current experience I’d choose either Git or Mercurial. Making merging a simpler task sounds like win-win from my point of view.</p>
<p>More on Distributed Version Control:<br />
<a href="http://www.infoq.com/articles/dvcs-guide">http://www.infoq.com/articles/dvcs-guide</a></p>
<p>The Git vs Mercurial Debate:<br />
<a href="http://importantshock.wordpress.com/2008/08/07/git-vs-mercurial/">http://importantshock.wordpress.com/2008/08/07/git-vs-mercurial/</a></p>
<p>Learning Mercurial (and an introduction to source control):<br />
<a href="http://hginit.com/top/">http://hginit.com/top/</a></p>
<h1>Other random tools I use that you may find useful</h1>
<p>Twitter – <a href="http://www.twitter.com/">http://www.twitter.com</a> &#8211; not for celebs, for geeks! I only follow people who talk about the technology stuff I’m interested in. Try to find a twitter list of geeks</p>
<p>Balsamiq &#8211; <a href="http://www.balsamiq.com/">http://www.balsamiq.com/</a> &#8211; Awesome prototyping tool. I think prototyping could be another post on its own.</p>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;overflow:hidden;">
<p><!--[if !mso]&gt; &lt;!  v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} --> <!--[endif]--><!--[if gte mso 9]&gt;    &lt;![endif]--><!--[if gte mso 9]&gt;  Normal 0 false        false false false  EN-GB X-NONE X-NONE                         &lt;![endif]--><!--[if gte mso 9]&gt;                                                                                                                                            &lt;![endif]--><!--  /* Font Definitions */  @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face 	{font-family:Wingdings; 	panose-1:5 0 0 0 0 0 0 0 0 0; 	mso-font-charset:2; 	mso-generic-font-family:auto; 	mso-font-pitch:variable; 	mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face 	{font-family:Cambria; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-536870145 1073743103 0 0 415 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-520092929 1073786111 9 0 415 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} h1 	{mso-style-priority:9; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-link:"Heading 1 Char"; 	mso-style-next:Normal; 	margin-top:24.0pt; 	margin-right:0cm; 	margin-bottom:0cm; 	margin-left:0cm; 	margin-bottom:.0001pt; 	line-height:115%; 	mso-pagination:widow-orphan lines-together; 	page-break-after:avoid; 	mso-outline-level:1; 	font-size:14.0pt; 	font-family:"Cambria","serif"; 	mso-ascii-font-family:Cambria; 	mso-ascii-theme-font:major-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:major-fareast; 	mso-hansi-font-family:Cambria; 	mso-hansi-theme-font:major-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:major-bidi; 	color:#365F91; 	mso-themecolor:accent1; 	mso-themeshade:191; 	mso-font-kerning:0pt; 	mso-fareast-language:EN-US;} p.MsoCaption, li.MsoCaption, div.MsoCaption 	{mso-style-priority:35; 	mso-style-qformat:yes; 	mso-style-next:Normal; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	mso-pagination:widow-orphan; 	font-size:9.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	color:#4F81BD; 	mso-themecolor:accent1; 	mso-fareast-language:EN-US; 	font-weight:bold;} a:link, span.MsoHyperlink 	{mso-style-priority:99; 	color:blue; 	mso-themecolor:hyperlink; 	text-decoration:underline; 	text-underline:single;} a:visited, span.MsoHyperlinkFollowed 	{mso-style-noshow:yes; 	mso-style-priority:99; 	color:purple; 	mso-themecolor:followedhyperlink; 	text-decoration:underline; 	text-underline:single;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:36.0pt; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:0cm; 	margin-left:36.0pt; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:0cm; 	margin-left:36.0pt; 	margin-bottom:.0001pt; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast 	{mso-style-priority:34; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-type:export-only; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:36.0pt; 	mso-add-space:auto; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} p.MsoQuote, li.MsoQuote, div.MsoQuote 	{mso-style-priority:29; 	mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-link:"Quote Char"; 	mso-style-next:Normal; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	color:black; 	mso-themecolor:text1; 	mso-fareast-language:EN-US; 	font-style:italic;} span.Heading1Char 	{mso-style-name:"Heading 1 Char"; 	mso-style-priority:9; 	mso-style-unhide:no; 	mso-style-locked:yes; 	mso-style-link:"Heading 1"; 	mso-ansi-font-size:14.0pt; 	mso-bidi-font-size:14.0pt; 	font-family:"Cambria","serif"; 	mso-ascii-font-family:Cambria; 	mso-ascii-theme-font:major-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:major-fareast; 	mso-hansi-font-family:Cambria; 	mso-hansi-theme-font:major-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:major-bidi; 	color:#365F91; 	mso-themecolor:accent1; 	mso-themeshade:191; 	font-weight:bold;} span.QuoteChar 	{mso-style-name:"Quote Char"; 	mso-style-priority:29; 	mso-style-unhide:no; 	mso-style-locked:yes; 	mso-style-link:Quote; 	color:black; 	mso-themecolor:text1; 	font-style:italic;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page WordSection1 	{size:612.0pt 792.0pt; 	margin:72.0pt 72.0pt 72.0pt 72.0pt; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.WordSection1 	{page:WordSection1;}  /* List Definitions */  @list l0 	{mso-list-id:218978481; 	mso-list-type:hybrid; 	mso-list-template-ids:1218868908 -1371519326 134807555 134807557 134807553 134807555 134807557 134807553 134807555 134807557;} @list l0:level1 	{mso-level-start-at:0; 	mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:27.75pt; 	text-indent:-18.0pt; 	font-family:Symbol; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} @list l0:level2 	{mso-level-number-format:bullet; 	mso-level-text:o; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:63.75pt; 	text-indent:-18.0pt; 	font-family:"Courier New";} @list l0:level3 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:99.75pt; 	text-indent:-18.0pt; 	font-family:Wingdings;} @list l0:level4 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:135.75pt; 	text-indent:-18.0pt; 	font-family:Symbol;} @list l0:level5 	{mso-level-number-format:bullet; 	mso-level-text:o; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:171.75pt; 	text-indent:-18.0pt; 	font-family:"Courier New";} @list l0:level6 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:207.75pt; 	text-indent:-18.0pt; 	font-family:Wingdings;} @list l0:level7 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:243.75pt; 	text-indent:-18.0pt; 	font-family:Symbol;} @list l0:level8 	{mso-level-number-format:bullet; 	mso-level-text:o; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:279.75pt; 	text-indent:-18.0pt; 	font-family:"Courier New";} @list l0:level9 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:315.75pt; 	text-indent:-18.0pt; 	font-family:Wingdings;} @list l1 	{mso-list-id:1131284366; 	mso-list-type:hybrid; 	mso-list-template-ids:294423716 -1371519326 134807555 134807557 134807553 134807555 134807557 134807553 134807555 134807557;} @list l1:level1 	{mso-level-start-at:0; 	mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:27.75pt; 	text-indent:-18.0pt; 	font-family:Symbol; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} @list l1:level2 	{mso-level-number-format:bullet; 	mso-level-text:o; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:"Courier New";} @list l1:level3 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:Wingdings;} @list l1:level4 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:Symbol;} @list l1:level5 	{mso-level-number-format:bullet; 	mso-level-text:o; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:"Courier New";} @list l1:level6 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:Wingdings;} @list l1:level7 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:Symbol;} @list l1:level8 	{mso-level-number-format:bullet; 	mso-level-text:o; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:"Courier New";} @list l1:level9 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:Wingdings;} @list l2 	{mso-list-id:2107269665; 	mso-list-type:hybrid; 	mso-list-template-ids:-1173553768 -1371519326 134807555 134807557 134807553 134807555 134807557 134807553 134807555 134807557;} @list l2:level1 	{mso-level-start-at:0; 	mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	margin-left:27.75pt; 	text-indent:-18.0pt; 	font-family:Symbol; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} @list l2:level2 	{mso-level-number-format:bullet; 	mso-level-text:o; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:"Courier New";} @list l2:level3 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:Wingdings;} @list l2:level4 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:Symbol;} @list l2:level5 	{mso-level-number-format:bullet; 	mso-level-text:o; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:"Courier New";} @list l2:level6 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:Wingdings;} @list l2:level7 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:Symbol;} @list l2:level8 	{mso-level-number-format:bullet; 	mso-level-text:o; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:"Courier New";} @list l2:level9 	{mso-level-number-format:bullet; 	mso-level-text:; 	mso-level-tab-stop:none; 	mso-level-number-position:left; 	text-indent:-18.0pt; 	font-family:Wingdings;} ol 	{margin-bottom:0cm;} ul 	{margin-bottom:0cm;} --><!--[if gte mso 10]&gt; &lt;!   /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:&quot;Table Normal&quot;; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-parent:&quot;&quot;; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin-top:0cm; 	mso-para-margin-right:0cm; 	mso-para-margin-bottom:10.0pt; 	mso-para-margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:&quot;Times New Roman&quot;; 	mso-bidi-theme-font:minor-bidi; 	mso-fareast-language:EN-US;} --> <!--[endif]--></p>
<p class="MsoNormal">Here’s the scenario I think a lot of companies out there are working with:</p>
<p class="MsoListParagraphCxSpFirst" style="margin-left:27.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;">·<span style="font:7pt &amp;"> </span></span><!--[endif]-->One (or more) server(s) containing</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:63.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Files</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:63.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->MS Exchange</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:63.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Intranet</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:63.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Customer accounts</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:63.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Other business specific data</p>
<p class="MsoListParagraphCxSpLast" style="margin-left:27.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;">·<span style="font:7pt &amp;"> </span></span><!--[endif]-->Several PC/Laptops connected to the server</p>
<p class="MsoNormal">These people may work by copying files from your server, modifying files on their own PC, then saving them back into the respective clients’ folders. This may work for the first few clients because you can keep track of the latest version of your product/sotware but when it comes to upgrade to your latest and greatest version…uh oh. Migration is a pain.</p>
<p class="MsoNormal">Problems I imagine they may encounter:</p>
<p class="MsoListParagraphCxSpFirst" style="margin-left:27.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;">·<span style="font:7pt &amp;"> </span></span><!--[endif]-->Bugs reappearing</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:27.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;">·<span style="font:7pt &amp;"> </span></span><!--[endif]-->Not knowing which version of code is the right one or latest</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:27.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;">·<span style="font:7pt &amp;"> </span></span><!--[endif]-->Two people can’t work on the same project very easily</p>
<p class="MsoListParagraphCxSpLast" style="margin-left:27.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;">·<span style="font:7pt &amp;"> </span></span><!--[endif]-->You shout across the office to say “is anyone using xxx”</p>
<p class="MsoNormal">Not all source control systems fix all of these issues but many will make your life easier.</p>
<p class="MsoNormal">Read <a href="http://hginit.com/top/01.html">this</a> to explain why you need source control!</p>
<p class="MsoNormal">I have some experience with the following and will try to explain my thoughts</p>
<p class="MsoListParagraphCxSpFirst" style="margin-left:27.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;">·<span style="font:7pt &amp;"> </span></span><!--[endif]-->Microsoft Visual Source Safe</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->An old souce control solution now and much hated by many who have had any experience with any other system!</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Avoid</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Developer must check in a file before another can access it. If the first developer leaves without checking files in, you had better get their password!</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Not free</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:27.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;">·<span style="font:7pt &amp;"> </span></span><!--[endif]-->Microsoft Team Foundation Server</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->This is a powerful enterprise tool at enterprise prices</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Good integration with Visual Studio (which I imagine you don’t use)</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Integration with a build server (more info on request)</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Supports branching and merging</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Very not free</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:27.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;">·<span style="font:7pt &amp;"> </span></span><!--[endif]-->Subversion</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Centralised Source Control – there is a master copy of all code. You have to check in to the master code repository</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->You can work offline locally but you can’t check anything in</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Windows integration with <a href="http://tortoisesvn.tigris.org/">http://tortoisesvn.tigris.org/</a></p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Free with support option</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:27.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;">·<span style="font:7pt &amp;"> </span></span><!--[endif]-->Git</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Distributed Source Control – each copy of the source control is its own repository and you can work on code, checking in changes, without having a connection to the server</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Command line but has tools available for windows shell integration (<a href="http://code.google.com/p/tortoisegit/">TortoiseGit</a>)</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Free</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:27.75pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:Symbol;">·<span style="font:7pt &amp;"> </span></span><!--[endif]-->Mercurial</p>
<p class="MsoListParagraphCxSpMiddle" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->I have no experience with</p>
<p class="MsoListParagraphCxSpLast" style="margin-left:72pt;text-indent:-18pt;"><!--[if !supportLists]--><span style="font-family:&amp;">o<span style="font:7pt &amp;"> </span></span><!--[endif]-->Command line much like Git but also has tools available (<a href="http://tortoisehg.bitbucket.org/">http://tortoisehg.bitbucket.org/</a>)</p>
<p class="MsoNormal">I’m interested in more but I see the above reappearing most often in my work at least</p>
<p class="MsoNormal">I think this is a good illustration of source control with Subversion (borrowed from <a href="http://hginit.com/top/00.html">http://hginit.com/top/00.html</a>):</p>
<p class="MsoNormal" style="page-break-after:avoid;"><!--[if gte vml 1]&gt;                    &lt;![endif]--><!--[if !vml]--><img src="/Users/PETERS%7E1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png" border="0" alt="" width="602" height="441" /><!--[endif]--></p>
<p class="MsoCaption">Figure &lt;!&#8211;[if supportFields]&gt; SEQ Figure \* ARABIC &lt;![endif]&#8211;&gt;1&lt;!&#8211;[if supportFields]&gt;&lt;![endif]&#8211;&gt; http://hginit.com/top/00.html</p>
<p class="MsoNormal">
<p class="MsoNormal"><a href="http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP">http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP</a></p>
<p class="MsoNormal">A really good article discussing what source control provider to use based on your needs:<br />
<a href="http://stackoverflow.com/questions/111031/comparison-between-centralized-and-distributed-version-control-systems">http://stackoverflow.com/questions/111031/comparison-between-centralized-and-distributed-version-control-systems</a></p>
<p class="MsoNormal">A quote from the above Stackoverflow question regarding Subversion (SVN) vs Git:</p>
<p class="MsoQuote">… say you are a solo developer working on your own personal project. A centralized repository [SVN] might be an obvious choice but consider this scenario. You are away from network access (on a plane, at a park, etc) and want to work on your project. You have your local copy so you can do work fine but you really want to commit because you have finished one feature and want to move on to another, or you found a bug to fix or whatever. The point is that with a centralized repo you end up either mashing all the changes together and committing them in a non-logical changeset or you manually split them out later.</p>
<p class="MsoNormal">Another quote from <a href="http://hginit.com/top/">http://hginit.com/top/</a> regarding distributed (Git/Mercurial) source control:</p>
<p class="MsoQuote">.. you can have a QA repository that lets the QA team try out the code. If it works, the QA team can push it up to the central repository, meaning, the central repository always has solid, tested code. And <em><span style="font-family:&amp;">it works!</span></em></p>
<p class="MsoQuote">That means you can run experiments in separate repositories, and if they work, you can merge them into the main repository, and if they don’t work, you can abandon them, and <em><span style="font-family:&amp;">it </span></em>works<em><span style="font-family:&amp;">!</span></em></p>
<h2>What would I do?</h2>
<p class="MsoNormal">From my recent web research I’d choose either Git or Mercurial. Making merging a simpler task sounds like win-win from my point of view.</p>
<p class="MsoNormal">More on Distributed Version Control:<br />
<a href="http://www.infoq.com/articles/dvcs-guide">http://www.infoq.com/articles/dvcs-guide</a></p>
<p class="MsoNormal">The Git vs Mercurial Debate:<br />
<a href="http://importantshock.wordpress.com/2008/08/07/git-vs-mercurial/">http://importantshock.wordpress.com/2008/08/07/git-vs-mercurial/</a></p>
<p class="MsoNormal">Learning Mercurial (and an introduction to source control:<br />
<a href="http://hginit.com/top/">http://hginit.com/top/</a></p>
<h2>Other random tools I use that you may find useful</h2>
<p class="MsoNormal">Twitter – <a href="http://www.twitter.com/">http://www.twitter.com</a> &#8211; not for celebs, for geeks! I only follow people who talk about the technology stuff I’m interested in. Try to find a twitter list of geeks</p>
<p class="MsoNormal">Balsamiq &#8211; <a href="http://www.balsamiq.com/">http://www.balsamiq.com/</a> &#8211; Awesome prototyping tool. I think prototyping could be another post on its own.</p>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/petesamuel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/petesamuel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/petesamuel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/petesamuel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/petesamuel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/petesamuel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/petesamuel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/petesamuel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/petesamuel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/petesamuel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/petesamuel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/petesamuel.wordpress.com/35/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/petesamuel.wordpress.com/35/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/petesamuel.wordpress.com/35/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=petesamuel.wordpress.com&amp;blog=12372633&amp;post=35&amp;subd=petesamuel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://petesamuel.wordpress.com/2010/07/09/thoughts-on-source-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/033203d57d1c861fd91b3262a0cbfb58?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Pete</media:title>
		</media:content>

		<media:content url="http://hginit.com/top/i/01-copies.png" medium="image">
			<media:title type="html">Common old skool version control</media:title>
		</media:content>

		<media:content url="http://hginit.com/top/i/00-svn.png" medium="image">
			<media:title type="html">A simple illustration of life under Subversion</media:title>
		</media:content>

		<media:content url="http://hginit.com/top/i/00-hg.png" medium="image">
			<media:title type="html">Distributed Source Control Model</media:title>
		</media:content>

		<media:content url="/Users/PETERS%7E1/AppData/Local/Temp/msohtmlclip1/01/clip_image001.png" medium="image" />
	</item>
		<item>
		<title>Using the Ribbon Control in MS Office 2007/2010 with C#</title>
		<link>http://petesamuel.wordpress.com/2010/03/18/ribbon-control-in-ms-office-2007-2010/</link>
		<comments>http://petesamuel.wordpress.com/2010/03/18/ribbon-control-in-ms-office-2007-2010/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 08:22:30 +0000</pubDate>
		<dc:creator>Pete Samuel</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[MS Office]]></category>

		<guid isPermaLink="false">http://petesamuel.wordpress.com/?p=28</guid>
		<description><![CDATA[One of our clients has a complex Excel 2007 spreadsheet they need to do some automation with. The current solution involves lots of manual steps to create charts in a PowerPoint presentation. To this end I started researching how to &#8230; <a href="http://petesamuel.wordpress.com/2010/03/18/ribbon-control-in-ms-office-2007-2010/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=petesamuel.wordpress.com&amp;blog=12372633&amp;post=28&amp;subd=petesamuel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>One of our clients has a complex Excel 2007 spreadsheet they need to do some automation with. The current solution involves lots of manual steps to create charts in a PowerPoint presentation. To this end I started researching how to add items to the ribbon bar so they could automate tasks with Macros.</p>
<p>However, when I started looking into it more deeply I discovered you could easily create plugins using Visual Studio and manipulate spreadsheets and most of the Office 2007/2010 suite using the Office.Interop DLL.</p>
<p>These are the helpful resources I used to get some development underway:</p>
<ul>
<li><a href="http://openxmldeveloper.org/archive/2006/05/26/CustomUIeditor.aspx" target="_blank">Custom UI Editor Tool</a> &#8211; This tool allows you to manipulate the Ribbon using only XML. You can then use defualt icons and OnAction events to call functions held in your spreadsheet. This means you could ship a spreadsheet template (.xlst) or macro enabled worksheet (.xlsm) with built in ribbon items.</li>
<li><a href="http://msdn.microsoft.com/nb-no/office/aa905382%28en-us%29.aspx" target="_blank">Screencasts about building Ribbon Controls (etc)</a> &#8211; I found <a href="http://go.microsoft.com/?linkid=5519367" target="_blank">this one</a> especially useful and I&#8217;ve <a href="http://cid-e0fda717a8b27bfb.skydrive.live.com/self.aspx/Public/RibbonAddin.zip" target="_blank">recreated the solution</a> only using the Excel application model (rather than word), <a href="http://cid-e0fda717a8b27bfb.skydrive.live.com/self.aspx/Public/RibbonAddin.zip" target="_blank">available on my SkyDrive</a></li>
</ul>
<p>I did have some trouble with Windows 7 UAC because everytime you build your application, it reinstalls the plugin. There are some <a href="http://social.msdn.microsoft.com/Forums/en-US/clr/thread/654b346f-2bfe-4bec-86ee-c3f9095a220a">helpful</a> <a href="http://social.msdn.microsoft.com/Forums/en-US/vseditorprerelease/thread/5e326144-26bf-4e41-9d33-ec36d62e4503">posts</a> about fixing this.</p>
<p>Next thing for me to learn and post about is doing something useful in C# to change the Excel Data&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/petesamuel.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/petesamuel.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/petesamuel.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/petesamuel.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/petesamuel.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/petesamuel.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/petesamuel.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/petesamuel.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/petesamuel.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/petesamuel.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/petesamuel.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/petesamuel.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/petesamuel.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/petesamuel.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=petesamuel.wordpress.com&amp;blog=12372633&amp;post=28&amp;subd=petesamuel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://petesamuel.wordpress.com/2010/03/18/ribbon-control-in-ms-office-2007-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/033203d57d1c861fd91b3262a0cbfb58?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Pete</media:title>
		</media:content>
	</item>
		<item>
		<title>Learning ASP.NET MVC</title>
		<link>http://petesamuel.wordpress.com/2010/03/09/learning-asp-net-mvc/</link>
		<comments>http://petesamuel.wordpress.com/2010/03/09/learning-asp-net-mvc/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 09:11:58 +0000</pubDate>
		<dc:creator>Pete Samuel</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://petesamuel.wordpress.com/?p=15</guid>
		<description><![CDATA[I’ve found there is A LOT of information on the net about learning the MVC framework. I thought it might be helpful for others to read about my experiences while I’m learning. So, my starting point: http://asp.net/MVC Scott Hanselman has &#8230; <a href="http://petesamuel.wordpress.com/2010/03/09/learning-asp-net-mvc/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=petesamuel.wordpress.com&amp;blog=12372633&amp;post=15&amp;subd=petesamuel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I’ve found there is A LOT of information on the net about learning the MVC framework. I thought it might be helpful for others to read about my experiences while I’m learning.</p>
<p>So, my starting point: <a href="http://asp.net/MVC">http://asp.net/MVC</a> Scott Hanselman has a <a href="http://www.asp.net/learn/mvc-videos/video-7093.aspx">really fun and interesting presentation</a> regarding a OSS website he’s developed called <a href="http://nerddinner.com/">Nerddinner.com</a></p>
<p>I’ve had some experience with TDD and ASP.NET webforms from a previous project I was working on and we were using a Model-View-Presenter pattern which as far as I can see is pretty much the same as MVC.</p>
<p>The View – This is a dumb portal to communicate information to the user</p>
<p>The Controller – This communicates information to the view and translates it to and from the Model. It is generally unit tested and could communicate with the view via a View Model.</p>
<p>The Model – Contains business logic, stores and retrieves data in a database and is really the concrete information regarding your software project. This is also the data that you may need to mock to check your controller handles user input correctly.</p>
<p>More buzz words I needed to look up/I feel are never explained particularly well:</p>
<ul>
<li><strong>View Engine</strong> – A method of displaying information to the user. See <a href="http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework#View_Engines" target="_blank">wikipedia</a> for a better description</li>
<li><strong>Routing policy</strong> &#8211; Rather than using Viewstate, URLs can tell the controller what to display</li>
<li><strong>Dependency Injection</strong> &#8211; DI allows you to inject objects into a class, instead of relying on the class to create the object itself. (Microsoft)</li>
<li><strong>IOC </strong>
<ul>
<li>“Inversion of Control &#8211; IOC specifies that if an object requires another object, the first objects should get the second object from an outside source such as a configuration file. This makes testing easier.” (Microsoft)</li>
<li>Car requires seats. Car should get seats from factory (not the driver/user).</li>
</ul>
</li>
</ul>
<ul>
<li><strong>URLRoutingModule </strong>– Guesses the page you are trying to reach. No match means it falls back to the default IIS settings. In MVC a URL does not equal a page. Browser requests are mapped to controller actions.</li>
<li><strong>MvcHandler </strong>– Selects the controller that will handle the request</li>
<li><strong>JSON </strong>– JavaScript Object Notation</li>
</ul>
<p>The Controllers Execute method, invokes an action method associated with the controller, which in turn, receives user input, prepares a response and returns the requested type. The built in result types are:</p>
<ul>
<li><strong>ViewResult</strong> (which renders a view and is the most-often used result type),</li>
<li><strong>RedirectToRouteResult</strong>,</li>
<li><strong>RedirectResult</strong>,</li>
<li><strong>ContentResult</strong>,</li>
<li><strong>JsonResult</strong>, and</li>
<li><strong>EmptyResult</strong></li>
</ul>
<h3>ASP.NET Routing</h3>
<p>An ASP.NET Web Forms application is content-centric. An ASP.NET MVC application, in contrast, is application logic centric. It uses a route table to work out which controller to use and associated input data. What I&#8217;m not sure about yet is how to save data back to the Model through the view.</p>
<p>Using JSON &#8211; Another post for that I think!</p>
<p>Using Meta Data – data that describes data!</p>
<h3>References</h3>
<p>Microsoft. (n.d.). <em>MVC Overview.</em> Retrieved  from http://asp.net: http://www.asp.net/learn/mvc/tutorial-01-cs.aspx</p>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:212px;width:1px;height:1px;overflow:hidden;">http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework#View_Engines</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/petesamuel.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/petesamuel.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/petesamuel.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/petesamuel.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/petesamuel.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/petesamuel.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/petesamuel.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/petesamuel.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/petesamuel.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/petesamuel.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/petesamuel.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/petesamuel.wordpress.com/15/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/petesamuel.wordpress.com/15/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/petesamuel.wordpress.com/15/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=petesamuel.wordpress.com&amp;blog=12372633&amp;post=15&amp;subd=petesamuel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://petesamuel.wordpress.com/2010/03/09/learning-asp-net-mvc/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/033203d57d1c861fd91b3262a0cbfb58?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Pete</media:title>
		</media:content>
	</item>
		<item>
		<title>Why WordPress?</title>
		<link>http://petesamuel.wordpress.com/2010/03/08/why-wordpress/</link>
		<comments>http://petesamuel.wordpress.com/2010/03/08/why-wordpress/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 09:43:39 +0000</pubDate>
		<dc:creator>Pete Samuel</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://petesamuel.wordpress.com/?p=25</guid>
		<description><![CDATA[I had several (thousands) of options when choosing a blog engine. I chose WordPress for a few reasons: I&#8217;ve not used it before and wanted to learn something new It&#8217;s easy to export to another blog engine easily should I &#8230; <a href="http://petesamuel.wordpress.com/2010/03/08/why-wordpress/">Continue reading <span class="meta-nav">&#8594;</span></a><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=petesamuel.wordpress.com&amp;blog=12372633&amp;post=25&amp;subd=petesamuel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I had several (thousands) of options when choosing a blog engine. I chose WordPress for a few reasons:</p>
<ul>
<li>I&#8217;ve not used it before and wanted to learn something new</li>
<li>It&#8217;s easy to export to another blog engine easily should I want to change</li>
<li>Although I have hosting elsewhere, this was free and easy</li>
</ul>
<p>So far I&#8217;ve been impressed. It has a mobile version built in that looks good on my phone and most functions are easy and work well.</p>
<p>I couldn&#8217;t find a way to use Google analytics with the hosted solution. If I downloaded it and installed on my own server then there are lots more options. Perhaps a task for another day!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/petesamuel.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/petesamuel.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/petesamuel.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/petesamuel.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/petesamuel.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/petesamuel.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/petesamuel.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/petesamuel.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/petesamuel.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/petesamuel.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/petesamuel.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/petesamuel.wordpress.com/25/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/petesamuel.wordpress.com/25/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/petesamuel.wordpress.com/25/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=petesamuel.wordpress.com&amp;blog=12372633&amp;post=25&amp;subd=petesamuel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://petesamuel.wordpress.com/2010/03/08/why-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/033203d57d1c861fd91b3262a0cbfb58?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Pete</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://petesamuel.wordpress.com/2010/03/04/hello-world/</link>
		<comments>http://petesamuel.wordpress.com/2010/03/04/hello-world/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 11:08:01 +0000</pubDate>
		<dc:creator>Pete Samuel</dc:creator>
				<category><![CDATA[C#]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Surely every blog starts with this! Why should mine be different? I&#8217;m planning on writing a few posts on various technologies. You can get the theme of this blog from the About page.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=petesamuel.wordpress.com&amp;blog=12372633&amp;post=1&amp;subd=petesamuel&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Surely every blog starts with this! Why should mine be different?</p>
<p>I&#8217;m planning on writing a few posts on various technologies. You can get the theme of this blog from the <a href="/about/">About</a> page.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/petesamuel.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/petesamuel.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/petesamuel.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/petesamuel.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/petesamuel.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/petesamuel.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/petesamuel.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/petesamuel.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/petesamuel.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/petesamuel.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/petesamuel.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/petesamuel.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/petesamuel.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/petesamuel.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=petesamuel.wordpress.com&amp;blog=12372633&amp;post=1&amp;subd=petesamuel&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://petesamuel.wordpress.com/2010/03/04/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/033203d57d1c861fd91b3262a0cbfb58?s=96&#38;d=&#38;r=G" medium="image">
			<media:title type="html">Pete</media:title>
		</media:content>
	</item>
	</channel>
</rss>
