<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom">
 <title>Kevin Old</title>
 
 <link href="http://www.kevinold.com/" />
 <updated>2009-08-31T23:50:15-05:00</updated>
 <id>http://www.kevinold.com/</id>
 <author>
   <name>Kevin Old</name>
   <email>kevin@kevinold.com</email>
 </author>
 
 <link rel="self" href="http://feeds.feedburner.com/KevinOld" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
   <title>My quest to restore productivity to stalled personal projects</title>
   <link href="http://www.kevinold.com/2009/05/06/my-quest-to-restore-productivity-to-stalled-personal-projects.html" />
   <updated>2009-05-06T00:00:00-05:00</updated>
   <id>http://www.kevinold.com/2009/05/06/my-quest-to-restore-productivity-to-stalled-personal-projects</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve recently discovered a few key items that have lead to stalled personal projects and steps I can take to get back to productivity.&lt;/p&gt;
&lt;p&gt;Personal projects they are just that, personal.  I could ask other developers/designers to be apart of these projects and would probably get a few to contribute, but there&amp;#8217;s something about accomplishing a goal on my own that I am chasing.  How far can I push my talents and what end result can come of it.  I think this view also leads to a fear of the end result not being &amp;#8220;good enough&amp;#8221;.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve started several personal projects over the years and most remain unfinished.  What&amp;#8217;s worse is that most are 90% complete.  What&amp;#8217;s keeping me from finishing them?  The &amp;#8220;excuses&amp;#8221; range from &amp;#8220;the last 10% is the hardest to finish&amp;#8221; to being unwilling to commit to graphics and styling.  And procrastination.&lt;/p&gt;
&lt;p&gt;I stumbled upon a &lt;a href="http://startup.partnerup.com/2009/04/14/time-management-tips-get-things-done-and-boost-your-productivity/"&gt;blog post&lt;/a&gt; with a quote that might help me get a jump start on finishing some of these.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;People feel good when they accomplish tasks.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I know that.  I&amp;#8217;m giddy with joy when I accomplish even the smallest tasks with projects I work on professionally and personally.  I can&amp;#8217;t wait to share what I&amp;#8217;ve learned and created with family and friends.&lt;/p&gt;
&lt;h3&gt;Get organized&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Define simple and clear goals of what the end result should be.  All of the projects I&amp;#8217;ve accomplished in my professional career have mostly been with the aid of working with a graphics designer.  They initially provide mockups and a voice to converse with when certain design elements are unclear or I feel could be improved.  Their mockups provided the roadmap from which to work.  Mockups are &lt;strong&gt;visual goals&lt;/strong&gt;.&lt;/li&gt;
	&lt;li&gt;Divide tasks into unbelievably simple tasks.  Beside each task write an estimate on how long it will take to complete.  It seems silly, but a few days/weeks/months down the road when reviewing your task list you&amp;#8217;ll read the description and the time estimate and think &amp;#8220;I&amp;#8217;ve got X minutes.  I can check that off.&amp;#8221;&lt;/li&gt;
	&lt;li&gt;Use some form of &lt;span class="caps"&gt;GTD&lt;/span&gt;.  It really works.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Get productive&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Do something.  Anything.  Related to your project.&lt;/li&gt;
	&lt;li&gt;Get fired up.  Grab a cup of your favorite beverage, get in a productive environment, crank the tunes and sing along.  Whatever it is, just get &lt;em&gt;in the zone&lt;/em&gt;.&lt;/li&gt;
	&lt;li&gt;Once in the zone, pick a task that interests you.  It doesn&amp;#8217;t have to be next on the list, but it &lt;strong&gt;must&lt;/strong&gt; interest you.&lt;/li&gt;
	&lt;li&gt;Give it 10 minutes and if you&amp;#8217;re not &lt;strong&gt;feeling it&lt;/strong&gt; &amp;#8211; Stop.  Pick another task.&lt;/li&gt;
	&lt;li&gt;If you&amp;#8217;re still not feeling it, don&amp;#8217;t panic.  Step back and relax.  Choose something that you &lt;strong&gt;know you can accomplish in a short amount of time&lt;/strong&gt;.  This is important.  Back to &lt;a href="http://startup.partnerup.com/2009/04/14/time-management-tips-get-things-done-and-boost-your-productivity/"&gt;the post&lt;/a&gt;, the feeling of accomplishment gives you encouragement to continue.&lt;/li&gt;
	&lt;li&gt;Do not get bogged down in meaning less pieces of code.  An example would be database versioning.  Sure it&amp;#8217;s cool, but playing with &lt;a href="http://search.cpan.org/~ribasushi/DBIx-Class-0.08102/lib/DBIx/Class/Schema/Versioned.pm"&gt;DBIx::Class::Schema::Versioned&lt;/a&gt; for hours and hours and wondering why it just wouldn&amp;#8217;t &amp;#8220;work&amp;#8221;.  I then discovered at the bottom of the &lt;span class="caps"&gt;POD&lt;/span&gt; that it doesn&amp;#8217;t fully work with &lt;a href="http://www.sqlite.org"&gt;SQLite&lt;/a&gt;.  Great.  I&amp;#8217;d been motivated to once again work on my project and I picked the &lt;strong&gt;wrong&lt;/strong&gt; tasks to work on.  Instantly killed my &lt;strong&gt;productive mood&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These ideas are nothing new or groundbreaking and there are certainly others throughout the years that have written on this subject.  This was written to myself as my quest to restore productivity to personal projects is ongoing.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Better git conflict resolution between binaries with --theirs and --ours</title>
   <link href="http://www.kevinold.com/2009/02/24/better-git-conflict-resolution-between-binaries-with-theirs.html" />
   <updated>2009-02-24T00:00:00-06:00</updated>
   <id>http://www.kevinold.com/2009/02/24/better-git-conflict-resolution-between-binaries-with-theirs</id>
   <content type="html">&lt;p&gt;Whichever framework I use (&lt;a href="http://www.catalystframework.org"&gt;Catalyst&lt;/a&gt;, &lt;a href="http://www.djangoproject.com"&gt;Django&lt;/a&gt;, etc.) for personal projects, I always develop with a local &lt;a href="http://www.sqlite.org"&gt;SQLite&lt;/a&gt; database.  From time to time they can get out of sync between branches.  While working on a project recently, I ran into a &lt;a href="http://www.git-scm.org"&gt;Git&lt;/a&gt; conflict between a &lt;a href="http://www.sqlite.org"&gt;SQLite&lt;/a&gt; database on &lt;code&gt;master&lt;/code&gt; and an older copy on a development branch.&lt;/p&gt;
