<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atomfull.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://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="0.3" xml:lang="en">
	<title>Bill Eisenhauer</title>
	<link rel="alternate" type="text/html" href="http://blog.billeisenhauer.com" />
	<tagline>Just another WordPress weblog</tagline>
	<modified>2007-11-02T13:18:22Z</modified>
	<copyright>Copyright 2007</copyright>
	<generator url="http://wordpress.org/" version="2.0.4">WordPress</generator>
			<geo:lat>32.916865</geo:lat><geo:long>-96.973492</geo:long><link rel="start" href="http://feeds.feedburner.com/BillEisenhauer" type="application/atom+xml" /><feedburner:emailServiceId>553875</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><entry>
	  	<author>
			<name>Bill Eisenhauer</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Web Standards &#8212; Aren&#8217;t they a given now?]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/178732267/" />
		<id>http://blog.billeisenhauer.com/2007/11/02/web-standards-arent-they-a-given-now/</id>
		<modified>2007-11-02T13:18:22Z</modified>
		<issued>2007-11-02T13:18:22Z</issued>
		
	<dc:subject>Business Strategy</dc:subject>
	<dc:subject>Design</dc:subject>
	<dc:subject>CSS</dc:subject> 
		<summary type="text/html" mode="escaped">It is hockey season now and so I&amp;#8217;ve been paying attention to the local team and all things surrounding it.  So today I noticed that Mike Modano has relaunched his site.  Well, Mike has been one of my favorite players for more than a decade and since I make my living in technology its of [...]</summary>
		<content type="text/html" mode="escaped" xml:base="http://blog.billeisenhauer.com/2007/11/02/web-standards-arent-they-a-given-now/">&lt;p&gt;It is hockey season now and so I&amp;#8217;ve been paying attention to the local team and all things surrounding it.  So today I noticed that Mike Modano has relaunched his site.  Well, Mike has been one of my favorite players for more than a decade and since I make my living in technology its of interest to see what the site looks like.&lt;/p&gt;
&lt;p&gt;So when you go to &lt;a target="_blank" title="Mike Modano" href="http://www.mikemodano.com"&gt;www.mikemodano.com&lt;/a&gt;, you see a nice enough site, but I am not impressed with animated GIFs or Flash animation.  These days I quickly resort to viewing the source to see just how astute the designer or design agency is.  So in this case, what do I find?  Obtrusive javascript and a tables-based design.  Yikes!  Maybe I, myself, need a reality check, but I thought we were past this kind of implementation approach.  Its just too easy to build it the right way with web standards these days.&lt;/p&gt;
&lt;p&gt;So I had to go explore which firm put this site together.  Clicking the link at the bottom of the page takes me to &lt;a target="_blank" title="Nform Interactive" href="http://www.n-form.com/"&gt;Nform Interative&lt;/a&gt; which contains an all Flash home page with a logo that is clipped in Firefox and a page entitled &amp;#8220;temp_home_page&amp;#8221;.  What&amp;#8217;s more, there&amp;#8217;s no pages to describe the agency.  Needless to say, its completely SEO-unfriendly.  Wow!  And they got the Mike Modano gig?!&lt;/p&gt;
&lt;p&gt;This is all relevant to me because I am embarking on a freelance career where I do contract programming and website development.  I do all this with the latest trends in technology and web standards.  So, test-driven development, CSS-based designs and lean standards-compliant markup are staples of anything I would do.  But it highlights to me that we still have a long way to go because people are still building old school sites and clients are still paying for them.&lt;/p&gt;
&lt;p&gt;Hopefully, I can articulate why my approach is better and start winning some of these clients.  Doing so will offer them bigger bang for the buck and position them better for the future.  Its too late for Mike&amp;#8217;s site, though.
&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=lSH7nXB"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=lSH7nXB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=bbZQj1b"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=bbZQj1b" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=JHRxw8B"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=JHRxw8B" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/178732267" height="1" width="1"/&gt;</content>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=BillEisenhauer&amp;itemurl=http%3A%2F%2Fblog.billeisenhauer.com%2F2007%2F11%2F02%2Fweb-standards-arent-they-a-given-now%2F</feedburner:awareness><feedburner:origLink>http://blog.billeisenhauer.com/2007/11/02/web-standards-arent-they-a-given-now/</feedburner:origLink></entry>
		<entry>
	  	<author>
			<name>Bill Eisenhauer</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Testimonials &#038; Recommendations]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/175841881/" />
		<id>http://blog.billeisenhauer.com/2007/10/27/testimonials-recommendations/</id>
		<modified>2007-10-27T14:41:53Z</modified>
		<issued>2007-10-27T14:41:53Z</issued>
		
	<dc:subject>General</dc:subject> 
		<summary type="text/html" mode="escaped">Out of the blue yesterday, I received a request to take down a testimonial on my &amp;#8220;hire me&amp;#8221; site that I had received from a colleague from a past employer.  There was some question about the testimonial being a violation of that company&amp;#8217;s policies on employee references.
As I had done on every testimonial, I cited [...]</summary>
		<content type="text/html" mode="escaped" xml:base="http://blog.billeisenhauer.com/2007/10/27/testimonials-recommendations/">&lt;p&gt;Out of the blue yesterday, I received a request to take down a testimonial on my &lt;a target="_blank" title="Hire Bill Eisenhauer" href="http://hire.billeisenhauer.com"&gt;&amp;#8220;hire me&amp;#8221; site&lt;/a&gt; that I had received from a colleague from a past employer.  There was some question about the testimonial being a violation of that company&amp;#8217;s policies on employee references.&lt;/p&gt;
