<?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>www.idevelopsoftware.com &#187; Tips from the Trenches</title>
	<atom:link href="http://www.idevelopsoftware.com/topic/articles/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.idevelopsoftware.com</link>
	<description>Homepage</description>
	<lastBuildDate>Sat, 03 Dec 2011 17:36:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Setting up my Snow Leopard Ruby 1.9.2, Ruby on Rails 3.0, Nginx, Passenger development environment</title>
		<link>http://www.idevelopsoftware.com/2010/11/setting-up-my-snow-leopard-ruby-1-9-2-ruby-on-rails-3-0-nginx-passenger-development-environment/</link>
		<comments>http://www.idevelopsoftware.com/2010/11/setting-up-my-snow-leopard-ruby-1-9-2-ruby-on-rails-3-0-nginx-passenger-development-environment/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 01:41:10 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tips from the Trenches]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Passenger]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[Ruby 1.9.2]]></category>
		<category><![CDATA[Ruby on Rails 3.0]]></category>
		<category><![CDATA[Snow Leopard]]></category>

		<guid isPermaLink="false">http://www.idevelopsoftware.com/?p=431</guid>
		<description><![CDATA[Snow Leopard ships with Ruby 1.8.7 installed and an older version of Ruby Gems. I am planning on doing some projects with Ruby on Rails and wanted to setup a current environment. My requirements were: Ruby 1.9.2 Rails 3.0 PostgreSQL 9.0 Nginx Passenger You should download and install the Mac version of PostgreSQL 9.0 from [...]]]></description>
			<content:encoded><![CDATA[<p>
Snow Leopard ships with Ruby 1.8.7 installed and an older version of Ruby Gems. I am planning on doing some projects with Ruby on Rails and wanted to setup a current environment. My requirements were:</p>
<ul>
<li>Ruby 1.9.2</li>
<li>Rails 3.0</li>
<li>PostgreSQL 9.0</li>
<li>Nginx</li>
<li>Passenger</li>
</ul>
<p>
You should download and install the Mac version of PostgreSQL 9.0 from the folks at <a href="http://www.enterprisedb.com/products/download.do">EnterpriseDB</a>. You will need to register on the site in order to do the download. Be sure to download PostgreSQL 9.0.1, not one of their <i>Plus</i> packages. It is a nicely packaged installer for the freely available version of Postgres.
</p>
<p>
Once you install this software you should have a file called <tt>pg_env.sh</tt> in the <tt>/Library/PostgreSQL/9.0/</tt> directory. This file should be added to your <tt>/etc/profile</tt>. Here is an example of what mine looks like:
</p>
<pre>
# System-wide .profile for sh(1)

# This has to be set to something in order for path_helper (below)
# to update it with paths found in the /etc/manpaths.d directory.
MANPATH=/usr/local/share/man; export MANPATH

# Setup the PostgreSQL environment.
. /Library/PostgreSQL/9.0/pg_env.sh

if [ -x /usr/libexec/path_helper ]; then
    eval `/usr/libexec/path_helper -s`
fi

if [ "${BASH-no}" != "no" ]; then
    [ -r /etc/bashrc ] &#038;&#038; . /etc/bashrc
fi
</pre>
<p>
Be sure to log out and log back in before continuing with these instructions. This is important to make sure your PostgreSQL environment variables are set properly.
</p>
<p>
One of my goals with this setup is to keep everything independent of the default tools that ship with Snow Leopard. To do this I decided that all of my Ruby on Rails setup will be located in the <tt>/usr/local/ror</tt> directory tree.  Here is a script I developed to setup my Ruby on Rails development environment.
</p>
<pre>
#!/bin/bash

# Get and extract a copy of LibYAML
curl http://pyyaml.org/download/libyaml/yaml-0.1.3.tar.gz > yaml-0.1.3.tar.gz
tar xvf yaml-0.1.3.tar.gz

# Build LibYAML
(
	cd yaml-0.1.3
	./configure
	make
	sudo make install
)

# Get and extract a copy of Ruby 1.9.2
curl ftp://ftp.ruby-lang.org:21//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz > ruby-1.9.2-p0.tar.gz
tar xvf ruby-1.9.2-p0.tar.gz

# Build Ruby 1.9.2
(
	cd ruby-1.9.2-p0
	./configure --prefix=/usr/local/ror --with-arch=x86_64 --enable-shared
	make
	make test
	sudo make install
)

# Update Ruby Gems
sudo gem update --system

# Install Gems
sudo gem install rails
sudo gem install sqlite3-ruby
sudo gem install pg
sudo gem install passenger

# Configure Passenger for Nginx (downloads Nginx and PCRE automatically)
sudo passenger-install-nginx-module --prefix=/usr/local/ror --auto-download --auto
</pre>
<p>
<a href="http://wp-media.s3.amazonaws.com/wp-content/uploads/2010/11/doit.sh.tar" class="s3-link">Download the script</a>, un-tar it and place it in any directory you want. I call the script <tt>doit.sh</tt>, but you can name it anything you like. Run the script using the command shown below.
</p>
<pre>
$ sh ./doit.sh
</pre>
<p>
Once the script completes you need to add <tt>/usr/local/ror/bin</tt> to your path. I did this by editing my <tt>/etc/paths</tt> file. Here is a copy of the file on my machine:
</p>
<pre>
usr/local/ror/bin
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
</pre>
<p>
One more logout/login and you are done.  Have fun playing with Ruby on Rails on your Mac!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idevelopsoftware.com/2010/11/setting-up-my-snow-leopard-ruby-1-9-2-ruby-on-rails-3-0-nginx-passenger-development-environment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MacBook Pro Development Environment</title>
		<link>http://www.idevelopsoftware.com/2010/10/macbook-pro-development-environment/</link>
		<comments>http://www.idevelopsoftware.com/2010/10/macbook-pro-development-environment/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 04:09:13 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Tips from the Trenches]]></category>
		<category><![CDATA[Tools I Use]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[django-nonrel]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[google app engine]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.idevelopsoftware.com/?p=421</guid>
		<description><![CDATA[This article covers the steps I went through to setup my MacBook Pro for Google App Engine (GAE) development. I am using the Python runtime in GAE so the focus here is on a Python development environment. Python Setting Python 2.5 as Default My MacBook Pro is running Snow Leopard. I am planning to host [...]]]></description>
			<content:encoded><![CDATA[<p>This article covers the steps I went through to setup my MacBook Pro for Google App Engine (GAE) development. I am using the Python runtime in GAE so the focus here is on a Python development environment. </p>
<h1>Python</h1>
<h2>Setting Python 2.5 as Default</h2>
<p>My MacBook Pro is running Snow Leopard. I am planning to host my projects on Google App Engine and it requires Python 2.5. Snow Leopard ships with Python 2.6 as the default. You can switch to Python 2.5 using a few simple commands, as follows:</p>
<pre>
$ defaults write com.apple.versioner.python Version 2.5
$ sudo defaults write /Library/Preferences/com.apple.versioner.python Version 2.5
</pre>
<p>After issuing these commands you should logout and login, launch a Terminal window and issue the command</p>
<pre>
$ python --version
</pre>
<p>It should report <tt>Python 2.5.4</tt> as the result. If it still says <tt>Python 2.6.1</tt> then your change did not take effect. To troubleshoot the problem start with <tt>man python</tt>. It includes information on how to switch the default version of Python on your system.</p>
<h2>Additional Python Modules</h2>
<p>Google App Engine expects that the ssl module is installed. This is so it can verify the identity of the GAE servers when trying to deploy your projects. Install it like this:</p>
<pre>
$ curl http://pypi.python.org/packages/source/s/ssl/ssl-1.15.tar.gz --output ssl-1.15.tar.gz
$ tar xvf ssl-1.15.tar.gz
$ cd ssl-1.15
$ sudo python setup.py install
</pre>
<p>If you want to use the GAE image manipulation classes while running on the local development server you will need to install PIL using the following command.</p>
<pre>
$ sudo easy_install pil
</pre>
<p>The following will be necessary for building some other python libraries later in the process.</p>
<pre>
$ sudo easy_install docutils
</pre>
<p>The following modules are necessary if you choose to install IPython (see next section). If you are planning on skipping the IPython installation these can be skipped as well.</p>
<pre>
$ sudo easy_install readline
$ sudo easy_install nose
$ sudo easy_install pexpect
</pre>
<h2>IPython</h2>
<p>The IPython interactive interpreter is a good addition to your Python development environment. It does not come pre-installed on Snow Leopard. You can download the latest stable version using this command:</p>
<pre>
$ curl http://ipython.scipy.org/dist/0.10/ipython-0.10.tar.gz --output ipython-0.10.tar.gz
$ tar -xzf ipython-0.10.tar.gz
$ cd ipython
$ sudo python setup.py install
</pre>
<h1>Google App Engine SDK</h1>
<p>The Google App Engine SDK for Python is available at http://code.google.com/appengine/downloads.html. As of this writing you can use the following command to grab the latest version:</p>
<pre>
$ curl http://googleappengine.googlecode.com/files/GoogleAppEngineLauncher-1.3.7.dmg --output GoogleAppEngineLauncher-1.3.7.dmg
</pre>
<p>Once you download the <tt>dmg</tt> file open it in Finder and run the installer. It will place all of the necessary files on your machine. Once complete locate the <i>GoogleAppEngineLauncher.app</i> icon in Finder and double-click on it. This application provides a nice UI for managing your GAE projects.</p>
<h1>Source Code Management Tools</h1>
<h2>Git</h2>
<p>I am planning on managing the source code for my projects with <tt>git</tt> and will store my master repositories on <a href="http://github.com">http://github.com</a>. Apple does not include a copy of <tt>git</tt> on the machine by default. An installer is available at <a href="http://help.github.com/mac-git-installation/">http://help.github.com/mac-git-installation/</a>. While you are at it also create an account on github if you don&#8217;t already have one. It is useful for <i>social coding</i> in the wider open-source community.</p>
<h2>Mercurial</h2>
<p>Some of the Django open source software I plan on using is maintained using a distributed source control management tool called Mercurial. An installer for this is available at <a href="http://mercurial.selenic.com">http://mercurial.selenic.com</a>. Download and install the software.</p>
<pre>
$ curl http://mercurial.selenic.com/release/mercurial-1.6.3.tar.gz --output mercurial-1.6.3.tar.gz
$ tar xvf mercurial-1.6.3.tar.gz
$ cd mercurial-1.6.3
$ make PREFIX=/System/Library/Frameworks/Python.framework/Versions/2.5 all
$ sudo make PREFIX=/System/Library/Frameworks/Python.framework/Versions/2.5 install
$ hg version
</pre>
<h1>Django-nonrel</h1>
<p>I plan on implementing my web applications on top of the Django framework. Some modifications are required in order for this framework to run properly on GAE since Google uses <i>Big Table</i> for data storage instead of a relational database. Everything necessary to get Django working in GAE is included as part of the <a href="http://www.allbuttonspressed.com/projects/django-nonrel">Django-nonrel</a> project. Specific instructions for GAE are available at <a href="http://www.allbuttonspressed.com/projects/djangoappengine">http://www.allbuttonspressed.com/projects/djangoappengine</a>.</p>
<p>Use the commands listed below to install copies of all the necessary components onto your machine. Everything will be stored in a folder called <tt>DjangoStuff</tt> under your home directory. </p>
<pre>
$ mkdir $HOME/DjangoStuff
$ cd $HOME/DjangoStuff
$ hg clone https://bitbucket.org/wkornewald/django-nonrel
$ hg clone https://bitbucket.org/wkornewald/djangoappengine
$ hg clone https://bitbucket.org/wkornewald/djangotoolbox
$ hg clone https://bitbucket.org/wkornewald/django-dbindexer
$ hg clone https://bitbucket.org/wkornewald/django-testapp
</pre>
<p>Now, pick another folder where you want to setup a practice application.  I am calling mine <tt>cs-practice</tt> since this is also the name of my Google App Engine application. </p>
<p>Use the following commands to configure the practice application for Django-nonrel development.</p>
<pre>
$ mkdir $HOME/cs-practice
$ cd $HOME/cs-practice
$ ln -s $HOME/DjangoStuff/django-nonrel/django django
$ ln -s $HOME/DjangoStuff/djangoappengine djangoappengine
$ ln -s $HOME/DjangoStuff/djangotoolbox/djangotoolbox djangotoolbox
$ ln -s $HOME/DjangoStuff/django-dbindexer/dbindexer dbindexer
$ cp -r $HOME/DjangoStuff/django-testapp/* .
</pre>
<p>Once you have the practice folder setup you need to edit the <tt>app.yaml</tt> file and change the application name to reflect the Google App Engine application name you selected when registering on <a href="http://appengine.google.com">http://appengine.google.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idevelopsoftware.com/2010/10/macbook-pro-development-environment/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>iPad as Technical Book Reader? Absolutely!</title>
		<link>http://www.idevelopsoftware.com/2010/05/ipad-as-technical-book-reader-absolutely/</link>
		<comments>http://www.idevelopsoftware.com/2010/05/ipad-as-technical-book-reader-absolutely/#comments</comments>
		<pubDate>Sun, 02 May 2010 02:28:13 +0000</pubDate>
		<dc:creator>Admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Tips from the Trenches]]></category>

		<guid isPermaLink="false">http://www.idevelopsoftware.com/?p=349</guid>
		<description><![CDATA[I have been lugging around technical books for the last 20+ years as part of my profession. The pace with which technology changes means there is a constant stream of new topics to study and that usually means buying books. The thing about many of these technology books is you don&#8217;t read them like a [...]]]></description>
			<content:encoded><![CDATA[<p>I have been lugging around technical books for the last 20+ years as part of my profession. The pace with which technology changes means there is a constant stream of new topics to study and that usually means buying books. The thing about many of these technology books is you don&#8217;t read them like a pleasure book. You tend to use them as a reference while you climb a new learning curve. It goes kind of like this:</p>
<ul>
<li>Microsoft, Apple or someone else releases a new operating system or application. => More books</li>
<li>Open source tools like Subversion, Git or whatever gains in popularity. => More books</li>
<li>Start developing in a new language (Ruby, Python, Objective-C, &#8230;) => More books</li>
</ul>
<p>The end result is that my garage is always full of books that either describe out of date technology or are still current but not relavent for the projects I am working on at the moment. Worst still, the books I am currently using usually end up weighing many pounds and take up a lot of room. </p>
<div style="float: right; padding: 8px;"><img src="http://wp-media.s3.amazonaws.com/wp-content/uploads/2010/05/leaning_tower_of_books.jpg" alt="" title="leaning_tower_of_books" width="240" height="320" align="right" class="alignright size-full wp-image-343" /></div>
<p>The difference between carrying around a bunch of paper books and an e-book reader is huge. This stack of books weighs in at 31.8 lbs. Compare that with an iPad that has most of the same books loaded onto it and weights just 1.8 lbs. I know which one I am going to be carrying in my backpack.</p>
<p>Early last year when Amazon released the Kindle2 I purchased one hoping to get rid of this problem by switching to e-books instead of paper books. I did a survey of the technical e-books available and it looked promising. Most of the books I was either currently using or would likely be interested in were now available from Amazon in an e-book version.  Amazon made it possible for the Kindle to also read the mobi format so that meant I could also get books from The Pragmatic Programmer and O&#8217;Reilly. </p>
<p>You know what they say about the best laid plans and all that. The Kindle worked as advertised. I switched almost exclusively to e-books on the Kindle. The problem was, many of these technical books include figures or illustrations <strong>that are in color</strong> and the Kindle did an awfull job of displaying them. To make matters worse, you couldn&#8217;t change the orientation of the Kindle (no landscape mode) so images that didn&#8217;t scale well could not be viewed by rotating the device.  This was almost enough for me to go back to paper books.</p>
<p>Flash forward about a year and the rumors were flying about Apple building a tablet/slate of some sort. Would it be a book reader, a netbook computer, a movie viewer or what? No one knew for sure but everyone was speculating. Then the announcement came that Apple would hold a special event to announce &#8220;Something they have been working on&#8221;.  My Kindle2 went up on craigslist that day (about a week before the special event was held) and I sold it the next day. I love craigslist; it just works! The ironic part is I sold it to a software engineer who works for Apple.</p>
<p>We all know what happened next. Steve told us all what we needed (an iPad) and when we would be giving him our money. I listened, reserved one for pickup on the release day and the rest is history. Apple ships the iPad with an e-book reader called iBooks and they have an on-line bookstore where you can purchase e-books. Amazon shipped a Kindle reader for the iPad that uses wifi to sync with the Kindle on-line bookstore.</p>
<p>Here is a picture of my new 1.8 lb iPad that makes an excellent technical book reader.</p>
<div style="float: left; padding: 8px;"><img src="http://wp-media.s3.amazonaws.com/wp-content/uploads/2010/05/ipad_under_2lbs.jpg" alt="" title="ipad_under_2lbs" width="240" height="320" class="aligncenter size-full wp-image-344" /></div>
<p>All of my existing Kindle books transfered over to the iPad without any trouble. The Pragmatic Programmer books I had were all in the mobi format which the Kindle software on the iPad cannot read. No problem &#8211; I just downloaded the epub format of the same books from the Pragmatic Programmer on-line bookstore.  </p>
<p>Publishers sell their e-books in one or more of the following formats:</p>
<ul>
<li>PDF &#8211; Adobe format that permits publishers to lock the content down with DRM. In some cases they can be very restrictive about which applications you are able to read the books in. My advice is to avoid purchasing e-books from publishers who use this format unless they are DRM-free and also offer one of the following formats. There just isn&#8217;t any reason for you to be locked into PDF when the iPad is such a great reader.</li>
<li>mobi &#8211; A mobile electronic book format that was very popular when the PocketPC and Palm were in their hayday. You can read mobi files with the Kindle device, but not with the Kindle software on the iPad.</li>
<li>epub &#8211; Modern electronic book format. Supported in the Apple iBooks application. This is the best choice for an open format on the iPad right now. I favor epub over other formats. A very nice feature of the iBooks applications is the ability to search through books.</li>
<li>Amazon &#8211; Proprietary format from Amazon. The Kindle reader software for the iPad is excellent so if a book is only available from the Kindle store I go ahead and purchase it there with no regrets. The only downside right now is the lack of a good search feature in the Kindle software. Hopefully they will be correcting this in an update.</li>
</ul>
<blockquote><p>As an aside, everyone should make their e-books available like the folks at PragProg do. When you buy a book from them you get it in three formats (PDF, mobi and epub). This means you can read your book on basically any electronic device of your choosing. O&#8217;Reilly is almost as good.
</p></blockquote>
<p>To round things out here are a couple pictures of the user interface of iBooks and Kindle Reader for iPad.</p>
<p>This first two images are of the iBooks software. The image on the left illustrates the support for color and the nice page turn animations help you forget that this is not paper after a while. As is typical of most Apple user interfaces, this one has excellent usability. On the right you have a look at the search feature as implemented in the iBooks application. I have found that it works well, but is a bit slow. I would like to see Apple improve on the performance in an update.</p>
<div width="100%">
<div style="float: left; padding: 8px;">
<img src="http://wp-media.s3.amazonaws.com/wp-content/uploads/2010/05/ibooks_vert_pageturn.jpg" alt="" title="ibooks_vert_pageturn" width="240" height="320" class="aligncenter size-full wp-image-336" />
</div>
<div style="float: left; padding: 8px;">
<img src="http://wp-media.s3.amazonaws.com/wp-content/uploads/2010/05/ibooks_vert_serach.jpg" alt="" title="ibooks_vert_serach" width="240" height="320" class="aligncenter size-full wp-image-335" />
</div>
</div>
<p>The next image is of the Amazon Kindle for iPad software. Here I am showing you what the controls are like for selecting a font size and adjusting the background color and brightness. As I mentioned earlier, the main thing missing from the Kindle software is a search feature.</p>
<div  style="float: left; padding: 8px;">
<img src="http://wp-media.s3.amazonaws.com/wp-content/uploads/2010/05/kindle_font.jpg" alt="" title="kindle_font" width="240" height="320" class="aligncenter size-full wp-image-334" />
</div>
<p>I would really like to have all my e-books in a single reader. Being forced to keep some in iBooks and others in the Kindle application really sucks, but I&#8217;m not holding my breath for a solution anytime soon. </p>
<p>Technical books are often used as references. Neither of the e-book reading applications do a good job with letting you keep multiple books open and rapidly switch between them. It would really improve the usefulness of the applications if you could keep more than one book open and use a multi-touch gesture to switch between them.</p>
<p>If you don&#8217;t have an iPad yet, run (don&#8217;t walk) to your nearest Apple store and pick one up. You won&#8217;t regret it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idevelopsoftware.com/2010/05/ipad-as-technical-book-reader-absolutely/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Better than Google: Real answers for Programmers, System Administrators and IT Professionals</title>
		<link>http://www.idevelopsoftware.com/2009/06/better-than-google-real-answers-for-programmers-system-administrators-and-it-professionals/</link>
		<comments>http://www.idevelopsoftware.com/2009/06/better-than-google-real-answers-for-programmers-system-administrators-and-it-professionals/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 21:30:50 +0000</pubDate>
		<dc:creator>bsmith</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tips from the Trenches]]></category>

		<guid isPermaLink="false">http://www.idevelopsoftware.com/?p=213</guid>
		<description><![CDATA[Technology is more complex now than ever. It seems like the diversity of topics a programmer, system administrator or IT professional must have some familiarity with grows exponentially. In the office it is all to common to hear someone say &#8220;Did you google it?&#8221; or &#8220;I found a post that looks like it might be [...]]]></description>
			<content:encoded><![CDATA[<p>Technology is more complex now than ever. It seems like the diversity of topics a programmer, system administrator or IT professional must have some familiarity with grows exponentially.  In the office it is all to common to hear someone say &#8220;Did you google it?&#8221; or &#8220;I found a post that looks like it might be related on google.&#8221; when trying to sort out complex technology issues.</p>
<p>Google is good, but real people working together, sharing their experience with each other and documenting the results for others to take advantage of works even better. Two sites that should be in every technologists bookmark list are <a href="http://www.stackoverflow.com">stackoverflow</a> and <a href="http://www.serverfault.com">serverfault</a>.</p>
<p>You can think of these sites as <i>social networking communities</i> with very focused areas of interest. Anyone can post a question to a site, anyone can provide an answer, and everyone votes on the best answers. Comments can be added to questions or answers, folks develop &#8220;street cred&#8221; by providing useful answers and eventually become recognized by their peers as knowledgeable on specific topics.</p>
<div style="text-align-left;">
  <a href="http://www.stackoverflow.com"><br />
    <img src="http://wp-media.s3.amazonaws.com/logos/stackoverflow_logo.png" alt="stackoverflow logo" border="0" /><br />
  </a>
</div>
<p>Stack Overflow is a collaboratively edited question and answer site for<br />
programmers – regardless of platform or language. It&#8217;s 100% free, no<br />
registration required.</p>
<div style="text-align-left;">
  <a href="http://www.serverfault.com"><br />
    <img src="http://wp-media.s3.amazonaws.com/logos/serverfault_logo.png" alt="serverfault logo" border="0" /><br />
  </a>
</div>
<p>Server Fault is a collaboratively edited question and answer site for system<br />
administrators and IT professionals – regardless of platform. It&#8217;s 100% free,<br />
no registration required.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idevelopsoftware.com/2009/06/better-than-google-real-answers-for-programmers-system-administrators-and-it-professionals/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up Unit Testing in Xcode 3.1</title>
		<link>http://www.idevelopsoftware.com/2008/07/setting-up-unit-testing-in-xcode-31/</link>
		<comments>http://www.idevelopsoftware.com/2008/07/setting-up-unit-testing-in-xcode-31/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 21:07:26 +0000</pubDate>
		<dc:creator>bsmith</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Tips from the Trenches]]></category>
		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://idvlpsw.wordpress.com/?p=111</guid>
		<description><![CDATA[Xcode includes OCUnit, so you don&#8217;t need to get a copy. But, you might want to take a look at their website (http://sente.epfl.ch/software/ocunit/) for information and tutorials on how OCUnit is intended to be used. If you are planning on doing Test Driven Development (TDD) you may also want to get the following packages: OCMock [...]]]></description>
			<content:encoded><![CDATA[<p>
Xcode includes OCUnit, so you don&#8217;t need to get a copy.  But, you might want to take a look at their website (http://sente.epfl.ch/software/ocunit/) for information and tutorials on how OCUnit is intended to be used.
</p>
<p>
If you are planning on doing Test Driven Development (TDD) you may also want to get the following packages:</p>
<ul>
<li>OCMock &#8211; OCMock is an Objective-C implementation of mock objects. (<a href="http://www.mulle-kybernetik.com/software/OCMock/">http://www.mulle-kybernetik.com/software/OCMock/</a>)</li>
<li>Hamcrest &#8211; library of matchers for building test expressions (<a href="http://code.google.com/p/hamcrest/">http://code.google.com/p/hamcrest/</a>)</li>
</ul>
<p>
Other good articles on Xcode Unit Testing that I came across:</p>
<ul>
<li>Unit Testing with OCUnit &#8211; <a href="http://www.macdevcenter.com/pub/a/mac/2004/04/23/ocunit.html?page=1">http://www.macdevcenter.com/pub/a/mac/2004/04/23/ocunit.html?page=1</a></li>
<li>Test Driving Your Code with OCUnit &#8211; <a href="http://developer.apple.com/tools/unittest.html">http://developer.apple.com/tools/unittest.html</a></li>
<li>Xcode unit testing articles &#8211; <a href="http://chanson.livejournal.com/tag/unit+testing">http://chanson.livejournal.com/tag/unit+testing</a></li>
<li>Unit Testing with Xcode &#8211; <a href="http://www.stiefels.net/2007/05/01/unit-testing-with-xcode/">http://www.stiefels.net/2007/05/01/unit-testing-with-xcode/</a></li>
</ul>
<p>
By reading through the documents references above I was able to get OCUnit up and running for one of my projects.  It took a bit of experimentation, but in the end it looks like OCUnit will work just fine for doing TDD in Xcode with Objective-C.  Anyone wanting to try out TDD should give it a try. The benefits for your project are significant.  Go for it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.idevelopsoftware.com/2008/07/setting-up-unit-testing-in-xcode-31/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

