<?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>PMKenney.com</title>
	<atom:link href="http://pmkenney.com/feed" rel="self" type="application/rss+xml" />
	<link>http://pmkenney.com</link>
	<description></description>
	<lastBuildDate>Wed, 09 May 2012 13:42:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Do The Right Thing</title>
		<link>http://pmkenney.com/do-the-right-thing.htm</link>
		<comments>http://pmkenney.com/do-the-right-thing.htm#comments</comments>
		<pubDate>Wed, 09 May 2012 13:41:54 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Rails Stuff]]></category>
		<category><![CDATA[Ranting of a mad man]]></category>

		<guid isPermaLink="false">http://pmkenney.com/?p=84</guid>
		<description><![CDATA[Too often I am brought into projects long after they have been &#8220;completed&#8221; only to find they are void of any conventions or best practices I would consider part of &#8220;doing the right thing&#8221;. If you are a consultant or a company performing work for clients, do the right thing by your client. It&#8217;s much [...]]]></description>
			<content:encoded><![CDATA[<p>Too often I am brought into projects long after they have been &#8220;completed&#8221; only to find they are void of any conventions or best practices I would consider part of &#8220;doing the right thing&#8221;. If you are a consultant or a company performing work for clients, do the right thing by your client. It&#8217;s much easier to tell the client it will be two weeks or a month past the original estimate because you must do right by the project than cut corners and half ass your code. The consequences of not doing the right think is solely on you and your reputation.</p>
<p>Think of this scenario. You cut corners to get the project out &#8220;on time&#8221; (out estimates suck anyway so on time is relative). Then, many months later when the app doesn&#8217;t scale to traffic and another dev is hired to recode everything you or your company put together&#8230;&#8230;.what will that do to your reputation? How will that affect referrals you would&#8217;ve received from the client you half assed the project for?</p>
<p>We all make mistakes, it&#8217;s a fact. That said, there is a clear difference in half-assing something and making mistakes while putting your all into a project. Your all will show regardless of any mistakes you might&#8217;ve made.</p>
<p>My advice to other devs: Be honest, be clear, push back when pressured on unrealistic deadlines, keep your reputation at the forefront of decisions and you will be a better coder as a perfect byproduct.</p>
<p>Just my two cents. I&#8217;d love input on this if you feel differently.</p>
]]></content:encoded>
			<wfw:commentRss>http://pmkenney.com/do-the-right-thing.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Email Evolution Conference 2011</title>
		<link>http://pmkenney.com/email-evolution-conference-2011.htm</link>
		<comments>http://pmkenney.com/email-evolution-conference-2011.htm#comments</comments>
		<pubDate>Wed, 02 Feb 2011 02:54:17 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Internet Marketing]]></category>

		<guid isPermaLink="false">http://pmkenney.com/?p=75</guid>
		<description><![CDATA[This morning&#8217;s keynote was given by Gary Vaynerchuk. Admittedly, I had never heard of this guy prior to this conference. I&#8217;m not sure that&#8217;s saying much, but I believe I do a reasonably good job of keeping up with great minds in marketing as it relates to the development side of things. People like Seth [...]]]></description>
			<content:encoded><![CDATA[<p>This morning&#8217;s keynote was given by Gary Vaynerchuk. Admittedly, I had never heard of this guy prior to this conference. I&#8217;m not sure that&#8217;s saying much, but I believe I do a reasonably good job of keeping up with great minds in marketing as it relates to the development side of things. People like Seth Godin and Tim Ferris come to mind immediately when I think of marketers who effectively analyze and profile their audience. I can honestly say Gary V will now move to the very top of my list.</p>
<p>I&#8217;m sitting in the conference hall this morning, coffee in hand, expecting some CEO of blah blah company to drone on about &#8220;the convergence of ecosystems as it correlates to inverse of the ROI relative to the&#8221;&#8230;.ZZZZZZZ&#8230;you get the idea. In stead, we get a guy yelling things like &#8220;Say you sorry!&#8221;, &#8220;Don&#8217;t do stupid sh*t!&#8221;, &#8220;The Hugh Grant Rule: do some shady sh*t and say your sorry. People respect that!&#8221;, &#8220;Don&#8217;t add noise!&#8221;, &#8220;Create a dialogue and stop doing all the talking&#8221;. The overall conference extended the view of actually having a conversation with customers rather than forcing them to drink from the marketing fire hose.</p>
<p>The take aways for me resulted in a pre-order of Gary&#8217;s book &#8220;The Thank You Economy&#8221; and some interesting thoughts regarding the technology needed to effectively implement and scale the dialogue model. The reality is, I&#8217;m in the business of providing technical services, it&#8217;s what I&#8217;m good at. I can build great things with my technical knowledge, but I often sell short the art and personal touch needed to more effectively market my talents to prospective customers. While I know I&#8217;m not guilty of shoving my services down irrelevant channels, I know I can do more to automate where relevant and humanize where appropriate.</p>
<p>All in all, EEC 2011 was a fantastic experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://pmkenney.com/email-evolution-conference-2011.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why the gap between updates?</title>
		<link>http://pmkenney.com/why-the-gap-between-updates.htm</link>
		<comments>http://pmkenney.com/why-the-gap-between-updates.htm#comments</comments>
		<pubDate>Thu, 27 Aug 2009 03:37:08 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Rails Stuff]]></category>

		<guid isPermaLink="false">http://pmkenney.com/?p=59</guid>
		<description><![CDATA[If you&#8217;re visiting my site for the first time you&#8217;ll probably notice my last post was from November of 2008. That&#8217;s great for both of us for two reasons. 1) You are likely on this page because I contacted you about a project posting on Craigslist, Elance or Guru. Why is this gap in blog [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re visiting my site for the first time you&#8217;ll probably notice my last post was from November of 2008. That&#8217;s great for both of us for two reasons. 1) You are likely on this page because I contacted you about a project posting on Craigslist, Elance or Guru. Why is this gap in blog updates good for you?  I&#8217;m very good at what I do and I keep my pipeline full with project on a consistent basis therefore reducing my availability to blog. 2) This actually means I haven&#8217;t made blogging a priority yet. The &#8220;I&#8217;m busy working on projects&#8221; excuse is great in all, but the reality is I don&#8217;t put a priority on blogging.</p>
<p>My general goal moving forward is to do a better job using the social media and blogging outlets I have developed so many solutions for or around. I wouldn&#8217;t classify this as a &#8220;new year&#8217;s&#8221; resolution, but more of a general life resolution. Wish me luck&#8230;er&#8230;success!</p>
]]></content:encoded>
			<wfw:commentRss>http://pmkenney.com/why-the-gap-between-updates.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Sites Live</title>
		<link>http://pmkenney.com/new-sites-live.htm</link>
		<comments>http://pmkenney.com/new-sites-live.htm#comments</comments>
		<pubDate>Fri, 14 Nov 2008 12:57:49 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Rails Stuff]]></category>

		<guid isPermaLink="false">http://pmkenney.com/?p=19</guid>
		<description><![CDATA[I realize it&#8217;s been several months since I&#8217;ve posted an update, but I&#8217;ve been nose down in project since June. I am happy to announce two new sites now available; 1. HumTum.com &#8211; a cool dating website geared towards connecting people from around the world. 2. SitterScout.com &#8211; a great social network idea focused on [...]]]></description>
			<content:encoded><![CDATA[<p>I realize it&#8217;s been several months since I&#8217;ve posted an update, but I&#8217;ve been nose down in project since June. I am happy to announce two new sites now available;</p>
<p>1. <a title="HumTum" href="http://www.humtum.com" target="_blank">HumTum.com</a> &#8211; a cool dating website geared towards connecting people from around the world.</p>
<p>2. <a title="Sitter Scout" href="http://www.sitterscout.com" target="_blank">SitterScout.com</a> &#8211; a great social network idea focused on connecting parents with sitters in a community connection method.</p>
<p>If you get a chance, check both of these sites out, they&#8217;re free to register.</p>
<p>Both were written in Ruby on Rails using <a href="http://agilemanifesto.org" target="_blank">Agile Development</a> methods and <a href="http://en.wikipedia.org/wiki/Scrum_(development)" target="_blank">SCRUM</a> management.</p>
<p>If you&#8217;re starting a project or need additional resources for your project, feel free to contact me to discuss how I might be able to help. I develop in Ruby on Rails, PHP and ASP.NET with very competitive rates.</p>
]]></content:encoded>
			<wfw:commentRss>http://pmkenney.com/new-sites-live.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails 2.1 is making my life easier.</title>
		<link>http://pmkenney.com/rails-21-is-making-my-life-easier.htm</link>
		<comments>http://pmkenney.com/rails-21-is-making-my-life-easier.htm#comments</comments>
		<pubDate>Sun, 22 Jun 2008 04:58:17 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Rails Stuff]]></category>
		<category><![CDATA[activerecord]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://pmkenney.com/?p=18</guid>
		<description><![CDATA[I realized today it&#8217;s been nearly a month since I&#8217;ve posted an update to this blog. I blame my current projects and the additional time I&#8217;ve spent on professional development this past month.  I&#8217;ve taken quite a bit of time over the past month to pick apart and play around with the new features in [...]]]></description>
			<content:encoded><![CDATA[<p>I realized today it&#8217;s been nearly a month since I&#8217;ve posted an update to this blog. I blame my current projects and the additional time I&#8217;ve spent on professional development this past month. </p>
<p>I&#8217;ve taken quite a bit of time over the past month to pick apart and play around with the new features in Rails 2.1. I won&#8217;t go into detail about every new feature, you can read all the juicy details <a href="http://rubyonrails.org" target="_blank">here</a>. </p>
<p>I do want to quickly mention a very nice new feature in ActiveRecord 2.1, the ability to read if a record or a specific attribute in a record has changed. This make validation loops easier to write and minimizes round trips to your database if the application is engineered and tested accordingly. Take a look at the example below and checkout <a href="http://www.rubyonrails.org" target="_blank">http://www.rubyonrails.org</a> for more details on the 2.1 update. </p>
<p> <code><br />
article = Article.find(:first)<br />
article.changed?  #=&gt; false</code></p>
<p><code># Track changes to individual attributes with<br />
# attr_name_changed? accessor<br />
article.title  #=&gt; "Title"<br />
article.title = "New Title"<br />
article.title_changed? #=&gt; true</p>
<p># Access previous value with attr_name_was accessor<br />
article.title_was  #=&gt; "Title"</p>
<p></code></p>
<p><code># See both previous and current value with attr_name_change accessor<br />
article.title_change  #=&gt; ["Title", "New Title"]</code></p>
]]></content:encoded>
			<wfw:commentRss>http://pmkenney.com/rails-21-is-making-my-life-easier.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Akelos is some new hotness for PHP</title>
		<link>http://pmkenney.com/akelos-is-some-new-hotness-for-php.htm</link>
		<comments>http://pmkenney.com/akelos-is-some-new-hotness-for-php.htm#comments</comments>
		<pubDate>Fri, 23 May 2008 00:51:37 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Rails Stuff]]></category>
		<category><![CDATA[akelos]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://pmkenney.com/?p=17</guid>
		<description><![CDATA[Ok, so I don&#8217;t usually blog about PHP&#8230;.well in this blog you&#8217;ll see zero previous posts about PHP&#8230;.but I&#8217;ve been keeping tabs on a new PHP MVC framework called Akelos. What is intriguing to me about Akelos is it&#8217;s a direct port of the Rails framework for PHP. Now, for an avid Rails developer having [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, so I don&#8217;t usually blog about PHP&#8230;.well in this blog you&#8217;ll see zero previous posts about PHP&#8230;.but I&#8217;ve been keeping tabs on a new PHP MVC framework called Akelos. What is intriguing to me about Akelos is it&#8217;s a direct port of the Rails framework for PHP.</p>
<p>Now, for an avid Rails developer having to code a project in PHP this is the best solution. We have to admit, at times we&#8217;re not &#8220;allowed&#8221; to code a project in Rails. Whether it be a legacy PHP system or a rigid decision by a new client, some times we&#8217;re in a situation where we HAVE to code in PHP. Enter Akelos.</p>
<p>So the first thing that caught my attention as a &#8220;wow&#8221; factor of Akelos over CakePHP, Symfony or one of the other PHP MVC frameworks(besides being a port of Rails) was the use of sintags. This is an especially nice feature for Rails developers using Akelos. </p>
<p>Sintags allows you to use Ruby syntax in a number of Akelos views including such calls as &#8220;render :partial =&gt; &#8220;your partial name&#8221;. This is a fantastic bridge between the two frameworks for someone in my situation. </p>
<p>Hop on <a title="Akelos" href="http://akelos.org" target="_blank">Akelos.org </a>and checkout some of the features and Rails similarities for yourself.</p>
<p>I&#8217;ll post some code comparisons of sintags in a future post. </p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://pmkenney.com/akelos-is-some-new-hotness-for-php.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Easier Capistrano Deployment with legacy databases.</title>
		<link>http://pmkenney.com/capistrano-deployment-with-legacy-databases.htm</link>
		<comments>http://pmkenney.com/capistrano-deployment-with-legacy-databases.htm#comments</comments>
		<pubDate>Sun, 18 May 2008 01:10:32 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Mac Stuff]]></category>
		<category><![CDATA[Rails Stuff]]></category>

		<guid isPermaLink="false">http://pmkenney.com/?p=16</guid>
		<description><![CDATA[As my last Rails project was drawing to a close and deployment tasks were closing in, it became apparent I&#8217;d have my work cut out for me when deploying each box. This project was in no way adhering to &#8220;the Rails way&#8221; with regards to database architecture(or anything else for that matter&#8230;..a topic for another [...]]]></description>
			<content:encoded><![CDATA[<p>As my last Rails project was drawing to a close and deployment tasks were closing in, it became apparent I&#8217;d have my work cut out for me when deploying each box. This project was in no way adhering to &#8220;the Rails way&#8221; with regards to database architecture(or anything else for that matter&#8230;..a topic for another post).</p>
<p>With this odd system setup I had to get creative with the Capistrano deployment file. I&#8217;ve include my solution to the legacy db problem. As you will see, I&#8217;ve added &#8220;before&#8221; and &#8220;after&#8221; method calls to handle the proper linking of the project and it&#8217;s database.yml after building it from within my deploy.rb file.</p>
<h2>So what happens now?</h2>
<p>Now when you run cap:deploy from your app root the :db namespace will be run prior to the usual setup. This will build the database.yml file from the entry examples below and process the symlink updates after the script has completed.</p>
<p>Voila! A nice, easy way to manage connections to multiple databases through capistrano.</p>
<p><code> require 'erb'</code></p>
<p><code>#require 'mongrel_cluster/recipes'</code></p>
<p><code> </code></p>
<p>before &#8220;deploy:setup&#8221;, :db</p>
<p>after &#8220;deploy:update_code&#8221;, &#8220;db:symlink&#8221;</p>
<p>set :user, &#8220;&#8211;yourusername&#8211;&#8221;</p>
<p>set :used_sudo, &#8220;true&#8221;</p>
<p>set :svn_user, ENV['svn_user'] || &#8220;yoursvnusername&#8221;</p>
<p>set :svn_password, Proc.new { Capistrano::CLI.password_prompt(&#8216;SVN Password: &#8216;) }</p>
<p>set :repository,</p>
<p>Proc.new { &#8220;&#8211;username #{svn_user} &#8221; +</p>
<p>&#8220;&#8211;password #{svn_password} &#8221; +</p>
<p>&#8220;&#8211;no-auth-cache &#8221; +</p>
<p>&#8220;http://&#8211;yoursvnurl&#8211;/&#8221;}</p>
<p>set :spinner, &#8220;false&#8221;</p>
<p>set :application, &#8220;&#8211;yourappname&#8211;&#8221;</p>
<p>set :deploy_to, &#8220;/var/www/#{application}&#8221;</p>
<p>set :mongrel_conf, &#8220;#{deploy_to}/current/config/mongrel_cluster.yml&#8221;</p>
<p>role :app, &#8220;yourip&#8221;</p>
<p>role :web, &#8220;yourip&#8221;</p>
<p># role :app, &#8220;yourip&#8221;</p>
<p># role :web, &#8220;yourip&#8221;</p>
<p># role :db,  &#8220;yourip&#8221;, :primary =&gt; true</p>
<p>role :db,  &#8220;yourip&#8221;, :primary =&gt; true</p>
<p>namespace :db do</p>
<p>desc &#8220;Create database.yml in shared/config&#8221;</p>
<p>task :default do</p>
<p>database_configuration = ERB.new &lt;&lt;-EOF</p>
<p>development:</p>
<p>adapter: sqlserver</p>
<p>mode: odbc</p>
<p>dsn: dsn1</p>
<p>username:</p>
<p>password:</p>
<p>test:</p>
<p>adapter: sqlserver</p>
<p>mode: odbc</p>
<p>dsn: dsn1</p>
<p>username:</p>
<p>password:</p>
<p>production:</p>
<p>adapter: sqlserver</p>
<p>mode: odbc</p>
<p>dsn: dsn1</p>
<p>username:</p>
<p>password:</p>
<p>legacy_db1:</p>
<p>adapter: sqlserver</p>
<p>mode: odbc</p>
<p>dsn:  dsn2</p>
<p>username:</p>
<p>password:</p>
<p>legacy_db2:</p>
<p>adapter: sqlserver</p>
<p>mode: odbc</p>
<p>dsn: dsn3</p>
<p>username:</p>
<p>password:</p>
<p>legacy_db3:</p>
<p>adapter: sqlserver</p>
<p>mode: odbc</p>
<p>dsn: dsn4</p>
<p>username:</p>
<p>password:</p>
<p>EOF</p>
<p>run &#8220;mkdir -p #{deploy_to}/#{shared_dir}/config&#8221;</p>
<p>put database_configuration.result, &#8220;#{deploy_to}/#{shared_dir}/config/database.yml&#8221;</p>
<p>end</p>
<p>desc &#8220;Link in the production database.yml&#8221;</p>
<p>task :symlink do</p>
<p>run &#8220;ln -nfs #{deploy_to}/#{shared_dir}/config/database.yml #{release_path}/config/database.yml&#8221;</p>
<p>end</p>
<p>end</p>
<p><code><br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://pmkenney.com/capistrano-deployment-with-legacy-databases.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adapter specific date handling in Rails</title>
		<link>http://pmkenney.com/adapter-specific-date-handling-in-rails.htm</link>
		<comments>http://pmkenney.com/adapter-specific-date-handling-in-rails.htm#comments</comments>
		<pubDate>Fri, 16 May 2008 01:11:34 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Rails Stuff]]></category>
		<category><![CDATA[date handlers]]></category>
		<category><![CDATA[DBI]]></category>
		<category><![CDATA[odbc]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://pmkenney.com/?p=15</guid>
		<description><![CDATA[Lately I&#8217;ve had to endure working on a Rails project where the requirements dictate the use of Microsoft SQL Server as the choice database. In addition, we&#8217;ve had to test environments consisting of Microsoft Windows/Apache 2.2/Mongrel and Red Hat/Apache 2.2/Mongrel with various adapter(odbc, oledb) and tabular data stream translators. When testing several operating systems, adapters, [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I&#8217;ve had to endure working on a Rails project where the requirements dictate the use of Microsoft SQL Server as the choice database. In addition, we&#8217;ve had to test environments consisting of Microsoft Windows/Apache 2.2/Mongrel and Red Hat/Apache 2.2/Mongrel with various adapter(odbc, oledb) and tabular data stream translators. When testing several operating systems, adapters, manipulators, etc there were inevitable issues between the different setups. One of the most common issues was the adapter specific handling of dates. Depending on the adapter&#8217;s TDS(tabular data stream), dates can be returned as strings or date objects. This issue made our project less flexible as we were having to modify view code here and there. To solve the issue we extended the rails core and created a DBI override class in the lib directory of our project.</p>
<p>To do this, add a core_ext folder inside of your project&#8217;s lib directory. Next, add a ruby file called core_ext.rb; contents shown below.</p>
<p><code>#Include each of the files in the core_ext directory<br />
Dir[File.dirname(__FILE__) + "/core_ext/*.rb"].each{ |file| require(file) }<br />
</code></p>
<p>Once your core_ext folder and file are setup in lib you&#8217;ll need to tell the environment.rb file to include your core extenders. Append the following line to your environment.rb file.</p>
<p><code>require 'core_ext'</code></p>
<p>Once our extensions are visible in the environment we can add our date time handler for dates where DBI is the project adapter. Add a file called DBI.rb in the core_ext directory. Contents shown below.</p>
<p><code>require "date"<br />
module DBI<br />
  class Date<br />
      def to_friendly_str(options = {})<br />
       t = self.to_time<br />
       t.to_friendly_str(options) rescue self<br />
      end</code></p>
<p><code> </code></p>
<p><code>      def strftime(options = {})<br />
        t = self.to_time<br />
        t.strftime(options) rescue self<br />
      end<br />
   end<br />
end</code></p>
<p> </p>
<p>You&#8217;ll notice a non-standard method called &#8220;to_friendly_str&#8221;. You can replace this with stftime or create a custom date string handler like we did. I&#8217;ve added to_friendly_str below if you want to add it to the core_ext directory in addition to the DBI module or you can place it in your application controller. Enjoy!</p>
<p><code>def to_friendly_str(options = {})<br />
# Attempt to init a new time object<br />
# from this string then call<br />
# to friendly_str on it.<br />
    t = Time.parse(self)<br />
    t.to_friendly_str(options) rescue self<br />
end</code></p>
]]></content:encoded>
			<wfw:commentRss>http://pmkenney.com/adapter-specific-date-handling-in-rails.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FreeTDS Compiler for Mac</title>
		<link>http://pmkenney.com/quit-complaing-ive-been-busy.htm</link>
		<comments>http://pmkenney.com/quit-complaing-ive-been-busy.htm#comments</comments>
		<pubDate>Sun, 10 Feb 2008 06:48:51 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Mac Stuff]]></category>
		<category><![CDATA[Rails Stuff]]></category>
		<category><![CDATA[DBI]]></category>
		<category><![CDATA[freetds]]></category>
		<category><![CDATA[leopard freetds]]></category>
		<category><![CDATA[mac odbc]]></category>
		<category><![CDATA[unixodbc]]></category>

		<guid isPermaLink="false">http://pmkenney.com/quit-complaing-ive-been-busy.htm</guid>
		<description><![CDATA[Ok, so this is my first post of the year&#8230;..deal with it. Not much to report right now. I&#8217;m almost ready to switch my blog over to a custom Rails CMS in the near future and I&#8217;m gearing up this week to do some training on the latest version of Rails, fun. I always like [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, so this is my first post of the year&#8230;..deal with it. Not much to report right now. I&#8217;m almost ready to switch my blog over to a custom Rails CMS in the near future and I&#8217;m gearing up this week to do some training on the latest version of Rails, fun. I always like walking people through a method line by line only to find they weren&#8217;t paying attention because they&#8217;re too busy being right. That piss anyone else off? I do love REST integration in form objects in 2.0.Yesterday I started compiling a cocoa installer for FreeTDS on Leopard.  I&#8217;m tired of configuring developer&#8217;s machines by hand whenever they need to hit an MS Sql box from their MacBook, so that&#8217;s my motivation&#8230;.and it&#8217;d been pretty nice to have. I&#8217;ll post to Google Code as soon as it&#8217;s tested. With the current work load it&#8217;ll probably end up being June.That&#8217;s really all for now. Trying to get a major enterprise Rails app out the door this month so it&#8217;s likely I won&#8217;t have any updates until March or April.</p>
]]></content:encoded>
			<wfw:commentRss>http://pmkenney.com/quit-complaing-ive-been-busy.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fix for FreeTDS, Ruby ODBC on Max OS X Leopard</title>
		<link>http://pmkenney.com/fix-for-freetds-ruby-odbc-on-max-os-x-leopard.htm</link>
		<comments>http://pmkenney.com/fix-for-freetds-ruby-odbc-on-max-os-x-leopard.htm#comments</comments>
		<pubDate>Fri, 30 Nov 2007 03:17:15 +0000</pubDate>
		<dc:creator>Patrick</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://pmkenney.com/fix-for-freetds-ruby-odbc-on-max-os-x-leopard.htm</guid>
		<description><![CDATA[If you&#8217;re like me, you have been happily developing your ruby projects connecting to an RDMS through unixodbc and rubyodbc in Mac OS X Tiger only to find it break in OS X Leopard without good reason. Well, after agonizing since October 29th I&#8217;ve compiled the necessary steps to get you back up and happily [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re like me, you have been happily developing your ruby projects connecting to an RDMS through unixodbc and rubyodbc in Mac OS X Tiger only to find it break in OS X Leopard without good reason. Well, after agonizing since October 29th I&#8217;ve compiled the necessary steps to get you back up and happily connecting your RoR projects to RDMS&#8217; through ODBC in Leopard. </p>
<p>Steps successfully used on clean install of Leopard.</p>
<p>1. Download the latest stable release of <a href="ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz">freetds</a>.<br />
2. Extract freetds tgz file within Downloads<br />
3. Open terminal and cd to Downloads/freetds-0.** folder<br />
4. run &#8220;./configure&#8221;<br />
5. run &#8220;cp /usr/bin/glibtool libtool&#8221; <----Important!<br />
6. run "sudo make"<br />
7. run "sudo make install"<br />
8. Next create an ODBC directory in your /Library folder<br />
9. You'll need to create odbc.ini and odbcinst.ini files if you don't have any already.</p>
<p>Should look like this</p>
<blockquote><p>/Library/ODBC/odbcinst.ini:</p>
<p>[ODBC Drivers]<br />
JDBC = Installed</p>
<p>[JDBC]<br />
Description = Sybase JDBC Server<br />
Driver = /usr/local/lib/libtdsodbc.so<br />
Setup = /usr/local/lib/libtdsodbc.so<br />
/Library/ODBC/odbc.ini:</p>
<p>[ODBC Data Sources]<br />
MySQLServer = JDBC</p>
<p>[MyDSN]<br />
Driver = /usr/local/lib/libtdsodbc.so<br />
Description = Description of this database connection<br />
Trace = yes<br />
TraceFile = /tmp/odbc.log<br />
Servername = MySQLServer<br />
Database = YOUR_ACUTAL_DB_NAME<br />
To test:<br />
% iodbctest &#8220;dsn=MyDSN;uid=USERNAME;pwd=PASSWORD&#8221;
</p></blockquote>
<p>You should be able to run SQL commands at this point. </p>
<p>Now you need to install a couple of Ruby libraries: ruby-dbi and ruby-odbc.</p>
<p>10. Download <a href="http://www.ch-werner.de/rubyodbc/ruby-odbc-0.9995.tar.gz">ruby-odbc</a> version 0.9995 from http://www.ch-werner.de/rubyodbc<br />
11. Extrac tar.gz file and cd  to &#8220;ruby-odbc-0.999X&#8221;<br />
12. run &#8220;ruby extconf.rb&#8221;<br />
13. run &#8220;sudo make&#8221;<br />
14. run &#8220;sudo make install&#8221;<br />
15. Download <a href="http://rubyforge.org/frs/download.php/655/ruby-dbi-all-0.0.23.tar.gz">http://rubyforge.org/frs/download.php/655/ruby-dbi-all-0.0.23.tar.gz</a><br />
16. Extract ruby-dbi-all-0.0.23.tar.gz to downloads<br />
17. cd ruby-dbi-all<br />
17. run &#8220;ruby setup.rb config &#8211;with=dbi,dbd_odbc&#8221;<br />
18. run &#8220;ruby setup.rb setup&#8221;<br />
19. run &#8220;sudo ruby setup.rb install&#8221;</p>
<p>Congratulations! You should now be happily connect to ODBC connections, namely MSSQL, through ruby again in Apple&#8217;s latest OS. </p>
<p>***If you get any errors after freetds install try clearing our *odbc* and *tds* files inside /usr/local/lib directory. Happened to me once in about 5 installs. Likely a missed error and missed sudo command on my part. </p>
]]></content:encoded>
			<wfw:commentRss>http://pmkenney.com/fix-for-freetds-ruby-odbc-on-max-os-x-leopard.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