&lt;p&gt;As I had done on every testimonial, I cited their current company and the company where I worked with them.  These citations give the quote context and are helpful to the reader.  When I collect a quotation, I always ask how someone wants to be cited and give them the opportunity to differ from my normal method.  I even let them know when its been posted to the website.&lt;/p&gt;
&lt;p&gt;However, in this case, the citation ran afoul of the company policy which forbids any employee from giving a reference to a past employee.&lt;/p&gt;
&lt;p&gt;When I first got the takedown email, I was stunned and thought that they must have misunderstood the policy.  It was a positive comment, of course, and I felt like it was good for both the company and me to have positivity out there.  I had even wondered about freedom of speech issues &amp;#8212; surely my colleague was entitled to express an individual opinion.  But alas, I took the citation down so that the person&amp;#8217;s opinion is not blurred with the company&amp;#8217;s opinion.&lt;/p&gt;
&lt;p&gt;But it made me wonder if the citation really blurs the issue.  It was a personal opinion, not a corporate endorsement, otherwise I would cite the company alone.  In the end, I respect everyone&amp;#8217;s policies and I definitely want to ensure that my past colleagues are not disadvantaged by saying something nice about me.  I will just be a lot more careful in the future, I had no idea that anyone would ever have a problem with this.
&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=gueZDcA"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=gueZDcA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=s4xmEKa"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=s4xmEKa" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=2pLKlyA"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=2pLKlyA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/175841881" height="1" width="1"/&gt;</content>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=BillEisenhauer&amp;itemurl=http%3A%2F%2Fblog.billeisenhauer.com%2F2007%2F10%2F27%2Ftestimonials-recommendations%2F</feedburner:awareness><feedburner:origLink>http://blog.billeisenhauer.com/2007/10/27/testimonials-recommendations/</feedburner:origLink></entry>
		<entry>
	  	<author>
			<name>Bill Eisenhauer</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Circling Back]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/168043703/" />
		<id>http://blog.billeisenhauer.com/2007/10/10/circling-back/</id>
		<modified>2007-10-10T14:19:33Z</modified>
		<issued>2007-10-10T14:19:33Z</issued>
		
	<dc:subject>Java</dc:subject>
	<dc:subject>Ruby on Rails</dc:subject>
	<dc:subject>Ruby</dc:subject>
	<dc:subject>Business Strategy</dc:subject> 
		<summary type="text/html" mode="escaped">People have asked me quite a lot lately what I&amp;#8217;m going to do now that I&amp;#8217;m free and clear of Click Here and my pat answer has been one of two or three things:

Find a product-oriented company with a high-performance team building something amazing, or
Bootstrap my own tiny consultancy, and / or
Build an amazing product.

As [...]</summary>
		<content type="text/html" mode="escaped" xml:base="http://blog.billeisenhauer.com/2007/10/10/circling-back/">&lt;p&gt;People have asked me quite a lot lately what I&amp;#8217;m going to do now that I&amp;#8217;m free and clear of &lt;a target="_blank" title="Click Here" href="http://www.clickhere.com/"&gt;Click Here&lt;/a&gt; and my pat answer has been one of two or three things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Find a product-oriented company with a high-performance team building something amazing, or&lt;/li&gt;
&lt;li&gt;Bootstrap my own tiny consultancy, and / or&lt;/li&gt;
&lt;li&gt;Build an amazing product.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As luck would have it, I&amp;#8217;ve already landed an interview at a company that offers the first option.  I&amp;#8217;m excited about the interview, but realistic about the possibilities.  Because they appear to be a high-performance team, they are guarding the entrance quite closely.  My level of intrigue is all that much higher because the interview process is anything but easy and normal.  Suffice it to say that you can&amp;#8217;t get hired by being a good guy and liberally dropping high-impact buzzwords.  You may laugh, but I&amp;#8217;ve been hired through such good-guy interviews.&lt;/p&gt;
&lt;p&gt;This is a position which features the use of Java as their primary implementation language, so my challenge is to get back into the Java mindset after several months of Ruby development.  My friend &lt;a target="_blank" title="Mike Thomas" href="http://www.samoht.com/weblog/gemcast.rb"&gt;Mike&lt;/a&gt; once supposed that I would never return to Java.  Its possible he&amp;#8217;s wrong as I could be circling back.  Working with Ruby is fun, but my talents and experience position we well for a Java shop and there is more of a job market there too.&lt;/p&gt;
&lt;p&gt;But even as I say that, I must admit that looking at Java for the first time in a few months has surprised me.  Java hasn&amp;#8217;t changed, but it seems that my mind has started to think in Ruby.  I am actually alarmed that a language I&amp;#8217;ve worked in for years could be subject to this kind of transition.  I found myself asking fundamental syntax questions.  So I wondered if this had happened to anyone else.  Or is this just a by-product of my being 43?&lt;/p&gt;
&lt;p&gt;Well, I&amp;#8217;m not worried about picking Java up again, but I am picking a problem to code to get my head back into it.  I still have a series of Java projects from an interview process I went through in June (yes, I was offered the job), so I&amp;#8217;m going to work through one of those.  To make it more fun, I may try to integrate it into a JRuby on Rails project and do a local deploy.  This will enable me to prepare for the interview and explore the integration possibilities for JRuby and Java.&lt;/p&gt;
&lt;p&gt;What happens if I don&amp;#8217;t get the job?  Well, that&amp;#8217;s a real possibility, so I&amp;#8217;m planning my bootstrapping activities for my consultancy.  Having done recent work for a medium-sized consultancy, I know there is work out there and I know that I can provide high-quality work for a portion of the price that bigger companies are charging.  But as every entrepreneur knows, you cannot be successful without customers, so my biggest challenge will be to construct a marketing machine capable of producing a sustainable pipeline of work.  For technicians, this is not an intrinsic skill, so I&amp;#8217;ve been thinking more about marketing than my technical skills &amp;#8212; the latter is the easy part.&lt;/p&gt;
&lt;p&gt;
In some ways this takes me back a great many years ago when I created a small software company, SportSoft Systems, which created and marketed Fantasy Football software and a few other things.  This was back 20 years ago and my product was just about the best out there.  Had I only known that the fantasy sports craze was to explode, I would have stuck with it.   I did actually make decent money, but the pressures of supporting the product and building in new features every year while being an ethical employee at my primary job caused me to discontinue my efforts.&lt;/p&gt;
&lt;p&gt;
So for now, I&amp;#8217;m circling back &amp;#8212; either to the Java world or to a world where I build my own company.  Should be fun wherever things lead.
&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=lLa1zRVe"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=lLa1zRVe" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=AZqf48qW"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=AZqf48qW" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=SAU8tIr2"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=SAU8tIr2" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/168043703" height="1" width="1"/&gt;</content>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=BillEisenhauer&amp;itemurl=http%3A%2F%2Fblog.billeisenhauer.com%2F2007%2F10%2F10%2Fcircling-back%2F</feedburner:awareness><feedburner:origLink>http://blog.billeisenhauer.com/2007/10/10/circling-back/</feedburner:origLink></entry>
		<entry>
	  	<author>
			<name>Bill Eisenhauer</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Follow the process?]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/162553524/" />
		<id>http://blog.billeisenhauer.com/2007/09/28/follow-the-process/</id>
		<modified>2007-09-28T18:06:45Z</modified>
		<issued>2007-09-28T18:06:45Z</issued>
		
	<dc:subject>Uncategorized</dc:subject>
	<dc:subject>Business Strategy</dc:subject> 
		<summary type="text/html" mode="escaped">I have been making my living for the last 20+ years following processes.  Unfortunately, I have not seen that processes have been maintained, evaluated, and evolved as they should be.  My theory is this: no one collects any metrics anymore, so no one knows how well their processes really work.
