<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.0.4" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>Neal Enssle</title>
	<link>http://nealenssle.com/blog</link>
	<description></description>
	<pubDate>Sun, 22 Jul 2007 12:13:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.4</generator>
	<language>en</language>
			<item>
		<title>How to turn a string into CamelCase in Ruby</title>
		<link>http://nealenssle.com/blog/2007/07/21/how-to-turn-a-string-into-a-wikiword-in-ruby/</link>
		<comments>http://nealenssle.com/blog/2007/07/21/how-to-turn-a-string-into-a-wikiword-in-ruby/#comments</comments>
		<pubDate>Sun, 22 Jul 2007 03:09:24 +0000</pubDate>
		<dc:creator>neal</dc:creator>
		
	<category>Programming</category>
	<category>Ruby on Rails</category>
	<category>Code</category>
	<category>HowTo</category>
		<guid isPermaLink="false">http://nealenssle.com/blog/2007/07/21/how-to-wikify-a-string-in-ruby/</guid>
		<description><![CDATA[Here&#8217;s a function to turn any given string into a CamelCase &#8220;WikiWord&#8221; in Ruby:

def wikify(phrase)
  phrase.gsub!(/^[a-z]&#124;s+[a-z]/) { &#124;a&#124; a.upcase }
  phrase.gsub!(/s/, '')
  return phrase
end

Voila.  This turns &#8220;my dog has fleas&#8221; into &#8220;MyDogHasFleas&#8221;.  
Note: I&#8217;m sure there&#8217;s a way to fix this so that it&#8217;s just one regular expression?  Feel [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a function to turn any given string into a <a href="http://en.wikipedia.org/wiki/CamelCase">CamelCase</a> &#8220;WikiWord&#8221; in Ruby:</p>
<pre>
def wikify(phrase)
  phrase.gsub!(/^[a-z]|s+[a-z]/) { |a| a.upcase }
  phrase.gsub!(/s/, '')
  return phrase
end
</pre>
<p>Voila.  This turns &#8220;my dog has fleas&#8221; into &#8220;MyDogHasFleas&#8221;.  </p>
<p>Note: I&#8217;m sure there&#8217;s a way to fix this so that it&#8217;s just one regular expression?  Feel free to chime in!
</p>
]]></content:encoded>
			<wfw:commentRSS>http://nealenssle.com/blog/2007/07/21/how-to-turn-a-string-into-a-wikiword-in-ruby/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>How to dynamically update form elements in Rails using Ajax</title>
		<link>http://nealenssle.com/blog/2007/04/12/how-to-dynamically-update-form-elements-in-rails-using-ajax/</link>
		<comments>http://nealenssle.com/blog/2007/04/12/how-to-dynamically-update-form-elements-in-rails-using-ajax/#comments</comments>
		<pubDate>Thu, 12 Apr 2007 12:15:34 +0000</pubDate>
		<dc:creator>neal</dc:creator>
		
	<category>Programming</category>
	<category>Ajax</category>
	<category>Ruby on Rails</category>
	<category>Code</category>
	<category>HowTo</category>
		<guid isPermaLink="false">http://nealenssle.com/blog/2007/04/12/how-to-dynamically-update-form-elements-in-rails-using-ajax/</guid>
		<description><![CDATA[Here&#8217;s the situation: You have two SELECT elements on a form.  When the user chooses an item out of the first SELECT element, the contents of the second SELECT element need to change and show different values based on the initial selection.
This used to take quite a bit of JavaScript wizardry.  But it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the situation: You have two SELECT elements on a form.  When the user chooses an item out of the first SELECT element, the contents of the second SELECT element need to change and show different values based on the initial selection.</p>
<p>This used to take quite a bit of JavaScript wizardry.  But it&#8217;s pretty straightforward in Rails using a bit of Ajax.  Here&#8217;s how:</p>
<p>First, make sure you&#8217;re including the Ajax libraries (Prototype, script.aculo.us, etc.) in your layout like so:</p>
<pre>
&lt;html&gt;
&lt;head&gt;
       &lt;%= javascript_include_tag :defaults %&gt;
&lt;/head&gt;
&lt;body&gt;
...
</pre>
<p>Next, create a form with your initial SELECT, and empty second SELECT, and set up field observer.  Here&#8217;s a really simple example:</p>
<pre>
&lt;form&gt;

&lt;select id=&quot;states&quot; name=&quot;states&quot;&gt;
    &lt;option value=&quot;0&quot;&gt;&lt;/option&gt;
    &lt;option value=&quot;1&quot;&gt;Colorado&lt;/option&gt;
    &lt;option value=&quot;2&quot;&gt;Illinois&lt;/option&gt;
    &lt;option value=&quot;3&quot;&gt;Wyoming&lt;/option&gt;
&lt;/select&gt;

&lt;%= observe_field &quot;states&quot;, :update =&gt; &quot;cities&quot;,
:with =&gt; &quot;city_id&quot;, :url =&gt; { :controller =&gt; &quot;test&quot;,
:action =&gt; &quot;get_cities&quot; } %&gt;

&lt;br /&gt;

&lt;select id=&quot;cities&quot; name=&quot;cities&quot;&gt;
    &lt;option&gt;&lt;/option&gt;
&lt;/select&gt;

&lt;/form&gt;
</pre>
<p>Finally, you&#8217;ll need to set up a method to handle the call from the observer and a corresponding view page to generate the HTML content that will replace everything betwen the SELECT tags in the second SELECT.  Here&#8217;s an example &quot;get_cities&quot; controller:</p>
<pre>
def get_cities
    @cities = City.find_by_state(:all)
end
</pre>
<p>And an example &quot;get_cities.rhtml&quot; file:</p>
<pre>
&lt;% for city in @cities %&gt;
    &lt;option value=&quot;&lt;%= city.id %&gt;&quot;&gt;&lt;%= city.name %&gt;&lt;/option&gt;
&lt;% end %&gt;
</pre>
<p>And there you go.  This much should dynamically update the &quot;cities&quot; SELECT element with new content every time the &quot;onchange&quot; event is fired on the initial &quot;states&quot; SELECT form element.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://nealenssle.com/blog/2007/04/12/how-to-dynamically-update-form-elements-in-rails-using-ajax/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>How to define multiple users in a Capistrano deployment file</title>
		<link>http://nealenssle.com/blog/2007/04/11/how-to-define-multiple-users-in-a-capistrano-deployment-file/</link>
		<comments>http://nealenssle.com/blog/2007/04/11/how-to-define-multiple-users-in-a-capistrano-deployment-file/#comments</comments>
		<pubDate>Wed, 11 Apr 2007 11:36:52 +0000</pubDate>
		<dc:creator>neal</dc:creator>
		
	<category>Tools</category>
	<category>Programming</category>
	<category>Ruby on Rails</category>
	<category>Code</category>
	<category>HowTo</category>
		<guid isPermaLink="false">http://nealenssle.com/blog/2007/04/11/defining-multiple-users-in-a-capistrano-deployment-file/</guid>
		<description><![CDATA[We&#8217;re just starting to get into Ruby on Rails at my work, and we&#8217;re close to deploying our first application to a production server with Capistrano.  
Capistrano makes it easy for developers to deploy code to the production server from their own workstations.  But we quickly ran into two problems:

It&#8217;s often the case [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re just starting to get into <a href="http://www.rubyonrails.org">Ruby on Rails</a> at my <a href="http://foraker.com">work</a>, and we&#8217;re close to deploying our first application to a production server with <a href="http://manuals.rubyonrails.com/read/book/17">Capistrano</a>.  </p>
<p>Capistrano makes it easy for developers to deploy code to the production server from their own workstations.  But we quickly ran into two problems:</p>
<ol>
<li>It&#8217;s often the case that a developer&#8217;s username on their local workstation is different from their username on the production server.  This requires you to set the developer&#8217;s server username in the &#8220;deploy.rb&#8221; file.  Hard-coded.</li>
<li>Hard-coding a single username makes it difficult for multiple users to share a &#8220;deploy.rb&#8221; file.
</ol>
<p>Well, it turns out that Capistrano is better than all that.  With a little bit of conditional logic and the ability for Cap to read environment variables, the problem is solved like this in the &#8220;deploy.rb&#8221; file:</p>
<pre>
if ENV["USER"] == "robert"
    set :user, "bob"
elsif ENV["USER"] == "elizabeth"
    set :user, "beth"
end
</pre>
<p>Voila.</p>
]]></content:encoded>
			<wfw:commentRSS>http://nealenssle.com/blog/2007/04/11/how-to-define-multiple-users-in-a-capistrano-deployment-file/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>How to be a business badass</title>
		<link>http://nealenssle.com/blog/2007/02/22/how-to-be-a-business-badass/</link>
		<comments>http://nealenssle.com/blog/2007/02/22/how-to-be-a-business-badass/#comments</comments>
		<pubDate>Fri, 23 Feb 2007 03:50:28 +0000</pubDate>
		<dc:creator>neal</dc:creator>
		
	<category>Management</category>
	<category>Business</category>
	<category>HowTo</category>
		<guid isPermaLink="false">http://nealenssle.com/blog/2007/02/22/how-to-be-a-business-badass/</guid>
		<description><![CDATA[There&#8217;s some great stuff to be found at one of my new favorite sites: trizle.com.
Word.

]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s some great stuff to be found at one of my new favorite sites: <a href="http://www.trizle.com">trizle.com</a>.</p>
<p>Word.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://nealenssle.com/blog/2007/02/22/how-to-be-a-business-badass/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Free Ruby e-book</title>
		<link>http://nealenssle.com/blog/2007/01/05/free-ruby-e-book/</link>
		<comments>http://nealenssle.com/blog/2007/01/05/free-ruby-e-book/#comments</comments>
		<pubDate>Fri, 05 Jan 2007 12:31:25 +0000</pubDate>
		<dc:creator>neal</dc:creator>
		
	<category>Programming</category>
	<category>Books</category>
	<category>Ruby on Rails</category>
		<guid isPermaLink="false">http://nealenssle.com/blog/2007/01/05/free-ruby-e-book/</guid>
		<description><![CDATA[Courtesy of Lifehacker (a site I&#8217;m really starting to love):
&#8220;Interested in learning Ruby, the open-source, object-oriented programming language? Start with Mr. Neighborly&#8217;s Humble Little Ruby Book, a new e-book that teaches the basics and then some.&#8221;
In addition to Mr. Neighborly&#8217;s slim volume, my growing Ruby library now includes:

Programming Ruby: The Pragmatic Programmer&#8217;s Guide, by Dave [...]]]></description>
			<content:encoded><![CDATA[<p>Courtesy of <a href="http://lifehacker.com">Lifehacker</a> (a site I&#8217;m really starting to love):</p>
<p>&#8220;Interested in learning Ruby, the open-source, object-oriented programming language? Start with <a href="http://www.lifehacker.com/software/ruby/free-ebook-teaches-ruby-programming-225976.php">Mr. Neighborly&#8217;s Humble Little Ruby Book</a>, a new e-book that teaches the basics and then some.&#8221;</p>
<p>In addition to Mr. Neighborly&#8217;s slim volume, my growing Ruby library now includes:</p>
<ul>
<li><a href="http://www.amazon.com/Programming-Ruby-Pragmatic-Programmers-Second/dp/0974514055/sr=1-1/qid=1168000206/ref=sr_1_1/103-7362971-1034202?ie=UTF8&#038;s=books">Programming Ruby</a>: The Pragmatic Programmer&#8217;s Guide, by Dave Thomas (the &#8220;pickaxe&#8221; book)</li>
<li><a href="http://www.amazon.com/Agile-Development-Rails-Dave-Thomas/dp/0977616630/sr=8-1/qid=1168000055/ref=sr_1_1/103-7362971-1034202?ie=UTF8&#038;s=books">Agile Web Development with Rails</a>, by Dave Thomas and David Hansson (the long-awaited 2nd edition, no less)</li>
<li><a href="http://www.amazon.com/Cookbook-Cookbooks-OReilly-Lucas-Carlson/dp/0596523696/sr=1-1/qid=1168000101/ref=pd_bbs_sr_1/103-7362971-1034202?ie=UTF8&#038;s=books">Ruby Cookbook</a>, by Carlson and Richardson (O&#8217;Reilly)</li>
</ul>
<p>Most programming gurus recommend learning at least one new programming language per year.  Looks like in 2007 it&#8217;s going to be Ruby for me assuming I find time to do something I only rarely managed to do in grad school: Actually read the books I buy.</p>
]]></content:encoded>
			<wfw:commentRSS>http://nealenssle.com/blog/2007/01/05/free-ruby-e-book/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>End of an era</title>
		<link>http://nealenssle.com/blog/2006/11/21/end-of-an-era/</link>
		<comments>http://nealenssle.com/blog/2006/11/21/end-of-an-era/#comments</comments>
		<pubDate>Tue, 21 Nov 2006 12:21:21 +0000</pubDate>
		<dc:creator>neal</dc:creator>
		
	<category>Work</category>
	<category>Life</category>
		<guid isPermaLink="false">http://nealenssle.com/blog/2006/11/17/end-of-an-era/</guid>
		<description><![CDATA[As many of you know, I&#8217;ve decided to leave my current place of employment and pursue a new opportunity as Director of Web Development at a small web development shop in Boulder.
Both Tara and I are extremely excited about this opportunity.  Foraker Design is a very small company (I&#8217;m employee number 9!), but they&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>As many of you know, I&#8217;ve decided to leave my current place of employment and pursue a new opportunity as Director of Web Development at a small web development shop in Boulder.</p>
<p>Both Tara and I are extremely excited about this opportunity.  <a href="http://foraker.com">Foraker Design</a> is a very small company (I&#8217;m employee number 9!), but they&#8217;re growing fast.  In this role I&#8217;ll have a chance to do quite a bit more &#8220;hands on&#8221; programming than I was afforded at Insight (the breakdown should end up being about 75% programming / 25% managing), and since Foraker is job shop that gets business from all shapes and sizes, I&#8217;ll also get a chance to play with some of the technologies and languages all the &#8220;kids&#8221; are raving about: Ruby, PHP, ASP, Java, et cetera.  And while several people have commented on how leaving the &#8220;safety&#8221; of a big corporate environment is borderline crazy, in many ways I feel much more secure in working for a company where the employees are more than just entries on someone else&#8217;s budget sheet, and where I&#8217;ll likely have more say in our collective direction.</p>
<p>Yet the parting is obviously bittersweet.  After four and a half years, I&#8217;ve made many, many friends at <a href="http://acxiominsight.com">Insight</a>.  I am enormously grateful for the support, guidance, and encouragement I received during my tenure. I had so many teachers, from every part and every level of the organization. I thank all of them for allowing me to learn as we helped grow this business together. I am especially grateful to the members of the Software Development team, whom I now leave in my successor’s exceedingly capable hands: Thank you for your support and friendship, for the opportunity to be a part of the most dynamic and talented team of developers on the Front Range, and for all that you have taught me over the last few years. It has been an honor and a privilege to serve you. I will miss you all.</p>
<p>I&#8217;ll start up again after the Thanksgiving holiday with a full belly and much enthusiasm for the new challenges that lay ahead.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://nealenssle.com/blog/2006/11/21/end-of-an-era/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>How to be more efficient</title>
		<link>http://nealenssle.com/blog/2006/10/24/slack/</link>
		<comments>http://nealenssle.com/blog/2006/10/24/slack/#comments</comments>
		<pubDate>Tue, 24 Oct 2006 12:49:57 +0000</pubDate>
		<dc:creator>neal</dc:creator>
		
	<category>Books</category>
	<category>Management</category>
	<category>HowTo</category>
		<guid isPermaLink="false">http://nealenssle.com/blog/2006/10/24/slack/</guid>
		<description><![CDATA[I&#8217;m reading another brilliant book by Tom DeMarco (author of the excellent Peopleware) called Slack.  His basic point is that the drive toward superefficiency is costing us more than it brings in lost creativity and effectiveness.
Key is a quote by Tom Lister (I just posted this over at CodeQuotes):
People under time pressure don&#8217;t think [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m reading another brilliant book by <a href="http://en.wikipedia.org/wiki/Tom_DeMarco">Tom DeMarco</a> (author of the excellent <a href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Ed/dp/0932633439/sr=1-1/qid=1161694047/ref=sr_1_1/104-5680399-8775110?ie=UTF8&#038;s=books">Peopleware</a>) called <a href="http://www.amazon.com/Slack-Getting-Burnout-Busywork-Efficiency/dp/0767907698/sr=8-1/qid=1161694005/ref=pd_bbs_sr_1/104-5680399-8775110?ie=UTF8&#038;s=books">Slack</a>.  His basic point is that the drive toward superefficiency is costing us more than it brings in lost creativity and effectiveness.</p>
<p>Key is a quote by Tom Lister (I just posted this over at <a href="http://codequotes.com/2006/10/24/lister-think-faster">CodeQuotes</a>):</p>
<blockquote><p>People under time pressure don&#8217;t <em>think</em> faster.</p></blockquote>
<p>More on this topic to come, but let&#8217;s just say that I&#8217;ve bought a couple of copies of this book for some colleagues and executives at my current place of employment.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://nealenssle.com/blog/2006/10/24/slack/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>How to roll your own Ajax</title>
		<link>http://nealenssle.com/blog/2006/09/26/simple-ajax/</link>
		<comments>http://nealenssle.com/blog/2006/09/26/simple-ajax/#comments</comments>
		<pubDate>Tue, 26 Sep 2006 11:54:52 +0000</pubDate>
		<dc:creator>neal</dc:creator>
		
	<category>Programming</category>
	<category>Ajax</category>
	<category>Code</category>
	<category>HowTo</category>
		<guid isPermaLink="false">http://nealenssle.com/blog/2006/09/26/simple-ajax/</guid>
		<description><![CDATA[A little while ago I decided I needed to get my head around this whole &#8220;Ajax&#8221; thing.  From Wikipedia:
Ajax, shorthand for Asynchronous JavaScript and XML, is a web development technique for creating interactive web applications. The intent is to make web pages feel more responsive by exchanging small amounts of data with the server [...]]]></description>
			<content:encoded><![CDATA[<p>A little while ago I decided I needed to get my head around this whole &#8220;Ajax&#8221; thing.  From <a href="http://en.wikipedia.org/wiki/Ajax_%28programming%29">Wikipedia</a>:</p>
<blockquote><p>Ajax, shorthand for Asynchronous JavaScript and XML, is a web development technique for creating interactive web applications. The intent is to make web pages feel more responsive by exchanging small amounts of data with the server behind the scenes, so that the entire web page does not have to be reloaded each time the user makes a change. This is meant to increase the web page&#8217;s interactivity, speed, and usability.</p></blockquote>
<p>Mainly it was for a couple of issues we were having at work, but I&#8217;ve <a title="ColdFusion Developer's Journal: HTTP status code 204" href="http://coldfusion.sys-con.com/read/46789.htm">long been a fan</a> of the &#8220;magic&#8221; behind sites like Amazon, Flickr, and 30boxes. </p>
<p>So, after quite a bit of searching around in books and blogs, I managed to cobble together a couple of extremely simple scripts that take most of the mystique out of Ajax.  </p>
<p>In fact, we&#8217;re also taking the &#8220;x&#8221; (for XML) out of Ajax, since this routine works by having your page call a JavaScript function that passes a request to some server-side code which then returns pure HTML.  This HTML gets inserted into a container <code>div</code> on the calling page.</p>
<p>So here we go with the tutorial.  An Ajax &#8220;how-to&#8221; in three easy steps (you can also <a href="http://nealenssle.com/blog/files/simpleajax.zip">download the code</a>):</p>
<p>First things first, you need to get a &#8220;request object&#8221; that handles sending your request to the server.  So we need a JavaScript function (inside a <code>script</code> block):</p>
<pre>// initAjaxRequest():
//    Create a request object, based on browser type:

function initAjaxRequest() {
    var request;
    if (window.ActiveXObject) {
        request = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
        request = new XMLHttpRequest();
    }
    return request;
}
</pre>
<p>Next, you&#8217;ll need to instantiate the request object at some point (this happens inside a JavaScript <code>script</code> block but outside of any function):</p>
<pre>// Set a variable to hold an Ajax request object:

var ajaxRequest = initAjaxRequest();
</pre>
<p>Finally, you&#8217;ll need a JavaScript function that you can call to actually send the request to the server.  The following function (inside a <code>script</code> block) takes URL parameter (that&#8217;s the server-side module, servlet, or page that will produce some HTML for us), along with a second parameter (&#8221;container&#8221;) that tells us where to put the resulting HTML:</p>
<pre>// sendAjaxGetRequest(url, container):
//    Send an asychronous request to a specific URL,
//    designating CSS container ID to hold the
//    response information (HTML).

function sendAjaxGetRequest(url, container) {
    ajaxRequest.open('GET', url);
    ajaxRequest.setRequestHeader("Content-Type",
        "application/x-www-form-urlencoded");
    ajaxRequest.onreadystatechange = function() {
        if (ajaxRequest.readyState == 4 &#038;&#038;
            ajaxRequest.status == 200) {
            document.getElementById(container).innerHTML =
                ajaxRequest.responseText;
        }
    }
    ajaxRequest.send(null);
}
</pre>
<p>Now, to actually use these JavaScript functions, all we need to do is:</p>
<p>1. Call the JavaScript <code>sendAjaxGetRequest(url, container)</code> function (perhaps via an &#8220;onclick&#8221; handler), specifying the URL of a page that &#8220;does something&#8221; on the server-side, and a &#8220;container&#8221;.  For example:</p>
<p><code>&lt;p onclick=&quot;sendAjaxGetRequest('doSomething.htm', 'responseDiv');&quot;&gt;Do something!&lt;/p&gt;</code></p>
<p>2. Make sure we have a &#8220;container&#8221; <code>div</code> on the calling page that will hold the resulting HTML.  For example:</p>
<p><code>&lt;div id=&quot;responseDiv&quot;&gt;&lt;/div&gt;</code></p>
<p>Note that &#8220;doing something&#8221; can be as simple as printing any HTML to the screen. For example, the &#8220;doSomething.htm&#8221; page could simply look like this:</p>
<p><code>&lt;p&gt;I did something!&lt;/p&gt;</code></p>
<p>Of course, this target page could be far more complex, such as a PHP page, ColdFusion template, or Java servlet that updates a database.  The point of Ajax is just that you&#8217;re now able to post a request to the server, do something, and get information back without having to refresh the page.</p>
<p>If you want to send form fields via a POST instead URL parameters via a GET, here&#8217;s a slightly different function:</p>
<pre>
function sendAjaxPostRequest(url, parameters, container) {
    ajaxRequest.open('POST', url);
    ajaxRequest.setRequestHeader("Content-Type",
        "application/x-www-form-urlencoded");
    ajaxRequest.onreadystatechange = function() {
        if (ajaxRequest.readyState == 4 &#038;&#038;
            ajaxRequest.status == 200) {
            document.getElementById(container).innerHTML =
                ajaxRequest.responseText;
        }
    }
    ajaxRequest.send(parameters);
}
</pre>
<p>This function takes a &#8220;parameters&#8221; argument, which can be an encoded string of form field parameters.  For example:</p>
<pre>
var url = "doSomething.php";
var parameters = "myField=" +
    encodeURI(document.myForm.myField.value);
sendAjaxPostRequest(url, parameters, "responseDiv");
</pre>
<p>That&#8217;s mostly it.  Enjoy!  (Again: You can <a href="http://nealenssle.com/blog/files/simpleajax.zip">download the code</a>).
</p>
]]></content:encoded>
			<wfw:commentRSS>http://nealenssle.com/blog/2006/09/26/simple-ajax/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>The blog is back</title>
		<link>http://nealenssle.com/blog/2006/09/24/the-blog-is-back/</link>
		<comments>http://nealenssle.com/blog/2006/09/24/the-blog-is-back/#comments</comments>
		<pubDate>Sun, 24 Sep 2006 23:47:04 +0000</pubDate>
		<dc:creator>neal</dc:creator>
		
	<category>Meta</category>
		<guid isPermaLink="false">http://nealenssle.com/blog/?p=7</guid>
		<description><![CDATA[Recently, my homepage has been fairly lame, featuring only a couple of links to the family site, to the now-infrequently-updated CodeQuotes, and to my resume.
I’m thinking, however, that I’d like to post the occasional thought or two.
The blog is back.

]]></description>
			<content:encoded><![CDATA[<p>Recently, my homepage has been fairly lame, featuring only a couple of links to the <a title="Enssle Family" href="http://ensslefamily.com">family site</a>, to the now-infrequently-updated <a title="CodeQuotes" href="http://codequotes.com">CodeQuotes</a>, and to my <a title="Resume: Neal Enssle" href="http://nealenssle.com/resume/Resume_NealEnssle.pdf">resume</a>.</p>
<p>I’m thinking, however, that I’d like to post the occasional thought or two.</p>
<p>The blog is back.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://nealenssle.com/blog/2006/09/24/the-blog-is-back/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
