<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3552471286890723880</id><updated>2012-02-16T10:10:57.734-05:00</updated><category term='ruby'/><category term='codesmith'/><category term='Python'/><category term='Book Review'/><category term='certification'/><category term='postgresql'/><category term='WCF'/><category term='riak'/><category term='erlang'/><category term='70-536'/><category term='AppEngine'/><category term='70-505'/><category term='70-562'/><category term='70-503'/><category term='70-561'/><category term='ubuntu'/><category term='Seven_Databases_In_Seven_Weeks'/><category term='70-565'/><category term='SOA'/><category term='.NET 3.5'/><title type='text'>Tanner Watson</title><subtitle type='html'>Pragmatic Programmer</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tannerwatson.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tannerwatson.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tanner Watson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3552471286890723880.post-4618555020497971237</id><published>2011-12-24T01:45:00.000-05:00</published><updated>2011-12-24T01:45:01.035-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='riak'/><category scheme='http://www.blogger.com/atom/ns#' term='erlang'/><category scheme='http://www.blogger.com/atom/ns#' term='Seven_Databases_In_Seven_Weeks'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu 11.10 - Riak Installation</title><content type='html'>The beta version of the book &lt;a href="http://pragprog.com/book/rwdata/seven-databases-in-seven-weeks"&gt;Seven Databases in Seven Weeks&lt;/a&gt; was updated from using Riak 0.14.1 to 1.0.2. Getting everything set up correctly on Ubuntu was a bit of a pain at first. This was until I realized that the version of Erlang referenced in the book incorrect. The book references that R13B04 was needed , but in fact R14B03 is needed.&lt;br /&gt;&lt;br /&gt;Another big problem that I encountered was installing Riak from the source archive. After decompressing and running make all I was getting an error referring to git. Not too sure why make was expecting to be run in an initialized repository.In case others have had installation problems below are the steps to set up Riak 1.0.2 on Ubuntu 11.04.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Installing Erlang&lt;/b&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install curl build-essential libncurses5-dev openssl libssl-dev fop xsltproc&lt;/code&gt;&lt;br /&gt;&lt;code&gt;curl -O https://raw.github.com/spawngrid/kerl/master/kerl&lt;/code&gt;&lt;br /&gt;&lt;code&gt;chmod a+x kerl&lt;/code&gt;&lt;br /&gt;&lt;code&gt;./kerl build R14B03 r14b03&lt;/code&gt;&lt;br /&gt;&lt;code&gt;sudo ./kerl install r14b03 /opt/erlang/r14b03 &lt;/code&gt;&lt;code&gt;. /opt/erlang/r14b03/activate&lt;/code&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;b&gt;Installing Riak&lt;/b&gt;&lt;br /&gt;&lt;code&gt;sudo apt-get install build-essential libc6-dev-i386&lt;/code&gt;&lt;br /&gt;&lt;code&gt;git clone https://github.com/basho/riak.git riak&lt;/code&gt;&lt;br /&gt;&lt;code&gt;cd riak&lt;/code&gt;&lt;br /&gt;&lt;code&gt;git checkout riak-1.0.2&lt;/code&gt;&lt;br /&gt;&lt;code&gt;make all&lt;/code&gt;&lt;br /&gt;&lt;code&gt;make devrel&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3552471286890723880-4618555020497971237?l=tannerwatson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tannerwatson.blogspot.com/feeds/4618555020497971237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tannerwatson.blogspot.com/2011/12/ubuntu-1110-riak-installation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/4618555020497971237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/4618555020497971237'/><link rel='alternate' type='text/html' href='http://tannerwatson.blogspot.com/2011/12/ubuntu-1110-riak-installation.html' title='Ubuntu 11.10 - Riak Installation'/><author><name>Tanner Watson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3552471286890723880.post-31400869139289355</id><published>2011-12-11T00:57:00.001-05:00</published><updated>2011-12-11T01:21:03.432-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Seven_Databases_In_Seven_Weeks'/><category scheme='http://www.blogger.com/atom/ns#' term='postgresql'/><title type='text'>PostgreSQL 9.1: Installation Of Cube Extension</title><content type='html'>So I started working through&amp;nbsp;&lt;a href="http://pragprog.com/book/rwdata/seven-databases-in-seven-weeks"&gt;Seven Databases In Seven Weeks&lt;/a&gt;. The first database introduced is PostgreSQL. With having zero experience with setting up or configuring PostgreSQL it took me a while to finally figure out how to install all of the modules/extensions that the tutorial requires. Below are the commands used to install the required modules PostgreSQL.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;psql book -c "CREATE EXTENSION tablefunc"&lt;/code&gt;&lt;br /&gt;&lt;code&gt;psql book -c "CREATE EXTENSION dict_xsync"&lt;/code&gt;&lt;br /&gt;&lt;code&gt;psql book -c "CREATE EXTENSION fuzzystrmatch"&lt;/code&gt;&lt;br /&gt;&lt;code&gt;psql book -c "CREATE EXTENSION pg_trgm"&lt;/code&gt;&lt;br /&gt;&lt;code&gt;psql book -c "CREATE EXTENSION cube"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After that you should be good to go in working through the chapter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3552471286890723880-31400869139289355?l=tannerwatson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tannerwatson.blogspot.com/feeds/31400869139289355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tannerwatson.blogspot.com/2011/12/postgresql-91-installation-of-cube.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/31400869139289355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/31400869139289355'/><link rel='alternate' type='text/html' href='http://tannerwatson.blogspot.com/2011/12/postgresql-91-installation-of-cube.html' title='PostgreSQL 9.1: Installation Of Cube Extension'/><author><name>Tanner Watson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3552471286890723880.post-633461706505249756</id><published>2011-12-07T09:42:00.001-05:00</published><updated>2011-12-07T09:51:25.781-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codesmith'/><title type='text'>CodeSmith Generator Download Archive</title><content type='html'>For those of you who still haven't upgraded to CodeSmith 6 you might be surprise that CodeSmith no longer has links to the previous version. Yes, the previous version is still hosted on the website, but without knowing the exact url you would never find it.&amp;nbsp;The links that I found all point to the&amp;nbsp;&lt;a href="http://www.codesmithtools.com/downloads"&gt;generic download page&lt;/a&gt;, which only contains the downloads for the latest version of CodeSmith Generator.&lt;br /&gt;&lt;br /&gt;To help facilitate the need for a download archive below are the links to both the Standard and Professional version of CodeSmith Generator.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codesmithtools.com/download/GeneratorProfessional-53.msi"&gt;CodeSmith Generator 5.3.4.12823 Professional&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.codesmithtools.com/download/GeneratorStandard-53.msi"&gt;CodeSmith Generator 5.3.4.12823 Standard&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3552471286890723880-633461706505249756?l=tannerwatson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tannerwatson.blogspot.com/feeds/633461706505249756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tannerwatson.blogspot.com/2011/12/codesmith-generator-download-archive.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/633461706505249756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/633461706505249756'/><link rel='alternate' type='text/html' href='http://tannerwatson.blogspot.com/2011/12/codesmith-generator-download-archive.html' title='CodeSmith Generator Download Archive'/><author><name>Tanner Watson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3552471286890723880.post-4143359268308524071</id><published>2011-10-09T13:18:00.000-04:00</published><updated>2011-12-07T09:41:06.498-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AppEngine'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>Prepare Ubuntu 11.04 For Google AppEngine Development</title><content type='html'>1) Install Python 2.5&lt;br /&gt;&lt;div&gt;The AppEngine SDK requires Python 2.5 but sadly Ubuntu 11.04 has 2.7.1 installed by default. The easiest way to get Python 2.5 installed on your machine is to do the following.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open a terminal and and type the following commands.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;sudo add-apt-repository ppa:fkrull/deadsnakes&amp;nbsp;&lt;/span&gt;sudo apt-get update&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;sudo apt-get install python2.5&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;2) Install AppEngine SDK&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;Download the current version of the AppEngine Python SDK (&lt;a href="http://googleappengine.googlecode.com/files/google_appengine_1.5.4.zip"&gt;1.5.4&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;Extract the archive to your desired location. I just installed extracted the archive to my $HOME directory.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;3) Edit the SDK Scripts&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;Unfortunately, since the SDK will only work for Python 2.5 we need to edit each of the SDK scripts to ensure that Python 2.5 is used when running the scripts. Remember, the default version of Python on Ubuntu 11.04 is 2.7.1. If we don't edit the scripts to use Python 2.5 the scripts will be run using the default Python interpreter.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;Open each of the following files.&lt;/span&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;/$HOME/google_appengine/appcfg.py&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;/$HOME/google_appengine/bulkload_client.py&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;/$HOME/google_appengine/bulkloader.py&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;/$HOME/google_appengine/dev_appserver.py&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;/$HOME/google_appengine/gen_protorpc.py&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;/$HOME/google_appengine/remote_api_shell.py&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;Replace the first line of each of the files that reads &lt;b style="font-style: italic;"&gt;#!/usr/bin/env python &lt;/b&gt;with one that reads &lt;b&gt;&lt;i&gt;#!/usr/bin/env python2.5&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;4) Add SDK To The $Path Environment Variable&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;You want to add the SDK directory to the $PATH environment variable to make executing the SDK scripts much easier. As opposed to having to type in the full path of the SDK script, &lt;i&gt;$HOME/google_appengine/dev_appserver.py&lt;/i&gt;, you will only have to type &lt;i&gt;dev_appserver.py.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;Open your $HOME/.bashrc file and scroll to the very bottom.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: monospace;"&gt;Add the following lines of code&lt;/span&gt;&lt;br /&gt;&lt;code&gt;# set PATH so it includes the Google AppEngine SDK&lt;br /&gt;if [ -d "$HOME/google_appengine" ] ; then&lt;br /&gt;    PATH="$HOME/google_appengine:$PATH"&lt;br /&gt;fi&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;That's pretty much it.&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3552471286890723880-4143359268308524071?l=tannerwatson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tannerwatson.blogspot.com/feeds/4143359268308524071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tannerwatson.blogspot.com/2011/10/prepare-ubuntu-1104-for-google.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/4143359268308524071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/4143359268308524071'/><link rel='alternate' type='text/html' href='http://tannerwatson.blogspot.com/2011/10/prepare-ubuntu-1104-for-google.html' title='Prepare Ubuntu 11.04 For Google AppEngine Development'/><author><name>Tanner Watson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3552471286890723880.post-6088032855868288445</id><published>2011-08-11T20:44:00.002-04:00</published><updated>2011-08-11T20:56:10.897-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><title type='text'>Taking Another Sip of Ruby</title><content type='html'>It's been about 5 years since I've touched Ruby. I've always had an interest in the language, but never haven't ever been really seriously motivated to seriously learn.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So last night I decided to try and pick it up again. This time though, actually learn to breathe Ruby.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Installation couldn't have been easier if it tried. The first step was obvious:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;USER$ sudo apt-get install ruby&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This command installed Ruby 1.8.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step number one down, about a million to go.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3552471286890723880-6088032855868288445?l=tannerwatson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tannerwatson.blogspot.com/feeds/6088032855868288445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tannerwatson.blogspot.com/2011/08/taking-another-sip-of-ruby.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/6088032855868288445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/6088032855868288445'/><link rel='alternate' type='text/html' href='http://tannerwatson.blogspot.com/2011/08/taking-another-sip-of-ruby.html' title='Taking Another Sip of Ruby'/><author><name>Tanner Watson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3552471286890723880.post-6925223034061576972</id><published>2010-12-28T14:56:00.002-05:00</published><updated>2010-12-28T15:21:31.885-05:00</updated><title type='text'>Making The Move To Github</title><content type='html'>This week I'm making the switch from Beanstalk to github. I've heard a lot about git so it's really exciting to make the switch from Subversion.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3552471286890723880-6925223034061576972?l=tannerwatson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tannerwatson.blogspot.com/feeds/6925223034061576972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tannerwatson.blogspot.com/2010/12/making-move-to-github.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/6925223034061576972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/6925223034061576972'/><link rel='alternate' type='text/html' href='http://tannerwatson.blogspot.com/2010/12/making-move-to-github.html' title='Making The Move To Github'/><author><name>Tanner Watson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3552471286890723880.post-4324425432021941395</id><published>2009-01-10T14:30:00.008-05:00</published><updated>2009-01-11T15:08:16.001-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SOA'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET 3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='Book Review'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>Pro WCF: Practical Microsoft SOA Implementation</title><content type='html'>&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Title:&lt;/span&gt; Pro WCF: Practical Microsoft SOA Implementation&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Authors:&lt;/span&gt; Amit Bahree, Shawn Cicoria, Dennis Mulder, Nishith Pathak, and Chris Peiris&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Publisher&lt;/span&gt;: Apress&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;ISBN10:&lt;/span&gt; 1-59059-702-8&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;ISBN13:&lt;/span&gt; 978-1-59059-702-6&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Stars:&lt;/span&gt; ** 2/5&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Finishing this book I came away feeling a bit disappointed. Apart from &lt;a href="http://www.pragprog.com/"&gt;The Pragmatic Bookshelf&lt;/a&gt; I hold Apress as the bar for other publishers (Microsoft Press sadly right now &lt;a href="http://www.microsoft.com/learning/books/default.mspx"&gt;Microsoft Press&lt;/a&gt; lies at the bottom) and this book doesn't make the grade. If I didn't know who the publisher was before reading this book I would never have guessed it was Apress.&lt;/div&gt;&lt;div&gt; &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Writing Style&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;You can tell that this book was written by multiple authors. Though the writing style did seem to flow on most occasions, in others things seemed to jump around.  This is especially true when it came to the QuickReturns Ltd. case study. Early on in the book the transition from discussing a technical aspect to the case study was seamless. Later on in the a transition from the two was very abrupt. This made it very obvious that the authors working on the meat of the book didn't always work together with the author of the case study. This made the book seem a bit too dry to keep anyone's attention for too long.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;It also seemed that the authors were trying to hit a certain page count in writing the book. Every few pages it will seem like your reading the same paragraph over again that you read in a previous chapter. If all of the filler was taken out the page count would have been reduced by at least 10%.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Best Practices&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Another disappointment was the fact that the authors kept saying something to the effect of "this is just an example and is not a best practice" but then never really went into what the best practices are. This book should not have ended with chapter 13 discussing the implementation of SOA interoperability. Instead the book should have continued on to chapter 14 to present the QuickReturns Ltd. case study in a real world, enterprise, best practices scenario. With the lack of this final chapter the book is left dry and somewhat useless outside of academia.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Errors&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Littered throughout the book are numerous technical and grammatical mistakes. When I started reading the book I had the full entintion of making note of each mistake to report back to Apress, but sadly I only made it a third of the way through before giving up, and glad I did. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;The book has been out for almost two years (January 15, 2007) and Apress only has one correction on the &lt;a href="http://apress.com/book/errata/597"&gt;errata page&lt;/a&gt;. This shows that there have been numerous readers like me who took the time to point out the errors but have gone unnoticed by Apress and the authors.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;I know I've said a lot of negative things about this book but overall for me it served its purpose. My intention for this book was to be a supplement for &lt;a href="http://www.amazon.com/MCTS-Self-Paced-Training-70-503-PRO-Certification/dp/0735625654/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1231703345&amp;amp;sr=8-2"&gt;Microsoft's .Net Framework 3.5 - Windows Communication Foundation Training Kit&lt;/a&gt; in my attempt to pass the 70-503 exam at the end of this month. In that regard, I'll say again, it served its purpose.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Links:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://apress.com/book/view/1590597028"&gt;http://apress.com/book/view/1590597028&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.amazon.com/Pro-WCF-Practical-Microsoft-Implementation/dp/1590597028/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1231691234&amp;amp;sr=8-1"&gt;http://www.amazon.com/Pro-WCF-Practical-Microsoft-Implementation/dp/1590597028/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1231691234&amp;amp;sr=8-1&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3552471286890723880-4324425432021941395?l=tannerwatson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tannerwatson.blogspot.com/feeds/4324425432021941395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tannerwatson.blogspot.com/2009/01/pro-wcf-practical-microsoft-soa.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/4324425432021941395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/4324425432021941395'/><link rel='alternate' type='text/html' href='http://tannerwatson.blogspot.com/2009/01/pro-wcf-practical-microsoft-soa.html' title='Pro WCF: Practical Microsoft SOA Implementation'/><author><name>Tanner Watson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3552471286890723880.post-8686301225040387516</id><published>2008-12-26T17:19:00.003-05:00</published><updated>2008-12-29T09:24:07.711-05:00</updated><title type='text'>Developer vs Engineer</title><content type='html'>Over the holiday weekend my fiance gave the most simplistic and easy to understand explanation of the difference between a developer and an engineer: &lt;span style="font-style: italic;"&gt;The engineer is the person who designs the coloring books while the developer is the one who colors in the pictures.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3552471286890723880-8686301225040387516?l=tannerwatson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tannerwatson.blogspot.com/feeds/8686301225040387516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tannerwatson.blogspot.com/2008/12/developer-vs-engineer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/8686301225040387516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/8686301225040387516'/><link rel='alternate' type='text/html' href='http://tannerwatson.blogspot.com/2008/12/developer-vs-engineer.html' title='Developer vs Engineer'/><author><name>Tanner Watson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3552471286890723880.post-7046178301529769700</id><published>2008-12-23T15:00:00.003-05:00</published><updated>2009-01-11T15:09:55.179-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='70-503'/><category scheme='http://www.blogger.com/atom/ns#' term='70-536'/><category scheme='http://www.blogger.com/atom/ns#' term='70-565'/><category scheme='http://www.blogger.com/atom/ns#' term='70-505'/><category scheme='http://www.blogger.com/atom/ns#' term='certification'/><category scheme='http://www.blogger.com/atom/ns#' term='70-562'/><category scheme='http://www.blogger.com/atom/ns#' term='70-561'/><title type='text'>Post Graduation</title><content type='html'>Five and a half years ago I started attending the University of Louisville and today I am officially a graduate. With a bachelors degree in hand I have to ask myself "now what". What am I going to do with all of this extra time on my hands. Eventually I want to go back to school, maybe wait six months to a year, but what should I do until then. Since I love to learn and want to keep my mind fresh I figure that I would do some studying on my own and what better way than to study for various certifications.&lt;br /&gt;&lt;br /&gt;To keep things a bit interesting I'm going shoot for gaining a certification every month. Like, I did for both the 70-536, and 70-528 I'll give myself only a month to study and take each exam. Of course I wont schedule the exam until after I'm ready, but I don't want to make sure that I study and study hard.&lt;br /&gt;&lt;br /&gt;In preparation for the exams I'll be utilizing the practice tests and flash cards from Transcender.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Certification Schedule:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;January 30, 2009: MCTS Exam 70-503 - Microsoft .NET Framework 3.5, Windows Communication Foundation Application Development&lt;/li&gt;&lt;li&gt;February 27, 2009: MCTS Exam 70-562 - Microsoft .NET Framework 3.5, ASP.NET Application Development&lt;/li&gt;&lt;li&gt;March 27, 2009: Microsoft MCTS Exam 70-505 - Microsoft .NET Framework 3.5, Windows Forms Application Development&lt;br /&gt;&lt;/li&gt;&lt;li&gt;April 30, 2009: MCTS Exam 70-561 - Microsoft .NET Framework 3.5, ADO.NET Application Development&lt;br /&gt;&lt;/li&gt;&lt;li&gt;May 29, 2009: MCPD Exam 70-565 - Designing And Developing Enterprise Applications Using The Microsoft .NET Framework 3.5&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Useful Links:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/learning/en/us/exams/70-503.mspx"&gt;http://www.microsoft.com/learning/en/us/exams/70-503.mspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/learning/en/us/exams/70-562.mspx"&gt;http://www.microsoft.com/learning/en/us/exams/70-562.mspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/learning/en/us/exams/70-505.aspx"&gt;http://www.microsoft.com/learning/en/us/exams/70-505.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/learning/en/us/exams/70-561.mspx"&gt;http://www.microsoft.com/learning/en/us/exams/70-561.mspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/learning/en/us/Exams/70-565.aspx"&gt;http://www.microsoft.com/learning/en/us/Exams/70-565.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.transcender.com/"&gt;http://www.transcender.com/&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3552471286890723880-7046178301529769700?l=tannerwatson.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tannerwatson.blogspot.com/feeds/7046178301529769700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tannerwatson.blogspot.com/2008/12/post-graduation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/7046178301529769700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3552471286890723880/posts/default/7046178301529769700'/><link rel='alternate' type='text/html' href='http://tannerwatson.blogspot.com/2008/12/post-graduation.html' title='Post Graduation'/><author><name>Tanner Watson</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
