<?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>Jamie&#039;s Space &#187; Useful Information</title>
	<atom:link href="http://www.jamiepenney.co.nz/category/useful-information/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jamiepenney.co.nz</link>
	<description>Thoughts and Works of a Junior Software Engineer</description>
	<lastBuildDate>Tue, 06 Jul 2010 04:39:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Windows 7 Shortcut Keys</title>
		<link>http://www.jamiepenney.co.nz/2009/09/14/windows-7-shortcut-keys/</link>
		<comments>http://www.jamiepenney.co.nz/2009/09/14/windows-7-shortcut-keys/#comments</comments>
		<pubDate>Sun, 13 Sep 2009 23:19:29 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Useful Information]]></category>

		<guid isPermaLink="false">http://jamiepenney.co.nz/?p=45</guid>
		<description><![CDATA[I found a great list of keyboard shortcuts for Windows 7 today here. The best part of this list were the keys for manipulating windows &#8211; Windows + ← (Left Arrow) will dock the window to the left hand side of the screen, much like if you drag the window to the side of the [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">I found a great list of keyboard shortcuts for Windows 7 today <a href="http://www.mydigitallife.info/2009/07/31/windows-7-keyboard-shortcuts-accelerator-keys-or-hotkeys-full-listing/">here</a>. The best part of this list were the keys for manipulating windows &#8211; Windows + ← (Left Arrow) will dock the window to the left hand side of the screen, much like if you drag the window to the side of the screen. The right arrow also works like this.</p>
<p style="text-align: left;">If you have multiple monitors, using the mouse it doesn&#8217;t let you dock to the side connected to the other screen. So you can only dock to the far left and far right with the mouse. Not so with the keyboard. Each time you hit the keyboard combo, it will move it to the next dock position in that direction. That means you can have windows docked all over your extended desktop, like so:</p>
<p style="text-align: left;"><a href="http://jamiepenney.co.nz/wordpress/wp-content/uploads/2009/09/desktop.png"><img class="aligncenter size-medium wp-image-44" style="margin-top: 10px; margin-bottom: 10px;" title="Desktop" src="http://jamiepenney.co.nz/wordpress/wp-content/uploads/2009/09/desktop-300x106.png" alt="Desktop" width="300" height="106" /></a></p>
<p style="text-align: left;">I&#8217;ve got two windows on each screen (as you can see, the right hand screen has the task bar, so you should be able to see where the screens split).</p>
<p style="text-align: left;">This is pretty useful at home. Having huge screens is great, being able to have 4 docked windows without fiddling around with the mouse is fantastic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamiepenney.co.nz/2009/09/14/windows-7-shortcut-keys/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strange Visual Studio lockup after debugging</title>
		<link>http://www.jamiepenney.co.nz/2009/07/20/strange-visual-studio-lockup-after-debugging/</link>
		<comments>http://www.jamiepenney.co.nz/2009/07/20/strange-visual-studio-lockup-after-debugging/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 11:03:51 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Useful Information]]></category>

		<guid isPermaLink="false">http://jamiepenney.co.nz/?p=33</guid>
		<description><![CDATA[I had been having an issue with VS 2008 on Windows 7 x64 today. After debugging an application the whole IDE would lock up, minimise itself, then bring itself back to the foreground. This was pretty disruptive and I was getting quite irritated with it, but I could not find any mention of it through [...]]]></description>
			<content:encoded><![CDATA[<p>I had been having an issue with VS 2008 on Windows 7 x64 today. After debugging an application the whole IDE would lock up, minimise itself, then bring itself back to the foreground. This was pretty disruptive and I was getting quite irritated with it, but I could not find any mention of it through Google.</p>
<p>I did happen to stumble upon a StackOverflow question (<a href="http://stackoverflow.com/questions/126472/how-to-stop-right-click-dead-locking-visual-studio-2008/344323#344323">here</a>) where a different problem was outlined, however this answer reminded me of an issue Scott Hanselman had with an app he was doing a demo with, so I thought I would give it the fix a shot. Strangely enough, I think it has fixed it, although I am not sure why (it seems unrelated). Anyway, here is the fix, just in case anyone else has a similar problem:</p>
<p><strong>Fix:</strong><br />
Disable checking of Publisher&#8217;s Certificate Revocation</p>
<ol>
<li>Go to Internet Options in Internet Explorer or Control Panel</li>
<li>Then go the Security Tab, scroll towards the bottom</li>
<li>Uncheck the &#8216;Check for Publisher&#8217;s Certificate Revocation&#8217;  checkbox</li>
<li>Click OK.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.jamiepenney.co.nz/2009/07/20/strange-visual-studio-lockup-after-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TechEd 08 &#8211; Day 3</title>
		<link>http://www.jamiepenney.co.nz/2008/09/04/teched-08-day-3/</link>
		<comments>http://www.jamiepenney.co.nz/2008/09/04/teched-08-day-3/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 07:01:00 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Useful Information]]></category>

		<guid isPermaLink="false">http://65.99.219.219/wordpress/?p=20</guid>
		<description><![CDATA[DEV375: Reactive Programming &#8211; Ivan Towlson History of developing for windows clients Win16/Win32 &#8211; Procedural style (message loops) ActiveX/Visual Basic &#8211; Limited OO style, events + components Windows Forms &#8211; Component oriented style Common themes Write code to copy data from model to control Write code to detect changes in control data Write code to [...]]]></description>
			<content:encoded><![CDATA[<h3>DEV375: Reactive Programming &#8211; Ivan Towlson</h3>
<ul>
<li>History of developing for windows clients
<ul>
<li>Win16/Win32 &#8211; Procedural style (message loops) </li>
<li>ActiveX/Visual Basic &#8211; Limited OO style, events + components </li>
<li>Windows Forms &#8211; Component oriented style </li>
<li>Common themes
<ul>
<li>Write code to copy data from model to control </li>
<li>Write code to detect changes in control data </li>
<li>Write code to copy data from control to model </li>
<li>Detect changes in model data or use gatekeeper </li>
</ul>
</li>
</ul>
</li>
<li>What is better about WPF/Silverlight?
<ul>
<li>Enhanced component model encapsulates common plumbing. </li>
<li>Designer-developer workflow needs a declarative programming style to work well. </li>
<li>Hard to write robust OO/procedural code against a lookless model. </li>
</ul>
</li>
<li>Reactive programming is like binding values together. Think like how you can create formula&#8217;s in Excel &#8211; changing the value of one of the cells in a formula updates the result of the formula, and it keeps doing it. </li>
<li>Benefits
<ul>
<li>Remove plumbing code, no need to track changes in model and controls and copy data between </li>
<li>View/model relationship expressed in view instead of in controller/presenter code. Express the what, not the how. </li>
<li>Works well with the lookless approach &#8211; view reacts to model change, rather than the model manipulating the view. </li>
</ul>
</li>
<li>.Net works on a notification system (INotifyPropertyChanged) &#8211; when something changes, dependent values re-evaluate themselves. </li>
<li>Issues
<ul>
<li>We need to react to changes to derived data -&gt; use converters for this. </li>
<li>A reactive expression may produce unacceptable values (user input?). Solution is to use validation. </li>
</ul>
</li>
</ul>
<p>Bindable LINQ</p>
<ul>
<li>How do you query an ObservableCollection? How do you observably query an ObservableCollection? </li>
<li>LINQ queries don&#8217;t provide change notification! </li>
<li>Bindable LINQ is a community project to enable reactive controls to back easily onto LINQ queries </li>
<li>Key API : AsBindable() &#8211; extension method on IEnumerable&lt;T&gt; </li>
</ul>
<h3>SEC201: Do These Ten Things or Get Own3d &#8211; Steve Riley</h3>
<h4>1. Use precise terminology</h4>
<ul>
<li>Vulnerability &#8211; The problem
<ul>
<li>Code </li>
<li>Configuration </li>
<li>Circumvention &#8211; Security rules that are so draconian that they encourage people to actively try to get around it. </li>
</ul>
</li>
<li>Threat &#8211; The person that carries out the attack
<ul>
<li>External </li>
<li>Internal </li>
</ul>
</li>
<li>Exploit &#8211; the code that exploits the vulnerability </li>
<li>Exposure &#8211; The cost of the attack being carried out. </li>
<li>Risk </li>
</ul>
<h4>2. Accept that no one will like you</h4>
<h4>3. Think like a bad guy</h4>
<p>People will not like you for this either.</p>
<h4>4. Understand the science</h4>
<ul>
<li>Identity is not Authentication. </li>
<li>Encryption is not Integrity </li>
<li>Inspection is not Intent &#8211; Can&#8217;t tell intent by looking at someone&#8217;s stuff. </li>
<li>Secrecy is not Trust &#8211; just because you can make something a secret, doesn&#8217;t mean you can trust it. </li>
<li>People are not Technology &#8211; All the technology in the world will not solve your technology problem. </li>
<li>&quot;Defence in depth&quot; = &quot;I am a parrot&quot; </li>
<li>Stupidity is not Malice </li>
<li>Usability and Security are a tradeoff. </li>
</ul>
<h4>5. Protect your gear</h4>
<ul>
<li>Patch your stuff. </li>
<li>Use the firewall. </li>
<li>Don&#8217;t run as admin, or reduce number of admins. </li>
<li>Install anti-malware, or scan fileshares. </li>
<li>Don&#8217;t tweak. </li>
<li>Rebuild, don&#8217;t disinfect. </li>
</ul>
<h4>6. Swallow your pride</h4>
<ul>
<li>Read up
<ul>
<li>Microsoft </li>
<li><a href="http://www.sans.org">www.sans.org</a> </li>
<li><a href="http://www.securityfocus.com">www.securityfocus.com</a> </li>
<li><a href="http://searchsecurity.techtarget.com">http://searchsecurity.techtarget.com</a> </li>
</ul>
</li>
</ul>
<h4>7. Reconsidering the laws</h4>
<ul>
<li>Law 1: If a bad guy can persuade you to run his program on your computer, it is not yours anymore. </li>
<li>Law 2: If a bad guy can alter the operating system on your computer, it&#8217;s not yours anymore. </li>
<li>Law 3: If a bad guy has unrestricted physical access to your computer, it&#8217;s not your computer anymore. </li>
<li>Law 4: If you allow a bad guy to upload programs to your website, it&#8217;s not your website anymore. </li>
<li>Law 5: Weak passwords trump strong security. </li>
<li>Law 6: A computer is only as secure as the administrator is trustworthy. </li>
<li>Law 7: Encrypted data is only as secure as the decryption key. </li>
<li>Law 8: An out of date is <strike>only marginally better</strike> worse than no virus scanner at all. </li>
<li>Law 9: Absolute anonymity isn&#8217;t practical, in real life or on the web. </li>
<li>Law 10: Technology is not a panacea. </li>
</ul>
<h4>8. Classify, and classify again.</h4>
<ul>
<li>Access
<ul>
<li>Principle of least privilege &#8211; others and yourself. If this principle interferes with your business process and is part of the OS, email Steve. </li>
</ul>
</li>
<li>Data
<ul>
<li>Confidentiality, retention, recovery. </li>
</ul>
</li>
<li>Trust
<ul>
<li>Functions, directions. </li>
</ul>
</li>
</ul>
<h4>9. Don&#8217;t let your guard down.</h4>
<ul>
<li>People are always trying to sell you silver bullets/snake oil. </li>
<li>Trustworthy people will discuss the downsides of their software </li>
</ul>
<h4>10. Protection, not restriction.</h4>
]]></content:encoded>
			<wfw:commentRss>http://www.jamiepenney.co.nz/2008/09/04/teched-08-day-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TechEd 08 &#8211; Day 2</title>
		<link>http://www.jamiepenney.co.nz/2008/09/02/teched-08-day-2/</link>
		<comments>http://www.jamiepenney.co.nz/2008/09/02/teched-08-day-2/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 07:00:00 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Useful Information]]></category>

		<guid isPermaLink="false">http://65.99.219.219/wordpress/?p=19</guid>
		<description><![CDATA[ARC202: I am not an Architect, I am an architect &#8211; Dr. Neil Roodyn Why do most projects fail? There are risks in developing software &#8211; laws, quality, misunderstood business needs, etc. Unhappy customers. History Pioneering era &#8211; early computing. Software Development Process: Chaotic. Stabilizing era &#8211; First demand for programmers,structure comes to development. SDP: [...]]]></description>
			<content:encoded><![CDATA[<h3>ARC202: I am not an Architect, I am an architect &#8211; Dr. Neil Roodyn</h3>
<ul>
<li>Why do most projects fail?
<ul>
<li>There are risks in developing software &#8211; laws, quality, misunderstood business needs, etc. </li>
<li>Unhappy customers. </li>
</ul>
</li>
<li>History
<ul>
<li>Pioneering era &#8211; early computing. Software Development Process: Chaotic. </li>
<li>Stabilizing era &#8211; First demand for programmers,structure comes to development. SDP: Predictability. Based on engineering discipline. </li>
<li>Micro era &#8211; Drop in price of computing, more customer expectations. </li>
<li>Internet era &#8211; mid 90&#8242;s till present. Interconnectivity, change in pace of development. Customer expectations have outpaced developer abilities. SDP: Adaptive. </li>
</ul>
</li>
<li>Predictability might be impossible in a creative field. </li>
<li>Requirements change in every project. &quot;Change is Inevitable&quot;. </li>
<li>Software needs to move away from the separation of architect and developer. </li>
<li>The majority of the cost of a system is usually the software development, and the major component of that is personal costs. </li>
<li>Craftsmanship is a different approach to software development.
<ul>
<li>Needs dedication &#8211; constant learning. </li>
<li>Duplication of software is low cost &#8211; this makes it more difficult to get revenue from your work. </li>
<li>Mentoring &#8211; Share experiences and knowledge. </li>
<li>Taking time out to think about things in the background &#8211; some of the best ideas are discovered while not actively thinking about the problem. </li>
<li>Accomplishment. </li>
<li>Need to set up processes so that developers can learn from their own and others mistakes. </li>
</ul>
</li>
<li>Why promote the best coders into positions where they don&#8217;t write code? </li>
<li>Customers have a lot of choices &#8211; need to educate them on the tradeoff between cost and quality. </li>
<li>Happy developers create better quality code. </li>
<li>High quality software is possible &#8211; needs good supporting tools. </li>
<li>People over process. </li>
</ul>
<h3>SEC314: Secure Development Patterns &#8211; How not to screw yourself during development &#8211; Corneliu L. Tusnea</h3>
<ul>
<li>Distributed authentication systems work by verifying security tokens are valid, rather than verifying usernames and passwords on each service. The more times the password verification code has to be repeated the more chances there are for data leakage or failure. </li>
<li>Security should not be part of the code, it should be part of some external configuration &#8211; what user can use what services.
<ul>
<li>You still need to set attributes in code to determine what services to manage with security. This provides a better security model as there is only one place for look for specific security policy, and the code only needs to be referred to determine if it can be configured with security policy. </li>
</ul>
</li>
<li>XSS protection is difficult to do yourself &#8211; the Microsoft security guys have written a library called AntiXSS, use that. HtmlEncode does not protect against XSS attacks. You should create a basic replacement for Label and Literal that AntiXSS encodes the text it displays and set up a TagMap to these new tags. </li>
<li>Validators are a source of duplication in a system. </li>
<li>Exceptions can leak information if used naively. A better method is to attach an enum to your exceptions, and to show a message based off of that. This gives you an easy way of internationalising error messages too. </li>
</ul>
<h3>WEB305: Pumping Iron: Dynamic Languages on .Net &#8211; Harry Pierson</h3>
<ul>
<li>Tradeoff between Type Safety and Flexibility
<ul>
<li>Rails ActiveRecord example &#8211; AR adds the column names of a table as properties on the model class at run time. </li>
</ul>
</li>
<li>Real products are being shipped on IronPython &#8211; ResolverOne </li>
<li>Dynamic languages are very productive &#8211; good for initial work on greenfield projects. </li>
<li>Dynamic languages are not as fast as Static languages, so optimise by replacing slow parts of Iron(Ruby/Python) with C#. This is easy in the Iron* languages. </li>
<li>Dynamic Languages are easy to teach and learn.
<ul>
<li>Short on Ceremony &#8211; You don&#8217;t have to add extra stuff like package management or class creation to python if you don&#8217;t want to. </li>
</ul>
</li>
<li>Formatting and whitespace matters. All Python code looks the same, so it is easy to start working with someone else&#8217;s code. </li>
<li>Dynamic languages are powerful.
<ul>
<li>AOP is easy in Python &#8211; it is possible to pass functions around as they are first level citizens, or you can use decorators to wrap functions. </li>
<li>You can create new types at runtime &#8211; example given was an XML to Python loader, which created Python objects from any given XML document. </li>
</ul>
</li>
<li>Iron* languages are first class .Net citizens.
<ul>
<li>Interop with other .Net code. Easy to use C# or VB.Net code from Iron* languages, but it is harder to go the other way. Standard .Net assemblies just work in Iron*. </li>
</ul>
</li>
<li>Iron* languages are embeddable by using the DLR. </li>
<li>Microsoft are working on integration with Visual Studio currently, due in 2009. </li>
<li>IronRuby and IronPython are both true Open Source. </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jamiepenney.co.nz/2008/09/02/teched-08-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Camp 2008</title>
		<link>http://www.jamiepenney.co.nz/2008/09/01/code-camp-2008/</link>
		<comments>http://www.jamiepenney.co.nz/2008/09/01/code-camp-2008/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 07:00:00 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Useful Information]]></category>

		<guid isPermaLink="false">http://65.99.219.219/wordpress/?p=18</guid>
		<description><![CDATA[Thinking in WPF &#8211; Ivan Towlson This talk was fantastic. My previous attempts at learning WPF failed miserably, but Ivan&#8217;s talk showed me that I was just thinking about programming a UI in WPF wrong. The programming model is very different to WinForms, and if you try to program in the old WinForms way you [...]]]></description>
			<content:encoded><![CDATA[<h3>Thinking in WPF &#8211; Ivan Towlson</h3>
<p>This talk was fantastic. My previous attempts at learning WPF failed miserably, but Ivan&#8217;s talk showed me that I was just thinking about programming a UI in WPF wrong. The programming model is very different to WinForms, and if you try to program in the old WinForms way you will have significant problems. </p>
<h3>Test Driven Development and Dependency Injection &#8211; Robert Fonseca-Ensor</h3>
<p>This was another excellent presentation. Robert covered the standard TDD stuff, but did a great job of explaining DI, as well as showing a short (~20 line) DI container that you can copy paste into any project. This tied in really well with the other talks.</p>
<h3>ASP.Net MVC &#8211; Owen Evans</h3>
<p>Owen covered most of the regular ASP.Net MVC stuff, but went into a little more detail than the last presentation I saw on it. There was a good discussion at the end about the difference between the MVC model and the WPF model of synchronising data between the View and the Model. The outcome of this discussion was that they are both useful, but for different areas. The stateless nature of HTTP means that the MVC pattern makes a lot of sense for websites, where as the use of data binding makes sense in a rich client application.</p>
<h3>ASP.Net Dynamic Data &#8211; Scott Hanselman</h3>
<p>This talk was a complete surprise for me. I hadn&#8217;t heard anything about Dynamic Data before this, and was very impressed with it. The gist of it is around scaffolding Linq entities. It has a bunch of built in logic for creating basic CRUD websites quickly. </p>
<p>The real surprise is the level of customisability &#8211; every single thing in this system is customisable. Every object is rendered by a template, but the automatic choices can all be overridden so if you don&#8217;t like that Category.Description renders with a TextArea, you can specify something else in code. The default templates are generated in your project, so you don&#8217;t like the default TextArea, you can change that template which changes the rendering for all of them. </p>
<p>Also Scott mentioned that this functionality will be making its way into the ASP.Net MVC project &#8211; once this happens, I will be completely sold. This is the sort of thing that would make CRUD style web development so easy without sacrificing customisabilty. Great stuff.</p>
<h3>Silverlight &#8211; Jonas Follesco</h3>
<p>An entertaining talk on some of the crazier things you can do with Silverlight. They have added support for using JavaScript objects in the C# code behind the silverlight application, and C# object in the JavaScript in the browser. He also demo&#8217;d a Silverlight &#8211; Javascript &#8211; Flash application using a webcam, which was a good end to the day.</p>
<p>He also covered Dependency Injection and TDD in silverlight. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamiepenney.co.nz/2008/09/01/code-camp-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TechEd 08 &#8211; Day 1</title>
		<link>http://www.jamiepenney.co.nz/2008/09/01/teched-08-day-1/</link>
		<comments>http://www.jamiepenney.co.nz/2008/09/01/teched-08-day-1/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 06:59:00 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Contracting]]></category>
		<category><![CDATA[Useful Information]]></category>

		<guid isPermaLink="false">http://65.99.219.219/wordpress/?p=17</guid>
		<description><![CDATA[Figured I would write a little about each of the interesting sessions at TechEd, just as a note keeping exercise. Keynote Speech National&#8217;s John Key and Labour&#8217;s David Cunliffe talk about digital strategy. National&#8217;s strategy: $1.5B over 6 years to a single utility for fiber to the home. Labour&#8217;s strategy: $1B over 10 years to [...]]]></description>
			<content:encoded><![CDATA[<p>Figured I would write a little about each of the interesting sessions at TechEd, just as a note keeping exercise. </p>
<h3>Keynote Speech</h3>
<h4>National&#8217;s John Key and Labour&#8217;s David Cunliffe talk about digital strategy.</h4>
<p>National&#8217;s strategy: $1.5B over 6 years to a single utility for fiber to the home.</p>
<p>Labour&#8217;s strategy: $1B over 10 years to multiple providers.</p>
<h4>Microsoft&#8217;s Amit &#8212;- talks about Software+Services</h4>
<ul>
<li>Local software extended with on demand computing services. </li>
<li>Small pieces loosely joined. Interoperability and standards become important. </li>
<li>Foster best of breed software and services. </li>
<li>Connecting devices together.
<ul>
<li>All devices seamlessly and securely integrate with each other. </li>
<li>Simple management of devices, software, and data. </li>
<li>Sharing of data between all of your devices. </li>
</ul>
</li>
<li>Cloud computing, how do we split work between client and cloud. </li>
<li>Connected Business
<ul>
<li>Consistent UX across delivery and deployment options. </li>
<li>Common architecture and data models across deployments. </li>
<li>Flexibility and Adaptability in deployment. </li>
</ul>
</li>
</ul>
<h3>WEB301: ASP.Net MVC &#8211; Should You Care? &#8211; Scott Hanselman</h3>
<p>Very similar to Code Camp talk on ASP.Net MVC talk by Owen Evans. Scott talked mostly about the standard ASP.Net MVC features, but he is always entertaining to listen to so it was still worth watching.</p>
<h3>ARC201: Moving Beyond Industrial Software &#8211; Harry Pierson</h3>
<ul>
<li>Architects are responsible for predicting and reacting to change. </li>
<li>Current Day:
<ul>
<li>Most IT departments are run like a factory. This is a bad model for creative work. </li>
<li>Change is happening now &#8211; traditional business models are falling apart. </li>
</ul>
</li>
<li>Recommendations
<ul>
<li>Push control to the edge.
<ul>
<li>Centralized models of control cause bottlenecks. </li>
<li>Centralization as a technology no longer works. </li>
<li>Centralization slows you down &#8211; prevents marketplace agility. </li>
<li>&quot;There is not one Microsoft anymore&quot; &#8211; Steve Ballmer </li>
<li>Loose coupling between departments. Still need some decision making power at the centre, but not much. Central control over the budget is a good level. </li>
</ul>
</li>
<li>Know when to ignore standards.
<ul>
<li>Choice between solving a business problem and adhering to a standard &#8211; solve the business problem! </li>
<li>The cost to maintain standards is not zero. </li>
<li>Adherence to standards costs as well. </li>
<li>Efficiency through Standardisation only occurs in a factory style environment &#8211; This is not IT! </li>
<li>What is the simplest thing that could work? </li>
</ul>
</li>
<li>Empower users to solve their own problems.
<ul>
<li>IT people will never understand the business. If your business idea relies on good communication between IT and business people, you will probably fail. </li>
<li>Lack of marketplace within an enterprise means that there is no &quot;natural selection&quot; going on. </li>
<li>Build infrastructure and tools, not solutions. </li>
<li>Common, centralized infrastructure for business users to build their own solutions on. &quot;If you want something done right, you&#8217;ve gotta do it yourself&quot; </li>
<li>Common infrastructure costs can be amortized across the entire organization. </li>
</ul>
</li>
</ul>
</li>
</ul>
<h3>SEC306: Privacy &#8211; The Why, What, and How &#8211; Steve Riley</h3>
<ul>
<li>Data breaches in 3 1/2 Years: 227,120,380 in the US. </li>
<li>It is practically impossible to have a private face-to-face conversation with today&#8217;s invasive technologies. </li>
<li>Privacy: The right to be left alone. </li>
<li>Privacy laws and fines for data breaches have not caught up with technology &#8211; it is possible to expose your entire customer bases private data, but it is cheaper too pay the fine than fix the problem. </li>
</ul>
<p>Steve&#8217;s session was more of a discussion. He went through a bunch of different scenarios, what was an acceptable levels of privacy invasion, what evil things it is possible to do with large amounts of user data. I don&#8217;t have much written down because I was too busy listening.</p>
<h3>WEB302: ADO.Net Data Services &#8211; The zen of RESTfulness and the art of &quot;Astoria&quot; &#8211; Scott Hanselman</h3>
<p>Astoria looks interesting &#8211; it is a framework for setting up REST web services from Entity Data Models. It looks pretty cool, you can then set up a service reference to this and use LINQ to query it. It really looks like Microsoft are setting all their stuff up to work with LINQ and enties now &#8211; very cool. The demo showed that you can use the same LINQ query on both a local database using LINQ to SQL, and by just changing the data context, you can query an Astoria web service.</p>
<p>As a side note, Astoria web services are just regular XML (in fact they return Atom), so it is possible to write your own implementation of this. You can set the expected data type (again, standard REST), so you can get back JSON if you want. This is important, because it allows them to use AJAX to pull this data back, and use the entities in the javascript using the actual property names. The data context has a few extra things in it, like the ability to batch requests. Again, these work in a standard REST style. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamiepenney.co.nz/2008/09/01/teched-08-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>StringBuilder Performance Issues</title>
		<link>http://www.jamiepenney.co.nz/2008/05/29/stringbuilder-performance-issues/</link>
		<comments>http://www.jamiepenney.co.nz/2008/05/29/stringbuilder-performance-issues/#comments</comments>
		<pubDate>Thu, 29 May 2008 06:54:00 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Contracting]]></category>
		<category><![CDATA[Useful Information]]></category>

		<guid isPermaLink="false">http://65.99.219.219/wordpress/?p=16</guid>
		<description><![CDATA[We are working on a templating system, so as you can imagine we have to deal with the construction of massive strings of text. Conventional wisdom is to use a StringBuilder rather than a lot of String concatenation, but we wanted to test out the speed of StringBuilder to see if there were any issues [...]]]></description>
			<content:encoded><![CDATA[<p>We are working on a templating system, so as you can imagine we have to deal with the construction of massive strings of text. Conventional wisdom is to use a StringBuilder rather than a lot of String concatenation, but we wanted to test out the speed of StringBuilder to see if there were any issues that we may encounter. These might not be the best tests strictly speaking, but they show some interesting points that are worth thinking about. Here are our results:</p>
<p><a href="http://lh3.ggpht.com/_TGyXpQbgdXc/SZ0C0dvobLI/AAAAAAAAABI/RSfIcqFGBZo/s1600-h/Profiler_first_run%5B5%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Profiler_first_run" border="0" alt="Profiler_first_run" src="http://lh4.ggpht.com/_TGyXpQbgdXc/SZ0C1ErySBI/AAAAAAAAABY/Exv5SLnTIzs/Profiler_first_run_thumb%5B3%5D.png?imgmax=800" width="492" height="264" /></a> </p>
<p>The first run was just to get the string builder code in memory.</p>
<p><a href="http://lh3.ggpht.com/_TGyXpQbgdXc/SZ0C18zK6hI/AAAAAAAAABc/vqQsXsVp3Vs/s1600-h/Profiler_second_run_first_result_set%5B5%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Profiler_second_run_first_result_set" border="0" alt="Profiler_second_run_first_result_set" src="http://lh3.ggpht.com/_TGyXpQbgdXc/SZ0C2Yv462I/AAAAAAAAABg/BKRQs_TIol8/Profiler_second_run_first_result_set_thumb%5B3%5D.png?imgmax=800" width="494" height="331" /></a> </p>
<p>This is the same code as above, but hopefully the JIT has run over everything we are profiling so it should have less effect on our tests (if it has any at all in a debug build). Insert seems to be a touch faster but this could just be due to inaccuracies in the profiler though, as they are pretty small..</p>
<p><a href="http://lh5.ggpht.com/_TGyXpQbgdXc/SZ0C3D7PnPI/AAAAAAAAABk/j8y7tHfChoU/s1600-h/Profiler_second_run_second_result_set%5B4%5D.png"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Profiler_second_run_second_result_set" border="0" alt="Profiler_second_run_second_result_set" src="http://lh4.ggpht.com/_TGyXpQbgdXc/SZ0C4OkKdtI/AAAAAAAAABo/fNfONyNz1Ok/Profiler_second_run_second_result_set_thumb%5B2%5D.png?imgmax=800" width="500" height="281" /></a> </p>
<p>Our last set of results. This time we took the ToString() call out of the loop and did it at the end. Look at the difference this makes to performance! Both Append and Insert perform nearly identically. The ToString() call itself is very quick, yet somehow it messes up the performance of Append and Insert drastically. Our application needs to periodically get the current state of the string builder, so we fall into the first category- where both Insert and Append perform terribly.</p>
<table border="1">
<tbody>
<tr>
<th>Test Scenario</th>
<th>Time spent in loop (s)</th>
</tr>
<tr>
<td>Append and ToString</td>
<td align="right">12.5000</td>
</tr>
<tr>
<td>Insert and ToString</td>
<td align="right">12.2000</td>
</tr>
<tr>
<td>Append and ToString with preallocation</td>
<td align="right">12.4000</td>
</tr>
<tr>
<td>Insert and ToString with preallocation</td>
<td align="right">12.8000</td>
</tr>
<tr>
<td>Append without ToString</td>
<td align="right">0.0092</td>
</tr>
<tr>
<td>Insert without ToString</td>
<td align="right">0.0100</td>
</tr>
<tr>
<td>Append without ToString with preallocation</td>
<td align="right">0.0083</td>
</tr>
<tr>
<td>Insert without ToString with preallocation</td>
<td align="right">0.0103</td>
</tr>
</tbody>
</table>
<p>Interesting results can come from performance profiling things &#8211; Why on earth does calling ToString() mess up the performance of StringBuilder, and is there any way around this?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamiepenney.co.nz/2008/05/29/stringbuilder-performance-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Broken Motion Sensor in my Wii Controller</title>
		<link>http://www.jamiepenney.co.nz/2007/12/10/broken-motion-sensor-in-my-wii-controller/</link>
		<comments>http://www.jamiepenney.co.nz/2007/12/10/broken-motion-sensor-in-my-wii-controller/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 06:31:00 +0000</pubDate>
		<dc:creator>Jamie</dc:creator>
				<category><![CDATA[Useful Information]]></category>

		<guid isPermaLink="false">http://65.99.219.219/wordpress/?p=5</guid>
		<description><![CDATA[Our flat has been playing Resident Evil 4 on the Wii together (well, one flatmate plays and we all watch and &#8216;advise&#8217;). Said flatmate dropped the nunchuck on the ground mid game and somehow broke the motion sensor in the remote. This resulted in the character constantly swiping their knife, making the game unplayable (you [...]]]></description>
			<content:encoded><![CDATA[<p>Our flat has been playing Resident Evil 4 on the Wii together (well, one flatmate plays and we all watch and &#8216;advise&#8217;). Said flatmate dropped the nunchuck on the ground mid game and somehow broke the motion sensor in the remote. This resulted in the character constantly swiping their knife, making the game unplayable (you couldn&#8217;t even move). After a quick google search I came across a forum thread where someone had also broken their remote, and one person suggested tapping it quite hard on the back. This fixed mine, and after playing Wii Sports for a bit I can safely say it is fully functioning. That saved me $100, so I thought I would post it here on the off chance that it helps someone else out.</p>
<p><em>Update:</em></p>
<p>Just in case anyone was wondering if I ran into problems with this later, the controller is still fine.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jamiepenney.co.nz/2007/12/10/broken-motion-sensor-in-my-wii-controller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