&lt;p&gt;After checking out the development branch, I ran the merge:&lt;/p&gt;
&lt;pre&gt;
 $ git checkout dev_branch
 $ git merge master
&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://www.git-scm.org"&gt;Git&lt;/a&gt; notified me that I had a conflicting &lt;a href="http://www.sqlite.org"&gt;SQLite&lt;/a&gt; file.&lt;/p&gt;
&lt;p&gt;I posed the question on the &lt;a href="http://www.git-scm.org"&gt;Git&lt;/a&gt; irc channel and was told (thanks doener) to use the &lt;code&gt;--theirs&lt;/code&gt; flag for &lt;code&gt;git checkout&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;
 $ git checkout --theirs filename(s)
&lt;/pre&gt;
&lt;p&gt;This says that the file(s) being merged in take precedence over the file(s) in place in the branch, thus running this will overwrite the file(s) on the branch.  &lt;code&gt;--ours&lt;/code&gt; is the opposite in that the file(s) on the branch take precedence in this merge.  More information can be found in the &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-checkout.html"&gt;git-checkout docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I was then able to complete the merge:&lt;/p&gt;
&lt;pre&gt;
 $ git add umerged_file(s)
 $ git commit
&lt;/pre&gt;
&lt;p&gt;I&amp;#8217;m not sure which version of &lt;a href="http://www.git-scm.org"&gt;Git&lt;/a&gt; this was made available in, but having just upgraded for this feature it is available in the latest stable version (currently &lt;a href="http://www.kernel.org/pub/software/scm/git/git-1.6.1.3.tar.bz2"&gt;1.6.1.3&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;In the old version I was running (1.6.0.2) &lt;code&gt;"git reset -- file; git checkout MERGE_HEAD -- file"&lt;/code&gt; would have done the same.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My move to jekyll</title>
   <link href="http://www.kevinold.com/2009/02/21/my-move-to-jekyll.html" />
   <updated>2009-02-21T00:00:00-06:00</updated>
   <id>http://www.kevinold.com/2009/02/21/my-move-to-jekyll</id>
   <content type="html">&lt;p&gt;I use &lt;a href="http//www.vim.org"&gt;Vim&lt;/a&gt; for everything.  It&amp;#8217;s just who I am.  I can do more in Vim in a matter of minutes than with hours in Notepad, Emacs, Textmate, etc.  Not because I don&amp;#8217;t understand them, but simply because my skills are honed to Vim and it has become second nature to me.  I find myself in Gmail at times trying to save what I&amp;#8217;d just written with &lt;code&gt;:wq!&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;It is what inspired my switch to &lt;a href="http://github.com/mojombo/jekyll/tree/master"&gt;jekyll&lt;/a&gt;.  After years of using &lt;a href="http://www.textpattern.org"&gt;Textpattern&lt;/a&gt; and &lt;a href="http://www.wordpress.org"&gt;Wordpress&lt;/a&gt; and writing very few posts, I realized that I was becoming frustrated with using &lt;code&gt;textarea&lt;/code&gt; &lt;span class="caps"&gt;WYSIWYG&lt;/span&gt; editors.  It wasn&amp;#8217;t that I didn&amp;#8217;t have anything to say to the world, it was just that the sheer process of writing inside a browser made the task daunting.  The problem was &lt;em&gt;my editor&lt;/em&gt;.  I finally realized that if I changed my blog software to allow me to use Vim, I&amp;#8217;d be more motivated to write.&lt;/p&gt;
