<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us">
  <id>http://www.greatcoding.com/articles/</id>
  <title type="text">Articles Feed</title>
  <updated>
    
      
        2010-05-22T02:03:59Z
      
    
  </updated>
  <author>
    <name>Matt</name>
    <uri>http://www.greatcoding.com/about</uri>
  </author>
  <link rel="self" type="application/atom+xml" href="http://http://greatcoding.com/feed.atom/"/>
  <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/"/>
  <generator>GreatCoding.com</generator>
  
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2010/05/21/railsconf-may-update/</id>
          <title type="html">RailsConf / May Update</title>
          <updated>2010-05-22T02:03:59Z</updated>
          <content type="html">&lt;p&gt;June is quickly approaching and that means one thing&amp;#8230; RailsConf.  This will be the first professional conference I&amp;#8217;ve ever attended and I&amp;#8217;m extremely excited for it.  I will be taking in the Mobile App Development Studio from Mike Clark and the Rails 3 Ropes Course from the guys at Envy Labs.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve spent most of my time recently working in Cocoa (which I love) and haven&amp;#8217;t been able to devote the time I&amp;#8217;ve wanted to Rails.  I&amp;#8217;ve only scratched the surface of Rails 3 but I&amp;#8217;m extremely excited for templates.  I will happily be dumping ActiveRecord and &lt;span class=&quot;caps&quot;&gt;ERB&lt;/span&gt; for DataMapper (maybe CouchRest as well?) and &lt;span class=&quot;caps&quot;&gt;HAML&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve put learning Scala on hiatus for a little while.  I&amp;#8217;ve started learning Clojure instead.  I&amp;#8217;ve always had a bit of a hard time with &lt;span class=&quot;caps&quot;&gt;LISP&lt;/span&gt; based languages.  However, I think I get Clojure&amp;#8217;s implementation of it a lot better.  I&amp;#8217;m using &lt;a href=&quot;http://www.pragprog.com/titles/shcloj/programming-clojure&quot;&gt;Programming Clojure&lt;/a&gt; by Stuart Holloway as my guide.  It&amp;#8217;s actually a lot of fun when you get into it.  I&amp;#8217;m still however having trouble reading my own code after not touching it for a few days.  All of the parenthesis can be a bit hard to grok.&lt;/p&gt;
&lt;p&gt;Here is an example of generating a Fibonacci sequence then summing all even numbers found.  This is a potential solution to &lt;a href=&quot;http://projecteuler.net/index.php?section=problems&amp;amp;id=2&quot;&gt;Project Euler Problem No. 2&lt;/a&gt;&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
#!/usr/bin/env clj&lt;/p&gt;
&lt;p&gt;(defn fib&lt;br /&gt;
  &amp;#8220;Fibbonacci sequence for numbers greater than 2&amp;#8221;&lt;br /&gt;
  [n]&lt;br /&gt;
  ((fn&lt;br /&gt;
    [max, sequence]    &lt;br /&gt;
    (let [sequenceCount (count sequence) firstIndex (- sequenceCount 1) secondIndex (- sequenceCount 2) &lt;br /&gt;
newFibNumber (+ (sequence firstIndex) (sequence secondIndex))]&lt;br /&gt;
    (if (&amp;gt; newFibNumber max)&lt;br /&gt;
      sequence&lt;br /&gt;
      (recur max (conj sequence newFibNumber))))) &lt;br /&gt;
      n [1 1]))&lt;/p&gt;
