<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>World Wide Sandbox &#187; Dean Pearce</title>
	<atom:link href="http://deanpearce.net/author/deanpearce/feed/" rel="self" type="application/rss+xml" />
	<link>http://deanpearce.net</link>
	<description>Uncovering Ideas, One Compile At A Time</description>
	<lastBuildDate>Thu, 19 Aug 2010 03:25:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Cool Video: What I Wish I&#8217;d Knew When I Was 18</title>
		<link>http://deanpearce.net/cool-video-what-i-wish-id-knew-when-i-was-18/</link>
		<comments>http://deanpearce.net/cool-video-what-i-wish-id-knew-when-i-was-18/#comments</comments>
		<pubDate>Sun, 08 Aug 2010 00:30:13 +0000</pubDate>
		<dc:creator>Dean Pearce</dc:creator>
				<category><![CDATA[Videos]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Media]]></category>

		<guid isPermaLink="false">http://deanpearce.net/?p=162</guid>
		<description><![CDATA[This great interview with Stephen Fry discusses his views on the world, and how knowing some things when you&#8217;re younger can help shape the world to be a better place. No words that I will write can give it justice, you&#8217;ll just have to listen to the interview yourself . Subscribe to the comments for [...]]]></description>
			<content:encoded><![CDATA[<p>This great interview with Stephen Fry discusses his views on the world, and how knowing some things when you&#8217;re younger can help shape the world to be a better place. No words that I will write can give it justice, you&#8217;ll just have to listen to the interview yourself <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<div id="stephen-fry-video" style="text-align:center;">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11414505&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" /><embed type="application/x-shockwave-flash" width="600" height="350" src="http://vimeo.com/moogaloop.swf?clip_id=11414505&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=&amp;fullscreen=1&amp;autoplay=0&amp;loop=0" allowscriptaccess="always" allowfullscreen="true"></embed></object>
</div>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://deanpearce.net/cool-video-what-i-wish-id-knew-when-i-was-18/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://deanpearce.net/cool-video-what-i-wish-id-knew-when-i-was-18/&amp;title=Cool+Video%3A+What+I+Wish+I%27d+Knew+When+I+Was+18" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://deanpearce.net/cool-video-what-i-wish-id-knew-when-i-was-18/&amp;title=Cool+Video%3A+What+I+Wish+I%27d+Knew+When+I+Was+18" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://deanpearce.net/cool-video-what-i-wish-id-knew-when-i-was-18/&amp;title=Cool+Video%3A+What+I+Wish+I%27d+Knew+When+I+Was+18&amp;desc=This%20great%20interview%20with%20Stephen%20Fry%20discusses%20his%20views%20on%20the%20world%2C%20and%20how%20knowing%20some%20things%20when%20you%27re%20younger%20can%20help%20shape%20the%20world%20to%20be%20a%20better%20place.%20No%20words%20that%20I%20will%20write%20can%20give%20it%20justice%2C%20you%27ll%20just%20have%20to%20listen%20to%20the%20interview%20yourself%20%3A%29.%0D%0A%0D%0A%0D%0A%0D%0A" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://deanpearce.net/cool-video-what-i-wish-id-knew-when-i-was-18/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://deanpearce.net/cool-video-what-i-wish-id-knew-when-i-was-18/&amp;title=Cool+Video%3A+What+I+Wish+I%27d+Knew+When+I+Was+18" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://deanpearce.net/cool-video-what-i-wish-id-knew-when-i-was-18/&amp;title=Cool+Video%3A+What+I+Wish+I%27d+Knew+When+I+Was+18" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://deanpearce.net/cool-video-what-i-wish-id-knew-when-i-was-18/&amp;title=Cool+Video%3A+What+I+Wish+I%27d+Knew+When+I+Was+18" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Cool+Video%3A+What+I+Wish+I%27d+Knew+When+I+Was+18+-+http://b2l.me/afsw5g&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://deanpearce.net/cool-video-what-i-wish-id-knew-when-i-was-18/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All Aboard Ruby On Rails</title>
		<link>http://deanpearce.net/all-aboard-ruby-on-rails/</link>
		<comments>http://deanpearce.net/all-aboard-ruby-on-rails/#comments</comments>
		<pubDate>Sun, 25 Jul 2010 06:08:45 +0000</pubDate>
		<dc:creator>Dean Pearce</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://deanpearce.net/?p=141</guid>
		<description><![CDATA[Last night I posted the code for the next blog installment which is using the Ruby on Rails web framework for building your blog application. You can find this demo code in the new GitHub repository at http://github.com/deanpearce/MyBlogRails. And please do look at it, play with it, and tell me what I've done wrong as usual :). I have spent time over the past few weeks familiarizing myself with Ruby and how its gems, such as Rails, extend the functionality of the language. For those of you who are new to Ruby on Rails, it's important to understand that Rails is a Ruby gem, meaning that the gem extends the language to make Ruby a friendly language for web development. As per usual, I am assuming that you are caught up in at least the fundamentals of the Ruby programming language, and have followed the installation guide (for Linux as usual :)) at http://wiki.rubyonrails.org/getting-started/installation/linux. The process is rather straightforward, and even easier on Ubuntu as most (if not all) the packages can be installed using Aptitude to get the development process going without needing to wait for builds.]]></description>
			<content:encoded><![CDATA[<div id="attachment_142" style="background: none repeat scroll 0% 0% #ffffff ! important; margin: 1px; border: 1px solid #525252; height: 58px;"><a href="http://deanpearce.net/wp-content/uploads/2010/07/ruby_on_rails_logo.jpg"><img class="alignleft size-full wp-image-142" title="ruby_on_rails_logo" src="http://deanpearce.net/wp-content/uploads/2010/07/ruby_on_rails_logo.jpg" alt="Ruby On Rails" width="48" height="58" /></a><span style="font-weight: bold; font-size: 1.5em; margin-top: 20px; display: block;">Ruby On Rails</span></div>
<p>Last night I posted the code for the next blog installment which is using the Ruby on Rails web framework for building your blog application. You can find this demo code in the new GitHub repository at <a title="http://github.com/deanpearce/MyBlogRails" href="http://github.com/deanpearce/MyBlogRails">http://github.com/deanpearce/MyBlogRails</a>. And please do look at it, play with it, and tell me what I&#8217;ve done wrong as usual <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . I have spent time over the past few weeks familiarizing myself with Ruby and how its gems, such as Rails, extend the functionality of the language. For those of you who are new to Ruby on Rails, it&#8217;s important to understand that Rails is a Ruby gem, meaning that the gem extends the language to make Ruby a friendly language for web development. As per usual, I am assuming that you are caught up in at least the fundamentals of the Ruby programming language, and have followed the installation guide (for Linux as usual <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) at <a title="http://wiki.rubyonrails.org/getting-started/installation/linux" href="http://wiki.rubyonrails.org/getting-started/installation/linux">http://wiki.rubyonrails.org/getting-started/installation/linux</a>. The process is rather straightforward, and even easier on Ubuntu as most (if not all) the packages can be installed using Aptitude to get the development process going without needing to wait for builds.</p>
<p>Overall, this iteration of the project got easier, since the HTML::Mason and Rails ERB views are very similar in construction. It became an exercise in substitute the correct language code while keeping existing logic in place. For my own sanity, I added a users controller so I can control accounts through a web UI once you are authenticated (hint: this will be a lead up to a potential second round, integrating user accounts and external services such as Gravatar <img src='http://deanpearce.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ). Compensating for the time I spent in developing the basic template for Catalyst (a grand total of 3 of the 35 minutes), it works out that from scratch, development of a blog application took about 20 minutes in Ruby on Rails, which is stunning! But that isn&#8217;t without a few pitfalls that I will go over later in the article.</p>
<p><strong>What I will be covering:</strong></p>
<ul>
<li>Generating your first Rails Application</li>
<li>Framing the structure using scaffolding</li>
<li>What comes built-in to Rails (and why the way I used sessions isn&#8217;t the brightest)</li>
</ul>
<p><strong>The Installation Process</strong></p>
<p>This section is pretty short, and overall I have no complaints! Using Aptitude to install on Ubuntu, the process from opening the Wiki to having the default &#8220;You&#8217;re Riding On Rails&#8221; page was maybe 10 minutes, significantly faster than Catalyst. And because of the way we will be playing with Ruby on Rails, we won&#8217;t be doing our database creation! Well, we will be using a MySQL database, but we will use the <em>rake</em> tool to handle the complex parts of the database creation and generation for us.</p>
<p><strong>Creating the App</strong></p>
<p>Whoa! We have already cut a lot of the time out from the Catalyst application. The install process was a few simple apt-gets (in Ubuntu, a few simple makes everyone else) and we can skip the database creation phase! This is great for us since we are trying to shave minutes off development. In the real world, one would want to plan all of this out beforehand, such as planning your controllers rather than your database, but for our purposes we will do this ad-hoc. Switch to your favourite development directory and type:</p>
<ul>
<li>pearce@marvin:~/Projects$ rails -d MyBlogOnRails</li>
<li>create &#8230;</li>
</ul>
<p>Great, the application was generated! You might be wondering what the -d flag is. By default RoR (Ruby on Rails) uses an SQLite database, the -d flag tells it to build as if we are going to use a MySQL database. The flag may be -d or -D depending on the source you install and version, so keep an eye out for that. Very similar to Catalyst, and as we&#8217;ll discover, pretty much the same structure all the popular web frameworks use. Now that we have an application, let&#8217;s start creating with it.</p>
<p><strong>Configuring the App</strong></p>
<p>The first thing is we need to do is give the app some credentials for the database. Ruby on Rails differentiates between development, testing and production. The names are pretty self-explanatory and for our needs we will be using the generated default of development. Switch to your project directory MyBlogOnRails and edit config/databases.yml:</p>
<ul>
<li>pearce@marvin:~/Projects$ cd MyBlogOnRails</li>
<li>pearce@marvin:~/Projects/MyBlogOnRails$ vi config/database.yml</li>
</ul>
<p style="padding-left: 30px;"><em>development:<br />
adapter: mysql<br />
database: myblog_development<br />
username: root<br />
password: ****<br />
host: localhost</em></p>
<p>This will tell RoR that our database, which we will call myblog_development, can use those credentials at that host. There are sections for production and testing also in the file, and you can edit those at your leisure, but for our purposes we will only be using development. That&#8217;s it for setup, nothing to make or build or chmod. Let&#8217;s continue on to Grand Central: the implementation of the model, view and controller.</p>
<p><strong>Grand Central: MVC Implementation</strong></p>
<p>If so far your RoR experience has been good, this is where things may switch tracks for some or go express for others. There are some tips and tricks that are necessary for a smooth experience that can be read in the <a title="Rails Wiki" href="http://wiki.rubyonrails.org/">Ruby on Rails Wiki</a> such as naming convention of controllers and types to specify when generating the controller and such. If you have this knowledge in your head, Rails will turn your development express. If you&#8217;re like me and don&#8217;t like reading documentation before you start hacking around (though I always end up reading it, and improving what I do <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) then this might be the thing that derails your project (I&#8217;m on a roll with these puns <img src='http://deanpearce.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ). The big holdups for me were the following:</p>
<ul>
<li>When using the generator name your controllers in the singular (it will automatically handle making things plural as needed), else you will encounter &#8220;dependency missing&#8221; message hell.</li>
<li>The documentation on what is going on when things go wrong at this point is <em><strong>horrible</strong></em>! Nine out of ten sources (sites, docs, comments) say &#8220;oh well regenerate your app&#8221; and that&#8217;s it!</li>
<li>For in-depth projects you will want to plan your database either independently and write your own controllers, or plan your controllers (down to the order things will be created).</li>
</ul>
<p>Once you get over that, it&#8217;s fairly smooth sailing. First attempts at it were causing premature manual baldness and I am really surprised that for such a large and vibrant community these basic problems aren&#8217;t explained more often (and in ways that are easy to search for on a search engine).</p>
<p style="padding-left: 30px;"><strong>Controller</strong></p>
<p style="padding-left: 30px;">So now let&#8217;s generate the controllers that we will need for this project:</p>
<ul>
<li>pearce@marvin:~/Projects/MyBlogOnRails$ ruby script/generate scaffold post title:string body:text</li>
<li>pearce@marvin:~/Projects/MyBlogOnRails$ ruby script/generate scaffold user username:string password:string email:string</li>
</ul>
<p style="padding-left: 30px;">At first this may look a little confusing, why are we telling our controller what we need to include, and what is this scaffolding? This will be explained after we finish generating everything <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>And that&#8217;s it for generating code! What, I bet you thought it was going to be more. Scaffolding is a cool tool included in Rails to generate most of the code needed to get a full MVC application up and running. It creates the model, view files and the controllers all in a nice setup for you to hack away on. For the advanced developer, or very custom components it isn&#8217;t too helpful, but for beginners its a great way to see a tangible application, right now with not one line of code! We really are slowly coding ourselves out of jobs aren&#8217;t we <img src='http://deanpearce.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . If you are going to be generating the model on your own, you can add the parameter <em>&#8211;skip-migrations</em> to the generate script, which will still generate all the code for you, but running db:migrate will not attempt to create the tables that you need. One <strong>important</strong> thing to note is that if you want the default action to be the posts controller, you will need to manually edit the routes.rb file  in the config directory <em>map.root :controller =&gt; &#8220;post&#8221; </em>right before the <em>end</em> directive in the file, and you will need to delete the default index.html.erb template. This will ensure the root action is the post controller and that you won&#8217;t accidentally run it with the index.html.erb file.</p>
<p>The next big step will be to actually create the database and tables for our application, and now that our model is defined, we can use the rake tool included in rails:</p>
<ul>
<li>pearce@marvin:~/Projects/MyBlogOnRails$ rake db:create</li>
<li>pearce@marvin:~/Projects/MyBlogOnRails$ rake db:migrate</li>
</ul>
<p>And if we&#8217;ve given the correct permissions to our database user we should get messages saying it has created the database, and a message for each table it creates. As of now, we&#8217;re done! Well, not yet <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  but if you want to see your RoR app, you can run:</p>
<ul>
<li> pearce@marvin:~/Projects/MyBlogOnRails$ script/server</li>
</ul>
<p>Which will start a default Mongrel server on port 3000. Navigate to this and you will get the scaffold generated interface! This is all so exciting, a fully running app that you can technically &#8220;post&#8221; to with no code at all. But as you can see, no security or style either. Let&#8217;s take it to the next step and look at sessions and creating a controller for logging in:</p>
<ul>
<li>pearce@marvin:~/Projects/MyBlogOnRails$ ruby script/generate controller user login</li>
</ul>
<p>This creates our new controller along with the login action/views. Notice we are not doing scaffolding here as the implementation will be done in pure manual code and can be found in the GitHub repository under the controller and views of the same name. In principal we want to do the same thing as the Catalyst version: only allow posting when logged in and a basic login/logout system that just gives us access to the new post page and logout button.</p>
<p>The big helper here is the built-in session management provided by Rails. This means no fiddling around with authentication like in Catalyst, we can immediately use the session call from within our application like <em><code>&lt;%=session[</code><code>:username</code><code>]%&gt;. </code></em>This is exactly how it was implemented in the blog application, and while it seems good at first, you realize that we depend on the session not being forged and solely on the username <img src='http://deanpearce.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . In a real system this might not fly as reasonable authentication, but for our purposes it&#8217;ll be like Fort Knox. Just as easy as we can set a session variable using <em>session[:key] = val </em>we can use <em>reset_session</em> to erase our session. I won&#8217;t go into code detail as I&#8217;m assuming you know at least a tiny bit about Ruby, or you have checked out the project and investigated the controller_user.rb file in app/controllers. Once you rework your templates using Ruby syntax such as <em>@post.each do |post| </em>and setup your session management you will be good to go.</p>
<p><strong>Final Thoughts</strong></p>
<p>Once again, it amazes me that it took far long to write (and find time and motivation for <img src='http://deanpearce.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) writing the blog about the application than it did to actually write it. Ruby on Rails does one thing and does it exceedingly well: turns ideas into applications quickly with minimal code. Like any framework though, once you get more complicated than the basic single table layouts and non-scaffold actions things get a bit more complicated. Ruby on Rails sped things up by allowing me to skip figuring out where to place the model and the views, and allowed me to skip some basic templating and routing, since this was all automatically generated.</p>
<p><strong>Pros</strong></p>
<ol>
<li>If I thought Catalyst was wickedly fast at prototyping, this is like that star being hurled across space at 2.5 million KM/h. Plain and simple, it&#8217;s fast.</li>
<li>Routing (chaining and paths in Catalyst) is cake as long as you don&#8217;t need to make modifications to the default values. Things get a bit more when you have to edit the routes.rb file, but the advantage is in that file you can see all the actions and controllers and exactly what they do. I like that, but I also like to know what the controller is doing in the actual controller file. So pluses and minuses to each system.</li>
<li>Default templating is mind numbingly easy, and since HTML::Mason and the ERB files (along with the templating in Cake and JSP pages) they are all very similar in structure. In fact, with simple language replacement, you could migrate templates across systems with almost no work at all. And the scaffolding in Rails allows me to not even need to know how to make a default template (though I do) but just build on what it generates.</li>
<li>Gems are great, I mean Rails, much like Catalyst, is just a module.</li>
</ol>
<p><strong>Cons<br />
</strong></p>
<ol>
<li>Documentation for anything before actually writing custom controllers, and modules and such is a nightmare, they have great installation guides and how-to walkthroughs online, but anything that sways from the path, or funny errors because you forgot something minor are hard to find documentation for from my experience. Also, the default course of action most people provide is &#8220;oh well regenerate your application&#8221;, which in the case of being like 3 command line entries in isn&#8217;t bad, but let&#8217;s say something went awry once much deeper into the project, regenerating/restarting is unthinkable.</li>
<li>The gems are a great feature, but the downside is they are harder to find and not often organized into just a repo. Some are built and from Aptitude, some are from individual sites, there are lots on RubyGems.org, but it just doesn&#8217;t feel as well organized. Maybe I&#8217;m just too new to see the elegance of the system, or I missed Gems 101, but it doesn&#8217;t feel as solid as Perl in that sense.</li>
<li>Mongrel is nice but when the default suggestion is to load balance it I start to question performance a bit <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  much like Catalyst, memcached plugs into Rails easily with <em>Cache.put</em> and <em>Cache.get</em>, so it&#8217;s probably a good idea to integrate that into your code, and to anticipate using Mongrel Cluster on Apache (or some other httpd) for maximum performance. The upside is this allows for very easy distribution across servers.</li>
</ol>
<p>So that&#8217;s it, I might have some updates to the post in future weeks, or after feedback. As usual, leave a comment below, or email me and I will respond to you. I will not be posting packages in my posts anymore in favour of uploading them to GitHub or to my local repository. Next on the list is CakePHP, which I look forward to as PHP is my secret addiction and I want to finish playing with it and put a post together on that. A friend of mine suggested that I add Django, which is a Python web framework to my list of things to try, so that has been added to the plate for after CakePHP!</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://deanpearce.net/all-aboard-ruby-on-rails/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://deanpearce.net/all-aboard-ruby-on-rails/&amp;title=All+Aboard+Ruby+On+Rails" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://deanpearce.net/all-aboard-ruby-on-rails/&amp;title=All+Aboard+Ruby+On+Rails" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://deanpearce.net/all-aboard-ruby-on-rails/&amp;title=All+Aboard+Ruby+On+Rails&amp;desc=Last%20night%20I%20posted%20the%20code%20for%20the%20next%20blog%20installment%20which%20is%20using%20the%20Ruby%20on%20Rails%20web%20framework%20for%20building%20your%20blog%20application.%20You%20can%20find%20this%20demo%20code%20in%20the%20new%20GitHub%20repository%20at%20http%3A%2F%2Fgithub.com%2Fdeanpearce%2FMyBlogRails.%20And%20please%20do%20look%20at%20it%2C%20play%20with%20it%2C%20and%20tell%20me%20what%20I%27ve%20done%20wrong%20as%20usual%20%3A%29.%20I%20have%20spent%20time%20over%20the%20past%20few%20weeks%20familiarizing%20myself%20with%20Ruby%20and%20how%20its%20gems%2C%20such%20as%20Rails%2C%20extend%20the%20functionality%20of%20the%20language.%20For%20those%20of%20you%20who%20are%20new%20to%20Ruby%20on%20Rails%2C%20it%27s%20important%20to%20understand%20that%20Rails%20is%20a%20Ruby%20gem%2C%20meaning%20that%20the%20gem%20extends%20the%20language%20to%20make%20Ruby%20a%20friendly%20language%20for%20web%20development.%20As%20per%20usual%2C%20I%20am%20assuming%20that%20you%20are%20caught%20up%20in%20at%20least%20the%20fundamentals%20of%20the%20Ruby%20programming%20language%2C%20and%20have%20followed%20the%20installation%20guide%20%28for%20Linux%20as%20usual%20%3A%29%29%20at%20http%3A%2F%2Fwiki.rubyonrails.org%2Fgetting-started%2Finstallation%2Flinux.%20The%20process%20is%20rather%20straightforward%2C%20and%20even%20easier%20on%20Ubuntu%20as%20most%20%28if%20not%20all%29%20the%20packages%20can%20be%20installed%20using%20Aptitude%20to%20get%20the%20development%20process%20going%20without%20needing%20to%20wait%20for%20builds." rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://deanpearce.net/all-aboard-ruby-on-rails/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://deanpearce.net/all-aboard-ruby-on-rails/&amp;title=All+Aboard+Ruby+On+Rails" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://deanpearce.net/all-aboard-ruby-on-rails/&amp;title=All+Aboard+Ruby+On+Rails" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://deanpearce.net/all-aboard-ruby-on-rails/&amp;title=All+Aboard+Ruby+On+Rails" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=All+Aboard+Ruby+On+Rails+-+http://b2l.me/acg7dc&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://deanpearce.net/all-aboard-ruby-on-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get a Reaction With Catalyst</title>
		<link>http://deanpearce.net/get-a-reaction-with-catalyst/</link>
		<comments>http://deanpearce.net/get-a-reaction-with-catalyst/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 02:36:06 +0000</pubDate>
		<dc:creator>Dean Pearce</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[Catalyst]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://deanpearce.net/?p=123</guid>
		<description><![CDATA[Today, I will be discussing Catalyst which is an MVC web application framework written in Perl. Free to use, just search CPAN for Catalyst for more information. If you're adventurous and know Perl, go ahead and load CPAN and use "install Task::Catalyst" or on the Catalyst page, Matt Trout has posted a wonderful script to speed up installation. I'll cover that part in a bit, but let's say it takes longer than a coffee break.]]></description>
			<content:encoded><![CDATA[<div id="attachment_131" style="background: #EBEBEB !important; margin: 1px; border: 1px solid #525252;"><a href="http://deanpearce.net/wp-content/uploads/2010/07/catalyst_170pix.png"><img class="size-full wp-image-131" title="catalyst_170pix" src="http://deanpearce.net/wp-content/uploads/2010/07/catalyst_170pix.png" alt="" width="170" height="58" /></a></div>
<p>Hi all, it&#8217;s been a while since I&#8217;ve updated my blog, but with jobs and projects and plain old laziness it&#8217;s hard to keep up with everything. For months now I&#8217;ve been playing with Catalyst at work, Ruby on Rails for development and back in the day some CakePHP to feed my PHP addiction. Also I&#8217;ve played with Java using Tomcat to produce web apps at previous jobs, and for the fun of it trying out different technologies. I&#8217;ve finally decided to make use of this wasteful time and put it together into a series of blog posts!</p>
<p>Today, I will be discussing Catalyst which is an MVC web application framework written in Perl. Free to use, just <a href="http://search.cpan.org">search CPAN</a> for Catalyst for more information. If you&#8217;re adventurous and know Perl, go ahead and load CPAN and use &#8220;install Task::Catalyst&#8221; or on the Catalyst page, Matt Trout has posted a wonderful script to speed up installation. I&#8217;ll cover that part in a bit, but let&#8217;s say it takes longer than a coffee break. There will be a code link at the <strong>bottom</strong> of the article where you can download my 35 minute Catalyst application to play with!</p>
<p><strong>What I will be covering:</strong></p>
<ul>
<li>The process from start to finish creating a new shell of a Catalyst application</li>
<li>A tiny bit about the plugins for Catalyst and which ones I found useful</li>
<li>Framing up your first application using HTML::Mason</li>
<li>How to properly enjoy the fact that from start to finish, you have a paginating blog with a decent login system that you can post to in under 30 minutes (after Catalyst initial install)</li>
</ul>
<p><strong>The Installation</strong></p>
<p>Here it gets a bit technical, but I&#8217;ll explain it some as I go. I&#8217;ve cut out a lot of the processing text for sanity&#8217;s sake (denoted by &#8221; &#8230;&#8221; at the end of a line). Besides, if you&#8217;re serious/already have done the install, who needs to see the auto-generated text anyways <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p><strong>Creating the Database</strong></p>
<p>This is the backbone of the application, our database. Now, I&#8217;m still addicted to PHP like crack, so I still love my PHP tools like PHPMyAdmin. Wonderfully easy to get databases up and running. Organize a database for yourself, I setup a very simplistic (mostly self explanatory) set of tables: <em>Users (id, username, password, email) and Entries (id, title, body,  posted)</em>. It&#8217;s best to do your database architecture before we get started as we will be using it right away for model generation. The models can be regenerated at any time, but I recommend getting your database right the first time and then to tweak as needed. First we need a database:</p>
<ul>
<li>mysql&gt; create database MyBlog;</li>
<li>Query OK, 1 row affected (0.37 sec)</li>
<li>mysql&gt; exit</li>
</ul>
<p><strong>Creating the App</strong></p>
<p>App creation couldn&#8217;t be easier with Catalyst (basically the same as Ruby on Rails and CakePHP). You give the generator script the name of your app and off it goes creating the scaffolding you need to get your app going. It&#8217;s important to note that on some operating systems the call is simply &#8220;catalyst&#8221; instead of &#8220;catalyst.pl&#8221; (Windows if I am not mistaken, but then who&#8217;s using that for development anyways <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<ul>
<li>pearce@marvin:~$ catalyst.pl MyBlog</li>
<li>created &#8220;MyBlog&#8221; &#8230;</li>
</ul>
<p><strong>Configuring the App</strong></p>
<p>After running this, you will need to follow what the screen tells you and run the Makefile. It will take care of getting everything up and running, but not chmod&#8217;ing the scripts to be executable strangely enough. Just chmod the .pl files in the scripts directory that was generated.</p>
<ul>
<li>Change to application directory and Run &#8220;perl Makefile.PL&#8221; to make sure your install is complete</li>
<li>pearce@marvin:~$ cd MyBlog</li>
<li>pearce@marvin:~/MyBlog$ perl Makefile.PL</li>
<li>include /home/pearce/MyBlog/inc/Module/Install.pm &#8230;</li>
<li>pearce@marvin:~/MyBlog$ chmod +x script/*.pl</li>
</ul>
<p><strong>The Meat and Potatoes: MVC Implementation</strong></p>
<p>Here is where Catalyst shines in my opinion. It has nice, clean and clear steps for creating the Model, View and Controller. All functionality can be found in the script/myblog_create.pl script, and you can consult it for further functionality. We are going for speed, so let&#8217;s create the components as fast as possible. We want a model that comes from our MySQL database without any additional coding, a basic Blog controller (that we can use instead of Root) and we want to use HTML::Mason for the templating. This is done with 3 easy commands as shown.</p>
<p style="padding-left: 30px;"><strong>Model</strong></p>
<p style="padding-left: 30px;">Don&#8217;t forget to change the &#8220;root&#8221; and &#8220;****&#8221; to your username and password for your database!</p>
<blockquote>
<ul style="padding-left: 30px;">
<li>pearce@marvin:~/MyBlog$ script/myblog_create.pl model MyBlog DBIC::Schema MyBlog::SchemaClass create=static dbi:mysql:MyBlog root ****</li>
<li>exists &#8220;/home/pearce/MyBlog/script/../lib/MyBlog/Model&#8221; &#8230;</li>
</ul>
</blockquote>
<p style="padding-left: 30px;"><strong>Controller</strong></p>
<blockquote>
<ul style="padding-left: 30px;">
<li>pearce@marvin:~/MyBlog$ script/myblog_create.pl controller Blog</li>
<li>exists &#8220;/home/pearce/MyBlog/script/../lib/MyBlog/Controller&#8221;</li>
<li>exists &#8220;/home/pearce/MyBlog/script/../t&#8221;</li>
<li>created &#8220;/home/pearce/MyBlog/script/../lib/MyBlog/Controller/Blog.pm&#8221;</li>
<li>created &#8220;/home/pearce/MyBlog/script/../t/controller_Blog.t&#8221;</li>
</ul>
</blockquote>
<p style="padding-left: 30px;"><strong>View</strong></p>
<blockquote>
<ul style="padding-left: 30px;">
<li>pearce@marvin:~/MyBlog$ script/myblog_create.pl view Mason Mason</li>
<li>exists &#8220;/home/pearce/MyBlog/script/../lib/MyBlog/View&#8221;</li>
<li>exists &#8220;/home/pearce/MyBlog/script/../t&#8221;</li>
<li>created &#8220;/home/pearce/MyBlog/script/../lib/MyBlog/View/Mason.pm&#8221;</li>
<li>created &#8220;/home/pearce/MyBlog/script/../t/view_Mason.t&#8221;</li>
</ul>
</blockquote>
<p>We are now prepped to run our app! We can fire it up by typing &#8220;script/myblog_server.pl&#8221; which will fire up a Catalyst running server on port 3000. So if you navigate to http://localhost:3000 you will be able to see your app up and running! The hard part is over, the next steps will be creating the template files in the root directory and creating the actions. I will go over them broadly but it&#8217;s a lot of concepts to cover. The CPAN repository has great tutorials and cookbooks, but I&#8217;ll share with you what I didn&#8217;t know when I started with Catalyst.</p>
<ol>
<li>In typical fashion, the controller looks for the template file of the same name as the page you are requesting. So /login will look for &#8220;login&#8221; in the root directory that was generated. To change the template (and keep in typical naming fashion you would want something like &#8220;login.mason&#8221; or &#8220;login.mas&#8221; or perhaps more general &#8220;action.mason&#8221; which has parameters. All depends on your necessities. You can change the template for an action by changing the stash template $c-&gt;stash-&gt;{template} = &#8220;myfile.mason&#8221;.</li>
<li>You can create an autohandler file in the root which is executed before any of the action templating. This allows you to insert a header/footer on every page automatically. Simply include the line &#8220;% $m-&gt;call_next;&#8221; where appropriate in the file to load the requested template file there.</li>
<li>Chaining an action is amazing. If you don&#8217;t understand chaining, please read up on it elsewhere, its fundamental to most MVC designs, and you won&#8217;t get very far (sanely anyways) without it. It allows you to pass parameters via URL and handle subpages easily. It&#8217;s made up of the Chain (to a previous action), the PathPart (the actual action you want to associate with) and the Arguments (0 or more, Capture them if you are going to have subpages after the arguments). So something like &#8220;sub login : Chained(&#8220;/&#8221;) : PathPart(&#8220;login&#8221;) : Args(0)&#8221; will result in the action /login going to the sub named login.</li>
<li>Mason files are very similar to TT, to ERB to JSP. Similar tags, similar structure, you just need to get used to the &lt;%args&gt; parameter at the top of the file, as well as some interesting syntax. You can embed code right in the page, and while not always best practice, it is a godsend for customization.</li>
<li>Always leave -Debug on in MyBlog.pm when developing. It shows errors in detail in the browser, it shows errors in the console. You won&#8217;t be able to understand what&#8217;s going on without it at least while learning.</li>
</ol>
<p><strong>Final Thoughts</strong></p>
<p>Hard to believe that this blog post took way longer to write than it did to finish up the demonstration blog application. The application from start (creating the db) to finish (creating the tarball) took 35 minutes. A fairly impressive feat, but hardly unbelievable if you are familiar with Perl and some MVC architecture. Here&#8217;s a look at some of the pros and cons I faced both in speed developing this app and in general developing with Catalyst:</p>
<p><strong>Pros</strong></p>
<ol>
<li>Wickedly fast prototyping, churning out a functional application in minutes.</li>
<li>Growing community, quite a large amount of documentation on Catalyst and its default model DBIx.</li>
<li>Easy to use chaining functionality (in comparison to Ruby on Rails routes file and others).</li>
<li>Intuitive templating (not so much a pro, but a definite make it or break it situation).</li>
<li>Integrates well with CPAN modules</li>
<li>Has a wide variety of plugins available. The one I make use of is called AuthenCookie which handles all your cookie based authentication for you. This is available on CPAN and needed to run the demo. Explore, people write modules frequently and it might shave minutes or hours of your project, with the good feeling of having a community of eyes looking at it for you, keeping it up to date and speedy.</li>
</ol>
<p><strong>Cons</strong></p>
<ol>
<li>Catalyst itself is a nightmare to install. I mentioned this earlier, but seriously, get the installation script or write your own that presses &#8220;Enter&#8221; over and over <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . It has a good 75 modules to install, more if you&#8217;re starting from a fresh Perl install. Just make sure you have unzip configured for CPAN, write permissions everywhere and that your build tools are working, run the script and go for lunch. It will take upwards of an hour over a mediocre internet connection to get Catalyst going. The upside is once you have it, it&#8217;s there forever and easy to update/remove.</li>
<li>You have to like Perl. And I don&#8217;t mean just &#8220;yeah me and Perl are good pals&#8221; but I mean &#8220;..must&#8230;have&#8230;Perl&#8230;to&#8230;live&#8221; kind of situation. Okay, maybe not that much, but an intimate knowledge of Perl (and its special variables) will save you time and headaches. With DBIx::Class I find myself mapping result sets, or iterating using $_ quite frequently. Frankly, you don&#8217;t need much more than that, a basic understanding of hashes and how Perl differentiates between a ref and an &#8220;object&#8221; (for lack of a conceptually easier term). You can pick it up as you go, and the framework covers most of the basics, but you will want to pick Perl up to get the most out of it.</li>
<li>You will need some sort of memory caching service (like memcached) to keep any very large scale (or computationally complex) system running at peak performance. This is more of a scalability issue plus overhead than a design issue. Probably best not to be wasting cycles recomputing a homepage anyways.</li>
</ol>
<p>So please download the package [<strong><a href="../wp-content/uploads/2010/07/MyBlog.tar.gz">MyBlog.tar.gz</a></strong>] and play with the app. It is fully functional, albeit kind of silly in terms of security and design, but it would be a good first effort. You get to see templating, parameters, the stash, DBIx (the model we are using, it is an interesting beast, please read up on CPAN about it). And please leave comments/corrections/suggestions in the comments as usual! And remember this is the first in a series of posts that will discuss Ruby on Rails and PHP, and dive into why Java is terrifying for any basic web application.</p>
<p><strong>Update:</strong> I have now seen the goodness of GitHub and have started a repository. You can view the code for this and future projects at <a title="http://github.com/deanpearce/MyBlogCatalyst" href="http://github.com/deanpearce/MyBlogCatalyst">http://github.com/deanpearce/MyBlogCatalyst</a>!</p>
<p><strong>Update:</strong> My colleague and code guide Yanick has informed me that I could have saved myself a lot of time by disabling running the tests when building the modules. It makes good sense that we could save some time here, especially if we don&#8217;t anticipate any issues (such as on a fresh install with core prerequisite packages and programs installed such as build-essential and unzip installed). For this I&#8217;m a bit ashamed I didn&#8217;t think of this while installing, and from initial reinstall tests, goes from a lunch break to grabbing a coffee. Thanks Yanick!</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://deanpearce.net/get-a-reaction-with-catalyst/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://deanpearce.net/get-a-reaction-with-catalyst/&amp;title=Get+a+Reaction+With+Catalyst" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://deanpearce.net/get-a-reaction-with-catalyst/&amp;title=Get+a+Reaction+With+Catalyst" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://deanpearce.net/get-a-reaction-with-catalyst/&amp;title=Get+a+Reaction+With+Catalyst&amp;desc=Today%2C%20I%20will%20be%20discussing%20Catalyst%20which%20is%20an%20MVC%20web%20application%20framework%20written%20in%20Perl.%20Free%20to%20use%2C%20just%20search%20CPAN%20for%20Catalyst%20for%20more%20information.%20If%20you%27re%20adventurous%20and%20know%20Perl%2C%20go%20ahead%20and%20load%20CPAN%20and%20use%20%22install%20Task%3A%3ACatalyst%22%20or%20on%20the%20Catalyst%20page%2C%20Matt%20Trout%20has%20posted%20a%20wonderful%20script%20to%20speed%20up%20installation.%20I%27ll%20cover%20that%20part%20in%20a%20bit%2C%20but%20let%27s%20say%20it%20takes%20longer%20than%20a%20coffee%20break." rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://deanpearce.net/get-a-reaction-with-catalyst/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://deanpearce.net/get-a-reaction-with-catalyst/&amp;title=Get+a+Reaction+With+Catalyst" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://deanpearce.net/get-a-reaction-with-catalyst/&amp;title=Get+a+Reaction+With+Catalyst" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://deanpearce.net/get-a-reaction-with-catalyst/&amp;title=Get+a+Reaction+With+Catalyst" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Get+a+Reaction+With+Catalyst+-+File: /data/app/webapp/functions.php<br />Line: 43<br />Message: Table 'b2l_shrinker.phurl_urls' doesn't exist&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://deanpearce.net/get-a-reaction-with-catalyst/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Few Words About ACTA</title>
		<link>http://deanpearce.net/a-few-words-about-acta/</link>
		<comments>http://deanpearce.net/a-few-words-about-acta/#comments</comments>
		<pubDate>Wed, 28 Apr 2010 02:07:28 +0000</pubDate>
		<dc:creator>Dean Pearce</dc:creator>
				<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://deanpearce.net/?p=119</guid>
		<description><![CDATA[The time has come Internet, we must stand united once more for our causes. Over the past several years, governments from around the world have been preparing in secrecy a plan for a global copyright and investigation model for the Internet. Behind closed doors they have discussed many things that the citizens of their respective [...]]]></description>
			<content:encoded><![CDATA[<p>The time has come Internet, we must stand united once more for our causes. Over the past several years, governments from around the world have been preparing in secrecy a plan for a global copyright and investigation model for the Internet. Behind closed doors they have discussed many things that the citizens of their respective countries won&#8217;t read or ever even hear about until it is far too late. ACTA, or the anti-counterfeiting trade agreement will likely not be passed with citizen or possibly even cabinet or senate consent in most countries, and for those that do, they probably won&#8217;t even get to see the entirety of the agreement.</p>
<p>This is not only a great infringement on our freedom as citizen of our respective countries, but also if allowed to pass freely a big step in the wrong direction for governmental power. True that the core of the document has been released, however its amendments and unique additions by particular countries are censored for fear of retribution and retaliation. Our inalienable right to free speech in most free countries are at risk, and by doing nothing we only encourage big government, and even government that transcends borders. Which is why I ask you all to do your part, review the facts, and act. Comment back, dispute my claim, prove me right provide evidence, be proactive and send a letter to your member of parliament or congressman. But please don&#8217;t do nothing. </p>
<p>I don&#8217;t mean to sound like doomsday is coming, but I do want to warn that the first step to losing your freedom is not asking the right questions and demanding answers from government, especially when they work in secrecy.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://deanpearce.net/a-few-words-about-acta/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://deanpearce.net/a-few-words-about-acta/&amp;title=A+Few+Words+About+ACTA" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://deanpearce.net/a-few-words-about-acta/&amp;title=A+Few+Words+About+ACTA" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://deanpearce.net/a-few-words-about-acta/&amp;title=A+Few+Words+About+ACTA&amp;desc=The%20time%20has%20come%20Internet%2C%20we%20must%20stand%20united%20once%20more%20for%20our%20causes.%20Over%20the%20past%20several%20years%2C%20governments%20from%20around%20the%20world%20have%20been%20preparing%20in%20secrecy%20a%20plan%20for%20a%20global%20copyright%20and%20investigation%20model%20for%20the%20Internet.%20Behind%20closed%20doors%20they%20have%20discussed%20many%20things%20that%20th" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://deanpearce.net/a-few-words-about-acta/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://deanpearce.net/a-few-words-about-acta/&amp;title=A+Few+Words+About+ACTA" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://deanpearce.net/a-few-words-about-acta/&amp;title=A+Few+Words+About+ACTA" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://deanpearce.net/a-few-words-about-acta/&amp;title=A+Few+Words+About+ACTA" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=A+Few+Words+About+ACTA+-+http://tinyurl.com/272yrfa&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://deanpearce.net/a-few-words-about-acta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DupliFinder Alpha Release</title>
		<link>http://deanpearce.net/duplifinder-alpha-release/</link>
		<comments>http://deanpearce.net/duplifinder-alpha-release/#comments</comments>
		<pubDate>Sat, 27 Mar 2010 00:51:27 +0000</pubDate>
		<dc:creator>Dean Pearce</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[Beta]]></category>
		<category><![CDATA[Project News]]></category>

		<guid isPermaLink="false">http://deanpearce.net/?p=113</guid>
		<description><![CDATA[As promised, here is a compiled installer as well as the Visual C# 2008 source code for your enjoyment.]]></description>
			<content:encoded><![CDATA[<p>As promised, here is a compiled installer as well as the Visual C# 2008 source code for your enjoyment. A few things to note: I can&#8217;t guarantee that it will work on your system, I can&#8217;t guarantee that it will work as advertised, and that all crashes have a reason. For developers I can&#8217;t guarantee that the source code is readable <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Hopefully you&#8217;ll see through my poor commenting and naming conventions and see the potential for this code <img src='http://deanpearce.net/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Anyways, this is by no means a finished product, but I am releasing it to one keep myself on schedule, and two make a duplicate file finding program available for free (finally!). The installer may only be 64-bit (the publish options in Visual Studio are so confusing!) so if that&#8217;s the case you will need to compile it yourself. Mature releases will have a 64 and 32-bit build available (with probably a real and better install system).</p>
<ul>
<li><a title="DupliFinder Installer for Windows" href="http://deanpearce.net/wp-content/uploads/2010/03/DupliFinder_Install.zip">DupliFinder Installer for Windows</a></li>
<li><a title="DupliFinder Source Code" href="http://deanpearce.net/wp-content/uploads/2010/03/DupliFinder_Source.zip">DupliFinder Visual C# 2008 Source Code Project</a></li>
</ul>
<p>As usual, please leave feedback relating to functionality or utter destruction in the comments below, and remember it&#8217;s alpha software so use at your own risk! It won&#8217;t delete random files, but don&#8217;t think it won&#8217;t actually delete all the files when you select them with the checkbox and choose Erase!</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://deanpearce.net/duplifinder-alpha-release/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://deanpearce.net/duplifinder-alpha-release/&amp;title=DupliFinder+Alpha+Release" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://deanpearce.net/duplifinder-alpha-release/&amp;title=DupliFinder+Alpha+Release" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://deanpearce.net/duplifinder-alpha-release/&amp;title=DupliFinder+Alpha+Release&amp;desc=As%20promised%2C%20here%20is%20a%20compiled%20installer%20as%20well%20as%20the%20Visual%20C%23%202008%20source%20code%20for%20your%20enjoyment." rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://deanpearce.net/duplifinder-alpha-release/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://deanpearce.net/duplifinder-alpha-release/&amp;title=DupliFinder+Alpha+Release" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://deanpearce.net/duplifinder-alpha-release/&amp;title=DupliFinder+Alpha+Release" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://deanpearce.net/duplifinder-alpha-release/&amp;title=DupliFinder+Alpha+Release" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=DupliFinder+Alpha+Release+-+http://tinyurl.com/ybpopfm&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://deanpearce.net/duplifinder-alpha-release/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>In Development Land Again: DupliFinder, Duplicate Image Removal</title>
		<link>http://deanpearce.net/in-development-land-again-duplifinder-duplicate-image-removal/</link>
		<comments>http://deanpearce.net/in-development-land-again-duplifinder-duplicate-image-removal/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 05:13:28 +0000</pubDate>
		<dc:creator>Dean Pearce</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Beta]]></category>
		<category><![CDATA[Interfaces]]></category>
		<category><![CDATA[Project News]]></category>
		<category><![CDATA[Search]]></category>

		<guid isPermaLink="false">http://deanpearce.net/?p=103</guid>
		<description><![CDATA[Interesting enough, the more stressed I become the more I desire to program. And not just random programming, but programming to solve a problem (namely one of me ). What I&#8217;ve been working on over the past couple days is a nice Windows utility to work with and manage duplicate files. Right now it works [...]]]></description>
			<content:encoded><![CDATA[<p>Interesting enough, the more stressed I become the more I desire to program. And not just random programming, but programming to solve a problem (namely one of me <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ). What I&#8217;ve been working on over the past couple days is a nice Windows utility to work with and manage duplicate files. Right now it works on the head of the file (64KB) or entire file for comparison, but future versions (such as the one I&#8217;m working on now) are going to include audio stream matching (to compare audio regardless of the format or compression) and video frame matching along with a host of other options. Here&#8217;s a screen shot of it in action:</p>
<div id="attachment_104" class="wp-caption aligncenter" style="width: 583px"><a href="http://deanpearce.net/wp-content/uploads/2010/03/UI-feature-complete.png"><img class="size-large wp-image-104 " title="UI-feature-complete" src="http://deanpearce.net/wp-content/uploads/2010/03/UI-feature-complete-1024x623.png" alt="DupliFinder Duplicate File Finder" width="573" height="349" /></a><p class="wp-caption-text">DupliFinder Duplicate File Finder</p></div>
<p>As you can see the UI is almost complete, allowing you to select a root folder and you can scan current and sub directories optionally. The only problem with it at the moment is it&#8217;s single-threaded, so when it is given a large folder to process it feels as if the program has frozen, but don&#8217;t worry it&#8217;s crunching away in the background.</p>
<p>The feature I&#8217;m adding right now is a preview/compare pane for easy verification that the file is the same, as well as giving the user to option to delete the &#8220;duplicate&#8221; or &#8220;original&#8221; in case of file confusion. This will be ready to go for the v1.0 release of the utility.</p>
<p>If anyone is interested, I can package up a preview version that has some quirks and the single-threaded problem. I had looked all over for a program that would allow you to delete duplicate images and other files and it&#8217;s ridiculous the amount of money those scam-like software companies try and charge for such simple (but effective) software! Anyways I&#8217;m contributing back to the community by releasing this under GPLv2. On top of handling photos (for which I&#8217;ve seen some software cost $30US!) it will handle all sorts of stream and data related information.</p>
<p>For any programmers out there reading this, it was programmed using Visual C# 2008 on a Windows 7 development box, so all sorts of shiny Windows 7 features may start peeking through soon <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>If you have any comments, please feel free to leave them below, and if you would like to play with the source or the compiled version of this app, just let me know in the comments and I will fire off some more information and a package. That&#8217;s all for now!</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://deanpearce.net/in-development-land-again-duplifinder-duplicate-image-removal/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://deanpearce.net/in-development-land-again-duplifinder-duplicate-image-removal/&amp;title=In+Development+Land+Again%3A+DupliFinder%2C+Duplicate+Image+Removal" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://deanpearce.net/in-development-land-again-duplifinder-duplicate-image-removal/&amp;title=In+Development+Land+Again%3A+DupliFinder%2C+Duplicate+Image+Removal" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://deanpearce.net/in-development-land-again-duplifinder-duplicate-image-removal/&amp;title=In+Development+Land+Again%3A+DupliFinder%2C+Duplicate+Image+Removal&amp;desc=Interesting%20enough%2C%20the%20more%20stressed%20I%20become%20the%20more%20I%20desire%20to%20program.%20And%20not%20just%20random%20programming%2C%20but%20programming%20to%20solve%20a%20problem%20%28namely%20one%20of%20me%20%3A%29%29.%20What%20I%27ve%20been%20working%20on%20over%20the%20past%20couple%20days%20is%20a%20nice%20Windows%20utility%20to%20work%20with%20and%20manage%20duplicate%20files.%20Right%20now%20it%20" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://deanpearce.net/in-development-land-again-duplifinder-duplicate-image-removal/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://deanpearce.net/in-development-land-again-duplifinder-duplicate-image-removal/&amp;title=In+Development+Land+Again%3A+DupliFinder%2C+Duplicate+Image+Removal" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://deanpearce.net/in-development-land-again-duplifinder-duplicate-image-removal/&amp;title=In+Development+Land+Again%3A+DupliFinder%2C+Duplicate+Image+Removal" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://deanpearce.net/in-development-land-again-duplifinder-duplicate-image-removal/&amp;title=In+Development+Land+Again%3A+DupliFinder%2C+Duplicate+Image+Removal" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=In+Development+Land+Again%3A+DupliFinder%2C+Duplicate+Image+Removal+-+http://tinyurl.com/y9vuamk&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://deanpearce.net/in-development-land-again-duplifinder-duplicate-image-removal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solution to Root Locked Rogers HTC Dream!</title>
		<link>http://deanpearce.net/solution-to-root-locked-rogers-htc-dream/</link>
		<comments>http://deanpearce.net/solution-to-root-locked-rogers-htc-dream/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 22:46:23 +0000</pubDate>
		<dc:creator>Dean Pearce</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Beta]]></category>
		<category><![CDATA[HTC Dream]]></category>
		<category><![CDATA[Rogers]]></category>

		<guid isPermaLink="false">http://deanpearce.net/?p=100</guid>
		<description><![CDATA[New mod found to work around Rogers 911 Emergency Upgrade! Thanks to the DroidX hacking community for this great find!]]></description>
			<content:encoded><![CDATA[<p><strong>Huge Update!</strong></p>
<p>Since writing this, the DroidX team has come up with an awesome rooting method sans JTAG. The bonus is it seems to work on all Android phones, not just the DroidX.</p>
<p>You&#8217;ll need:</p>
<ul>
<li>The DroidX Exploit: <a href="http://droidx.net/forum/attachment.php?attachmentid=1&amp;d=1279820222">http://droidx.net/forum/attachment.php?attachmentid=1&amp;d=1279820222</a></li>
<li>A Signed SPL: <a href="http://sapphire-port-dream.googlecode.com/files/spl-signed.zip">http://sapphire-port-dream.googlecode.com/files/spl-signed.zip</a></li>
<li>A Recovery Image: <a href="http://rapidshare.com/files/387561074/recovery-RA-dream-v1.7.0R-cyan.img">http://rapidshare.com/files/387561074/recovery-RA-dream-v1.7.0R-cyan.img</a></li>
<li>CyanogenMod (5.0.8 for Android 2.1): <a href="http://n0rp.chemlab.org/android/update-cm-5.0.8-DS-signed.zip">http://n0rp.chemlab.org/android/update-cm-5.0.8-DS-signed.zip</a></li>
<li>An EBI1 Signed Radio<a href="http://briancrook.ca/android/cm-ports/bc-5.0.8-ebi1-signed.zip">http://briancrook.ca/android/cm-ports/bc-5.0.8-ebi1-signed.zip</a></li>
<li>The Google Applications: <a href="http://www.mediafire.com/?marqwt53ii0">http://www.mediafire.com/?marqwt53ii0</a></li>
<li>Finally, the Android SDK: <a href="http://dl.google.com/android/android-sdk_r06-windows.zip">http://dl.google.com/android/android-sdk_r06-windows.zip</a></li>
</ul>
<p>A great guide can be found at <a href="http://androidheadlines.com/2010/07/guide-on-how-to-root-you-htc-dream-to-2-1.html">http://androidheadlines.com/2010/07/guide-on-how-to-root-you-htc-dream-to-2-1.html</a> for the steps to follow, or hop on over to the XDA Developers thread for up to the minute information and help.</p>
<p>My personal choice is the Android 2.1 ROM as it runs pretty smooth and you get all the goodies that most other phones still crave <img src='http://deanpearce.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  If you&#8217;re adventurous the 6.0.0RC1 ROM is out for Android 2.2 but when I installed the image it had quite a few issues still with performance. You can install any custom ROM once you&#8217;ve rooted the phone and a guide on how to do that is found at <a href="http://wiki.cyanogenmod.com/index.php?title=Full_Update_Guide_-_Rogers_Dream_911_Patched">The CyanogenMod Wiki</a>. Happy hacking!</p>
<p><strong>Kept here for those who are curious enough</strong><br />
There is finally hope at last for all those people that were hurt by  Rogers Wireless a month ago. Rogers released a new firmware for the HTC  Dream for &#8220;911 emergency services&#8221; problems. It wasn&#8217;t a major problem  with the phone and more a reason to stop people from rooting their  phones on their network. We won&#8217;t get into that and their shady tactics  for locking customers in and their horrible customer service, but we  will mention that there is hope for all those locked phones!</p>
<p>A new possible workaround has come out that involves connecting to  the phone via JTAG to access the debugger of the ARM firmware loader to  load a different ROM than what has been deemed the &#8220;Perfect SPL&#8221; by  modders. This new workaround will allow for a change in the memory  address used for loading code so that the user can flash in their own  Radio, SPL and ultimately Android image. Since this is a hardware hack,  it will be nearly impossible for Rogers to make a software fix for this,  and will allow people with bricked HTC Dreams and Magics to be able to  revive their phones better than ever. A great job to everyone who was  working on the team to find a software or hardware hole, and I&#8217;m glad  that someone did at least (while decompiling I had found nothing  software wise, I was getting quite worried).</p>
<p>For those who are looking for a link, check out:</p>
<ul>
<li><a href="http://forum.xda-developers.com/showpost.php?p=5934885&amp;postcount=6">http://forum.xda-developers.com/showpost.php?p=5934885&amp;postcount=6</a></li>
<li><a href="http://r3nrut.com/?p=1">http://r3nrut.com/?p=1</a></li>
</ul>
<p>for more info on how the JTAG is constructed and what software is  needed. Please be careful though! This is still very early in the review  and development stage and there are many thing that are left to be  uncovered. Proceed at your own risk, but if you&#8217;re phone is already  bricked, you have nothing to lose! So enjoy your now FREE Android phone,  as was the original spirit of the device before Rogers got their hands  on it! If you find anything new out or any mistakes please let me know,  and if you have a success story please share it with everyone!</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://deanpearce.net/solution-to-root-locked-rogers-htc-dream/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://deanpearce.net/solution-to-root-locked-rogers-htc-dream/&amp;title=Solution+to+Root+Locked+Rogers+HTC+Dream%21" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://deanpearce.net/solution-to-root-locked-rogers-htc-dream/&amp;title=Solution+to+Root+Locked+Rogers+HTC+Dream%21" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://deanpearce.net/solution-to-root-locked-rogers-htc-dream/&amp;title=Solution+to+Root+Locked+Rogers+HTC+Dream%21&amp;desc=New%20mod%20found%20to%20work%20around%20Rogers%20911%20Emergency%20Upgrade%21%20Thanks%20to%20the%20DroidX%20hacking%20community%20for%20this%20great%20find%21" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://deanpearce.net/solution-to-root-locked-rogers-htc-dream/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://deanpearce.net/solution-to-root-locked-rogers-htc-dream/&amp;title=Solution+to+Root+Locked+Rogers+HTC+Dream%21" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://deanpearce.net/solution-to-root-locked-rogers-htc-dream/&amp;title=Solution+to+Root+Locked+Rogers+HTC+Dream%21" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://deanpearce.net/solution-to-root-locked-rogers-htc-dream/&amp;title=Solution+to+Root+Locked+Rogers+HTC+Dream%21" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Solution+to+Root+Locked+Rogers+HTC+Dream%21+-+http://tinyurl.com/ya49jo8&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://deanpearce.net/solution-to-root-locked-rogers-htc-dream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Make iTunes Recognize Your Keyboard Controls Even While Minimized</title>
		<link>http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/</link>
		<comments>http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 01:14:32 +0000</pubDate>
		<dc:creator>Dean Pearce</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/</guid>
		<description><![CDATA[In the eternal hunt to make my life a bit easier and more flowing, I was getting tired of having to ALT+TAB out of a game just to change or pause a song. The thing that irked me was that the keyboard controls worked while in focus but as soon as it lost focus it [...]]]></description>
			<content:encoded><![CDATA[<p>In the eternal hunt to make my life a bit easier and more flowing, I was getting tired of having to ALT+TAB out of a game just to change or pause a song. The thing that irked me was that the keyboard controls worked while in focus but as soon as it lost focus it would stop. Well thanks to this nifty little iTunes plugin found at <a href="http://www.everythingitunes.com/os/windows/2008-01-04/mmkeysdll">http://www.everythingitunes.com/os/windows/2008-01-04/mmkeysdll</a> I can now control iTunes even when minimized!</p>
<p>It appears to work with Windows XP, Vista and 7 without any problem. All you have to do is go to their site, download the mmkeys.dll file to C:\Users\your_username\AppData\Roaming\Apple Computer\iTunes\iTunes Plug-ins and restart iTunes! Kudos to the developers of this tool, you have greatly improved my gaming music life!</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/&amp;title=Make+iTunes+Recognize+Your+Keyboard+Controls+Even+While+Minimized" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/&amp;title=Make+iTunes+Recognize+Your+Keyboard+Controls+Even+While+Minimized" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/&amp;title=Make+iTunes+Recognize+Your+Keyboard+Controls+Even+While+Minimized&amp;desc=In%20the%20eternal%20hunt%20to%20make%20my%20life%20a%20bit%20easier%20and%20more%20flowing%2C%20I%20was%20getting%20tired%20of%20having%20to%20ALT%2BTAB%20out%20of%20a%20game%20just%20to%20change%20or%20pause%20a%20song.%20The%20thing%20that%20irked%20me%20was%20that%20the%20keyboard%20controls%20worked%20while%20in%20focus%20but%20as%20soon%20as%20it%20lost%20focus%20it%20would%20stop.%20Well%20thanks%20to%20this%20nifty" rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/&amp;title=Make+iTunes+Recognize+Your+Keyboard+Controls+Even+While+Minimized" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/&amp;title=Make+iTunes+Recognize+Your+Keyboard+Controls+Even+While+Minimized" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/&amp;title=Make+iTunes+Recognize+Your+Keyboard+Controls+Even+While+Minimized" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Make+iTunes+Recognize+Your+Keyboard+Controls+Even+While+Minimized+-+http://tinyurl.com/ydykrg5&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://deanpearce.net/make-itunes-recognize-your-keyboard-controls-even-while-minimized/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NVIDIA Driver Version 196.75 Recalled!</title>
		<link>http://deanpearce.net/nvidia-driver-version-196-75-recalled/</link>
		<comments>http://deanpearce.net/nvidia-driver-version-196-75-recalled/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 00:15:40 +0000</pubDate>
		<dc:creator>Dean Pearce</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Driver]]></category>
		<category><![CDATA[NVIDIA]]></category>

		<guid isPermaLink="false">http://deanpearce.net/?p=94</guid>
		<description><![CDATA[NVIDIA has issued a recall for the driver version 196.75 released earlier this week (March 2nd) due to reported problems causing the GPU fan to stop working, causing the GPU to run without cooling and eventually burn out.]]></description>
			<content:encoded><![CDATA[<p><strong>NVIDIA has issued a recall for the driver version 196.75 released earlier this week (March 2nd) due to reported problems causing the GPU fan to stop working, causing the GPU to run without cooling and eventually burn out.</strong></p>
<p>Activision Blizzard first made note of the problem when its support division began receiving complaints about malfunctioning and overheating video cards. Beta testers for their upcoming game Starcraft II also made note of the issue reporting lower frame rates and game play issues. Blizzard issued this statement to all their players:</p>
<p><em>“We’re getting reports where users are getting intermittent low FPS  after installing these drivers. It seems that it is related to the fan  control included in these drivers not working correctly and is causing  the video card to overheat on 3D applications. This will affect Warcraft  3, World of Warcraft and StarCraft 2 Beta. Please uninstall the drivers  and revert back to the older ones.”</em></p>
<p>NVIDIA has since pulled the driver from their website, rolling back to the previous stable 196.21 WHQL certified driver and have requested that users downgrade to the 196.21 version of the driver.</p>
<p><em>“We are aware that some customers have reported fan speed issues  with the latest 196.75 WHQL drivers on NVIDIA.com. Until we can verify  and root cause this issue, we recommend that customers stay with, or  return to 196.21 WHQL drivers. Release 196.75 drivers have been  temporarily removed from our Web site in the meantime.”</em></p>
<p>It is recommended that if you have done a driver update recently that you check if you are running version 196.75 of the and to immediately roll back to an earlier stable version of the driver, even if you haven&#8217;t noticed any issues, until NVIDIA has resolved the failure report. Please contact NVIDIA to report graphics card failures, as it is a driver issue and not a game issue.</p>
<p>If you are looking for the rollback version of the driver you can find them below:</p>
<p><strong>Windows XP:</strong> <a href="http://www.nvidia.com/object/winxp_196.21_whql.html">http://www.nvidia.com/object/winxp_196.21_whql.html</a><br />
<strong>Windows XP 64-bit:</strong> <a href="http://www.nvidia.com/object/winxp64_196.21_whql.html">http://www.nvidia.com/object/winxp64_196.21_whql.html</a><br />
<strong>Windows Vista/7 32-bit:</strong> <a href="http://www.nvidia.com/object/win7_winvista_32bit_196.21_whql.html">http://www.nvidia.com/object/win7_winvista_32bit_196.21_whql.html</a><br />
<strong>Windows Vista/7 64-bit:</strong> <a href="http://www.nvidia.com/object/win7_winvista_64bit_196.21_whql.html">http://www.nvidia.com/object/win7_winvista_64bit_196.21_whql.html</a></p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://deanpearce.net/nvidia-driver-version-196-75-recalled/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://deanpearce.net/nvidia-driver-version-196-75-recalled/&amp;title=NVIDIA+Driver+Version+196.75+Recalled%21" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://deanpearce.net/nvidia-driver-version-196-75-recalled/&amp;title=NVIDIA+Driver+Version+196.75+Recalled%21" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://deanpearce.net/nvidia-driver-version-196-75-recalled/&amp;title=NVIDIA+Driver+Version+196.75+Recalled%21&amp;desc=NVIDIA%20has%20issued%20a%20recall%20for%20the%20driver%20version%20196.75%20released%20earlier%20this%20week%20%28March%202nd%29%20due%20to%20reported%20problems%20causing%20the%20GPU%20fan%20to%20stop%20working%2C%20causing%20the%20GPU%20to%20run%20without%20cooling%20and%20eventually%20burn%20out." rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://deanpearce.net/nvidia-driver-version-196-75-recalled/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://deanpearce.net/nvidia-driver-version-196-75-recalled/&amp;title=NVIDIA+Driver+Version+196.75+Recalled%21" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://deanpearce.net/nvidia-driver-version-196-75-recalled/&amp;title=NVIDIA+Driver+Version+196.75+Recalled%21" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://deanpearce.net/nvidia-driver-version-196-75-recalled/&amp;title=NVIDIA+Driver+Version+196.75+Recalled%21" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=NVIDIA+Driver+Version+196.75+Recalled%21+-+http://tinyurl.com/yau2qf9&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://deanpearce.net/nvidia-driver-version-196-75-recalled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Theory In Object Detection</title>
		<link>http://deanpearce.net/theory-in-object-detection/</link>
		<comments>http://deanpearce.net/theory-in-object-detection/#comments</comments>
		<pubDate>Fri, 18 Dec 2009 16:04:07 +0000</pubDate>
		<dc:creator>Dean Pearce</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Interfaces]]></category>
		<category><![CDATA[Surface Computing]]></category>

		<guid isPermaLink="false">http://deanpearce.net/?p=91</guid>
		<description><![CDATA[I have been playing with edge detection for a few weeks now, and slowly I'm gathering a solid knowledge base related to how to do object detection. Primarily I have been playing with facial recognition, but my end goal is to be able to track hands, for a virtual table PC, so that when I build my surface computer the adaption of the algorithms is easy. The goal is to use edge detection and to determine the shape of the enclosed object.]]></description>
			<content:encoded><![CDATA[<p>I have been playing with edge detection for a few weeks now, and slowly I&#8217;m gathering a solid knowledge base related to how to do object detection. Primarily I have been playing with facial recognition, but my end goal is to be able to track hands, for a virtual table PC, so that when I build my surface computer the adaption of the algorithms is easy. The goal is to use edge detection and to determine the shape of the enclosed object.</p>
<p>The current algorithm that I am building is based on some assumptions:</p>
<ul>
<li>The person is feature complete (two eyes, two eyebrows, one nose, one mouth)</li>
<li>The room is relatively well lit (haven&#8217;t incorporated luminosity correction for shape detection, need to work on performance)</li>
<li>There is a notable edge difference between these features (enough for the algorithm to detect edges)</li>
</ul>
<p>Assuming these things, the edge detection is mounted in a matrix and through various reduction methods, it reduces the amount of noise (isolated, or only sharing an edge with one cell). From these shapes we can determine facial structure based on clusters of a predefined shape.</p>
<p>While this is fun for face tracking purposes, it strays from the principle concept that is trying to be achieved with virtual touch computing. Facial features are relatively easy to track as they are static in context of each other, so predictable patterns even in rotation are possible. Fingers on the other hand are a more dynamic object to track, as spacing, position count are likely to change frequently. For example someone who wants to drag an object around may only hold out one finger and drag the object where they want to move it, while a rotation might use all five fingers.</p>
<p>On a surface such as a touch PC, this is relatively easy through the user of IR LEDs using the aforementioned FTIR (frustrated total internal reflection) methods of light detection, or through the idea of using a set of IR lasers close to the surface with planers to diffuse the beam over the table, but virtually there is lots of noise in the image. The algorithm that I am currently working on tries to filter out the noise through the following methods:</p>
<ul>
<li>Identify the individual in the image (or what is visible of them) and filter out the background image to 0&#8242;s in the matrix</li>
<li>Process the general form outline, find where on the matrix the general shape of the hands are, and once this is processed identify the digits</li>
<li>Filter out everything except the digits and return the points which are visible</li>
</ul>
<p>This sounds easier than it looks, however there are many limitations and issues when it comes to distinguish-ability. Another problem on top of this is light conditions, multiple people in the image and detectability of their shape. This is the area that I am working on now for performance reasons. Regardless, the skills I obtain developing this algorithm will make surface digit detection trivial in nature.</p>
<p>If anyone has any suggestions on how to detect full human motion based on image capture and processing, please let me know. I am always looking for a good algorithm <img src='http://deanpearce.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-knowledge">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://deanpearce.net/theory-in-object-detection/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://deanpearce.net/theory-in-object-detection/&amp;title=Theory+In+Object+Detection" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://deanpearce.net/theory-in-object-detection/&amp;title=Theory+In+Object+Detection" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-diigo">
			<a href="http://www.diigo.com/post?url=http://deanpearce.net/theory-in-object-detection/&amp;title=Theory+In+Object+Detection&amp;desc=I%20have%20been%20playing%20with%20edge%20detection%20for%20a%20few%20weeks%20now%2C%20and%20slowly%20I%27m%20gathering%20a%20solid%20knowledge%20base%20related%20to%20how%20to%20do%20object%20detection.%20Primarily%20I%20have%20been%20playing%20with%20facial%20recognition%2C%20but%20my%20end%20goal%20is%20to%20be%20able%20to%20track%20hands%2C%20for%20a%20virtual%20table%20PC%2C%20so%20that%20when%20I%20build%20my%20surface%20computer%20the%20adaption%20of%20the%20algorithms%20is%20easy.%20The%20goal%20is%20to%20use%20edge%20detection%20and%20to%20determine%20the%20shape%20of%20the%20enclosed%20object." rel="nofollow" class="external" title="Post this on Diigo">Post this on Diigo</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://deanpearce.net/theory-in-object-detection/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-mixx">
			<a href="http://www.mixx.com/submit?page_url=http://deanpearce.net/theory-in-object-detection/&amp;title=Theory+In+Object+Detection" rel="nofollow" class="external" title="Share this on Mixx">Share this on Mixx</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://deanpearce.net/theory-in-object-detection/&amp;title=Theory+In+Object+Detection" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://deanpearce.net/theory-in-object-detection/&amp;title=Theory+In+Object+Detection" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Theory+In+Object+Detection+-+http://tinyurl.com/ya5puxb&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://deanpearce.net/theory-in-object-detection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