&lt;p&gt;Combine all of that with the fact that I wanted to keep the source and content in &lt;a href="http://www.git-scm.org"&gt;Git&lt;/a&gt; and &lt;a href="http://github.com/mojombo/jekyll/tree/master"&gt;jekyll&lt;/a&gt; just seemed to fill the void.  I also took this as an opportunity to freshen the design of my site and simplify it all.&lt;/p&gt;
&lt;p&gt;I look forward to posting more frequently and watching the &lt;a href="http://github.com/mojombo/jekyll/tree/master"&gt;jekyll&lt;/a&gt; project grow.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Why I Git It</title>
   <link href="http://www.kevinold.com/2008/07/25/why-i-git-it.html" />
   <updated>2008-07-25T00:00:00-05:00</updated>
   <id>http://www.kevinold.com/2008/07/25/why-i-git-it</id>
   <content type="html">&lt;p&gt;Yeah, I know. Cheesy title. But, it&amp;#8217;s true.  I&amp;#8217;ve been using &lt;a href="http://git.or.cz"&gt;Git&lt;/a&gt; for the past several months and am amazed at it&amp;#8217;s powerful simplicity.  The concepts are easy to grasp thanks to great &lt;a href="http://git.or.cz/gitwiki/GitDocumentation"&gt;documentation&lt;/a&gt; and &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/everyday.html"&gt;real world&lt;/a&gt; &lt;a href="http://git.or.cz/course/"&gt;examples&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;d heard all the rage about the other &lt;a href="http://en.wikipedia.org/wiki/Software_configuration_management"&gt;&lt;span class="caps"&gt;SCM&lt;/span&gt;&lt;/a&gt;&amp;#8216;s.  I&amp;#8217;ve looked into &lt;a href="http://www.selenic.com/mercurial/"&gt;Mercurial&lt;/a&gt; and &lt;a href="http://bazaar-vcs.org/"&gt;Bazaar&lt;/a&gt;, but wasn&amp;#8217;t as impressed with them as I was with Git.  After following &lt;a href="http://kerneltrap.org/node/4982"&gt;the timeline of emails as Linus wrote&lt;/a&gt; and shared his new creation and watching &lt;a href="http://www.youtube.com/watch?v=4XpnKHJAok8"&gt;his visit to Google&lt;/a&gt;, I gained a whole new respect for &lt;a href="http://en.wikipedia.org/wiki/Distributed_revision_control"&gt;distributed revision control (&lt;span class="caps"&gt;DRC&lt;/span&gt;)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;d been hard to miss all the talk around &lt;span class="caps"&gt;DRC&lt;/span&gt;, but thought it&amp;#8217;s only benefits were to interact with my repository when I didn&amp;#8217;t have connectivity.  I was almost always connected, so my Subversion repository was all I needed &amp;#8211; so I thought.  Having &lt;a href="http://use.perl.org/~rjbs/journal/36184"&gt;read a post&lt;/a&gt; about cloning repositories, I decided to investigate why so many people were now using Git.  While researching Git, &lt;a href="http://blog.labnotes.org/2008/04/30/git-forking-for-fun-and-profit/"&gt;another article about &amp;#8220;forking&amp;#8221;&lt;/a&gt; caught my attention and slowly I started to see all of the wonderful benefits I&amp;#8217;d been missing by not using a &lt;span class="caps"&gt;DRC&lt;/span&gt; &amp;#8211; specifically Git.&lt;/p&gt;
