<?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>Patrick Tulskie</title>
	<atom:link href="http://www.patricktulskie.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.patricktulskie.com</link>
	<description>Building a Better Internet</description>
	<lastBuildDate>Wed, 16 Jun 2010 19:12:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Change ActiveRecord Pool Size on the Fly</title>
		<link>http://www.patricktulskie.com/2010/06/change-activerecord-pool-size-on-the-fly/</link>
		<comments>http://www.patricktulskie.com/2010/06/change-activerecord-pool-size-on-the-fly/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 19:12:25 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ActiveRecord]]></category>
		<category><![CDATA[connection]]></category>
		<category><![CDATA[connection_pool]]></category>
		<category><![CDATA[pool]]></category>
		<category><![CDATA[pool size]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=168</guid>
		<description><![CDATA[I have a rake task that runs using the application&#8217;s production environment.  Unlike the production environment though, it is threaded.  In order to make any real use out of that, I need to increase the ActiveRecord connection pool size.  Normally you&#8217;d do this in your database.yml, but in this case I&#8217;d rather [...]]]></description>
			<content:encoded><![CDATA[<p>I have a rake task that runs using the application&#8217;s production environment.  Unlike the production environment though, it is threaded.  In order to make any real use out of that, I need to increase the ActiveRecord connection pool size.  Normally you&#8217;d do this in your database.yml, but in this case I&#8217;d rather not modify the production environment&#8217;s settings for the sake of a single rake task.</p>
<p>Here&#8217;s how you can make the change, on the fly, inside of your rake task:</p>
<pre><code>task :swimming_pool => :environment do
  ActiveRecord::Base.connection_pool.instance_variable_set('@size', 15)
  ActiveRecord::Base.connection_pool.instance_variable_set('@timeout', 10)
  # Do awesome threaded stuff here
end
</code></pre>
<p>The first line of the rake task increases your pool size and the second line changes your timeout when waiting for a connection from the pool.  You can adjust those values to whatever you need.  That just happened to be what I need for this particular task.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2010/06/change-activerecord-pool-size-on-the-fly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skip Rails AuthenticityToken Check, Sometimes</title>
		<link>http://www.patricktulskie.com/2010/04/skip-rails-authenticitytoken-check-sometimes/</link>
		<comments>http://www.patricktulskie.com/2010/04/skip-rails-authenticitytoken-check-sometimes/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 16:05:10 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[authenticitytoken]]></category>
		<category><![CDATA[before_filter]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[request]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=154</guid>
		<description><![CDATA[Earlier today, Elad Meidar asked on Twitter about how to bypass checking the Authenticity Token in Rails for an action, sometimes.  The example he mentioned was for a write API but this could theoretically be used for other situations where you only want to skip the authenticity token check of an action under specific [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier today, Elad Meidar asked on <a href="http://twitter.com/eladmeidar/status/11759280546">Twitter</a> about how to bypass checking the Authenticity Token in Rails for an action, sometimes.  The example he mentioned was for a write API but this could theoretically be used for other situations where you only want to skip the authenticity token check of an action under specific circumstances.  We went back and fort</p>
<p>
First off, you need to do some before filter work:</p>
<pre><code>skip_before_filter :verify_authenticity_token, :only => [:your_action]
before_filter :semi_verify_authenticity_token, :only => [:your_action]</code></pre>
</p>
<p>
Then you need a function to define when to check for the token authenticity:</p>
<pre><code>def semi_verify_authenticity_token
  verify_authenticity_token unless request.xhr? # Or whatever other criteria you would use
end</code></pre>
</p>
<p>All you really have to do then is make sure that verify_authenticity_token gets called based on the params or request and you should be set.  This can be useful for APIs or AJAX calls calls to a given action where you don&#8217;t mind skipping the token check, but you still want to enforce it for the regular HTML browser view.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2010/04/skip-rails-authenticitytoken-check-sometimes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Highlighting</title>
		<link>http://www.patricktulskie.com/2009/12/code-highlighting/</link>
		<comments>http://www.patricktulskie.com/2009/12/code-highlighting/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 19:05:02 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=132</guid>
		<description><![CDATA[Just a small thing.  I was trying to find a good syntax highlighter for code on this blog and another one I&#8217;m about to start.  After trying a few, I settled on highlight.js from http://softwaremaniacs.org/soft/highlight/en
You basically need to simply wrap your code in &#60;pre&#62;&#60;code&#62;&#60;/code&#62;&#60;/pre&#62; and it handles the rest.  Here&#8217;s an example:

class [...]]]></description>
			<content:encoded><![CDATA[<p>Just a small thing.  I was trying to find a good syntax highlighter for code on this blog and another one I&#8217;m about to start.  After trying a few, I settled on highlight.js from http://softwaremaniacs.org/soft/highlight/en</p>
<p>You basically need to simply wrap your code in &lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt; and it handles the rest.  Here&#8217;s an example:</p>
<pre><code>
class ThisIsRuby

  def fun
    puts "This is fun!"
  end

end

test = ThisIsRuby.new
puts test.fun

</code></pre>
<p>On a semi-related note, I&#8217;m still chasing down some nginx config related gremlins.  If you see anything weird, let me know in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2009/12/code-highlighting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WebbyNode, Nginx, and Percona MySQL</title>
		<link>http://www.patricktulskie.com/2009/12/webbynode-nginx-percona-mysql/</link>
		<comments>http://www.patricktulskie.com/2009/12/webbynode-nginx-percona-mysql/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 18:07:04 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=128</guid>
		<description><![CDATA[I&#8217;ve been having some issues with the slice that the blog and some other applications were on the box.  Over the past few weeks, MySQL has been crashing or perhaps SliceHost was rebooting my server and MySQL was not coming back up.  It was all very mysterious to me, but I was unhappy with the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been having some issues with the slice that the blog and some other applications were on the box.  Over the past few weeks, MySQL has been crashing or perhaps SliceHost was rebooting my server and MySQL was not coming back up.  It was all very mysterious to me, but I was unhappy with the overall setup anyway.</p>
<p>WebbyNode is a newer player in the VPS game and they offer basically the same setup as SliceHost at a lower price.  I also like their ReadyStacks and github friendliness.  I registered and built out a box with Nginx and Percona MySQL.  Everything feels fairly snappy when I&#8217;m on the box despite being a low memory VPS.</p>
<p>Going forward I&#8217;m going to be moving Twexaminer.com over to this same VPS and run it through Nginx with Unicorn.</p>
<p>If anyone has any questions about the setup, let me know.  If I get a chance later, I&#8217;ll try to come up with a short guide on how I got everything working.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2009/12/webbynode-nginx-percona-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>libxml-ruby vs nokogiri vs hpricot</title>
		<link>http://www.patricktulskie.com/2009/03/libxml-ruby-vs-nokogiri-vs-hpricot/</link>
		<comments>http://www.patricktulskie.com/2009/03/libxml-ruby-vs-nokogiri-vs-hpricot/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 05:05:26 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Comedy]]></category>
		<category><![CDATA[New Stuff]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[hpricot]]></category>
		<category><![CDATA[libxml]]></category>
		<category><![CDATA[libxml-ruby]]></category>
		<category><![CDATA[nokogiri]]></category>
		<category><![CDATA[parsing]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=115</guid>
		<description><![CDATA[Patrick talks about Ruby XML parser testing with libxml-ruby, nokogiri, hpricot, and rexml.  New test results using the test suite written by Tenderlove (Aaron Patterson) and modified to satisfy some of Why the Lucky Stiff's complaints about the tests.]]></description>
			<content:encoded><![CDATA[<p><em><strong>Update: Aaron told me that he is going to be re-running the benchmarks this weekend so we&#8217;ll get a more complete set of data from the machine that originally ran the tests.</strong></em></p>
<p>If you&#8217;re into parsing XML or HTML with ruby then chances are you&#8217;re familiar with the various gems out there for getting the job done.  Lately, there have been a lot of things flying around about which is the fastest and to settle it, Aaron Patterson (author of Nokogiri and Mechanize) wrote a test suite.</p>
<p>After it&#8217;s release, RubyInside posted about how the tests showed how fast Nokogiri was compared to Hpricot in this article here: <a title="Ruby XML Performance Shootout: Nokogiri vs LibXML vs Hpricot vs REXML - RubyInside" href="http://www.rubyinside.com/ruby-xml-performance-benchmarks-1641.html">Ruby XML Performance Shootout: Nokogiri vs LibXML vs Hpricot vs REXML</a>.  Later in the day, I saw Why&#8217;s posting about the release of Hpricot here: <a title="hpricot 0.7" href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/331411">hpricot 0.7</a> and decided to modify Aaron&#8217;s tests to use Hpricot.XML and here are the results:<br />
<span id="more-115"></span></p>
<pre><code>Tests were run at N=5 to get a clearer picture of the differences between the various gems.  At N=2, tests were pretty close, which indicated that a larger sample was needed.

test_IO_parsing(XmlTruth::DOM::XML::LargeDocumentParsingTest) N=5
user     system      total        real   kBps
null          0.690000   0.070000   0.760000 (  0.768641) 46343.68
nokogiri      2.790000   0.130000   2.920000 (  3.015303) 11813.62
libxml-ruby   2.970000   0.140000   3.110000 (  3.130175) 11380.08
hpricot      13.660000   0.370000  14.030000 ( 14.088780) 2528.37
.
test_in_memory_parsing(XmlTruth::DOM::XML::LargeDocumentParsingTest) N=5
user     system      total        real   kBps
null          1.240000   0.010000   1.250000 (  1.260841) 28252.30
nokogiri      4.360000   0.060000   4.420000 (  4.444468) 8014.83
libxml-ruby   4.570000   0.050000   4.620000 (  4.641338) 7674.87
hpricot      13.750000   0.210000  13.960000 ( 14.045647) 2536.13
.
test_simple_xpath(XmlTruth::DOM::XML::LargeDocumentXPathSearchTest) N=5
user     system      total        real   kBps
nokogiri     44.430000   0.300000  44.730000 ( 44.972003) 792.09
libxml-ruby  40.950000   0.210000  41.160000 ( 41.300780) 862.49
hpricot      18.410000   0.090000  18.500000 ( 18.540239) 1921.32
.
test_IO_parsing(XmlTruth::DOM::XML::SmallDocumentParsingTest) N=1944
user     system      total        real   kBps
null          8.150000   0.130000   8.280000 (  8.326070) 4278.17
nokogiri     17.850000   0.100000  17.950000 ( 17.950534) 1984.36
libxml-ruby  19.010000   0.260000  19.270000 ( 19.370769) 1838.87
hpricot      25.320000   0.460000  25.780000 ( 25.827516) 1379.16
.
test_in_memory_parsing(XmlTruth::DOM::XML::SmallDocumentParsingTest) N=1944
user     system      total        real   kBps
null          3.960000   0.030000   3.990000 (  4.005522) 8892.82
nokogiri     18.140000   0.200000  18.340000 ( 18.403396) 1935.53
libxml-ruby  19.760000   0.230000  19.990000 ( 19.999905) 1781.03
hpricot      15.980000   0.150000  16.130000 ( 16.133157) 2207.90
.
Finished in 426.233021 seconds.

5 tests, 0 assertions, 0 failures, 0 errors</code></pre>
<p>You can find my fork of the test suite on github here: <a title="Patrick Tulskie's fork of XMLTruth on Github" href="http://github.com/PatrickTulskie/xml_truth/tree/master">Patrick Tulskie&#8217;s Fork of XMLTruth</a></p>
<p>From this small sample of tests, it appears as though Nokogiri and libxml-ruby are similar in performance for most items.  This makes sense though since Nokogiri utilizes the native libxml of the current operating environment.  Nokogiri clearly excels at parsing larger documents while Hpricot appears to handle smaller, in-memory documents rather quickly.</p>
<p>In real-world scenarios, one might expect Nokogiri to be the ideal solution to parsing large XML or HTML documents from the disk into a database, whereas Hpricot might be a more ideal gem for use in a web crawler where it is rare that a page&#8217;s DOM is more than a 1MB.</p>
<p>Please post any other thoughts you might have in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2009/03/libxml-ruby-vs-nokogiri-vs-hpricot/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>you need to write me [updated]</title>
		<link>http://www.patricktulskie.com/2009/03/you-need-to-write-me/</link>
		<comments>http://www.patricktulskie.com/2009/03/you-need-to-write-me/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 23:18:40 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[gems]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[you need to write me]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=109</guid>
		<description><![CDATA[Solution for how to fix the you need to write me problem with ruby.]]></description>
			<content:encoded><![CDATA[<p>About 20 minutes ago I entered a situation where every time I ran a script on my machine, the only output would be &#8220;you need to write me&#8221;</p>
<p>Naturally I was a little freaked out.</p>
<p>After retracing my steps over the past hour I remembered I had updated my ruby gems with a good ol &#8220;sudo gem update.&#8221;  I do it all the time so I didn&#8217;t see the cause for concern.  I went and looked at the newly installed gems and saw that there was libxml-ruby-1.0.0.  I browsed inside the gem and saw that it had a bin directory that had a ruby executable in it.  Cute.  Whoever the person is who released that needs to pay super close attention to what they are doing in the future.</p>
<p>Anyhow, I uninstalled the gem and when it asked if I wanted to remove the ruby executable I said yes.  This of course trashed the ruby executable in my /usr/bin.  Luckily I was able to retrieve it from Jay Amster and all was well.  If I was to do things over I&#8217;d say not to trash the executable and just delete the gem and all of its files.</p>
<p>Having that broken ruby executable in my path devastated my system though.  Half of my Textmate scripts no longer worked, none of my rails apps would execute, etc.  It was awful.  Thankfully I was able to figure it out quickly and hopefully if you run a search for &#8220;you need to write me&#8221; then you&#8217;ll stumble upon this post and know what to do to fix your machine.</p>
<p><strong>UPDATE:</strong></p>
<p><strong>It would appear as though this problem is now resolved.  Maybe I got a bad install of the gem?  Maybe it was just a fluke?  Who knows?  It appears safe to install the latest libxml-ruby now though.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2009/03/you-need-to-write-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby String#Nameize Revised</title>
		<link>http://www.patricktulskie.com/2008/12/ruby-string-nameize-revised/</link>
		<comments>http://www.patricktulskie.com/2008/12/ruby-string-nameize-revised/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 19:10:31 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[function]]></category>
		<category><![CDATA[irish]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[mc]]></category>
		<category><![CDATA[nameize]]></category>
		<category><![CDATA[names]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=102</guid>
		<description><![CDATA[Ruby String class extension to capitalize names properly, including Irish names with Mc, Mac, and O' in them.]]></description>
			<content:encoded><![CDATA[<p>This morning, Kevin Glowacz (<a href="http://twitter.com/kevinglowacz">@kevinglowacz</a>) replied to me a few times on Twitter about Ruby String#Nameize class extension I had posted a while back.  I had done some work to it after posting it here.  Kevin also asked me a few questions about oddities that were in it that have since been resolved.  So thanks to his prodding, you get a slightly updated version&#8230;</p>
<p>The only real &#8220;feature&#8221; is that it will now handle full names just fine. Otherwise, the rest of the stuff was mostly performance related.  Here it is:</p>
<pre><code>class String
  # Extension of the string class to properly handle camel names
  def nameize
    if self.match(/ /)
      # If the name has a space in it, we gotta run the parts through the nameizer.
      name = self.split(' ').each { |part| part.nameize! }.join(' ')
      return name
    elsif self.match(/^[A-Z]/)
      # If they took the time to capitalize their name then let's just jump out.
      return self
    else
      # If there are no spaces and there is no prior
      # capitalization then let's downcase the whole thing.
      name = self.downcase
    end
    # Let's now assume that they were lazy...
    return case
    when name.match(/^mac/)
      name.gsub(/^mac/, "").capitalize.insert(0, "Mac")
    when name.match(/^mc/)
      name.gsub(/^mc/, "").capitalize.insert(0, "Mc")
    when name.match(/^o\'/)
      name.split("'").each{ |piece| piece.capitalize! }.join("'")
    else
      name.capitalize # name is a first name or it's not Irish then capitalize it.
    end
  end

  def nameize!
    replace nameize # BANG!
  end

end</code></pre>
<p>As always &#8211; question, comments, suggestions &#8211; shoot me an email, leave a comment, or hit me on Twitter (@PatrickTulskie).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2008/12/ruby-string-nameize-revised/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Using Ruby, Git, and Bonjour to Get Through Code Review</title>
		<link>http://www.patricktulskie.com/2008/12/using-ruby-git-and-bonjour-to-get-through-code-review/</link>
		<comments>http://www.patricktulskie.com/2008/12/using-ruby-git-and-bonjour-to-get-through-code-review/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 05:55:38 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=97</guid>
		<description><![CDATA[Every Friday we have our code reviews at BeenVerified and it is definitely a non-trivial event.  Our development team looks through the code all together and offers suggestions and ways to improve what the creator deems near-complete code.  Code reviews have become my favorite part of team based development because they offer me such a [...]]]></description>
			<content:encoded><![CDATA[<p>Every Friday we have our code reviews at BeenVerified and it is definitely a non-trivial event.  Our development team looks through the code all together and offers suggestions and ways to improve what the creator deems near-complete code.  Code reviews have become my favorite part of team based development because they offer me such a badass opportunity to learn more.  Everyone looks a problem differently and so getting insight from other people is huge because you might not consider all of your options when you&#8217;re knee deep in 1000 lines of ruby, CSS, and js all at once.</p>
<p>Yeah it&#8217;s great, except this Friday it didn&#8217;t happen.  Thanksgiving weekend happened instead so we pushed it to Monday.  Being the silly goose I am, I decided to get a new Macbook on Black Friday.  I restored my stuff from Time Machine, installed my Ruby Gems, and thought all was well.  Monday morning, my turn to present code came up and there was a problem with screen sharing.  Crap.  All of my code is in a git branch that is not pushed to a server yet and the time it would have taken to get to a state where we could present it from another machine would have been too much so we postponed my review until my screen sharing would work.  This was most displeasing to me.<span id="more-97"></span></p>
<p><strong>How To Handle It Next Time.</strong></p>
<p>As of late, there has been a lot of talk about bonjour in the ruby world.  There are a lot of really awesome applications that use the technology.  Take for example, gitjour.  It takes an existing git repository and makes it available to machines on the local network through bonjour.  All they would need is the gem and to type &#8220;gitjour list&#8221; in a terminal window to see what&#8217;s available.  That&#8217;s badass.</p>
<p>So if we had to rewind to Monday morning, what we should have done is take a functioning machine on the local network and had that person do a clone of my repository to a new working directory and then we could have screen shared that.  It would have taken a fraction of the time that it would have taken to push it to the server with my own local branch, tell someone to get a copy of my branch from the server and what branch to take.  Gitjour would have cut out all of the steps and it would have been quicker since it&#8217;s on the local network.</p>
<p>This thought alone makes me want to dive deeper into bonjour and figure out how to use it for various things.  If you have any good resources, post them in the comments or hit me up on Twitter. (http://twitter.com/patricktulskie)</p>
<p><strong>What Was The Screen Sharing Problem?</strong></p>
<p>Turns out iChat 4.0.5 doesn&#8217;t know how to view the screen of someone with iChat 4.0.6.  The new Macbook comes with 4.0.6 by default and there is no easy way to upgrade to it.  I downgraded to 4.0.2 from my Blackbook and now all is well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2008/12/using-ruby-git-and-bonjour-to-get-through-code-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leopard and MySQL Gem</title>
		<link>http://www.patricktulskie.com/2008/11/leopard-and-mysql-gem/</link>
		<comments>http://www.patricktulskie.com/2008/11/leopard-and-mysql-gem/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 18:48:14 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[leopard]]></category>
		<category><![CDATA[leopard mysql gem]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby gem mysql rails]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=88</guid>
		<description><![CDATA[Explains how to get the MySQL ruby gem to compile for Macs on OS X Leopard.]]></description>
			<content:encoded><![CDATA[<p>Those of you doing rails development work on Leopard with MySQL have probably seen this error message when starting your app:</p>
<blockquote><p>WARNING: You&#8217;re using the Ruby-based MySQL library that ships with Rails. This library is not suited for production. Please install the C-based MySQL library instead (gem install mysql).</p></blockquote>
<p>Normally I don&#8217;t care, but I figured since I was doing some cleanup today and getting things ready to move on to a longer term it might be good to have a properly working MySQL gem.  I like to run with a system that is close to what we run production.  The closer you get, the less surprises you have when you push it live.</p>
<p><span id="more-88"></span></p>
<p><strong>More Fixing.  Less Talking.</strong></p>
<p>Damn you&#8217;re so pushy sometimes.  Anyhow.  I did a sudo gem install mysql and got another damn error.</p>
<pre><code>Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.
</code></pre>
<p>Oh good.  Another error.  Perfect.  I searched around the interwebs and someone suggested using &#8220;&#8211;with-mysql-lib=/usr/local/mysql/lib&#8221; in the options since that&#8217;s where the libraries are located.  It still barfed on me with that.</p>
<p><strong>A Solution Please.</strong></p>
<p>A few more minutes of hunting and pecking and I found the golden command:</p>
<pre><code>sudo gem install mysql -- --with-mysql-config
Building native extensions.  This could take a while...
Successfully installed mysql-2.7
1 gem installed</code></pre>
<p>Now I don&#8217;t have any errors when starting my rails applications that use MySQL and I&#8217;m closer to what I have in production.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2008/11/leopard-and-mysql-gem/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Tie Breaker [Updated]</title>
		<link>http://www.patricktulskie.com/2008/11/the-tie-breaker/</link>
		<comments>http://www.patricktulskie.com/2008/11/the-tie-breaker/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 21:23:29 +0000</pubDate>
		<dc:creator>Patrick Tulskie</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.patricktulskie.com/?p=82</guid>
		<description><![CDATA[I have this disturbing lack of confidence in both presidential candidates.  I don&#8217;t really want either of them.  Today I was trying to decide who to vote for because, well, it is election day.  I was walking into the office from lunch when it dawned on me: the best way to pick a president is [...]]]></description>
			<content:encoded><![CDATA[<p>I have this disturbing lack of confidence in both presidential candidates.  I don&#8217;t really want either of them.  Today I was trying to decide who to vote for because, well, it is election day.  I was walking into the office from lunch when it dawned on me: the best way to pick a president is based on their website.</p>
<p><strong>Presidential Candidate Websites.</strong></p>
<p>Shock and horror came over me as I scanned their websites.  There was stuff all over the place, explosive gradients and backgrounds that simply don&#8217;t jive.  Youtube videos are injected in every nook and cranny.  Since both websites are full of crap I don&#8217;t fell like reading or watching, I thought that I&#8217;d go a step further and do a good ol&#8217; W3C Markup Validation on them.  The results were astounding to say the least.</p>
<p>John McCain: 171 Errors, 46 Warnings (217 <em>problems</em>)<br />
Source: <a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.johnmccain.com&amp;charset=(detect+automatically)&amp;doctype=Inline&amp;group=0">W3C</a></p>
<p>Barack Obama: 220 Errors, 37 Warnings (257 <em>problems</em>)<br />
Source: <a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.barackobama.com%2Findex.php&amp;charset=(detect+automatically)&amp;doctype=Inline&amp;group=0&amp;user-agent=W3C_Validator%2F1.591">W3C</a></p>
<p>You would think that with the Democratic party doing anything and everything to get Barack all over the media, news, magazines, to the point where I check under my bed at night to make sure he&#8217;s not there, they would have made sure his website was W3C compliant.  If he wins, what does that say about their concern for web standards.  It makes his &#8220;net neutrality&#8221; talks sound like complete crap.  McCain&#8217;s site is not <em>much</em> better than Obama&#8217;s but the fact is that McCain&#8217;s site <strong>is</strong> better.  Winning is winning.</p>
<p>You&#8217;d think that my selection process would be over, but you would be wrong.</p>
<p><strong>VP Candidates.</strong></p>
<p>I went to JoeBiden.com and SarahPalin.com and both were serious let downs.  Biden freeloads off of Obama&#8217;s website.  Palin&#8217;s website says &#8220;This space intentionally left blank.&#8221;  Serious disappointment.  Not even a picture of Palin for me to hang up on the wall of my gun locker.  Biden too&#8230; dude what&#8217;s up with that?  You gotta have Obama carry you through the whole damn election?  Complete rubbish from both the elephant and the ass.</p>
<p>For giggles, I ran &#8216;em through anyway&#8230;</p>
<p>Sarah Palin: 5 Errors, 0 Warnings</p>
<p>Joe Biden: 72 Errors, 29 Warnings</p>
<p>&#8230;and let me tell you, I did giggle quite a bit.</p>
<p>Because of how atrocious both VP candidates&#8217; sites are, I won&#8217;t be including them in my decision.  Their awfulness cancels each other out.  If you wanted to play a numbers game though, Biden&#8217;s piggybacking on Obama&#8217;s site does more hurt than good.</p>
<p><strong>The Tie Breaker.</strong></p>
<p>Don&#8217;t listen to my drivel.  This blog post is balderdash.  You shouldn&#8217;t judge your presidential candidate based on how compliant their website is with W3C standards, even if I am.  When you don&#8217;t like either candidate, you need to pick one small issue that you can judge the candidates on go from there.  That&#8217;s the tie breaker.  Could be something as lofty as religious beliefs or something as trivial as who has a better choice of neck ties.</p>
<p>Fact of the matter is, you need to go out and vote, no matter how irrational and illogical your selection process might be.</p>
<p><strong>Update</strong></p>
<p>Just tested Change.gov and I&#8217;m slightly more impressed.  Seems like since Obama is now president-elect he is able to rocket past anything McCain could ever compose with a WYSIWYG with a cup of coffee.  He has created quite a website that is pretty damn compliant.</p>
<p>Change.gov:                  20 Errors, 3 Warning</p>
<p>This makes me feel much better, because the one thing that keeps me up at night is web standards.  Seems like we&#8217;re getting much closer to changing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.patricktulskie.com/2008/11/the-tie-breaker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
