<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.qgyen.net/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>In Valid Logic</title>
	
	<link>http://invalidlogic.com</link>
	<description>Endlessly expanding technology</description>
	<lastBuildDate>Mon, 25 Oct 2010 18:28:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.qgyen.net/krobertson" /><feedburner:info uri="krobertson" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Tool Enlightenment, Part 2</title>
		<link>http://feeds.qgyen.net/~r/krobertson/~3/HPDBQDvkn5Y/</link>
		<comments>http://invalidlogic.com/2010/10/25/tool-enlightenment-part-2/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 18:28:16 +0000</pubDate>
		<dc:creator>krobertson</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://invalidlogic.com/?p=619</guid>
		<description><![CDATA[I started typing a follow up post about my experiences with vim, but then as I was adding a line about not throwing gasoline on the holy war that I was doing exactly that. I was creating the stereotypical holy war inflamatory post. My main point in the previous post was about finding the tools [...]]]></description>
			<content:encoded><![CDATA[<p>I started typing a follow up post about my experiences with vim, but then as I was adding a line about not throwing gasoline on the holy war that I was doing exactly that.  I was creating the stereotypical holy war inflamatory post.</p>
<p>My main point in the previous post was about finding the tools that worked best for you, and ignoring the FUD from everyone else.</p>
<p>So with that, I spent a week with vim, watched several screencasts, pulled in several plugins, and gave it a solid week of not using emacs and resisting TextMate.  At the end of that week, I&#8217;ve decided I&#8217;m more at home in emacs.</p>
<p>The reasons are basically mute, especially since I&#8217;m trying to push for people to find out for themselves.  It is counter intuitive to give a now slanted opinion while telling you to ignore it.</p>
<div class="feedflare">
<a href="http://feeds.qgyen.net/~ff/krobertson?a=HPDBQDvkn5Y:6CsGqdvlxoc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=HPDBQDvkn5Y:6CsGqdvlxoc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=HPDBQDvkn5Y:6CsGqdvlxoc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/krobertson?i=HPDBQDvkn5Y:6CsGqdvlxoc:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://invalidlogic.com/2010/10/25/tool-enlightenment-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://invalidlogic.com/2010/10/25/tool-enlightenment-part-2/</feedburner:origLink></item>
		<item>
		<title>Tool Enlightenment</title>
		<link>http://feeds.qgyen.net/~r/krobertson/~3/_8at1vO5cOE/</link>
		<comments>http://invalidlogic.com/2010/10/14/tool-enlightenment/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 17:10:28 +0000</pubDate>
		<dc:creator>krobertson</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://invalidlogic.com/?p=615</guid>
		<description><![CDATA[Recently, I decided to take a journey down the path of enlightenment. One of the things I found so refreshing about Ruby/Rails when I first started using it was the simplicity of the tooling. Just use a text editor, no monolithic IDE with large memory footprints, slow load times, and a panache for crashing. Visual [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, I decided to take a journey down the path of enlightenment.</p>
<p>One of the things I found so refreshing about Ruby/Rails when I first started using it was the simplicity of the tooling.  Just use a text editor, no monolithic IDE with large memory footprints, slow load times, and a panache for crashing.</p>
<p>Visual Studio certainly is a great tool, and provides some powerful tools to .NET.  But I doubt anyone would disagree with me that Visual Studio often feels like a 500lb gorilla. Especially when you add in the plugins so many use, like CodeRush or ReSharper.  Simply opening TextMate was rather refreshing when coming from that kind of environment.</p>
<p>A few weeks ago, I had the chance to go to <a href="http://gogaruco.com">GoGaRuCo</a> and they had a workflow panel where they got some of the well known developers up on the stage, and discussed some of the tools and arrangements they use.  It was a little superficial, where it was &#8220;I have an editor with 3 panes and 2 terminals open&#8221;.  But there were some interesting observations.  First of all, everyone on the panel was using either Emacs or Vim.  After the talk, they polled the audience what they use.  The overwhelming majority of the audience was using either RubyMine or TextMate.</p>
<p>The surface argument you could make is that all the &#8220;hackers&#8221; are using Emacs/Vim and aren&#8217;t representative of the population.  Sure, I looked at it that way too.  But a few things started to peak my interest, particularly when I&#8217;d talk to an Emacs or Vim user.  You will almost always hear them say they&#8217;ve been using it for 10 years, 15 years, or sometimes even longer.</p>
<p>Think about your toolset today and your toolset 10 years ago.  Is there <i>anything</i> that you&#8217;re still using?  If so many people will stick with the same tool for 10 years, spanning technology bubbles, and crossing over to new languages, there must be something that tool is doing right.  These are tools whose users invest in them.  They&#8217;re like marriages.</p>
<p>So my journey to enlightenment has begun with looking at Emacs, however I&#8217;m not just playing eenie-meenie-miney-moe. Both Emacs and Vim have large followings are both excellent choices. The way I see it, I can&#8217;t chose which direction to go without looking both ways.  So, I&#8217;m trying both for 1-2 weeks each, play around with building my .emacs and vimrc, and see where it leads.</p>
<p>I&#8217;ve been using Emacs for almost 2 weeks now, and find myself opening stuff up in TextMate less and less.  Next week, I plan to focus more on Vim and try it out.</p>
<p>But I think the true enlightenment that can be found is&#8230; the elite tools are not what the &#8220;hacker&#8221; portion of a community use.  Use what fits your style best, understand why you&#8217;ve chosen your tools, and recognize those same decisions in the tools used by those around you.</p>
<div class="feedflare">
<a href="http://feeds.qgyen.net/~ff/krobertson?a=_8at1vO5cOE:Uz_aA6juHXw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=_8at1vO5cOE:Uz_aA6juHXw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=_8at1vO5cOE:Uz_aA6juHXw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/krobertson?i=_8at1vO5cOE:Uz_aA6juHXw:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://invalidlogic.com/2010/10/14/tool-enlightenment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://invalidlogic.com/2010/10/14/tool-enlightenment/</feedburner:origLink></item>
		<item>
		<title>Involver Team and Matz</title>
		<link>http://feeds.qgyen.net/~r/krobertson/~3/DUy2hU9fmVU/</link>
		<comments>http://invalidlogic.com/2010/10/08/involver-team-and-matz/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 17:52:28 +0000</pubDate>
		<dc:creator>krobertson</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://invalidlogic.com/?p=608</guid>
		<description><![CDATA[Yukihiro &#8220;Matz&#8221; Matsumoto was speaking yesterday at the Twilio offices in San Francisco on what is coming in Ruby 2.0. Was a great time and was a pleasure to meet Matz in person. I love to meet people who have changed the industry, but still remain humble. He was very polite, thanking us for coming, [...]]]></description>
			<content:encoded><![CDATA[<p>Yukihiro &#8220;Matz&#8221; Matsumoto was speaking yesterday at the <a href="http://www.twilio.com/">Twilio</a> offices in San Francisco on what is coming in Ruby 2.0.  Was a great time and was a pleasure to meet Matz in person.  I love to meet people who have changed the industry, but still remain humble.  He was very polite, thanking us for coming, shaking hands, meanwhile everyone was thanking him for Ruby.</p>
<p>One of the great question after the presentation was someone asking him what it is like having, basically, changed development and how it felt when he first realized it was catching on.  Matz said that time was around when the first picaxe book came out.  It was having someone other than himself writing an English book about Ruby and it selling well.  But his general answer to what it was like was &#8220;its nice&#8221;.</p>
<p><img src="http://invalidlogic.com/wp-content/uploads/2010/10/100_0098_2.jpg" alt="" title="100_0098_2" width="640" height="480" class="aligncenter size-full wp-image-609" /></p>
<p>The Involver team had the opportunity to take a bit of a team photo with him.  This represents about a quarter of the total Involver Engineering team.  Here we have <a href="http://twitter.com/zedlander">@zedlander</a>, Jaime our System Overlord, myself, Nina our QA queen, and <a href="http://twitter.com/zquestz">@zquestz</a> (aka Josh) who just started this week.  <a href="http://twitter.com/nolamn">@nolman</a> was also there, but had to take off right after the talk.</p>
<p>Ruby 2.0 will have a number of small but very nice language improvements, such as keyword arguments (similar to what .NET 4.0 added), as well as the ability to namespace things, including monkey patching that is scoped to only the namespace.  That there is something that seems like it will bring a lot of power.  Use two libraries that use two different versions of a gem?  What if you could load them in separate namepaces, each utilizing the separate gem versions.  Perhaps you could get really crazy and have a Rails 2 and Rails 3 app running together using separate namespaces.  I don&#8217;t know why anyone would do that, but you could, and that I like.</p>
<p>Ruby 2.0 will see a large emphasis on embedded and an alternative VM/interpretter for more targeted implementations.  I would love it if we could have a setup similar to the Arudio or Neturdio that ran Ruby.  Matz was talking about bringing Ruby to places like digital appliances, more RTOS environments focusing on latency instead of throughput.  Or having Ruby implementations for the cloud that utilized a smaller subset of the language to run on more targeted hardware.  Distributed processing where perhaps computational power is more important than IO or what not.</p>
<p>My first thought&#8230; in a few years, could my DVR be running a Rails web interface?</p>
<div class="feedflare">
<a href="http://feeds.qgyen.net/~ff/krobertson?a=DUy2hU9fmVU:ScM_m4vpRQg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=DUy2hU9fmVU:ScM_m4vpRQg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=DUy2hU9fmVU:ScM_m4vpRQg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/krobertson?i=DUy2hU9fmVU:ScM_m4vpRQg:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://invalidlogic.com/2010/10/08/involver-team-and-matz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://invalidlogic.com/2010/10/08/involver-team-and-matz/</feedburner:origLink></item>
		<item>
		<title>You got RVM and git in my command prompt!</title>
		<link>http://feeds.qgyen.net/~r/krobertson/~3/DlmXnnt20sI/</link>
		<comments>http://invalidlogic.com/2010/09/16/you-got-rvm-and-git-in-my-command-prompt/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 18:36:26 +0000</pubDate>
		<dc:creator>krobertson</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://invalidlogic.com/?p=601</guid>
		<description><![CDATA[I had posted this to our internal wiki at work, but Scott had mentioned he was interested in it, so figured I&#8217;d throw it up here. Zsh is the best shell. If you don&#8217;t know, now you know. One thing that is a nice convenience is to setup the command prompt to include your current [...]]]></description>
			<content:encoded><![CDATA[<p>I had posted this to our internal wiki at work, but <a href="http://twitter.com/scottw">Scott</a> had mentioned he <a href="http://twitter.com/scottw/status/24492462082">was interested in it</a>, so figured I&#8217;d throw it up here.</p>
<p>Zsh is the best shell.  If you don&#8217;t know, <a href="http://www.zsh.org/">now you know</a>.</p>
<p>One thing that is a nice convenience is to setup the command prompt to include your current Ruby implementation, RVM gemset, and which branch of the git repository you are in.  In our main codebase at Involver, my prompt looks like this:</p>
<div align="center"><img src="http://img.skitch.com/20100916-r1s8h53qw3pc718fnb4fnrsefy.jpg" alt="prompt" width="496" height="84" /></div>
<p>From this, I can tell I&#8217;m using JRuby 1.5.1, the &#8220;involver&#8221; gemset.  I&#8217;m in the &#8220;topsecret&#8221; project folder (I just have the current directory, not the full path), and the &#8220;git:master&#8221; indicates its a git repository and I&#8217;m in the master branch.</p>
<p>To achieve that, add the following into your .zshrc or one of the files you source into it.</p>
<pre class="brush: plain;">parse_git_branch() {
  git branch 2&gt; /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\/git:\1/'
}

rvm_prompt() {
  $HOME/.rvm/bin/rvm-prompt v g
}

export PS1='%{$reset_color$fg[blue]%}$(rvm_prompt)%{$reset_color$fg[gray]%}:%1~%{$reset_color$bold_color$fg[green]%}%{$reset_color$fg[green]%}$(parse_git_branch)&gt;%{$reset_color%} '</pre>
<p>There are of course many more things you can do with zsh.  I have this and other tidbits in my <a href="http://github.com/krobertson/dotfiles">dotfiles repo</a> on Github.  And now that I think of it, have some stuff I haven&#8217;t checked in since I&#8217;m not in TextMate/Ruby/zsh all day.</p>
<div class="feedflare">
<a href="http://feeds.qgyen.net/~ff/krobertson?a=DlmXnnt20sI:6ANnVI854H4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=DlmXnnt20sI:6ANnVI854H4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=DlmXnnt20sI:6ANnVI854H4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/krobertson?i=DlmXnnt20sI:6ANnVI854H4:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://invalidlogic.com/2010/09/16/you-got-rvm-and-git-in-my-command-prompt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://invalidlogic.com/2010/09/16/you-got-rvm-and-git-in-my-command-prompt/</feedburner:origLink></item>
		<item>
		<title>The Future of Papercut</title>
		<link>http://feeds.qgyen.net/~r/krobertson/~3/X64cp9N5r_s/</link>
		<comments>http://invalidlogic.com/2010/09/08/the-future-of-papercut/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 19:50:50 +0000</pubDate>
		<dc:creator>krobertson</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://invalidlogic.com/?p=596</guid>
		<description><![CDATA[It has been three months since I moved to doing Ruby full time, and it has been three months since I&#8217;ve written any .NET. This is a trend that will likely continue as I&#8217;m no longer writing .NET day to day. However, I don&#8217;t want one of my babies, Papercut, to die a neglectful death. [...]]]></description>
			<content:encoded><![CDATA[<p>It has been three months since I moved to doing Ruby full time, and it has been three months since I&#8217;ve written any .NET.  This is a trend that will likely continue as I&#8217;m no longer writing .NET day to day.  However, I don&#8217;t want one of my babies, <a href="http://papercut.codeplex.com/">Papercut</a>, to die a neglectful death.</p>
<p>Papercut isn&#8217;t really a large codebase and doesn&#8217;t have a laundry list of problems or anything, but it does have a list of feature requests that I know I won&#8217;t have the time to get to.  So I am looking for someone to take over maintenance of it.</p>
<p>With open source, it is easy enough for anyone to fork the code and run with it, but people still tend to be drawn to the official codebase and site for the latest updates.  The problem with looking for people to take over is that you can&#8217;t necessarily hand it off to just anyone.  In many ways, it is like applying for a job.  You can&#8217;t just say &#8220;ohh, I&#8217;ll do it!&#8221; since the bigger question is are you capable of doing it.</p>
<p>The ideal person would be someone who:</p>
<ul>
<li>Has experience with .NET socket development.</li>
<li>Understands the SMTP protocol, or can read and make sense of protocol RFCs.</li>
<li>Understands MIME format enough to work with it.</li>
<li>Be good to have a basic understanding of asynchronous IO and threading/managed thread pools.</li>
</ul>
<p>This isn&#8217;t an absolute list, but more of a wish list or a list of what you should expect.  Most of the feature requests for Papercut involve extending it to support more MIME functionality and bugs will often require troubleshooting the networking code or threading, which can be very different than traditional web or GUI apps.</p>
<p>Anyone who is interested, please email me at ken@invalidlogic.com.</p>
<div class="feedflare">
<a href="http://feeds.qgyen.net/~ff/krobertson?a=X64cp9N5r_s:0Xb28Liojl8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=X64cp9N5r_s:0Xb28Liojl8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=X64cp9N5r_s:0Xb28Liojl8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/krobertson?i=X64cp9N5r_s:0Xb28Liojl8:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://invalidlogic.com/2010/09/08/the-future-of-papercut/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://invalidlogic.com/2010/09/08/the-future-of-papercut/</feedburner:origLink></item>
		<item>
		<title>A Personal Retrospective</title>
		<link>http://feeds.qgyen.net/~r/krobertson/~3/nrY8xcBQ7Yo/</link>
		<comments>http://invalidlogic.com/2010/08/30/a-personal-retrospective/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 16:05:10 +0000</pubDate>
		<dc:creator>krobertson</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://invalidlogic.com/?p=592</guid>
		<description><![CDATA[I&#8217;d heard of people applying agile methodologies to their lives through things like personal kanban. I recently decided to apply another practice: retrospectives. Sounds simple, but when I thought about it, it really isn&#8217;t that often that I sit down and take stock of where I am and have action items at the end of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d heard of people applying agile methodologies to their lives through things like personal kanban.  I recently decided to apply another practice: retrospectives.  Sounds simple, but when I thought about it, it really isn&#8217;t that often that I sit down and take stock of where I am and have action items at the end of it.</p>
<p>The idea is simple.  Get away from distractions for a while.  Grab a whiteboard, piece of paper, or whatever you have.  Mark out three columns.  In the first, list the things that have been going well or that you like about where you are in life.  In the second, list the things you don&#8217;t like.  And in the final, come up with a resolution or first action item for each of the things you don&#8217;t like.</p>
<p>The goal of it is to acknowledge what has been going well, figure out what hasn&#8217;t, and get the ball rolling on tackling those.  Just like you do with your projects!</p>
<p>I am by no means an agile expert, or a super organized, together person.  But I was thinking about how it has been 3 months since making a rather big career change and wanted to take stock of how things have gone, but personally and not just professionally.</p>
<p>Try it for yourself and see how it goes.  For me, I think a 3 month rotation is about right.</p>
<div class="feedflare">
<a href="http://feeds.qgyen.net/~ff/krobertson?a=nrY8xcBQ7Yo:iQzOxJPtQbo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=nrY8xcBQ7Yo:iQzOxJPtQbo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=nrY8xcBQ7Yo:iQzOxJPtQbo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/krobertson?i=nrY8xcBQ7Yo:iQzOxJPtQbo:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://invalidlogic.com/2010/08/30/a-personal-retrospective/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://invalidlogic.com/2010/08/30/a-personal-retrospective/</feedburner:origLink></item>
		<item>
		<title>Presenting on Chef at next SacRuby Meetup</title>
		<link>http://feeds.qgyen.net/~r/krobertson/~3/wbgtCt2Xk-M/</link>
		<comments>http://invalidlogic.com/2010/08/13/presenting-on-chef-at-next-sacruby-meetup/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 17:52:12 +0000</pubDate>
		<dc:creator>krobertson</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[chef]]></category>
		<category><![CDATA[meetup]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://invalidlogic.com/?p=583</guid>
		<description><![CDATA[If you are in the Sacramento area next Thursday, come by the SacRuby Meetup! I will be presenting on using Chef for server and configuration management. I will be talking about using Chef on a large scale with a cluster of servers, all the way down to aiding management of a single server. If you [...]]]></description>
			<content:encoded><![CDATA[<p>If you are in the Sacramento area next Thursday, come by the SacRuby Meetup!  I will be presenting on using <a href="http://wiki.opscode.com/">Chef</a> for server and configuration management.  I will be talking about using Chef on a large scale with a cluster of servers, all the way down to aiding management of a single server.</p>
<p>If you are in the area, please stop by!  Pizza and refreshments are normally available.</p>
<blockquote><p>Meetup details: <a href="http://www.meetup.com/sacruby/calendar/14122667/">http://www.meetup.com/sacruby/calendar/14122667/</a><br />
Date: Thursday, August 19th<br />
Time: 7:30pm til we go home<br />
Location: 10911 White Rock Road, Rancho Cordova, CA 95670  (see details for number to call to get building access)</p></blockquote>
<p>The main talk starts at 7:30, however we will also have a Ruby Clinic starting at 6:30.  Bring your questions, problems, or other issues in and we&#8217;ll try to help you out.</p>
<div class="feedflare">
<a href="http://feeds.qgyen.net/~ff/krobertson?a=wbgtCt2Xk-M:Uzo-_ez1lck:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=wbgtCt2Xk-M:Uzo-_ez1lck:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=wbgtCt2Xk-M:Uzo-_ez1lck:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/krobertson?i=wbgtCt2Xk-M:Uzo-_ez1lck:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://invalidlogic.com/2010/08/13/presenting-on-chef-at-next-sacruby-meetup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://invalidlogic.com/2010/08/13/presenting-on-chef-at-next-sacruby-meetup/</feedburner:origLink></item>
		<item>
		<title>Using server aliases with Capistrano output</title>
		<link>http://feeds.qgyen.net/~r/krobertson/~3/_HkeH8s8ZA8/</link>
		<comments>http://invalidlogic.com/2010/07/15/using-server-aliases-with-capistrano-output/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 16:31:17 +0000</pubDate>
		<dc:creator>krobertson</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://invalidlogic.com/?p=572</guid>
		<description><![CDATA[One thing we often run into without deploys is &#8220;what server is that executing on?&#8221; After updating code, we actually a fairly elaborate process to remove servers from load balancing, restart, wait for load to drop off, then add it back in to load balancing. We also just use the AWS hostnames rather than our [...]]]></description>
			<content:encoded><![CDATA[<p>One thing we often run into without deploys is &#8220;what server is that executing on?&#8221;  After updating code, we actually a fairly elaborate process to remove servers from load balancing, restart, wait for load to drop off, then add it back in to load balancing.  We also just use the AWS hostnames rather than our own since our server list pretty much changes weekly.  Wouldn&#8217;t it be nice to have the ouptut show &#8220;app10&#8243; instead of &#8220;ec2-123-123-123-123.compute-1.amazonaws.com&#8221;.</p>
<p>Luckily adding an alias to Capistrano is pretty easy!</p>
<pre class="brush: ruby;">class Capistrano::ServerDefinition
  def to_s
    @to_s ||= begin
      s = @options[:alias] || host
      s = &quot;#{user}@#{s}&quot; if user
      s = &quot;#{s}:#{port}&quot; if port &amp;&amp; port != 22
      s
    end
  end
end</pre>
<p>Simply add that to your deploy.rb, or another file that is included with your recipes for utility methods.  It works simply by overriding the ServerDefinition.to_s method, which is used for the logger output.  The only change to the default method is line 4.</p>
<p>Then for your role definitions:</p>
<pre class="brush: ruby; light: true;">role :app, 'ec2-123-123-123-123.compute-1.amazonaws.com', :alias =&gt; 'app10'</pre>
<p>Then you see much better output:</p>
<pre class="brush: plain; light: true;"> ** [out :: app10] Alive</pre>
<div class="feedflare">
<a href="http://feeds.qgyen.net/~ff/krobertson?a=_HkeH8s8ZA8:yS9h2Mu3x7A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=_HkeH8s8ZA8:yS9h2Mu3x7A:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=_HkeH8s8ZA8:yS9h2Mu3x7A:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/krobertson?i=_HkeH8s8ZA8:yS9h2Mu3x7A:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://invalidlogic.com/2010/07/15/using-server-aliases-with-capistrano-output/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://invalidlogic.com/2010/07/15/using-server-aliases-with-capistrano-output/</feedburner:origLink></item>
		<item>
		<title>Tracing controller filters in New Relic</title>
		<link>http://feeds.qgyen.net/~r/krobertson/~3/njH3EigUoXQ/</link>
		<comments>http://invalidlogic.com/2010/06/18/tracing-controller-filters-in-new-relic/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 15:44:34 +0000</pubDate>
		<dc:creator>krobertson</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[new relic]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://invalidlogic.com/?p=565</guid>
		<description><![CDATA[Yet another New Relic goodie today. One thing I was kind of surprised that New Relic didn&#8217;t already have instrumentation around out of the box was controller filters. We had noticed some occasional gaps after the main processing of an action, where all the templates would be rendered, but the execution still went on for [...]]]></description>
			<content:encoded><![CDATA[<p>Yet another New Relic goodie today.</p>
<p>One thing I was kind of surprised that New Relic didn&#8217;t already have instrumentation around out of the box was controller filters.  We had noticed some occasional gaps after the main processing of an action, where all the templates would be rendered, but the execution still went on for a few hundred milliseconds (or sometimes more).  Finally, it dawned that it is probably one of the after_filters.</p>
<p>So we aded tracing around filter execution, and lo and behold, we had one that from time to time would misbehave and execute slow.</p>
<p>To instrument the filters, the simplest way seemed to be by tacking on to the &#8216;call&#8217; method of each filter type.</p>
<pre class="brush: ruby;">::ActionController::Filters::BeforeFilter.class_eval do
  add_method_tracer :call, 'Custom/BeforeFilter/#{method.to_s}'
end

::ActionController::Filters::AfterFilter.class_eval do
  add_method_tracer :call, 'Custom/AfterFilter/#{method.to_s}'
end

::ActionController::Filters::AroundFilter.class_eval do
  add_method_tracer :call, 'Custom/AroundFilter/#{method.to_s}'
end</pre>
<p>And one more goodie while I&#8217;m looking at my list of New Relic tracers&#8230; ActionMailer.  Have seen this time and time again, that sending email synchronously with the HTTP request can drastically slow down performance.  SMTP server can be slow, can be mailing a number of recipients, submission fails, etc.  For us, most email delivery is asynchronous in the background, but one or two are triggered in line.</p>
<p>To trace ActionMailer delivery:</p>
<pre class="brush: ruby;">::ActionMailer::Base.class_eval do
  add_method_tracer :deliver!, 'Custom/ActionMailer/deliver!'
end</pre>
<p>Will maybe sometime look at email processing more, but email templates are often far simpler and their action methods do less loading.</p>
<div class="feedflare">
<a href="http://feeds.qgyen.net/~ff/krobertson?a=njH3EigUoXQ:zIVYolV4qXg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=njH3EigUoXQ:zIVYolV4qXg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=njH3EigUoXQ:zIVYolV4qXg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/krobertson?i=njH3EigUoXQ:zIVYolV4qXg:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://invalidlogic.com/2010/06/18/tracing-controller-filters-in-new-relic/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://invalidlogic.com/2010/06/18/tracing-controller-filters-in-new-relic/</feedburner:origLink></item>
		<item>
		<title>Tracing Cache Money transactions through New Relic</title>
		<link>http://feeds.qgyen.net/~r/krobertson/~3/X6z6Xxzrnlc/</link>
		<comments>http://invalidlogic.com/2010/06/15/tracing-cache-money-transactions-through-new-relic/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 16:03:41 +0000</pubDate>
		<dc:creator>krobertson</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[new relic]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://invalidlogic.com/?p=558</guid>
		<description><![CDATA[At Involver, we&#8217;ve been starting to make heavy use of New Relic to start monitoring performance and track down bottlenecks. I&#8217;ve been working to add method tracers around components that utilize external APIs or services, and some of the major components we leverage to know how much time is spent in various areas. We use [...]]]></description>
			<content:encoded><![CDATA[<p>At Involver, we&#8217;ve been starting to make heavy use of <a href="http://newrelic.com/">New Relic</a> to start monitoring performance and track down bottlenecks.  I&#8217;ve been working to add method tracers around components that utilize external APIs or services, and some of the major components we leverage to know how much time is spent in various areas.</p>
<p>We use <a href="http://github.com/nkallen/cache-money">Cache Money</a>, a gem that helps transparently cache models in Memcached.  Out of the box, New Relic supports tracing calls for Memcached, however on traces we&#8217;d see a long list of Memcached calls but no information as to which request they were associated with.</p>
<p>For a lot of our additional traces, we&#8217;ve added an rpm_extras.rb file.  To include tracing for Cache Money, just need to define it as follows:</p>
<pre class="brush: ruby;">::ActiveRecord::Base.class_eval do
  class &lt;&lt; self
    add_method_tracer :transaction, 'Custom/CacheMoney/transaction'
    add_method_tracer :find_every, 'Custom/CacheMoney/find_every'
    add_method_tracer :find_from_ids, 'Custom/CacheMoney/find_from_ids'
  end
end</pre>
<p>New Relic itself uses add_method_tracer around transaction and find_by_sql, however Cache Money works by alias_method_chaining transaction, find_every, and find_from_ids.</p>
<p>One thing worth noting is that since both New Relic and Cache Money make use of transaction, order of loading could be important.  In our environment.rb, we load our rpm_extras.rb in the after_initialize block.  When RPM is loaded, it wraps the actual ActiveRecord#transaction call, then Cache Money chains it, and our own tracer wraps the chained call.</p>
<p>Initially, I tried putting the tracer around Cache Money&#8217;s own transaction_with_cache_transaction, however that didn&#8217;t show up in traces.</p>
<div class="feedflare">
<a href="http://feeds.qgyen.net/~ff/krobertson?a=X6z6Xxzrnlc:Ul9qk8KPWro:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=X6z6Xxzrnlc:Ul9qk8KPWro:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/krobertson?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.qgyen.net/~ff/krobertson?a=X6z6Xxzrnlc:Ul9qk8KPWro:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/krobertson?i=X6z6Xxzrnlc:Ul9qk8KPWro:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://invalidlogic.com/2010/06/15/tracing-cache-money-transactions-through-new-relic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://invalidlogic.com/2010/06/15/tracing-cache-money-transactions-through-new-relic/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.370 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-12-02 12:24:43 --><!-- Compression = gzip -->

