<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="http://feeds.feedburner.com/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>James Newton-King</title><link>http://james.newtonking.com/default.aspx</link><description /><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/jamesnewtonking" type="application/rss+xml" /><item><title>How I Got Started in Software Development</title><link>http://feeds.feedburner.com/~r/jamesnewtonking/~3/333125013/how-i-got-started-in-software-development.aspx</link><pubDate>Fri, 11 Jul 2008 23:53:02 GMT</pubDate><guid isPermaLink="false">bce7ef4a-1ab4-4a64-ae34-bb54d1362c7e:31256</guid><dc:creator>James Newton-King</dc:creator><slash:comments>1</slash:comments><comments>http://james.newtonking.com/archive/2008/07/12/how-i-got-started-in-software-development.aspx#comments</comments><description>&lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 5px 5px; border-right-width: 0px" title="We can&amp;rsquo;t bust heads like we used to, but we have our ways. One trick is to tell &amp;lsquo;em stories that don&amp;rsquo;t go anywhere. Like the time I caught the ferry over to Shelbyville. I needed a new heel for my shoe, so, I decided to go to Morganville, which is what they called Shelbyville in those days. So I tied an onion to my belt, which was the style at the time. Now, to take the ferry cost a nickel, and in those days, nickels had pictures of bumblebees on &amp;lsquo;em. &amp;quot;Give me five bees for a quarter,&amp;quot; you&amp;rsquo;d say. Now where were we? Oh yeah - the important thing was that I had an onion on my belt, which was the style at the time. They didn&amp;rsquo;t have white onions because of the war. The only thing you could get was those big yellow ones..." border="0" alt="We can&amp;rsquo;t bust heads like we used to, but we have our ways. One trick is to tell &amp;lsquo;em stories that don&amp;rsquo;t go anywhere. Like the time I caught the ferry over to Shelbyville. I needed a new heel for my shoe, so, I decided to go to Morganville, which is what they called Shelbyville in those days. So I tied an onion to my belt, which was the style at the time. Now, to take the ferry cost a nickel, and in those days, nickels had pictures of bumblebees on &amp;lsquo;em. &amp;quot;Give me five bees for a quarter,&amp;quot; you&amp;rsquo;d say. Now where were we? Oh yeah - the important thing was that I had an onion on my belt, which was the style at the time. They didn&amp;rsquo;t have white onions because of the war. The only thing you could get was those big yellow ones..." align="right" src="http://james.newtonking.com/images/HowIGotStartedinSoftwareDevelopment_A71C/very_old_computer.jpg" width="320" height="268"&gt; I have been &lt;a href="http://andrewpeters.net/2008/07/11/when-memes-attack/" target="_blank"&gt;memed&lt;/a&gt;.  &lt;p&gt;&lt;strong&gt;How old were you when you started programming? &lt;/strong&gt; &lt;p&gt;19.  &lt;p&gt;&lt;strong&gt;How did you get started in programming? &lt;/strong&gt; &lt;p&gt;Most of my experience with computers as a teenager was playing &lt;a href="http://en.wikipedia.org/wiki/Counter-strike" target="_blank"&gt;computer games&lt;/a&gt;. It wasn't until my second year of doing commerce at university that I did a &lt;a href="http://www.victoria.ac.nz/fca/Course%20Outlines/2003/Trimester%201/INFO/INFO215.pdf" target="_blank"&gt;programming paper&lt;/a&gt; and really got into it. Oddly I have never had the desire to write a computer game.  &lt;p&gt;&lt;strong&gt;What was your first language? &lt;/strong&gt; &lt;p&gt;Visual Basic 6.  &lt;p&gt;&lt;strong&gt;What was the first real program you wrote? &lt;/strong&gt; &lt;p&gt;Some lameo VB6/Access data entry form for university.  &lt;p&gt;&lt;strong&gt;What languages have you used since you started programming? &lt;/strong&gt; &lt;p&gt;Visual Basic, SQL, PL/SQL, JavaScript, C#, Python, Delphi.  &lt;p&gt;&lt;strong&gt;What was your first professional programming gig? &lt;/strong&gt; &lt;p&gt;Building a transaction management system for a small Internet startup.&amp;nbsp; &lt;p&gt;&lt;strong&gt;If you knew then what you know now, would you have started programming? &lt;/strong&gt; &lt;p&gt;Yes.  &lt;p&gt;&lt;strong&gt;If there is one thing you learned along the way that you would tell new developers, what would it be? &lt;/strong&gt; &lt;p&gt;The software development world is a huge place. Don't be afraid to spend a couple of years exploring and finding what you’re most passionate about.  &lt;p&gt;&lt;strong&gt;What’s the most fun you’ve ever had… programming? &lt;/strong&gt; &lt;p&gt;Solving challenging business and technology problems in a simple, maintainable way that hides all the complexity behind a easy to use interface. &lt;a href="http://james.newtonking.com/projects/json-net.aspx" target="_blank"&gt;Json.NET&lt;/a&gt; and and the &lt;a href="http://runtimepageoptimiser.com/" target="_blank"&gt;RuntimePageOptimizer&lt;/a&gt; are two projects that I have really enjoyed working on.  &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;strong&gt;I choose&lt;/strong&gt;  &lt;ul&gt; &lt;li&gt;&lt;a href="http://andrewtokeley.net/" target="_blank"&gt;Tokes&lt;/a&gt;  &lt;li&gt;&lt;a href="http://gavinb.net/" target="_blank"&gt;Gavin&lt;/a&gt;  &lt;li&gt;&lt;a href="http://flamer.co.nz/spag/" target="_blank"&gt;Brendan&lt;/a&gt;  &lt;li&gt;&lt;a href="http://notethat.blogspot.com/" target="_blank"&gt;Jo&lt;/a&gt;  &lt;li&gt;&lt;a href="http://chakkaradeep.wordpress.com/" target="_blank"&gt;Chaks&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://james.newtonking.com/aggbug.aspx?PostID=31256" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/jamesnewtonking/~4/333125013" height="1" width="1"/&gt;</description><category domain="http://james.newtonking.com/archive/tags/Meme/default.aspx">Meme</category><feedburner:origLink>http://james.newtonking.com/archive/2008/07/12/how-i-got-started-in-software-development.aspx</feedburner:origLink></item><item><title>Unit Test Code Coverage - What Is A Good Number?</title><link>http://feeds.feedburner.com/~r/jamesnewtonking/~3/311731043/unit-test-code-coverage-what-is-a-good-number.aspx</link><pubDate>Sat, 14 Jun 2008 09:21:56 GMT</pubDate><guid isPermaLink="false">bce7ef4a-1ab4-4a64-ae34-bb54d1362c7e:31232</guid><dc:creator>James Newton-King</dc:creator><slash:comments>4</slash:comments><comments>http://james.newtonking.com/archive/2008/06/14/unit-test-code-coverage-what-is-a-good-number.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blog.obishawn.com/2008/06/why-you-should-have-100-code-test.html" target="_blank"&gt;Shawn&lt;/a&gt; writes that you should have 100% test code coverage, &lt;a href="http://www.ytechie.com/2008/06/unit-tests-are-for-functionality-not-code.html" target="_blank"&gt;Jason&lt;/a&gt; agrees. &lt;a href="http://andrewtokeley.net/archive/2008/06/14/unit-testing-paranoia.aspx" target="_blank"&gt;Tokes&lt;/a&gt;, a &lt;a href="http://www.intergen.co.nz/" target="_blank"&gt;co-worker&lt;/a&gt; and the person who pointed these posts out to me, &lt;a href="http://andrewtokeley.net/archive/2008/06/14/unit-testing-paranoia.aspx" target="_blank"&gt;disagrees&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I also disagree.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Background&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I'm a strong believer in unit testing. I have used unit testing in almost every project I have been involved in for a couple of years now and each time I find I get more and more value from using them.&lt;/p&gt; &lt;p&gt;My experience with code coverage tools is more limited. I first started looking at &lt;a href="http://www.ncover.com/" target="_blank"&gt;NCover&lt;/a&gt; and code coverage after coming across an NCover article written its creator. The article used &lt;a href="http://james.newtonking.com/projects/json-net.aspx" target="_blank"&gt;Json.NET&lt;/a&gt;, my own open source project, as the example! (if that doesn't prompt you to look at something nothing will &lt;img src="http://james.newtonking.com/emoticons/emotion-2.gif" alt="Big Smile" /&gt;)&lt;/p&gt; &lt;p style="text-align: center"&gt;&amp;nbsp;&lt;a href="http://www.codeproject.com/KB/showcase/NCover_Basics.aspx" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="I'll keep it short and sweet -- Family. Religion. Friendship. These are the three demons you must slay if you wish to succeed in business." border="0" alt="I'll keep it short and sweet -- Family. Religion. Friendship. These are the three demons you must slay if you wish to succeed in business." src="http://james.newtonking.com/images/UnitTestCodeCoverageWhatIsAGoodNumber_1152D/jsoncodeproject.png" width="420" height="228"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Near the end of the development cycle of Json.NET 2.0 NCover was of huge help identifying which methods and sections of code didn't have any tests running over them. Without NCover many of the bugs I found from eventually unit testing that code would still be in Json.NET.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Coverage Percentage&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;While I think NCover is a great tool to identify what sections of code aren't being tested, the overall percentage mark that it gives is potentially dangerous.&lt;/p&gt; &lt;p&gt;Every software project has limited resources and spending your time chasing that number is a &lt;a href="http://en.wikipedia.org/wiki/Opportunity_cost" target="_blank"&gt;poor use of it&lt;/a&gt;. 100% coverage certainly doesn't mean that your program is bug free. Code that works with one input will break with another.&lt;/p&gt; &lt;p&gt;When it comes to unit testing I believe you are better off writing tests that focus on your use cases.&lt;/p&gt; &lt;p&gt;Obviously checking that the results are right is important but there is also making sure that your code behaves as expected when passed boundary values, performing inverse operations and cross checking results elsewhere in the application. These are all important things to test when creating robust code but aren't necessary to achieve 100% coverage.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;A Good Number&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;So what is a good number? If you have written tests the cover the possible uses of your application given the &lt;a href="http://en.wikipedia.org/wiki/Scarcity" target="_blank"&gt;time available&lt;/a&gt; (NCover is useful for double checking that you are testing everything you want to) and have then have verified that the results are correct, whatever number your code coverage is at that moment is in my opinion a good number.&lt;/p&gt; &lt;p&gt;Json.NET's was 85%&lt;/p&gt; &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="The results are in: for Sideshow Bob, one hundred percent; and for Joe Quimby, one percent. And we remind you there is a one percent margin of error." border="0" alt="The results are in: for Sideshow Bob, one hundred percent; and for Joe Quimby, one percent. And we remind you there is a one percent margin of error." src="http://james.newtonking.com/images/UnitTestCodeCoverageWhatIsAGoodNumber_1152D/jsoncoverage.png" width="276" height="125"&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fjames.newtonking.com%2farchive%2f2008%2f06%2f14%2funit-test-code-coverage-what-is-a-good-number.aspx"&gt;&lt;img border="0" alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fjames.newtonking.com%2farchive%2f2008%2f06%2f14%2funit-test-code-coverage-what-is-a-good-number.aspx"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://james.newtonking.com/aggbug.aspx?PostID=31232" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/jamesnewtonking/~4/311731043" height="1" width="1"/&gt;</description><category domain="http://james.newtonking.com/archive/tags/.NET/default.aspx">.NET</category><category domain="http://james.newtonking.com/archive/tags/Json.NET/default.aspx">Json.NET</category><feedburner:origLink>http://james.newtonking.com/archive/2008/06/14/unit-test-code-coverage-what-is-a-good-number.aspx</feedburner:origLink></item><item><title>What Is Coming In Json.NET 2.1</title><link>http://feeds.feedburner.com/~r/jamesnewtonking/~3/307294767/what-is-coming-in-json-net-2-1.aspx</link><pubDate>Sun, 08 Jun 2008 10:43:52 GMT</pubDate><guid isPermaLink="false">bce7ef4a-1ab4-4a64-ae34-bb54d1362c7e:31219</guid><dc:creator>James Newton-King</dc:creator><slash:comments>5</slash:comments><comments>http://james.newtonking.com/archive/2008/06/08/what-is-coming-in-json-net-2-1.aspx#comments</comments><description>&lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 5px 5px; border-right-width: 0px" title="Okay folks, show's over. Nothing to see here, show's... Oh my god! A horrible plane crash! Hey everybody, get a load of this flaming wreckage! Come on, crowd around, crowd around!" border="0" alt="Okay folks, show's over. Nothing to see here, show's... Oh my god! A horrible plane crash! Hey everybody, get a load of this flaming wreckage! Come on, crowd around, crowd around!" align="right" src="http://james.newtonking.com/images/WhatIsComingInJson.NET2.1_13FA6/ComingSooninStar.jpg" width="200" height="203"&gt; I have just checked in two new features coming soon in &lt;a href="http://james.newtonking.com/projects/json-net.aspx" target="_blank"&gt;Json.NET&lt;/a&gt; 2.1: Silverlight client support and improvements to the LINQ to JSON objects. If you are feeling cutting edge you can download the latest source code from &lt;a href="http://www.codeplex.com/Json/SourceControl/ListDownloadableCommits.aspx" target="_blank"&gt;CodePlex&lt;/a&gt;. Buyer beware: Code coverage of the changes is currently light.&lt;/p&gt; &lt;p&gt;To compile a Silverlight build of Json.NET you will need the latest &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/06/06/silverlight-2-beta2-released.aspx" target="_blank"&gt;Silverlight 2.0 Beta 2&lt;/a&gt; bits. There is also a unit test project in the solution for the Silverlight build. Read about how it works &lt;a href="http://weblogs.asp.net/nunitaddin/archive/2008/05/01/silverlight-nunit-projects.aspx" target="_blank"&gt;here&lt;/a&gt; (I &lt;em&gt;really&lt;/em&gt; wish this was around when I was working on &lt;a href="http://james.newtonking.com/archive/2008/03/06/silverlight-2-0-ooxml-textglow.aspx" target="_blank"&gt;TextGlow&lt;/a&gt;).&lt;/p&gt; &lt;p&gt;The LINQ to JSON changes are minor but useful. JObject now implements IDictionary and JArray now implements IList. For those that are new to Json.NET these common interfaces should make working with LINQ to JSON objects much more familiar.&lt;/p&gt; &lt;p&gt;If you have any suggestions of what you would like to see in Json.NET 2.1 &lt;a href="http://james.newtonking.com/archive/2008/06/08/what-is-coming-in-json-net-2-1.aspx#comments" target="_blank"&gt;let me know&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://james.newtonking.com/aggbug.aspx?PostID=31219" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/jamesnewtonking/~4/307294767" height="1" width="1"/&gt;</description><category domain="http://james.newtonking.com/archive/tags/.NET/default.aspx">.NET</category><category domain="http://james.newtonking.com/archive/tags/Json.NET/default.aspx">Json.NET</category><category domain="http://james.newtonking.com/archive/tags/Project/default.aspx">Project</category><feedburner:origLink>http://james.newtonking.com/archive/2008/06/08/what-is-coming-in-json-net-2-1.aspx</feedburner:origLink></item><item><title>I Don't Read Programming Books - What Am I Missing Out On?</title><link>http://feeds.feedburner.com/~r/jamesnewtonking/~3/302847913/i-don-t-read-programming-books-what-am-i-missing-out-on.aspx</link><pubDate>Mon, 02 Jun 2008 08:54:58 GMT</pubDate><guid isPermaLink="false">bce7ef4a-1ab4-4a64-ae34-bb54d1362c7e:31215</guid><dc:creator>James Newton-King</dc:creator><slash:comments>3</slash:comments><comments>http://james.newtonking.com/archive/2008/06/02/i-don-t-read-programming-books-what-am-i-missing-out-on.aspx#comments</comments><description>&lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 5px 5px; border-right-width: 0px" title="Not only am I not learning, I'm forgetting stuff I used to know." border="0" alt="Not only am I not learning, I'm forgetting stuff I used to know." align="right" src="http://james.newtonking.com/images/IDontReadProgrammingBooksWhatAmIMissingO_1261F/codecomplete.jpg" width="111" height="140"&gt; Of Jeff Atwood's list of 16 &lt;a href="http://www.codinghorror.com/blog/archives/000020.html" target="_blank"&gt;recommended books for developers&lt;/a&gt; I have read zero. Ditto this list of &lt;a href="http://yaneshtyagi.blogspot.com/2008/04/top-20-programming-books.html" target="_blank"&gt;Top 20 Programming Books&lt;/a&gt;. Searching though Amazon recommended programming book lists also yielded no hits.&lt;/p&gt; &lt;p&gt;When learning a new software development technology or idea I have always turned to the web. Blogs, articles, open source projects and so on, leaving the books I read largely to fiction.&lt;/p&gt; &lt;p&gt;What am I missing out on? Are blogs and other online content enough or will reading &lt;a href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/" target="_blank"&gt;The Pragmatic Programming&lt;/a&gt; (common to almost every list) make me a better software developer?&lt;/p&gt;&lt;img src="http://james.newtonking.com/aggbug.aspx?PostID=31215" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/jamesnewtonking/~4/302847913" height="1" width="1"/&gt;</description><category domain="http://james.newtonking.com/archive/tags/.NET/default.aspx">.NET</category><category domain="http://james.newtonking.com/archive/tags/Other/default.aspx">Other</category><feedburner:origLink>http://james.newtonking.com/archive/2008/06/02/i-don-t-read-programming-books-what-am-i-missing-out-on.aspx</feedburner:origLink></item><item><title>Important Json.NET 2.0 milestone</title><link>http://feeds.feedburner.com/~r/jamesnewtonking/~3/299514812/important-json-net-2-0-milestone.aspx</link><pubDate>Wed, 28 May 2008 02:43:52 GMT</pubDate><guid isPermaLink="false">bce7ef4a-1ab4-4a64-ae34-bb54d1362c7e:31213</guid><dc:creator>James Newton-King</dc:creator><slash:comments>1</slash:comments><comments>http://james.newtonking.com/archive/2008/05/28/important-json-net-2-0-milestone.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.codeplex.com/Json/Release/ProjectReleases.aspx" target="_blank"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="What two popular 'Simpsons' characters have died in the past year?  If you answered 'Bleeding Gums' Murphy and Dr. Marvin Monroe, you're wrong! They were never popular!" border="0" alt="What two popular 'Simpsons' characters have died in the past year?  If you answered 'Bleeding Gums' Murphy and Dr. Marvin Monroe, you're wrong! They were never popular!" src="http://james.newtonking.com/images/ImportantJson.NET2.0milestone_CF21/1337.png" width="363" height="85"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://james.newtonking.com/aggbug.aspx?PostID=31213" width="1" height="1"&gt;&lt;img src="http://feeds.feedburner.com/~r/jamesnewtonking/~4/299514812" height="1" width="1"/&gt;</description><category domain="http://james.newtonking.com/archive/tags/Json.NET/default.aspx">Json.NET</category><category domain="http://james.newtonking.com/archive/tags/Funny/default.aspx">Funny</category><feedburner:origLink>http://james.newtonking.com/archive/2008/05/28/important-json-net-2-0-milestone.aspx</feedburner:origLink></item></channel></rss>