There are two adages that I [...]</summary>
		<content type="text/html" mode="escaped" xml:base="http://blog.billeisenhauer.com/2007/09/28/follow-the-process/">&lt;p&gt;I have been making my living for the last 20+ years following processes.  Unfortunately, I have not seen that processes have been maintained, evaluated, and evolved as they should be.  My theory is this: no one collects any metrics anymore, so no one knows how well their processes really work.&lt;/p&gt;
&lt;p&gt;There are two adages that I believe apply:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;You cannot manage what you do not measure.&lt;/p&gt;
&lt;p&gt;What gets measured, gets done.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;All too often, processes go stale or drift so far from their intent that it becomes a disadvantage to be process-driven.  If you work for such a company or even if you have your own personal processes, consider putting into place a layer where you measure parts of the process.  I don&amp;#8217;t know what those measurements would concern, just start measuring something.&lt;/p&gt;
&lt;p&gt;Once you have a reasonable set of data points, attempt to perform some analysis to see if you can draw any conclusions.  At a company I worked for in the past, we measured the effectiveness of peer reviews by tabulating documentation defects and code defects detected by the group and by person.  In a separate activity, we measured defects detected by our QA group and ultimately by the customer community.  My point being, we could take all this data and eventually determine our effectiveness and even predict our future performance.  Being able to predict our performance enabled us to estimate and plan much better and thus be more competitive.&lt;br /&gt;
If you are a company that suffers from this, you need to swallow the Red Pill and see the truth.  Measured and analyzed processes can become your Morpheus.  If you swallow the Blue Pill, you will almost certainly continue to languish within old, non-value-added processes that lead you into an uncertain future.&lt;/p&gt;
&lt;p&gt;You should now be conjuring up an image of Laurence Fishburne gesturing you to come and get some.
&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=xWsxJcJQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=xWsxJcJQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=OvF4GboP"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=OvF4GboP" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=xsSPbZfG"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=xsSPbZfG" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/162553524" height="1" width="1"/&gt;</content>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=BillEisenhauer&amp;itemurl=http%3A%2F%2Fblog.billeisenhauer.com%2F2007%2F09%2F28%2Ffollow-the-process%2F</feedburner:awareness><feedburner:origLink>http://blog.billeisenhauer.com/2007/09/28/follow-the-process/</feedburner:origLink></entry>
		<entry>
	  	<author>
			<name>Bill Eisenhauer</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Preserve Semantics in Callbacks]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/141834212/" />
		<id>http://blog.billeisenhauer.com/2007/08/07/preserve-semantics-in-callbacks/</id>
		<modified>2007-08-08T03:04:29Z</modified>
		<issued>2007-08-08T03:04:29Z</issued>
		
	<dc:subject>Ruby on Rails</dc:subject>
	<dc:subject>Ruby</dc:subject> 
		<summary type="text/html" mode="escaped">Many people tend to place logic within a method named for the callback (e.g. after_destroy).  This works fine, but tends to be less maintainable, in my opinion.
You basically have a method called after_destroy (or whatever), but you don&amp;#8217;t readily know what its doing.  A better approach is to write an intention-revealing named method and reference [...]</summary>
		<content type="text/html" mode="escaped" xml:base="http://blog.billeisenhauer.com/2007/08/07/preserve-semantics-in-callbacks/">&lt;p&gt;Many people tend to place logic within a method named for the callback (e.g. after_destroy).  This works fine, but tends to be less maintainable, in my opinion.&lt;/p&gt;
&lt;p&gt;You basically have a method called after_destroy (or whatever), but you don&amp;#8217;t readily know what its doing.  A better approach is to write an intention-revealing named method and reference that in the reference to your callback method.  You then can see through the method name what is happening in response to the event.  Further, the method can be used at other times.  This approach restores a bit of maintainability to your code.&lt;/p&gt;
&lt;p&gt;I have included an example of this approach below.  You&amp;#8217;ll have to visualize the before version &amp;#8212; I don&amp;#8217;t like posting less maintainable code because sometimes people skim it without reading and take it as good code.&lt;/p&gt;
&lt;table class="CodeRay"&gt;
&lt;tr&gt;
&lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;
&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;13&lt;tt&gt;
&lt;/tt&gt;14&lt;tt&gt;
&lt;/tt&gt;15&lt;tt&gt;
&lt;/tt&gt;16&lt;tt&gt;
&lt;/tt&gt;17&lt;tt&gt;
&lt;/tt&gt;18&lt;tt&gt;
&lt;/tt&gt;19&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;td class="code"&gt;
&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Rating&lt;/span&gt; &lt; &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# &amp;#8212;- Associations &amp;#8212;-&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# The rateable that was rated.&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  belongs_to &lt;span class="sy"&gt;:rateable&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# &amp;#8212;- Callbacks &amp;#8212;-&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  after_destroy &lt;span class="sy"&gt;:update_ratings&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# &amp;#8212;- Calculations &amp;#8212;-&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# Updates the parent&amp;#8217;s rating count and average rating.&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;update_ratings&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    rateable.update_ratings&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=zJalnf5E"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=zJalnf5E" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=7ENFrTJa"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=7ENFrTJa" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=x9UMj0eY"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=x9UMj0eY" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/141834212" height="1" width="1"/&gt;</content>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=BillEisenhauer&amp;itemurl=http%3A%2F%2Fblog.billeisenhauer.com%2F2007%2F08%2F07%2Fpreserve-semantics-in-callbacks%2F</feedburner:awareness><feedburner:origLink>http://blog.billeisenhauer.com/2007/08/07/preserve-semantics-in-callbacks/</feedburner:origLink></entry>
		<entry>
	  	<author>
			<name>Bill Eisenhauer</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Using Constants in Rails Models]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/141438890/" />
		<id>http://blog.billeisenhauer.com/2007/08/06/using-constants-in-rails-models/</id>
		<modified>2007-08-07T02:52:16Z</modified>
		<issued>2007-08-07T02:52:16Z</issued>
		
	<dc:subject>Ruby on Rails</dc:subject>
	<dc:subject>Ruby</dc:subject> 
		<summary type="text/html" mode="escaped">One of my pet peeves in code is the absence of constants and thus the prevalence of &amp;#8220;magic numbers&amp;#8221; in their place.  Constants add a touch of readability and semantic meaning and magnify the maintainability of the code.
As a simple example, here&amp;#8217;s a partial model featuring constants to aid in clear validation specifications:



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21



