<?xml version="1.0" encoding="UTF-8"?><rss version="0.92">
<channel>
	<title>johnbender.us</title>
	<link>http://johnbender.us</link>
	<description>articles on software</description>
	<lastBuildDate>Thu, 01 Dec 2011 20:16:51 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	<!-- generator="WordPress/3.2.1" -->

	<item>
		<title>jQuery is just a browser API</title>
		<description><![CDATA[[Update] Thanks to Charlie in the comments for pointing me to jQuery&#8217;s $.fn.proxy method. Developers have traditionally used JavaScript for relatively simple DOM manipulations and XHR, but as more functionality moves to the client, the techniques used by those developers have been slow to evolve. One consequence of this slow evolution is systems comprised entirely [...]]]></description>
		<link>http://johnbender.us/2011/11/25/jquery-is-just-a-browser-api/</link>
			</item>
	<item>
		<title>You got your type class in my jQuery: Applicative Functors</title>
		<description><![CDATA[Previously we saw how jQuery&#8217;s $() can behave like Haskell&#8217;s Functor typeclass, when it wraps raw DOM objects and how provides its own version of fmap ($.map) for lifting functions into that wrapper to work with those DOM objects. In this post I&#8217;ll explain Haskell&#8217;s Applicative typeclass, how it&#8217;s slightly different from the Functor, and [...]]]></description>
		<link>http://johnbender.us/2011/07/20/you-got-your-type-class-in-my-jquery-applicative-functors/</link>
			</item>
	<item>
		<title>You got your type class in my jQuery: Functors</title>
		<description><![CDATA[I have previously described practical applications of common functional programming concepts in earlier posts: Rack&#8217;s Middleware and Vagrant&#8217;s Middleware. Next in this series I&#8217;ll cover how jQuery&#8217;s design leverages abstractions similar to Haskell&#8217;s better-known type classes: Functor, Applicative, and Monad. It draws heavily from Brent Yorgey&#8217;s Typeclassopedia from [PDF] The Monad Reader 13 (which was [...]]]></description>
		<link>http://johnbender.us/2011/07/08/you-got-your-type-class-in-my-jquery-functors/</link>
			</item>
	<item>
		<title>Snap setup from scratch the Vagrant way</title>
		<description><![CDATA[A large group of web developers, otherwise ambivalent to Haskell, have recently found reason to learn the language thanks in part to the Snap web framework. Its really no surprise given Haskell&#8217;s brilliance as an all purpose programming language and the effort the Snap team has put into providing great documentation. For those interested in [...]]]></description>
		<link>http://johnbender.us/2011/03/05/snap-setup-from-scratch-the-vagrant-way/</link>
			</item>
	<item>
		<title>Contributing to jQuery Mobile</title>
		<description><![CDATA[UPDATE: I&#8217;ve updated the vagrant branch used below to support the newest version of Vagrant. This is more substantial version of the lightning talk I gave at LA RubyConf last Saturday. If you&#8217;re a Vagrant user already, this will be familiar. If not, don&#8217;t worry, you&#8217;re about to get a quick introduction to its power [...]]]></description>
		<link>http://johnbender.us/2011/02/08/contributing-to-jquery-mobile/</link>
			</item>
	<item>
		<title>Haskell and Vagrant’s Middleware</title>
		<description><![CDATA[As a follow up to my last post on middleware and monads I&#8217;ll be going over how the Warden class, as implemented inside Vagrant, uses concepts derived from some of the basic monad combinators to achieve a rescuable middleware stack. As before, this article assumes you have some knowledge of the Haskell language and middleware [...]]]></description>
		<link>http://johnbender.us/2010/10/18/haskell-and-vagrants-middleware/</link>
			</item>
	<item>
		<title>Middleware, Composition, and Monads</title>
		<description><![CDATA[This article pre-supposes that you have some basic knowledge of Haskell, Rack/PEP 333, and middleware. Middleware Middleware, as a plugin architecture for creating custom web stacks, is an amazing tool (the fact that it makes web servers interchangeable is equally important but not useful for this discussion). By simplifying and standardizing the interface used by [...]]]></description>
		<link>http://johnbender.us/2010/07/22/middleware-composition-and-monads/</link>
			</item>
	<item>
		<title>bebop: resource routing for Sinatra/Monk</title>
		<description><![CDATA[Motivation I&#8217;ve been using Monk with the armonk skeleton for the last couple of weeks to build a little app that monitors Craig&#8217;s List searches. Bebop aside, I&#8217;ve found it to be a really refreshing experience, but I knew when I started building the app that the vanilla routing DSL wasn&#8217;t going to meet my [...]]]></description>
		<link>http://johnbender.us/2010/01/10/bebop-resource-routing-for-sinatramonk/</link>
			</item>
	<item>
		<title>Using a haskell dfa type to match strings</title>
		<description><![CDATA[A friend of mine recently covered deterministic and non-deterministic finite state machines (automata for the cool kids) in one of his classes and passed along a sample problem for me to figure out. Informally, build a dfa that will match a given string against another string in the provided alphabet. An example of this class [...]]]></description>
		<link>http://johnbender.us/2009/11/08/using-a-haskell-dfa-type-to-match-strings/</link>
			</item>
	<item>
		<title>Ruby Cons</title>
		<description><![CDATA[I think technically this counts as an application of my readings from Algebra of Programming. Satisfied. class Cons include Enumerable attr_accessor :child, :value def self.[](value, child=:empty) new(value, child) end def initialize(value, child) @value, @child = value, child end def each x = self while( x != :empty) yield x x = x.child end end end [...]]]></description>
		<link>http://johnbender.us/2009/10/28/ruby-cons/</link>
			</item>
</channel>
</rss>

