<?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>Programmer&#039;s Paradox &#187; Programming</title>
	<atom:link href="http://www.programmersparadox.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.programmersparadox.com</link>
	<description>Is anything I write real?</description>
	<lastBuildDate>Wed, 28 Jul 2010 21:50:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Poaching Chicken and Code</title>
		<link>http://www.programmersparadox.com/2010/04/20/poaching-chicken-and-code/</link>
		<comments>http://www.programmersparadox.com/2010/04/20/poaching-chicken-and-code/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 21:35:52 +0000</pubDate>
		<dc:creator>Mark Mzyk</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[cooking]]></category>
		<category><![CDATA[technique]]></category>

		<guid isPermaLink="false">http://www.programmersparadox.com/?p=1167</guid>
		<description><![CDATA[I&#8217;m an avid cook. I love the opportunity to try out new recipes, especially those from another culture. Sometimes my wife is pleasantly surprised by the results, other times, she&#8217;s just surprised. For Christmas, I recieved Rick Bayless&#8216; cookbook Authentic Mexican. My first foray using a recipe from the book involved making chicken enchiladas. To [...]<p><br/><br/><a href="http://www.programmersparadox.com/2010/04/20/poaching-chicken-and-code/">Poaching Chicken and Code</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m an avid cook.  I love the opportunity to try out new recipes, especially those from another culture.  Sometimes my wife is pleasantly surprised by the results, other times, she&#8217;s just surprised.  For Christmas, I recieved <a href="http://www.rickbayless.com/">Rick Bayless</a>&#8216; cookbook <a href="http://www.rickbayless.com/cookbooks/authenticmexican.html">Authentic Mexican</a>.  My first foray using a recipe from the book involved making chicken enchiladas.  To prepare the chicken, Rick instructed that it should be poached.  I had never poached a chicken before.</p>
<p>Poaching isn&#8217;t difficult.  You bring water to a boil, drop in chicken, add spices, ignore.  After the chicken is cooked, pull it out, continue with dish.  I was disappointed in that the spices didn&#8217;t add much, if any, flavor to the chicken; however, they smelled spectacular while the chicken cooked. The chicken was amazingly tender. It almost shredded itself for the enchiladas.  It is difficult to get chicken this tender using other cooking techniques; it would takes a watchful eye and careful hand.</p>
<p>From this experience I added a new skill to my cooking repertoire. I now know poaching&#8217;s strengths and weaknesses.  Had I not been venturous, I wouldn&#8217;t have grown as a cook.  In coding, it&#8217;s the same.  If I never leave my comfort zone, I never learn new techniques.  I can keep writing code using the same methods and same tools, but it&#8217;s akin to frying chicken every night.  It&#8217;s good at first, but eventually you get tired of it and it might kill you.</p>
<p>Spice is the variety of life.  Try a new technique and see what it teaches you.  By knowing how to use an array of tools you have the skills to program in any situation.  It&#8217;s the same as knowing multiple ways to cook chicken:  you can always prepare the chicken, no matter what kitchen you find yourself in, so you never go hungry and never tire of practicing your trade.</p>
<p><br/><br/><a href="http://www.programmersparadox.com/2010/04/20/poaching-chicken-and-code/">Poaching Chicken and Code</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersparadox.com/2010/04/20/poaching-chicken-and-code/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Book as Script, Code as Script</title>
		<link>http://www.programmersparadox.com/2009/12/13/book-as-script-code-as-script/</link>
		<comments>http://www.programmersparadox.com/2009/12/13/book-as-script-code-as-script/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 05:18:43 +0000</pubDate>
		<dc:creator>Mark Mzyk</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[audiobooks]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Neil Gaiman]]></category>

		<guid isPermaLink="false">http://www.programmersparadox.com/?p=1087</guid>
		<description><![CDATA[Heard any good books lately? So asks Neil Gaiman on NPR in a story on audiobooks.  It makes for riveting listening, thanks to Gaiman&#8217;s ability to make the mundane fantastic and because he has a mesmerizing British accent that holds me rapt. Gaiman makes the point that audiobooks continue on, strong as ever.  The rise [...]<p><br/><br/><a href="http://www.programmersparadox.com/2009/12/13/book-as-script-code-as-script/">Book as Script, Code as Script</a></p>
]]></description>
			<content:encoded><![CDATA[<p>Heard any good books lately?</p>
<p>So asks <a href="http://www.npr.org/templates/story/story.php?storyId=120769925">Neil Gaiman on NPR</a> in a story on audiobooks.  It makes for riveting listening, thanks to Gaiman&#8217;s ability to make the mundane fantastic and because he has a mesmerizing British accent that holds me rapt.</p>
<p>Gaiman makes the point that audiobooks continue on, strong as ever.  The rise of the iPod has only made them more popular.  Given our information starved yet saturated world it seems the ceiling for audiobooks is limitless &#8211; until the day we can download information directly. Even then, there&#8217;s always a market for a good story.</p>
<p>So what is an audiobook? Gaiman wonders.</p>
<p>According to audio producer Rick Harris: &#8220;Well, my feeling is that it is not a book.&#8221;</p>
<p>&#8220;An audiobook is a separate entity that is absolutely true.  And a novel can be seen as many things, and one of the things it can be seen as is a script for an audio performance.&#8221;</p>
<p>Gaiman sums up: &#8220;An audiobook is its own thing, a unique medium that goes in through the ear, sometimes leaving you sitting in the driveway to find out how the story is going to end.&#8221;</p>
<p>As an audiobook is its own thing &#8211; separate from, but attached to, a book.</p>
<p>So to a program is its own thing &#8211; separate from, but attached to, code.</p>
<p>For what is code, except a script that is read by the compiler/interpreter?  We developers just happen to count on the compiler/interpreter reading the script we give it the same way every time, even though there is nothing that dictates this must happen.</p>
<p>It would be an interesting world to have a compiler/interpreter that put its own spin on the code given it.  To an extent, this does happen now, except in reverse.  You and I can write dialects of the same code and the compiler/interpreter will read it and spit back the same performance, even though it was based on two different scripts.</p>
<p>Code as performance.</p>
<blockquote><p>I grew up in a world where stories were read aloud<br />
- Neil Gaiman</p></blockquote>
<p>What would the world be like if code was read aloud?</p>
<p style="text-align: center;"><a href="http://www.programmersparadox.com/wp-content/uploads/2009/12/audiobook.jpg"><img class="size-full wp-image-1091 alignnone" title="audiobook" src="http://www.programmersparadox.com/wp-content/uploads/2009/12/audiobook.jpg" alt="audiobook" width="500" height="375" /></a></p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/playfullibrarian/3315024196">http://www.flickr.com/photos/playfullibrarian/3315024196</a> / <a href="http://creativecommons.org/licenses/by/2.0/">CC 2.0</a></p>
<p><br/><br/><a href="http://www.programmersparadox.com/2009/12/13/book-as-script-code-as-script/">Book as Script, Code as Script</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersparadox.com/2009/12/13/book-as-script-code-as-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Content, Design, and Tufte</title>
		<link>http://www.programmersparadox.com/2009/09/09/content-design-and-tufte/</link>
		<comments>http://www.programmersparadox.com/2009/09/09/content-design-and-tufte/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 02:31:39 +0000</pubDate>
		<dc:creator>Mark Mzyk</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[nathan huening]]></category>
		<category><![CDATA[refresh]]></category>
		<category><![CDATA[sprockethouse]]></category>
		<category><![CDATA[tufte]]></category>

		<guid isPermaLink="false">http://www.programmersparadox.com/?p=987</guid>
		<description><![CDATA[In what now seems like an eternity ago, I saw Nathan Huening of Sprocket House give a talk at Refresh The Triangle back in July on Edward Tufte.  Nathan’s talk was his attempt to highlight Tufte’s main points about design. Looking back, I don’t remember all the points Nathan highlighted, however, at the time the [...]<p><br/><br/><a href="http://www.programmersparadox.com/2009/09/09/content-design-and-tufte/">Content, Design, and Tufte</a></p>
]]></description>
			<content:encoded><![CDATA[<p>In what now seems like an eternity ago, I saw Nathan Huening of <a href="http://sprockethouse.com/">Sprocket House</a> give a talk at <a href="http://refreshthetriangle.org/posts/refresh_019/">Refresh The Triangle</a> back in July on <a href="http://en.wikipedia.org/wiki/Edward_Tufte">Edward</a> <a href="http://www.edwardtufte.com/tufte/">Tufte</a>.  Nathan’s talk was his attempt to highlight Tufte’s main points about design.</p>
<p>Looking back, I don’t remember all the points Nathan highlighted, however, at the time the ones that most struck me I wrote down in my moleskine.</p>
<p>One of the points was that of the <a href="https://www.msu.edu/course/cas/892/hypermedia/weekly/finalexam/halldenfinal/question2.html">smallest effective difference</a>.  This is where elements are separated by the smallest distinction possible, so that they are distinct and easy to follow, but so that the eye isn’t overwhelmed by the divider.  An example of this would be having a thin gray line dividing boxes, as opposed to a thick black bar.  This principle stuck out to me because I realized it often shows up in calendar grids.  Google calendar uses this to great effect.  Each block is marked with a thin blue line in Google calendar.  This also has the side effect of maximizing space.</p>
<p>The other principle that struck me from Nathan’s talk is that content influences design.  Nathan used an example from his own design company to showcase this.  He talked about how as they designed the website for <span style="text-decoration: line-through;"><a href="http://www.peace.edu/">Peace College</a></span> the<a href="http://alumnae.peace.edu/"> Alumnae Affairs department at Peace College</a> the homepage design was designed last and was influenced by the content of the second level pages.  How could they have known what needed to be highlighted on the homepage without knowing the content of the other pages?  The hierarchy of the second level pages also influenced how the layout and navigation of the homepage was to work.</p>
<p>Once it is shown to you, realizing that content influences design seems obvious, yet as most of us go through our lives we continually ignore this fact, leading to suboptimal designs.  What tends to be designed is one size fits all, and while there is a place for systems like that, more often than not they lead to inefficiencies.</p>
<p>The ignorance of content influencing design even shows up in programing.  All to often, we programmers build the scaffolding of our programs first and then later insert the all important content, squishing it into the scaffolding we’ve built.  This leads to logic that is warped to account for the scaffolding, instead of the scaffolding changing to accommodate the logic.</p>
<p>DSLs (<a href="http://en.wikipedia.org/wiki/Domain-specific_language">domain specific languages</a>) are one way that content influences design in programming.  The content becomes the design of the language.  While it&#8217;s still possible to have a badly designed DSL, a DSL is closer to the content than a generic language will be and this should lead to greater efficiencies in design.</p>
<p>Nathan’s points were well taken.  While I’d heard of Tufte, not being a designer myself I’ve never taken the time to read his works.  I’ll need to rectify that, as it’s clear that principles that apply in the design world also have applicability to the world of programming.</p>
<p><br/><br/><a href="http://www.programmersparadox.com/2009/09/09/content-design-and-tufte/">Content, Design, and Tufte</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersparadox.com/2009/09/09/content-design-and-tufte/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Redis and Ruby</title>
		<link>http://www.programmersparadox.com/2009/06/02/redis-and-ruby/</link>
		<comments>http://www.programmersparadox.com/2009/06/02/redis-and-ruby/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 02:58:22 +0000</pubDate>
		<dc:creator>Mark Mzyk</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[kevin smith]]></category>
		<category><![CDATA[raleigh.rb]]></category>
		<category><![CDATA[redis]]></category>

		<guid isPermaLink="false">http://www.programmersparadox.com/?p=844</guid>
		<description><![CDATA[At the May raleigh.rb meetup, Kevin Smith gave a talk on alternative databases, in which he covered CouchDB and Redis. The talk convinced me that Redis would be the perfect database to underpin Get Encouraged.  Redis is a key-value pair database that is blazing fast: perfect for a small Twitter app that really only needs [...]<p><br/><br/><a href="http://www.programmersparadox.com/2009/06/02/redis-and-ruby/">Redis and Ruby</a></p>
]]></description>
			<content:encoded><![CDATA[<p>At the May <a href="http://raleighrb.com/">raleigh.rb</a> meetup, <a href="http://weblog.hypotheticalabs.com/">Kevin Smith</a> gave a talk on alternative databases, in which he covered <a href="http://couchdb.apache.org/">CouchDB</a> and <a href="http://code.google.com/p/redis/">Redis</a>.</p>
<p>The talk convinced me that Redis would be the perfect database to underpin <a href="http://github.com/mmzyk/getencouraged/tree/master">Get Encouraged</a>.  Redis is a key-value pair database that is blazing fast: perfect for a <a href="http://encourage.ruzuku.com/">small Twitter app</a> that really only needs to store tweets.</p>
<p>Being rather new to the Ruby world, there are obstacles that are easy for others, but confound me, since I haven’t encountered them before.  One of these obstacles is that I don’t know the gem system very well, and there isn’t a gem for Redis that you can grab using gem install that I could find.  This meant I had to figure out how to install a Redis Ruby client library gem using code from github.  Since I figure there are others who are as baffled by this as I was, here are the steps you need to take to install Redis and the redis gem on your system, using the redis-rb library.</p>
<p>The first step is to download the redis-rb client library from github.  It is here:</p>
<p><a href="http://github.com/ezmobius/redis-rb/tree/master">http://github.com/ezmobius/redis-rb/tree/master</a></p>
<p>There are other Redis Ruby client libraries, but my directions pertain to redis-rb, since that is the one I used.  Why start with a Redis client library and not Redis itself?  Because the redis-rb library provides a rake task that will install Redis for you, although you can still install Redis without using the rake task if you so choose.</p>
<p>Once you’ve downloaded redis-rb, untar or unzip it, whatever the case may be, and cd into that directory.</p>
<p>Install the rspec gem, if you don’t already have it:</p>
<blockquote>
<pre><span style="color: #000000;">sudo gem install rspec</span></pre>
</blockquote>
<p>Now run the rake command to install Redis:</p>
<blockquote>
<pre>rake redis:install</pre>
</blockquote>
<p>This will install Redis to /usr/bin/.  The Redis configuration file, redis.conf will be in /etc/.  Redis can be started by running /usr/bin/redis-server.  You do not need to setup a configuration file, since Redis will just use its default one; however, there are options that are worth exploring in the conf file, so at some point open up /etc/redis.conf and take a look.</p>
<p>Next, redis-rb requires that you have dtach installed, if you don’t already:</p>
<blockquote>
<pre>rake dtach:install</pre>
</blockquote>
<p>This installs dtach to /usr/bin/.  You don’t have to do anything with dtach, it just needs to be present on your system so redis-rb can find it.</p>
<p>The final step is to make the redis-rb gem, so you can use it in your code.  It’s easy enough:</p>
<blockquote>
<pre>rake gem</pre>
</blockquote>
<p>That command will package up the redis-rb gem and put it in the folder pkg under the current directory.  If you cd into the pgk directory, you can then install the gem:</p>
<blockquote>
<pre>sudo gem install redis</pre>
</blockquote>
<p><em>Note: while the github repo is called redis-rb, the gem it creates is called redis.</em></p>
<p>You now have Redis installed on your system, along with the redis gem to enable your Ruby code to access Redis.  Here’s some trivial example code to help get you up and running (this example is based off of one in the redis-rb github repo, where you can find more examples):</p>
<blockquote>
<pre>require 'rubygems'
require 'redis'</pre>
<pre>r = Redis.new
r.delete('first_key') #clear it out, if it happens to be set</pre>
<pre>puts 'Set the key {first_key} to {hello world}'
r['first_key'] = 'hello world'</pre>
<pre>puts 'The value of {first_key} is:'
puts r['first_key']</pre>
</blockquote>
<p>Save this code to a file, then start Redis on your machine (/usr/bin/redis-server), run the code, and watch it do its magic.  Hope that helps you get started with Redis.  Enjoy.</p>
<p><strong>Update 6/3/2009</strong>: Kevin has now posted his slides from his raleigh.rb presentation.  <a href="http://weblog.hypotheticalabs.com/?p=502">Find them here</a>.</p>
<p><br/><br/><a href="http://www.programmersparadox.com/2009/06/02/redis-and-ruby/">Redis and Ruby</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersparadox.com/2009/06/02/redis-and-ruby/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NPR on the Sapir-Whorf Hypothesis</title>
		<link>http://www.programmersparadox.com/2009/04/12/npr-on-the-sapir-whorf-hypothesis/</link>
		<comments>http://www.programmersparadox.com/2009/04/12/npr-on-the-sapir-whorf-hypothesis/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 01:27:02 +0000</pubDate>
		<dc:creator>Mark Mzyk</dc:creator>
				<category><![CDATA[Languages]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[knowing and doing]]></category>
		<category><![CDATA[npr]]></category>
		<category><![CDATA[sapir-whorf]]></category>
		<category><![CDATA[shakespeare]]></category>

		<guid isPermaLink="false">http://www.programmersparadox.com/?p=726</guid>
		<description><![CDATA[A while back I wrote about the Sapir-Whorf hypothesis.  In a serendipitous coincidence, NPR ran a story recently that directly relates to the Sapir-Whorf hypothesis: Shakespeare Had Roses All Wrong.  While the Sapir-Whorf hypothesis isn&#8217;t mentioned, it clearly is involved. The story touches on languages and how gender in languages affects thinking.  It is highlighted [...]<p><br/><br/><a href="http://www.programmersparadox.com/2009/04/12/npr-on-the-sapir-whorf-hypothesis/">NPR on the Sapir-Whorf Hypothesis</a></p>
]]></description>
			<content:encoded><![CDATA[<p>A while back I wrote about the <a href="http://www.programmersparadox.com/2009/02/27/sapir-whorf-hypothesis/">Sapir-Whorf hypothesis</a>.  In a serendipitous coincidence, NPR ran a story recently that directly relates to the Sapir-Whorf hypothesis: <a href="http://www.npr.org/templates/story/story.php?storyId=102518565">Shakespeare Had Roses All Wrong</a>.  While the Sapir-Whorf hypothesis isn&#8217;t mentioned, it clearly is involved.</p>
<p>The story touches on languages and how gender in languages affects thinking.  It is highlighted that Spanish speakers and Germany speakers pick different adjectives to describe a bridge, based on the fact that in one language a bridge is male, in the other, female.</p>
<p>The story goes on to talk about how scientists set up an experiment to determine if it was language that the differences could be attributed to.  They determined it is language and that you can shift people&#8217;s thinking by teaching them a language that uses different gender constructs.</p>
<p>The story then goes on to talk about Shakespeare&#8217;s famous line: A rose by any other name would smell as sweet.</p>
<p>Here&#8217;s the actual, full quote:</p>
<blockquote><p>What&#8217;s in a name? that which we call a rose<br />
By any other name would smell as sweet<br />
-<a href="http://www.bartleby.com/70/3822.html">Act II, Scene II. Romeo and Juliet</a></p></blockquote>
<p>It&#8217;s a very interesting story and well worth the seven minutes it takes to listen to.</p>
<p>As an added bonus, <a href="http://www.cs.uni.edu/~wallingf/blog/archives/monthly/2009-04.html#e2009-04-12T18_46_21.htm">Knowing and Doing just posted a post titled Language Driven Programming</a>, which tackles many of the same themes and applies them to programming languages.</p>
<p><br/><br/><a href="http://www.programmersparadox.com/2009/04/12/npr-on-the-sapir-whorf-hypothesis/">NPR on the Sapir-Whorf Hypothesis</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersparadox.com/2009/04/12/npr-on-the-sapir-whorf-hypothesis/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Get Encouraged</title>
		<link>http://www.programmersparadox.com/2009/04/06/get-encouraged/</link>
		<comments>http://www.programmersparadox.com/2009/04/06/get-encouraged/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 02:55:39 +0000</pubDate>
		<dc:creator>Mark Mzyk</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[@getencouraged]]></category>
		<category><![CDATA[abe]]></category>
		<category><![CDATA[get encouraged]]></category>
		<category><![CDATA[jackson fox]]></category>
		<category><![CDATA[more better labs]]></category>
		<category><![CDATA[rick]]></category>
		<category><![CDATA[ruzuku]]></category>
		<category><![CDATA[sinatra]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[twitter gem]]></category>

		<guid isPermaLink="false">http://www.programmersparadox.com/?p=714</guid>
		<description><![CDATA[In my spare time I&#8217;ve been working on a small project called @getencouraged. If you can&#8217;t guess by the name, it involves Twitter. You can find it here: http://encourage.ruzuku.com/ The idea behind the project is that you can visit the website and get a stream of encouraging quotes whenever you want.  You can also follow [...]<p><br/><br/><a href="http://www.programmersparadox.com/2009/04/06/get-encouraged/">Get Encouraged</a></p>
]]></description>
			<content:encoded><![CDATA[<p>In my spare time I&#8217;ve been working on a small project called <a href="http://encourage.ruzuku.com/">@getencouraged</a>.</p>
<p>If you can&#8217;t guess by the name, it involves Twitter.</p>
<p>You can find it here: <a href="http://encourage.ruzuku.com/">http://encourage.ruzuku.com/</a></p>
<p>The idea behind the project is that you can visit the website and get a stream of encouraging quotes whenever you want.  You can also follow <a href="http://twitter.com/getencouraged">getencouraged on Twitter</a> and receive the same quotes in your favorite Twitter app.  Of course, this wouldn&#8217;t slot nicely into Web 2.0 and the Twitter scene if there wasn&#8217;t audience participation.  Anyone is welcome to send their encouraging quotes to @getencouraged over Twitter and they will be shown on the website and retweeted to the getencouraged Twitter feed.</p>
<p>Recently @getencouraged has picked up a <a href="http://socialwayne.com/2009/03/31/nctwitter/">bit of press from Wayne Sutton</a> as well <a href="http://www.northcarolinastartups.com/2009/04/03/ruzuku-wants-you-to-getencouraged/">as from the North Carolina Startup blog</a>.  I wasn&#8217;t expecting the press, so I&#8217;m a bit late in getting this blog post out.</p>
<p>@getencouraged was the idea of <a href="http://www.morebetterlabs.com/">Rick and Abe of More Better Labs</a>.  It is a prelude to the coming launch of <a href="http://www.ruzuku.com/">Ruzuku</a>, an application focused on goal achievement and getting things done.</p>
<p>I&#8217;d also be remiss not to mention <a href="http://jacksonfox.org/">Jackson Fox</a>, who has developed the front end of @getencouraged while I&#8217;ve developed the back end.</p>
<p>As far as coding goes, @getencouraged isn&#8217;t anything spectacular.  It&#8217;s written in Ruby, consisting of two parts: the website and a retweet script.  It&#8217;s built using the <a href="http://twitter.rubyforge.org/">Twitter gem</a> and the <a href="http://www.sinatrarb.com/">Sinatra framework</a>.</p>
<p>The plan is to eventually open source the code, so look for that in the future.  I&#8217;ll be sure to announce it here once that is done.</p>
<p>Let me know what you think about @getencouraged.  Feedback helps the guys of More Better Labs and me to provide you with a better product.</p>
<p><strong>Update 5/21/2009:</strong> The code is now open sourced, see more info <a href="http://www.programmersparadox.com/2009/05/21/get-encouraged-open-sourced/">here</a>.</p>
<p><br/><br/><a href="http://www.programmersparadox.com/2009/04/06/get-encouraged/">Get Encouraged</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersparadox.com/2009/04/06/get-encouraged/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sapir-Whorf Hypothesis</title>
		<link>http://www.programmersparadox.com/2009/02/27/sapir-whorf-hypothesis/</link>
		<comments>http://www.programmersparadox.com/2009/02/27/sapir-whorf-hypothesis/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 05:59:53 +0000</pubDate>
		<dc:creator>Mark Mzyk</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[neal ford]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[rubyrx]]></category>
		<category><![CDATA[sapir-whorf]]></category>

		<guid isPermaLink="false">http://www.programmersparadox.com/?p=608</guid>
		<description><![CDATA[The Sapir-Whorf hypothesis says that a person&#8217;s language affects how they think.  Recently, at RubyRX, I heard Neal Ford speak.  He brought this idea up, only he didn&#8217;t apply it to spoken languages, but to programming languages.  His assertion was that: More powerful programming languages give you new and different abstractions to work with so [...]<p><br/><br/><a href="http://www.programmersparadox.com/2009/02/27/sapir-whorf-hypothesis/">Sapir-Whorf Hypothesis</a></p>
]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://en.wikipedia.org/wiki/Sapir%E2%80%93Whorf_hypothesis">Sapir-Whorf hypothesis</a> says that a person&#8217;s language affects how they think.  Recently, at <a href="http://www.nfjsone.com/conference/raleigh/2009/02/index.html">RubyRX</a>, I heard <a href="http://memeagora.blogspot.com/">Neal Ford</a> speak.  He brought this idea up, only he didn&#8217;t apply it to spoken languages, but to programming languages.  His assertion was that:</p>
<blockquote><p>More powerful programming languages give you new and different abstractions to work with so that you think about problems in different ways, ways that you would never have considered in a less powerful language.</p></blockquote>
<p>Following from this, Neal also asserted that:<strong> <em></em></strong></p>
<blockquote><p>In a more powerful language you can mimic the features of less powerful languages.</p></blockquote>
<p>To prove his point, he took Ruby and used it to implement and enforce Java features, such as immutable strings.</p>
<p>I agree with Neal on these points and I think they explain why I find myself enjoying my work in Ruby and Erlang, but disliking PHP.  PHP simply doesn&#8217;t have the power of the other two.</p>
<p>Returning to the Sapir-Whorf hypothesis, assuming it&#8217;s true, it then follows that learning a new language opens up new modes of communicaiton and thought &#8211; both in programming and in the spoken word.  This is why you should learn a new language every year.</p>
<p><br/><br/><a href="http://www.programmersparadox.com/2009/02/27/sapir-whorf-hypothesis/">Sapir-Whorf Hypothesis</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersparadox.com/2009/02/27/sapir-whorf-hypothesis/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Ruby Range Mnemonic</title>
		<link>http://www.programmersparadox.com/2009/01/11/ruby-range-mnemonic/</link>
		<comments>http://www.programmersparadox.com/2009/01/11/ruby-range-mnemonic/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 01:49:45 +0000</pubDate>
		<dc:creator>Mark Mzyk</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.programmersparadox.com/?p=541</guid>
		<description><![CDATA[While currently working to learn Ruby, I keep forgetting the meaning of each of the range syntaxes, the difference between .. and &#8230; . I&#8217;ve developed a mnemonic to help me. 1..10 is the Ruby inclusive syntax, so 10 would be included in the values. 1&#8230;10 is the Ruby exclusive syntax, so 10 would be [...]<p><br/><br/><a href="http://www.programmersparadox.com/2009/01/11/ruby-range-mnemonic/">Ruby Range Mnemonic</a></p>
]]></description>
			<content:encoded><![CDATA[<p>While currently working to learn Ruby, I keep forgetting the meaning of each of the range syntaxes, the difference between .. and &#8230; .</p>
<p>I&#8217;ve developed a mnemonic to help me.</p>
<p>1..10 is the Ruby inclusive syntax, so 10 would be included in the values.</p>
<p>1&#8230;10 is the Ruby exclusive syntax, so 10 would be excluded from the values.</p>
<p>How to remember this?</p>
<p><strong>With &#8230; the 10 is farther way, so it&#8217;s excluded from the party.</strong></p>
<p>I&#8217;m sure over time I&#8217;ll just have the difference hardwired into my brain, but for now this helps me to remember.</p>
<p><br/><br/><a href="http://www.programmersparadox.com/2009/01/11/ruby-range-mnemonic/">Ruby Range Mnemonic</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersparadox.com/2009/01/11/ruby-range-mnemonic/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reading Levels</title>
		<link>http://www.programmersparadox.com/2008/12/21/reading-levels/</link>
		<comments>http://www.programmersparadox.com/2008/12/21/reading-levels/#comments</comments>
		<pubDate>Sun, 21 Dec 2008 22:17:04 +0000</pubDate>
		<dc:creator>Mark Mzyk</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[raganwald]]></category>
		<category><![CDATA[reg braithwaite]]></category>

		<guid isPermaLink="false">http://www.programmersparadox.com/?p=512</guid>
		<description><![CDATA[In elementary school, the question asked of every child is what level are they reading at?  Is it a third grade level? Sixth? Ninth? This concept even appears in Presidential politics, as linguists analyze what level the candidates are speaking at: it is a middle school level, or a high school level? In almost every [...]<p><br/><br/><a href="http://www.programmersparadox.com/2008/12/21/reading-levels/">Reading Levels</a></p>
]]></description>
			<content:encoded><![CDATA[<p>In elementary school, the question asked of every child is what level are they reading at?  Is it a third grade level? Sixth? Ninth?</p>
<p>This concept even appears in Presidential politics, as linguists analyze what level the candidates are speaking at: it is a middle school level, or a high school level?</p>
<p>In almost every other aspect of life, the concept of levels is forgotten, or at the very least hidden.  In popular culture there even seems to be a move to shun the idea of levels and instead reduce everything to a common denominator.</p>
<p>The only way to improve is to stretch your mind, to reach beyond your current skill.  To read at the next level.</p>
<p>To this end, I recommend reading Reg Braithwaite.  Most of the time I don’t fully understand what he’s writing about.  However, over time I’ve come to understand more and more.  As he mentions various concepts and ideas, I’ve read up on those and my knowledge of Ruby, programming, and math has become stronger, and I’ve become the better for it.</p>
<p>His Old Blog: <a href="http://weblog.raganwald.com/2008/07/brief-history-of-dangerous-ideas.html">Raganwald</a><br />
His current endeavor: <a href="http://github.com/raganwald/homoiconic/tree/master">Homoiconic</a></p>
<p>Note that Reg Braithwaite’s pen name is Raganwald.</p>
<p>Homoiconic is written using <a href="http://github.com/">github</a>, which is normally used for code source control, but has been co-opted by Reg as a means of writing about code using the tools of code.  It’s novel and it works well.</p>
<p>Happy Reading.</p>
<p><br/><br/><a href="http://www.programmersparadox.com/2008/12/21/reading-levels/">Reading Levels</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersparadox.com/2008/12/21/reading-levels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Surf with Javascript Off</title>
		<link>http://www.programmersparadox.com/2008/12/10/surf-with-javascript-off/</link>
		<comments>http://www.programmersparadox.com/2008/12/10/surf-with-javascript-off/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 18:26:26 +0000</pubDate>
		<dc:creator>Mark Mzyk</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[noscript]]></category>
		<category><![CDATA[tokbox]]></category>

		<guid isPermaLink="false">http://www.programmersparadox.com/?p=494</guid>
		<description><![CDATA[I&#8217;m sure this has been said before, but I&#8217;m going to remind everyone: You should try browsing the web with Javascript turned off and observe how broken many things are.  If you run your own site, see how it responds. At the least, if your site can&#8217;t function without Javascript, put in a check to [...]<p><br/><br/><a href="http://www.programmersparadox.com/2008/12/10/surf-with-javascript-off/">Surf with Javascript Off</a></p>
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sure this has been said before, but I&#8217;m going to remind everyone:</p>
<p>You should try browsing the web with Javascript turned off and observe how broken many things are.  If you run your own site, see how it responds.</p>
<p>At the least, if your site can&#8217;t function without Javascript, put in a check to see if a visitor has Javascript disabled, and if so, give a warning that functionality is not guaranteed.</p>
<p>I&#8217;m running with <a href="http://noscript.net/">NoScript</a> installed in Firefox.  It&#8217;s pretty eye opening.</p>
<p>Take, for example, <a href="http://www.tokbox.com/">TokBox</a>.  If you visit there with NoScript turned on, you&#8217;ll be greeted by a blank page.  While NoScript blocks more than just Javascript, it&#8217;s still embarrassing that with scripts turned off, an entire site results in a blank page.</p>
<p>Don&#8217;t let this happen to your site.  Degrade gracefully.</p>
<p><br/><br/><a href="http://www.programmersparadox.com/2008/12/10/surf-with-javascript-off/">Surf with Javascript Off</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.programmersparadox.com/2008/12/10/surf-with-javascript-off/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
