<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://clint-hill.com/wp-atom.php">
	<title type="text">Clint Hill</title>
	<subtitle type="text">your everyday nerd</subtitle>

	<updated>2009-01-02T18:00:01Z</updated>
	<generator uri="http://wordpress.org/" version="2.6.1">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://clint-hill.com" />
	<id>http://clint-hill.com/feed/atom/</id>
	

			<link rel="self" href="http://feeds.feedburner.com/ClintHill" type="application/atom+xml" /><entry>
		<author>
			<name>clinthill</name>
						<uri>http://clint-hill.com</uri>
					</author>
		<title type="html"><![CDATA[So you made your website in 5 hours - nobody cares]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/ClintHill/~3/501138609/" />
		<id>http://clint-hill.com/?p=246</id>
		<updated>2009-01-02T18:00:01Z</updated>
		<published>2009-01-02T18:00:00Z</published>
		<category scheme="http://clint-hill.com" term="Code" /><category scheme="http://clint-hill.com" term="Life" />		<summary type="html"><![CDATA[Nobody should care.
I was doing my usual reading this morning and I started to recognize a pattern. Not just this morning, but a pattern that has been occurring over the last year or more. 
It goes like this:

Developer finds a new web framework
Framework espouses really quick development time
Developer creates a really stupid application based on [...]]]></summary>
		<content type="html" xml:base="http://clint-hill.com/2009/01/02/so-you-made-your-website-in-5-hours-nobody-cares/">&lt;p&gt;Nobody &lt;strong&gt;should&lt;/strong&gt; care.&lt;/p&gt;
&lt;p&gt;I was doing my usual reading this morning and I started to recognize a pattern. Not just this morning, but a pattern that has been occurring over the last year or more. &lt;/p&gt;
&lt;p&gt;It goes like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Developer finds a new web framework&lt;/li&gt;
&lt;li&gt;Framework espouses really quick development time&lt;/li&gt;
&lt;li&gt;Developer creates a really stupid application based on a stupid idea&lt;/li&gt;
&lt;li&gt;Developer submits a link to their new stupid app to [Reddit,Digg,Hacker News]&lt;/li&gt;
&lt;li&gt;Developer says &amp;#8220;Look at me, I did this in 5 hours&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I understand why this happens. I have done it myself. Developers do this because there are websites out there that have been made in just hours or days that turned out to be hugely profitable. The allure is tremendous. &lt;/p&gt;
&lt;p&gt;Here is the part that gets me: &lt;strong&gt;There are so many bigger problems out there.&lt;/strong&gt; Money can be made solving these bigger problems too and society would benefit. Why waste the energy on a 5 hour site that scrapes twitter for people who type &amp;#8220;oops&amp;#8221;? I&amp;#8217;ll admit to a little bit of weird people-watching interest, but seriously aren&amp;#8217;t there better things to work on? &lt;/p&gt;
&lt;p&gt;Take for example healthcare and education. &lt;/p&gt;
&lt;p&gt;In healthcare there are still hospitals and clinics using paper medical records. Some still schedule your visit using Excel spreadsheets. I know first hand that there are 5 to 10 problems that are just unanswered from the software industry. There are standards galore. There are vendors, all of which sell the &lt;em&gt;one-solution-to-fix-them-all&lt;/em&gt; products. Here&amp;#8217;s the catch, they are all expensive and don&amp;#8217;t do what they are advertising. And if you do buy the product you have to change the way you do business to fit the way the software works. If you ever want to know why healthcare gets expensive - start looking at the way the hospitals and clinics have to do business (not just health &lt;strong&gt;care&lt;/strong&gt;). It&amp;#8217;s interesting to say the least.&lt;/p&gt;
&lt;p&gt;Education has it&amp;#8217;s own set of problems. Take for example that in the United States some schools and state agencies have yet to fully analyze data for grades and attendance because they don&amp;#8217;t have software to do so. Even though there is legislation that requires them to collect this data in order to evaluate performance which will in turn determine funding for schools. Some agencies can&amp;#8217;t even properly coordinate data sharing because the schools are all doing different things with their information. There are tons of school information systems out there and standards as well - yet the problem still exists. Ever wonder why the U.S. doesn&amp;#8217;t do better with education at lower levels? Start looking at how schools analyze their performance based on grades and attendance.&lt;/p&gt;
&lt;p&gt;And these examples are tips to titanic icebergs (yep - ship sinkers). Meanwhile really smart developers are spending hours or days watching people on twitter type &amp;#8220;oops&amp;#8221; or building fart noise makers for the iPhone. And at the same time some feel they have the justification to wax poetic about the ails of the world. So why is it really that you aren&amp;#8217;t working on these bigger problems? Scared? This indeed is me challenging you.&lt;/p&gt;
&lt;p&gt;I just wonder what it would be like to see links submitted at the same rate these stupid apps are submitted that solve these bigger problems. Or at least see people saying they are trying. I can think of one argument that may stop some is that it doesn&amp;#8217;t sound fun. Those industries aren&amp;#8217;t exotic or even interesting. Well I would contend that if you love software, writing code and solving problems you have no argument. Your interest is in the code not the industry. Your pride is in the solving. Right?&lt;/p&gt;
&lt;p&gt;Say what you will about me and my &lt;em&gt;grandpa&lt;/em&gt; moment here - just don&amp;#8217;t overlook the &lt;strong&gt;real&lt;/strong&gt; problems out there.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ClintHill/~4/501138609" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://clint-hill.com/2009/01/02/so-you-made-your-website-in-5-hours-nobody-cares/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://clint-hill.com/2009/01/02/so-you-made-your-website-in-5-hours-nobody-cares/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://clint-hill.com/2009/01/02/so-you-made-your-website-in-5-hours-nobody-cares/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>clinthill</name>
						<uri>http://clint-hill.com</uri>
					</author>
		<title type="html"><![CDATA[Christmas gifts and memories]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/ClintHill/~3/494625313/" />
		<id>http://clint-hill.com/?p=244</id>
		<updated>2008-12-25T06:07:30Z</updated>
		<published>2008-12-25T06:07:28Z</published>
		<category scheme="http://clint-hill.com" term="Life" />		<summary type="html"><![CDATA[Madi is getting a guitar. Nola is getting a cupcake maker. Both of them are getting Leap Frog tag readers. Putting all of the gifts under the tree I had a thought. This doesn&#8217;t seem like that many gifts. It caught me off guard. Did I not put in enough effort this year for Christmas [...]]]></summary>
		<content type="html" xml:base="http://clint-hill.com/2008/12/25/christmas-gifts-and-memories/">&lt;p&gt;Madi is getting a guitar. Nola is getting a cupcake maker. Both of them are getting Leap Frog tag readers. Putting all of the gifts under the tree I had a thought. This doesn&amp;#8217;t seem like that many gifts. It caught me off guard. Did I not put in enough effort this year for Christmas gifts? &lt;/p&gt;
&lt;p&gt;Then I realized I was wrong. I had put in the effort. The difference is it just wasn&amp;#8217;t for Christmas presents. It wasn&amp;#8217;t the number of gifts under the tree. It was everything I had done this year to make wonderful memories for them to have for the rest of their life.&lt;/p&gt;
&lt;p&gt;Losses and sacrifices were plenty this year. Dad and GG past away. I lost a job for the first time in my life (laid off) and humbled myself enough to apply for unemployment. I gave up on building my own software company (temporarily). I put aside a lot of emotion to make sure I attended to my family. I wanted to make sure the girls weren&amp;#8217;t hurting the way I was. No regrets. I would do it again, over and over again.&lt;/p&gt;
&lt;p&gt;I realize it&amp;#8217;s not about providing a lot of presents at Christmas. My job as &amp;#8220;daddy&amp;#8221; is to provide a lifetime of memories for the girls. It&amp;#8217;s my job to make sure that everyday they get what is important. Fun, encouragement, confidence, discipline, a safe home and education. Those are just a few of the things that I am supposed to provide. &lt;/p&gt;
&lt;p&gt;My thought about the number of gifts under the tree is actually me trying to feel good about something. But that&amp;#8217;s misdirected. I should feel good about all of the things I did this year for them. &lt;a href="http://thehillboat.com"&gt;We bought a boat&lt;/a&gt; and started many traditions. Cruising under the London Bridge each trip out on the water. Ice cream sandwiches at the Hampton. There were things we did at home too. We made pigs out of coffee cans. Pool parties at Billy&amp;#8217;s house. Carved jack-o-lanterns on halloween. Football Sunday. Roasted marshmallows in the fire pit. Hung out in the garage waxing the boat. And twice this year I took the girls out to eat by myself. &lt;/p&gt;
&lt;p&gt;Those are the things that are important. Gifts are good, but memories are more important. And for Christmas it&amp;#8217;s important to make memories the girls will cherish. I think we&amp;#8217;re doing a good job. I&amp;#8217;m proud of all that. &lt;/p&gt;
&lt;p&gt;I know Dad would be too.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ClintHill/~4/494625313" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://clint-hill.com/2008/12/25/christmas-gifts-and-memories/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://clint-hill.com/2008/12/25/christmas-gifts-and-memories/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://clint-hill.com/2008/12/25/christmas-gifts-and-memories/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>clinthill</name>
						<uri>http://clint-hill.com</uri>
					</author>
		<title type="html"><![CDATA[Rails + Merb: When differences matter and when they don&#8217;t]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/ClintHill/~3/494122162/" />
		<id>http://clint-hill.com/?p=240</id>
		<updated>2008-12-24T16:17:07Z</updated>
		<published>2008-12-24T15:29:51Z</published>
		<category scheme="http://clint-hill.com" term="Code" />		<summary type="html"><![CDATA[Yesterday saw the announcement that Rails and Merb would merge.
I&#8217;ll let the blogosphere debate the benefit of the merging of the frameworks feature by feature. At first I was disappointed because I liked where Merb was going (and still is apparently). I use Rails everyday and am beginning to be slightly perturbed about the &#8220;opinionated&#8221; [...]]]></summary>
		<content type="html" xml:base="http://clint-hill.com/2008/12/24/rails-merb-when-differences-matter-and-when-they-dont/">&lt;p&gt;Yesterday saw the &lt;a href="http://weblog.rubyonrails.org/2008/12/23/merb-gets-merged-into-rails-3"&gt;announcement&lt;/a&gt; &lt;a href="http://yehudakatz.com/2008/12/23/rails-and-merb-merge/"&gt;that&lt;/a&gt; &lt;a href="http://splendificent.com/2008/12/the-merb-rails-merger-announcement-an-inside-opinion/"&gt;Rails&lt;/a&gt; &lt;a href="http://merbist.com/2008/12/23/rails-and-merb-merge/"&gt;and&lt;/a&gt; &lt;a href="http://brainspl.at/articles/2008/12/23/merb-is-rails"&gt;Merb&lt;/a&gt; would merge.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll let the blogosphere debate the benefit of the merging of the frameworks feature by feature. At first I was disappointed because I liked where Merb was going (and still is apparently). I use Rails everyday and am beginning to be slightly perturbed about the &amp;#8220;opinionated&amp;#8221; design. However, I wanted to comment on the bigger picture. The merging of different opinions and principles.&lt;/p&gt;
&lt;p&gt;The most refreshing part of this merge announcement is the notion that &amp;#8220;&lt;em&gt;warring tribes&lt;/em&gt;&amp;#8221; were able to join forces. I think this should not go unnoticed. How often do software projects with dramatic differences basically move in together? Not often. &lt;/p&gt;
&lt;p&gt;In my opinion that&amp;#8217;s because software developers are isolationists. We want to write frameworks that can live independent of other peoples junk. That way when problems arise it&amp;#8217;s the &lt;em&gt;other&lt;/em&gt; guys bad idea and not ours. On top of that we want to be the creator of the &lt;em&gt;Better Way&lt;/em&gt;&amp;trade;. And when we are opinionated about it, that makes us colorful. At least that has been the climate lately.&lt;/p&gt;
&lt;p&gt;Look at other debates on technology. Here are a few:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;REST vs. SOAP&lt;/li&gt;
&lt;li&gt;ODF vs. OOXML&lt;/li&gt;
&lt;li&gt;functional vs. imperative languages&lt;/li&gt;
&lt;li&gt;Vi vs. Emacs&lt;/li&gt;
&lt;li&gt;Mac vs. PC&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;How many of these are tired? What prevents some of these from just dropping their differences and combining their strengths? I have my opinion and it involves ego and pride, but I&amp;#8217;ll keep it to myself.&lt;/p&gt;
&lt;p&gt;Sure you might think it utopian and idealistic for some of these larger technologies to merge, but I find it refreshing to at least consider it. Think of this: how many new ideas are being lost because the differing ideas aren&amp;#8217;t being brought together side by side? [UPDATE] I really enjoy &lt;a href="http://www.loudthinking.com/posts/36-work-on-what-you-use-and-share-the-rest"&gt;this&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;That the rift in many ways was a false one. Founded on lack of communication and a mistaken notion that because we care about working on different things, we must somehow be in opposition.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Differences matter when the problem calls for it. That&amp;#8217;s inherit in every design. In some cases you have to use X because Y doesn&amp;#8217;t solve the problem. But differences don&amp;#8217;t matter when you are looking for new ideas. I think Rails + Merb is a new idea.&lt;/p&gt;
&lt;p&gt;Progress does not come from solving the same problem with the same solution over and over again. There is a word for that. Doing the same thing over and over again expecting different results is what again &amp;#8230;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ClintHill/~4/494122162" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://clint-hill.com/2008/12/24/rails-merb-when-differences-matter-and-when-they-dont/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://clint-hill.com/2008/12/24/rails-merb-when-differences-matter-and-when-they-dont/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://clint-hill.com/2008/12/24/rails-merb-when-differences-matter-and-when-they-dont/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>clinthill</name>
						<uri>http://clint-hill.com</uri>
					</author>
		<title type="html"><![CDATA[When floats don&#8217;t float]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/ClintHill/~3/489289684/" />
		<id>http://clint-hill.com/?p=232</id>
		<updated>2008-12-19T03:53:37Z</updated>
		<published>2008-12-19T03:44:39Z</published>
		<category scheme="http://clint-hill.com" term="Code" />		<summary type="html"><![CDATA[I had the pleasure/pain of discovering first hand the issue of interpretation when it comes to data type intent. The Rails migration feature is one of the better features. To be able to quickly outline the schema of a table and produce it in a database from a rake task is the definition of love [...]]]></summary>
		<content type="html" xml:base="http://clint-hill.com/2008/12/19/when-floats-dont-float/">&lt;p&gt;I had the pleasure/pain of discovering first hand the issue of interpretation when it comes to data type intent. The Rails migration feature is one of the better features. To be able to quickly outline the schema of a table and produce it in a database from a rake task is the definition of love for a developer. It goes like this - I want to use my language (Ruby) and I want to create this table in the fewest amount of keystrokes possible:&lt;/p&gt;
&lt;pre&gt;
create_table "student" do |table|
  table.string :name
  table.integer :zip
  table.float :gpa
end
&lt;/pre&gt;
&lt;p&gt;Now from the command line I run &lt;code&gt;rake db:migrate&lt;/code&gt; and blamo - table made. No SQL statements. And I can create this table on any database I choose. SQLite, MySQL, Oracle, Postgres and unfortunately SQL Server.&lt;/p&gt;
&lt;p&gt;Except when the world crashes down around you and your float values are being returned as integers. Yep. The student that only got 0.59 GPA (rough year with no electives) is now getting a 0 GPA because your database driver says so.&lt;/p&gt;
&lt;p&gt;What?&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s right. The database driver says so. In this case Oracle JDBC. Well it&amp;#8217;s not all Oracle&amp;#8217;s fault. They had a lot of help from IBM and WebSphere. Here&amp;#8217;s how this all panned out.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I performed the migration to an Oracle database using the regular &lt;a href="http://ruby-oci8.rubyforge.org/en/"&gt;Ruby OCI8&lt;/a&gt; driver.&lt;/li&gt;
&lt;li&gt;Fire up the Rails app inside a WebSphere server using JRuby and connecting to the database with JNDI Oracle JDBC driver.&lt;/li&gt;
&lt;li&gt;Created a few records with the correct float values (0.24, 1.2, etc)&lt;/li&gt;
&lt;li&gt;Look at records in DB and see 0.24, 1.2 etc.&lt;/li&gt;
&lt;li&gt;Look at records from Rails app and see 0, 0 etc.&lt;/li&gt;
&lt;li&gt;Profit?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hmm&amp;#8230; That is rough. The app works. I know it. It worked all day long on my machine. Ha. Famous last words.&lt;/p&gt;
&lt;p&gt;So after days of debugging (yes I said days) I finally found the problem. It was all in the interpretation. Ruby OCI8 read my &lt;code&gt;table.float :gpa&lt;/code&gt; statement and said:&lt;/p&gt;
&lt;p&gt;&amp;#8220;oh - he wants a NUMBER column named &amp;#8216;gpa&amp;#8217;&amp;#8221;&lt;/p&gt;
&lt;p&gt;Well OK that works. Oracle defaults that way anyways. Oracle will recognize that as a field that can store 1000 or 1000.10. No problem. And the ActiveRecord JDBC adapter will receive that schema and say:&lt;/p&gt;
&lt;p&gt;&amp;#8220;oh - this column is a NUMBER with no precision or scale so we&amp;#8217;ll default to decimal like Oracle does&amp;#8221;&lt;/p&gt;
&lt;p&gt;The problem occurs when you ask WebSphere to provide you the Oracle JDBC driver through JNDI and let WebSphere wrap it with it&amp;#8217;s &lt;strong&gt;helpers&lt;/strong&gt;. The irony. See the DataStoreHelpers will tell the ActiveRecord JDBC adapter that the column is actually a NUMBER(22) with a scale of 0. What&amp;#8217;s wrong with that you say? This is what&amp;#8217;s wrong (from activerecord-jdbc-adapter/lib/jdbc_adapter/jdbc_oracle.rb):&lt;/p&gt;
&lt;pre&gt;
def simplified_type(field_type)
  case field_type
  when /^number\(1\)$/i                  : :boolean
  when /char/i                           : :string
  when /float|double/i                   : :float
  when /int/i                            : :integer
  when /num|dec|real/i                   : &lt;strong&gt;@scale == 0&lt;/strong&gt; ? :integer : :decimal
  when /date|time/i                      : :datetime
  when /clob/i                           : :text
  when /blob/i                           : :binary
  end
end
&lt;/pre&gt;
&lt;p&gt;Yikes. If the scale is 0 the &lt;a href="http://jruby-extras.rubyforge.org/activerecord-jdbc-adapter/"&gt;ActiveRecord JDBC adapter&lt;/a&gt; says it&amp;#8217;s an integer. Rightly so. So now a value of 0.24 is 0. Shit. Why would WebSphere Oracle DataStoreHelpers do this? If the data type is NUMBER with no precision and no scale, why would it create a precision of 22 and a scale of 0? Is that interpretation?&lt;/p&gt;
&lt;p&gt;And the final kick in the pants is - if you run the migrations using JRuby and the ActiveRecord JDBC adapter - it puts the data type as FLOAT(63). Ouch.&lt;/p&gt;
&lt;p&gt;I don&amp;#8217;t know how to end this post. There is no morale. I just wanted to share my pain.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ClintHill/~4/489289684" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://clint-hill.com/2008/12/19/when-floats-dont-float/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://clint-hill.com/2008/12/19/when-floats-dont-float/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://clint-hill.com/2008/12/19/when-floats-dont-float/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>clinthill</name>
						<uri>http://clint-hill.com</uri>
					</author>
		<title type="html"><![CDATA[Chicken/Egg problem with Siffer]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/ClintHill/~3/487663832/" />
		<id>http://clint-hill.com/?p=230</id>
		<updated>2008-12-17T14:29:33Z</updated>
		<published>2008-12-17T14:29:32Z</published>
		<category scheme="http://clint-hill.com" term="Code" />		<summary type="html"><![CDATA[I made the switch to Rack for my ZIS/Agents in Siffer. I&#8217;m very pleased with it so far. I think as far as architecture goes it makes the most sense. Rack provides the &#8220;guts&#8221; I need. 
However, I&#8217;m mentally stuck on how the Agents will send outbound HTTP requests. Rack is designed around receiving requests [...]]]></summary>
		<content type="html" xml:base="http://clint-hill.com/2008/12/17/chickenegg-problem-with-siffer/">&lt;p&gt;I made the &lt;a href="http://clint-hill.com/2008/12/11/siffer-structural-change/"&gt;switch&lt;/a&gt; to &lt;a href="http://rack.rubyforge.org/"&gt;Rack&lt;/a&gt; for my ZIS/Agents in Siffer. I&amp;#8217;m very pleased with it so far. I think as far as architecture goes it makes the most sense. Rack provides the &amp;#8220;guts&amp;#8221; I need. &lt;/p&gt;
&lt;p&gt;However, I&amp;#8217;m mentally stuck on how the Agents will send outbound HTTP requests. Rack is designed around receiving requests and handing back responses. Not necessarily sending requests. The SIF architecture protocol is designed for sending/receiving requests by ZISs and Agents.&lt;/p&gt;
&lt;p&gt;I mocked up a Net::HTTP snippet inside the Agent class to act as a request sender, specifically to post data to a ZIS/Server. OK - perfect. But now I&amp;#8217;m receiving the response inside this snippet and not inside the Rack.call method which would process the ACK response message accordingly. I guess I could modify the Request class that I normally intended to handle the Rack.call(env) to now handle this Net::HTTP response. It&amp;#8217;s not a terrible thing - it&amp;#8217;s just not as clean as I had hoped.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ClintHill/~4/487663832" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://clint-hill.com/2008/12/17/chickenegg-problem-with-siffer/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://clint-hill.com/2008/12/17/chickenegg-problem-with-siffer/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://clint-hill.com/2008/12/17/chickenegg-problem-with-siffer/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>clinthill</name>
						<uri>http://clint-hill.com</uri>
					</author>
		<title type="html"><![CDATA[Google Analytics and new site template]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/ClintHill/~3/485701515/" />
		<id>http://clint-hill.com/?p=228</id>
		<updated>2008-12-15T16:28:16Z</updated>
		<published>2008-12-15T16:28:15Z</published>
		<category scheme="http://clint-hill.com" term="Code" />		<summary type="html"><![CDATA[I made a change to my site template (WordPress theme) a week or so ago. Everything was cool. Then I noticed that nobody was visiting my site. I knew this because I use Google Analytics to track visitors. All the sudden I was at 0. Hmmm &#8230;
I neglected to add the script required for Google [...]]]></summary>
		<content type="html" xml:base="http://clint-hill.com/2008/12/15/google-analytics-and-new-site-template/">&lt;p&gt;I made a change to my site template (WordPress theme) a week or so ago. Everything was cool. Then I noticed that nobody was visiting my site. I knew this because I use Google Analytics to track visitors. All the sudden I was at 0. Hmmm &amp;#8230;&lt;/p&gt;
&lt;p&gt;I neglected to add the script required for Google Analytics to run. You have to update the theme template to include the script. &lt;/p&gt;
&lt;p&gt;I wrote this for my future self, to remind that jackass that he must update his scripts when he changes themes.&lt;/p&gt;
&lt;p&gt;Dork.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ClintHill/~4/485701515" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://clint-hill.com/2008/12/15/google-analytics-and-new-site-template/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://clint-hill.com/2008/12/15/google-analytics-and-new-site-template/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://clint-hill.com/2008/12/15/google-analytics-and-new-site-template/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>clinthill</name>
						<uri>http://clint-hill.com</uri>
					</author>
		<title type="html"><![CDATA[Ruby Bat Signal]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/ClintHill/~3/482807826/" />
		<id>http://clint-hill.com/?p=226</id>
		<updated>2008-12-12T15:55:13Z</updated>
		<published>2008-12-12T15:55:12Z</published>
		<category scheme="http://clint-hill.com" term="Code" /><category scheme="http://clint-hill.com" term="Work" />		<summary type="html"><![CDATA[At work I have an opportunity (a great one I think) to make a case for choosing Ruby as a language and for Rails as a web framework. But the whole development staff is rooted in Java. 
On a few projects we have chosen Rails and have had the success we hoped for. We went [...]]]></summary>
		<content type="html" xml:base="http://clint-hill.com/2008/12/12/ruby-bat-signal/">&lt;p&gt;At work I have an opportunity (a great one I think) to make a case for choosing Ruby as a language and for Rails as a web framework. But the whole development staff is rooted in Java. &lt;/p&gt;
&lt;p&gt;On a few projects we have chosen Rails and have had the success we hoped for. We went against standards for a bit, but now we have our Rails projects deploying to WebSphere with JRuby and no one is the wiser. Or upset even. We would very much like to continue getting approval to use Ruby and Ruby on Rails.&lt;/p&gt;
&lt;p&gt;We are in a position to permeate Ruby and get more projects based on it, not necessarily all with Ruby on Rails. However, very high up managers are muttering things about Grails. And I guess for very good reason. Groovy is a very Java like language and it would all fit. Seamlessly. They say.&lt;/p&gt;
&lt;p&gt;The opportunity I have is to write up arguments for Ruby. Specifically I have been asked to make a quick hit-list outlining benefits of Ruby and Ruby on Rails.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m asking for help. Here is the Bat Signal.&lt;/p&gt;
&lt;p&gt;Give me your &lt;strong&gt;facts&lt;/strong&gt;. Tell me where you have read things &lt;strong&gt;proving&lt;/strong&gt; benefits of choosing Ruby and Ruby on Rails. Data that shows how Ruby has made development process better, time to market shorter, enhanced quality of code, eased project management, transitioning staff was easy, language momentum in the industry and whatever else.  Give me the arguments in the context of using Ruby on Rails for building applications.&lt;/p&gt;
&lt;p&gt;Remember - you&amp;#8217;re not selling me - you&amp;#8217;re selling my boss. Your boss. Anyone in a position of authority over the tools developers use.  &lt;/p&gt;
&lt;p&gt;Here is what I don&amp;#8217;t want. Specifically things that start with these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#8220;I think &amp;#8230;&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;I believe &amp;#8230;&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;I&amp;#8217;ve heard &amp;#8230;&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;#8217;s all crap. Won&amp;#8217;t work. I want &lt;strong&gt;facts&lt;/strong&gt;. Studies, white papers and provable anecdotal evidence. &lt;a href="http://www.zedshaw.com/rants/programmer_stats.html"&gt;Stats rock&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I also don&amp;#8217;t want suggestions like these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#8220;Use Python because &amp;#8230;&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;Haskell is better because &amp;#8230;&amp;#8221;&lt;/li&gt;
&lt;li&gt;&amp;#8220;Real men use Lisp &amp;#8230;&amp;#8221;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to get into those kinds of debates you can go to Reddit. If you believe I&amp;#8217;m delusional for liking Ruby and want to suggest other languages - maybe next time. Right now Ruby is the target. I&amp;#8217;m cool with other languages so we can chat later.&lt;/p&gt;
&lt;p&gt;And don&amp;#8217;t just say:&lt;/p&gt;
&lt;p&gt;&amp;#8220;37 signals uses it for all of their products.&amp;#8221;&lt;/p&gt;
&lt;p&gt;I know. That&amp;#8217;s not what I&amp;#8217;m after. I want to know your experience and knowledge. Big companies using it in situations where real money and services are involved. Real facts (not that 37 signals is some imaginary piece of anti-matter). &lt;/p&gt;
&lt;p&gt;So give it to me. Help me out. What would you tell your boss if you had the chance?&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ClintHill/~4/482807826" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://clint-hill.com/2008/12/12/ruby-bat-signal/#comments" thr:count="6" />
		<link rel="replies" type="application/atom+xml" href="http://clint-hill.com/2008/12/12/ruby-bat-signal/feed/atom/" thr:count="6" />
		<thr:total>6</thr:total>
	<feedburner:origLink>http://clint-hill.com/2008/12/12/ruby-bat-signal/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>clinthill</name>
						<uri>http://clint-hill.com</uri>
					</author>
		<title type="html"><![CDATA[Siffer - Structural change]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/ClintHill/~3/481677145/" />
		<id>http://clint-hill.com/?p=218</id>
		<updated>2008-12-11T14:03:19Z</updated>
		<published>2008-12-11T13:59:43Z</published>
		<category scheme="http://clint-hill.com" term="Code" />		<summary type="html"><![CDATA[I&#8217;ve been working on Siffer quite a bit lately and it&#8217;s mostly due to a design change I made.
Initially I thought I was going to create this system where the Zone Integration Servers were going to be Ruby on Rails applications. Then Agents would be small Ruby applications that use ActiveResource to move data etc. [...]]]></summary>
		<content type="html" xml:base="http://clint-hill.com/2008/12/11/siffer-structural-change/">&lt;p&gt;I&amp;#8217;ve been working on Siffer quite a bit lately and it&amp;#8217;s mostly due to a design change I made.&lt;/p&gt;
&lt;p&gt;Initially I thought I was going to create this system where the Zone Integration Servers were going to be Ruby on Rails applications. Then Agents would be small Ruby applications that use ActiveResource to move data etc. Well this could have worked and maybe would have had nice elegant features. However, I was finding it difficult to coordinate all of that and also make it easy to implement. The &amp;#8220;how-to&amp;#8221; document would have looked like a document on building a Ruby on Rails application. Bleh. &lt;/p&gt;
&lt;p&gt;So, with quite a bit of code already in the can, I dumped it. Now I&amp;#8217;m going with a completely Rack based solution. Servers and Agents will be Rack applications and the they will all be managed by a Ruby on Rails website (maybe Merb  &amp;#8230; yah maybe). With this design I think I can make it possible to have the central admin website create Servers/Agents as downloadable configuration files that the &lt;code&gt;sif&lt;/code&gt; app can start/stop from the website. &lt;/p&gt;
&lt;p&gt;We&amp;#8217;ll see how far this goes.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ClintHill/~4/481677145" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://clint-hill.com/2008/12/11/siffer-structural-change/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://clint-hill.com/2008/12/11/siffer-structural-change/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://clint-hill.com/2008/12/11/siffer-structural-change/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>clinthill</name>
						<uri>http://clint-hill.com</uri>
					</author>
		<title type="html"><![CDATA[Cardinals Game]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/ClintHill/~3/477651249/" />
		<id>http://clint-hill.com/?p=216</id>
		<updated>2008-12-07T17:22:18Z</updated>
		<published>2008-12-07T17:22:17Z</published>
		<category scheme="http://clint-hill.com" term="Life" />		<summary type="html"><![CDATA[Going to the game today with my wife, sister, brother-in-law and cousin. Kimberly hasn&#8217;t been to an NFL game yet and this will be my second trip to the &#8220;toaster in the desert&#8221;. 
Should be a lot of fun.
]]></summary>
		<content type="html" xml:base="http://clint-hill.com/2008/12/07/cardinals-game/">&lt;p&gt;Going to the game today with my wife, sister, brother-in-law and cousin. Kimberly hasn&amp;#8217;t been to an NFL game yet and this will be my second trip to the &amp;#8220;toaster in the desert&amp;#8221;. &lt;/p&gt;
&lt;p&gt;Should be a lot of fun.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/ClintHill/~4/477651249" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://clint-hill.com/2008/12/07/cardinals-game/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://clint-hill.com/2008/12/07/cardinals-game/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://clint-hill.com/2008/12/07/cardinals-game/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>clinthill</name>
						<uri>http://clint-hill.com</uri>
					</author>
		<title type="html"><![CDATA[EarlyBird - EAR packaging like Warbler]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/ClintHill/~3/474665403/" />
		<id>http://clint-hill.com/?p=207</id>
		<updated>2008-12-11T14:05:29Z</updated>
		<published>2008-12-04T13:32:10Z</published>
		<category scheme="http://clint-hill.com" term="Code" /><category scheme="http://clint-hill.com" term="Work" />		<summary type="html"><![CDATA[Because Warbler made it so easy for me, and because I actually had to for my work environment, I took a first stab at a few rake tasks to EAR my Rails project.
[EDIT] I posted this without really saying &#8220;why&#8221;. At work we run everything on WebSphere. And as smart environments do, there are scripts [...]]]></summary>
		<content type="html" xml:base="http://clint-hill.com/2008/12/04/earlybird-ear-packaging-like-warbler/">&lt;p&gt;Because Warbler made it so easy for me, and because I actually had to for my work environment, I took a first stab at a few rake tasks to EAR my Rails project.&lt;/p&gt;
&lt;p&gt;[EDIT] I posted this without really saying &amp;#8220;why&amp;#8221;. At work we run everything on WebSphere. And as smart environments do, there are scripts to do about everything, including install applications. In order to get some adoption for Rails in our Java world we wanted to do our very best to make it all seamless for operations and engineering. The install scripts are all wired to work with &amp;#8220;.ear&amp;#8221;. Hence the need to take Warbler one step further. And by the way - all the credit goes to &lt;a href="http://blog.nicksieger.com/"&gt;Nick Seiger&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now these are the result of about an hour or so and definitely have some issues. For example this implementation is very specific to WebSphere 6.1 and moreover has no real configuration ability. But nevertheless it works and I wanted to share. (Is anybody else needing EARs instead of WARs?)&lt;/p&gt;
&lt;p&gt;[UPDATE 12-11-2008] This worked out nicely. It made the development side of things super easy. In fact the EAR is working nicely during installs in WebSphere Admin Console. However, when I try using the install scripts (for automation purposes) in WAS it craps out. I&amp;#8217;m hoping it&amp;#8217;s due to a misconfigured application.xml file. But so far I&amp;#8217;m stumped.&lt;/p&gt;
&lt;pre&gt;
namespace :earlybird do
  desc "Build the EAR file for deployment"
  task :build do
    warbler = Gem::Dependency.new('warbler', '&gt;=0')
    if Gem.source_index.search(warbler).empty?
      puts "=====  This task requires the warbler gem!  ====="
      puts "    sudo gem install warbler"
      return
    end
    gem warbler.name
    require warbler.name
    @warble_config = eval(File.open(Warbler::Config::FILE) {|f| f.read})
    @war = File.join(RAILS_ROOT,"#{@warble_config.war_name}.war")
    @ear = File.join(RAILS_ROOT,"#{@warble_config.war_name}.ear")
    @staging_dir = File.join(RAILS_ROOT,"tmp","ear")
    @meta_inf = File.join(@staging_dir, "META-INF")
    mkdir_p @meta_inf
    %w(application.xml ibm-application-bnd.xmi was.policy was.webmodule).each do |file|
      cp File.join(RAILS_ROOT,"config", file), @meta_inf
    end
    sh "warble war"
    @war_dir = File.join(RAILS_ROOT,"tmp","war")
    cp File.join(RAILS_ROOT,"config","ibm-web-bnd.xmi"), File.join(@war_dir,"WEB-INF")
    sh "jar uf #{@war} -C #{@war_dir} WEB-INF/ibm-web-bnd.xmi"
    cp @war, @staging_dir
    sh "jar cf #{@ear} -C #{@staging_dir} ."
  end

  desc "Clean out your ear"
  task :clean do
    warbler = Gem::Dependency.new('warbler', '&gt;=0')
    if Gem.source_index.search(warbler).empty?
      puts "=====  This task requires the warbler gem!  ====="
      puts "    sudo gem install warbler"
      return
    end
    gem warbler.name
    require warbler.name
    @warble_config = eval(File.open(Warbler::Config::FILE) {|f| f.read})
    @ear = File.join(RAILS_ROOT,"#{@warble_config.war_name}.ear")
    @staging_dir = File.join(RAILS_ROOT,"tmp","ear")
    rm_rf @staging_dir
    rm_f @ear
    sh "warble war:clean"
  end
end

task :earlybirdy =&gt; "earlybird:build"
&lt;/pre&gt;
&lt;img src="http://feeds.feedburner.com/~r/ClintHill/~4/474665403" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://clint-hill.com/2008/12/04/earlybird-ear-packaging-like-warbler/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://clint-hill.com/2008/12/04/earlybird-ear-packaging-like-warbler/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://clint-hill.com/2008/12/04/earlybird-ear-packaging-like-warbler/</feedburner:origLink></entry>
	</feed>
