<?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>nolancaudill.com &#187; programming</title>
	<atom:link href="http://nolancaudill.com/index.php/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://nolancaudill.com</link>
	<description>thoughts and whatnot</description>
	<lastBuildDate>Wed, 18 Nov 2009 03:47:43 +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>Shipping Software</title>
		<link>http://nolancaudill.com/index.php/2009/07/15/shipping-software/</link>
		<comments>http://nolancaudill.com/index.php/2009/07/15/shipping-software/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 02:03:56 +0000</pubDate>
		<dc:creator>nolan</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://nolancaudill.com/?p=188</guid>
		<description><![CDATA[Shipping ordinary software on time is damned hard. Shipping great software in any time frame is extraordinary. Shipping great software on time is the rarest of earthly delights. &#8211; Jim McCarthy, Dynamics of Software Development I received my copy of Dynamics of Software Development by Jim McCarthy in the mail today, and this quote was [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Shipping ordinary software on time is damned hard. Shipping great software in any time frame is extraordinary. Shipping great software on time is the rarest of earthly delights.<br />
&#8211; Jim McCarthy, <span style="text-decoration: underline;">Dynamics of Software Development</span></p></blockquote>
<p>I received my copy of <span style="text-decoration: underline;">Dynamics of Software Development</span> by Jim McCarthy in the mail today, and this quote was just sitting there on the first page.</p>
<p>I&#8217;ve shipped great software on time and I&#8217;ve shipped ordinary software late. This inconsistency to a logic-driven mind is maddening. I think I&#8217;m fairly decent at writing code, but getting the whole process to a point of repeatable success from a business standpoint is what I&#8217;m in the dark on.</p>
<p>Though my computer science education was fantastic in teaching me about logic and theory, the nuts and bolts of software engineering is something I am lacking. There was a software engineering course offered but I opted for the programming language design course, instead. I don&#8217;t regret that decision&#8211;I love programming languages&#8211;but  in the world of waiting customers and deadlines that come much too quickly, I&#8217;m having to play catch up.</p>
<p>So for now, it&#8217;s time to hit the books.</p>
<p><a href="http://nolancaudill.com/wp-content/uploads/2009/07/dilbert.gif"><img class="aligncenter size-full wp-image-191" title="Dilbert" src="http://nolancaudill.com/wp-content/uploads/2009/07/dilbert.gif" alt="Dilbert" width="500" height="152" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://nolancaudill.com/index.php/2009/07/15/shipping-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SICP and Lulu.com</title>
		<link>http://nolancaudill.com/index.php/2009/03/13/sicp-and-lulucom/</link>
		<comments>http://nolancaudill.com/index.php/2009/03/13/sicp-and-lulucom/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 19:50:21 +0000</pubDate>
		<dc:creator>nolan</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[lulu]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[sicp]]></category>

		<guid isPermaLink="false">http://nolancaudill.com/?p=121</guid>
		<description><![CDATA[I&#8217;ve been wanting to read SICP for awhile, but with lots of other books on my to-read list, as well as the $50 dollar price tag for a used copy, I&#8217;ve put it on hold. The price, while relatively steep, usually doesn&#8217;t stop me from picking up a highly-desired book, but I held off mainly [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been wanting to read <a href="http://mitpress.mit.edu/sicp/">SICP</a> for awhile, but with lots of other books on my to-read list, as well as the $50 dollar price tag for a used copy, I&#8217;ve put it on hold. The price, while relatively steep, usually doesn&#8217;t stop me from picking up a highly-desired book, but I held off mainly as the book is freely available on their website, under the Creative Commons Attribution-Noncommercial license and this seems like a lot to pay for a free-as-in-beer book.</p>
<p>Since SICP runs close to 600 printed pages and approximately 40 HTML files , I&#8217;d rather not read it in my browser and printing it on the home printer is not really an option. I decided that using <a href="http://lulu.com">Lulu</a> might be a workable solution.</p>
<p>Lulu takes PDFs so step one was to convert the SICP website to one big PDF.</p>
<p>First, I used wget to mirror the site. Now that I had all the files, I wanted to clean them up a little. Every single page had the previous and next links at the bottom and this was obviously not needed when the pages are in physical form. I ran the following sed command to remove these lines:</p>
<p><code>sed -i "/\[Go to/d" *html</code></p>
<p>The next step was to convert the HTML to PDF. I used htmldoc for this particular task.  First, I put all the names of the HTML files in one text file, on one line, and in the correct order. I called this file &#8220;all_files.txt&#8221;. The htmldoc command I used to convert to PDF is the following:</p>
<p><code>htmldoc -f sicp.pdf --webpage --left .75in --right .75in `cat all_files.txt`</code></p>
<p>I then uploaded this file up to Lulu and designed my (very) simple cover. I made it clear on the back  cover text that I was printing this book under the rights granted by the aforementioned license and would receive no profit from this book with a link back to the original source. I&#8217;m not a lawyer so I hope that covers all bases.</p>
<p>Lulu has a convenient feature that will let you do a private printing. I could probably make  this book public, setting my profit to zero, and even though that would be covered under the license, it still feels strange to do.</p>
<p>I am very curious how this book will turn out. The Lulu process was actually fun and if this turns out well, I could see myself using the service again. Once I get the book, I&#8217;ll post my reviews of the service and possibly some pictures of the final product. Nonetheless, I&#8217;m excited to get a print version of this book for a much-reduced price.</p>
<p><strong>Edited to add:<br />
</strong>Here&#8217;s the download for the PDF: <a href="/files/sicp.pdf">sicp.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://nolancaudill.com/index.php/2009/03/13/sicp-and-lulucom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Something new, Something Clojure</title>
		<link>http://nolancaudill.com/index.php/2008/12/30/something-new-something-clojure/</link>
		<comments>http://nolancaudill.com/index.php/2008/12/30/something-new-something-clojure/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 02:50:58 +0000</pubDate>
		<dc:creator>nolan</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://nolancaudill.com/?p=31</guid>
		<description><![CDATA[I&#8217;ve been shopping for a new programming language to learn the past few months and I&#8217;ve decided to jump on the functional wagon and expand my mind a little. For my day job, I&#8217;m a PHP and Javascript developer, enjoying the latter more the former, and for personal scripts and side projects, I&#8217;ve been a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been shopping for a new programming language to learn the past few months and I&#8217;ve decided to jump on the functional wagon and expand my mind a little.</p>
<p>For my day job, I&#8217;m a PHP and Javascript developer, enjoying the latter more the former, and for personal scripts and side projects, I&#8217;ve been a Python guy for years.</p>
<p>I wanted something that was a departure from these more imperative languages which obviously lends itself to the functional languages. At the same time, I wanted something that wasn&#8217;t purely academic, but I could build real-world software with it that other people could easily use.</p>
<p>I&#8217;ve been fascinated with Lisp and its S-expressions and the idea of <a href="http://en.wikipedia.org/wiki/Homoiconicity">code being data</a> and vice versa. At the same time the speedy, static-typed languages like OCaml and Haskell were very intriguing.</p>
<p>After playing with OCaml for a week or two and also working through the first few chapters of <a title="Real World Haskell" href="http://book.realworldhaskell.org/">Real World Haskell</a> and watching the entertaining Simon Peyton-Jones,  I enjoyed them, but I wasn&#8217;t infatuated with them. No magic spark, I guess you could say. I think it comes down to me being more inclined to the dynamically-typed languages which seems to cut down one more barrier between me and the implementation of my code.</p>
<p>So ruling out the OCaml and Haskell brand of typed, functional languages, I found myself working my way back to Lisp. Surveying the Lisp scene, I found myself confronted with quite a few choices of Lisp implementations. I decided to go with Clojure, as from my readings, it seems to be a nice Lisp, even coming from the older Lisp guys and you get the almost endless number of  libraries of Java, as well as  the speedy JVM that runs on all the major platforms. I&#8217;m sold.</p>
<p>I&#8217;ve played with <a href="http://www.sbcl.org/">SBCL</a> going through bits and pieces of <a title="Practical Common Lisp" href="http://gigamonkeys.com/book/">Practical Common Lisp</a> and I really enjoy the expressiveness and the speed of going from the idea of what you want to do to actually seeing it run. Stuart Holloway (of nearby Chapel Hill) has <a href="http://blog.thinkrelevance.com/2008/9/16/pcl-clojure">written</a> a series of blog posts porting pieces of the PCL code to Clojure which should serve as a nice introductions as well as the <a href="http://clojure.blip.tv/">screencasts</a>.</p>
<p>I&#8217;ll post updates on new discoveries I make, and any software I decide to work on.</p>
]]></content:encoded>
			<wfw:commentRss>http://nolancaudill.com/index.php/2008/12/30/something-new-something-clojure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django: My Framework of Choice</title>
		<link>http://nolancaudill.com/index.php/2007/10/10/django-my-framework-of-choice/</link>
		<comments>http://nolancaudill.com/index.php/2007/10/10/django-my-framework-of-choice/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 00:17:43 +0000</pubDate>
		<dc:creator>nolan</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://nolancaudill.com/2007/10/10/django-my-framework-of-choice/</guid>
		<description><![CDATA[I am a web developer by trade, and like any skilled worker, I am always looking for the best tools for the job. With my current job, I write PHP on top of a custom in-house CMS. Off the clock though, I work with Python and Django. First off, I like the concept of a [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><a href="http://nolancaudill.com/wp-content/uploads/2007/10/django_small.png" title="Django logo"><img src="http://nolancaudill.com/wp-content/uploads/2007/10/django_small.png" alt="Django logo" /></a></p>
<p>I am a web developer by trade, and like any skilled worker, I am always looking for the best tools for the job. With my current job, I write PHP on top of a custom in-house CMS. Off the clock though, I work with Python and <a href="http://djangoproject.com" title="django">Django</a>.</p>
<p>First off, I like the concept of a framework. With web development, 95% of the stuff you do is stuff you&#8217;ve done before and unavoidably will do again. A well-written framework alleviates a lot of this. Most of the tasks can be broken down to 2 steps: 1) Grab objects from database. 2) Show them. The visual design of a website is always the fun part to do after you get all the heavy lifting done. There are also things like form handling, user authentication, writing XML feeds, and caching that gets done over and over that frameworks are nice enough to say, &#8220;hey, I&#8217;ll take care of this boring, repetitive stuff and let you get on with creating something cool.&#8221;</p>
<p>As far as specific frameworks go, I&#8217;ve read quite a bit about Ruby on Rails and wrote some simple apps to test it out. One reason I didn&#8217;t grasp on to this one was that I didn&#8217;t know Ruby. Another reason is that deploying it seemed tricky and you trade speed of deployment for runtime speed. This is true for any interpreted language, but Ruby on Rails takes it to the extreme in both directions. Also it seems <em>too</em> opinionated at times stepping in the way of what I really wanted to do.</p>
<p>Another one I&#8217;ve gave more than a passing glance to is CakePHP. While there are several good ideas in there, and it does increase coding efficiency, it has one big, glaring black mark against and that is it is writting in PHP. PHP is a good language in the regards that it fairly powerful, runs everywhere, runs relatively fast, and everyone knows it, but it is an unattractive and inconsistent language. This <a href="http://toykeeper.net/soapbox/php_problems/" title="php">link</a> sums it up quite nicely.</p>
<p>Now onto my favorite: Django. When I first stumbled on this one earlier this year, I amazed by the simplicity of the framework and how it just made sense, from organizational and logical standpoints. There is a very strict model/view/controller demarcation (except Django calls the controller a view, and the view a template) which leaves little debate of what piece of code goes where, which in my opinion is a great thing. It also has lots of super handy things that are built in or are easily added, such as an auto-admin interface, unit and regression testing, modular apps, an easy-to-use templating language, great form handling, and user authentication.</p>
<p>Far and away my favorite features are the generic views. In my opinion, most of web development is grab an item or a list of items from the database and show them on a page, possibly paginating if there are a lot of them or maybe dividing them up by their publication dates. With generic views, Django takes almost all of this repetitiveness and abstracts it out so you can get on with making it look pretty or adding some cool new feature. Django brings back a lot of the joy of web development that sometimes gets lost in the grind or when writing that same hunk of logic for the hundredth time.</p>
<p>Not to be one to follow hype, I didn&#8217;t fully buy into Django until I built a full site with it. Meghan and I built a soon to be launched site for our upcoming wedding. We built it from the ground up (with Django, of course) in the span of about 3 hours. This time included everything from registering the domain to designing the site. It even has a working blog with a commenting system, and a full-featured admin tailored to my exact needs. Django made the easy things <em>really </em>easy and the hard or repetitive things actually fun to work with.</p>
]]></content:encoded>
			<wfw:commentRss>http://nolancaudill.com/index.php/2007/10/10/django-my-framework-of-choice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->