&lt;p&gt;Most notably:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-branch.html"&gt;Branching&lt;/a&gt; &amp;#8211; the way it&amp;#8217;s suppose to work!  This is &amp;#8220;throw away&amp;#8221; branching at it&amp;#8217;s best!&lt;/li&gt;
        &lt;li&gt;&lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-clone.html"&gt;Cloning&lt;/a&gt; &amp;#8211; This is extremely useful when stumbling across projects on services like &lt;a href="http://www.github.com"&gt;Github&lt;/a&gt;.  Instead of the traditionally checking out a copy of the trunk or a branch in &lt;span class="caps"&gt;CVS&lt;/span&gt; and Subversion, Git clones the entire repository into a local directory for you and &amp;#8220;&amp;#8230;creates remote-tracking branches for each branch in the cloned repository&amp;#8221;.  A great example is &lt;a href="http://code.reddit.com/"&gt;Reddit&lt;/a&gt;.  When they released the code, I cloned the repository and every few days I can run &amp;#8220;git fetch&amp;#8221; to update the remote-tracking branches.  I can run &amp;#8220;git pull&amp;#8221; to update the remote-tracking branches as well as &amp;#8220;merge the remote master branch into the current master branch, if any&amp;#8221;.&lt;/li&gt;
        &lt;li&gt;&lt;a href="www.kernel.org/pub/software/scm/git/docs/git-svn.html"&gt;git-svn&lt;/a&gt; &amp;#8211; Simply put, this is brilliant!!!  Having all of my repositories in Subversion this allowed me to have a &amp;#8220;trial run&amp;#8221; with Git.  I was able to make a local &amp;#8220;Git clone&amp;#8221; of my Subversion repository, interact with it and &amp;#8220;sync&amp;#8221; the changes I truly wanted committed to the Subversion repository.  I could create as many throw away branches as I liked and the Subversion repository never knew anything about them.  Needless to say, &lt;strong&gt;the &lt;span class="caps"&gt;VERY&lt;/span&gt; &lt;span class="caps"&gt;DAY&lt;/span&gt; I started playing with Git, I made my last commit to my Subversion repository&lt;/strong&gt; and haven&amp;#8217;t looked back since.&lt;/li&gt;
        &lt;li&gt;&lt;a href="www.kernel.org/pub/software/scm/git/docs/git-stash.html"&gt;git-stash&lt;/a&gt; &amp;#8211; Again, &lt;span class="caps"&gt;BRILLIANT&lt;/span&gt;!!!  Stash &amp;#8220;saves your local modifications away and reverts the working directory to match the &lt;span class="caps"&gt;HEAD&lt;/span&gt; commit&amp;#8221;.  Every developer I&amp;#8217;ve talked to about this with has the same reaction &amp;#8211; (&lt;span class="caps"&gt;AWESOME&lt;/span&gt;!!!!) &amp;#8211; as we&amp;#8217;ve all been in the situation where they were working on a new feature and they need to fix a bug.  Most of us have a &amp;#8220;fixes&amp;#8221; version of trunk in a separate directory for just this purpose.  But with git-stash, you can have this freedom with a single working copy!&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-diff.html"&gt;git-diff&lt;/a&gt; &amp;#8211; Git tracks content, not files.  Each commit is tracked by it&amp;#8217;s sha1sum, shown beside each when issuing a &amp;#8220;git log&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I was also impressed with the &lt;a href="http://del.icio.us/kevinold/git"&gt;wealth of information&lt;/a&gt; and comparisons of Git with other SCM&amp;#8217;s others had put together.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.techcrunch.com/2008/07/22/github-unites-version-control-with-the-pastie/"&gt;Recent news&lt;/a&gt; about &lt;a href="http://gist.github.com/"&gt;Gist&lt;/a&gt; show the flexibility of Git repositories.  Thanks to services like &lt;a href="http://www.github.com"&gt;Github&lt;/a&gt; Git is gaining more respect and notoriety, almost like the movement when Subversion first came on the scene.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Hope for Perl on App Engine</title>
   <link href="http://www.kevinold.com/2008/07/23/hope-for-perl-on-app-engine.html" />
   <updated>2008-07-23T00:00:00-05:00</updated>
   <id>http://www.kevinold.com/2008/07/23/hope-for-perl-on-app-engine</id>
   <content type="html">&lt;p&gt;Finally, after months of users begging Google to support Perl on Google App Engine (&lt;span class="caps"&gt;GAE&lt;/span&gt;), there looks to be a positive response as &lt;a href="http://brad.livejournal.com/2388824.html"&gt;Brad explains&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The majority of the work will have to be done by the Perl community, but Google is giving Brad and other Google developers 20% of their time to be devoted to this &lt;a href="http://code.google.com/p/perl-appengine/"&gt;pet project&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When launched I played with &lt;span class="caps"&gt;GAE&lt;/span&gt; briefly and once I saw the &lt;a href="http://code.google.com/appengine/articles/appengine_helper_for_django.html"&gt;support for Django&lt;/a&gt; I took another look.  Since I don&amp;#8217;t program daily in Python it takes me longer to the most basic things I as spend my time writing pseudo code when unsure and looking up syntax later.  I&amp;#8217;ve yet to test the sample Django app out on &lt;span class="caps"&gt;GAE&lt;/span&gt;, but hope to someday soon.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Catalyst moves away from YAML</title>
   <link href="http://www.kevinold.com/2008/07/10/catalyst-moves-away-from-yaml.html" />
   <updated>2008-07-10T00:00:00-05:00</updated>
   <id>http://www.kevinold.com/2008/07/10/catalyst-moves-away-from-yaml</id>
   <content type="html">&lt;p&gt;It appears that to the Catalyst community  &lt;a href="http://lists.scsys.co.uk/pipermail/catalyst/2008-June/018826.html"&gt;&lt;span class="caps"&gt;YAML&lt;/span&gt; isn&amp;#8217;t the best&lt;/a&gt; config file format any longer as they&amp;#8217;ve chosen to switch in favor of Config::General &amp;#8211; which defaults to the &amp;quot;apache config format&amp;quot;&lt;/p&gt;
&lt;p&gt;From Config::General&amp;#8217;s &lt;span class="caps"&gt;POD&lt;/span&gt;:&lt;br /&gt;
&lt;blockquote&gt;The format of config files supported by &lt;strong&gt;Config::General&lt;/strong&gt; is inspired by the well known apache config format, in fact, this module is 100% compatible to apache configs, but you can also just use simple name/value pairs in your config files.&lt;/blockquote&gt;&lt;br /&gt;
&lt;a href="http://search.cpan.org/~jgoulah/Catalyst-Plugin-DebugCookie-0.999001/lib/Catalyst/Plugin/DebugCookie.pm#SYNOPSIS"&gt;Catalyst::Plugin::DebugCookie&lt;/a&gt; even provides the updated configuration style in it&amp;#8217;s &lt;span class="caps"&gt;POD&lt;/span&gt;:&lt;br /&gt;
&lt;pre&gt; &amp;lt;Plugin::DebugCookie&amp;gt;&lt;br /&gt;
    secret_key 001A4B28EE3936&lt;br /&gt;
    cookie_name my_secure_debug_cookie&lt;br /&gt;
 &amp;lt;/Plugin::DebugCookie&amp;gt;&lt;/pre&gt;&lt;br /&gt;
The following command can be used to dump an existing Catalyst app&amp;#8217;s config into an Apache style conf file.  You&amp;#8217;ll definitely have to edit the resulting file, but at least it&amp;#8217;s a start.&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
 perl -Ilib -e &amp;#8216;use MyApp; use Config::General; Config::General&amp;#8594;new&amp;#8594;save_file(&amp;#8220;myapp.conf&amp;#8221;, MyApp&amp;#8594;config);&amp;#8217;&lt;br /&gt;
