<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>The Software Alchemist</title>
	
	<link>http://softwarealchemist.net</link>
	<description>Just another WordPress site</description>
	<lastBuildDate>Wed, 30 Nov 2011 02:42:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TheSoftwareAlchemist" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="thesoftwarealchemist" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>The difference between source code and text</title>
		<link>http://softwarealchemist.net/2011/11/the-difference-between-source-code-and-text/</link>
		<comments>http://softwarealchemist.net/2011/11/the-difference-between-source-code-and-text/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 02:41:37 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://softwarealchemist.net/?p=115</guid>
		<description><![CDATA[I was reading &#8220;Three Reasons To Roll Your Own Mocks&#8221; by Josh Cheek earlier today. One point, somewhat tangental to the thrust of his argument, stood out to me. &#8220;When you make changes, many tests may break. Perhaps you change the name of a method that it invokes on its dependent object. Now you must [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading &#8220;<a href="http://blog.8thlight.com/josh-cheek/2011/11/28/three-reasons-to-roll-your-own-mocks.html">Three Reasons To Roll Your Own Mocks</a>&#8221; by Josh Cheek earlier today. One point, somewhat tangental to the thrust of his argument, stood out to me.</p>
<blockquote><p>&#8220;When you make changes, many tests may break. Perhaps you change the name of a method that it invokes on its dependent object. Now you must go update all your dynamic mocks to change the name of the method.&#8221;</p></blockquote>
<p>What? When was the last time that you changed the name of a method in <em>more than one place</em>? If you&#8217;ve been using Eclipse, Visual Studio, or basically any other IDE, it should be a long, long time ago. Are you coding in vi? If so&#8230; WHY? Do you shun the basic refactoring tools in your IDE&#8230; WHY?</p>
<p>Now, some technologies cripple the abilities of your IDE to treat code as code. For example, a mocking framework that requires you to enter method names as strings (which I think is what Josh was referring to). If you use one of these, your code is treated as text, which is a waste of the power you have on your desktop.</p>
<p>I strongly recommend avoiding frameworks which make you treat your code as merely text. Not only does this reduce the usefulness of your development environment, it can also introduce errors that the compiler cannot identify which in turn produces bugs which are harder to identify and fix.</p>
<p>It can be difficult to replace certain frameworks, but all modern programming languages have some form of reflection-enabled closure, delegate, anonymous method or lambda-expression which make it possible to make wrappers which actually use the classes and types in your own code. (Although such constructs can be very cumbersome&#8230; I&#8217;m looking at you, Java).</p>
<p>So, treat your code as code, and help your tools help you.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/7dFSMM4wu5y6vqBhZ_F9lJq4PGU/0/da"><img src="http://feedads.g.doubleclick.net/~a/7dFSMM4wu5y6vqBhZ_F9lJq4PGU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/7dFSMM4wu5y6vqBhZ_F9lJq4PGU/1/da"><img src="http://feedads.g.doubleclick.net/~a/7dFSMM4wu5y6vqBhZ_F9lJq4PGU/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwarealchemist.net/2011/11/the-difference-between-source-code-and-text/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Perils of Prefactoring</title>
		<link>http://softwarealchemist.net/2011/04/the-perils-of-prefactoring/</link>
		<comments>http://softwarealchemist.net/2011/04/the-perils-of-prefactoring/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 01:05:09 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Craftmanship]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://softwarealchemist.net/?p=101</guid>
		<description><![CDATA[I am increasingly aware of the danger of &#8216;prefactoring&#8217;. That is, stewing over the minute details of code design before just getting the thing to work.Apparently the name &#8216;prefactoring&#8217; is taken, maybe we should call it &#8216;premature factorization&#8217; in honour of Donald Knuth. As a journeyman developer reads more and more about how to design [...]]]></description>
			<content:encoded><![CDATA[<p>I am increasingly aware of the danger of &#8216;prefactoring&#8217;. That is, stewing over the minute details of code design before just <em>getting the thing to work</em>.<span id="more-101"></span>Apparently the name &#8216;prefactoring&#8217; is taken, maybe we should call it &#8216;premature factorization&#8217; in honour of Donald Knuth.</p>
<p>As a journeyman developer reads more and more about how to design good code, how to structure good code, how to recognize good code, etc. etc. the principles that he picks up move to the forefront of his mind when writing new code. This is not always a bad thing, but it is easy to get in to the trap of changing the design so many times <em>before </em>having a clear purpose for the code that a developer loses sight of the goal he is trying to achieve. Hours can be lost perfecting the design of code that, in the end, turns out to be unimportant or unnecessary.</p>
<p>So, I am advocating the creation of <em>bad code</em>. Wait&#8230; that doesn&#8217;t sound right!</p>
<p>That is right, but within constraints.  Pick up a copy of <em>Clean Code</em>,<em> The Pragmatic Programmer</em> or <em>Working With Legacy Code</em>. Hear that&#8230;? The background hum? Listen carefully&#8230; &#8220;Red, Green, Refactor, Red, Green, Refactor&#8221;. That&#8217;s the drumbeat of test driven development. The <em>bad</em> code only exists between the Red and Green beats. As soon as Green beat is sounded we move on to refactoring. Then you can get your rules, patterns and principles out and polish that code until it shines!</p>
<p>Remember, you can only get away with that sloppy code if you sound that last beat of the drum loud and clear &#8211; never neglect to refactor!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/1AMNMjHc_oVBeV2L6mCr7HJA2Y4/0/da"><img src="http://feedads.g.doubleclick.net/~a/1AMNMjHc_oVBeV2L6mCr7HJA2Y4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/1AMNMjHc_oVBeV2L6mCr7HJA2Y4/1/da"><img src="http://feedads.g.doubleclick.net/~a/1AMNMjHc_oVBeV2L6mCr7HJA2Y4/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwarealchemist.net/2011/04/the-perils-of-prefactoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Excited about variable names</title>
		<link>http://softwarealchemist.net/2011/03/excited-about-variable-names/</link>
		<comments>http://softwarealchemist.net/2011/03/excited-about-variable-names/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 22:57:25 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[Craftmanship]]></category>

		<guid isPermaLink="false">http://softwarealchemist.net/?p=93</guid>
		<description><![CDATA[I picked up a copy of Clean Code by Bob Martin the other day. Having only read the first few chapters, it&#8217;s already making a difference not only in how I code, but my whole attitude toward coding. (Oh no, this is sounding like an awful infomercial) The book starts off with a few simple [...]]]></description>
			<content:encoded><![CDATA[<p>I picked up a copy of <a href="http://www.amazon.ca/gp/product/0132350882/ref=as_li_ss_tl?ie=UTF8&amp;tag=musihististhr-20&amp;linkCode=as2&amp;camp=15121&amp;creative=390961&amp;creativeASIN=0132350882">Clean Code by Bob Martin</a> the other day. Having only read the first few chapters, it&#8217;s already making a difference not only in how I code, but my whole attitude toward coding.<span id="more-93"></span> (Oh no, this is sounding like an awful infomercial)</p>
<p>The book starts off with a few simple rules. On the surface, these seem to be dry and quite familiar territory to anyone who has much experience with developing software. &#8220;Variable names should be descriptive&#8221;, &#8220;Functions should have a single purpose&#8221; etc. But within this advice is a more sweeping message - <em>carefully written code, like well made art, is something you can be proud of</em>. My own viewpoint is shifting from one of merely producing deliverable (and maintainable) goods, to also encompass the construction of something which can be appreciated for its craftmanship.</p>
<p>&#8220;Uncle&#8221; Bob has, with a few simple rules, injected more fun into coding for me.</p>
<p>&nbsp;</p>

<p><a href="http://feedads.g.doubleclick.net/~a/6mBuxyljt87pUJ2xhnN_DjazmTA/0/da"><img src="http://feedads.g.doubleclick.net/~a/6mBuxyljt87pUJ2xhnN_DjazmTA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6mBuxyljt87pUJ2xhnN_DjazmTA/1/da"><img src="http://feedads.g.doubleclick.net/~a/6mBuxyljt87pUJ2xhnN_DjazmTA/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwarealchemist.net/2011/03/excited-about-variable-names/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 Test Drive</title>
		<link>http://softwarealchemist.net/2011/03/html5-test-drive/</link>
		<comments>http://softwarealchemist.net/2011/03/html5-test-drive/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 23:08:27 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://softwarealchemist.net/?p=91</guid>
		<description><![CDATA[I&#8217;ve read Hello HTML5 (or as much of it as is finished), and Mark Pilgrim&#8217;s excellent Dive Into HTML5. Time to give this a go&#8230; I now have a repository on GitHub for a simple form filling application making use of the local storage and offline application APIs. As of writing, I&#8217;m still feeling my [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve read <a href="http://www.manning.com/crowther/">Hello HTML5</a> (or as much of it as is finished), and Mark Pilgrim&#8217;s excellent <a href="http://diveintohtml5.org/">Dive Into HTML5</a>. Time to give this a go&#8230;</p>
<p>I now have a <a href="https://github.com/andypaxo/Inspection">repository on GitHub</a> for a simple form filling application making use of the <em>local storage</em> and <em>offline application </em>APIs. As of writing, I&#8217;m still feeling my way around this stuff, so the code isn&#8217;t really worth using in any other project, but I hope to clean it up over time.</p>
<p>HTML5 opens up many, many possibilities that were, until recently, the sole domain of installed applications. The future of the web is definitely getting more exciting.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/biyWrAIRriGZInyPJClVheCEPzQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/biyWrAIRriGZInyPJClVheCEPzQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/biyWrAIRriGZInyPJClVheCEPzQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/biyWrAIRriGZInyPJClVheCEPzQ/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwarealchemist.net/2011/03/html5-test-drive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>That’s not Agile!</title>
		<link>http://softwarealchemist.net/2011/03/thats-not-agile/</link>
		<comments>http://softwarealchemist.net/2011/03/thats-not-agile/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 02:03:14 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://softwarealchemist.net/?p=77</guid>
		<description><![CDATA[“We have come to value &#8230; Customer collaboration over contract negotiation” - The Agile Manifesto Much has been written about Agile, Domain Driven Design and other modern software development methodologies. You can&#8217;t read very much of this without coming across a foundational common thread&#8230; user and customer involvement. The more teaching on Agile that I [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>“We have come to value &#8230; Customer collaboration over contract negotiation”</em></p></blockquote>
<p style="padding-left: 30px;">- The Agile Manifesto<span id="more-77"></span></p>
<p>Much has been written about Agile, Domain Driven Design and other modern software development methodologies. You can&#8217;t read very much of this without coming across a foundational common thread&#8230; user and customer involvement.</p>
<p>The more teaching on Agile that I read, the more I am convinced <em>if you don&#8217;t have constant interaction with your users and customers, you are not doing Agile</em>.<em><br />
</em></p>

<p><a href="http://feedads.g.doubleclick.net/~a/WmZlP9lWSejCXzgLS7GQG6GvVx4/0/da"><img src="http://feedads.g.doubleclick.net/~a/WmZlP9lWSejCXzgLS7GQG6GvVx4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/WmZlP9lWSejCXzgLS7GQG6GvVx4/1/da"><img src="http://feedads.g.doubleclick.net/~a/WmZlP9lWSejCXzgLS7GQG6GvVx4/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwarealchemist.net/2011/03/thats-not-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Offline applications with HTML5</title>
		<link>http://softwarealchemist.net/2011/03/offline-applications-with-html5/</link>
		<comments>http://softwarealchemist.net/2011/03/offline-applications-with-html5/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 03:31:17 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://softwarealchemist.net/?p=72</guid>
		<description><![CDATA[Like most web developers, I&#8217;ve recently been playing with HTML5 and CSS3. There&#8217;s an absolute ton of stuff to discover, but right now I&#8217;ll focus on the Offline Web Application aspect. The specifics of implementing offline applications are well documented elsewhere. But what isn&#8217;t often mentioned is how to discover the required files for your [...]]]></description>
			<content:encoded><![CDATA[<p>Like most web developers, I&#8217;ve recently been playing with HTML5 and CSS3. There&#8217;s an absolute ton of stuff to discover, but right now I&#8217;ll focus on the <a title="HTML5 Offline Web Application spec" href="http://www.w3.org/TR/html5/offline.html">Offline Web Application</a> aspect.</p>
<p>The specifics of implementing offline applications are well documented elsewhere. But what isn&#8217;t often mentioned is how to discover the required files for your application which should be listed in the cache manifest.</p>
<p>A little google/binging around finds a handful of attempts to make this easier, but I have stumbled upon a quick way to a kind of poor man&#8217;s dependency finding&#8230; Just fire up <a title="Fiddler Web Debugger" href="http://www.fiddler2.com/fiddler2/">Fiddler</a> when using the application and copy the file listing. This method is far from foolproof, but it beats tracking down each file by hand, especially when using add-ons like <a href="http://jqueryui.com">jQuery UI</a> which pull in other external files.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/TEM3dikKv0aObpvKo4n20Po1kIc/0/da"><img src="http://feedads.g.doubleclick.net/~a/TEM3dikKv0aObpvKo4n20Po1kIc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/TEM3dikKv0aObpvKo4n20Po1kIc/1/da"><img src="http://feedads.g.doubleclick.net/~a/TEM3dikKv0aObpvKo4n20Po1kIc/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwarealchemist.net/2011/03/offline-applications-with-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On the Metro</title>
		<link>http://softwarealchemist.net/2011/01/on-the-metro/</link>
		<comments>http://softwarealchemist.net/2011/01/on-the-metro/#comments</comments>
		<pubDate>Sat, 22 Jan 2011 16:27:12 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://softwarealchemist.net/?p=63</guid>
		<description><![CDATA[In December, I had the opportunity to attend a presentation by Albert Shum, the director of the Windows Mobile design team. He revealed the thought process behind the new Metro UI, used in Windows Phone and Zune, and why it&#8217;s such a radical departure from previous versions of Microsoft&#8217;s UIs. Having read a little about [...]]]></description>
			<content:encoded><![CDATA[<p>In December, I had the opportunity to attend a presentation by <em>Albert Shum</em>, the director of the Windows Mobile design team. He revealed the thought process behind the new <a href="http://en.wikipedia.org/wiki/Metro_UI">Metro UI</a>, used in Windows Phone and Zune, and why it&#8217;s such a radical departure from previous versions of Microsoft&#8217;s UIs.</p>
<p>Having read a little about Metro before, I found a lot of  the language to be very airy, arty and generally fluffy. The presentation made a lot of the fluff much more <em>solid</em>.</p>
<p><a href="http://softwarealchemist.net/wp-content/uploads/2011/01/metro.png"><img class="aligncenter" title="Metro UI" src="http://upload.wikimedia.org/wikipedia/en/b/bd/Wp7_musicvideo.jpg" alt="" width="560" height="242" /><br />
</a>I&#8217;ll unpack a couple of the terms used in the Metro UI literature. Interestingly, these guidelines have more to do with what is left out of Metro apps than what is included.</p>
<h2>&#8216;Content, Not Chrome&#8217;</h2>
<p>Every application that allows users to write, discuss, photo, video, chat etc. contains <em>user content</em>. This is nothing new. We are used to presenting users with windows, menus, scrollbars and all manner of widgets in order to view, organise and manipulate their stuff. The difference with the Metro <span style="text-decoration: line-through;">guidelines</span> <em>design language</em> is the idea of letting go of all these widgets and simply allowing  the content to <em>be</em> the interface.</p>
<h2>&#8216;Authentically Digital&#8217;</h2>
<p>This is a term that really had me scratching my head when first reading it. &#8216;Authentic&#8217; sounds like a term that a designer jeans company would use more often than a UI designer. It&#8217;s actually rather simple, but at the same time it&#8217;s a big departure from the way we&#8217;re used to designing traditional desktop applications.</p>
<p>Think about the word &#8216;desktop&#8217; for a second. From the begginings of GUIs, we&#8217;ve attempted to draw analogies from the interface into the real world. Glancing at my virtual desktop here for a second, I see a &#8216;recycle bin&#8217; that looks rather like a real, physical waste paper basket, a couple of sticky notes and an analog clock. All of them digital artefacts disguised to look like their physical equivalents.</p>
<p>Being &#8216;authentically digital&#8217; simply means to abandon the attempt to make computers look and behave like other objects and let them be computers.</p>
<h2>Bottom line</h2>
<p>The Metro UI &#8216;design language&#8217; has resulted in some really great looking apps so far, and will continue to do so. The advice given is more high level than most developers are used to, or will even be comfortable with. This is intentional. The broadest advice that Albert gave at the talk was also one that is very applicable to developers, designers and product managers: Pick a small set of principles and use them to answer the decisions and dilemmas that will inevitably appear. You can get much more milage from a rule such as &#8216;design should be clean and open&#8217; than from &#8216;All second level headings should have a 20px upper margin&#8217;.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/X-lA22jIEAZ2ffkiAlUej5eXPyg/0/da"><img src="http://feedads.g.doubleclick.net/~a/X-lA22jIEAZ2ffkiAlUej5eXPyg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/X-lA22jIEAZ2ffkiAlUej5eXPyg/1/da"><img src="http://feedads.g.doubleclick.net/~a/X-lA22jIEAZ2ffkiAlUej5eXPyg/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwarealchemist.net/2011/01/on-the-metro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Becoming a JavaScript Ninja (the lesson)</title>
		<link>http://softwarealchemist.net/2010/12/becoming-a-javascript-ninja-the-lesson/</link>
		<comments>http://softwarealchemist.net/2010/12/becoming-a-javascript-ninja-the-lesson/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 16:49:53 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://s277312482.onlinehome.us/alchemist/?p=32</guid>
		<description><![CDATA[While writing the about the book Secrets of the JavaScript Ninja, I came to a realization. OOP languages help in understanding JavaScript initially, but are damaging in the long term. Because the concepts from Java, C#, etc. are close to the concepts in JavaScript, they give a developer a &#8216;leg up&#8217; when starting to understand [...]]]></description>
			<content:encoded><![CDATA[<p>While writing the about the book <a href="http://www.softwarealchemist.net/2010/12/becoming-javascript-ninja-book.html">Secrets of the JavaScript Ninja</a>, I came to a realization. <i>OOP languages help in understanding JavaScript initially, but are damaging in the long term</i>.</p>
<p>Because the concepts from Java, C#, etc. are <i>close</i> to the concepts in JavaScript, they give a developer a &#8216;leg up&#8217; when starting to understand the language. However, relying on the understanding that comes from other languages prevents a developer from fully grasping the power of JavaScript. It is, after all, as much a functional language as it is object based. For example:</p>
<ul>
<li>Methods are <i>somewhat</i> like functions</li>
<li>Scopes are <i>somewhat</i> like closures</li>
<li>Classes are <i>somewhat</i> like prototypes</li>
</ul>
<p>It&#8217;s just like learning a spoken language; If you want to speak fluently, you need to stop translating from your native tongue and learn to <i>think</i> in a new language.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/5UkYEtL4FNbGJKgMkfnoEYj9vR4/0/da"><img src="http://feedads.g.doubleclick.net/~a/5UkYEtL4FNbGJKgMkfnoEYj9vR4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/5UkYEtL4FNbGJKgMkfnoEYj9vR4/1/da"><img src="http://feedads.g.doubleclick.net/~a/5UkYEtL4FNbGJKgMkfnoEYj9vR4/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwarealchemist.net/2010/12/becoming-a-javascript-ninja-the-lesson/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Becoming a JavaScript Ninja (the book)</title>
		<link>http://softwarealchemist.net/2010/12/becoming-a-javascript-ninja-the-book/</link>
		<comments>http://softwarealchemist.net/2010/12/becoming-a-javascript-ninja-the-book/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 16:47:48 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://s277312482.onlinehome.us/alchemist/?p=30</guid>
		<description><![CDATA[I&#8217;m reading Secrets of the Javascript Ninja by John Resig. I&#8217;d strongly recommend to most developers who do anything with the web that they should read this book. To be more precise&#8230; Developers who need to read this book: Anyone who has written basic JavaScript, but feels a little uncertainty about the phrases &#8216;closure&#8217; or [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m reading <a href="http://draft.blogger.com/">Secrets of the Javascript Ninja </a>by John Resig. I&#8217;d strongly recommend to <i>most</i> developers who do anything with the web that they should read this book.</p>
<p>To be more precise&#8230;<br />
<b>Developers who need to read this book:</b></p>
<ul>
<li>Anyone who has written basic JavaScript, but feels a little uncertainty about the phrases &#8216;closure&#8217; or &#8216;prototype&#8217;</li>
<li><b> </b>Anyone who writes JavaScript, but relies on a third party library such as jQuery or MooTools</li>
</ul>
<p><b>Developers who don&#8217;t need to read this book:</b></p>
<ul>
<li>Anyone who hasn&#8217;t developed a web / JS app (read something more introductory, <i>then</i> this book)</li>
<li>Valerio Proietti</li>
</ul>
<p>I&#8217;ve only covered about a third of what has so far been written (covering unit testing, functions, closures and prototypes). But&#8230; these fundamentals are of inestimable importance to a developer who has made do with applying knowledge from OO languages to JavaScript.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/9T0c1fMUkRDBrIiCzwEa_IPAiB8/0/da"><img src="http://feedads.g.doubleclick.net/~a/9T0c1fMUkRDBrIiCzwEa_IPAiB8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9T0c1fMUkRDBrIiCzwEa_IPAiB8/1/da"><img src="http://feedads.g.doubleclick.net/~a/9T0c1fMUkRDBrIiCzwEa_IPAiB8/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwarealchemist.net/2010/12/becoming-a-javascript-ninja-the-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building Awesome Apps for Windows 7</title>
		<link>http://softwarealchemist.net/2010/12/building-awesome-apps-for-windows-7/</link>
		<comments>http://softwarealchemist.net/2010/12/building-awesome-apps-for-windows-7/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 16:45:17 +0000</pubDate>
		<dc:creator>andy</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://s277312482.onlinehome.us/alchemist/?p=28</guid>
		<description><![CDATA[Went to the Building Awesome Apps for Windows 7 &#8216;community tour&#8217; yesterday evening, hosted by Richard Campbell (of .NET Rocks! fame). This was basically a quick run through of what&#8217;s available in the Windows API Code Pack, with some hints as to how (and when) to implement the new bells and whistles available in Windows [...]]]></description>
			<content:encoded><![CDATA[<p>Went to the <a href="http://blogs.msdn.com/b/cdndevs/archive/2010/11/02/building-awesome-apps-for-windows-7-community-tour.aspx">Building Awesome Apps for Windows 7</a> &#8216;community tour&#8217; yesterday evening, hosted by Richard Campbell (of <a href="http://dotnetrocks.com/">.NET Rocks!</a> fame).</p>
<p>This was basically a quick run through of what&#8217;s available in the <a href="http://code.msdn.microsoft.com/WindowsAPICodePack">Windows API Code Pack</a>, with some hints as to how (and when) to implement the new bells and whistles available in Windows 7.</p>
<div class="separator" style="clear: both; text-align: center;"><a style="margin-left: 1em; margin-right: 1em;" href="http://1.bp.blogspot.com/_kIB_McdGwig/TPkiJAX1-0I/AAAAAAAAAEQ/LZCbEcHSey4/s1600/jumplist.png"><img src="http://1.bp.blogspot.com/_kIB_McdGwig/TPkiJAX1-0I/AAAAAAAAAEQ/LZCbEcHSey4/s1600/jumplist.png" border="0" alt="" /></a></div>
<div style="text-align: center;"></div>
<p>Here&#8217;s what I took away from the talk:</p>
<ul>
<li>All the taskbar improvements (jump lists, overlays, progress bars&#8230;) are easy to use, but just provide eye-candy. I do think that the thumbnail buttons are pretty cool if you have a use for them, though.</li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc948909%28VS.85%29.aspx">Restart and Recovery</a> is nifty, and not only useful for program crashes. Having your app &#8216;come back from the dead&#8217; on the morning after patch Tuesday is a great idea.</li>
<li>The touch API is not so easy, but the Surface SDK is. Unless you&#8217;re interested in fine control over the intricacies of the touch API, pass over it and just use the tools provided for Microsoft Surface.</li>
<li>There are ways of laying out an application that make life easier for touch users without specifically programming for touch. A nice observation.</li>
<li>Liquid cooled computing can have disastrous results. Thanks for that, Richard.</li>
</ul>

<p><a href="http://feedads.g.doubleclick.net/~a/34IAAiiGpd3QLcNKiBC7pP_YLr0/0/da"><img src="http://feedads.g.doubleclick.net/~a/34IAAiiGpd3QLcNKiBC7pP_YLr0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/34IAAiiGpd3QLcNKiBC7pP_YLr0/1/da"><img src="http://feedads.g.doubleclick.net/~a/34IAAiiGpd3QLcNKiBC7pP_YLr0/1/di" border="0" ismap="true"></img></a></p>]]></content:encoded>
			<wfw:commentRss>http://softwarealchemist.net/2010/12/building-awesome-apps-for-windows-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic page generated in 0.571 seconds. --><!-- Cached page generated by WP-Super-Cache on 2011-12-12 19:18:49 --><!-- Compression = gzip -->

