<?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>Infovark Underground &#187; New</title>
	<atom:link href="http://underground.infovark.com/category/new/feed/" rel="self" type="application/rss+xml" />
	<link>http://underground.infovark.com</link>
	<description>The Infovark technology blog</description>
	<lastBuildDate>Tue, 06 Jul 2010 13:42:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Review: Code</title>
		<link>http://underground.infovark.com/2010/03/09/review-code/</link>
		<comments>http://underground.infovark.com/2010/03/09/review-code/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 01:35:11 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[New]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[computer science]]></category>
		<category><![CDATA[electrical engineering]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=563</guid>
		<description><![CDATA[Code: The Hidden Language of Computer Hardware and Software by Charles Petzold is the Computer Science 101 course I'd wish I'd had in college.


Related posts:<ol><li><a href='http://underground.infovark.com/2008/11/07/review-working-effectively-with-legacy-code/' rel='bookmark' title='Permanent Link: Review: Working Effectively with Legacy Code'>Review: Working Effectively with Legacy Code</a></li>
<li><a href='http://underground.infovark.com/2009/05/11/review-framework-design-guidelines/' rel='bookmark' title='Permanent Link: Review: Framework Design Guidelines'>Review: Framework Design Guidelines</a></li>
<li><a href='http://underground.infovark.com/2008/11/05/review-the-pragmatic-programmer/' rel='bookmark' title='Permanent Link: Review: The Pragmatic Programmer'>Review: The Pragmatic Programmer</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Sometimes it&#8217;s nice to go back to your roots. And sometimes, it&#8217;s nice to go back to the roots you never had.</p>
<p>As a computer science dropout, I&#8217;d never gotten the fundamentals presented to me in a coherent fashion. I&#8217;d picked up many of the connections between mathematics, logic, and electrical engineering from reading online, but it&#8217;s no substitute for having the progress of computer science laid out in a systematic way. <a href="http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319%3FSubscriptionId%3DAKIAIU3RPTD7NQ47YK4A%26tag%3Dinfovark-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0735611319">Code: The Hidden Language of Computer Hardware and Software</a> by Charles Petzold is the Computer Science 101 course I&#8217;d wish I&#8217;d had in college.</p>
<div class="wp-caption alignleft" style="width: 150px"><a href="http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319%3FSubscriptionId%3DAKIAIU3RPTD7NQ47YK4A%26tag%3Dinfovark-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0735611319"><img src="http://ecx.images-amazon.com/images/I/31VTerGLfML._SL160_.jpg" alt="" /></a><p class="wp-caption-text">Code: The Hidden Language of Computer Hardware and Software</p></div>
<p>Code is a great trip through the fundamentals of computing. Starting from first principles the author takes you through the basic computer theory to the point where you could create your own computer. It&#8217;s a journey that begins with a simple light switch and ends with advent of the Internet.</p>
<p>Morse Code, combinatorial theory, the telegraph, logic circuits &#8212; are all parts of the story of the computer. It&#8217;s a story told without analogies, but in a straightforward building-block fashion. It describes the insights and intuitive leaps that lie behind the most important tool of our age. </p>
<p>At times, it can seem like computers and high-tech gadgets are magic. What reading a book like Code reminds us is that there&#8217;s no wizardry involved, just careful engineering. </p>
<h4>A few things I learned</h4>
<p>We were close to <a href="http://en.wikipedia.org/wiki/Steampunk">steampunk</a> era computing. All the insights required to make simple calculators and computers were present in the late 19th century. Most of the equipment had been invented for the telegraph. But it took several decades more before the pieces came together, in a 1938 master&#8217;s thesis written by <a href="http://en.wikipedia.org/wiki/Claude_Shannon">Claude Shannon</a> while at MIT. (Shannon also coined the name used for the basic unit of digital information, the <em>binary digit</em>, or bit.)</p>
<p>The idea of separating code from data &#8212; something that every programmer gets beaten into them at the beginning &#8212; goes all the way back to the origin of computing. Even though it&#8217;s all binary numbers and logic gates at the hardware level, some of those numbers represent instructions and some represent data. Many of today&#8217;s higher-level languages are so far removed from the basic circuitry that you can (sometimes) treat them as one and the same.</p>
<p>It turns out the longstanding distinction between positive and negative numbers in most programming languages derives from electrical engineering. The circuitry needed to subtract two numbers can be greatly simplified if you accept a few constraints on the size of the number and apply some tricks for how they&#8217;re encoded. I&#8217;d assumed that the reason had to do with storage space alone, but it simplifies the electrical circuitry required as well.</p>
<p>I had no idea that <a href="http://en.wikipedia.org/wiki/Assembly_language">assembly language</a> was essentially machine language with human annotations and symbols. I thought that they were fundamentally different, somehow. </p>
<p>And speaking of assembly language, I now have an vague idea of what the disassembly code Visual Studio shows me during debugging means. By the time you&#8217;re finished with Code, you&#8217;ll have a basic understanding of it as well, and for how tedious it was to program. I&#8217;m glad to be working with today&#8217;s much more expressive programming languages.</p>
<h4>Parting thoughts</h4>
<p>Code was a great read, and ought to sit on every professional programmer&#8217;s bookshelf. Part Wired, part Make, part junior high science class, it&#8217;ll teach you the inner workings of the complicated and ubiquitous devices that run everything these days.</p>
<p>My only criticism of the book was that it wrapped up too quickly. The graphical user interface gets only a chapter, and events since the rise of the Internet barely half of one. I&#8217;d like to see another volume (or two!) covering in depth everything that&#8217;s happened since the Apple Macintosh. </p>
<p>But that&#8217;s really more of a <em>compliment</em> than a criticism. </p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2008/11/07/review-working-effectively-with-legacy-code/' rel='bookmark' title='Permanent Link: Review: Working Effectively with Legacy Code'>Review: Working Effectively with Legacy Code</a></li>
<li><a href='http://underground.infovark.com/2009/05/11/review-framework-design-guidelines/' rel='bookmark' title='Permanent Link: Review: Framework Design Guidelines'>Review: Framework Design Guidelines</a></li>
<li><a href='http://underground.infovark.com/2008/11/05/review-the-pragmatic-programmer/' rel='bookmark' title='Permanent Link: Review: The Pragmatic Programmer'>Review: The Pragmatic Programmer</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2010/03/09/review-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review: Framework Design Guidelines</title>
		<link>http://underground.infovark.com/2009/05/11/review-framework-design-guidelines/</link>
		<comments>http://underground.infovark.com/2009/05/11/review-framework-design-guidelines/#comments</comments>
		<pubDate>Mon, 11 May 2009 03:38:11 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[New]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=335</guid>
		<description><![CDATA[I&#8217;m almost embarrassed to admit that I really enjoyed Framework Design Guidelines by Krzysztof Cwalina and Brad Abrams. I mean, it&#8217;s a book about coding standards. Maybe I ought to get out more&#8230; but before I leave the glare of my monitor behind, I&#8217;ll type up my review. Code is literature, not language Computing languages, [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2008/11/05/review-the-pragmatic-programmer/' rel='bookmark' title='Permanent Link: Review: The Pragmatic Programmer'>Review: The Pragmatic Programmer</a></li>
<li><a href='http://underground.infovark.com/2010/05/25/review-domain-driven-design/' rel='bookmark' title='Permanent Link: Review: Domain-Driven Design'>Review: Domain-Driven Design</a></li>
<li><a href='http://underground.infovark.com/2008/11/07/review-working-effectively-with-legacy-code/' rel='bookmark' title='Permanent Link: Review: Working Effectively with Legacy Code'>Review: Working Effectively with Legacy Code</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 150px"><a href="http://www.amazon.com/Framework-Design-Guidelines-Conventions-Libraries/dp/0321545613%3FSubscriptionId%3DAKIAIU3RPTD7NQ47YK4A%26tag%3Dinfovark-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0321545613"><img src="http://ecx.images-amazon.com/images/I/5138dM4PHnL._SL160_.jpg" alt="" /></a><p class="wp-caption-text">Framework Design Guidelines</p></div>
<p>I&#8217;m almost embarrassed to admit that I really enjoyed <a href="http://www.amazon.com/Framework-Design-Guidelines-Conventions-Libraries/dp/0321545613%3FSubscriptionId%3DAKIAIU3RPTD7NQ47YK4A%26tag%3Dinfovark-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0321545613">Framework Design Guidelines</a> by Krzysztof Cwalina and Brad Abrams. I mean, it&#8217;s a book about <em>coding standards</em>.</p>
<p>Maybe I ought to get out more&#8230; but before I leave the glare of my monitor behind, I&#8217;ll type up my review.</p>
<h4>Code is literature, not language</h4>
<p>Computing languages, just like human languages, have grammar and syntax. There are correct ways to form sentences and paragraphs, with well-defined rules (and exceptions). Just like word processors can check spelling and verify basic sentence structure, most <abbr title="Integrated Development Environment">IDE</abbr>s today can ensure your code will compile and run.</p>
<p>That doesn&#8217;t mean that your story or program is an easy or enjoyable read, though. Most newspapers have accumulated extensive guidelines for matters of style and substance, and most software companies have their own guides as well. If you&#8217;re writing as part of a team project, or writing programs intended to be used by other programmers, it&#8217;s important to make your code consistent, clear, and direct.</p>
<p>Just like many journalists keep a copy of <a href="http://www.apstylebook.com/">The Associated Press Stylebook</a> or the <a href="http://en.wikipedia.org/wiki/The_New_York_Times_Manual_of_Style_and_Usage">New York Times Manual of Style and Usage</a> handy &#8212; even if they don&#8217;t actually work for the New York Times or the AP &#8212; lots of programmers keep a copy of Microsoft&#8217;s Framework Design Guidelines as reference.</p>
<p>Or they <em>should</em>. That&#8217;s probably my roots as a <a href="http://www.infovark.com/2007/12/14/confessions-of-a-maintenance-programmer/">maintenance programmer</a> showing.</p>
<h4>Know your genre</h4>
<p>Ideally, you&#8217;d want any code you write for other Windows programmers&#8217; use to look as if it came from Microsoft itself. That is, you want it to feel like a natural extension of the .NET framework and not some third-party bolt-on with odd stylistic touches. You&#8217;d also like your code to use the full power and expressiveness of .NET, and not appear like some watered-down Java-esque port. (Far too many open source projects retain awkward Java-isms after being converted to .NET, in my opinion. <a href="http://www.nunit.org/">NUnit</a> is a notable exception.)</p>
<p>This helps your fellow programmers gain a better understanding of your code in less time. And it can also make <em>your</em> programming tasks easier, too. Just like design patterns can help you lay out your application architecture, programming guidelines can help you structure your code at the class or method level.</p>
<h4>About the book</h4>
<p>The Framework Design Guidelines covers a lot of ground in its 400 pages. It describes what conventions Microsoft uses when designing types, methods, and exceptions. It also describes the naming and design patterns that Microsoft uses in their public <abbr title="Application Programming Interface">API</abbr>s. The topics are grouped by category and heavily cross referenced, making it easy to find your way around. The rationale of each guideline is explained, and the authors indicate the strength of each recommendation by marking it with the terms <strong>Do</strong>, <strong>Consider</strong>, <strong>Avoid</strong> or <strong>Do Not</strong>.</p>
<p>But the best part of the book is the stories and comments given by members of the Microsoft team. These are sprinkled throughout the book and give insight into why the guideline exists. Some of these discuss lessons Microsoft learned the hard way, places in the .NET Framework where the rules are violated, and how real-world programmers feel about certain guidelines. You can get a flavor of these by checking out the <a href="http://blogs.msdn.com/brada/archive/tags/Framework+Design+Guidelines/default.aspx">Framework Design Guidelines</a> section of <a href="http://blogs.msdn.com/brada/">Brad Abrams</a>&#8216; blog.</p>
<p>If you find his posts interesting or helpful, you&#8217;ll feel the same way about the book. Highly recommended.</p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2008/11/05/review-the-pragmatic-programmer/' rel='bookmark' title='Permanent Link: Review: The Pragmatic Programmer'>Review: The Pragmatic Programmer</a></li>
<li><a href='http://underground.infovark.com/2010/05/25/review-domain-driven-design/' rel='bookmark' title='Permanent Link: Review: Domain-Driven Design'>Review: Domain-Driven Design</a></li>
<li><a href='http://underground.infovark.com/2008/11/07/review-working-effectively-with-legacy-code/' rel='bookmark' title='Permanent Link: Review: Working Effectively with Legacy Code'>Review: Working Effectively with Legacy Code</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2009/05/11/review-framework-design-guidelines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Review: Working Effectively with Legacy Code</title>
		<link>http://underground.infovark.com/2008/11/07/review-working-effectively-with-legacy-code/</link>
		<comments>http://underground.infovark.com/2008/11/07/review-working-effectively-with-legacy-code/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 17:29:00 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[New]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=147</guid>
		<description><![CDATA[I know what you&#8217;re thinking: &#8220;Infovark&#8217;s been around for barely a year! Surely you guys aren&#8217;t having to deal with legacy code already?&#8221; If you accept Michael Feather&#8217;s expansive definition of legacy code &#8212; code without unit tests &#8212; then yes, despite our best efforts, we have lots of legacy code. But even if you [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2010/03/09/review-code/' rel='bookmark' title='Permanent Link: Review: Code'>Review: Code</a></li>
<li><a href='http://underground.infovark.com/2008/11/05/review-the-pragmatic-programmer/' rel='bookmark' title='Permanent Link: Review: The Pragmatic Programmer'>Review: The Pragmatic Programmer</a></li>
<li><a href='http://underground.infovark.com/2008/04/10/reviewrestful-webservices/' rel='bookmark' title='Permanent Link: Review: Restful Web Services'>Review: Restful Web Services</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 150px"><a href="http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052%3FSubscriptionId%3DAKIAIU3RPTD7NQ47YK4A%26tag%3Dinfovark-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0131177052"><img src="http://ecx.images-amazon.com/images/I/51RCXGPXQ8L._SL160_.jpg" alt="" /></a><p class="wp-caption-text">Working Effectively with Legacy Code</p></div>
<p>I know what you&#8217;re thinking: &#8220;Infovark&#8217;s been around for barely a year! Surely you guys aren&#8217;t having to deal with legacy code <em>already?</em>&#8221; If you accept Michael Feather&#8217;s expansive definition of legacy code &#8212; code without unit tests &#8212; then yes, despite our best efforts, we have lots of legacy code.</p>
<p>But even if you don&#8217;t buy that definition, and even if you&#8217;re working on a completely <a href="http://en.wikipedia.org/wiki/Greenfield_project">greenfield</a> application, chances are you&#8217;ll have a lot of code in your project that isn&#8217;t fully understood. Or perhaps isn&#8217;t fully understood <em>by all members of the team</em>. And it&#8217;s in dealing with this issue that <a href="http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052%3FSubscriptionId%3DAKIAIU3RPTD7NQ47YK4A%26tag%3Dinfovark-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0131177052">Working Effectively with Legacy Code</a> really shines.</p>
<p>What happens when you need to change code that isn&#8217;t fully understood? Are you making it better or worse? The author says that you can&#8217;t know the answer to this question without tests in place. Having documentation is nice, but unit testing provides measurable output.</p>
<h4>The brass tacks</h4>
<p>Unlike many programming books, this one is organized in a Q&amp;A format. Once past the introduction &#8212; which you can skip if you already understand the importance of refactoring and test-driven development &#8212; you&#8217;ll find the chapters organized by topic. Here&#8217;s a sample of a few chapter headings:</p>
<ul>
<li>It Takes Forever to Make a Change</li>
<li>I Can&#8217;t Run This Method in a Test Harness</li>
<li>Dependencies on Libraries are Killing Me</li>
<li>I Don&#8217;t Understand the Code Well Enough to Change It</li>
<li>This Class is Too Big and I Don&#8217;t Want It to Get Any Bigger</li>
</ul>
<p>This is a great way to organize a highly technical book. Each chapter has a specific purpose. The author then spends the chapter discussing the ways you can get out of the jam and weighing the pros and cons of each.</p>
<p>You&#8217;ll find in-depth examples of each of the techniques used, but be prepared to shift between languages. To get the most out of the book, you&#8217;ll need to be comfortable scanning unfamiliar syntax.</p>
<p>As a bonus, the book contains an index of common refactoring patterns. Certain patterns make appearances in more than one chapter, and the index provides another place for the author to work through some real-world examples.</p>
<p>All in all, this is a practical field manual for a set of problems that occur too often out in the wild. I highly recommend it.</p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2010/03/09/review-code/' rel='bookmark' title='Permanent Link: Review: Code'>Review: Code</a></li>
<li><a href='http://underground.infovark.com/2008/11/05/review-the-pragmatic-programmer/' rel='bookmark' title='Permanent Link: Review: The Pragmatic Programmer'>Review: The Pragmatic Programmer</a></li>
<li><a href='http://underground.infovark.com/2008/04/10/reviewrestful-webservices/' rel='bookmark' title='Permanent Link: Review: Restful Web Services'>Review: Restful Web Services</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2008/11/07/review-working-effectively-with-legacy-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Review: The Pragmatic Programmer</title>
		<link>http://underground.infovark.com/2008/11/05/review-the-pragmatic-programmer/</link>
		<comments>http://underground.infovark.com/2008/11/05/review-the-pragmatic-programmer/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 15:46:54 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[New]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=145</guid>
		<description><![CDATA[You&#8217;ll find The Pragmatic Programmer: From Journeyman to Master on many software developers&#8217; must-read books lists. After reading it from cover to cover, I&#8217;ve added it to my essential reading list as well. It&#8217;s not a book for beginners, though. The subtitle of the book, &#8220;From Journeyman to Master&#8221; sums it up. The Pragmatic Programmer [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2010/03/09/review-code/' rel='bookmark' title='Permanent Link: Review: Code'>Review: Code</a></li>
<li><a href='http://underground.infovark.com/2009/05/11/review-framework-design-guidelines/' rel='bookmark' title='Permanent Link: Review: Framework Design Guidelines'>Review: Framework Design Guidelines</a></li>
<li><a href='http://underground.infovark.com/2008/11/07/review-working-effectively-with-legacy-code/' rel='bookmark' title='Permanent Link: Review: Working Effectively with Legacy Code'>Review: Working Effectively with Legacy Code</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignleft" style="width: 150px"><a href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X%3FSubscriptionId%3DAKIAIU3RPTD7NQ47YK4A%26tag%3Dinfovark-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D020161622X"><img src="http://ecx.images-amazon.com/images/I/41HXiIojloL._SL160_.jpg" alt="" /></a><p class="wp-caption-text">The Pragmatic Programmer: From Journeyman to Master</p></div>
<p>You&#8217;ll find <a href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X%3FSubscriptionId%3DAKIAIU3RPTD7NQ47YK4A%26tag%3Dinfovark-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D020161622X">The Pragmatic Programmer: From Journeyman to Master</a> on many software developers&#8217; must-read books lists. After reading it from cover to cover, I&#8217;ve added it to my essential reading list as well. </p>
<p>It&#8217;s not a book for beginners, though. The subtitle of the book, &#8220;From Journeyman to Master&#8221; sums it up. The Pragmatic Programmer describes the skills, attributes, and attitudes that a mid-level programmer needs to become a professional developer. </p>
<p>Its purpose is to distill the wisdom gathered from a career in programming into about 70 tips. Each of these tips is explained and illustrated with examples that most programmers will find familiar. </p>
<p>The tips are not necessarily about writing code. The authors, Andrew Hunt and David Thomas, take a holistic approach to the craft of programming. They cover topics like communicating effectively, planning and scheduling, and building teams.</p>
<p>I&#8217;d read somewhere that you can judge the quality of a craftsman by the quality of his tools. The Pragmatic Programmer is a book I&#8217;d expect to see on any professional developer&#8217;s shelf. </p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2010/03/09/review-code/' rel='bookmark' title='Permanent Link: Review: Code'>Review: Code</a></li>
<li><a href='http://underground.infovark.com/2009/05/11/review-framework-design-guidelines/' rel='bookmark' title='Permanent Link: Review: Framework Design Guidelines'>Review: Framework Design Guidelines</a></li>
<li><a href='http://underground.infovark.com/2008/11/07/review-working-effectively-with-legacy-code/' rel='bookmark' title='Permanent Link: Review: Working Effectively with Legacy Code'>Review: Working Effectively with Legacy Code</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2008/11/05/review-the-pragmatic-programmer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Review: Restful Web Services</title>
		<link>http://underground.infovark.com/2008/04/10/reviewrestful-webservices/</link>
		<comments>http://underground.infovark.com/2008/04/10/reviewrestful-webservices/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 14:38:46 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[New]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://underground.infovark.com/?p=13</guid>
		<description><![CDATA[As we mentioned recently, we&#8217;re building the infovark server using the REST pattern. Since REST is more a loose set of guidelines than a strict series of rules, it&#8217;s hard for implementers to know where to begin. OK, you could go to the source, chapter 5 of Roy Fielding&#8217;s dissertation. Or you could check out [...]


Related posts:<ol><li><a href='http://underground.infovark.com/2009/02/05/put-the-web-back-in-web-services/' rel='bookmark' title='Permanent Link: Put the &#8220;Web&#8221; Back in Web Services'>Put the &#8220;Web&#8221; Back in Web Services</a></li>
<li><a href='http://underground.infovark.com/2008/11/05/review-the-pragmatic-programmer/' rel='bookmark' title='Permanent Link: Review: The Pragmatic Programmer'>Review: The Pragmatic Programmer</a></li>
<li><a href='http://underground.infovark.com/2008/11/07/review-working-effectively-with-legacy-code/' rel='bookmark' title='Permanent Link: Review: Working Effectively with Legacy Code'>Review: Working Effectively with Legacy Code</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>As we <a href="http://underground.infovark.com/2008/03/25/rest-for-the-weary/">mentioned recently</a>, we&#8217;re building the infovark server using the <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">REST</a> pattern. Since REST is more a loose set of guidelines than a strict series of rules, it&#8217;s hard for implementers to know where to begin.</p>
<p>OK, you <em>could </em>go to the source, <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm">chapter 5 of Roy Fielding&#8217;s dissertation</a>. Or you could check out the somewhat academic discussions on the <a href="http://rest.blueoxen.net/cgi-bin/wiki.pl">REST wiki</a>, though there hasn&#8217;t been much activity lately. You can occasionally find good advice from the odd blog post, like the <a href="http://wiki.opengarden.org/REST/REST_for_the_Rest_of_Us">REST for the Rest of Us</a> article at Open Garden. But ironically, there&#8217;s not a whole lot of material about implementing REST web services available <em>on the web</em> yet. (If you know of good links, leave a comment.)</p>
<div class="wp-caption alignright " style="width: 150px"><a href="http://www.amazon.com/Restful-Web-Services-Leonard-Richardson/dp/0596529260%3FSubscriptionId%3DAKIAIU3RPTD7NQ47YK4A%26tag%3Dinfovark-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0596529260"><img src="http://ecx.images-amazon.com/images/I/51gXYYHnDsL._SL160_.jpg" alt="" /></a><p class="wp-caption-text">RESTful Web Services</p></div>
<p>For the practical, gritty details of how it&#8217;s actually done, you&#8217;ll need the <a href="http://www.amazon.com/Restful-Web-Services-Leonard-Richardson/dp/0596529260%3FSubscriptionId%3DAKIAIU3RPTD7NQ47YK4A%26tag%3Dinfovark-20%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0596529260">Restful Web Services</a> book by Sam Ruby and Leonard Richardson. They describe the principles that inform REST-ian (RESTafarian?) design in detail, taking you step-by-step through two different sample applications. If you&#8217;re a Ruby programmer using Rails, you&#8217;ll find the book especially valuable, since that&#8217;s the language and framework in which most of the examples are done. For those of us using different technology, it&#8217;s the thought process behind the examples that is most illuminating.</p>
<p>This is because the key challenge of the REST paradigm is the fact that it can&#8217;t really be implemented on today&#8217;s web without some workarounds. REST will come into its own with <a href="http://en.wikipedia.org/wiki/HTML_5">HTML 5</a>. The book steers an interesting course between how REST web services <em>might </em>be done in HTML 5 with how they <em>must </em>be done today. I think the authors get the balance right, but at times it can make for a frustrating read for someone wanting practical advice about building a REST service <em>right now</em>.</p>
<p>But that&#8217;s less a criticism of the book than of the openness of the REST concept itself. The occasional what-if digression the authors make is a small price to pay for the amount of sound guidance you get. The appendixes alone, which discuss things like which HTTP status codes and headers are worth implementing and which are worth forgetting, will save you far more time than you&#8217;ll lose in reading how great things will be when HTML forms <em>finally </em>support the PUT method.</p>
<p>Until that day comes, keep this book handy.</p>


<p>Related posts:<ol><li><a href='http://underground.infovark.com/2009/02/05/put-the-web-back-in-web-services/' rel='bookmark' title='Permanent Link: Put the &#8220;Web&#8221; Back in Web Services'>Put the &#8220;Web&#8221; Back in Web Services</a></li>
<li><a href='http://underground.infovark.com/2008/11/05/review-the-pragmatic-programmer/' rel='bookmark' title='Permanent Link: Review: The Pragmatic Programmer'>Review: The Pragmatic Programmer</a></li>
<li><a href='http://underground.infovark.com/2008/11/07/review-working-effectively-with-legacy-code/' rel='bookmark' title='Permanent Link: Review: Working Effectively with Legacy Code'>Review: Working Effectively with Legacy Code</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://underground.infovark.com/2008/04/10/reviewrestful-webservices/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