&lt;/pre&gt;&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>An incredible motivational tool - Resilience </title>
   <link href="http://www.kevinold.com/2008/07/02/an-incredible-motivational-tool-resilience.html" />
   <updated>2008-07-02T00:00:00-05:00</updated>
   <id>http://www.kevinold.com/2008/07/02/an-incredible-motivational-tool-resilience</id>
   <content type="html">&lt;p&gt;I&amp;#8217;m a fan of &lt;a href="http://bigidea.cnbc.com"&gt;The Big Idea with Donny Deutsch&lt;/a&gt; watched a show I&amp;#8217;d DVR&amp;#8217;d the other day.  &lt;a href="http://www.cnbc.com/id/25464724"&gt;The show&lt;/a&gt; was about the &amp;quot;Comeback&amp;quot; mindset.  Most of us know that our dreams don&amp;#8217;t come true overnight and that on the way to our dreams we often have a hard road and sometimes get discouraged.  The show featured people who had been knocked down, but came back.&lt;/p&gt;
&lt;p&gt;Of the &lt;a href="http://www.cnbc.com/id/25416520/site/14081545/"&gt;guests on the show&lt;/a&gt; the following quote by Dr. Karen Reivich made the most impact on me:&lt;br /&gt;
&lt;blockquote&gt;Resilience. It&amp;#8217;s learnable. The heart of resilience is believing that &lt;strong&gt;you can affect change&lt;/strong&gt;. [It] might not affect the whole situation, but there &lt;strong&gt;is&lt;/strong&gt; an aspect of the situation &lt;strong&gt;you can control.&lt;/strong&gt;&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;Excellent advice not only when times are tough, but as motivation when solving even the most difficult day-to-day problems.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Colorful grep</title>
   <link href="http://www.kevinold.com/2008/07/01/colorful-grep.html" />
   <updated>2008-07-01T00:00:00-05:00</updated>
   <id>http://www.kevinold.com/2008/07/01/colorful-grep</id>
   <content type="html">&lt;p&gt;I&amp;#8217;m not sure how I&amp;#8217;ve made it this far in my career and never knew that grep had a color option to highlight the term you&amp;#8217;re searching for in the results.  Guess I&amp;#8217;ve never really needed it that bad, but since stumbling across this, it&amp;#8217;s made things a lot easier to view.&lt;/p&gt;
&lt;p&gt;To make this seamless you can add this to your .bash_rc or .bash_profile:&lt;br /&gt;
&lt;pre&gt;alias grep=&amp;quot;grep &amp;#8212;color=auto&amp;quot;&lt;/pre&gt;&lt;br /&gt;
Thanks to &lt;a href="http://dotfiles.org/~asommer/.bashrc"&gt;asommer&amp;#8217;s .bash_rc&lt;/a&gt; for pointing this out.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Transform password into digest inside a DBIx::Class model</title>
   <link href="http://www.kevinold.com/2008/05/28/transform-password-into-digest-inside-a-dbixclass-model.html" />
   <updated>2008-05-28T00:00:00-05:00</updated>
   <id>http://www.kevinold.com/2008/05/28/transform-password-into-digest-inside-a-dbixclass-model</id>
   <content type="html">&lt;p&gt;I&amp;#8217;m working on a project using &lt;a href="http://www.catalystframework.org"&gt;Catalyst&lt;/a&gt; , and I initially coded the password hashing (compare the passwords then build the digest, used during the signup and change password processes) directly into my controller (could be placed in a Utils package) and passed the digest to the create/update like so:&lt;br /&gt;
