<?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>a work on process</title>
	<atom:link href="http://jystewart.net/process/feed/" rel="self" type="application/rss+xml" />
	<link>http://jystewart.net/process</link>
	<description>notes from another web developer</description>
	<lastBuildDate>Tue, 27 Jul 2010 09:53:43 +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>I18n and &#8220;undefined method each for false:FalseClass&#8221;</title>
		<link>http://jystewart.net/process/2010/07/i18n-and-undefined-method-each-for-falsefalseclass/</link>
		<comments>http://jystewart.net/process/2010/07/i18n-and-undefined-method-each-for-falsefalseclass/#comments</comments>
		<pubDate>Tue, 27 Jul 2010 09:53:43 +0000</pubDate>
		<dc:creator>James Stewart</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[i18n]]></category>
		<category><![CDATA[locale]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://jystewart.net/process/?p=815</guid>
		<description><![CDATA[I&#8217;ve never really had much need for Rails&#8217; i18n support, but a new project is going to be using it extensively. I was a bit thrown by an error that started to be thrown after I created the relevant locale files, and took a while to track it down (possibly because I was also upgrading <a href="http://jystewart.net/process/2010/07/i18n-and-undefined-method-each-for-falsefalseclass/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve never really had much need for Rails&#8217; i18n support, but a new project is going to be using it extensively. I was a bit thrown by an error that started to be thrown after I created the relevant locale files, and took a while to track it down (possibly because I was also upgrading to the Rails 3 RC at the same time).</p>
<p>It turns out Rails <strong>really</strong> doesn&#8217;t like empty locale files. Adding a couple of translations into my empty files solved everything.</p>
<p>Seemed worth sharing as it took me a while to track down comparable experiences online.</p>
]]></content:encoded>
			<wfw:commentRss>http://jystewart.net/process/2010/07/i18n-and-undefined-method-each-for-falsefalseclass/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Week 146</title>
		<link>http://jystewart.net/process/2010/07/week-146/</link>
		<comments>http://jystewart.net/process/2010/07/week-146/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 20:35:17 +0000</pubDate>
		<dc:creator>James Stewart</dc:creator>
				<category><![CDATA[Notes]]></category>

		<guid isPermaLink="false">http://jystewart.net/process/?p=812</guid>
		<description><![CDATA[As I write I am sitting on the floor of my sister&#8217;s hotel room in Paris as she and Kari watch the World Cup Final and my daughter sleeps in the next room. Which is to say&#8211;despite my officemates thinking I was inventing the plan simply to hurry some suppliers&#8211;I&#8217;m actually on holiday.
That means the <a href="http://jystewart.net/process/2010/07/week-146/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>As I write I am sitting on the floor of my sister&#8217;s hotel room in Paris as she and Kari watch the World Cup Final and my daughter sleeps in the next room. Which is to say&#8211;despite my officemates thinking I was inventing the plan simply to hurry some suppliers&#8211;I&#8217;m actually on holiday.</p>
<p>That means the past week was a hectic and scattered one as I made sure as much as possible was wrapped up before my departure. For the most part that worked though one significant project was left in a very uncertain state as the client went on a holiday of his own without informing me. Thankfully 48 hours after leaving the office it is actually taking a little effort to recall the details (which are of course all documented for me on my return).</p>
<p>The coming week promises a lot of reading, a lot of walking, maybe some cycling and no work. I may post a few links or notes here, but otherwise I will be back in a couple of weeks.</p>
]]></content:encoded>
			<wfw:commentRss>http://jystewart.net/process/2010/07/week-146/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Week 145</title>
		<link>http://jystewart.net/process/2010/07/week-145/</link>
		<comments>http://jystewart.net/process/2010/07/week-145/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 15:52:31 +0000</pubDate>
		<dc:creator>James Stewart</dc:creator>
				<category><![CDATA[Notes]]></category>

		<guid isPermaLink="false">http://jystewart.net/process/?p=810</guid>
		<description><![CDATA[This is the first week in several (probably since I last wrote some weeknotes) that it seems conceivable I might get to the end of the week&#8217;s list of tasks. It&#8217;s also the first week in several where I&#8217;ve been able to spend some time working at the weekend. These two things are related, and <a href="http://jystewart.net/process/2010/07/week-145/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>This is the first week in several (probably since I last wrote some weeknotes) that it seems conceivable I might get to the end of the week&#8217;s list of tasks. It&#8217;s also the first week in several where I&#8217;ve been able to spend some time working at the weekend. These two things are related, and are a clear reminder that there are too many projects in play at the moment.</p>
<p>Thankfully, this week has seen a couple of those projects signed off. One temporarily (the client are testing our changes, another round of work begins very soon), but one permanently. The latter will be my first Wordpress 3 deployment and involved digging into some fairly arcane parts of how WP manages URLs. I was pleasantly surprised to be able to do everything I needed within plugins, rather than having to resort to hacking away at the core.</p>
<p>The coming week will see continued effort to get things signed off as I&#8217;m actually going on a proper holiday the following week. There are some Greenbelt things to wrap up (hopefully including funding for another newspaper this year), a project that needs to be ready for my client to demo to their client while I&#8217;m away, and some contracts to pin down so I know what I&#8217;m working on when I get back. And a bit more work on an internal project that I&#8217;m rather enjoying but am not quite ready to discuss&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://jystewart.net/process/2010/07/week-145/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inline Attachments for ActionMailer</title>
		<link>http://jystewart.net/process/2010/06/inline-attachments-for-actionmailer/</link>
		<comments>http://jystewart.net/process/2010/06/inline-attachments-for-actionmailer/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 12:37:05 +0000</pubDate>
		<dc:creator>James Stewart</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[actionmailer]]></category>
		<category><![CDATA[rails 3]]></category>
		<category><![CDATA[rubyonrails]]></category>

		<guid isPermaLink="false">http://jystewart.net/process/?p=808</guid>
		<description><![CDATA[The changes to ActionMailer coming in Rails 3 are already a huge improvement, and I hadn&#8217;t expected to see much more development before version 3 lands, but it&#8217;s great to see this change making it far easier to support inline attachments.
]]></description>
			<content:encoded><![CDATA[<p>The changes to ActionMailer coming in Rails 3 are already a huge improvement, and I hadn&#8217;t expected to see much more development before version 3 lands, but it&#8217;s great to see <a href="http://lindsaar.net/2010/6/7/inline-attachments-for-actionmailer">this change making it far easier to support inline attachments</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://jystewart.net/process/2010/06/inline-attachments-for-actionmailer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Behind the curtains of Zeitgeist</title>
		<link>http://jystewart.net/process/2010/06/behind-the-curtains-of-zeitgeist/</link>
		<comments>http://jystewart.net/process/2010/06/behind-the-curtains-of-zeitgeist/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 08:24:49 +0000</pubDate>
		<dc:creator>James Stewart</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[dan catt]]></category>
		<category><![CDATA[guardian]]></category>
		<category><![CDATA[open platform]]></category>
		<category><![CDATA[zeitgeist]]></category>

		<guid isPermaLink="false">http://jystewart.net/process/?p=806</guid>
		<description><![CDATA[I&#8217;m a little late getting to it, but Dan Catt&#8217;s writeup of &#8220;the [Guardian] Open Platform, APIs and Google App Engine&#8221; is well worth a read.
Dan explained some of the architecture to me over lunch during The Story a few months back and I was impressed by the way they&#8217;ve embraced a plurality of tools <a href="http://jystewart.net/process/2010/06/behind-the-curtains-of-zeitgeist/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a little late getting to it, but <a href="http://www.guardian.co.uk/open-platform/blog/behind-the-curtains-of-zeitgeist">Dan Catt&#8217;s writeup of &#8220;the [Guardian] Open Platform, APIs and Google App Engine&#8221;</a> is well worth a read.</p>
<p>Dan explained some of the architecture to me over lunch during <a href="http://thestory.org.uk/">The Story</a> a few months back and I was impressed by the way they&#8217;ve embraced a plurality of tools to build apps, and devised a caching infrastructure that will ensure their frontend is robust even if something doesn&#8217;t quite work out in an experimental piece of the system.</p>
]]></content:encoded>
			<wfw:commentRss>http://jystewart.net/process/2010/06/behind-the-curtains-of-zeitgeist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coderack: Rack Middleware Directory</title>
		<link>http://jystewart.net/process/2010/06/coderack-rack-middleware-directory/</link>
		<comments>http://jystewart.net/process/2010/06/coderack-rack-middleware-directory/#comments</comments>
		<pubDate>Sun, 13 Jun 2010 18:23:01 +0000</pubDate>
		<dc:creator>James Stewart</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[middleware]]></category>
		<category><![CDATA[Rack]]></category>
		<category><![CDATA[rubyonrails staticfallback]]></category>

		<guid isPermaLink="false">http://jystewart.net/process/?p=803</guid>
		<description><![CDATA[With Rails 3 inching ever closer, there&#8217;s likely to be a good bit of attention on Rack Middleware over the coming months. It&#8217;s there as an option in Rails 2.3, but with Rails 3 it&#8217;ll get the attention it deserves.
Working on a few Rails 3 apps, I&#8217;ve been very pleased to find Coderack (via Robert <a href="http://jystewart.net/process/2010/06/coderack-rack-middleware-directory/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>With Rails 3 inching ever closer, there&#8217;s likely to be a good bit of attention on Rack Middleware over the coming months. It&#8217;s there as an option in Rails 2.3, but with Rails 3 it&#8217;ll get the attention it deserves.</p>
<p>Working on a few Rails 3 apps, I&#8217;ve been very pleased to find <a href="http://coderack.org/">Coderack</a> (via <a href="http://twitter.com/robertbrook">Robert Brook on twitter</a>, I think). It&#8217;s a directory of middleware, packed with interesting tools. </p>
<p>The one discovery I&#8217;m so far using is <a href="http://coderack.org/users/dolzenko/middlewares/103-staticfallback">StaticFallback</a>, which &#8220;bounces or redirects requests to missing static files&#8221;. So you can sync up your development environment with your production database, and don&#8217;t have to worry about also pulling down all the assets that may have been uploaded to it. Very handy!</p>
<p>It&#8217;d just be nice if CodeRack could add an RSS feed of new middleware submissions&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://jystewart.net/process/2010/06/coderack-rack-middleware-directory/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JangoMail, lackadaisical security, and a workaround</title>
		<link>http://jystewart.net/process/2010/06/jangomail-lackadaisical-security-and-a-workaround/</link>
		<comments>http://jystewart.net/process/2010/06/jangomail-lackadaisical-security-and-a-workaround/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 11:39:09 +0000</pubDate>
		<dc:creator>James Stewart</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[jangomail]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://jystewart.net/process/?p=800</guid>
		<description><![CDATA[A client recently asked me to integrate their site with the JangoMail mass mailing system. I wanted to keep them happy so agreed to investigate, but was horrified by what I saw in the JangoMail API documentation.
JangoMail appears to be optimised for those with existing databases of email addresses they want to maintain and contact. <a href="http://jystewart.net/process/2010/06/jangomail-lackadaisical-security-and-a-workaround/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>A client recently asked me to integrate their site with the <a href="http://www.jangomail.com/">JangoMail</a> mass mailing system. I wanted to keep them happy so agreed to investigate, but was horrified by what I saw in the JangoMail API documentation.</p>
<p>JangoMail appears to be optimised for those with existing databases of email addresses they want to maintain and contact. For those wanting to keep those databases in sync they offer a script you can download and install on your server that they can call with details of various actions (user unsubscribed, user clicked link, job completed, etc) as well as to extract the list of email addresses they should send a given campaign to. So far, so good.</p>
<p>The problem is in the implementation. Once you have downloaded and installed the script on your server, they ask you for your database credentials and then send these, along with an SQL query, over HTTP (or HTTPS) for the script to execute. In <a href="http://blog.jangomail.com/2010/04/how-to-write-custom-web-server-script.html">the FAQ attached to their blog entry on the topic</a> the obvious question &#8220;Is this method of connecting to my data secure?&#8221; is asked, with the response:</p>
<blockquote cite="http://blog.jangomail.com/2010/04/how-to-write-custom-web-server-script.html">
<p>Yes. It is inherently secure if you opt to have JangoMail connect over https instead of http. It can be additionally secured by restricting the range of IP addresses allowed to connect to the custom script file. JangoMail&#8217;s range of IP addresses are: 209.173.141.193 &#8211; 209.173.141.255&#8243;</p>
</blockquote>
<p>That answer is far from satisfactory. I refuse to give a third party my database credentials, still less to to execute arbitrary SQL received over an HTTP request, even if that is SSL and includes a password.</p>
<p>Surely if they want to keep the steps for the user to a minimum they could still provide an interface that takes credentials (via SSL)&#8211;along with appropriate other details like &#8220;enforce SSL?&#8221;&#8211;and generates a PHP script that contains those credentials embedded within it, along with code to generate the SQL from a set of parameters? It&#8217;s not a hard thing to do (witness the way wordpress/drupal/etc will generate a config file for you &#8212; it&#8217;s the same thing). That way JangoMail can take responsibility for making sure that the credentials are only ever sent a small number of times (and via SSL), and the endpoint can contain appropriate validation.</p>
<p>In this case I decided to take matters into my own hands and write a sane script to receive their input. There&#8217;s nothing forcing you to put genuine database credentials into their form, so instead I used those fields to provide a username and password I&#8217;d use to authenticate their request. In each of the boxes to enter the SQL for your queries I entered some code to generate JSON containing the relevant details.</p>
<p>With that done it&#8217;s a relatively trivial matter to parse the JSON, do any validation you may want to do and update your database accordingly. A rough-and-ready (and barely tested) script that does just that can be found in <a href="http://gist.github.com/431351">this gist</a>. A perfectly satisfactory (if slightly laborious) solution for any competent web developer.</p>
<p>But of course JangoMail&#8217;s target market isn&#8217;t competent web developers. They&#8217;re clearly trying to target a general audience, and for that audience their lackadaisical approach to security is indefensible.</p>
]]></content:encoded>
			<wfw:commentRss>http://jystewart.net/process/2010/06/jangomail-lackadaisical-security-and-a-workaround/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Week 140</title>
		<link>http://jystewart.net/process/2010/05/week-140/</link>
		<comments>http://jystewart.net/process/2010/05/week-140/#comments</comments>
		<pubDate>Sun, 30 May 2010 19:58:52 +0000</pubDate>
		<dc:creator>James Stewart</dc:creator>
				<category><![CDATA[Notes]]></category>

		<guid isPermaLink="false">http://jystewart.net/process/?p=796</guid>
		<description><![CDATA[It&#8217;s been a week of tying up loose ends in an effort to get invoices out the door and perhaps have a focussed start to the new month.
The next step of the infrastructure for JLL is in place, a feasibility study for a document processing system (and associated quote) are being reviewed by a new <a href="http://jystewart.net/process/2010/05/week-140/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a week of tying up loose ends in an effort to get invoices out the door and perhaps have a focussed start to the new month.</p>
<p>The next step of the infrastructure for <a href="http://www.jameslindlibrary.org">JLL</a> is in place, a feasibility study for a document processing system (and associated quote) are being reviewed by a new client, I&#8217;m wrapping up a report on some work I&#8217;ve been doing for <a href="http://www.eastside.org.uk">Eastside Educational Trust</a>, a new site for a music industry client is awaiting some DNS amendments on the client&#8217;s end, and another project is with a client so they can consider what direction they want to take it in next.</p>
<p>I guess that&#8217;s why I&#8217;ve been feeling pretty tired this week. This Bank Holiday&#8217;s a welcome one!</p>
]]></content:encoded>
			<wfw:commentRss>http://jystewart.net/process/2010/05/week-140/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Character encodings, Rails 3 and Ruby 1.9.2</title>
		<link>http://jystewart.net/process/2010/05/character-encodings-rails-ruby/</link>
		<comments>http://jystewart.net/process/2010/05/character-encodings-rails-ruby/#comments</comments>
		<pubDate>Fri, 21 May 2010 13:52:58 +0000</pubDate>
		<dc:creator>James Stewart</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[character encodings]]></category>
		<category><![CDATA[iso-8859-1]]></category>
		<category><![CDATA[microsoft word]]></category>
		<category><![CDATA[ruby 1.9.2]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://jystewart.net/process/?p=792</guid>
		<description><![CDATA[In a lengthy blog post detailing many of the intricacies and some of the politics relating to character encodings in Ruby, Yehuda Katz has a few paragraphs that left me more than a little excited:

The most common scenario where you can see this issue is when the user pastes in content from Microsoft Word, and <a href="http://jystewart.net/process/2010/05/character-encodings-rails-ruby/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://yehudakatz.com/2010/05/17/encodings-unabridged/">a lengthy blog post detailing many of the intricacies and some of the politics relating to character encodings in Ruby</a>, Yehuda Katz has a few paragraphs that left me more than a little excited:</p>
<blockquote cite="http://yehudakatz.com/2010/05/17/encodings-unabridged/">
<p>The most common scenario where you can see this issue is when the user pastes in content from Microsoft Word, and it makes it into the database and back out again as gibberish.</p>
<p>After a lot of research, I have discovered several hacks that, together, should completely solve this problem. I am still testing the solution, but I believe we should be able to completely solve this problem in Rails. By Rails 3.0 final, Rails application should be able to reliably assume that POSTed form data comes in as UTF-8.</p>
</blockquote>
<p>and</p>
<blockquote cite="http://yehudakatz.com/2010/05/17/encodings-unabridged/"><p>When using Rails 3.0 with Ruby 1.9.2-final, you will generally not have to care about encodings.</p>
</blockquote>
<p>If it does indeed work out that way, that&#8217;s a whole category of bug reports I&#8217;ll finally be able to say goodbye to.</p>
]]></content:encoded>
			<wfw:commentRss>http://jystewart.net/process/2010/05/character-encodings-rails-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Week 138</title>
		<link>http://jystewart.net/process/2010/05/week-138/</link>
		<comments>http://jystewart.net/process/2010/05/week-138/#comments</comments>
		<pubDate>Fri, 14 May 2010 09:04:49 +0000</pubDate>
		<dc:creator>James Stewart</dc:creator>
				<category><![CDATA[Notes]]></category>

		<guid isPermaLink="false">http://jystewart.net/process/?p=790</guid>
		<description><![CDATA[Another week, another chance to reflect on where it went.
The big news of the week was the launch of the Ninja Tune XX website mentioned below. I&#8217;m still very pleased with how much we got done with such a short lead time. With quite a bit of attention coming to the site via twitter, facebook <a href="http://jystewart.net/process/2010/05/week-138/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Another week, another chance to reflect on where it went.</p>
<p>The big news of the week was the launch of the <a href="http://www.ninjatunexx.com">Ninja Tune XX</a> website mentioned below. I&#8217;m still very pleased with how much we got done with such a short lead time. With quite a bit of attention coming to the site via twitter, facebook and a variety of music blogs (including pitchfork), I&#8217;ve been keeping a close eye on traffic and resource consumption. We had an early memory spike, which seems to have been resolved by removing the dependency on the RedCloth gem (I didn&#8217;t trace any specific problem to the gem, I just realised we didn&#8217;t need it any more and was pleased by the result), and a slight issue due to a mis-match between the versions of mongoid and bson_ext we were using, but those were easy fixes and the site continues to move along nicely.</p>
<p>Other than that, I spent quite a bit of time doing something I&#8217;ve not done for many years: watching a virus scanner work its way through my system. I&#8217;m working with a client who are hosting their apps internally and so need VPN access to update them, but the sysadmin wouldn&#8217;t grant that until I performed that scan. Naturally everything went smoothly other than that my computer was painfully slow for six hours! </p>
<p>There was a very helpful day with Ben and James working through next steps for the James Lind Library. We desparately needed to step back and take a long view at the site&#8217;s content, and were finally in a position to do that. After some drawing on the whiteboard, and some more in OmniGraffle we&#8217;ve got some ideas that I&#8217;m really looking forward to presenting to the client and moving on to implement. The more time I spend working on the backend for the site and immersed in the data, the more I want to get our stamp on it and open it up so that some of the wonderful old (really old) content can come to the fore.</p>
<p>We&#8217;ve entered another of those periods where there are lots of small projects to juggle, and lots of prospects, but nothing quite solidifying it. There&#8217;s some consideration of how best to land some longer term projects that might provide a little more stability as there are a couple of products that I&#8217;d really like to complete but it&#8217;s providing very hard to schedule them around lots of moving pieces. And I&#8217;m finally getting round to talking to solicitors about some sample contracts, a task I&#8217;ve been putting off for far too long&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://jystewart.net/process/2010/05/week-138/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
