<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>buntin.org</title>
	<atom:link href="http://buntin.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://buntin.org</link>
	<description></description>
	<lastBuildDate>Fri, 13 May 2011 00:29:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>OS X, Hombrew, MacVim and Python 2.7.1 troubles</title>
		<link>http://buntin.org/2011/05/12/os-x-hombrew-macvim-and-python-2-7-1-troubles/</link>
		<comments>http://buntin.org/2011/05/12/os-x-hombrew-macvim-and-python-2-7-1-troubles/#comments</comments>
		<pubDate>Thu, 12 May 2011 19:53:18 +0000</pubDate>
		<dc:creator>sethtrain</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://buntin.org/?p=113</guid>
		<description><![CDATA[Recently I decided to switch over to Vim from Emacs.  It was just a test to see what a Python development environment would be like and I must say I am quite pleased.  I ran into a couple of problems along the way.  This article got me started.  The process I [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I decided to switch over to Vim from Emacs.  It was just a test to see what a Python development environment would be like and I must say I am quite pleased.  I ran into a couple of problems along the way.  <a href="http://sontek.net/turning-vim-into-a-modern-python-ide">This article</a> got me started.  The process I am about to detail wasn&#8217;t what I really wanted but it accomplishes my end goal which was to have MacVim set up to use my &#8220;homebrewed&#8221; Python install and work well with the virtualenv settings discussed in the article.</p>
<p>Python needs to be installed with the &#8220;framework&#8221; option:</p>
<pre class="brush: bash; title: ;">
$ brew install python --framework
</pre>
<p>Next you need to update the &#8220;Current&#8221; OS X symbolic link:</p>
<pre class="brush: bash; title: ;">
$ cd /System/Library/Frameworks/Python.framework/Versions/
$ sudo rm Current
$ sudo ln -s /usr/local/Cellar/python/2.7.1/Frameworks/Python.framework/Versions/Current
</pre>
<p>If you have to remove your current python installation (installed with homebrew) you may need to reinstall setuptools, pip, virtualenv, virtuelenvwrapper, etc.</p>
<p>For my virtualenvwrapper to work correctly I needed to take these steps and set up my .bashrc file accordingly:</p>
<pre class="brush: bash; title: ;">
$ cd /usr/local/share
$ ln -s ../Cellar/python/2.7.1/bin python
</pre>
<p>Update .bashrc:</p>
<pre class="brush: bash; title: ;">
$ export PATH=/usr/local/share/python:$PATH
</pre>
<p>Next you must install MacVim from source.  <a href="https://github.com/b4winckler/macvim/tarball/snapshot-57">Download the latest package</a>, untar and configure:</p>
<pre class="brush: bash; title: ;">
$ cd b4winckler-macvim-6e6fac5
$ ./configure --enable-gui=macvim --with-features=huge --enable-rubyinterp --enable-pythoninterp --enable-perlinterp --with-python-config-dir=/usr/local/Cellar/python/2.7.1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config
$ make
$ cp -R src/MacVim/build/Release/MacVim.app /Application
</pre>
<p>Once this is done everything seemed to work perfect!  On my Ubuntu VM I didn&#8217;t have to do anything special like this so I mark it up with how Mac OS X handles Frameworks differently from other Unix/Linux systems.</p>
<p>Hope this helps!</p>
<p><strong>Update:</strong></p>
<p>To use this compiled version in your terminal I found this alias helpful:</p>
<pre class="brush: bash; title: ;">
alias vim='/Applications/MacVim.app/Contents/MacOS/Vim'
</pre>
]]></content:encoded>
			<wfw:commentRss>http://buntin.org/2011/05/12/os-x-hombrew-macvim-and-python-2-7-1-troubles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>django-celery for non-blocking Django signals.</title>
		<link>http://buntin.org/2011/02/27/django-celery-for-non-blocking-django-signals/</link>
		<comments>http://buntin.org/2011/02/27/django-celery-for-non-blocking-django-signals/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 04:44:48 +0000</pubDate>
		<dc:creator>sethtrain</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://buntin.org/?p=96</guid>
		<description><![CDATA[So I am working on a project now that requires sending a SMS message when a certain task is performed on a model.  So my first thought was, &#8220;Okay, easy.  I can just perform those tasks with signals.&#8221;  Well, kinda.  Signals in Django are blocking and that just wasn&#8217;t going to [...]]]></description>
			<content:encoded><![CDATA[<p>So I am working on a project now that requires sending a SMS message when a certain task is performed on a model.  So my first thought was, &#8220;Okay, easy.  I can just perform those tasks with signals.&#8221;  Well, kinda.  Signals in Django are blocking and that just wasn&#8217;t going to work.  I didn&#8217;t want my users to have to wait for HTTP responses to return from sending the SMS messages.  That is where Celery and django-celery came into the picture.</p>
<p>What is Celery?</p>
<blockquote><p>&#8220;Celery is an asynchronous task queue/job queue based on distributed message passing. It is focused on real-time operation, but supports scheduling as well.&#8221;</p></blockquote>
<p>Celery&#8217;s default message broker is RabbitMQ.  Since I have had a little bit of experience with RabbitMQ from a Clojure project I worked on over a year ago that is what I chose.  To install RabbitMQ on Ubuntu:</p>
<p><code>sudo apt-get install rabbitmq-server</code></p>
<p>You can read all about how to setup django-celery in the <a href="http://ask.github.com/django-celery/">documentation</a>.  It is somewhat brief but along with <a href="http://ask.github.com/celery/">celery&#8217;s documentation</a> it will get you all the way there.</p>
<p>So what did I do to get non-blocking signals?  Well I used Django&#8217;s signals to call my celery tasks defined in <em>tasks.py</em> in my application.</p>
<pre class="brush: python; title: ;">
@receiver(post_save, sender=Reading)
def alert_delay(sender, **kwargs):
    if kwargs[&quot;created&quot;]:
        send_alerts.delay(kwargs[&quot;instance&quot;])
</pre>
<p>This delegates <em>send_alerts</em> to be called &#8220;at a later time&#8221;.  Celery handles this by pickling the arguments, queuing the task in RabbitMQ and handling the execution of the tasks &#8220;later&#8221;.</p>
<p>As I said, I did a little bit of work with Clojure and RabbitMQ.  It sure wasn&#8217;t as easy as this.  I am quite impressed, impressed enough to blog about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://buntin.org/2011/02/27/django-celery-for-non-blocking-django-signals/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flask routing tricks</title>
		<link>http://buntin.org/2010/08/26/flask-routing-tricks/</link>
		<comments>http://buntin.org/2010/08/26/flask-routing-tricks/#comments</comments>
		<pubDate>Fri, 27 Aug 2010 02:05:39 +0000</pubDate>
		<dc:creator>sethtrain</dc:creator>
				<category><![CDATA[Flask]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[flask]]></category>
		<category><![CDATA[routing]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://buntin.org/?p=52</guid>
		<description><![CDATA[While working on a project today I wondered how I might complete this particular task.  I needed user profiles.  Each profile was going to require an extra form field or two and I wanted to have different urls but the same &#8220;view&#8221;.  So I am going to show what I did to solve my [...]]]></description>
			<content:encoded><![CDATA[<p>While working on a project today I wondered how I might complete this particular task.  I needed user profiles.  Each profile was going to require an extra form field or two and I wanted to have different urls but the same &#8220;view&#8221;.  So I am going to show what I did to solve my problem.</p>
<p>Since Flask routing is just a decorator, you can add as many decorators as you want to the view function:</p>
<pre class="brush: python; title: ;">
users = Module(__name__, name=&quot;users&quot;, url_prefix=&quot;&quot;)

@users.route(&quot;/affiliates/new&quot;)
@users.route(&quot;/users/new&quot;)
def new():
    form = RegistrationForm()
    return render_template(&quot;users/new.html&quot;, form=form)
</pre>
<p>The route() function just passes keyword args onto <em><a href="http://werkzeug.pocoo.org/documentation/dev/routing.html#werkzeug.routing.Rule">werkzeug.routing.Rule</a></em> which accepts a dictionary called <em>defaults</em>.  As you would think, <em>defaults</em> sets default values to variables accepted by the view function.  So I decided to use the defaults dictionary to set the value for <em>profile_type</em>.  This will never be overwritten since I am not accepting <em>profile_type</em> as a url parameter.</p>
<pre class="brush: python; title: ;">
users = Module(__name__, name=&quot;users&quot;, url_prefix=&quot;&quot;)

@users.route(&quot;/affiliates/new&quot;,
             defaults={'profile_type': 'affiliates'})
@users.route(&quot;/users/new&quot;,
             defaults={'profile_type': 'sales'})
def new(profile_type=None):
    # Handle form with profile_type variable...
    return render_template(&quot;users/new.html&quot;, form=form)
</pre>
<p>This might be a little <em>hackish</em> but it works like I thought it would.</p>
]]></content:encoded>
			<wfw:commentRss>http://buntin.org/2010/08/26/flask-routing-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leiningen + Clojure + Google App Engine = Interesting&#8230;</title>
		<link>http://buntin.org/2010/03/02/leiningen-clojure-google-app-engine-interesting/</link>
		<comments>http://buntin.org/2010/03/02/leiningen-clojure-google-app-engine-interesting/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 20:45:53 +0000</pubDate>
		<dc:creator>sethtrain</dc:creator>
				<category><![CDATA[Clojure]]></category>

		<guid isPermaLink="false">http://buntin.org/?p=36</guid>
		<description><![CDATA[So today I started messing around with Google App Engine for Java today.  I thought it would be interesting to see how I might get this done with Leiningen.  You can take a peek at what I did in the github repo.
Basically all you do is:

$ lein deps
$ lein compile
$ dev_appserver.sh war

And that serves up [...]]]></description>
			<content:encoded><![CDATA[<p>So today I started messing around with Google App Engine for Java today.  I thought it would be interesting to see how I might get this done with Leiningen.  You can take a peek at what I did in <a href="http://github.com/sethtrain/beget">the github repo</a>.</p>
<p>Basically all you do is:</p>
<pre class="brush: bash; title: ;">
$ lein deps
$ lein compile
$ dev_appserver.sh war
</pre>
<p>And that serves up the project via the dev server.</p>
]]></content:encoded>
			<wfw:commentRss>http://buntin.org/2010/03/02/leiningen-clojure-google-app-engine-interesting/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Introducing Humongous</title>
		<link>http://buntin.org/2010/02/24/introducing-humongous/</link>
		<comments>http://buntin.org/2010/02/24/introducing-humongous/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 20:36:28 +0000</pubDate>
		<dc:creator>sethtrain</dc:creator>
				<category><![CDATA[Clojure]]></category>

		<guid isPermaLink="false">http://buntin.org/?p=33</guid>
		<description><![CDATA[Yesterday I released a simple web interface to mongoDB named Humongous, and I mean simple.  It is written in Clojure and should be really simple to get up and running given you have leiningen installed.  I really don&#8217;t have any idea where it will go from here but I want to maintain its simplicity and [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I released a simple web interface to mongoDB named <a href="http://github.com/sethtrain/humongous">Humongous</a>, and I mean simple.  It is written in Clojure and should be really simple to get up and running given you have <a href="http://github.com/technomancy/leiningen">leiningen</a> installed.  I really don&#8217;t have any idea where it will go from here but I want to maintain its simplicity and usefulness.  Props to <a href="http://github.com/wilkes">Wilkes</a> for his a really good <a href="http://github.com/wilkes/karras">mongoDB clojure library</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://buntin.org/2010/02/24/introducing-humongous/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moved to Wordpress</title>
		<link>http://buntin.org/2009/12/08/moved-to-wordpress/</link>
		<comments>http://buntin.org/2009/12/08/moved-to-wordpress/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 11:56:12 +0000</pubDate>
		<dc:creator>sethtrain</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://buntin.org/?p=3</guid>
		<description><![CDATA[I got so sick and tired of dealing with comment spam I have moved my blog to Wordpress.  I plan on migrating all of the content (that was actually looked at) in the next day or two.  Stay tuned&#8230;
]]></description>
			<content:encoded><![CDATA[<p>I got so sick and tired of dealing with comment spam I have moved my blog to Wordpress.  I plan on migrating all of the content (that was actually looked at) in the next day or two.  Stay tuned&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://buntin.org/2009/12/08/moved-to-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remote Pair Programming</title>
		<link>http://buntin.org/2009/01/08/remote-pair-programming/</link>
		<comments>http://buntin.org/2009/01/08/remote-pair-programming/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 19:45:02 +0000</pubDate>
		<dc:creator>sethtrain</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://buntin.org/?p=23</guid>
		<description><![CDATA[I know I haven&#8217;t always been the biggest fan of pair programming but I don&#8217;t think [in my past life](http://www.cabedge.com) it wasn&#8217;t a feasible solution.  At [work](http://www.notifymd.com) the other day we came up with a solution for pair programming while we are working from home.  We knocked it out and man it is pretty sweet.
Here [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">I know I haven&#8217;t always been the biggest fan of pair programming but I don&#8217;t think [in my past life](http://www.cabedge.com) it wasn&#8217;t a feasible solution.  At [work](http://www.notifymd.com) the other day we came up with a solution for pair programming while we are working from home.  We knocked it out and man it is pretty sweet.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Here are the things you are going to need</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">1) Server/Computer (with ssh access) that is accessible by both parties.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">2) The computer must have screen.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">You will need to run:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">:::bash</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$ sudo chmod u+s /usr/bin/screen</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">so that screen will allow for multiple users accessing the same executable.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Here is the [gist](http://gist.github.com/71662) of .screenrc located in your home directory.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Once you have all of this setup you are ready to go.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">1) User 1 should log into the computer and if a screen session isn&#8217;t already started run:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">:::bash</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$ screen</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">If a screen session is already started then run:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">:::bash</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">$ screen -r</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">2) User 1 should allow User 2 to access their screen session.  This is done by pressing Ctrl-A : then:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">:::bash</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">acladd *user2-ssh-username*</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">3) User 2 should ssh into the computer and run:</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">:::bash</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">screen -x *user1-username*/</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">That should be it, both users should be able to see each others work.  This functionality only works well with command line editors but Vim and Emacs are great and powerful tools that should be a part of every programmers arsenal.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">**Note:**  This assumes that all network settings are correct for each individual to access the box accordingly.</div>
<p>I know I haven&#8217;t always been the biggest fan of pair programming but I don&#8217;t think [in my past life](http://www.cabedge.com) it wasn&#8217;t a feasible solution. At <a href="http://www.notifymd.com">work</a> the other day we came up with a solution for pair programming while we are working from home.  We knocked it out and man it is pretty sweet.</p>
<p>Here are the things you are going to need</p>
<ul>
<li>Server/Computer (with ssh access) that is accessible by both parties.</li>
<li>The computer must have screen.</li>
</ul>
<p>You will need to run:</p>
<pre class="brush: bash; title: ;">$ sudo chmod u+s /usr/bin/screen</pre>
<p>so that screen will allow for multiple users accessing the same executable.</p>
<p>Here is the <a href="http://gist.github.com/71662">gist</a> of .screenrc located in your home directory.</p>
<p>Once you have all of this setup you are ready to go.</p>
<ul>
<li>User 1 should log into the computer and if a screen session isn&#8217;t already started run:</li>
</ul>
<pre class="brush: bash; title: ;">$ screen</pre>
<p>If a screen session is already started then run:</p>
<pre class="brush: bash; title: ;">$ screen -r</pre>
<ul>
<li><span style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; line-height: 19px; white-space: normal; font-size: 13px;">User 1 should allow User 2 to access their screen session.  This is done by pressing Ctrl-A : then:</span></li>
</ul>
<pre class="brush: bash; title: ;">acladd *user2-ssh-username*</pre>
<ul>
<li>User 2 should ssh into the computer and run:</li>
</ul>
<pre class="brush: bash; title: ;">screen -x *user1-username*/</pre>
<p>That should be it, both users should be able to see each others work.  This functionality only works well with command line editors but Vim and Emacs are great and powerful tools that should be a part of every programmers arsenal.</p>
<p>**Note:**  This assumes that all network settings are correct for each individual to access the box accordingly.</p>
]]></content:encoded>
			<wfw:commentRss>http://buntin.org/2009/01/08/remote-pair-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Authorize.net Clojure library</title>
		<link>http://buntin.org/2008/12/24/authorize-net-clojure-library/</link>
		<comments>http://buntin.org/2008/12/24/authorize-net-clojure-library/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 19:31:36 +0000</pubDate>
		<dc:creator>sethtrain</dc:creator>
				<category><![CDATA[Clojure]]></category>

		<guid isPermaLink="false">http://buntin.org/2008/12/24/authorize-net-clojure-library/</guid>
		<description><![CDATA[Here is my first stab at building a quick clojure library http://sethtrain.github.com/clojure-authorize/
]]></description>
			<content:encoded><![CDATA[<p>Here is my first stab at building a quick clojure library <a href="http://sethtrain.github.com/clojure-authorize/">http://sethtrain.github.com/clojure-authorize/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://buntin.org/2008/12/24/authorize-net-clojure-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clojure</title>
		<link>http://buntin.org/2008/11/13/clojure/</link>
		<comments>http://buntin.org/2008/11/13/clojure/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 15:49:30 +0000</pubDate>
		<dc:creator>sethtrain</dc:creator>
				<category><![CDATA[Clojure]]></category>

		<guid isPermaLink="false">http://buntin.org/?p=27</guid>
		<description><![CDATA[Website: http://www.clojure.org
A buddy of mine told me about a new Lisp dialect called Clojure.  I have never used Lisp before (other than setting up my Emacs environment) but this looks cool, if you can get over looking at all the parentheses.  The language is built on top of the JVM so you have [...]]]></description>
			<content:encoded><![CDATA[<p>Website: <a href="http://www.clojure.org">http://www.clojure.org</a></p>
<p>A <a href="http://draines.com">buddy</a> of mine told me about a new Lisp dialect called <a href="http://www.clojure.org">Clojure</a>.  I have never used Lisp before (other than setting up my Emacs environment) but this looks cool, if you can get over looking at all the parentheses.  The language is built on top of the JVM so you have access to any Java packages from Clojure.</p>
<p>I think this is really huge especially from the standpoint of &#8220;enterprise&#8221; development.  I develop every day in Django and Django is awesome.  One problem that I have experienced while working with a web development framework that isn&#8217;t built in .NET or Java is that you basically give up working with &#8220;enterprise&#8221; companies because they tend to not trust anything other than those two languages, which is a problem in and of itself.  Since clojure runs on JVM anything written in clojure will run on any machine running the JVM, kinda side stepping the idea that developing for &#8220;enterprise&#8221; has to be .NET or Java.</p>
<p>So I am going to look at Clojure and see what it has to offer.  I like learning new things especially when they make me more of a geek.</p>
]]></content:encoded>
			<wfw:commentRss>http://buntin.org/2008/11/13/clojure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jQuery Polling plugin</title>
		<link>http://buntin.org/2008/09/23/jquery-polling-plugin/</link>
		<comments>http://buntin.org/2008/09/23/jquery-polling-plugin/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 13:27:54 +0000</pubDate>
		<dc:creator>sethtrain</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://buntin.org/?p=8</guid>
		<description><![CDATA[I wanted to create a chatting application and decided to create a jQuery polling plugin specifically for that purpose.  I don&#8217;t know for sure if this is useful to anyone else but it works for me.

(function($) {
    $.fn.poll = function(options){
       var $this = $(this);
  [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to create a chatting application and decided to create a jQuery polling plugin specifically for that purpose.  I don&#8217;t know for sure if this is useful to anyone else but it works for me.</p>
<pre class="brush: jscript; title: ;">
(function($) {
    $.fn.poll = function(options){
       var $this = $(this);
       // extend our default options with those provided
       var opts = $.extend({}, $.fn.poll.defaults, options);
       setInterval(update, opts.interval);

       // method used to update element html
       function update(){
           $.ajax({
               type: opts.type,
               url: opts.url,
               success: opts.success
           });
       };
    };

    // default options
    $.fn.poll.defaults = {
       type: &quot;POST&quot;,
       url: &quot;.&quot;,
       success: '',
       interval: 2000
    };
})(jQuery);
</pre>
<p>*Usage*</p>
<pre class="brush: jscript; title: ;">
$(&quot;#chat&quot;).poll({
    url: &quot;/chat/ajax/1/messages/&quot;,
    interval: 3000,
    type: &quot;GET&quot;,
    success: function(data){
        $(&quot;#chat&quot;).append(data);
    }
});
</pre>
]]></content:encoded>
			<wfw:commentRss>http://buntin.org/2008/09/23/jquery-polling-plugin/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