&lt;pre&gt;my $pass = $c-&amp;gt;req-&amp;gt;param(&amp;quot;password&amp;quot;);&lt;br /&gt;
my $digest = Digest-&amp;gt;new(&amp;#8216;MD5&amp;#8217;)-&amp;gt;add($pass)-&amp;gt;digest;&lt;br /&gt;
&amp;#8230;&lt;br /&gt;
$c-&amp;gt;user-&amp;gt;password($digest);&lt;/pre&gt;&lt;br /&gt;
Reading the Catalyst mailing list I learned about store_column(), part of &lt;a href="http://search.cpan.org/~ash/DBIx-Class-0.08010/lib/DBIx/Class/Row.pm"&gt;DBIx::Class::Row&lt;/a&gt; .&lt;/p&gt;
&lt;p&gt;Upon storage of a row (an update or create), it allows you to override the default &amp;quot;store this value&amp;quot; and manipulate the value into whatever you&amp;#8217;d like.&lt;/p&gt;
&lt;p&gt;Using the code below I was able to move this logic out of the controller/Utils package and into the model where it belongs.&lt;br /&gt;
&lt;pre&gt;sub store_column {&lt;br /&gt;
    my( $self, $col, $val ) = @_;&lt;br /&gt;
    $val = Digest-&amp;gt;new(&amp;#8216;MD5&amp;#8217;)-&amp;gt;add($val)-&amp;gt;digest&lt;br /&gt;
              if $col eq &amp;#8216;password&amp;#8217;;&lt;br /&gt;
    return $self-&amp;gt;next::method( $col, $val );&lt;br /&gt;
}&lt;/pre&gt;&lt;br /&gt;
This technique can also be used to &lt;a href="http://search.cpan.org/~ash/DBIx-Class-0.08010/lib/DBIx/Class/Manual/Cookbook.pod#Changing_one_field_whenever_another_changes"&gt;perform calculations&lt;/a&gt; .&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>CPAN via a Pipe</title>
   <link href="http://www.kevinold.com/2008/03/30/cpan-via-a-pipe.html" />
   <updated>2008-03-30T00:00:00-05:00</updated>
   <id>http://www.kevinold.com/2008/03/30/cpan-via-a-pipe</id>
   <content type="html">&lt;p&gt;I&amp;#8217;ve tried to monitor the &lt;a href="http://search.cpan.org/recent"&gt;&lt;span class="caps"&gt;CPAN&lt;/span&gt; recent&lt;/a&gt; feed to keep up with updates to modules I use and find other useful modules, but the volume of updates has gotten to much to handle.  While it&amp;#8217;s great to see so many updates, I simply don&amp;#8217;t have the time to look through them all.&lt;/p&gt;
&lt;p&gt;Apparently, I&amp;#8217;m not the only one with the problem as a while back &lt;a href="http://www.noticpan.org"&gt;NotiCPAN&lt;/a&gt; was created to notify users of updates to specific modules.  Problem is you must select each individual module you&amp;#8217;d like to watch.&lt;/p&gt;
&lt;p&gt;In the sprit of being lazy, I thought up a way to monitor what I&amp;#8217;d like via &lt;a href="http://pipes.yahoo.com/pipes/person.info?eyuid=vAyzRGE4rXVHSsW.nJlL0A1YnA--"&gt;a Yahoo Pipe&lt;/a&gt;.  With it I&amp;#8217;m able to enter the types of modules I&amp;#8217;m interested in and subscribe to it in Google Reader.  I like the fact that I can watch all Catalyst modules by simply specifying that I want &amp;#8220;Catalyst&amp;#8221; in the title or if I specify &amp;#8220;&lt;span class="caps"&gt;YAML&lt;/span&gt;::Tiny&amp;#8221; it&amp;#8217;ll watch that one module for now and if others enter that namespace it&amp;#8217;ll automatically pick those up.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a very simple concept, but has helped me a great deal.&lt;/p&gt;
&lt;p&gt;Feel free to check out the pipe and I&amp;#8217;d love to hear of other uses.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>jQuery and hidden items</title>
   <link href="http://www.kevinold.com/2008/03/29/jquery-and-hidden-items.html" />
   <updated>2008-03-29T00:00:00-05:00</updated>
   <id>http://www.kevinold.com/2008/03/29/jquery-and-hidden-items</id>
   <content type="html">&lt;p&gt;Doing some resent work with jQuery a div that is initially hidden from the user, I went round in cirlces when I kept getting nothing when trying to get the div&amp;#8217;s margin information via:&lt;/p&gt;
&lt;pre&gt;$('#myitem').offset()&lt;/pre&gt;
&lt;p&gt;I kept getting zero returned for the top and left margins.  What I needed to do was to show() the div:&lt;/p&gt;
&lt;pre&gt;$('#myitem').show().offset().hide()&lt;/pre&gt;
&lt;p&gt;This allows me to get the margins, but ultimately keeps the div hidden from the user.&lt;/p&gt;
&lt;p&gt;Hopefully, documenting this here will help someone if they run into in the future, or it&amp;#8217;ll help me the future me if I ever forget.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Charting and Graphing with Javascript, Flash or API</title>
   <link href="http://www.kevinold.com/2007/12/13/charting-and-graphing-with-javascript-flash-or-api.html" />
   <updated>2007-12-13T00:00:00-06:00</updated>
   <id>http://www.kevinold.com/2007/12/13/charting-and-graphing-with-javascript-flash-or-api</id>
   <content type="html">&lt;p&gt;There seems to be a lot of work around generating Charts and Graphs as over the past few months there have been several major graphing/charting projects to come to my attention.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.google.com/apis/chart/"&gt;Google Chart &lt;span class="caps"&gt;API&lt;/span&gt;&lt;/a&gt; &amp;#8211; Most recently Google jumped into the graphing and charting arena by providing a &lt;span class="caps"&gt;REST&lt;/span&gt; &lt;span class="caps"&gt;API&lt;/span&gt;.  This is another good move for Google and looks to be a solid first release, providing more initial documentation that I&amp;#8217;ve seen in any of the Google API&amp;#8217;s.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://teethgrinder.co.uk/open-flash-chart/"&gt;Open Flash Chart&lt;/a&gt; &amp;#8211; &lt;strong&gt;These are really slick graphs and charts!&lt;/strong&gt;  Want interactive, easy to implement, and (yes, I&amp;#8217;ll say it again) slick looking graphs and charts?  Then have a look at Open Flash Chart (&lt;span class="caps"&gt;OFC&lt;/span&gt;) and you&amp;#8217;ll quickly understand why I think it&amp;#8217;s one of the best of the bunch.  They have every type of graph or chart you&amp;#8217;d need and make getting your data to the &lt;span class="caps"&gt;SWF&lt;/span&gt; file a snap.  Just provide it with a data structure by using one of the many helpers for just about any language and you&amp;#8217;ll have impressive graphs and charts in minutes.  It&amp;#8217;s gonna be interesting to see which major companies will come to use these graphs and charts.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code.google.com/p/flot/"&gt;Flot&lt;/a&gt; &amp;#8211; Uses &lt;a href="http://www.jquery.com"&gt;jQuery&lt;/a&gt; to produce some very nice graphs and charts.  This is definitely a project to watch in the future.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>A key concept for design</title>
   <link href="http://www.kevinold.com/2007/11/26/a-key-concept-for-design.html" />
   <updated>2007-11-26T00:00:00-06:00</updated>
   <id>http://www.kevinold.com/2007/11/26/a-key-concept-for-design</id>
   <content type="html">&lt;blockquote&gt;Never be afraid to make decisions. All decisions are temporary. Make them, and be willing to be wrong. The only way to get better is to learn from your mistakes and accept that you�re only as good as you can be in any given moment.&lt;/blockquote&gt;
&lt;p&gt;This is the third item in a list of six &lt;a href="http://rhjr.net/theblog/2007/11/13/the-tenets-of-design/"&gt;tenets of design&lt;/a&gt;, but in my opinion should be number one.  Why? It&amp;#8217;s a primary concept of programming (and life) &amp;#8211; &lt;strong&gt;trial and error&lt;/strong&gt; &amp;#8211; and might be the key concept that helps bridge the gap between programming and design.&lt;/p&gt;
&lt;p&gt;I am a programmer.  When I make a mistake with code I have a compiler to tell me that it&amp;#8217;s wrong.  I make an attempt at a fix.  Wrong again.  Rinse and repeat.  Until it&amp;#8217;s right.&lt;/p&gt;
&lt;p&gt;Who knew the concept could be that simple for design?&lt;/p&gt;
&lt;p&gt;While I am in no way a designer, I&amp;#8217;ve learned several techniques to structure information so that users can quickly find what they are looking for.  I didn&amp;#8217;t learn it overnight (just like programming).  Nor have I learned it all.  I&amp;#8217;ve &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FWeb-Standards-Solutions-Handbook-Pioneering%2Fdp%2F1590593812%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1196130987%26sr%3D8-3&amp;amp;tag=kevold-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;read&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=kevold-20&amp;amp;l=ur2&amp;amp;o=1" style="border: medium none  ! important; margin: 0px ! important; display: none" border="0" height="1" width="1" /&gt; &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FDesigning-Web-Standards-Jeffrey-Zeldman%2Fdp%2F0321385551%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1196130987%26sr%3D8-1&amp;amp;tag=kevold-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;a&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=kevold-20&amp;amp;l=ur2&amp;amp;o=1" style="border: medium none  ! important; margin: 0px ! important; display: none" border="0" height="1" width="1" /&gt; &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FDesigning-Obvious-Common-Approach-Application%2Fdp%2F032145345X%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1196132138%26sr%3D8-1&amp;amp;tag=kevold-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;few&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=kevold-20&amp;amp;l=ur2&amp;amp;o=1" style="border: medium none  ! important; margin: 0px ! important; display: none" border="0" height="1" width="1" /&gt; &lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FCSS-Mastery-Advanced-Standards-Solutions%2Fdp%2F1590596145%2F&amp;amp;tag=kevold-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;books&lt;/a&gt;&lt;img src="http://www.assoc-amazon.com/e/ir?t=kevold-20&amp;amp;l=ur2&amp;amp;o=1" style="border: medium none  ! important; margin: 0px ! important; display: none" border="0" height="1" width="1" /&gt;, &lt;a href="http://www.alistapart.com/"&gt;blogs&lt;/a&gt; and studied &lt;a href="http://www.rikcatindustries.com"&gt;great&lt;/a&gt; &lt;a href="http://www.simplebits.com"&gt;designs&lt;/a&gt;.   They all make it look so easy!  But, it&amp;#8217;s just like programming &amp;#8211; they rinsed and repeated until they got it right.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve been through several iterations when coding the design for this blog, but until now I can say that I haven&amp;#8217;t truly thought of designing in the same way I do programming.  I guess I just expect to magically be able to create the perfect design in the first sitting, rather than let it evolve.&lt;/p&gt;
&lt;p&gt;What makes designing different than programming is that there is no right answer.  It&amp;#8217;s how I view it that makes it good or not.  Maybe this shift in thinking will help me to take risks &amp;#8211; temporary risks &amp;#8211; with my designs, until I get it good enough &amp;#8211; for me.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Javascript CDN's</title>
   <link href="http://www.kevinold.com/2007/11/20/javascript-cdns.html" />
   <updated>2007-11-20T00:00:00-06:00</updated>
   <id>http://www.kevinold.com/2007/11/20/javascript-cdns</id>
   <content type="html">&lt;p&gt;As a developer, I&amp;#8217;m encouraged when I see projects like &lt;a href="http://ajaxian.com/archives/cachefilenet-central-javascript-library-urls"&gt;CacheFile.net&lt;/a&gt;.  Yahoo &lt;a href="http://developer.yahoo.com/yui/articles/hosting/" title="Serving YUI Files from Yahoo" target="_blank"&gt;was the first&lt;/a&gt; to start hosting their &lt;span class="caps"&gt;YUI&lt;/span&gt; files.  Shortly there after, &lt;a href="http://dojotoolkit.org/2007/11/06/dojo-1-0-0-available-aol-cdn" title="Dojo on AOL CDN" target="_blank"&gt;Dojo followed with AOL&amp;#8217;s support&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Until &lt;a href="http://www.cachefile.net" title="CacheFile.net" target="_blank"&gt;CacheFile.net&lt;/a&gt; these were the only two libraries available on CDN&amp;#8217;s.  Now all of them are available.  All of that said, I am slightly concerned that the project will run out of a budget quickly, unless a major sponsor (come on Amazon, here&amp;#8217;s a great opportunity) steps forward.  I&amp;#8217;m interested to see who this develops.&lt;/p&gt;</content>
 </entry>
 
 <entry>
   <title>Perl is not dead; It's Pot Roast</title>
   <link href="http://www.kevinold.com/2007/11/19/perl-is-not-dead-its-pot-roast.html" />
   <updated>2007-11-19T00:00:00-06:00</updated>
   <id>http://www.kevinold.com/2007/11/19/perl-is-not-dead-its-pot-roast</id>
   <content type="html">&lt;p&gt;When I think of Perl I&amp;#8217;m reminded of a &lt;a href="http://en.wikipedia.org/wiki/Slow_cooker" title="Slow cooker - Wikipedia" target="_blank"&gt;Slow Cooker&lt;/a&gt;, in that it is what it says.  Perl is &lt;span style="font-weight: bold"&gt;P&lt;/span&gt;ractical.  Sometimes practicality takes time (hence the months and years between releases &amp;#8211; &lt;a href="http://en.wikipedia.org/wiki/Pot_roast" title="Pot roast - Wikipedia" target="_blank"&gt;Pot Roast&lt;/a&gt; takes time).  &lt;span style="font-weight: bold"&gt;E&lt;/span&gt;xtraction and &lt;span style="font-weight: bold"&gt;R&lt;/span&gt;eporting are self explanatory.  Perl is a &lt;span style="font-weight: bold"&gt;L&lt;/span&gt;anguage.&lt;/p&gt;
&lt;p&gt;According to &lt;a href="http://en.wikipedia.org/wiki/Language" title="Language - Wikipedia" target="_blank"&gt;Wikipedia&lt;/a&gt;:&lt;br /&gt;
&lt;blockquote&gt;Languages live, die, move from place to place and change with time. Any language that stops changing begins to die&lt;sup class="noprint Template-Fact"&gt;&lt;span title="This claim needs references to reliable sources since November 2007" style="white-space: nowrap"&gt;&lt;/span&gt;&lt;/sup&gt;; any language that is a &lt;em&gt;living language&lt;/em&gt; is a language in a state of continuous change.&lt;/blockquote&gt;&lt;br /&gt;
When I look around at the &lt;a href="http://www.catalystframework.org" title="Catalyst Framework" target="_blank"&gt;various&lt;/a&gt; &lt;a href="http://www.jifty.org" title="Jifty Framework" target="_blank"&gt;frameworks&lt;/a&gt;, &lt;a href="http://search.cpan.org/recent" title="Recent CPAN modules" target="_blank"&gt;existing expansions&lt;/a&gt;, &lt;a href="http://search.cpan.org/modlist/Perl6" target="_blank" title="Perl6 modules"&gt;continued &lt;/a&gt;&lt;a href="http://dev.perl.org/perl6/" title="Perl6 Development" target="_blank"&gt;development&lt;/a&gt;, &lt;a href="http://www.perl.org/community.html" title="Perl Community" target="_blank"&gt;community involvement&lt;/a&gt;, &lt;a href="http://www.perl.org/books.html" title="Perl Books" target="_blank"&gt;published&lt;/a&gt; &lt;a href="http://www.perl.org/docs.html" title="Perl Docs" target="_blank"&gt;works&lt;/a&gt;, &lt;a href="http://www.indeed.com/jobtrends?q=perl%2Cpython%2Cphp%2Cruby&amp;amp;l=" title="Perl, Python, PHP, Ruby Job Trends" target="_blank"&gt;plethora&lt;/a&gt; of &lt;a href="http://jobs.perl.org" title="Perl Jobs" target="_blank"&gt;jobs&lt;/a&gt;, &lt;a href="http://www.perl.org/news.html" title="Perl News" target="_blank"&gt;news&lt;/a&gt; &lt;a href="http://planet.perl.org" title="Planet Perl" target="_blank"&gt;and&lt;/a&gt; &lt;a href="http://www.perlfoundation.org/" title="Perl Foundation" target="_blank"&gt;evangelism&lt;/a&gt; I simply cannot see anything but a &lt;strong&gt;&lt;em&gt;thriving&lt;/em&gt; &lt;em&gt;language&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Critics have and will continue to have the debate whether Perl is alive or dead, but in the meantime, we continue to develop and innovate with Perl, ever so effortlessly adapting to the new &amp;#8220;concept on the block&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Web Services, API&amp;#8217;s, frameworks, blogs (read the &lt;a href="/about/" title="About kevinold.com" target="_blank"&gt;about page&lt;/a&gt; if you&amp;#8217;re wondering why I use &lt;a href="http://www.wordpress.org" title="Wordpress" target="_blank"&gt;Wordpress&lt;/a&gt;), social networking, scripting, etc. &amp;#8211; Perl &lt;strong&gt;can do it all&lt;/strong&gt;.  Just like any other language.&lt;/p&gt;
&lt;p&gt;Sure, competition and collaboration are great. They are what spawn new ideas and solutions.  I&amp;#8217;m reminded of the &lt;a href="http://www.jquery.com" title="jQuery: The Write Less, Do More, Javascript Library" target="_blank"&gt;jQuery&lt;/a&gt; vs &lt;a href="http://www.prototypejs.org" title="Prototype Javascript Library" target="_blank"&gt;PrototypeJS&lt;/a&gt; &lt;a href="http://ajaxian.com/archives/prototype-and-jquery-a-code-comparison" title="Prototype and jQuery: A code comparison" target="_blank"&gt;war&lt;/a&gt;.    &lt;a href="http://www.jquery.com" title="jQuery: The Write Less, Do More, Javascript Library" target="_blank"&gt;jQuery&lt;/a&gt; pioneered the concept of using &lt;span class="caps"&gt;CSS&lt;/span&gt; selectors to get to &lt;span class="caps"&gt;DOM&lt;/span&gt; Elements.  Brilliant.  Now, these and many other libraries have that functionality.  But it took time &amp;#8211; like Pot Roast.&lt;/p&gt;</content>
 </entry>
 
</feed>
