<?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/"
	>

<channel>
	<title>Paul Lockwood on Software Development</title>
	<atom:link href="https://dotnetworkaholic.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://dotnetworkaholic.com/</link>
	<description>Architect / Performance Specialist in Denver, CO</description>
	<lastBuildDate>Fri, 17 Sep 2021 12:36:49 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.12</generator>

<image>
	<url>https://dotnetworkaholic.com/wp-content/uploads/2020/07/0d25ada9f898018ed8bd7f1db7f30634.jpeg</url>
	<title>Paul Lockwood on Software Development</title>
	<link>https://dotnetworkaholic.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Atlanta’s Pocket PC User Group</title>
		<link>https://dotnetworkaholic.com/atlantas-pocket-pc-user-group</link>
		
		<dc:creator><![CDATA[Paul Lockwood]]></dc:creator>
		<pubDate>Mon, 22 Sep 2014 22:30:14 +0000</pubDate>
				<category><![CDATA[Other]]></category>
		<guid isPermaLink="false">https://dotnetworkaholic.com/?p=152</guid>

					<description><![CDATA[<p>Show and Tell of expensive toys could sum this evening up. There were only seven developers among the seventy or so attendees. The phrases Compact Framework or even .Net were not mentioned once! Still it was a fun evening, I &#8230; <a href="https://dotnetworkaholic.com/atlantas-pocket-pc-user-group">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/atlantas-pocket-pc-user-group">Atlanta’s Pocket PC User Group</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Show and Tell of expensive toys could sum this evening up. There were only seven developers<br />
among the seventy or so attendees. The phrases Compact Framework or even .Net were<br />
not mentioned once!</p>
<p>Still it was a fun evening, I got to live vicariously though other people’s high dollar<br />
purchases (like I’d blow $800 on a PDA, do you know what kind of wheels $800 would<br />
buy? Nice ones).<br />
Unbelievably some rivaled Michael Earls on<br />
the amount-of-tech-in-your-everyday-life front. It seemed like everyone there had<br />
Bluetooth capable devices which talked to their car audio system + GPS receiver.</p>
<p>Obviously there is quite lot to learn about mobile devices apart from just programming<br />
them; my favorite was the new nick name for the BlackBerry: CrackBerry –<br />
apparently checking Email becomes an addiction creating a Pavlovian response<br />
from its incoming email alert. For you single guys: If you fly often it appears a BlackBerry will<br />
pick up more chicks than a PocketPC equivalent. My $200<br />
Dell Axim probably means Jocks will be stand in line to<br />
kick my nerdy ass.</p>
<p>The main speaker was Dale Coffing, he<br />
showed off some cool products including a pair of kakis that I’ll be buying. The SCOTTeVEST pants<br />
have eleven hidden pockets and compartments – ideal for stowing a PDA and blunt metal<br />
objects discretely (in case of attack by Jocks in Airport lounges). SCOTTeVEST also<br />
sell Jackets… get ready to salivate… Their jackets have up to 42 hidden pockets all<br />
begging to contain an expensive gadget, the jacket even has hidden cable routing to<br />
link any oh-that’s-so-90’s wired gadgets together. And just think of the new people<br />
you’ll meet at Airport security. The Jackets are here:</p>
<p>http://www.scottevest.com/v3_product_info/features.shtml</p>
<p>If anyone knows of an</p>
<p>Atlanta</p>
<p>based Compact Framework <s>Support</s> User Group please let me know.</p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/atlantas-pocket-pc-user-group">Atlanta’s Pocket PC User Group</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Evaluated Node.js, moving 100% to JavaScript – am backing off for a while</title>
		<link>https://dotnetworkaholic.com/2014/02/02/evaluated-node-js-moving-100-to-javascript-am-backing-off-for-a-while/</link>
		
		<dc:creator><![CDATA[Paul Lockwood]]></dc:creator>
		<pubDate>Sun, 02 Feb 2014 20:25:39 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://dotnetworkaholic.com/?p=46</guid>

					<description><![CDATA[<p>It has been fun. Following a month ramping-up on JavaScript, AngularJS, Node.js and Git conclusions are: AngularJS looks great Hold off on Node Keep JavaScript close, but not a best buddy JavaScript transcompilers are promising Git is really easy to &#8230; <a href="https://dotnetworkaholic.com/2014/02/02/evaluated-node-js-moving-100-to-javascript-am-backing-off-for-a-while/">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2014/02/02/evaluated-node-js-moving-100-to-javascript-am-backing-off-for-a-while/">Evaluated Node.js, moving 100% to JavaScript – am backing off for a while</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>It has been fun. Following a month ramping-up on JavaScript, AngularJS, Node.js and Git conclusions are:</p>
<ul>
<li>AngularJS looks great</li>
<li>Hold off on Node</li>
<li>Keep JavaScript close, but not a best buddy</li>
<li>JavaScript transcompilers are promising</li>
<li>Git is really easy to install/ use; embrace over SVN for disconnected commits/ simplicity</li>
</ul>
<h2>Surprisingly easy to get up and running with Node</h2>
<p>It is surprisingly easy to get up and running with node, see the below screenshot for what took a little over an hour after deciding to install Ubuntu and use Eclipse as an IDE for node development:</p>
<p><img loading="lazy" class="alignnone size-full wp-image-47" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/nodejsinubuntu.png" alt="" width="640" height="348" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/nodejsinubuntu.png 640w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/nodejsinubuntu-300x163.png 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>Git is trivial to install on Windows/ Linux. It took minutes to create a Git repository in Dropbox.</p>
<h2>What is Node.js</h2>
<p>Node has a lot of what you are already used to. For almost everything we can do in .Net there is a corresponding Node package. Socket IO, http communication, async, MySQL provider and so on. These are called modules in Node; installed trivially using the Node Package Manager (npm) via a terminal prompt. Many popular JavaScript libraries are also available as Node Modules: Underscore, Mocha and CoffeeScript being particularly popular.</p>
<p><b>Node literally has one thread</b> and an event loop which cycles through pending events. This means <b>any part of your codebase can block</b> other requests. A major difference is the style of coding in Node. ASP.Net etc are implicitly multi-threaded, pre-empting threads to ensure each server request gets its share of CPU time. <b>Node code must be crafted in a manner so-as nothing blocks a thread.</b></p>
<p>While learning Node, much tutorial code required piping streams and nesting JavaScript callbacks. Apparently most Node code is like this. Such code soon becomes difficult to follow and comprehend. With familiarity this will improve, but well crafted OO code will always be easier to understand.</p>
<h2>Why Node?</h2>
<p>JavaScript is everywhere; many developers know JavaScript so why not use it server-side too?</p>
<p>We write validation logic in C# on the server and JavaScript in the browser. Using Node we can reuse the code.</p>
<p>Performance is a huge seller. Apparently Node.js is bad-ass rock star tech that can blow ASP.Net etc out of the water performance-wise. Let me <b>debunk</b> this: performance is an area where I <i>really</i> kick-ass; have tuned many systems (small and large) generally <b>seeing ~100-&gt;400 times improvement under load</b> with surprisingly minimal tweaks. Most were systems that had already been tuned.</p>
<p>Performance is a function of your developers and/ or having someone on staff who understands performance holistically. Do not select a technology because its theoretical maximum load is 20% higher. At a fortune 10 I tuned two maxed out Datacenter installs (~thirty machines each) to all the machines using almost zero CPU. Undoubtedly several people spent weeks or months analyzing which machines to buy for ‘peak performance’. Architecture, sensible implementation and tuning are where real performance gains are found.</p>
<p>Performance of Node can be killed by any one bad section of code. Tools to tune Node are very immature. With .Net we use WinDbg/ sos.dll to analyze production systems – it is very difficult to analyze Node in production.</p>
<h2>JavaScript is the Future?</h2>
<p>As many tech friends said: on my third read of JavaScript the Good Parts it really made sense. Quality coding can be achieved in JavaScript but it is far from a perfect language.</p>
<p>Google’s Dart, Microsoft’s TypeScript and CoffeeScript all bring real OO concepts including classes and even static typing to JavaScript. Currently they transcompile to JavaScript. Within five years expect a language in this category to have gained traction + adopted into all browsers. Current versions of all browsers self-update.. Once most of the world is running self-updating browsers it becomes possible for new standards to roll out quickly. Powers that be in the Internet world will settle on a standard; that is why Microsoft threw TypeScript into the ring.</p>
<p>JavaScript was cobbled together quickly in 1994 as a scripting language for Netscape. It is very weak and will eventually be ousted. Transcompiling is an intermediary step.</p>
<h2>Final Conclusions/ Predictions</h2>
<p>Node.js is hot today, but not a good fit for the kind of applications I personally work on: large systems with a traditional RDMS back-end and a lot of inter-system messaging to slow legacy systems.</p>
<p>Node.js is helping building a great base of JavaScript’s frameworks for the enterprise. Be-most are from small untrusted sources. It is only a matter of time until a serious security breach occurs via someone slipping malicious code into an open source JavaScript library. Once a high profile incident occurs the JavaScript community will figure out how to mitigate such attacks.</p>
<p>A Node.js rival with multithreading will appear, or Node itself will be extended. Ruby gained multithreading; after years of its user base stating single threaded web servers are fine.</p>
<p>JavaScript will morph into a real language within five years.</p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2014/02/02/evaluated-node-js-moving-100-to-javascript-am-backing-off-for-a-while/">Evaluated Node.js, moving 100% to JavaScript – am backing off for a while</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Technology Fragmentation is a Project Killer</title>
		<link>https://dotnetworkaholic.com/2014/01/23/technology-fragmentation-is-a-project-killer/</link>
		
		<dc:creator><![CDATA[Paul Lockwood]]></dc:creator>
		<pubDate>Thu, 23 Jan 2014 20:31:56 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://dotnetworkaholic.com/?p=49</guid>

					<description><![CDATA[<p>Project failure is very real Standish Group research shows ‘Of 3,555 projects from 2003 to 2012 that had labor costs of at least $10 million, only 6.4% were successful‘. 41% were total failures and the rest vastly over-budget or did not meet expectations. tl;dr &#8230; <a href="https://dotnetworkaholic.com/2014/01/23/technology-fragmentation-is-a-project-killer/">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2014/01/23/technology-fragmentation-is-a-project-killer/">Technology Fragmentation is a Project Killer</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Project failure is very real</h2>
<p>Standish Group research shows ‘Of 3,555 projects from 2003 to 2012 that had labor costs of at least $10 million, <strong>only 6.4% were successful</strong>‘. <strong>41% were total failures </strong>and the rest vastly over-budget or did not meet expectations.</p>
<p><img loading="lazy" class="alignnone size-full wp-image-50" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/standishgrouppiegraph.png" alt="" width="360" height="502" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/standishgrouppiegraph.png 360w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/standishgrouppiegraph-215x300.png 215w" sizes="(max-width: 360px) 100vw, 360px" /></p>
<p>tl;dr “This article summarizes my twenty-five years in the Software Development industry. Project failure is commonplace today, Technology Fragmentation is a key cause.”</p>
<h2>1989 -&gt; 1999: One Project Failure – mostly PowerBuilder/ Oracle</h2>
<p>From a summer engineer in 1989 to leading a project rescue in 1999 <strong>only one project failed.</strong> Seriously. (Only failure was with a Big 5 IT consultancy, staffed with mostly non-technical resources who did not want to be on that particular project).</p>
<p>All projects from 1994-&gt;1999 were PowerBuilder/ Oracle. Many people became experts in them and there were no additional frameworks. <strong>Virtually every project used similar architectural techniques.<br />
</strong></p>
<p>During this period a small percentage of individuals appeared essential to some projects. At a minimum some hands-on developers undoubtedly shaved man-years off project costs. At least twice I saw several contractors almost certainly rescue a project; for the most part they did this by training/ leveraging existing staff, not super-human 80+ hour week coding.</p>
<h2>1999-&gt;2001: Fought off Failures – Java + major Frameworks:</h2>
<p>Technically I had <strong>only one outright failure with Java</strong>; when I opted not to burn-out and resigned from an insanely well paying contract<strong>. </strong>They burned through ~$10m in six months.</p>
<p>On the first two Java projects I averaged ~80 hours per week, exceeded 100 hours per week over one seven week period and even had some 24 hour days. I was the main technical resource, unfortunately hired late in their SDLCs. Developers lack of knowledge with the entire technology stack was a core issue. This required me to learn quickly and work unsustainable hours to stabilize projects/ educate others.</p>
<p>On these successful projects several developers followed close behind my lead – <strong>it was a team effort to succeed against the unknown technologies</strong>, but only between ~20-&gt;30% of the team in each case. A <strong>significant problem was the number of technologies to learn.</strong></p>
<p>With PowerBuilder/ Oracle even the weakest team members were somewhat competent in one of the two technologies, and they generally soon improved (having lots of other people to learn from). With Java and its increasing number of frameworks/ app-servers/ etc it was not uncommon for a project to <strong>only have one expert per framework/ tool</strong>. This meant <strong>several people became critical to project success</strong>. If they had bluffed their way through the interview their area was a ticking time-bomb. <strong>With a plethora of frameworks it is very hard to technically screen all candidates</strong>; unless an expert is used for interviews bluffers can be very hard to weed out.</p>
<h2>Some Stability with .Net: 2002-&gt; 2007</h2>
<p><strong>My first .Net project failed outright, but was my only outright failure with .Net until ~2012</strong>. No one understood the technology on our first project; about a year in I was making great breakthroughs, solving most of the long standing issues. Unfortunately due to missing long-term deadlines our strong manager was ousted was replaced with a ‘yes-man’; we disagreed and he soon ousted me. That project failed within a year and I received several supportive emails from client staff. <strong>Approaching $10m dollars of tax-payer money was wasted</strong>, subsequently I have read many news stories slamming IT at that major branch of the Government (employs ~300,000 people).</p>
<p>Once up to speed with .Net virtually every project called me a ‘superstar’, ‘insanely productive’ etc and <strong>I did not see a single failure.</strong>  Unfortunately there was plenty of evening and weekend work to extinguish fires/ meet deadlines.</p>
<p><strong>Why were these projects all successful?</strong> <strong>We knew the entire technology stack</strong>. In particular I knew .Net and Oracle/ SQL Server <em>very well</em>; this enabled <b>extinguishing fires </b><strong>quickly</strong> <em>and</em> permitted time to educate their developers. Many were ‘Over-the-Top’ thankful to me for taking the time to assist them (I was glad to help/educate!).</p>
<h2>Stress with .Net: 2007 -&gt; Present</h2>
<p>By 2007 I still had no failed .Net projects where I had control but <strong>most were stressful; </strong>typically from overwhelming amounts of evening/ weekend work.</p>
<p>In ~2007 the .Net market really exploded bringing three major issues:</p>
<ul>
<li>Quantity of frameworks sky-rocketed</li>
<li>Quality of frameworks reduced</li>
<li>Hiring quality people became became harder</li>
</ul>
<p>By 2007 most projects I arrived at had a fair number of frameworks/ tooling: Microsoft Patterns and Practices, ASP.Net Membership Provider, Log4Net and NUnit were particularly popular. As time progressed ORMs came into the mix; I have worked with at least five ORMs so far. Templating/ code generation frameworks and IDE plug-ins like Re-Sharper were also popular.</p>
<p>Few new technologies save time in the short term. <strong>Most frameworks/tools only reduce time/money/complexity the second or third time used.</strong> This is a well documented fact. A rule of mine has to been to <strong>never use more than two new technologies on a single project</strong>. Learning curves and risks are just too great.</p>
<p>~2007 -&gt; 2012 was my ‘Project-Rescue Phase’. The majority required enormous effort to understand the technology stack and generally battles with managers/ architects to stabilize. Typically removing unnecessary technologies and performing major refactorings to simplify code/ make it testable via Continuous Integration.</p>
<p>On my final ‘project-rescue’ contract: within three weeks we met a deadline despite the team having zero to show for the previous three months. Their Solution Architect left them a high level design document littered with fashionable buzzwords; nothing useful had been produced. Two previous architects made no progress; including the original solution architect. <strong>I was their forth architect in about three months</strong>. One other developer and I began from scratch coding everything to meet phase 1 in three weeks; the other five people did little but heckle. The consulting company I assisted was still being difficult so I left them to it; <strong>they lost that client</strong>. Being fair they put something into production, but it took three times than longer and was a terrible product. They burned through three more architects during that time.</p>
<h2>Performance Tuning: 2010</h2>
<p>Around 2010 I advertised for and landed about ten performance tuning/ defect fixing contracts. Massive stress but great intellectual challenges fixing issues customers could not squash. I had a 100% success rate with these, taking a maximum of four days <span class="wp-smiley wp-emoji wp-emoji-smile" title=":)"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span></p>
<p>An opportunity to observe many systems over a short period. <strong>Unnecessary Complexity was a constant</strong>. Frameworks and trendy development techniques being primary offenders. One customer had a mix of Reflection and .Net Remoting that hindered debugging most of their code base for years. I removed that problem in ~twenty minutes which stunned their coders – they were amazed with wide open eyes and gaping mouths cartoon style <span class="wp-smiley wp-emoji wp-emoji-smile" title=":)"><img src="https://s.w.org/images/core/emoji/14.0.0/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span> [Topic-change: this is where experience counts and that minuscule piece of work was in the 100x Developer zone. Such times are rare, do not let anyone tell you that they are <a href="https://dotnetworkaholic.com/2014/01/10/10x-developers-and-10x-projects/">consistently a 10x developer</a>.]</p>
<h2>100% Failed .Net Projects: 2012 -&gt; Present</h2>
<p>2012 forward I decided to <strong>stop the ‘workaholic rescue’ thing </strong>and <strong>try to talk sense into managers/ architects/ stakeholders</strong>. This was <strong>ineffective</strong>. Two projects failed outright and the third is a Death-March. Stakeholders believe all is fine as they ‘tick-off progress boxes’ but reality is a long way from their current perception. [Update Feb 2014: They are now at least $50m over budget]</p>
<p>Two of these projects suffered from ‘resume-driven architectures’; the other wishful-thinking timescale-wise, but they hired about two hundred Indian contractors to compensate which always works (not). I was tempted to give each member of the leadership team three copies of the Mythical Man-Month; three copies so they could read it three times faster.</p>
<h2>Quantity Up/ Quality Down for additional Frameworks and Tooling:</h2>
<p>From 1989 -&gt; ~1998 the number of technologies was modest.</p>
<p>About 1999 the Internet-Effect really began. Ideas took center-stage in the early days. Certainly in the Java world many were rushing to use latest techniques they had just read about online: EJBs, J2EE, Distributed Processing, Design Patterns, UML etc… Most teams were <strong>crippled by </strong><strong>senior</strong><strong> staff spending their time in these trendy areas </strong><strong>rather than focusing on business needs (aka meta-work).</strong> This coincides with the beginning of my ‘project rescues’ and being told way too often that I was “hyper-productive compared to the rest of the team”.</p>
<p>By<strong> ~2007 open source frameworks and tools were center-stage in most projects</strong>. Since then we have seen exponential growth and large companies (Sun, Microsoft, even Google) proliferated their dev spaces with low quality framework/tool after low quality framework/tool presumably hoping some would stick. Apple is one of the few to exercise real restraint. The Patterns and Practices group within Microsoft is particularly shameful example most of us are familiar with.</p>
<h2>Over Twenty Languages/Frameworks/ Tools is now common?</h2>
<p>It is tough to single out one project, but below I quickly listed <strong>forty-two basic technologies/ core concepts </strong>a sub-project at one company used:</p>
<p>“VS 2012, .Net 4+, html5, css3, JavaScript, SPA/ MVC concepts, Backbone, Marionette, Underscore, QUnit, Sinon, Blanket, RequireJS, JSLint, JQuery, Bootstrap, SQL Server, SSIS, ASP.Net Web API, OData, WCF, Pure REST, JSON, EF5, EDMX, Moq, Unity DI, Linq, Agile/Scrum, Rallydev, TFS Source Control, TFS Build, MSBuild scripts, TFS Work Item Management, TFS Server 2010/ 2012, ADSI, SSO, IIS, FxCop, StyleCop, Design Patterns (classic and web)”</p>
<p>Beyond the buzzwords virtually every area of the application was custom implemented/ modified framework rather than taking standard approaches. It was certainly job-security and helped lock out anyone new to team.</p>
<p>That is just one of three projects since 2012 where I “complained three times, was not listened to so walked away as calmly as possible rather than fight like I used to”.</p>
<h2>Resume-driven Architectures / Ego-driven Development</h2>
<p>Why do most contemporary projects so many frameworks and tools? I see three key drivers that happen during the Solution Architecture phase:</p>
<ul>
<li>Strong External Influence</li>
<li>Resume Driven Architectures</li>
<li>Ego Driven Development</li>
</ul>
<p><strong>Strong External Influence</strong> is a key driver. SOA appearing on magazine covers, Microsoft MVPs all singing the same tune etc. Let’s look at how these work.. What appears on magazine covers is driven by the major advertisers. SOA sold more servers, hence it was pushed on us. Many friends are MVPs so I must take care in explaining them: many try hard to stay independent but most are influenced but their MVP sponsor to publish material around certain topic. Over the years I have seen many lose their MVP status and generally it was after outbursts against Microsoft, or they stopped producing material that Microsoft Marketing wishes to see. Apologies to MVPs, but you all know this is the truth.</p>
<p><strong>Resume Driven Architectures</strong> is the Solution Architect desiring certain buzzwords on his/her resume to boost their own career, and/or being insecure about finding their next role without the latest buzzwords. On one project I had to leave early the Solution Architect mandated an ESB for a company with under 2,000 employees! Insanity. Of course they failed outright, but not before going three times over schedule and having almost 200% turnover in their contract positions during a six month period! It is not fair to single out any one individual; we have all seen a platoon sized number of such people over our careers.</p>
<p><strong>Ego Driven Development:</strong> Bad managers tend to compare ‘number of direct reports’ when trying to impress one-another. Bad architects do the same thing, just with latest buzzwords.</p>
<h2>What needs to happen?</h2>
<p>With <strong>fewer technologies</strong> one or two key players can learn them all and stabilize a project. This is not feasible with over forty technologies.</p>
<p>Already in the JavaScript community we are seeing a backlash against needing large numbers of frameworks, but this is causing further fragmentation. A core concept of AngularJS (and others) is to not rely on a plethora of other frameworks. Of course early stages of learning ‘stand-alone’ frameworks like AngularJS are tough. <strong>Frameworks generally do not save time until the second or third project we use them</strong>. We could learn AngularJS but what if our next project does not use it? Time wasted, likely no efficiency gained.</p>
<h2>No-brainier: Reduce additional frameworks</h2>
<p>Doh, virtually all of us realize this! The problem is how? Personally I am researching Angular and Node with the intent of waiting until a suitable position appears. <strong>This approach vastly limits the projects we can work on.</strong> [Update: I ended up taking a Jenkins/ CI stabilization job close to home but eventually did get use Angular there.]</p>
<p>Personal experience shows that once a project with a vast number of frameworks is given the green light it takes a Herculean Effort to even tweak its Solution Architecture. As independent contractors we can <strong>avoid clearly-crazy projects</strong> including those loaded with buzzwords<strong>. </strong>Unfortunately that limits the projects we can work on. It may keep us sane though; I believe:</p>
<blockquote><p>“Beyond two new technologies project success is inversely proportional to their combined complexity”</p></blockquote>
<h2>Ensure the Solution Architect is Hands-on</h2>
<p>I used to believe this was a perfect solution, if only Architects had to build what they preached then they would constrain Architectures to the bounds of reality. Unfortunately this appears not to be universally the case; perhaps it reigns them in a small amount? I have witnessed more than one case of someone attempt to implement their own bizarre architecture.</p>
<p>In the worst case having to implement themselves, must reign in an Architect’s craziest ideas. Personally I shy away from pure architecture, especially above multiple teams. Before now when under pressure I have resorted to semi-bluffing and palming quickly cobbled up ideas off onto others safe in the knowledge I did not have to implement. I soon became cognizant of what I was doing and brought it to a swift halt. Do you think others will be so honest? <strong>Let’s try to ensure Architects are on implementation teams.</strong></p>
<h2>Ignore vendor influence</h2>
<p>Guy Kawasaki has a lot to answer for. IT vendors have long tried to sell us what we do not need, but Guy Kawasaki introduced many techniques we see today.</p>
<p>Attended a free conference or user group with quality speakers lately? Receive free trade magazines? Java ones are funded by larger players in that space, Microsoft ones often by (indirectly) by themselves. <strong>There is great value in these resources, but please keep your eyes open for manipulation.</strong></p>
<p>SOA is a primary one I refer too. Magazine after magazine had SOA emblazoned their front covers, many conference talks were around SOA.. it became the buzzword du jour for years. SOA used conservatively is fantastic, but from about 2002-&gt;2010 I saw project after project with SOA sprinkled around as if salt from a large salt-shaker. Re-factoring to remove/ short-circuit SOA was a key technique of mine – <em>‘strangely’</em> removing much of it led to much maintainable and performant code. Why was SOA so heavily hyped by our industry? Distributing code leads to more servers; which increases hardware sales and more importantly <em>server license sales</em>. <strong>Server license sales are where the big-players make their real money</strong>. Costs of even a smaller companies SQL Server or Oracle licensing soon ring up to millions-of-dollars. High costs accompany CRM, ERP, TFS, Sharepoint and most other common sever based software.</p>
<p><strong>Younger Architects are particularity susceptible to vendor influence</strong>. Younger people are more easily influenced, tempted by implicit promises etc and soon saddle their projects with many trendy buzzwords. <strong>How could a project possibly fail if every buzzword is hot on Reddit and our vendor representatives cannot stop talking about them?</strong></p>
<p>Embedding consultants/ evangelists into large companies is very common. Received free conference tickets from a vendors? Free training and elite certifications? Sorry to lift the curtain, but clearly these are tricks which exist to coerce you into using a particular technologies.. and buy more severs! The consultants and evangelist are of course generally not evil, but they are trained to believe in what they are selling.</p>
<h2>Become a Solution Architect</h2>
<p>Being the Architect certainly works. <strong>Every project I had significant control over was a tremendous success.</strong> Unfortunately most projects select their Architects based on popularity with management and other non-technical attributes.</p>
<p>Frequently senior leadership believes Solution Architects should manage multiple projects and not be hands-on with code. This is a mistake. Personally I have turned this role down several times as it leads to poor Architectures – as stated above I have caught myself bluffing before in this role. <strong>Solution Architects should not span multiple projects.</strong> <strong>Staying hand-off for long leads to believing marketing of technologies. Marketing is often far from reality.</strong></p>
<p>Most companies in-house Architects tend not to be the strongest technically. Senior leadership looks for softer skills – can they convince/ bully others, have a large physical presence etc. Notice how often we see tall white male Solution Architects? ~80%+ of the time yes? When this is not the case the Architect is almost always technically sound – because they attained the position on technical merit. All too often leadership looks for someone ‘with weight to throw around’ – at the Fortune 10 discussed above virtually all ‘thought leaders’ in our department had a large physical presence, and shouting at subordinates was second nature. It was amusing when I was asked to review the work of the two worst because so many people were complaining about them.</p>
<h2>Conclusions</h2>
<p>Hopefully it is clear that we must reduce the number of technologies in our projects. For the foreseeable future it is unlikely we can return to the stability/ predictability of pre-Internet/ tech-boom days.</p>
<p>This post is far longer than my notes/ original outline predicted. In future I will partition posts into more digestible subtopics with more focus on how we can improve. There is good information here, so under time-pressure I decided to publish as-is. Being between contracts Angular and Node are calling my name. These two appear the most likely to emerge as victors from current JavaScript framework fragmentation.</p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2014/01/23/technology-fragmentation-is-a-project-killer/">Technology Fragmentation is a Project Killer</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>10x Developers and 10x Projects</title>
		<link>https://dotnetworkaholic.com/2014/01/10/10x-developers-and-10x-projects/</link>
		
		<dc:creator><![CDATA[Paul Lockwood]]></dc:creator>
		<pubDate>Fri, 10 Jan 2014 19:27:40 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://dotnetworkaholic.com/?p=10</guid>

					<description><![CDATA[<p>In addition to Scott’s and many, many other 10x Developer posts here are opinions from someone labeled ‘hyper-productive’ on most projects. Key Points 10x is a zone we enter at times, it cannot be sustained 10x has historically (in Mythical Man Month etc) meant the difference between worst &#8230; <a href="https://dotnetworkaholic.com/2014/01/10/10x-developers-and-10x-projects/">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2014/01/10/10x-developers-and-10x-projects/">10x Developers and 10x Projects</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p dir="ltr">In addition to Scott’s and many, many other 10x Developer posts here are opinions from someone labeled ‘hyper-productive’ on most projects.</p>
<h2>Key Points</h2>
<ul>
<li><strong>10x is a zone</strong> we enter at times, it <strong>cannot be sustained</strong></li>
<li>10x has historically (in Mythical Man Month etc) meant the difference between worst and best developers</li>
<li>Being 10x<em> better than average</em> is a rare occurrence with short duration</li>
<li>10x zone is only achieved after months or years perfecting required skills/ preparing conditions for the highly productive period to commence</li>
<li>Many important tasks take very similar amount of times regardless of the individual – e.g. attending the daily stand up, liaising with another department, manual testing etc.</li>
</ul>
<h2>Common Characteristics of being ‘in the 10x zone’</h2>
<ul>
<li><strong>Task that does not lend itself to parallelism</strong> – efficiency is gained from reducing communication etc.</li>
<li><strong>Full stack developer</strong> avoids need to interface with knowledge silos – this is a common with hyper-productive developers but often leads to resentment from the team unless great care/preparation is taken to handle <strong>political backlash</strong></li>
<li>Using a <strong>library/ technique highly suited to task at hand</strong> – a great example is deserializing/ serializing xml by hand vs. employing a tool like xsd.exe or JAXB. Many thousands of lines vs. a trivial library call can lead to <strong>man-months of saved effort</strong></li>
<li>Already familiar with business/ technical problem – second time around is always faster. By the third time most problems are solved many times faster</li>
<li><strong>Bust through politics</strong> – obtain access to all systems, and are shielded from political backlash of stepping on toes</li>
</ul>
<h2>10x Projects are a far Bigger Deal</h2>
<p>Over the years I have seen around fifty projects. Excluding the <em>really</em> crazy ones <strong>5-&gt;10x is a rough measure for the difference in productivity we see at the project level</strong>. More if operational problem are factored in; too many systems are moved to production before being fully stable. Many projects fail, so technically there is an infinite difference in productivity. 5-10x is a rough approximation between ones that make it to production.</p>
<h2>Common Characteristics of very inefficient Projects</h2>
<ul>
<li><strong>Too many people</strong> – and/or too many of the wrong people</li>
<li>Cumbersome, <strong>un-enjoyable </strong>process</li>
<li>Developers treated as commodities – <strong>no praise for quality work</strong></li>
<li>Rude, non-technical leadership</li>
<li>Best developers flee the project</li>
</ul>
<p>Anyone with a few software development projects under their belt knows the main issues that lead to poor projects. Unfortunately after all my years in software development I am now of the opinion that <strong><em>many are inefficient intentionally by design</em></strong>. Yes, the leadership team actually desires this! <strong>Many managers long for very large teams</strong><strong>.</strong> Root cause appears to be Empire Building; a larger team brings the manager/director more power. Many resist promoting others that could potentially challenge them, and several times I have witnessed life being made difficult for quality individuals with the sole intention of forcing them off the project. As time progresses leadership weakens and it can decimate large companies, especially during tough economic times.</p>
<h2>Conclusions (tl;dr)</h2>
<p>Obviously there is a massive productivity difference between the best and worst developers. That does not mean someone highly productive on Project A will immediately be highly productive on Project B.</p>
<p>A badly run project can cripple even the best individual’s ability to do great work. This is of far greater importance than bickering about if one developer is actually 10x or not. <strong>One great developer is just one great developer <em>with a limited skill-set</em>. The team wins the war,</strong> great developers are often decisive in key battles but they cannot win wars alone.</p>
<p>Developers have specialties. Personally I<em> still struggle</em> until up to speed with a new technology – it takes time and hard work to be ‘10x’ again with new technologies.</p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2014/01/10/10x-developers-and-10x-projects/">10x Developers and 10x Projects</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Should I buy a 3D Printer?</title>
		<link>https://dotnetworkaholic.com/2013/04/08/should-i-buy-a-3d-printer/</link>
		
		<dc:creator><![CDATA[Paul Lockwood]]></dc:creator>
		<pubDate>Mon, 08 Apr 2013 19:38:34 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[3D Printer]]></category>
		<category><![CDATA[3D Printing]]></category>
		<category><![CDATA[assembly]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[printrbot]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[which one]]></category>
		<guid isPermaLink="false">https://dotnetworkaholic.com/?p=12</guid>

					<description><![CDATA[<p>Thinking of buying a 3D Printer? Let’s give that thought a quick reality-check… I was ready for a somewhat hobbyist experience but it took way longer than expected to have the printer assembled and printing acceptably. Mine is a $549 &#8230; <a href="https://dotnetworkaholic.com/2013/04/08/should-i-buy-a-3d-printer/">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2013/04/08/should-i-buy-a-3d-printer/">Should I buy a 3D Printer?</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Thinking of buying a 3D Printer? Let’s give that thought a quick reality-check… I was ready for a somewhat hobbyist experience but it took way longer than expected to have the printer assembled and printing acceptably.</p>
<p>Mine is a $549 Printrbot Kit. Interestingly perusing forums of the current generation $2,200 MakerBot Replicator 2 showed their owners experience similar issues to what I’ve gone through.</p>
<p>Assembly of the kit took five to six hours. Until it printed reliably using PLA was probably a further forty hours but I did fabricate a new platform and adjustable bed. If time permits I’ll follow this post up with common issues + solutions so maybe you’ll be up and running in under twenty hours. Either way, expect to become a 3D Printer technician and be sure to have an abundance of patience handy.</p>
<p>The image below sums up the experience nicely. See the tools? Notice the spool holder made from DIY parts? Surprised to see DIY screws, power drill etc nearby? Well… forums and blog posts are littered with people who purchased a 3D printer and abandoned it before making good prints. Surf some forums and you’ll notice virtually everyone showing off their prints has their printer in some kind of hobbyist workshop; typically they’ll have loads of tools around and are veterans of past fabrication/ advanced DIY projects.</p>
<p><img loading="lazy" class="alignnone size-full wp-image-13" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/complete-printer-1-medium.jpg" alt="" width="1024" height="768" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/complete-printer-1-medium.jpg 1024w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/complete-printer-1-medium-300x225.jpg 300w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/complete-printer-1-medium-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>But apparently a child can build one? Yes, some manufacturers are suggesting you buy one for your eight year old and he’ll have it assembled and printing in no time… Not a chance! I did see one blog post where a young boy had assembled the kit but “so far they were having trouble printing”. Younger than twelve I’d say to totally forget it and buy him/her a Lego Mindstorms or similar. High school age is probably more appropriate; even then a tinkerer Father on hand is almost a necessity.</p>
<p><strong>Should I spend $550 or $2,500?</strong></p>
<p>Now my $549 Printrbot is dialed-in and has had a few modifications its prints are excellent. Given the explosion in 3D Printer popularity, anything built in 2013 is going to look like a Dinosaur in a few years. Unless you need to print very large objects now I recommend buying a lower priced printer today and upgrading in a couple of years when mass production techniques should bring costs way down and take quality/ ease of use way up. I purchased Make: Ultimate Guide to 3D Printing for $6 as they reviewed about fifteen current generation printers.</p>
<p><strong>Should I buy a Kit or Fully Assembled?</strong></p>
<p>Assembly is typically only ~$100 extra, but the experience [frustration!] of building your first printer is invaluable. I was too young to build my first home computer in 1981 so was bought an assembled one. I did not make that mistake this time; the kit came with poor/incorrect instructions, but it was the correct route to take for both experience and bragging rights in twenty years time.</p>
<p><strong>What to expect from a Kit?</strong></p>
<p>Until the last couple of years most 3D Printers were built from open source online designs. Hobbyists sourced components themselves and spent unbelievable amounts of time tweaking. My PrintrBot is a well priced kit building on these many years of open sourced achievements. I doubt there is much profit margin for PrintrBot. Also, you will have noticed a lot of plywood on my printer; that’s laser cut plywood. It has issues but is an inexpensive way of producing the parts – once a laser printer is purchased the cost of chassis etc is next to nothing for the smaller scale manufacturers compared to the material/hours required to 3D Print parts as was common in the early days.</p>
<p>A kit gets to you to where these serious hobbyists were far quicker for a reasonable price.</p>
<p>Take a look at these pictures for an impression of what to expect:</p>
<p><img loading="lazy" class="alignnone size-full wp-image-14" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/printrbot-kit-1-medium.jpg" alt="" width="1024" height="768" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/printrbot-kit-1-medium.jpg 1024w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/printrbot-kit-1-medium-300x225.jpg 300w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/printrbot-kit-1-medium-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p><img loading="lazy" class="alignnone size-full wp-image-15" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/printrbot-kit-2-medium.jpg" alt="" width="1024" height="768" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/printrbot-kit-2-medium.jpg 1024w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/printrbot-kit-2-medium-300x225.jpg 300w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/printrbot-kit-2-medium-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>Their website says it takes two hours to build. Perhaps once I’d built a few that would be true. In reality it takes about five hours. Documentation is poor and was incorrect in several places as incremental design changes have occurred since the videos/ online help were created.</p>
<p><strong>How long until Printing is possible after Assembly?</strong></p>
<p>Likely some owners obtain a decent print on their first attempt; most do not – actually possibly most never do before putting it in a closet or on eBay! Expect several hours to several before anything reasonable is printed.</p>
<p>ABS filament emits fumes which made my eyes sting, but is much easier for a beginner to use than PLA filament. Since my workshop is small and unventilated I have moved exclusively to PLA, ensure your printer is in a well ventilated area and start with ABS.</p>
<p>Hopefully time permits me to write a separate post on getting started, but main tips are:</p>
<ul>
<li>Level the bed</li>
<li>Ensure z-home is set correctly (distance from extruded nozzle to the bed)</li>
<li>Ensure the printer extrudes at the correct rate (pretty easy for ABS)</li>
<li>Figure out the slicing and printing software</li>
<li>Use calipers to roughly calibrate movement along the x, y and z-axis (fine tune when printing ok)</li>
</ul>
<p>A common beginner issue is the clog up the hobbed bolt with filament (tension springs set incorrectly will do this).  I’ve had mine out for cleaning at least twenty times, but it’s been fine for a good while since I figured out the correct spring tension for PLA (springs compressed to ~13.5mm). The following image shows a clogged hobbed bolt being cleaned with a needle (I lost one needle so now store it using a strong magnet to fix it to a drywall screw):</p>
<p><img loading="lazy" class="alignnone size-full wp-image-16" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/hobbed-bolt-cleaning-19-medium.jpg" alt="" width="1024" height="768" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/hobbed-bolt-cleaning-19-medium.jpg 1024w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/hobbed-bolt-cleaning-19-medium-300x225.jpg 300w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/hobbed-bolt-cleaning-19-medium-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p><strong>What kind of quality can I expect?</strong></p>
<p>Quality is really good in my opinion. I’ve printed several printer upgrades and the precision is incredible; hex bolts drop right in where they should etc.</p>
<p>It will take a while and likely much frustration to get the printer dialed in. After about sixty hours I seem to have the basics down and when an issue occurs now know what to tweak. Take a look at the next photos to see my progression with PLA:</p>
<p><img loading="lazy" class="alignnone size-full wp-image-17" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-1-medium.jpg" alt="" width="1024" height="768" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-1-medium.jpg 1024w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-1-medium-300x225.jpg 300w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-1-medium-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /> <img loading="lazy" class="alignnone size-full wp-image-18" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-2-medium.jpg" alt="" width="1024" height="768" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-2-medium.jpg 1024w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-2-medium-300x225.jpg 300w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-2-medium-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /> <img loading="lazy" class="alignnone size-full wp-image-19" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-3-medium.jpg" alt="" width="1024" height="768" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-3-medium.jpg 1024w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-3-medium-300x225.jpg 300w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/example-printrbot-prints-3-medium-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>The final print shown is a case for a Raspberry Pi. It fits perfectly, and this was printed before I added most printer upgrades!</p>
<p><strong>Tools required?</strong></p>
<p>Hmm… this is a tricky one. As a long time DIY type I have access to a vast array of tools. The Drill Press and cross vice shown below has been particularly useful but these are not beginner tools.</p>
<p>At a minimum you need:</p>
<ul>
<li>Precision Calipers (only about $20 on Amazon)</li>
<li>Quality screwdriver set (one with lots of quality bits is fine)</li>
<li>Jewelers precision screwdrivers</li>
<li>Small wire cutters and pliers</li>
<li>Tweezers (to tease strands of stray extruded filament away from the nozzle and lift prints)</li>
<li>Very sharp craft knife</li>
</ul>
<p>These are almost essential:</p>
<ul>
<li>Quality precision pliers, angled pliers and wire cutters (Xuron or similar)</li>
<li>Quality oil/ grease</li>
<li>Circlip pliers</li>
<li>Telescopic Magnetic Tool to hold awkward nuts in place during assembly</li>
</ul>
<p><img loading="lazy" class="alignnone size-full wp-image-20" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/semi-essential-tools-1-medium.jpg" alt="" width="768" height="1024" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/semi-essential-tools-1-medium.jpg 768w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/semi-essential-tools-1-medium-225x300.jpg 225w" sizes="(max-width: 768px) 100vw, 768px" /></p>
<p>Ensuring bolts thread perpendicularly:</p>
<p><img loading="lazy" class="alignnone size-full wp-image-21" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/semi-essential-tools-2-medium.jpg" alt="" width="1024" height="768" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/semi-essential-tools-2-medium.jpg 1024w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/semi-essential-tools-2-medium-300x225.jpg 300w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/semi-essential-tools-2-medium-768x576.jpg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p><strong>Final Words</strong></p>
<p>Have a spare fifty+ hours, $550 and buckets of patience? You should buy one now!</p>
<p>Remember this is not Software Engineering; interacting with the real world is a whole different ball game. Fellow classmates and I discovered this during our postgrad Robotics Degree . Software is predictable and repeatable. The real world often not so much. In many ways 3D printing is similar to robotics – some software is involved but there is a lot of trial and error + tinkering.</p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2013/04/08/should-i-buy-a-3d-printer/">Should I buy a 3D Printer?</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Compacting Virtual Machines (VirtualBox and VMWare)</title>
		<link>https://dotnetworkaholic.com/2013/04/06/compacting-virtual-machines-virtualbox-and-vmware/</link>
		
		<dc:creator><![CDATA[Paul Lockwood]]></dc:creator>
		<pubDate>Sat, 06 Apr 2013 19:45:02 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://dotnetworkaholic.com/?p=23</guid>

					<description><![CDATA[<p>Google has never linked me directly to this information, just theories. One day time permitted me to run careful tests so I am sure these techniques are correct/ efficient: Simple tricks to reduce size VM’s Disk Needs: These will wipe &#8230; <a href="https://dotnetworkaholic.com/2013/04/06/compacting-virtual-machines-virtualbox-and-vmware/">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2013/04/06/compacting-virtual-machines-virtualbox-and-vmware/">Compacting Virtual Machines (VirtualBox and VMWare)</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Google has never linked me directly to this information, just theories. One day time permitted me to run careful tests so I am sure these techniques are correct/ efficient:</p>
<p><strong>Simple tricks to reduce size VM’s Disk Needs:</strong><br />
These will wipe GBs from your vmdk/ vdi.</p>
<ul>
<li>Disable Windows hibernation (hiberfil.sys is the size of installed memory, you don’t need it)</li>
<li>Disable the memory paging file (paging file in a VM makes little sense to me)</li>
</ul>
<p><strong>Compact a VMDK (VMWare including VMWare Player):<br />
</strong></p>
<ul>
<li>Ensure you have no snapshots (as of writing compacting does not work with snapshots)</li>
<li>Launch the VM</li>
<li><em>Inside the VM</em> defragment its disk (defraggler works great, Windows degfrag is ok)</li>
<li><em>Inside the VM </em>run “sdelete.exe -z” from DOS (as admin). This zeros out the free space and<strong> is an essential step</strong></li>
<li>Shut down the VM</li>
<li>From VMPlayer: Edit Machine Settings -&gt; Hard Disk -&gt; Utilities -&gt; Defragment (optional step, sometimes helps – official documentation is poor)</li>
<li>From VMPlayer: Edit Machine Settings -&gt; Hard Disk -&gt; Utilities -&gt; Compact</li>
</ul>
<p>At the final step you should see a huge reduction VMDK size.</p>
<p>Below is a screenshot showing the features in VMPlayer. Remember this is next to useless unless you run Mark Russinovich’s “sdelete.exe -z” to mark free space with zeros. Compacting VMs has been this way for years, it’s April 2013 now and surely soon ‘detect and zero free space’ functionality will be built into their compact options.</p>
<p><img loading="lazy" class="alignnone size-full wp-image-24" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/compact_vmware_player_vmdk.png" alt="" width="688" height="619" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/compact_vmware_player_vmdk.png 688w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/compact_vmware_player_vmdk-300x270.png 300w" sizes="(max-width: 688px) 100vw, 688px" /></p>
<p>The image above shows a VM that reached 20Gb once, before being compacted back down to 10.7GB. These are typical results. Once compressed my two work VMs zipped down to ~4GB each; fine for archiving working databases, dev environments etc. One customer’s backup procedures left me concerned so weekly the VMs were AES encrypted and copied to a USB key chain flash drive.</p>
<p><strong>Compact a VDI (VirtualBox):</strong></p>
<p>Until very recently I have used VirtualBox since about 2008. Here are the steps to compact it.</p>
<ul>
<li>Ensure you have no snapshots (as of writing compacting does not work with snapshots)</li>
<li>Launch the VM; <em>inside the VM</em> defragment its disk (defraggler works great, Windows degfrag is ok)</li>
<li><em>Inside the VM </em>run “sdelete.exe -z“. This zeros out the free space and<strong> is an essential step</strong></li>
<li>Shut down the VM</li>
<li>From DOS (as admin):
<ul>
<li>cd &lt;location of your VDI&gt;</li>
<li>“C:\Program Files\Oracle\VirtualBox\VBoxManage.exe” modifyhd <strong>&lt;your disk’s name&gt;.vdi</strong> –compact</li>
</ul>
</li>
</ul>
<p>Hope this helps folks. Any issues/errors please post in the comments and I’ll update the post.</p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2013/04/06/compacting-virtual-machines-virtualbox-and-vmware/">Compacting Virtual Machines (VirtualBox and VMWare)</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Filter log4net to a single thread using Notepad++</title>
		<link>https://dotnetworkaholic.com/2011/04/30/filter-log4net-to-a-single-thread-using-notepad/</link>
		
		<dc:creator><![CDATA[Paul Lockwood]]></dc:creator>
		<pubDate>Sat, 30 Apr 2011 19:48:22 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://dotnetworkaholic.com/?p=26</guid>

					<description><![CDATA[<p>Over the years I’ve Googled and Googled for a solution to this. Heck I even tried Bing! Finally time + an urgent need permitted figuring out a simple solution. To filter down to one thread using Notepad++: Copy the angle &#8230; <a href="https://dotnetworkaholic.com/2011/04/30/filter-log4net-to-a-single-thread-using-notepad/">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2011/04/30/filter-log4net-to-a-single-thread-using-notepad/">Filter log4net to a single thread using Notepad++</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Over the years I’ve Googled and Googled for a solution to this. Heck I even tried Bing! Finally time + an urgent need permitted figuring out a simple solution. To filter down to one thread using Notepad++:</p>
<ul>
<li>Copy the angle brackets and thread number to clipboard. E.g. “[12]”</li>
<li>Menu -&gt; TextFX Viz -&gt; Hide Lines without (Clipboard) text</li>
<li>Press Ctrl-A (Select all text)</li>
<li>Menu -&gt; TextFX Viz -&gt; Delete Invisible Selection</li>
<li>Press Ctrl-A (Select all text)</li>
<li>Menu -&gt; TextFX Edit -&gt; Delete Blank Lines</li>
<li>That’s it! You are now viewing one logging from only one Thread</li>
</ul>
<p><strong>This works very quickly even with 70,000+ line 10MByte log files. </strong>IMO it avoids the need for xml log4net logging and Chainsaw (or similar).Simpler is always better.</p>
<p>Demo: Two threads counting to 100:</p>
<p><img loading="lazy" class="alignnone size-full wp-image-27" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-1.png" alt="" width="626" height="772" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-1.png 626w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-1-243x300.png 243w" sizes="(max-width: 626px) 100vw, 626px" /></p>
<p>Copy the angle brackets and thread number to clipboard. E.g. “[12]”</p>
<p>Menu -&gt; TextFX Viz -&gt; Hide Lines without (Clipboard) text</p>
<p><img loading="lazy" class="alignnone size-full wp-image-28" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-2.png" alt="" width="640" height="644" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-2.png 640w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-2-298x300.png 298w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-2-150x150.png 150w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>Press Ctrl-A (Select all text)</p>
<p>Menu -&gt; TextFX Viz -&gt; Delete Invisible Selection</p>
<p><img loading="lazy" class="alignnone size-full wp-image-29" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-3.png" alt="" width="640" height="644" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-3.png 640w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-3-298x300.png 298w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-3-150x150.png 150w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>Press Ctrl-A (Select all text)</p>
<p>Menu -&gt; TextFX Edit -&gt; Delete Blank Lines</p>
<p><img loading="lazy" class="alignnone size-full wp-image-30" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-4.png" alt="" width="640" height="607" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-4.png 640w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-4-300x285.png 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>That’s it! You are now viewing one logging from only one Thread</p>
<p><img loading="lazy" class="alignnone size-full wp-image-31" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-5.png" alt="" width="626" height="772" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-5.png 626w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/log4net_single_thread-5-243x300.png 243w" sizes="(max-width: 626px) 100vw, 626px" /></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2011/04/30/filter-log4net-to-a-single-thread-using-notepad/">Filter log4net to a single thread using Notepad++</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Reduce back and/or neck pain with a 50 cent cardboard box</title>
		<link>https://dotnetworkaholic.com/2010/06/14/reduce-back-and-or-neck-pain-with-a-50-cent-cardboard-box/</link>
		
		<dc:creator><![CDATA[Paul Lockwood]]></dc:creator>
		<pubDate>Mon, 14 Jun 2010 19:52:09 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://dotnetworkaholic.com/?p=33</guid>

					<description><![CDATA[<p>Virtually all software developers eventually experience neck and/or back pain. Mine gradually increased from light neck pains in 1995/6 to being unable to work one day in 2001. Doctor’s advice: “stop doing what makes it hurt”. Useful…  Earlier today Martin Fowler &#8230; <a href="https://dotnetworkaholic.com/2010/06/14/reduce-back-and-or-neck-pain-with-a-50-cent-cardboard-box/">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2010/06/14/reduce-back-and-or-neck-pain-with-a-50-cent-cardboard-box/">Reduce back and/or neck pain with a 50 cent cardboard box</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Virtually all software developers eventually experience neck and/or back pain. Mine gradually increased from light neck pains in 1995/6 to being unable to work one day in 2001. Doctor’s advice: “stop doing what makes it hurt”. Useful…  Earlier today Martin Fowler posted “Back pain is a common issue, but everyone’s pain (and treatment) is different”. Indeed it is, but he also posted a photo that invoked a “Fingernails dragged down a blackboard” response from me. It’s a photo of programmers at work; many IMO asking for neck/back problems in later life.</p>
<p>Let me share the research that has kept me pain free for ten years. I am not qualified in this area, these are just the findings of a long term computer programmer (done little but code from 1981 to 2010, and hope to keep it up until The Singularity makes us obsolete) :</p>
<ul>
<li>Move your screen(s) up to eye level</li>
</ul>
<ul>
<li>Every time you exercise do neck stretches</li>
</ul>
<ul>
<li>Read a book on back pain and/ or neck pain.These cover common issues that work for many people; Read the many glowing reviews on Amazon</li>
</ul>
<p><strong>Screen at Eye Level:</strong></p>
<p>This should be common sense. I work looking forward<em> not down</em>. Peering down compresses neck vertebrae – probably not good for extended periods of time. Commons sense says “mix-it-up if you can”, don’t sit in the same position all day. Personally I alternate between a regular sitting workstation, standing workstation, laptop on a box (or whatever’s handy at the time) and casual surfing using an iPad like a book (not looking down at a laptop). Combined with regular exercise and stretching I still spend almost all waking hours in front of a computer. Of course from time to time I become lazy, and stop stretching after running/cycling; the pain starts creeping back. Returning to regular stretching always cured it (so far, touch wood!)</p>
<p><strong>Sitting workstation:</strong></p>
<p>I use an ergonomic Zody Chair using vesa arm mounts. Yes, I have hauled these to client sites. We just moved house and I don’t have a photo handy</p>
<p><strong>Standing Workstation:</strong></p>
<p>These can be cobbled together very cheaply. Skip those expensive stand/sit combo workstations and build another work area in your home office. The following photo shows a $100 Ikea kit. Notice the two mice? I used to have pain in my mouse button fingers. Learning to use a mouse left handed and swapping between them cured that too. Props to Paul Swan for the mouse tip – he’s a total Genius from my undergrad CompSci degree, now working on the Windows Server team.</p>
<p><img loading="lazy" class="alignnone size-full wp-image-34" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/standing-workstation-wip2.jpg" alt="" width="800" height="1067" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/standing-workstation-wip2.jpg 800w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/standing-workstation-wip2-225x300.jpg 225w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/standing-workstation-wip2-768x1024.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<p><strong>Laptop on a box:</strong></p>
<p>The title of this post.  Being in my late thirties peers are starting get aches and pains. Many on Facebook complain of sore necks from laptops. If you listen to only one piece of my advice, <strong>Put Your Laptop on a Raised Surface</strong> when using it. Oh, and wear sunscreen <img class="emoji" draggable="false" src="https://s0.wp.com/wp-content/mu-plugins/wpcom-smileys/twemoji/2/svg/1f642.svg" alt="&#x1f642;" /> Notice I use a real keyboard and wireless mouse than can be used in either hand – these cost peanuts compared to a Doctor’s visit. This is a great setup for short term client engagements – they always have <em>something</em> to stand a laptop on.</p>
<p><img loading="lazy" class="alignnone size-full wp-image-35" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/fifty-cent-box-saves-neck-pain.jpg" alt="" width="800" height="643" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/fifty-cent-box-saves-neck-pain.jpg 800w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/fifty-cent-box-saves-neck-pain-300x241.jpg 300w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/fifty-cent-box-saves-neck-pain-768x617.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></p>
<p><strong>Can a $10 Book from Amazon really help?</strong></p>
<p>The books I purchased in 2001 were an incredible help. I am not suggesting these as an alternative to a Doctor’s advice, just worth considering if your Doctor has been of no help.</p>
<p>Hopefully this post allows some to extend their coding careers. Please take this advice as just that, general common sense advice.</p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2010/06/14/reduce-back-and-or-neck-pain-with-a-50-cent-cardboard-box/">Reduce back and/or neck pain with a 50 cent cardboard box</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Bye-bye Mac OS X, hello Win7</title>
		<link>https://dotnetworkaholic.com/2010/05/26/bye-bye-mac-os-x-hello-win7/</link>
		
		<dc:creator><![CDATA[Paul Lockwood]]></dc:creator>
		<pubDate>Wed, 26 May 2010 19:56:34 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://dotnetworkaholic.com/?p=37</guid>

					<description><![CDATA[<p>Using DOS and Windows since the mid 80’s it was time for a change. Vista was never reliable on any of the three machines I tried, Microsoft fanboys were killing creditability in the user group scene – heck it got to the &#8230; <a href="https://dotnetworkaholic.com/2010/05/26/bye-bye-mac-os-x-hello-win7/">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2010/05/26/bye-bye-mac-os-x-hello-win7/">Bye-bye Mac OS X, hello Win7</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Using DOS and Windows since the mid 80’s it was time for a change. Vista was never reliable on any of the three machines I tried, Microsoft fanboys were killing creditability in the user group scene – heck it got to the point where saying ‘Google’ was not permitted. It would immediately be corrected to ‘Bing’, sometimes by a chorus of fanboys! <strong>This anti-Google sentiment has to stop</strong>. Fanboys may go “Rah-Rah, Bing-Bing-Bing”, but how many of them command respect from peers? Many competent people stopped attending Microsoft events.</p>
<p>So how did OS X work out? Well it’s certainly a good operating system, does most things I need but obviously is not going to run Visual Studio anytime soon. Lack of open source software was a major gripe; 7Zip, KDiif3 and <strong>many other great open source projects just don’t exist for the Mac</strong>.</p>
<p><strong>Snow Leopard was a total flop</strong>, costing me hours in lost time as it broke our HTPC which was running Hulu and XBMC. Initially Mac fanboys jumped all over  me for criticizing it the day after it was released, but over time the general consensus is that Apple needs public beta testing before releasing an OS upgrade. A few service releases later Snow Leopard works fine but lacks the snappiness of Win7.</p>
<p><strong>Apple hardware is fantastic</strong>. Developing on a MacMini is heaven thanks to virtual silence. The tiny form factor helps declutter workstations, keep a clearer desk etc. Using a MacMini as a HTPC is a little expensive but totally worth it, low power means low heat and they’ll happily live in a cupboard. New Minis also support two digital monitors, IR remote, Bluetooth, latest WiFi, GigaBit internet and have a stack of USB ports. The 13″ MacBook Pro cost $1200, plus the cost of aftermarket 4GB RAM and an Intel SSD. With the SSD and Win7 it’s plenty fast even for a demanding developer. The quality keyboard and touches like back-lit keys, multi-touch track-pad etc make it easily worth the extra cash. Oh and using OS X battery life is nine hours for the latest model – I see over five hours with WiFi and Bluetooth on a 2009 model.</p>
<p>So why the move to Win7? <strong>“It just works”</strong> scream most Mac users when you ask them <strong>“Why a Mac”</strong>. True for basic users, but not people like us. Hours can be wasted with simple tasks like trying to format a non Apple external hard-disk. This where the experience breaks down. Problem with Windows are generally solved with a quick Google search. <strong>Certainly not the case for OS X</strong>, with the hard disk users were berated online for not buying a Apple branded hard disk. I have Bluetooth problems with a Microsoft mouse and have never been able to resolve it other than rebooting. Do you use two monitors? Fine, that works… oh you have one in portrait mode (like I do)? Is not going to happen in OS X yet, sorry. HTPC? What you did not buy an Apple TV unit? The Mac Mini work well as a HTPC but does not support font scaling like Win7. I found a hack which works in some cases not other. Of course almost those cool HTPC open source tools don’t exist for the Mac, ironically XBMC is one that does and it’s almost as stable as for Windows.</p>
<p><strong>Conclusion:</strong><br />
Hopefully this posts helps you consider if  OS X is for you. It’s a good OS, but Win7 is so much better in so many ways. If you want something that “just works” for simple tasks I highly recommend an iPad. That device is so simple I bought another for my Parents. They grasped it quickly and are having few problems. Also the design of the iPad apps means it’ll be very hard for bad guys to devise a virus for them. Macs don’t get PC viruses they get Mac viruses; I would wager the iPad will be virtually virus free.</p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2010/05/26/bye-bye-mac-os-x-hello-win7/">Bye-bye Mac OS X, hello Win7</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>TeamCity Release Build sgen.exe gotcha</title>
		<link>https://dotnetworkaholic.com/2009/06/17/teamcity-release-build-sgen-exe-gotcha/</link>
		
		<dc:creator><![CDATA[Paul Lockwood]]></dc:creator>
		<pubDate>Wed, 17 Jun 2009 19:58:49 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<guid isPermaLink="false">https://dotnetworkaholic.com/?p=39</guid>

					<description><![CDATA[<p>TeamCity is great, I had it up and running with Automated Tests in just minutes. But.. attempting to make a Release Build generated the following error. Googling shows many people have the same error and I only found ugly solutions &#8230; <a href="https://dotnetworkaholic.com/2009/06/17/teamcity-release-build-sgen-exe-gotcha/">Continue reading <span class="meta-nav">&#8594;</span></a></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2009/06/17/teamcity-release-build-sgen-exe-gotcha/">TeamCity Release Build sgen.exe gotcha</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>TeamCity is great, I had it up and running with Automated Tests in just minutes. But.. attempting to make a Release Build generated the following error. Googling shows many people have the same error and I only found ugly solutions that required manual registry editing, copying of files etc:</p>
<p>c:WINDOWSMicrosoft.NETFrameworkv3.5Microsoft.Common.targets(2015, 9): error MSB3091: Task failed because “sgen.exe” was not found, or the correct Microsoft Windows SDK is not installed. The task is looking for “sgen.exe” in the “bin” subdirectory beneath the location specified in the InstallationFolder value of the registry key HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SDKsWindowsv6.0A. You may be able to solve the problem by doing one of the following: 1) Install the Microsoft Windows SDK for Windows Server 2008 and .NET Framework 3.5. 2) Install Visual Studio 2008. 3) Manually set the above registry key to the correct location. 4) Pass the correct location into the “ToolPath” parameter of the task.</p>
<p>The first thing I did was use msbuild from the command line; sure enough Debug Builds were fine and Release Builds had the same error. This ruled out Team City. Obviously installing VS2008 on our build box would solve the issue, but I assumed the build tools must available elsewhere without need all of VS2008. They are:</p>
<p><strong>The solution is</strong>: Download the Windows SDK and install .Net Development Tools (it says 2008 Server but I did this on XP SP3).<br />
<img loading="lazy" class="alignnone size-full wp-image-40" src="https://dotnetworkaholic.com/wp-content/uploads/2020/07/windowssdkforserver20081.png" alt="" width="640" height="447" srcset="https://dotnetworkaholic.com/wp-content/uploads/2020/07/windowssdkforserver20081.png 640w, https://dotnetworkaholic.com/wp-content/uploads/2020/07/windowssdkforserver20081-300x210.png 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>The post <a rel="nofollow" href="https://dotnetworkaholic.com/2009/06/17/teamcity-release-build-sgen-exe-gotcha/">TeamCity Release Build sgen.exe gotcha</a> appeared first on <a rel="nofollow" href="https://dotnetworkaholic.com">Paul Lockwood on Software Development</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