&lt;p&gt;(println (reduce + (filter #(= (rem % 2) 0) (fib 4000000))))&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;If you want to more about Clojure, definately check out the Programming Clojure book or the &lt;a href=&quot;http://peepcode.com/products/functional-programming-with-clojure&quot;&gt;Clojure Peepcode Screencast&lt;/a&gt;&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2010/05/21/railsconf-may-update/"/>
          
            <summary></summary>
          
          <published>2010-05-21T19:03:59Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2010/03/03/iphone-update/</id>
          <title type="html">iPhone Update</title>
          <updated>2010-03-04T03:57:04Z</updated>
          <content type="html">&lt;p&gt;Quick update.  I now have worked on two iPhone applications for my current employer.  I must say I&amp;#8217;m very impressed with XCode, the Objective-C language, and the Cocoa Framework.  I&amp;#8217;m still very new but find that it&amp;#8217;s fairly easy to pickup the concept behind iPhone development.&lt;/p&gt;
&lt;p&gt;Recently I&amp;#8217;ve been looking at open source libraries to enhance the apps I&amp;#8217;m creating at work and soon for personal use.  I&amp;#8217;ve become intrigued by &lt;a href=&quot;http://iphoneonrails.com/&quot;&gt;ObjectiveResource&lt;/a&gt; and &lt;a href=&quot;http://github.com/facebook/three20&quot;&gt;three20&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;ObjectiveResource is a framework that adds ActiveResource like features to NSObject (and several other objects) to let you &lt;span class=&quot;caps&quot;&gt;CRUD&lt;/span&gt; objects served up by a Rails &lt;span class=&quot;caps&quot;&gt;REST&lt;/span&gt; interface.  I decided to check it out after seeing Mike Clark would be using it in a &lt;a href=&quot;http://en.oreilly.com/rails2010/public/schedule/detail/14136&quot;&gt;training session&lt;/a&gt; at RailsConf.&lt;/p&gt;
&lt;p&gt;three20 is a set of UI elements and libraries derived from the Facebook iPhone application.  The project is from &lt;a href=&quot;http://joehewitt.com/post/the-three20-project/&quot;&gt;Joe Hewitt&lt;/a&gt; who also built the Facebook Connect &lt;span class=&quot;caps&quot;&gt;SDK&lt;/span&gt;.  I&amp;#8217;m excited to try out the TTTableViewController in my apps since it will make loading new information into a UITableView much less painful.&lt;/p&gt;
&lt;p&gt;On a side note, getting familiar with iPhone / Objective-C / Cocoa was one of my goals for the year.  While I&amp;#8217;ll still be learning more about it, I consider my goal complete and now off to goal 2, getting familiar with &lt;a href=&quot;http://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt;.&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2010/03/03/iphone-update/"/>
          
            <summary></summary>
          
          <published>2010-03-03T19:49:26Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2010/01/02/happy-new-year/</id>
          <title type="html">Happy New Year!</title>
          <updated>2010-01-02T22:19:56Z</updated>
          <content type="html">&lt;p&gt;First off, happy new year to everyone!  I&amp;#8217;m hoping that 2010 is better than 2009 for everybody.&lt;/p&gt;
&lt;p&gt;2009 was a rough year for me personally and professionally.  However, it ended on a high note with a new job and new challenges.&lt;/p&gt;
&lt;p&gt;In the waining days of 2009, I began my first iPhone application.  I&amp;#8217;m still very new to Cocoa and Objective-C but I&amp;#8217;m enjoying the parts of the language and framework I&amp;#8217;ve come across.  I&amp;#8217;m getting readjusted to the manually memory management.  I&amp;#8217;ve been spoiled by dynamic languages and automatic garbage collection.&lt;/p&gt;
&lt;p&gt;I really want to expand the languages I work with his year.  Mind you, I&amp;#8217;m definitely staying in the Rails ecosystem, it&amp;#8217;s a fantastic framework.  However there are some technologies on my radar that I want/will need to work with.&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2010/01/02/happy-new-year/"/>
          
            <summary><h2>Cocoa</h2>
<p>I want to keep developing in Cocoa.  I&#8217;m quite impressed with the Objective-C language, the Cocoa framework, and the XCode <span class="caps">IDE</span>.  So far I&#8217;ve stuck to the basic classes.  I&#8217;m hoping to expand into Core Data and eventually Core Animation to build some nice iPhone (and maybe desktop) apps.</p>
<h2>Scala</h2>
<p>I figure that I should get some experience with a language for building concurrent software. I was looking at Erlang last year and decided it wasn&#8217;t for me.  I&#8217;m not a fan of <span class="caps">LISP</span> like languages.  That&#8217;s not a knock against the language, it&#8217;s just my personal preference.  What excites me about Scala is that it supports Object Orientation Programming, can use existing Java classes, and runs on the <span class="caps">JVM</span>.</p>
<h2>Adobe Flex</h2>
<p>Not much to say except that Flash is a widely used platform.  I&#8217;ve had to integrate with it a little bit now and I assume I&#8217;ll need to write some code in it this year.</p>
<p>That&#8217;s my list so far.  What&#8217;s yours?</p></summary>
          
          <published>2010-01-02T14:19:56Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/12/12/moving-on/</id>
          <title type="html">Moving On</title>
          <updated>2009-12-12T23:22:51Z</updated>
          <content type="html">&lt;p&gt;Short update.&lt;/p&gt;
&lt;p&gt;After over two years at Sourcefire, I decided to move on to new adventures.  As this year wraps up, I&amp;#8217;m sad to leave many colleagues behind but glad to know that I can call many of them my friends.&lt;/p&gt;
&lt;p&gt;I began at my new employer Alexander+Tom last week.  There I will be growing outside the role of only being a Ruby on Rails developer.  I will be taking on new challenges, new platforms, and new programming languages.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s to the future and all of its challenges and rewards.  I know that no matter what, I will continue to grow as a developer and a person.  Life, like great coding, is always a work in progress.&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/12/12/moving-on/"/>
          
            <summary></summary>
          
          <published>2009-12-12T15:22:51Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/11/13/sharing-knowledge/</id>
          <title type="html">Sharing Knowledge</title>
          <updated>2009-11-14T03:27:41Z</updated>
          <content type="html">&lt;p&gt;On my vacation this week, I had the fortune of talking with some developers about Ruby development.  During these conversations, I had the joy of introducing some people to some new Ruby tools for rapid application development and testing.&lt;/p&gt;
&lt;p&gt;Before I get into that, I wanted to quickly talk about sharing knowledge.  Share whenever possible.  It doesn&amp;#8217;t matter if its about a programming language, some library, tips, or tricks.  The littlest thing can open whole new concepts or generate great ideas.&lt;/p&gt;
&lt;p&gt;For today&amp;#8217;s blog, I&amp;#8217;d like to share some tools and tips I use for Rapid Application Development and Rails Unit Testing.&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/11/13/sharing-knowledge/"/>
          
            <summary><h2>Rapid Application Development</h2>
<p>One thing I talked about was rapidly putting together a website or web based <span class="caps">API</span> to test a concept or demonstrate functionality.  While some people use Rails, I find that I can use a Sinatra stack much more quickly.</p>
<p>When putting together a concept site, I like to use <a href="http://www.sinatrarb.com">Sinatra</a>, <a href="http://haml-lang.com/"><span class="caps">HAML</span>/Sass</a>, <a href="http://jquery.com/">JQuery</a>, <a href="http://datamapper.org/">DataMapper</a>, and <a href="http://www.sqlite.org/">SQLite</a>.</p>
<p>For most of the apps I build for fun or test a concept, I find that Rails is overkill.  I only need a few routes and a few views, so for me, Sinatra fits the bill.  I can put all of my routes in a single file and all of my views in a single views/ folder.</p>
<p>JQuery and <span class="caps">HAML</span>/<span class="caps">SASS</span> are solely my preference.  I find that I write my markup and styles in <span class="caps">HAML</span> &amp; <span class="caps">SASS</span> faster than if I write them in   <span class="caps">HTML</span> and <span class="caps">CSS</span>.  I also find that JQuery selectors pairs up nicer with the markup I write in <span class="caps">HAML</span>.</p>
<p>I like using DataMapper connecting to a SQLite3 in-memory database.  I&#8217;ve seen several example of this with Sinatra and think its brilliant.  Since DataMapper lets you define the schema for your database in the models, you can generate a new database everytime your app is loaded by setting up the database connection to a memory database in the Sinatra &#8216;configure&#8217; block and then calling DataMapper.auto_migrate!.</p>
<pre>
# lib/pet.rb
class Pet
  property :id, Serial
  property :name. String
end

# app.rb
require 'rubygems'
require 'sinatra'
require 'dm-core'
require 'lib/pet'

configure do
  DataMapper.setup(:default, 'sqlite3::memory:')
  DataMapper.auto_migrate!
end

get '/'
 ...
end

...
</pre>
<h2>Rails Unit Testing</h2>
<p>Nothing against RSpec, but it&#8217;s just not my cup of tea.  I prefer Test::Unit, but I augment it with several libraries.</p>
<p>First and foremost, I always add in <a href="http://github.com/thoughtbot/shoulda">Shoulda</a>.  Shoulda allows you to set contexts (to group similar tests and setup test data) and has several assertions that, among others, simplify testing redirects and model associations.</p>
<p>Next up are <a href="http://github.com/thoughtbot/factory_girl">FactoryGirl</a> and <a href="http://github.com/aiwilliams/dataset">aiwilliams-dataset</a>.</p>
<p>Even though <a href="http://ryandaigle.com/articles/2007/10/26/what-s-new-in-edge-rails-fixtures-just-got-a-whole-lot-easier">foxy fixtures</a> made fixtures less brittle, they can still be problematic to work with.  Fixtures map back to database inserts so none of those lovely model filters will get hit when the record is created.  As an example, a fixture for a User model would need you the developer to set the crypted password manually instead of having the model generate it on creation.  This is where FactoryGirl comes into play.  FactoryGirl allows you to define a Factory object which generates a new Object with default values through the Object&#8217;s create method.  In this example, the Factory for a User would have a default password and password_confirmation that would get crypted at creation.</p>
<pre>
Factory.define :user do |u|
  u.login 'george'
  u.password 'pass123'
  u.password_confirmation 'pass123'
end

Factory.define :car do |c|
  c.model 'Generic'
end
</pre>
<p>Adam Williams&#8217; Dataset app can leverage your Factories to ease creating sample data.  Dataset allows us to create specific sample data for a use case than a blanket amount of fixtures.  I use the name_model with Factories to create sample data.</p>
<pre>
class UsersDataset &lt; Dataset::Base
  name_model Factory.create(:user, :login =&gt; "quentin"), :user_quentin
end

class CarsDataset &lt; Dataset::Base
  uses :users

  name_model Factory.create(:car, :model =&gt; "Jazz", :owner_id =&gt; users(:user_quentin).id ), :car_jazz
end
</pre>
<p>So when we&#8217;re testing our CarsController, we only load the sample data to test for Cars instead of all fixtures.</p>
<pre>
class CarsControllersTest &lt; ...
  dataset :cars

  context "A CarsController" do
    context "on GET to show" do
      setup do
        get :show, :id =&gt; cars(:car_jazz).id
      end

      should_render_template :show
      ...
    end
  end
end
</pre>
<p>I also recommend <a href="http://mocha.rubyforge.org/">Mocha</a> for mocking and stubbing objects.  I know some people use mocks and stubs to force branching conditions in unit tests (i.e. on save fail, object should generate such and such error message).  Personally, I prefer to use real data to force those conditions.  The exceptions comes when talking to 3rd party systems / APIs.  When unit testing, I don&#8217;t want my tests trying to talk to another server.  I want my tests to be self contained; i.e. I don&#8217;t want to run multiple applications just to make my tests pass.</p>
<p>My last note on testing is a bit of advice.  I recommend not testing private methods.  Searching on Google returns hundreds of different articles on the matter; some for and some against testing private methods.  I encourage you to pick a few articles and come to your own decision.  At least at this point, I prefer <a href="http://www.robdavispe.com/free2/software-qa-testing-test-tester-2210.html">grey box testing</a>.  Since you know the underlying structure of the code, you can pass in the right data to pass information through the public methods without resorting to hacking classes to get directly at the private methods.</p></summary>
          
          <published>2009-11-13T18:16:56Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/10/08/ahah/</id>
          <title type="html">AHAH!</title>
          <updated>2009-10-09T00:06:25Z</updated>
          <content type="html">&lt;p&gt;I&amp;#8217;ve been bulk loading my brain with JQuery recently and loving every minute of that.  So much so, I&amp;#8217;ve been inspired to put together a few examples to share with people on my team.&lt;/p&gt;
&lt;p&gt;So here&amp;#8217;s my &lt;a href=&quot;http://github.com/mhawkins/jquery-ahah&quot;&gt;JQuery &lt;span class=&quot;caps&quot;&gt;AHAH&lt;/span&gt; Example&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This example shows off two simple concepts:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/AHAH&quot;&gt;Asynchronous &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt; and &lt;span class=&quot;caps&quot;&gt;HTTP&lt;/span&gt; aka &lt;span class=&quot;caps&quot;&gt;AHAH&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Progressive_enhancement&quot;&gt;Progressive Enhancement&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/10/08/ahah/"/>
          
            <summary><h3><span class="caps">AHAH</span></h3>
<p><a href="http://en.wikipedia.org/wiki/AHAH"><span class="caps">AHAH</span></a> is form of <span class="caps">AJAX</span>.  In lieu of parsing an <span class="caps">XML</span> response, we receive <span class="caps">HTML</span> from our webserver and insert onto our page.  I prefer this since it keeps my JavaScript simple and, since we&#8217;re generating markup anyways, keeps the <span class="caps">HTML</span> generation in the application.</p>
<h3>Progressive Enhancement</h3>
<p>The simplest way (and probably over simplifying it) I can describe <a href="http://en.wikipedia.org/wiki/Progressive_enhancement">progressive enhancement</a> is to allow a webpage to work with and without JavaScript functionality enabled.  There are several schools of thought on why this is done.  Accessibility.  Semantics.  Etc.</p>
<p>I use this approach for browser compatibility.  On a recent internal project, I found that half of my customers are security minded and turn JavaScript off.  The other half want a rich Web 2.0 interface.  By designing for the first half and then using JQuery or other libraries to add behaviors to the static pages, I can then satisfy those looking for a richer experience.</p>
<h3>The Example</h3>
<p>The JQuery example I posted on Github is by no means an exhaustive study of both Progressive Enhancement and <span class="caps">AHAH</span>.  However, I believe it&#8217;s a clean simple example of both concepts.</p>
<h3>Additional Reading</h3>
<p><a href="http://docs.jquery.com/Ajax/jQuery.ajax#options">JQuery <span class="caps">AJAX</span></a></p></summary>
          
          <published>2009-10-08T16:49:21Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/07/12/site-update/</id>
          <title type="html">Site Update</title>
          <updated>2009-07-12T22:27:22Z</updated>
          <content type="html">&lt;p&gt;I decided my last layout was too spartan.  I figured a splash of color was due so that lead me to this new layout.  Navigation is still being worked on.  However, I think this is a little easier on the eyes.&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/07/12/site-update/"/>
          
            <summary><h2>Technologies Used</h2>
<h3><span class="caps">CSS</span></h3>
<p>First and foremost, I&#8217;m passable at <span class="caps">CSS</span> and will take any help I can get.  So the major lifting of the <span class="caps">CSS</span> of my site is provided by <a href="http://www.blueprintcss.org/">Blueprint <span class="caps">CSS</span></a>.  This allows to me quickly structure my site and all thats left for me is to tweak my colors , my floats, and whitespace.</p>
<h3>JavaScript</h3>
<p>I realize I&#8217;m barely using JavaScript on my site.  The exception is the rounded corners on the bottom of my blog.  This is built using <a href="http://jqueryui.com/">JQuery UI</a>.  It&#8217;s as simple as add &#8220;ui-corner-bottom&#8221; to the element I want to style.  Simple.</p>
<h3><span class="caps">CMS</span></h3>
<p>I have updated my blog to <a href="http://radiantcms.org/">RadiantCMS 0.8</a>.  I&#8217;m happy the Radiant team has moved their product to Rails 2.3.2 and updated their <span class="caps">HAML</span> version.  We&#8217;re migrating our sites at work to Radiant and I&#8217;m happier with this release than the previous ones.  It&#8217;s a bit easier to create extensions this go around.  I&#8217;ve still run into some problems with writing unit tests for the extensions, but overall its an improvement.</p></summary>
          
          <published>2009-07-12T15:27:22Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/07/01/tshirt/</id>
          <title type="html">Tshirt</title>
          <updated>2009-07-02T00:15:36Z</updated>
          <content type="html">Short update.  Got my Yowza!! tshirt today.  http://twitpic.com/8zvmp  As a developer, I live for swag.</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/07/01/tshirt/"/>
          
            <summary></summary>
          
          <published>2009-07-01T17:15:22Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/04/10/imac-mac-gaming-mini-rant/</id>
          <title type="html">iMac &amp; Mac Gaming Mini-Rant</title>
          <updated>2009-04-11T03:14:45Z</updated>
          <content type="html">&lt;p&gt;A few weeks ago, I finally broke down and got an iMac.  I had been using a 2.5 yr old MacBook as my primary computer since September of 2007.&lt;/p&gt;
&lt;p&gt;I used to be a big PC gamer but I grew tired of constantly tweaking my system and upgrading my videocard. After my switch to Macintosh in 2004, I gave up on PC gaming and stuck to consoles.&lt;/p&gt;
&lt;p&gt;Well, I eventually missed playing &lt;span class=&quot;caps&quot;&gt;FPS&lt;/span&gt;.  Don&amp;#8217;t get me wrong, there are plenty of good &lt;span class=&quot;caps&quot;&gt;FPS&lt;/span&gt; for consoles.  However, nothing is quite as satisfying as the keyboard and mouse combo.  About 4 months ago, I got the gaming bug.&lt;/p&gt;
&lt;p&gt;I eventually broke down and got out my old copy of Halo for Mac.  It was fun but eventually my Intel &lt;span class=&quot;caps&quot;&gt;GMA&lt;/span&gt; 950 graphics weren&amp;#8217;t cutting it anymore.  Playing Halo in 640&amp;#215;480 was sad.  I needed more horsepower.  The new iMac allows me to run Halo at 1920&amp;#215;1200. That&amp;#8217;s hot.  And thanks for CrossOver Games, I can play Half Life 2 and its variants like Portal.&lt;/p&gt;
&lt;p&gt;Now that I have Red Alert 3 for the Mac, I think I can consider myself a Mac gamer.&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/04/10/imac-mac-gaming-mini-rant/"/>
          
            <summary></summary>
          
          <published>2009-04-10T20:07:50Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/03/21/objective-c/</id>
          <title type="html">Objective C</title>
          <updated>2009-03-22T02:59:22Z</updated>
          <content type="html">&lt;p&gt;I try to learn a new language every 1 to 2 years.  It helps keep my brain plastic and opens up new technology domains.  So my language for 2009 is Objective C 2.0.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m brand new at this language, but I do have some words of advice for others learning it.&lt;/p&gt;
&lt;h2&gt;Screencasts&lt;/h2&gt;
&lt;p&gt;I&amp;#8217;m using two series of screencasts to learn Objective C.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://peepcode.com/products/objective-c-for-rubyists&quot;&gt;Objective C for Rubyists&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.pragprog.com/screencasts/v-bdobjc/coding-in-objective-c-2-0&quot;&gt;Coding in Objective C&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Coming from a Ruby background, I started with the &amp;#8220;Objective C for Rubyists&amp;#8221;.  However I prefer the &amp;#8220;Coding in Objective C&amp;#8221; series.&lt;/p&gt;
&lt;h2&gt;Books&lt;/h2&gt;
&lt;p&gt;I sadly don&amp;#8217;t have any good books on Objective C.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve pre-ordered &lt;a href=&quot;http://www.pragprog.com/titles/dscpq/cocoa-programming&quot;&gt;Cocoa Programming&lt;/a&gt; and &lt;a href=&quot;http://www.pragprog.com/titles/mzcd/core-data&quot;&gt;Core Data&lt;/a&gt; from Pragmatic Programmers.&lt;/p&gt;
&lt;p&gt;There is a book listed on Amazon from Pragmatic Programmers called &lt;a href=&quot;http://www.amazon.com/Programming-Objective-C-2-0-Introduction-Language/dp/1934356247/ref=pd_sxp_grid_i_1_0/280-8257367-4642958&quot;&gt;Programming Objective C 2.0&lt;/a&gt; that I hope will lead me from just Objective C &lt;span class=&quot;caps&quot;&gt;CLI&lt;/span&gt; tools to Cocoa Programming.&lt;/p&gt;
&lt;h2&gt;Goals&lt;/h2&gt;
&lt;p&gt;My hope out of all is this is that I will learn Objective C.0 and eventually iPhone programming.  This will hopefully lead to an iPhone app that will pay for an iMac.  :)&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/03/21/objective-c/"/>
          
            <summary></summary>
          
          <published>2009-03-21T19:49:25Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/02/18/haml-sass/</id>
          <title type="html">HAML &amp; SASS</title>
          <updated>2009-02-19T04:53:50Z</updated>
          <content type="html">&lt;p&gt;I&amp;#8217;ve recently been working with &lt;span class=&quot;caps&quot;&gt;HAML&lt;/span&gt; &amp;amp; &lt;span class=&quot;caps&quot;&gt;SASS&lt;/span&gt;.  I originally questioned the usefulness of an intermediate language that generates &lt;span class=&quot;caps&quot;&gt;HTML&lt;/span&gt; &amp;amp; &lt;span class=&quot;caps&quot;&gt;CSS&lt;/span&gt;.  In practice, it&amp;#8217;s saves me a significant amount of time in my workday to accomplish my tasks.  Check it out at: http://haml.hamptoncatlin.com/&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/02/18/haml-sass/"/>
          
            <summary></summary>
          
          <published>2009-02-18T20:53:50Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/01/31/programmers-need-to-plus-it/</id>
          <title type="html">Programmers need to &quot;Plus It&quot;</title>
          <updated>2009-01-31T21:43:27Z</updated>
          <content type="html">&lt;p&gt;One of the things that has driven me crazy over the years is when developers I&amp;#8217;m working with phone it in.&lt;/p&gt;
&lt;h2&gt;The Problem&lt;/h2&gt;
&lt;p&gt;When I say phoning it in, I don&amp;#8217;t mean show up late, surfing Facebook, and leave early.  (Let&amp;#8217;s face it, we all know people like that in all professions.)&lt;/p&gt;
&lt;p&gt;So what do I mean then?  Requirements are barely met.  The code is sloppily written.  There are no tests beyond &amp;#8220;assert true&amp;#8221;.  The code is unmaintainable.  The code smell would make hardened, jaded programmers faint.&lt;/p&gt;
&lt;p&gt;How do we combat the problem?&lt;/p&gt;
&lt;h2&gt;Plus It&lt;/h2&gt;
&lt;p&gt;Recently I&amp;#8217;ve been reading a book on Disney&amp;#8217;s Imagineers.  One of the mantras they use is to &lt;strong&gt;Plus It&lt;/strong&gt;.  &lt;strong&gt;Plus It&lt;/strong&gt; means to go beyond your personal best.  Raise the bar for yourself and others.&lt;/p&gt;
&lt;h2&gt;How do we Plus It?&lt;/h2&gt;
&lt;p&gt;In the world of developers, &lt;strong&gt;Plus It&lt;/strong&gt; means you make your code, user experiences, support, etc. better than your previous best.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Don&amp;#8217;t settle for mediocre.&lt;/li&gt;
	&lt;li&gt;Work hard.&lt;/li&gt;
	&lt;li&gt;Don&amp;#8217;t just create code, create great code.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Test everything.  And I don&amp;#8217;t mean just unit testing or feature testing.  I mean, end user testing.  To steal another concept from Disney, your only real critics are your audience.  End user testing will tell you if the interface and features created meet their expectations or not.  If you don&amp;#8217;t meet your end user&amp;#8217;s expectations, meet them.  Once you meet them, exceed them.&lt;/p&gt;
&lt;h2&gt;How do we encourage others to Plus It?&lt;/h2&gt;
&lt;p&gt;Peer review.  It&amp;#8217;s one of the most powerful tools I&amp;#8217;ve encountered to influence other&amp;#8217;s to &lt;strong&gt;Plus It&lt;/strong&gt;.  I&amp;#8217;m competitive in nature.  Some of best coworkers have been as competitive.  Without being volatile about the situation, refactoring or critiquing other&amp;#8217;s code challenges them to produce a higher level of code.&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/01/31/programmers-need-to-plus-it/"/>
          
            <summary></summary>
          
          <published>2009-01-31T13:04:55Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/01/19/2009-goals/</id>
          <title type="html">2009 Goals</title>
          <updated>2009-01-27T03:05:13Z</updated>
          <content type="html">&lt;p&gt;Besides building out my site, what are my 2009 goals?&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/01/19/2009-goals/"/>
          
            <summary><h2>Development</h2>
<p>I spent 2008 learning a lot of new technologies.  On top of my head, I learned Git, RSpec, Shoulda, RadiantCMS, a little JQuery, some Erlang, CouchDB, Sinatra, and webby.  A lot of Ruby stuff mostly, which is great, but I need some variety.</p>
<p>In 2009, I&#8217;m going to learn Objective-C 2.0.  I&#8217;m a developer and a Mac user.  It seems only natural to start learning Apple&#8217;s language of choice.</p>
<p>I haven&#8217;t put the time into it too far.  I&#8217;ve made some purchases from Pragmatic Programmers that I&#8217;ll be consuming very soon.</p>
<h2>Personal</h2>
<p>Gotta get in shape.  Working as a programmer is a sedentary life.  I got in really good shape as a freshman in college.  But as college progressed and I started working part-time then full-time, on came the pounds.  But that&#8217;s starting to change.</p>
<p>Working for Sourcefire allows me to get to the gym everyday for at least a half hour.  I&#8217;m hoping by summer time, I&#8217;ll be back in good shape.  Then by the winter, I&#8217;ll be in great shape.  I gotta prep to look good for vacation.  :)</p>
<p>My big goal for the year is taking my wife to Walt Disney World.  She&#8217;s never been, so I get the pleasure of showing her around.  If all works out, we&#8217;ll be going in December and I couldn&#8217;t be more psyched.</p></summary>
          
          <published>2009-01-19T17:50:38Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/01/17/construction/</id>
          <title type="html">Construction</title>
          <updated>2009-01-27T03:05:13Z</updated>
          <content type="html">&lt;p&gt;I&amp;#8217;m in the process of building out the layout, content, etc.  Watch as this site evolves.  :)&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/01/17/construction/"/>
          
            <summary></summary>
          
          <published>2009-01-17T13:52:05Z</published>
        </entry>
      
    
      
        <entry>
          <id>http://www.greatcoding.com/articles/2009/01/17/stay-tuned/</id>
          <title type="html">Stay Tuned</title>
          <updated>2009-01-27T03:05:13Z</updated>
          <content type="html">&lt;p&gt;Stay tuned.  More content coming soon.&lt;/p&gt;</content>
          <link rel="alternate" type="text/html" href="http://greatcoding.com/articles/2009/01/17/stay-tuned/"/>
          
            <summary></summary>
          
          <published>2009-01-17T13:09:56Z</published>
        </entry>
      
    
  
</feed>
