<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>What&#039;s Gary Thinking Now?</title>
	<atom:link href="http://gpollice.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gpollice.wordpress.com</link>
	<description>Gary Pollice&#039;s thoughts and whimsies</description>
	<lastBuildDate>Wed, 07 Dec 2011 14:56:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='gpollice.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>What&#039;s Gary Thinking Now?</title>
		<link>http://gpollice.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://gpollice.wordpress.com/osd.xml" title="What&#039;s Gary Thinking Now?" />
	<atom:link rel='hub' href='http://gpollice.wordpress.com/?pushpress=hub'/>
		<item>
		<title>A Case for Virtualization</title>
		<link>http://gpollice.wordpress.com/2011/12/07/a-case-for-virtualization/</link>
		<comments>http://gpollice.wordpress.com/2011/12/07/a-case-for-virtualization/#comments</comments>
		<pubDate>Wed, 07 Dec 2011 14:56:06 +0000</pubDate>
		<dc:creator>gpollice</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://gpollice.wordpress.com/?p=139</guid>
		<description><![CDATA[Maybe I&#8217;m late to the party, but until recently I had not paid much attention to using virtual machines on a regular basis. I figured that since I had a couple of desktop Windows systems and a couple of Mac notebooks, I&#8217;d be able to use almost any software I wanted without any problems. Well, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=139&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Maybe I&#8217;m late to the party, but until recently I had not paid much attention to using virtual machines on a regular basis. I figured that since I had a couple of desktop Windows systems and a couple of Mac notebooks, I&#8217;d be able to use almost any software I wanted without any problems. Well, that&#8217;s probably true, but when you begin to use lots of different software tools, especially open source tools that have many dependencies, things begin to get really sticky. And, when you try to figure out how to put together the software needed for students in your courses&#8230;well, let&#8217;s just say that if I had any hair left on my head, it would be gone. I am convinced that <em>dependencies are the hobgoblins of open source</em>.</p>
<p>If you&#8217;ve read some of my more recent posts, I&#8217;ve been playing with Cucumber for use in my upcoming Testing for Developers course. I want the students to be exposed to lots of tools and that means that we have a need for lots of different languages, especially some of the dynamic languages, on the system. While Microsoft makes developing software for Windows relatively easy, it&#8217;s not my favorite platform for doing anything outside of the Microsoft ecosystem. I understand that and I&#8217;m not complaining. In the words of Bill Belichick, &#8220;it is what it is.&#8221; So, I do almost all of my development on my Macbook. It&#8217;s fast and it&#8217;s pretty much Linux (the key words here are <em>pretty much</em>).</p>
<p>If you stick to just Java, C, or C++ it turns out that almost any platform works as well as the other. I mean, if you load MinGW onto a Windows system you have the ability to develop from the C family. Add Eclipse and you&#8217;ve got a pretty portable IDE. But, when you start to look out from these languages, things get really murky.</p>
<h3>A Concrete Example</h3>
<p>Let&#8217;s look at a real example of what I&#8217;m getting at, setting up Cucumber for the class. We&#8217;ll start by just considering my Mac setup. Cucumber is written in Ruby and works really well if you have simple scenarios that you use to exercise some simple Ruby code. By simple Ruby code I mean code that has no GUI, database, Internet, or other features. In other words, code that&#8217;s probably not very useful for a real application.</p>
<p>As I went through the examples in <em><a href="http://pragprog.com/book/hwcuc/the-cucumber-book">The Cucumber Book</a></em>, I began to need additional components like Sinatra, Capybara, and a many others that I have no experience with. Well, how do you get all of this to work? Do they all really work together seamlessly? Maybe, if you have the right versions and the right versions of Ruby and other gems that you have.</p>
<p>It turns out that I had four versions of Ruby on my system. I had ruby 1.8.7, 1.9.1, 1.9.2, and MacRuby. What&#8217;s worse is that I didn&#8217;t realize it. Some of them were installed in a standard location (whatever that means). If I reordered the sequence of directories in my PATH, I got a different version of Ruby. I needed some consistency. I was using Ruby 1.9.1 and things were going along fairly well when I needed to get the service_manager gem. I installed is using the standard &#8220;<tt>gem install</tt>&#8221; approach. Then, when I tried to use it, there was a problem with <tt>readline</tt>.</p>
<p>After several hours of searching the Web, tweeting to a few friends, posting on stackoverflow, and <em>The Cucumber Book</em> forum, I got an answer that let me get past this. But things had deteriorated to the point that I had no idea what was installed, where. I had used <em><a href="http://gembundler.com/">bundler</a></em> for some things, <em>gem</em> for others, and done some downloading packages, source code that I built, and other ways of getting the software on my system. I also tried <em><a href="http://beginrescueend.com/">rvm</a></em>, but frankly by this time I wasn&#8217;t sure what I was doing and the documentation wasn&#8217;t very helpful. Do you need to be using bash? How do you get it working with other shells? I was sitting on a software stack that was about to come crashing down. I could feel it in my bones.</p>
<h3>Rewind</h3>
<p>I decided to remove everything Ruby on my system and start over. Okay, that was another few hours, making sure that I copied everything I removed just in case I really messed it up. I finally was ready to start over. Thanks to Matt Wynne, one of the authors of <em>The Cucumber  Book</em>, I ended up using <em>rvm</em>, the Gemfile from the latest version of the installation appendix in the book, and I got the right version of Ruby installed along with the gems and packages I needed. Now, this wasn&#8217;t perfect, but it was manageable. Some of the documentation was a little bit off and I had to get on the rvm IRC channel to ask for help, but I did it.</p>
<h3>Enter the Virtual Machine</h3>
<p>Well, this was great. I now had a consistent installation on my Mac. Most of my students don&#8217;t use Mac. Some use Windows, some use Linux. Since they&#8217;re computer science students—advanced undergraduates and graduate students—I&#8217;m safe assuming that they know their way around Linux. If I could get the software configured on a Linux virtual machine, I could just give the students the VM image. Then I could either add new software for other topics I expect to cover in the course or simply create a different VM image.</p>
<p>I&#8217;ve been using VirtualBox for some time now in order to try out different versions of Linux, running Windows on my Mac, and so on. It&#8217;s free, runs on any x86 architecture, and just seems to work pretty well. So, that was the plan. I created the VM, loading on the latest Ubuntu Linux, made sure that had some basic software like Java and a few other components. Then I went through my checklist of how to get the right Ruby and Cucumber installed and in less than a half hour I had it running. Take a snapshot so that if I try to extend the image and mess it up I can back up. Voilà, the students can work without having to lose sleep over getting their system set up. There are other things they&#8217;ll lose sleep over that are much more important.</p>
<p>The VM approach, and the ability to snapshot and branch off of different snapshots makes life so much easier for me as a teacher and it will save the students a tremendous amount of time. I&#8217;m sure some of the uber-geeks in the class will set up the software on their systems because that&#8217;s in their DNA. However, for those who really want to concentrate on the course topics, they can now do that without the hassle of being a system administrator. I will definitely use this approach more in future courses.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpollice.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpollice.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpollice.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpollice.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpollice.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpollice.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpollice.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpollice.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpollice.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpollice.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpollice.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpollice.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpollice.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpollice.wordpress.com/139/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=139&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpollice.wordpress.com/2011/12/07/a-case-for-virtualization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05fffbf2fa7dce6ca1efc99f13c055b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gpollice</media:title>
		</media:content>
	</item>
		<item>
		<title>Cucumber is Cool and so is The Cucumber Book</title>
		<link>http://gpollice.wordpress.com/2011/12/01/cucumber-is-cool-and-so-is-the-cucumber-book/</link>
		<comments>http://gpollice.wordpress.com/2011/12/01/cucumber-is-cool-and-so-is-the-cucumber-book/#comments</comments>
		<pubDate>Thu, 01 Dec 2011 19:37:06 +0000</pubDate>
		<dc:creator>gpollice</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[Book Reviews]]></category>

		<guid isPermaLink="false">http://gpollice.wordpress.com/?p=137</guid>
		<description><![CDATA[So, I&#8217;ve been learning Cucumber—a tool for writing executable acceptance tests—in preparation for my upcoming course, Testing for Developers. The course will be heavy on the theory of testing, but from the viewpoint of the developer. How do you build testability into your code, what techniques can you use, and what tools are there that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=137&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;ve been learning Cucumber—a tool for writing executable acceptance tests—in preparation for my upcoming course, <em>Testing for Developers</em>. The course will be heavy on the theory of testing, but from the viewpoint of the developer. How do you build testability into your code, what techniques can you use, and what tools are there that will help you do test automation. Most of my students will already know the basic xUnit tools, but we will be going much more into mock objects and other techniques for writing really good unit tests. We&#8217;ll hit Test-Driven Development (TDD) hard and we&#8217;ll look at how TDD and Behavior-Driven Development (BDD) work together, etc. We&#8217;ll also be wanting to work with embedded software systems and building test tools when necessary, or at least the glue to help tools work together.</p>
<p>This is an ambitious undertaking. I had heard about Cucumber when I looked at RSpec several months ago. RSpec was a bit too limited for what I wanted. Then I got a copy of <a title="The Cucumber Book" href="http://pragprog.com/book/hwcuc/the-cucumber-book">The Cucumber Book</a> by Matt Wynne and Aslak Hellesøy, published by The Pragmatic Bookshelf. After reading most of the book and a few weeks of playing around with Cucumber, I&#8217;m hooked. Cucumber takes the place of several tools I was thinking about introducing to my class, and allows me to into depth in several areas, using a single platform. If you&#8217;re thinking about learning Cucumber, or want to learn something about it, get this book.</p>
<p>The style of the book is great. It&#8217;s easy to read and describes how to use Cucumber in several bite-sized pieces. Some readers  may even find that the pieces are nibble-sized and want bigger bites. I urge you to avoid this. Install the software and go through each exercise in the steps described, even though you know what you might need to do in the next few steps. This will help you develop your intellectual muscle memory for using Cucumber. Take time to taste each bite, no matter how small it may be, because there is some new spice that was added that might be subtle if you skip over the step.</p>
<p>The first part of the book, chapters 1-6, introduces you to Cucumber fundamentals. Actually, this part does a little more. It teaches you something about BDD as well. If you&#8217;re really not interested in learning about BDD, you can skim chapters five and six, but I would not recommend skipping them. By the end of the first section I was able to do some useful things with Cucumber and used it to demonstrate requirement specification to my current undergraduate software engineering class.</p>
<p>The second part of the book, chapters 7-10, are chapters you need to read and work through if you want to become competent with Cucumber. Again, some of the discussions seemed too small to me, but after reflecting upon what I learned, I think the level is just right. Some of what you learn in this part of the book is how to work with some other tools to use databases and Web pages in your testing.</p>
<p>The third part of the book is one that does not have to be read in any special order, or even at all. But, if you really want to understand how to use Cucumber to define and (acceptance) test Web applications (written in Rails or otherwise) and other types of applications, you need to have these chapters available. So, skim them at least and then refer to them as necessary.</p>
<p>Is there a downside to this book? Well, not to the book itself. The fact is that Cucumber, like many other open source projects works in a specific inter-dependent ecosystem. Setting up Cucumber and its dependents and other pieces you might want like Sinatra, Capybara, etc. can be frustrating; especially if you want to do this on multiple platforms. If you&#8217;re not a Ruby expert, you may run into problems and will need to do some searching for answers or post to the forum for the book at the Pragmatic Bookshelf. But don&#8217;t let this scare you away. Cucumber is a good tool to learn. Whether you use it regularly or only for special occasions or specific projects, you will think a little bit differently about how you build software.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpollice.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpollice.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpollice.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpollice.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpollice.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpollice.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpollice.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpollice.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpollice.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpollice.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpollice.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpollice.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpollice.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpollice.wordpress.com/137/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=137&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpollice.wordpress.com/2011/12/01/cucumber-is-cool-and-so-is-the-cucumber-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05fffbf2fa7dce6ca1efc99f13c055b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gpollice</media:title>
		</media:content>
	</item>
		<item>
		<title>Sometimes I feel like an antique: tcsh -&gt; bash</title>
		<link>http://gpollice.wordpress.com/2011/11/12/sometimes-i-feel-like-an-antique-tcsh-bash/</link>
		<comments>http://gpollice.wordpress.com/2011/11/12/sometimes-i-feel-like-an-antique-tcsh-bash/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 22:34:30 +0000</pubDate>
		<dc:creator>gpollice</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://gpollice.wordpress.com/?p=135</guid>
		<description><![CDATA[The other day I was doing something in the Linux shell and one of my students expressed surprise that I was using tcsh. Today, everyone seems to be using the more modern bash, or Bourne Again Shell. I got to thinking why I use tcsh and realized that it&#8217;s just so comfortable. As things change [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=135&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The other day I was doing something in the Linux shell and one of my students expressed surprise that I was using tcsh. Today, everyone seems to be using the more modern bash, or Bourne Again Shell. I got to thinking why I use tcsh and realized that it&#8217;s just so comfortable. As things change so rapidly and there&#8217;s so much to learn I tend not to relearn something when I don&#8217;t have to.</p>
<p>But then I thought, &#8220;am I missing out on something?&#8221; Sometimes I think it&#8217;s good to just learn a different way of doing things for the fun (or frustration of it). So today I decided to become a little bit better at bash. Now, like any of the shells, the man page for bash is pretty daunting. But all I wanted to do was set up an account on a clean Ubuntu Linux system that I&#8217;m preparing for use in a testing course next term. I&#8217;m creating a <a title="VirtualBox home" href="https://www.virtualbox.org/">VirtualBox</a> machine image so that all of the students will have the same environment for doing their work. If you haven&#8217;t tried VirtualBox, I highly recommend it as a choice for virtualization. I&#8217;ve used it hosted on Mac, Windows, and Linux and it works just fine.</p>
<p>So, after I created the VM for Ubuntu I wanted to have some of the things that are familiar to me when I use tcsh as my shell available in bash. Mainly I wanted a prompt that shows something like &#8220;<tt>gpollice [n]: </tt>&#8220;, where <tt>n</tt> is simply the current command in the command history. I also wanted to have some simple shortcuts that I alias, such as <tt>ls</tt> as a rename for <tt>ls -CF</tt> and <tt>ll</tt> for <tt>ls -l</tt>.</p>
<p>In tcsh, these are simple aliases that look like this in my .tcshrc file:</p>
<pre>alias ll ls -l
alias ls ls -CF</pre>
<p>The conversion to bash is simple. bash assumes that you want to put your aliases together and the default .bashrc file includes a file called .bash_aliases where you can put all of your aliases. The two aliases above convert directly with the addition of an equal sign separating the alias name and its contents. The aliases I have in .bash_aliases are:</p>
<pre>alias g='grep -i'
alias ls='ls -CF'
alias ll='ls -l'
alias la='ls -A'
alias up='cd ..;pwd'</pre>
<p>I was pretty confident that the conversion would be pretty easy. I next wanted to get the prompt configured and finding the place in .bashrc was pretty easy. But, I wasn&#8217;t sure how I was going to get the history count. In tcsh, I do it this way:</p>
<pre>set prompt = "`whoami` [\!]: "</pre>
<p>In my .bashrc file I simply inserted the line:</p>
<pre>PS1 = "`whoami` [\!]: "</pre>
<p>It was just a matter of finding out what I had to change, and it was <tt>PS1</tt>, instead of <tt>prompt</tt>.</p>
<p>Now for the hard part. There is a set of aliases that I&#8217;ve used since 1986 that I got from Bill McKeeman at the Wang Institute of Graduate Studies. It&#8217;s a neat way of <em>bookmarking</em> directories and getting back to them quickly. In tcsh, it&#8217;s a set of aliases that look like this:</p>
<pre>alias listwork	'ls -al ~/.wrk* | fgrep '.wrk' | sed "s/^.*.\.wrk\.//"'
alias rmwork	'rm -f ~/.wrk."\!*"'
alias setwork	'rm -f ~/.wrk."\!*"; ln -s "`pwd -P`" ~/.wrk."\!*"'
alias work	'cd ~/.wrk."\!*";echo "pwd: `pwd -P`";cd `pwd -P`;ls;'</pre>
<p>This simply creates soft links to the directories in my home directory that are prefixed with &#8220;.wrk.&#8221; It&#8217;s an elegant way to do quick navigation. I would be lost without this. Since everything came along pretty easily thus far I was hopeful that I&#8217;d have my bash environment set up pretty quickly. <strong>WRONG!</strong> I spent the afternoon tracking down how to actually get it done. In the process, I learned about shell functions in bash and found that they really are nice and simplify a lot of things. I suspect I&#8217;ll now go crazy and put a ton of these into my environment;mdash&amp;but that&#8217;s for another time.</p>
<p>Without going into details, the solution to this was to add these lines to my .bash_aliases file.</p>
<pre>setwork () { rm -f ~/.wrk.$1; ln -s "`pwd -P`" ~/.wrk.$1; }
listwork () { ls -al ~/.wrk* | fgrep '.wrk' | sed "s/^.*.\.wrk\.//"; }
rmwork () { rm -f ~/.wrk.$1; }
work () { cd ~/.wrk.$1; cd `pwd -P`; echo "pwd: `pwd -P`"; ls; }</pre>
<p>The thing to remember is that when you want arguments to shell commands, you can&#8217;t use an alias. You need to use a function. But functions are not hard to learn. Once I found the right information it took just a few minutes.</p>
<p>I might become a bash user after all. At least this old duck can still learn new tricks.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpollice.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpollice.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpollice.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpollice.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpollice.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpollice.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpollice.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpollice.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpollice.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpollice.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpollice.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpollice.wordpress.com/135/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpollice.wordpress.com/135/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpollice.wordpress.com/135/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=135&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpollice.wordpress.com/2011/11/12/sometimes-i-feel-like-an-antique-tcsh-bash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05fffbf2fa7dce6ca1efc99f13c055b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gpollice</media:title>
		</media:content>
	</item>
		<item>
		<title>Agile and the second chasm: history does repeat itself</title>
		<link>http://gpollice.wordpress.com/2011/11/08/agile-and-the-second-chasm-history-does-repeat-itself/</link>
		<comments>http://gpollice.wordpress.com/2011/11/08/agile-and-the-second-chasm-history-does-repeat-itself/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 22:05:51 +0000</pubDate>
		<dc:creator>gpollice</dc:creator>
				<category><![CDATA[Computer science]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://gpollice.wordpress.com/?p=125</guid>
		<description><![CDATA[Kent Beck posted an interesting essay on the Agile Focus blog back in February. I think it&#8217;s a really insightful, and important statement from one of the Agile elders (sorry Kent, but accept the fact that we&#8217;re getting older). Although this is eight months later, I just read it due to a re-tweet of the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=125&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Kent Beck posted an interesting essay on the <a href="http://agilefocus.com/2011/02/21/agiles-second-chasm-and-how-we-fell-in/" target="_blank">Agile Focus blog</a> back in February. I think it&#8217;s a really insightful, and important statement from one of the Agile elders (sorry Kent, but accept the fact that we&#8217;re getting older). Although this is eight months later, I just read it due to a re-tweet of the link by one of the people I follow. A downside of the Web and the age of instant communication is that there is an exponential explosion of content, much—maybe most—of it is simply noise.</p>
<p>I&#8217;m glad that I came across this post though. It made me think hard about what he&#8217;s saying. I have found that over the years, I agree with Kent much more than I disagree with him. I remember being on a panel at conference back around 2002 on XP, Agility, and process in general and it seemed that Kent and I were on the same side, even though I was there officially representing Rational and the Rational Unified Process team.</p>
<p>The other panelists, all Agile consultants, were promoting dogmatic adherence to <span style="text-decoration:underline;"><em>all</em></span> of the XP practices. They indicated that they forced all team members to do all of the practices all of the time when they were engaged to help teams us XP. Well, if you look at XP, that&#8217;s what you&#8217;re supposed to do. But, that doesn&#8217;t always work. You need to use some common sense.</p>
<p>Kent and I were suggesting that the specific set of practices and how dogmatic their application should be appropriate, not just a blind application from a book or some other source. In short, it would be better for the team to succeed by adopting a handful of practices and using them in a way that suited the team than it would be for them to turn all the XP practice dials up to 10 and fail.</p>
<p>During the Q&amp;A period, Mary Poppendieck made the comment that except for Kent and I, the other panelists sounded like the process police. I found this quite funny. A significant part of the Agile movement, besides trying to discover better ways of delivering software, was to combat RUP and other process products that were deemed to be too restrictive and dogmatic (they also had a significant portion of the market). Getting into the Agile camp allowed consultants who worked individually or in fairly small companies gain traction in places where they might not otherwise have been able to compete. Certainly large companies were reluctant to get away from the IBM Rational security blanket. They may not always succeed, but they followed the conventional wisdom of &#8220;you can&#8217;t go wrong with IBM.&#8221;</p>
<p>So, here we are more than ten years after the <a href="http://agilemanifesto.org/">Agile Manifesto</a> was signed. Are things different? Well, yes and no. Certainly we have added many new tools to our software engineering toolbox. We look at software development differently in certain areas. We are tend not to inflict heavyweight methods when lighter ones will do. In fact, we are probably guilty of erring to the opposite end of the spectrum now and not formalizing things when we probably should. After all, we don&#8217;t want people to think that we&#8217;re not Agile!</p>
<p>One might argue that many of the changes we&#8217;ve seen would have occurred naturally, without the Agile movement. But, however the changes have come about, I think we have a better set of tools—intellectual and otherwise—to use in our craft. What I don&#8217;t think has changed to a large extent is the ability for software developers and managers to use common sense when deciding how to work. They still want someone to tell them what to do and how to do it.</p>
<p>At the end of the 1990s, the RUP was sold as a process framework that you could customize to your team, the type of project you had, and the overall organization. Customers who did were usually quite successful. Those who thought they had to do everything in the several thousand pages of advice in the RUP had some spectacular failures. Of course Rational, and later IBM, was happy to send consultants to your company to help you figure out the right configuration. That is, someone would tell you what to do, how, and when.</p>
<p>Today, Agile consultants come and help you adopt Scrum (certified Scrum Masters), or XP, or Lean, or Kanban, or &#8230; . It doesn&#8217;t matter what. We don&#8217;t want to think and reason about what&#8217;s best for us and our project teams. We want someone to tell us. Perhaps we think it will allow us to avoid taking responsibility for the outcome of our projects; never mind that a cornerstone of Agility, or any reasonable methodology, is reflection by the team and adjusting the process. That seems like too much (non-productive) work. We can hire someone to tell us what to think and how to do our jobs. After all, they&#8217;re the experts, the consultants who have the experience.</p>
<p>So, we&#8217;re right back where we were ten or twenty years ago. We let people tell us what&#8217;s good for us. We don&#8217;t think. We let others do that for us. We&#8217;re always riding the crest of the next wave, be it XP, Scrum, Lean, or whatever. If we&#8217;re current, we must be doing the right thing. That may be true only if the current thing actually applies to what you&#8217;re doing. In 1999, Alistair Cockburn talked about<a href="http://alistair.cockburn.us/Methodology+per+project" target="_blank"> Methodology per Project</a>. I think this essay went unnoticed at the time. That&#8217;s a pity. I think there are some real nuggets in what he talks about. Of course he&#8217;s a consultant trying to convince you that his Crystal family of processes are right for you. Simply put, every project and project team is different. We don&#8217;t manufacture software, because each program is different. If we write the exact same code multiple times then we&#8217;re idiots. Ours is a craft. We produce one-of-a-kind products. If our products are one-of-a-kind, then maybe the way we produce them should be as well. That&#8217;s the key.</p>
<p>If we don&#8217;t start smartening up, we&#8217;re going to be in the same place ten years from now. Oh, there will be new methods and tools, but we won&#8217;t really know how to use them. We&#8217;ll hire someone to tell us what to use and how to use it. Same old, same old. Unless we start thinking for ourselves, reflecting upon our experiences, and taking our own destiny in our hands, we&#8217;re doomed as a profession. As the world&#8217;s appetite for software increases, we&#8217;re going to sit back and hope someone can show us how to do better.</p>
<p>When students get out of my software engineering course is that they are able to evaluate tools and methods and pick the right ones for their projects without someone else telling them what to do.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpollice.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpollice.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpollice.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpollice.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpollice.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpollice.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpollice.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpollice.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpollice.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpollice.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpollice.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpollice.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpollice.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpollice.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=125&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpollice.wordpress.com/2011/11/08/agile-and-the-second-chasm-history-does-repeat-itself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05fffbf2fa7dce6ca1efc99f13c055b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gpollice</media:title>
		</media:content>
	</item>
		<item>
		<title>Government inefficiency: It&#8217;s everywhere!</title>
		<link>http://gpollice.wordpress.com/2011/09/23/government-inefficiency-its-everywhere/</link>
		<comments>http://gpollice.wordpress.com/2011/09/23/government-inefficiency-its-everywhere/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 21:24:41 +0000</pubDate>
		<dc:creator>gpollice</dc:creator>
				<category><![CDATA[Politics and issues]]></category>

		<guid isPermaLink="false">http://gpollice.wordpress.com/?p=121</guid>
		<description><![CDATA[So, a few months ago we get a phone call from American Family Counseling. It turns out that it&#8217;s a robot call that tells us that they have important information about our credit card account. They ask you to press one to talk to one of their counselors. So I press &#8216; 1&#8242; an and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=121&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So, a few months ago we get a phone call from American Family Counseling. It turns out that it&#8217;s a robot call that tells us that they have important information about our credit card account. They ask you to press one to talk to one of their counselors. So I press &#8216; 1&#8242; an and quickly routed to a human being. The person at the other end of the line begins to ask questions about credit cards and I stopped her and ask “which credit card are you referring to?” She replies that this is about my credit rating and begins to go into a sales pitch about something. I asked again  which credit card she is referring to. She hangs up!</p>
<p>I do a little searching on the Web and find several references to American Family Counseling. Some point to social counseling services in California, others point to various social service centers, and one points to a marking Family Credit Counseling, which seems legitimate. I also find references to Robo calls from American Family Counseling that indicate there is clearly something shady about this specific call. I chalk it up to a probable scam, but one that shouldn&#8217;t occur again since I actually called them out on it.</p>
<p>A few weeks later we get another call from the same organization. Again I press &#8216; 1&#8242; and get a human. This time I tell the person at the other end that we are on the no call list and ask why they&#8217;re calling us. All I get are comments telling me that this is an important service about our credit card. I tell them I don&#8217;t want to be called anymore. However, by this time they have already hung up the phone.</p>
<p>At the end of August we received yet another call from them. You can guess the sequence of events that occurred. This time I filed a complaint on the no call list site. We also contacted the federal trade commission where the person my wife talked to took all the information and gave us a case number. They also suggested that we contact the state attorney general. So my wife spent the next hour trying to get someone in the right place at the state attorney general&#8217;s office who would take the information and perhaps act upon it. It seems pretty clear that this is either a phishing operation or, at the very least, a shady organization trying to drum up business. Well at the state attorney general&#8217;s office the best they could do was to send out a form for us to fill out. My wife did this and sent it back in.</p>
<p>Two days ago we get another call from American Family Counseling—this time, from a cell phone number. The sequences of the same and I pressed  &#8217;1&#8242;.  Again, when I press for information, the person hung up. My wife then called the Federal Trade Commission and a very nice woman  took down the new phone number and added it to the case. Whether anything will be done is anyone&#8217;s guess. At the attorney general&#8217;s office it was even worse.  We were told that if we wanted to add information to the previous report that they would mail another for for us to fill out. (If the computer system is that poor, they&#8217;ve got some real problems.) They said it sounded like a scam that was going around and they were just telling people not to press any buttons.</p>
<p>Isn&#8217;t it nice to see how well oiled the government runs?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpollice.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpollice.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpollice.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpollice.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpollice.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpollice.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpollice.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpollice.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpollice.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpollice.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpollice.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpollice.wordpress.com/121/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpollice.wordpress.com/121/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpollice.wordpress.com/121/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=121&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpollice.wordpress.com/2011/09/23/government-inefficiency-its-everywhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05fffbf2fa7dce6ca1efc99f13c055b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gpollice</media:title>
		</media:content>
	</item>
		<item>
		<title>Book review: Seven Languages in Seven Weeks</title>
		<link>http://gpollice.wordpress.com/2011/07/23/book-review-seven-languages-in-seven-weeks/</link>
		<comments>http://gpollice.wordpress.com/2011/07/23/book-review-seven-languages-in-seven-weeks/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 16:00:46 +0000</pubDate>
		<dc:creator>gpollice</dc:creator>
				<category><![CDATA[Book Reviews]]></category>

		<guid isPermaLink="false">http://gpollice.wordpress.com/?p=114</guid>
		<description><![CDATA[When I received my copy of Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages by Bruce Tate (Pragmatic Programmers, 2011), I wasn&#8217;t expecting to be impressed. First of all, I had read Tate&#8217;s From Java to Ruby and was not impressed by the book. I don&#8217;t usually read books aimed at managers, which [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=114&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When I received my copy of <em><a href="http://pragprog.com/book/btlang/seven-languages-in-seven-weeks" target="_blank">Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages</a></em> by Bruce Tate (Pragmatic Programmers, 2011), I wasn&#8217;t expecting to be impressed. First of all, I had read Tate&#8217;s <em>From Java to Ruby</em> and was not impressed by the book. I don&#8217;t usually read books aimed at managers, which may explain my disappointment. Also, how much real meat could be in a book that covered seven languages in less than 350 pages? Why most books that try to cover one language often push 1,000 pages—not that anyone in their right mind would actually read the full tome.</p>
<p>To my surprise, this book turned out to be a delight. This book doesn&#8217;t serve you the full language in a multi-course meal. Instead, it lays out the small tapas and lets you sample just enough to let you see if you like the taste. And, if you do, it gives you enough to keep you going until you order the full meal from another book, course, or combination of sources. What&#8217;s even more interesting is how Tate has selected tasty languages that each tantalize different parts of your intellectual pallet.</p>
<p>There are no common, &#8220;fast food&#8221; languages like C, Basic, or even Java here. Instead Tate offers avant-garde  languages that are gaining traction—or being rediscovered because they offer new paradigms or efficiences that we need for future applications and computing systems. His choices are Ruby, Io, Prolog, Scala, Erlang, Closure, and Haskell. Few people will know enough about all of these, and even if you do know something about all of them, the chances are that you&#8217;ll gain some additional insights.</p>
<p>Tate helps the reader approach each language by framing it with several questions that one should ask when learning any new language. These questions are:</p>
<ul>
<li>What is the typing model?</li>
<li>What is the programming model?</li>
<li>How will you interact with it?</li>
<li>What are the decision constructs and core data structures?</li>
<li>What are the core features that make the language unique?</li>
</ul>
<p>I recently used the chapter on Ruby to introduce the language to high school students. It worked wonderfully. When they were done, several of them decided to use Ruby for their project and did some very nice work in the span of about five days.</p>
<p>The book can be read comfortably in a weekend, but that&#8217;s like going to a wine tasting and chugging down everything in sight. Take your time with these languages. Use the seven weeks, or at least a few. Taste deeply and then decide which ones you want to learn more about. It will be a fun ride, and certainly worth your time.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpollice.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpollice.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpollice.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpollice.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpollice.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpollice.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpollice.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpollice.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpollice.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpollice.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpollice.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpollice.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpollice.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpollice.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=114&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpollice.wordpress.com/2011/07/23/book-review-seven-languages-in-seven-weeks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05fffbf2fa7dce6ca1efc99f13c055b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gpollice</media:title>
		</media:content>
	</item>
		<item>
		<title>Are the CS classics still relevant?</title>
		<link>http://gpollice.wordpress.com/2011/07/23/are-the-cs-classics-still-relevant/</link>
		<comments>http://gpollice.wordpress.com/2011/07/23/are-the-cs-classics-still-relevant/#comments</comments>
		<pubDate>Sat, 23 Jul 2011 15:11:27 +0000</pubDate>
		<dc:creator>gpollice</dc:creator>
				<category><![CDATA[Computer science]]></category>

		<guid isPermaLink="false">http://gpollice.wordpress.com/?p=108</guid>
		<description><![CDATA[After years (decades) of waiting, with little teasers in the form of fascicles (a section of a book published separately), volume 4 (well, 4A) of Donald Knuth&#8217;s The Art of Computer Programming is finally available. This volume is about combinatorial algorithms. TAOCP is probably the definitive book on algorithms and the one that is most referenced in scholarly [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=108&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After years (decades) of waiting, with little teasers in the form of fascicles (a section of a book published separately), volume 4 (well, 4A) of Donald Knuth&#8217;s <em>The Art of Computer Programming</em> is finally available. This volume is about combinatorial algorithms. TAOCP is probably <span style="text-decoration:underline;">the</span> definitive book on algorithms and the one that is most referenced in scholarly work. For many years computer scientists and programmers earned their stripes by using something from the first three volumes in programs they wrote. There was something about being able to say that the really cool routine you wrote to improve database access was derived from something you found in Knuth. Whenever a question about how efficient a program or routine was and whether there was a better way, you went to Knuth for the definitive answer.</p>
<p>So, to me, the release of the new volume is a really big thing—a really big nostalgic thing. I wonder how many of the current generation of software developers are excited, or even care about this release. There is no doubt that the number of people involved in computing has increased dramatically. Many of these people are programmers and not computer scientists or mathematicians. I don&#8217;t say this to belittle them. What they do is an honorable, important job. Decades ago, the state of computing was such that you really needed to be much more knowledgeable about math and the inner workings of computers than you do today if you wanted to write a program. Clearly, this is a good thing because the world&#8217;s appetite for software seems to be insatiable and we need to have as many people as possible preparing the dishes for the ravenous beast.</p>
<p>How many of this generation of software developers are able to, or even care to mine the depths of the works of people like Knuth to find the gems there that are hidden from mere mortals? I have the utmost respect for many of today&#8217;s technology heroes, but to paraphrase Sen. Lloyd Bentsen, &#8220;I knew Knuth, and these are not Knuth.&#8221;</p>
<p>Perhaps there is too much for any one person to know about computing today. That&#8217;s been true for decades, but Donald Knuth knows as much about the core concepts than anyone I can think of. I hope that we will see a renewal of interest in Knuth&#8217;s works with the publication of volume 4A of TAOCP and that it will inspire students as it did me and many of my friends.</p>
<p>What other people and classics are we missing today? I&#8217;d like to compile a list of those which inspired people and stand head and shoulders above others in their field.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpollice.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpollice.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpollice.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpollice.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpollice.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpollice.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpollice.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpollice.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpollice.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpollice.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpollice.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpollice.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpollice.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpollice.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=108&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpollice.wordpress.com/2011/07/23/are-the-cs-classics-still-relevant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05fffbf2fa7dce6ca1efc99f13c055b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gpollice</media:title>
		</media:content>
	</item>
		<item>
		<title>Portfolios are better than certification</title>
		<link>http://gpollice.wordpress.com/2011/03/29/portfolios-are-better-than-certification/</link>
		<comments>http://gpollice.wordpress.com/2011/03/29/portfolios-are-better-than-certification/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 16:29:24 +0000</pubDate>
		<dc:creator>gpollice</dc:creator>
				<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://gpollice.wordpress.com/?p=103</guid>
		<description><![CDATA[A few days ago Martin Fowler posted an item on his website about certification and whether certification correlates to reality. This got me thinking about certification efforts that have gone on in the past and that are currently being considered. I keep coming back to the same question—is certification worth it? Put another way, does [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=103&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><!-- p.p1 {margin: 0.0px 0.0px 10.0px 0.0px; font: 12.0px Cambria} -->A few days ago Martin Fowler posted an item on <a title="Certification and competence" href="http://martinfowler.com/bliki/CertificationCompetenceCorrelation.html" target="_blank">his website</a> about certification and whether certification correlates to reality. This got me thinking about certification efforts that have gone on in the past and that are currently being considered. I keep coming back to the same question—is certification worth it? Put another way, does the certification for software developers makes sense?</p>
<p>Many years ago, and I do mean many, I decided to become a Certified Data Processor. The CDP is a certificate that was issued by the <a title="ICCP" href="http://www.iccp.org/" target="_blank">Institute for Certification of Computing Professionals</a>. The ICCP still has a presence and offers updated certification. Even when I was a consultant I never placed CDP at the end of my name. I don&#8217;t know whether it was important or not. To me it was like any other exam, such as the SAT or GRE, that I looked at as an intellectual challenge without very much use, except to get me accepted into a school I wanted to. I&#8217;m not sure it really said anything about whether I was qualified. The ICCP has newer certifications, but these are approximately equivalent to the ones in effect when I took the exam. In fact they indicate that &#8220;holders of the previous certifications qualify for the current certifications.&#8221; Does this mean that knowing how to draw a flowchart indicates that I can create a UML diagram? So what.</p>
<p>The ACM and IEEE have been working on certification programs for quite a while. IEEE offers exams that, when passed, enable professionals to claim certification. And yet, this has not caught on. Why not?</p>
<p>Last week in a department meeting we had a brief exchange about certification. There are certainly different viewpoints among faculty members. When we consider macro software engineering which involves very large projects, often involving hardware systems, the set of skills seems to change more slowly than those required to be a competent micro software engineer. Heck, the projects often take years to get to release. The macro software engineer will typically spend more time on project management of the whole system, scheduling, validation, verification, process, and so on. These are certainly necessary and valuable skills. But does one need certification? And, if they do, does this have anything to do with the software developer trying to build a particular module?</p>
<p>At the micro level things change much more rapidly. New languages, new technology, and new practices that enable one to deal with changing environment pop up regularly. Should we have certification specialized for web developers, embedded software developers, IT applications, and so on? If so, where do we draw the lines, and can we keep up with all of the advances?</p>
<p>When I was at Rational the RUP was a framework that we felt described the process of building software. Those companies that succeeded using RUP were those who understood that the framework needed to be specialized and customized. Those who attempted to apply all the practices and advice in the 3000 or so Web pages were doomed to fail. The fact is, that one size does not fit all. We must consider the context—project, people, environment—in order to be successful in a software development project.</p>
<p>There&#8217;s another, more practical reason why certification will not work. There is just too much software that needs to be created and not enough people to do the work. Will the lack of certification really cause a company to not hire someone who can get the job done?</p>
<p>So, if not certification, then what?</p>
<h3>Portfolios can correlate to competence</h3>
<p>A few years ago Pete McBreen penned his book, <em><a title="Software Craftsmanship" href="http://www.amazon.com/Software-Craftsmanship-Imperative-Pete-McBreen/dp/0201733862">Software Craftsmanship</a></em>. If you haven&#8217;t read the book you should. McBreen likens software developers to craftsmen of previous centuries. We learn through a series of apprenticeships. Just as someone who wanted to be a jeweler would sign on with a master jeweler as an apprentice, new software developers begin their career by learning from master software developers. The apprentice jeweler might spend years to become a master jeweler, he might just as well have become an apprentice for different master jewelers, and become a journeyman. So too, one software developer might become a master and specialize in one type of software development, while another might become competent in several areas and become a modern day journeymen.</p>
<p>With this model in mind, I believe there is a better way of determining who can build the next generation of our software. If you are looking for jewelry, a piece of art, a house, or any number of things that require customization in craftsmanship, you don&#8217;t look for certification. What you do is look for a person with a portfolio that indicates she is capable of producing the type of artifact you desire. The same approach can be used to find software developers.</p>
<p>I encourage my students to begin putting their portfolio together early in their academic careers. As they proceed through the university they should add to the portfolio so that when they graduate they have something to show prospective employers about what they can do by  showing what they have done. Then, as they advance in their careers they can add to this portfolio and decide whether they want to be a master of a small set of skills or a generalist. There are some—but few—who can be masters of everything.</p>
<p>This approach, in my opinion, makes much more sense than looking for certification. Certification simply means—in the way it has been and is being implemented—that the person has learned how to pass one or more tests. The portfolio lets you see a body of work and will often show how the person has advanced. This let you fine people who not only have a set of skills, but more importantly showed that they can learn and apply those skills.</p>
<p>Isn&#8217;t this what we really want from our software developers?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpollice.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpollice.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpollice.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpollice.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpollice.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpollice.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpollice.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpollice.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpollice.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpollice.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpollice.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpollice.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpollice.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpollice.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=103&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpollice.wordpress.com/2011/03/29/portfolios-are-better-than-certification/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05fffbf2fa7dce6ca1efc99f13c055b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gpollice</media:title>
		</media:content>
	</item>
		<item>
		<title>Arduino Part 3</title>
		<link>http://gpollice.wordpress.com/2011/02/19/arduino-part-3/</link>
		<comments>http://gpollice.wordpress.com/2011/02/19/arduino-part-3/#comments</comments>
		<pubDate>Sun, 20 Feb 2011 01:10:57 +0000</pubDate>
		<dc:creator>gpollice</dc:creator>
				<category><![CDATA[embedded software]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Embedded systems]]></category>

		<guid isPermaLink="false">http://gpollice.wordpress.com/?p=96</guid>
		<description><![CDATA[Learning More–getting ready for the class I&#8217;ve learned a bit more about the Arduino in the last couple of weeks, since my last Arduino post. Most of the information has been about using Eclipse and the Arduino Uno. The basic project I completed last time was the simple blinking example on the Decimilia board. This [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=96&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h2>Learning More–getting ready for the class</h2>
<p>I&#8217;ve learned a bit more about the Arduino in the last couple of weeks, since my last <a title="Arduino Part 2" href="http://gpollice.wordpress.com/2011/01/31/arduino-part-2/">Arduino post</a>. Most of the information has been about using Eclipse and the Arduino Uno. The basic project I completed last time was the simple blinking example on the Decimilia board. This is an ATmega168 processor and runs just fine. However, when you go to Eclipse, you need to make sure that you set the clock frequency to 16000000 and not 1000000 as in some of the documents. Other than that, everything works just great.</p>
<h3>Enter the Uno</h3>
<p>The Arduino Uno is the latest version of the Arduino. I ordered a <a title="Duemilanove starter kit" href="http://www.amazon.com/gp/product/B001N1EOT8">starter kit</a> from Amazon. It was a duemilanove kit, but shipped with the Uno. It has the ATmega328p processor. It worked just fine with the Arduino IDE, but when I tried to duplicate the steps to get it working with Eclipse, I failed miserably. It&#8217;s taken a while to track things down, but I think I&#8217;ve got it pretty much sorted out now.Here are some of the things that I&#8217;ve found helpful.</p>
<ol>
<li>When you set up the AVRDude configuration for the Uno, the baudrate should be 115200 instead of 57600 as some of the documents indicate. This will get rid of the annoying &#8220;stk500_recv(): programmer is not responding&#8221; message when AVRDude runs.</li>
<li>In order to see what&#8217;s going on with the Arduino IDE, you can modify the preferences.txt file to add some verbose options. The file is in the Library/Arduino directory under my home directory on the Mac. A couple of the useful things I&#8217;ve found are adding the following lines:
<ul>
<li><span style="text-decoration:underline;">upload.verbose</span> displays the command line used for invoking AVRDude.</li>
<li><span style="text-decoration:underline;">build.verbose=true</span> displays the output of the build process.</li>
</ul>
</li>
<li>I&#8217;ve copied the Uno core.a library created by the Arduino IDE and am going to just use it rather than trying to create an Eclipse project for building such a library like I did for the Diecimilia. This will reduce the number of things I have to work with and it is the preferred way of getting the library according to the installation. One of the problems is finding the library on the system on the Mac. The location of the libraries is specified for other platforms in the <a title="Arduino Eclipse instructions" href="http://arduino.cc/playground/Code/Eclipse" target="_blank">Eclipse installation instructions</a> from the Arduino playground. It took a little while, but after putting in the &#8220;build.verbose&#8221; file in the Arduino IDE&#8217;s preferences.txt file, I found the directory. It was in /var/folders/7A/&#8230; . Not the most obvious place. I moved this into my a lib/arduino directory in my home directory.</li>
</ol>
<p>After all of this, I still am not getting the program to execute. It compiles, loads, but does not run on the Uno.</p>
<h4>Finally: Success</h4>
<p>So, it was back to the drawing board. I went back and recreated a separate project for the Uno core library. Then I compiled that and created a new project for the Uno blink program, and it worked. It&#8217;s still not the easiest thing to make sure you get all of the settings correct, but it is nice to see the light blink.</p>
<p>Next, I think I&#8217;ll work on building the project in a more simple environment, like a text editor, command line compilation, and make.</p>
<p>First, it&#8217;s probably worth recording the settings I&#8217;ve got on the two projects.</p>
<h4>Uno Core Library Project</h4>
<p>I simply copied all of the sources from the &#8230;/cores/arduino directory to the top level of this project. I deleted the main.cpp as the <a href="http://arduino.cc/playground/Code/Eclipse" target="_blank">Eclipse installation directions</a> said. Next, I followed the directions from the Eclipse installation page exactly. The relevant preferences settings for the project are:</p>
<ul>
<li><strong>AVR&gt;Target Hardware</strong>: ATmega328p, 16000000 MHz.</li>
<li><strong>C/C++ Build&gt;Seettings</strong>: no debugging information, and optimize for size on both compilers (C and C++). Also, the other optimization flags for the C++ compiler are&#8221;-ffunction-sections -fdata-sections -Wl,&#8211;gc-sections&#8221;.</li>
</ul>
<p>I have both the debugging and release configurations set for this, but it only needs release. We&#8217;re not really worrying about debug configurations at all here.</p>
<h3>The Uno Blink Project</h3>
<p>Again I followed the instructions in the <a href="http://arduino.cc/playground/Code/Eclipse" target="_blank">Eclipse installation directions</a>.<a href="http://arduino.cc/playground/Code/Eclipse" target="_blank"></a> There was one thing not covered which got the library included in the linking. Here are my settings:</p>
<ul>
<li><strong>AVR&gt;AVRDude</strong>: Uno programmer configuration. No switches set under Advanced tab.</li>
<li><strong>AVR&gt;Target Hardware</strong>: same as above.</li>
<li><strong>C/C++ Build&gt;Settings</strong>
<ul>
<li><strong>Additional Tools in Toolchain</strong>: Generate Hex Files for Flash Memory and Print Size are checked.</li>
<li><strong>AVR Compiler&gt;Directories</strong>: &#8220;${workspace_loc:/UnoCore}&#8221;, where UnoCore is the name of my Uno core library project.</li>
<li>For both compilers (C and C++), no debugging and size optimizations.</li>
<li><strong>AVR C++ Compiler&gt;Directories</strong>: same as for the AVR Compiler.</li>
<li><strong>AVR C++ Compiler&gt;Optimization</strong>: -ffunction-sections -fdata-sections -Wl,&#8211;gc-sections</li>
<li><strong>AVR C++ Linker&gt;Libraries</strong>: Libraries (top): UnoCore, which is the name of my library for the Uno core. Libraries Path (bottom): &#8220;${workspace_loc:/UnoCore/Release}&#8221;.</li>
</ul>
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpollice.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpollice.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpollice.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpollice.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpollice.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpollice.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpollice.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpollice.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpollice.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpollice.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpollice.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpollice.wordpress.com/96/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpollice.wordpress.com/96/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpollice.wordpress.com/96/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=96&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpollice.wordpress.com/2011/02/19/arduino-part-3/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05fffbf2fa7dce6ca1efc99f13c055b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gpollice</media:title>
		</media:content>
	</item>
		<item>
		<title>Dragon Dictate</title>
		<link>http://gpollice.wordpress.com/2011/02/07/dragon-dictate/</link>
		<comments>http://gpollice.wordpress.com/2011/02/07/dragon-dictate/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 00:12:53 +0000</pubDate>
		<dc:creator>gpollice</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://gpollice.wordpress.com/?p=88</guid>
		<description><![CDATA[I&#8217;m writing this post using Dragon Dictate which I ordered last week. I have to admit that I&#8217;m really impressed by how easy it is to install and get started using. When I got home today it took me about 15 min. from the time I got the box opened  until I was ready to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=88&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m writing this post using Dragon Dictate which I ordered last week. I have to admit that I&#8217;m really impressed by how easy it is to install and get started using. When I got home today it took me about 15 min. from the time I got the box opened  until I was ready to start  training it to recognize my voice. After about 5 min. it was ready to go.</p>
<p>This post is the first document that I&#8217;m actually writing with my voice. The accuracy is, to me, uncanny. There&#8217;ve been very few errors in (except for the word errors that I just had to try several times to get right). But this is just with the basic training of my voice. I can go back later a innd train it in a more advanced way so that even “errors” will be no problem.</p>
<p>I&#8217;m hoping that this will give me the ability to write better by not editing as I write. When I type documents, especially for books and articles, I tend to edit as I write. Almost every book or article on writing says that editing as you write is a bad practice. If I can break myself of that habit I should be able to express my thoughts better and then go back and edit the document for correctness and clarity.</p>
<p>My hope is that this will help me get back to writing my software engineering book and maybe even finish it this summer. It&#8217;s only been 2+ years that I&#8217;ve been working on the book and I&#8217;m still only a chapter 5. Part of the problem is that I simply take too long to get something on paper and then have to go back and review the things I&#8217;ve written every time I try and start again. Perhaps this will get me into  a regular routine to keep current on my writing.</p>
<p>Whatever, there is no doubt in my mind that the technology used in Dragon  Dictate is quite advanced. Right now, after a short trial, I would heartily recommend anyone use, or at least try, Dragon Dictate or the Windows version of the Dragon product.</p>
<p>I&#8217;ll keep you posted.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gpollice.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gpollice.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gpollice.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gpollice.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gpollice.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gpollice.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gpollice.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gpollice.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gpollice.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gpollice.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gpollice.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gpollice.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gpollice.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gpollice.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gpollice.wordpress.com&amp;blog=8924993&amp;post=88&amp;subd=gpollice&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gpollice.wordpress.com/2011/02/07/dragon-dictate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05fffbf2fa7dce6ca1efc99f13c055b5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">gpollice</media:title>
		</media:content>
	</item>
	</channel>
</rss>