class Email [...]</summary>
		<content type="text/html" mode="escaped" xml:base="http://blog.billeisenhauer.com/2007/08/06/using-constants-in-rails-models/">&lt;p&gt;One of my pet peeves in code is the absence of constants and thus the prevalence of &amp;#8220;magic numbers&amp;#8221; in their place.  Constants add a touch of readability and semantic meaning and magnify the maintainability of the code.&lt;/p&gt;
&lt;p&gt;As a simple example, here&amp;#8217;s a partial model featuring constants to aid in clear validation specifications:&lt;/p&gt;
&lt;table class="CodeRay"&gt;
&lt;tr&gt;
&lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;
&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;13&lt;tt&gt;
&lt;/tt&gt;14&lt;tt&gt;
&lt;/tt&gt;15&lt;tt&gt;
&lt;/tt&gt;16&lt;tt&gt;
&lt;/tt&gt;17&lt;tt&gt;
&lt;/tt&gt;18&lt;tt&gt;
&lt;/tt&gt;19&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;21&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;td class="code"&gt;
&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Email&lt;/span&gt; &lt; &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Base&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="co"&gt;MAX_FROM_LENGTH&lt;/span&gt;   = &lt;span class="i"&gt;30&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="co"&gt;MAX_TO_LENGTH&lt;/span&gt;     = &lt;span class="i"&gt;100&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="co"&gt;FROM_LENGTH_RANGE&lt;/span&gt; = &lt;span class="i"&gt;1&lt;/span&gt;..&lt;span class="co"&gt;MAX_FROM_LENGTH&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="co"&gt;TO_LENGTH_RANGE&lt;/span&gt;   = &lt;span class="i"&gt;1&lt;/span&gt;..&lt;span class="co"&gt;MAX_TO_LENGTH&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="co"&gt;TO_FORMAT&lt;/span&gt;         = &lt;span class="rx"&gt;&lt;span class="dl"&gt;/&lt;/span&gt;&lt;span class="k"&gt;^[_a-z0-9&lt;/span&gt;&lt;span class="ch"&gt;+&lt;/span&gt;&lt;span class="ch"&gt;.&lt;/span&gt;&lt;span class="ch"&gt;-&lt;/span&gt;&lt;span class="k"&gt;]+&lt;/span&gt;&lt;span class="ch"&gt;@&lt;/span&gt;&lt;span class="k"&gt;[_a-z0-9&lt;/span&gt;&lt;span class="ch"&gt;-&lt;/span&gt;&lt;span class="k"&gt;]+&lt;/span&gt;&lt;span class="ch"&gt;.&lt;/span&gt;&lt;span class="k"&gt;[_a-z0-9&lt;/span&gt;&lt;span class="ch"&gt;.&lt;/span&gt;&lt;span class="ch"&gt;-&lt;/span&gt;&lt;span class="k"&gt;]+$&lt;/span&gt;&lt;span class="dl"&gt;/&lt;/span&gt;&lt;span class="mod"&gt;i&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="co"&gt;NOTE_LENGTH_RANGE&lt;/span&gt; = &lt;span class="i"&gt;1&lt;/span&gt;..&lt;span class="co"&gt;DB_TEXT_MAX_LENGTH&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# &amp;#8212;- Attributes &amp;#8212;-&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# Attributes protected from mass-assignment (as through forms) &lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  attr_protected &lt;span class="sy"&gt;:sent_at&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# &amp;#8212;- Validations &amp;#8212;-&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;tt&gt;
&lt;/tt&gt;  validates_length_of   &lt;span class="sy"&gt;:from&lt;/span&gt;, &lt;span class="sy"&gt;:within&lt;/span&gt; =&gt; &lt;span class="co"&gt;FROM_LENGTH_RANGE&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  validates_length_of   &lt;span class="sy"&gt;:to&lt;/span&gt;,   &lt;span class="sy"&gt;:within&lt;/span&gt; =&gt; &lt;span class="co"&gt;TO_LENGTH_RANGE&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  validates_format_of   &lt;span class="sy"&gt;:to&lt;/span&gt;,   &lt;span class="sy"&gt;:with&lt;/span&gt;   =&gt; &lt;span class="co"&gt;TO_FORMAT&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  validates_length_of   &lt;span class="sy"&gt;:note&lt;/span&gt;, &lt;span class="sy"&gt;:within&lt;/span&gt; =&gt; &lt;span class="co"&gt;NOTE_LENGTH_RANGE&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;As you can see the model defines constants to enforce length maximums and in turn the ranges.  You could argue that the range constants are less useful since you have to refer back to the constants section to see them, but that&amp;#8217;s a matter of taste.  I like having them.&lt;/p&gt;
&lt;p&gt;With constants like these properly placed in your model, you can take advantage of them in your migration.  Here&amp;#8217;s a partial example:&lt;/p&gt;
&lt;table class="CodeRay"&gt;
&lt;tr&gt;
&lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;
&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;td class="code"&gt;
&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;CreateEmails&lt;/span&gt; &lt; &lt;span class="co"&gt;ActiveRecord&lt;/span&gt;::&lt;span class="co"&gt;Migration&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="pc"&gt;self&lt;/span&gt;.up&lt;tt&gt;
&lt;/tt&gt;    create_table &lt;span class="sy"&gt;:emails&lt;/span&gt; &lt;span class="r"&gt;do&lt;/span&gt; |t|&lt;tt&gt;
&lt;/tt&gt;      t.column &lt;span class="sy"&gt;:emailable_id&lt;/span&gt;, &lt;span class="sy"&gt;:integer&lt;/span&gt;, &lt;span class="sy"&gt;:null&lt;/span&gt; =&gt; &lt;span class="pc"&gt;false&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;      t.column &lt;span class="sy"&gt;:to&lt;/span&gt;,         &lt;span class="sy"&gt;:string&lt;/span&gt;,  &lt;span class="sy"&gt;:null&lt;/span&gt; =&gt; &lt;span class="pc"&gt;false&lt;/span&gt;, &lt;span class="sy"&gt;:limit&lt;/span&gt; =&gt; &lt;span class="co"&gt;Email&lt;/span&gt;::&lt;span class="co"&gt;MAX_TO_LENGTH&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;      t.column &lt;span class="sy"&gt;:from&lt;/span&gt;,       &lt;span class="sy"&gt;:string&lt;/span&gt;,  &lt;span class="sy"&gt;:null&lt;/span&gt; =&gt; &lt;span class="pc"&gt;false&lt;/span&gt;, &lt;span class="sy"&gt;:limit&lt;/span&gt; =&gt; &lt;span class="co"&gt;Email&lt;/span&gt;::&lt;span class="co"&gt;MAX_FROM_LENGTH&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;      t.column &lt;span class="sy"&gt;:note&lt;/span&gt;,       &lt;span class="sy"&gt;:text&lt;/span&gt;,    &lt;span class="sy"&gt;:null&lt;/span&gt; =&gt; &lt;span class="pc"&gt;false&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;      t.column &lt;span class="sy"&gt;:sent_at&lt;/span&gt;,    &lt;span class="sy"&gt;:datetime&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;end&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;The advantage here is that your model and your migration are now in synch for field maximums.  If that&amp;#8217;s not enough, then consider what you can now do in your test code:&lt;/p&gt;
&lt;table class="CodeRay"&gt;
&lt;tr&gt;
&lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;
&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;td class="code"&gt;
&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;&lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;test_invalid_with_long_to&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    assert_value_for_attribute_invalid(&lt;span class="co"&gt;Email&lt;/span&gt;.new, &lt;span class="sy"&gt;:to&lt;/span&gt;, filled_str(&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;#8220;&lt;/span&gt;&lt;span class="k"&gt;X&lt;/span&gt;&lt;span class="dl"&gt;&amp;#8220;&lt;/span&gt;&lt;/span&gt;, &lt;span class="co"&gt;Email&lt;/span&gt;::&lt;span class="co"&gt;MAX_TO_LENGTH&lt;/span&gt; + &lt;span class="i"&gt;1&lt;/span&gt;))&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;end&lt;/span&gt;&lt;/pre&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;So now, if you change your mind and decide you need to lengthen your fields, you need only change your model constants.  Your migration could be rerun or you could add an additional migration which applies the new field length.  And lastly, your test code doesn&amp;#8217;t have to change.&lt;/p&gt;
&lt;p&gt;I think this is simple, yet very much worth doing.
&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=JVA4SET6"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=JVA4SET6" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=kCqh99qt"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=kCqh99qt" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=pRh7w2UU"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=pRh7w2UU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/141438890" height="1" width="1"/&gt;</content>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=BillEisenhauer&amp;itemurl=http%3A%2F%2Fblog.billeisenhauer.com%2F2007%2F08%2F06%2Fusing-constants-in-rails-models%2F</feedburner:awareness><feedburner:origLink>http://blog.billeisenhauer.com/2007/08/06/using-constants-in-rails-models/</feedburner:origLink></entry>
		<entry>
	  	<author>
			<name>Bill Eisenhauer</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[GeoKit Updates]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/122192065/" />
		<id>http://blog.billeisenhauer.com/2007/06/04/geokit-updates/</id>
		<modified>2007-06-05T00:13:03Z</modified>
		<issued>2007-06-05T00:13:03Z</issued>
		
	<dc:subject>Ruby on Rails</dc:subject>
	<dc:subject>Ruby</dc:subject>
	<dc:subject>GeoKit</dc:subject> 
		<summary type="text/html" mode="escaped">I have added a few features and made a few bug fixes to GeoKit.  These are as follows:

[FEATURE] Added timeout support for geocoder web service calls
[FEATURE] Added proxy support for geocoder web service calls
[FEATURE] Added support for SQL count queries &amp;#8212; they work like the finders
[BUG FIX] Fixed range finders to support exclusive ranges
[BUG [...]</summary>
		<content type="text/html" mode="escaped" xml:base="http://blog.billeisenhauer.com/2007/06/04/geokit-updates/">&lt;p&gt;I have added a few features and made a few bug fixes to GeoKit.  These are as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[FEATURE] Added timeout support for geocoder web service calls&lt;/li&gt;
&lt;li&gt;[FEATURE] Added proxy support for geocoder web service calls&lt;/li&gt;
&lt;li&gt;[FEATURE] Added support for SQL count queries &amp;#8212; they work like the finders&lt;/li&gt;
&lt;li&gt;[BUG FIX] Fixed range finders to support exclusive ranges&lt;/li&gt;
&lt;li&gt;[BUG FIX] Fixed configuration to use class accessors instead of constants (that were being reinitialized)&lt;/li&gt;
&lt;li&gt;[BUG FIX] Eliminated bogus IP address returned from IP geocoder when the request IP is 127.0.0.1&lt;/li&gt;
&lt;li&gt;[BUG FIX] Fixed GeoLoc&amp;#8217;s hash method and added an alias to_hash&lt;/li&gt;
&lt;li&gt;[REFACTOR] Require statements to be cleaner all the way around&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to the following who reported bugs that got fixed or who submitted patches that were used in part or in their entirety:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Norbert Crombach&lt;/li&gt;
&lt;li&gt;Justin French&lt;/li&gt;
&lt;li&gt;Hoan Ton-That&lt;/li&gt;
&lt;li&gt;Jason Seifer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to everyone for your feedback, patches, and compliments.  If I didn&amp;#8217;t name you explicitly, it means that your thanks by name will come later.&lt;/p&gt;
&lt;p&gt;Since I am in a GeoKit development mode right now, let me or Andre know if there are other features, bug fixes, or patches I should be aware of.  I know that we had been planning to modify our configuration approach to be compatible with YM4R, but that&amp;#8217;s been delayed indefinitely.  They use a YAML file and we use the environment configs &amp;#8212; and there really wasn&amp;#8217;t a compelling reason to mess with it.  Also, no UK geocoding yet &amp;#8212; didn&amp;#8217;t receive too much demand.&lt;/p&gt;
&lt;p&gt;Please review the README for updates and take a look at the new environment config template under the plugin&amp;#8217;s assets directory to see how you should config GeoKit.  And by all means, let me know if there are issues that I&amp;#8217;ve inadvertently created for you.
&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=eezBLbiA"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=eezBLbiA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=ZsIAtCpJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=ZsIAtCpJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=iWvLW4mV"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=iWvLW4mV" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/122192065" height="1" width="1"/&gt;</content>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=BillEisenhauer&amp;itemurl=http%3A%2F%2Fblog.billeisenhauer.com%2F2007%2F06%2F04%2Fgeokit-updates%2F</feedburner:awareness><feedburner:origLink>http://blog.billeisenhauer.com/2007/06/04/geokit-updates/</feedburner:origLink></entry>
		<entry>
	  	<author>
			<name>Bill Eisenhauer</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Just One Domain Name?]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/122084064/" />
		<id>http://blog.billeisenhauer.com/2007/06/04/just-one-domain-name/</id>
		<modified>2007-06-04T15:55:47Z</modified>
		<issued>2007-06-04T15:55:47Z</issued>
		
	<dc:subject>Business Strategy</dc:subject>
	<dc:subject>Design</dc:subject> 
		<summary type="text/html" mode="escaped">Anyone tried to get a good domain name lately?  If you have, its likely you&amp;#8217;ve been frustrated with the options that you have left.  Of course, that is the case only if you wish to have a domain name that matches the name of your site.  However, there may be a creative solution available to [...]</summary>
		<content type="text/html" mode="escaped" xml:base="http://blog.billeisenhauer.com/2007/06/04/just-one-domain-name/">&lt;p&gt;Anyone tried to get a good domain name lately?  If you have, its likely you&amp;#8217;ve been frustrated with the options that you have left.  Of course, that is the case only if you wish to have a domain name that matches the name of your site.  However, there may be a creative solution available to you.&lt;/p&gt;
&lt;p&gt;Consider taking the Google or Yahoo approach whereby your sites are &amp;#8220;properties&amp;#8221; and are named at the subdomain level.  For example, &lt;a title="Google Maps" href="http://maps.google.com"&gt;http://maps.google.com&lt;/a&gt; or &lt;a target="_blank" title="Yahoo Local" href="http://local.yahoo.com"&gt;http://local.yahoo.com&lt;/a&gt;.  Taking their examples, you can see that their primary domain name has nothing to do with either of their properties.  So basically, you simplify your problem down to finding one good domain name.  Thereafter, &lt;strong&gt;you can use any subdomain name&lt;/strong&gt; that you want.&lt;/p&gt;
&lt;p&gt;With most of the good domain names taken, this may be your best option.  I&amp;#8217;m not sure why we aren&amp;#8217;t seeing more of this.  Given how easy it is to put up a website these days, its likely that people will start to have multiple websites and this would be a perfect strategy.  However, you may have to &lt;a target="_blank" title="Think Two Products Ahead: Secrets the Big Advertising Agencies Don't Want You to Know and How to Use Them for Bigger Profits" href="http://www.amazon.com/exec/obidos/ASIN/0470055766/billeisenhauerco"&gt;Think Two Products Ahead&lt;/a&gt; and have thought about the brand behind your properties.&lt;/p&gt;
&lt;p&gt;I had this thought many months ago and searched for a domain name to use.  Even finding one was difficult, but I was able to do it &amp;#8212; I&amp;#8217;m sure you can too.  The domain name that I chose is &lt;a target="_blank" title="NeatoIdea.com" href="http://neatoidea.com"&gt;neatoidea.com&lt;/a&gt; (nothing there yet), which has a sort of quirky retro feel and could be used for any of my properties.  So now I can create http://&lt;mycoolname&gt;.neatoidea.com and I&amp;#8217;m all set.&lt;/p&gt;
&lt;p&gt;Of course, you will have to decide whether you want coordinated accounts for your properties or whether they each stand on their own, so a little planning is in order.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s hoping this is a helpful, if not neato idea for you&amp;#8230;
&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=mH8zynHR"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=mH8zynHR" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=gUSwnjE4"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=gUSwnjE4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=sjFDPVLM"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=sjFDPVLM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/122084064" height="1" width="1"/&gt;</content>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=BillEisenhauer&amp;itemurl=http%3A%2F%2Fblog.billeisenhauer.com%2F2007%2F06%2F04%2Fjust-one-domain-name%2F</feedburner:awareness><feedburner:origLink>http://blog.billeisenhauer.com/2007/06/04/just-one-domain-name/</feedburner:origLink></entry>
		<entry>
	  	<author>
			<name>Bill Eisenhauer</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Think Weeks Approaches]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/117016513/" />
		<id>http://blog.billeisenhauer.com/2007/05/15/think-weeks-approaches/</id>
		<modified>2007-05-16T01:41:45Z</modified>
		<issued>2007-05-16T01:41:45Z</issued>
		
	<dc:subject>General</dc:subject>
	<dc:subject>Business Strategy</dc:subject> 
		<summary type="text/html" mode="escaped">I read somewhere that Bill Gates retreats for a few weeks to read whitepapers and books in order to strategize for the future.  I know there are fewer Bill Gates fans out there these days, but idea has definite merit.  So as I embark on another vacation, I usually spend a couple of weeks trying [...]</summary>
		<content type="text/html" mode="escaped" xml:base="http://blog.billeisenhauer.com/2007/05/15/think-weeks-approaches/">&lt;p&gt;I read somewhere that Bill Gates retreats for a few weeks to read whitepapers and books in order to strategize for the future.  I know there are fewer Bill Gates fans out there these days, but idea has definite merit.  So as I embark on another vacation, I usually spend a couple of weeks trying to decide what readings I&amp;#8217;m going to take along with me.  Of course, I never work through every book I take, I just want to have the variety around me just in case I stall on a book or just am in a different mood on a particular day.&lt;/p&gt;
&lt;p&gt;So what am I taking this year?  In no particular order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a target="_blank" title="Made to Stick" href="http://www.amazon.com/gp/product/1400064287/102-6508864-5788138?ie=UTF8&amp;#038;tag=billeisenhauerco&amp;#038;linkCode=xm2&amp;#038;camp=1789&amp;#038;creativeASIN=1400064287"&gt;Made to Stick&lt;/a&gt; by Chip and Dan Heath.&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" title="Mavericks at Work" href="http://www.amazon.com/gp/product/0060779616/102-6508864-5788138?ie=UTF8&amp;#038;tag=billeisenhauerco&amp;#038;linkCode=xm2&amp;#038;camp=1789&amp;#038;creativeASIN=0060779616"&gt;Mavericks at Work&lt;/a&gt; by William C. Taylor and Polly G. LaBarre&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" title="Wikinomics" href="http://www.amazon.com/gp/product/1591841380/102-6508864-5788138?ie=UTF8&amp;#038;tag=billeisenhauerco&amp;#038;linkCode=xm2&amp;#038;camp=1789&amp;#038;creativeASIN=1591841380"&gt;Wikinomics&lt;/a&gt; by Don Tapscott and Anthony D. Williams&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" title="The Wisdom of Crowds" href="http://www.amazon.com/gp/product/0385721706/102-6508864-5788138?ie=UTF8&amp;#038;tag=billeisenhauerco&amp;#038;linkCode=xm2&amp;#038;camp=1789&amp;#038;creativeASIN=0385721706"&gt;The Wisdom of Crowds&lt;/a&gt; by James Surowiecki&lt;/li&gt;
&lt;li&gt;&lt;a target="_blank" title="Dreaming in Code" href="http://www.amazon.com/gp/product/1400082463/102-6508864-5788138?ie=UTF8&amp;#038;tag=billeisenhauerco&amp;#038;linkCode=xm2&amp;#038;camp=1789&amp;#038;creativeASIN=1400082463"&gt;Dreaming in Code&lt;/a&gt; by Scott Rosenberg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You&amp;#8217;ll note that none of these books is technical in nature &amp;#8212; well, you could make a case for Dreaming in Code, but its certainly a different sort of book about technology.  I get a full dose of technology during the other 50 weeks of the year.  I treat these two weeks as an opportunity to read about business strategy, marketing, innovation, or human behavior.&lt;/p&gt;
&lt;p&gt;So why this mix of books.  Made to Stick is about the science of memorable ideas and appears to be incredibly well-written.  I am guessing I&amp;#8217;ll power through this book and maybe even complete it on the plane.  Who among us does not need to know how to sell their ideas?  You need this skill every day, though admittedly some ideas are bigger and deserve more attention in their craftsmanship.&lt;/p&gt;
&lt;p&gt;I have already read over half of Mavericks at Work, so this one will get finished fast as well.  I enjoy reading about creativity in the workplace.  If you&amp;#8217;ve been in a culture where you feel somewhat suppressed, reading a book like this gives you hope and inspiration for the future.  I&amp;#8217;m particularly enjoying the sections that talk about Southwest Airlines since they are a local company.  Their culture seems to be remarkable.&lt;/p&gt;
&lt;p&gt;Wikinomics and The Wisdom of Crowds are two books that center are on group behavior in the online and offline worlds.  Though the perspectives are different, I&amp;#8217;m very interested to read about each.  I&amp;#8217;m reading these two for insight into the growing popularity for social websites.  And who knows, maybe I have an idea rolling around in my head that needs to be nourished.&lt;/p&gt;
&lt;p&gt;And finally, Dreaming in Code.  This looks like an interesting book, though I can see myself stalling out on it as it might remind me too much of the other 50 weeks in my life.  I&amp;#8217;m not sure when I&amp;#8217;ll start this one, but it will get read at some point.  At any rate, I would really like to see what others&amp;#8217; experiences are.&lt;/p&gt;
&lt;p&gt;Not making the trip is &lt;a target="_blank" title="Release It" href="http://www.amazon.com/gp/product/0978739213/102-6508864-5788138?ie=UTF8&amp;#038;tag=billeisenhauerco&amp;#038;linkCode=xm2&amp;#038;camp=1789&amp;#038;creativeASIN=0978739213"&gt;Release It&lt;/a&gt; which is a book about properly architecting systems for their life in a production environment.  You say that every system eventually goes to production, eh?  This would be true, but you&amp;#8217;d be surprised how little thought goes into the post-development landscape.  I have read the first part of this book and many of the anecdotes are ringing very true and familiar.  But of course, as I say that, don&amp;#8217;t think that I design crappy systems.  All I can say is that sometimes constraints beyond your control lead you down a sub-optimal path.  The trick is to minimize risks in the face of the constraints you will surely have.  Obviously, this book doesn&amp;#8217;t make the trip because this is the life I lead outside of Think Weeks.
&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=p0qFTQbn"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=p0qFTQbn" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=9vKHF5Kd"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=9vKHF5Kd" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=4CnnP6l9"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=4CnnP6l9" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/117016513" height="1" width="1"/&gt;</content>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=BillEisenhauer&amp;itemurl=http%3A%2F%2Fblog.billeisenhauer.com%2F2007%2F05%2F15%2Fthink-weeks-approaches%2F</feedburner:awareness><feedburner:origLink>http://blog.billeisenhauer.com/2007/05/15/think-weeks-approaches/</feedburner:origLink></entry>
		<entry>
	  	<author>
			<name>Bill Eisenhauer</name>
		</author>
		<title type="text/html" mode="escaped"><![CDATA[Your questions about hire.billeisenhauer.com]]></title>
		<link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/116493042/" />
		<id>http://blog.billeisenhauer.com/2007/05/13/your-questions-about-hirebilleisenhauercom/</id>
		<modified>2007-05-14T05:55:51Z</modified>
		<issued>2007-05-14T05:55:51Z</issued>
		
	<dc:subject>Ruby on Rails</dc:subject>
	<dc:subject>Ruby</dc:subject> 
		<summary type="text/html" mode="escaped">A few people have asked about my &amp;#8220;hire me&amp;#8221; site, so I thought I&amp;#8217;d answer them here for everyone.
The first question was how did what I put together differ or distinguish me from what anyone could do with a Linkedin profile?  Good question.  A Linkedin profile probably will get more visits based upon [...]</summary>
		<content type="text/html" mode="escaped" xml:base="http://blog.billeisenhauer.com/2007/05/13/your-questions-about-hirebilleisenhauercom/">&lt;p&gt;A few people have asked about &lt;a target="_blank" title="Hire Me" href="http://hire.billeisenhauer.com"&gt;my &amp;#8220;hire me&amp;#8221; site&lt;/a&gt;, so I thought I&amp;#8217;d answer them here for everyone.&lt;br /&gt;
The first question was how did what I put together differ or distinguish me from what anyone could do with a Linkedin profile?  Good question.  A Linkedin profile probably will get more visits based upon Linkedin&amp;#8217;s popularity.  However, I would not be able to provide PDF and Word versions of my resume, work samples, and tinker with my SEO.  At present, if you enter &amp;#8220;Bill Eisenhauer&amp;#8221; into Google, you&amp;#8217;ll see a Linkedin profile under that name as the 5th choice &amp;#8212; unfortunately, that&amp;#8217;s not my profile.&lt;/p&gt;
&lt;p&gt;The next question is: would you consider productizing it to enable others to have online resumes?  The answer is: maybe.  If I was convinced that I could find enough paying customers, I would.  However, I&amp;#8217;m not sure I could do that.  I will say that it is nice to be able to point recruiters and potential employers to the site for resumes, samples, and testimonials.&lt;/p&gt;
&lt;p&gt;Another question is: what&amp;#8217;s up with the odd classes in some of the markup?  Well, that&amp;#8217;s &lt;a title="Microformats" target="_blank" href="http://microformats.org/"&gt;microformats&lt;/a&gt;.  I am tinkering with hResume, hReview, and hCard.  You can download a Firefox extension which alerts you when microformats are present on a page and on my site you can see microformats on about half the pages.  For now, I&amp;#8217;m probably about the only one who thinks this is cool, but such is the life of an early-adopter.&lt;/p&gt;
&lt;p&gt;Lastly, I&amp;#8217;ve had a couple of recruiters ask about the effects found on the site (e.g. samples, about - tag cloud).  That&amp;#8217;s some Javascript and AJAX just for the heck of it.  Its kinda cool to refer a recruiter to my site when they are asking if I&amp;#8217;ve ever done any AJAX.  So, not hugely useful, but mildly demonstrative of my skills.&lt;/p&gt;
&lt;p&gt;I have surmised that my ability to code in Ruby is not of much value to the Java community.  There&amp;#8217;s just not much crossover between the two.  So while I like coding in Ruby and Rails, it would appear that I won&amp;#8217;t be paid to do so anytime soon.
&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=8Sg0CtQA"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=8Sg0CtQA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=suS5I1gA"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=suS5I1gA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/BillEisenhauer?a=JSWnTJL9"&gt;&lt;img src="http://feeds.feedburner.com/~f/BillEisenhauer?i=JSWnTJL9" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/116493042" height="1" width="1"/&gt;</content>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetItemData?uri=BillEisenhauer&amp;itemurl=http%3A%2F%2Fblog.billeisenhauer.com%2F2007%2F05%2F13%2Fyour-questions-about-hirebilleisenhauercom%2F</feedburner:awareness><feedburner:origLink>http://blog.billeisenhauer.com/2007/05/13/your-questions-about-hirebilleisenhauercom/</feedburner:origLink></entry>
	<feedburner:awareness>http://api.feedburner.com/awareness/1.0/GetFeedData?uri=BillEisenhauer</feedburner:awareness><entry><title>Links for 2006-11-01 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/44212230/eisenb" /><issued>2006-11-02T00:00:00-06:00</issued><modified>2006-11-02T00:00:00-06:00</modified><id>http://del.icio.us/eisenb#2006-11-01</id><summary type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.sitepoint.com/article/html-37-steps-perfect-markup"&gt;Bulletproof HTML: 37 Steps to Perfect Markup [HTML &amp;amp; XHTML Tutorials]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary><content type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.sitepoint.com/article/html-37-steps-perfect-markup"&gt;Bulletproof HTML: 37 Steps to Perfect Markup [HTML &amp;amp; XHTML Tutorials]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/44212230"/&gt;</content><feedburner:origLink>http://del.icio.us/eisenb#2006-11-01</feedburner:origLink></entry><entry><title>Links for 2006-10-28 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/43846064/eisenb" /><issued>2006-10-29T00:00:00-05:00</issued><modified>2006-10-29T00:00:00-05:00</modified><id>http://del.icio.us/eisenb#2006-10-28</id><summary type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.naffis.com/blog/articles/2006/08/31/rails-ajax-star-rating-system"&gt;Dave Naffis : Ruby on Rails, Ajax &amp;amp; CSS Star Rating System&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary><content type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.naffis.com/blog/articles/2006/08/31/rails-ajax-star-rating-system"&gt;Dave Naffis : Ruby on Rails, Ajax &amp;amp; CSS Star Rating System&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/43846064"/&gt;</content><feedburner:origLink>http://del.icio.us/eisenb#2006-10-28</feedburner:origLink></entry><entry><title>Links for 2006-10-24 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/43846065/eisenb" /><issued>2006-10-25T00:00:00-05:00</issued><modified>2006-10-25T00:00:00-05:00</modified><id>http://del.icio.us/eisenb#2006-10-24</id><summary type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.vixiom.com/2006/10/12/media-temple-tames-the-beast-new-ruby-on-rails-hosting-service-with-mongrel/"&gt;Vixiom Axioms &amp;raquo; Media Temple Tames the Beast - New Ruby on Rails Hosting Service with Mongrel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary><content type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.vixiom.com/2006/10/12/media-temple-tames-the-beast-new-ruby-on-rails-hosting-service-with-mongrel/"&gt;Vixiom Axioms &amp;raquo; Media Temple Tames the Beast - New Ruby on Rails Hosting Service with Mongrel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/43846065"/&gt;</content><feedburner:origLink>http://del.icio.us/eisenb#2006-10-24</feedburner:origLink></entry><entry><title>Links for 2006-10-22 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/43846066/eisenb" /><issued>2006-10-23T00:00:00-05:00</issued><modified>2006-10-23T00:00:00-05:00</modified><id>http://del.icio.us/eisenb#2006-10-22</id><summary type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://julik.textdriven.com/svn/tools/rails_plugins/unicode_hacks/UNICODE_PRIMER"&gt;Summary of unicode approaches for Rails.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary><content type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://julik.textdriven.com/svn/tools/rails_plugins/unicode_hacks/UNICODE_PRIMER"&gt;Summary of unicode approaches for Rails.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/43846066"/&gt;</content><feedburner:origLink>http://del.icio.us/eisenb#2006-10-22</feedburner:origLink></entry><entry><title>Links for 2006-09-29 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/43846067/eisenb" /><issued>2006-09-30T00:00:00-05:00</issued><modified>2006-09-30T00:00:00-05:00</modified><id>http://del.icio.us/eisenb#2006-09-29</id><summary type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.bleything.net/articles/2005/12/07/fun-with-shell-scripting-in-ruby"&gt;fun with shell scripting in ruby&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary><content type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.bleything.net/articles/2005/12/07/fun-with-shell-scripting-in-ruby"&gt;fun with shell scripting in ruby&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/43846067"/&gt;</content><feedburner:origLink>http://del.icio.us/eisenb#2006-09-29</feedburner:origLink></entry><entry><title>Links for 2006-09-28 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/43846068/eisenb" /><issued>2006-09-29T00:00:00-05:00</issued><modified>2006-09-29T00:00:00-05:00</modified><id>http://del.icio.us/eisenb#2006-09-28</id><summary type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gemjack.com/gems/ruby-net-ldap-0.0.1/classes/Net/LDAP.html"&gt;Class: Net::LDAP&lt;/a&gt;&lt;br/&gt;
Net::LDAP&lt;/li&gt;
&lt;/ul&gt;</summary><content type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://gemjack.com/gems/ruby-net-ldap-0.0.1/classes/Net/LDAP.html"&gt;Class: Net::LDAP&lt;/a&gt;&lt;br/&gt;
Net::LDAP&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/43846068"/&gt;</content><feedburner:origLink>http://del.icio.us/eisenb#2006-09-28</feedburner:origLink></entry><entry><title>Links for 2006-09-19 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/BillEisenhauer/~3/43846069/eisenb" /><issued>2006-09-20T00:00:00-05:00</issued><modified>2006-09-20T00:00:00-05:00</modified><id>http://del.icio.us/eisenb#2006-09-19</id><summary type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.cs.rit.edu/~cslab/vi.html#A1.9"&gt;vi Editor Commands&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</summary><content type="text/html" mode="escaped">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.cs.rit.edu/~cslab/vi.html#A1.9"&gt;vi Editor Commands&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/BillEisenhauer/~4/43846069"/&gt;</content><feedburner:origLink>http://del.icio.us/eisenb#2006-09-19</feedburner:origLink></entry></feed>
