<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">

    <channel>
    
    <title>The Nested Float Articles</title>
    <link>http://www.thenestedfloat.com/</link>
    <description>I wrote you something.</description>
    <dc:language>en</dc:language>
    <dc:creator>matthewtdawson@gmail.com</dc:creator>
    <dc:rights>Copyright 2009</dc:rights>
    <dc:date>2009-04-28T01:55:07+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
    

    <item>
      <title>Upgrading a Django Server from Ubuntu Intrepid to Ubuntu Jaunty</title>
      <link>http://www.thenestedfloat.com/articles/upgrading-a-django-server-from-ubuntu-intrepid-to-ubuntu-jaunty/</link>
      <guid>http://www.thenestedfloat.com/articles/upgrading-a-django-server-from-ubuntu-intrepid-to-ubuntu-jaunty/</guid>
      <description>&lt;p&gt;I host &lt;a href="http://dawsoning.com" title="Dawsoning"&gt;Dawsoning&lt;/a&gt; at &lt;a href="http://mosso.com" title="Mosso"&gt;Mosso&lt;/a&gt; on an Ubuntu cloud server. If you don't mind doing a little server maintenance, it is, in my opinion, the best way to host your Django project. (And if you &lt;em&gt;do&lt;/em&gt; mind server maintenance, check out &lt;a href="http://webfaction.com" title="Web Faction"&gt;Web Faction&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;I just managed to successfully upgrade an Ubuntu Intrepid server configured for Django to Ubuntu Feisty. Since you're here, you're probably trying to do something similar, so I hope these instructions help. My initial build more or less followed &lt;a href="http://www.meppum.com/2009/jan/17/installing-django-ubuntu-intrepid/" title="these instructions"&gt;these instructions&lt;/a&gt;. You may want to check and see how closely your build matches mine before proceeding.&lt;/p&gt;
&lt;p&gt;Your first task is upgrading the server. (All performed as root.)&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;sed -e 's/\intrepid/ jaunty/g' -i /etc/apt/sources.list&lt;/li&gt;
&lt;li class="alt"&gt;apt-get update&lt;/li&gt;
&lt;li&gt;apt-get dist-upgrade&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The next part was tougher to figure out. It turns out that Ubuntu Jaunty ships with Python 2.6 as the default Python version. Python 2.6 has changed the site-packages directory (/usr/lib/python2.5/site-packages) to dist-packages (/usr/lib/python2.6/dist-packages). It's a sensible name change, so I'm not complaining.&lt;/p&gt;
&lt;p&gt;I had a &lt;em&gt;lot&lt;/em&gt; of stuff in site-packages &amp;ndash; including my Django core files &amp;ndash; so rather than symlink everything therein, I just deleted the bits already in the dist-packages directory and moved the contents of site-packages over. So:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;sudo mv /usr/lib/python2.5/site-packages/* /usr/lib/python2.6/dist-packages&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You've probably also symlinked the admin media from your Django install into your project, so be sure to delete and recreate that link. For me, that process looked like this:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;sudo rm /home/dawsoning/public_html/static.dawsoning.com/admin&lt;/li&gt;
&lt;li class="alt"&gt;sudo ln -s /usr/lib/python2.6/dist-packages/django/contrib/admin/media /home/dawsoning/public_html/static.dawsoning.com/admin&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Happy upgrade!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/ZxmRgOdP5jE" height="1" width="1"/&gt;</description>
      <dc:date>2009-04-28T01:55:07+00:00</dc:date>
    </item>

    <item>
      <title>Moving Servers? An ExpressionEngine Tip.</title>
      <link>http://www.thenestedfloat.com/articles/moving-servers-an-expressionengine-tip/</link>
      <guid>http://www.thenestedfloat.com/articles/moving-servers-an-expressionengine-tip/</guid>
      <description>&lt;p&gt;At &lt;a href="http://category4.com" title="Category 4"&gt;Category 4&lt;/a&gt;, we&amp;#8217;ve always used separate servers for development work and web hosting. Though the specifics of how that&amp;#8217;s implemented are set to change in the near future, our basic model will remain the same. Development sites get a &amp;#8220;dev&amp;#8221; url while live sites get (naturally) a real, live url. If you&amp;#8217;re like me and you&amp;#8217;ve been following &lt;a href="http://expressionengine.com" title="ExpressionEngine"&gt;ExpressionEngine&lt;/a&gt;&amp;#8217;s &lt;a href="http://expressionengine.com/knowledge_base/article/how_do_i_move_ee_to_another_server/" title="Knowledge Base article"&gt;Knowledge Base article&lt;/a&gt; on porting an EE site from one server to another, let me share a secret.
&lt;/p&gt;
&lt;p&gt;
You&amp;#8217;ve been doing it the hard way.
&lt;/p&gt;
&lt;p&gt;
I ran across the &amp;#8220;Find and Replace&amp;#8221; utility months ago when I was updating a client&amp;#8217;s posts with some revised verbage, sitewide. This handy little tool does exactly what it says &amp;ndash; that is, lets you search various resources in your EE database and replace specified bits within. You can find the Find and Replace utility by going to the Admin tab, choosing Utilities, and clicking Find and Replace.
&lt;/p&gt;
&lt;p&gt;
What I&amp;#8217;d missed initially is that you can actually select &amp;#8220;Site Preferences&amp;#8221; as a find-and-replace target for one or (if you&amp;#8217;re using the multi-site manager) multiple sites. The reason this is important is that many site preferences aren&amp;#8217;t easily accessible any other way than, as the Knowledge Base article linked above implies, clicking through tabs and tabs of control panel options. Where before I needed to find every instance of &amp;#8220;http://devserver.com&amp;#8221; and change it to &amp;#8220;http://liveserver.com&amp;#8221; through the admin interface, now I just use the included utility.
&lt;/p&gt;
&lt;p&gt;
With Category 4&amp;#8217;s WordPress sites, we&amp;#8217;ll typically dump the database and do a search and replace on the dump to get at all the possible locations where the address may need to be changed. For some reason (I think because EE tends to serialize data when it really doesn&amp;#8217;t need to) that approach never worked perfectly with EE.
&lt;/p&gt;
&lt;p&gt;
But that&amp;#8217;s fine. I like this new trick.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/JbNsjXm5RuU" height="1" width="1"/&gt;</description>
      <dc:date>2009-03-02T22:42:25+00:00</dc:date>
    </item>

    <item>
      <title>Elsewhere!</title>
      <link>http://www.thenestedfloat.com/articles/elsewhere/</link>
      <guid>http://www.thenestedfloat.com/articles/elsewhere/</guid>
      <description>&lt;p&gt;It&amp;#8217;s hard to believe that it&amp;#8217;s been two months since my son, &lt;a href="http://flickr.com/photos/matthewtdawson/tags/asherdawson/" title="Asher James"&gt;Asher James&lt;/a&gt;, was born. In a matter of hours, he&amp;#8217;ll be returning from his first road trip with his Mom, leaving his Dad at home for four days to get junk done, fritter time away, and miss him. And his Mom, naturally.
&lt;/p&gt;
&lt;p&gt;
TNF has gotten the short end of the stick since Meg and I became parents. (I&amp;#8217;m planning for that to change, for what that&amp;#8217;s worth.) The lack of action here is partly due to the fact that I launched another site, &lt;a href="http://dawsoning.com" title="Dawsoning"&gt;Dawsoning&lt;/a&gt;, a week or so after Asher was born.
&lt;/p&gt;
&lt;p&gt;
Dawsoning is my version of a (very public) baby book. It&amp;#8217;s written in &lt;a href="http://djangoproject.com" title="Django"&gt;Django&lt;/a&gt; and, in addition to providing a tidy little blog, aggregates Meg and my tweets, photos, and videos from sundry other places around the web. It&amp;#8217;s fun to maintain because I barely have to touch it. Because the only people watching really care about the subject matter (my friends and family), I&amp;#8217;ve gotten the strongest positive reaction of anything I&amp;#8217;ve yet built on the web. It&amp;#8217;s neat, really. Dawsoning gets a fraction of the traffic of this site, and yet it&amp;#8217;s more loved by its followers. That&amp;#8217;s a nice reminder for me of the relative value of resources on the web. Sure, a lot of people might be watching. But how many of those people really &lt;em&gt;care&lt;/em&gt;?
&lt;/p&gt;
&lt;p&gt;
Anyway, for those that are interested, Dawsoning is where I&amp;#8217;ve been spending a lot my time. I&amp;#8217;m looking to shake things up around here a bit. But in the meantime, if you&amp;#8217;re in the mood to browse through a a quickly growing archive of the life of some other guy&amp;#8217;s kid, you&amp;#8217;ve now got one extra option.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/gx3iUEIAMcs" height="1" width="1"/&gt;</description>
      <dc:date>2009-02-28T22:43:54+00:00</dc:date>
    </item>

    <item>
      <title>Limiting Inline Admin Objects In Django</title>
      <link>http://www.thenestedfloat.com/articles/limiting-inline-admin-objects-in-django/</link>
      <guid>http://www.thenestedfloat.com/articles/limiting-inline-admin-objects-in-django/</guid>
      <description>&lt;p&gt;I'm now just over two months into my &lt;a href="http://djangoproject.com" title="Django"&gt;Django&lt;/a&gt; experiment and about halfway into my first client project. I'll admit to anyone who even feigns an interest in listening that I've never had this much fun working on the web. The framework never fails to impress.&lt;/p&gt;
&lt;h3&gt;On relating data.&lt;/h3&gt;
&lt;p&gt;If you're building a website or application of any considerable complexity, you're going to have one type of data that you want to relate with another. The example I seem to most often in &lt;abbr title="Content Management System"&gt;CMS&lt;/abbr&gt; and programming tutorials is a database for musical acts. You'll have one-or-many artists who belong to none-or-many relate to bands. You can extend this example out to include, music videos, albums, individual songs &amp;ndash; all distinct types of data that need to interrelate in your application or website.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://expressionengine.com" title="ExpressionEngine"&gt;ExpressionEngine&lt;/a&gt;, the &lt;abbr title="Content Management System"&gt;CMS&lt;/abbr&gt; that powers this site, handles content relationships in a logical, user-friendly way that makes rapid development of data-heavy (and even data-heavy-esque) sites possible.&lt;/p&gt;
&lt;h3&gt;But EE does have its limits.&lt;/h3&gt;
&lt;p&gt;Take for example the problem I was confronted with in building an online registration system for an after-school program at a local elementary school. At its core, this app has five main data types: Courses, Sessions (that is, Fall 2009, Winter 2009, etc.), Course Instances (or a particular course happening during a particular session), Students, and Registrations &amp;ndash; whose soul responsibility is to link a Student to a Course Instance. As parents register their children for courses, administrators will need to login to &lt;a href="http://docs.djangoproject.com/en/dev/ref/contrib/admin/" title="Django's admin interface"&gt;Django's admin interface&lt;/a&gt; and mark when the registration fee has been paid.&lt;/p&gt;
&lt;h3&gt;The problem.&lt;/h3&gt;
&lt;p&gt;Because the intermediary model does very little more than provide a bridge between two data types, I didn't want to require administrators to hunt down the appropriate registration instance to mark it as paid. Not that the admin site would have made this a particularly difficult task, but it just seems so much more natural to look up the student and have all current registrations listed on their admin change screen. If you're doing fifty of these in a shot &lt;em&gt;and&lt;/em&gt; you've got a class to teach in fifteen minutes, you're gonna want the most logical system possible. Fortunately for me and the future administrators, &lt;a href="http://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-objects" title="Inline Admin"&gt;inline model admin objects&lt;/a&gt; allow you to show child data inline with a parent model. Exactly what I needed.&lt;/p&gt;
&lt;p&gt;Almost.&lt;/p&gt;
&lt;p&gt;See, I got pretty ambitious with how I set up this data. What I really wanted to do was give the site admin's the ability to, at the end of each school year, mark a session as inactive and have all associated course instances effectively disappear from the site. So the Session data type has a field "is_active." Django makes it dead simple to limit course instances on the front end &amp;ndash; and &lt;em&gt;most&lt;/em&gt; of the backend &amp;ndash; by providing a &lt;code&gt;&lt;a href="http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.limit_choices_to" title="limit_choices_to"&gt;limit_choices_to&lt;/a&gt;&lt;/code&gt; parameter to foreign key fields (which are one of your options for relating one bit of data to another).&lt;/p&gt;
&lt;p&gt;But when I set up my registration inline admins on student records, I noticed that the &lt;code&gt;limit_choices_to&lt;/code&gt; option was being ignored. The docs do point this limitation out, but I'd completely missed it on first read.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;limit_choices_to&lt;/code&gt; has no effect on the inline FormSets that are created to display related objects in the admin.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;A hack-free solution.&lt;/h3&gt;
&lt;p&gt;Here I &lt;em&gt;have&lt;/em&gt; to point out my hands-down most favorite thing about Django: hacks are almost never needed. That's not to say that the solution _solr from the Django irc channel helped me come up with isn't a bit inscrutable. But it involves absolutely no hacking of core files. It lives right in the admin module for your application. And, if you spend a bit of time studying Django's core, it actually does kinda start to make sense. Kinda.&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;"""&lt;/li&gt;
&lt;li class="alt"&gt;Override the typical inline formset with a custom formset that&lt;/li&gt;
&lt;li&gt;excludes all registrations not related to active sessions.&lt;/li&gt;
&lt;li class="alt"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;"""&lt;/li&gt;
&lt;li class="alt"&gt;class StudentRegistrationInlineFormset(BaseInlineFormSet):&lt;/li&gt;
&lt;li&gt;	def get_queryset(self):&lt;/li&gt;
&lt;li class="alt"&gt;		return super(StudentRegistrationInlineFormset, self).get_queryset().filter(course_instance__session__is_active=True)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class="alt"&gt;class StudentRegistrationInline(admin.TabularInline):&lt;/li&gt;
&lt;li&gt;	model = Registration&lt;/li&gt;
&lt;li class="alt"&gt;	fk_name = 'student'&lt;/li&gt;
&lt;li&gt;	formset = StudentRegistrationInlineFormset&lt;/li&gt;
&lt;li class="alt"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;class StudentAdmin(admin.ModelAdmin):&lt;/li&gt;
&lt;li class="alt"&gt;	inlines = [&lt;/li&gt;
&lt;li&gt;		StudentRegistrationInline&lt;/li&gt;
&lt;li class="alt"&gt;	]&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now, if my boss asked, I'd have to admit that the solution is pretty much completely undocumented, and I did spend a good amount of time sussing it out. But the point is when all things are said and done, the solution is just so gosh durned beautiful. All we're doing is overriding the function &amp;ndash; &lt;code&gt;get_queryset()&lt;/code&gt; &amp;ndash; that's responsible for providing data to a generic inline admin. The beauty is that we didn't have to do this for the whole system, or even for our whole project. This behavior is attached to just one inline admin in one app in our project. And nothing more.&lt;/p&gt;
&lt;p&gt;I do so love clean code.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/Poewy08djX0" height="1" width="1"/&gt;</description>
      <dc:date>2008-12-22T02:16:27+00:00</dc:date>
    </item>

    <item>
      <title>Displaying Custom User Profile Fields In Django’s Admin</title>
      <link>http://www.thenestedfloat.com/articles/displaying-custom-user-profile-fields-in-djangos-admin/</link>
      <guid>http://www.thenestedfloat.com/articles/displaying-custom-user-profile-fields-in-djangos-admin/</guid>
      <description>&lt;p&gt;After following &lt;a href="http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/" title="James Bennett's 2006 article"&gt;James Bennett's 2006 article&lt;/a&gt; on extending Django's User model, I was surprised to find that the resulting profile fields didn't automagically appear in the admin panel. I knew it had to be possible. The solution just took some sleuthing.&lt;/p&gt;
&lt;h3&gt;A very brief explanation.&lt;/h3&gt;
&lt;p&gt;For those of you who haven't toyed around much with Django, all we're talking about is the ability to take the framework's built-in &lt;a href="http://docs.djangoproject.com/en/dev/topics/auth/" title="User system"&gt;User system&lt;/a&gt; &amp;ndash; which has all sorts of authentication shortcuts and permissions goodies baked in &amp;ndash; and add an arbitrary number of extra fields. Profile information, if you will. Super handy stuff.&lt;/p&gt;
&lt;h3&gt;The solution.&lt;/h3&gt;
&lt;p&gt;It turns out the solution was hiding inside &lt;a href="http://groups.google.com/group/django-users/browse_thread/thread/bf7f2a0576e4afd1/5e3c1e98c0c2a5b1?show_docid=5e3c1e98c0c2a5b1" title="a still unanswered question"&gt;a still unanswered question&lt;/a&gt; posited on the Google Groups message boards.&lt;/p&gt;
&lt;p&gt;Assuming an app called "users" with an auth profile module called UserProfile (as in James Bennett's tutorial linked above), your admin.py for the users app would look like this:&lt;/p&gt;
&lt;ol class="code"&gt;
	&lt;li&gt;from django.contrib import admin&lt;/li&gt;
	&lt;li class="alt"&gt;from django.contrib.auth.models import User&lt;/li&gt;
	&lt;li&gt;from django.contrib.auth.admin import UserAdmin&lt;/li&gt;
	&lt;li class="alt"&gt;from website.users.models import UserProfile&lt;/li&gt;
	&lt;li&gt;&amp;nbsp;&lt;/li&gt;
	&lt;li class="alt"&gt;admin.site.unregister(User)&lt;/li&gt;
	&lt;li&gt;&amp;nbsp;&lt;/li&gt;
	&lt;li class="alt"&gt;class UserProfileInline(admin.StackedInline):&lt;/li&gt;
	&lt;li&gt;	model = UserProfile&lt;/li&gt;
	&lt;li class="alt"&gt;&amp;nbsp;&lt;/li&gt;
	&lt;li&gt;class UserProfileAdmin(UserAdmin):&lt;/li&gt;
	&lt;li class="alt"&gt;	inlines = [UserProfileInline]&lt;/li&gt;
	&lt;li&gt;&amp;nbsp;&lt;/li&gt;
	&lt;li class="alt"&gt;admin.site.register(User, UserProfileAdmin)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For me, the big news is in that sixth line. The &lt;code&gt;unregister&lt;/code&gt; method on the site object is what lets us override the default behavior of the admin panel for built-in apps. I can see this being of use with other bundled apps &amp;ndash; think &lt;a href="http://docs.djangoproject.com/en/dev/ref/contrib/flatpages/" title="flatpages"&gt;flatpages&lt;/a&gt; or &lt;a href="http://docs.djangoproject.com/en/dev/ref/contrib/comments/" title="comments"&gt;comments&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/OkU-hCOo3Vs" height="1" width="1"/&gt;</description>
      <dc:date>2008-12-06T18:02:17+00:00</dc:date>
    </item>

    <item>
      <title>Retrieving Data Across Apps In Django</title>
      <link>http://www.thenestedfloat.com/articles/retrieving-data-across-apps-in-django/</link>
      <guid>http://www.thenestedfloat.com/articles/retrieving-data-across-apps-in-django/</guid>
      <description>&lt;p&gt;The last month's been pretty quiet here at &lt;a href="http://thenestedfloat.com" title="The Nested Float"&gt;TNF&lt;/a&gt;. I'm blaming part of that on &lt;a href="http://flickr.com/photos/matthewtdawson/sets/72157606690841689/" title="The bump at Flickr"&gt;the bump&lt;/a&gt;, but in all honesty, making ice cream and gatorade runs for your wife doesn't take up too terribly much of one's time. But learning a new web development framework does.&lt;/p&gt;

&lt;p&gt;I started picking at &lt;a href="http://djangoproject.com" title="The Django Project"&gt;Django&lt;/a&gt;, a web framework written in &lt;a href="http://python.org" title="Python"&gt;Python&lt;/a&gt;, shortly after &lt;a href="http://www.thenestedfloat.com/articles/introducing-agregado-a-free-wordpress-theme-with-lifestream/" title="Agregado"&gt;Agregado&lt;/a&gt; was released. I've been fascinated by the lifestream concept since first seeing it in the wild, circa 2006, but what I've always wanted is a site that displays activity &lt;em&gt;and&lt;/em&gt; saves stream items to a database for posterity. So in anticipation of the many upcoming baby photos posted to Flickr, videos posted to YouTube, and tweets twit, that's what I'm building: a multi-user lifestream site with a blog application baked in.&lt;/p&gt;

&lt;p&gt;It turns out Django is almost perfectly suited for the job.&lt;/p&gt;

&lt;h3&gt;Almost?&lt;/h3&gt;

&lt;p&gt;Yeah, almost. A Django project is made up of one or many applications. Each application contains one or many model classes that define data types for that app. But what about combining data across applications &amp;ndash; as you'll likely need to do when building a lifestream site? That's where things get tricky.&lt;/p&gt;

&lt;p&gt;Luckily, Django comes with a built-in &lt;a href="http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/" title="content type framework"&gt;content type framework&lt;/a&gt;. This framework lets you, among other things, define a generic (or meta) content type that's essentially a collection of pointers to objects in other applications. It also, as you'd expect, provides tools that let us get at those objects for easy use in our templates. I've used a method described at &lt;a href="http://www.webmonkey.com/tutorial/Build_a_Microblog_with_Django" title="The Webmonkey Django tutorial"&gt;Webmonkey&lt;/a&gt;, though I should note that certain parts of their tutorial are based on the pre-1.0 Django release.&lt;/p&gt;

&lt;p&gt;So here's the coolest part about using generic content types. When you're dealing with an app that provides tools for accesing only a single app at a time &amp;ndash; like the uber-popular &lt;a href="http://code.google.com/p/django-tagging/" title="Django Tagging"&gt;Django Tagging&lt;/a&gt; application &amp;ndash; you've already got a way to bridge the gap.&lt;/p&gt;

&lt;p&gt;What I wanted for my site was a single group of tags referenced across all content types. That is, visiting http://mysite.com/tags/apple/ should retrieve photos &lt;em&gt;and&lt;/em&gt; blog posts &lt;em&gt;and&lt;/em&gt; videos tagged apple. But the tagging app (at least at the time of this post) only natively allows per-model tag retrieval. So: http://mysite.com/photos/tags/apple/ and http://mysite.com/videos/tags/apple/.&lt;/p&gt;

&lt;p&gt;I got around this problem by delegating tag retrieval and display to my lifestream meta content type. Here's the view function I'm using to retrieve items for a single tag, where "tag" is apple in the url http://mysite.com/tags/apple/:&lt;/p&gt;

&lt;ol class="code"&gt;
&lt;li&gt;def tag_archive(request, tag):&lt;/li&gt;
&lt;li class="alt"&gt;        tag = tag.lower()&lt;/li&gt;
&lt;li&gt;        tagged_items = []&lt;/li&gt;
&lt;li class="alt"&gt;        items = StreamItem.objects.all()&lt;/li&gt;
&lt;li&gt;        for item in items:&lt;/li&gt;
&lt;li class="alt"&gt;                object = item.content_object&lt;/li&gt;
&lt;li&gt;                object_tags = Tag.objects.get_for_object(object)&lt;/li&gt;
&lt;li class="alt"&gt;                for object_tag in object_tags:&lt;/li&gt;
&lt;li&gt;                        object_tag_names = []&lt;/li&gt;
&lt;li class="alt"&gt;                        object_tag_names.append(object_tag.name.lower())&lt;/li&gt;
&lt;li&gt;                        if tag in object_tag_names:&lt;/li&gt;
&lt;li class="alt"&gt;                                tagged_items.append(object)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class="alt"&gt;        context = {&lt;/li&gt;
&lt;li&gt;                'tag': tag,&lt;/li&gt;
&lt;li class="alt"&gt;                'tagged_items': tagged_items,&lt;/li&gt;
&lt;li&gt;        }&lt;/li&gt;
&lt;li class="alt"&gt;        return render_to_response(&lt;/li&gt;
&lt;li&gt;                'tags/item_list.html',&lt;/li&gt;
&lt;li class="alt"&gt;                context,&lt;/li&gt;
&lt;li&gt;                context_instance = RequestContext(request)&lt;/li&gt;
&lt;li class="alt"&gt;        )&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Granted, since the site still has a relatively small number of site-wide objects, it's hard to tell how well this solution will hold up when we're retrieving hundreds (or thousands) of records per tag. It's a brutish way of getting at the data. But for the time being, it works. And well.&lt;/p&gt;

&lt;p&gt;Listing all tags from the site, complete with usage counts, involves just a bit more work:&lt;/p&gt;

&lt;ol class="code"&gt;
&lt;li&gt;def tag_list(request):&lt;/li&gt;
&lt;li class="alt"&gt;        all_tags = []&lt;/li&gt;
&lt;li&gt;        items = StreamItem.objects.all()&lt;/li&gt;
&lt;li class="alt"&gt;        for item in items:&lt;/li&gt;
&lt;li&gt;                object = item.content_object&lt;/li&gt;
&lt;li class="alt"&gt;                object_tags = Tag.objects.get_for_object(object)&lt;/li&gt;
&lt;li&gt;                for object_tag in object_tags:&lt;/li&gt;
&lt;li class="alt"&gt;                        tag = object_tag.name.lower()&lt;/li&gt;
&lt;li&gt;                        all_tags.append(tag)&lt;/li&gt;
&lt;li class="alt"&gt;        def count_dupes(dupe_list):&lt;/li&gt;
&lt;li&gt;                unique_set = set(dupe_list)&lt;/li&gt;
&lt;li class="alt"&gt;                return [{'name': item, 'count': dupe_list.count(item)} for item in unique_set] &lt;/li&gt;
&lt;li&gt;        tag_list = count_dupes(all_tags)&lt;/li&gt;
&lt;li class="alt"&gt;        tag_list.sort(key = lambda k: k['count'], reverse=True)&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class="alt"&gt;        context = { &lt;/li&gt;
&lt;li&gt;                'tag_list': tag_list,&lt;/li&gt;
&lt;li class="alt"&gt;        }&lt;/li&gt;
&lt;li&gt;        return render_to_response(&lt;/li&gt;
&lt;li class="alt"&gt;                'tags/tag_list.html',&lt;/li&gt;
&lt;li&gt;                context,&lt;/li&gt;
&lt;li class="alt"&gt;                context_instance = RequestContext(request)&lt;/li&gt;
&lt;li&gt;        )&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Counting the tag instances is what stumped me &amp;ndash; but that's only because I'm new to Python (and, honestly, programming in general). My solution to that problem starts on line 10. I've used a function that uses list comprehensions to build a dictionary per tag that contains the name of the tag and the number of times that tag's been used site-wide. Then on line 14, we're using a lambda function to sort the list by the number of times each tag was used.&lt;/p&gt;

&lt;h3&gt;Wait &amp;ndash; no links to the finished product?&lt;/h3&gt;

&lt;p&gt;Nope, not yet. Because I wasn't sure if what I wanted to do was possible given my modest skills, I've completed all the programming and still have no design to wrap it in. It's been an interesting experiment &amp;ndash; and somewhat freeing. This design pattern might just stick.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/5LQK04jT_J4" height="1" width="1"/&gt;</description>
      <dc:date>2008-11-09T19:48:42+00:00</dc:date>
    </item>

    <item>
      <title>Mimicking WordPress’ Date-Based Permalinks in ExpressionEngine</title>
      <link>http://www.thenestedfloat.com/articles/mimicking-wordpress-date-based-permalinks-in-expressionengine/</link>
      <guid>http://www.thenestedfloat.com/articles/mimicking-wordpress-date-based-permalinks-in-expressionengine/</guid>
      <description>&lt;p&gt;When I made the big jump from &lt;a href="http://wordpress.org" title="WordPress"&gt;WordPress&lt;/a&gt; to &lt;a href="http://expressionengine.com" title="ExpressionEngine"&gt;ExpressionEngine&lt;/a&gt; this past spring, I dumped all my old posts. There were many reasons for the decision, and one of them was that I couldn't figure out an easy way to migrate the URLs for existing articles over to the new system. Granted, it wasn't the biggest of reasons, but it didn't help.&lt;/p&gt;
&lt;p&gt;The year/month/day permalinks that WP helped popularize are great, especially when you hold them up to &lt;a href="http://www.w3.org/Provider/Style/URI" title="the standards presented by Tim Berners-Lee"&gt;the standards presented by Tim Berners-Lee&lt;/a&gt;. They're descriptive of the content, and in systems like WordPress, they can be made hackable with very little effort. (You could, for instance, remove the title, and have an archive page serve up a list of all posts for that day. Hack off the day, and the same template could serve up all the posts for that month. You get the idea.)&lt;/p&gt;
&lt;p&gt;While ExpressionEngine doesn't serve up nice date based URLs by default, it turns out it can be done. In fact, it's quite easily accomplished.&lt;/p&gt;
&lt;h3&gt;I love it when developers get all transparent with their process.&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.engaging.net/articles/converting-subtraction" title="Adam Kanh"&gt;Adam Kanh&lt;/a&gt;, the developer behind the conversion of &lt;a href="http://subtraction.com" title="Khoi Vinh's Subtraction"&gt;Khoi Vinh's Subtraction&lt;/a&gt; from Movable Type to ExpressionEngine, deserves all of the credit for this little trick. It's immensely helpful when a developer lays out their templates, regardless of what language they're written in, for all the world to see. In all those lines of code, here's the piece I was most interested in:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;lt;h4&amp;gt;&amp;lt;a href="&amp;#123;path=&amp;#123;entry_date format="%Y/%m/%d"&amp;#125;&amp;#125;&amp;#123;url_title&amp;#125;"&amp;gt;&amp;#123;title&amp;#125;&amp;lt;/a&amp;gt;&amp;lt;/h4&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The thing about ExpressionEngine is some template tags &amp;ndash; like &lt;code&gt;&lt;a href="http://expressionengine.com/docs/modules/weblog/variables.html#date_variables" title="entry_date"&gt;entry_date&lt;/a&gt;&lt;/code&gt; &amp;ndash; get processed really early on in the rendering process. That means you can nest them inside tags that get rendered later on &amp;ndash; like the &lt;code&gt;&lt;a href="http://expressionengine.com/docs/templates/globals/path.html" title="path"&gt;path&lt;/a&gt;&lt;/code&gt; tag. All we're doing in this little snippet is making a path out of a formatted entry date string and then appending the title of the post to the end. The resulting permalink should look familiar to WordPress users and consumers:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;http://thenestedfloat.com/2008/10/06/crazy-awesome-post&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;From here, you've got all sorts of options for writing and arranging templates that handle this URL in a friendly, hackable way. I'll describe one such option here soon, but you may also find that Adam's solution, linked above, is just what you're looking for.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/EyUBin86EAs" height="1" width="1"/&gt;</description>
      <dc:date>2008-10-07T01:01:02+00:00</dc:date>
    </item>

    <item>
      <title>Creating Future Entry Archives In ExpressionEngine</title>
      <link>http://www.thenestedfloat.com/articles/creating-future-entry-archives-in-expressionengine/</link>
      <guid>http://www.thenestedfloat.com/articles/creating-future-entry-archives-in-expressionengine/</guid>
      <description>&lt;p&gt;&lt;a href="http://expressionengine.com" title="ExpressionEngine"&gt;ExpressionEngine&lt;/a&gt;'s &lt;code&gt;&lt;a href="http://expressionengine.com/docs/modules/weblog/archive_month_links.html" title="exp:weblog:month_links"&gt;exp:weblog:month_links&lt;/a&gt;&lt;/code&gt; function is one of those basic blog tools you'd expect any leading software to include. It's main responsibility is generating a list of links to monthly archive pages. But like a number of ExpressionEngine's core functions, turns out it's actually less flexible than the core system itself.&lt;/p&gt;
&lt;p&gt;See, EE makes it dead easy to mark an entry with a future date and still display that entry on public-facing pages. Whether you create a custom date field and future date that or you use the entry date field attached to every entry by default, all posts are accessible. The problem is that tags like &lt;code&gt;exp:weblog:month_links&lt;/code&gt; don't play nice with future dates.&lt;/p&gt;
&lt;h3&gt;The situation.&lt;/h3&gt;
&lt;p&gt;Recently, I was working on a client site that needed to include a list of future events with some sub-navigation that included links to monthly event summaries for each of the next 12 months. In other words: a future entry archive. If the event date is past, I wanted the event to disappear without any action on the part of the client. If there are no more events for a given month, I wanted that month to disappear from the sub-navigation.&lt;/p&gt;
&lt;p&gt;The list of events was easy. All I had to do is add the &lt;code&gt;&lt;a href="http://expressionengine.com/docs/modules/weblog/parameters.html#par_show_future_entries" title="show_future_entries"&gt;show_future_entries&lt;/a&gt;&lt;/code&gt; parameter to &lt;code&gt;&lt;a href="http://expressionengine.com/docs/modules/weblog/weblog_entries.html" title="exp:weblog:entries"&gt;exp:weblog:entries&lt;/a&gt;&lt;/code&gt;. But &lt;code&gt;exp:weblog:month_links&lt;/code&gt; has no such parameter.&lt;/p&gt;
&lt;h3&gt;The solution.&lt;/h3&gt;
&lt;p&gt;Well, &lt;code&gt;exp:weblog:entries&lt;/code&gt; does what I need. Why not exploit it? Here's what I ended up doing:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;lt;div class="widget"&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;lt;h3&amp;gt;Events By Month&amp;lt;/h3&amp;gt;&lt;/li&gt;
&lt;li&gt;	&amp;lt;ul&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;#123;exp:weblog:entries weblog="calendar" start_on="&amp;#123;current_time format='%Y-%m-%d %g:%i %A'&amp;#125;" show_future_entries="yes" sort="asc" limit="999" dynamic="off"&amp;#125;&lt;/li&gt;
&lt;li&gt;	&amp;#123;date_heading display="monthly"&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;		&amp;lt;li&amp;gt;&amp;lt;a href="/club/calendar/&amp;#123;year&amp;#125;/&amp;#123;month&amp;#125;"&amp;#123;if segment_4 == month&amp;#125; class="on"&amp;#123;/if&amp;#125;&amp;gt;&amp;#123;entry_date format="%F, %Y"&amp;#125;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/li&gt;
&lt;li&gt;	&amp;#123;/date_heading&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;#123;/exp:weblog:entries&amp;#125;&lt;/li&gt;
&lt;li&gt;	&amp;lt;/ul&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;&amp;lt;/div&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There are a couple fun tricks going on here. First, the &lt;code&gt;start_on&lt;/code&gt; parameter does exactly what you'd expect &amp;ndash; lets you explicitly set a date where your query results should start. In this case, we're using EE's handy &lt;code&gt;&lt;a href="http://expressionengine.com/docs/templates/globals/single_variables.html#var_current_time" title="current_time"&gt;current_time&lt;/a&gt;&lt;/code&gt; global variable to fetch the current time. That's how we ensure that only future dated entries will ever show up. Events that have already happened just aren't returned by our query. And as mentioned above, we've set the &lt;code&gt;show_future_entries&lt;/code&gt; parameter to yes.&lt;/p&gt;
&lt;p&gt;But the piece that's most germane to this conversation is that &lt;code&gt;&lt;a href="http://expressionengine.com/docs/modules/weblog/variable_pairs.html#var_date_heading" title="date_heading"&gt;date_heading&lt;/a&gt;&lt;/code&gt; bit. In most cases, you'd use a date heading to segment a list of entries &amp;ndash; just like I do throughout this site. But in this case, we're not actually posting any entry data to the page. The date heading is, in fact, &lt;em&gt;all&lt;/em&gt; we're printing. Get it? Just a date for each month's worth of results, and voila &amp;ndash; instant monthly archive. We just put a link around the results and point it towards the "calendar" template in the "club" group. In this case, I've got some php in that template that knows how to handle date based requests.&lt;/p&gt;
&lt;p&gt;But that's for another post.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/dPCP4Aff2Fg" height="1" width="1"/&gt;</description>
      <dc:date>2008-09-24T00:25:26+00:00</dc:date>
    </item>

    <item>
      <title>Using WordPress’ wp_enqueue_script() In Themes And Plugins</title>
      <link>http://www.thenestedfloat.com/articles/using-wordpress-wp-enqueue-script-in-themes-and-plugins/</link>
      <guid>http://www.thenestedfloat.com/articles/using-wordpress-wp-enqueue-script-in-themes-and-plugins/</guid>
      <description>&lt;p&gt;Man, the &lt;a href="http://codex.wordpress.org" title="WordPress Codex"&gt;WordPress Codex&lt;/a&gt; is &lt;em&gt;deep&lt;/em&gt;. I've spent more hours than I'd like to admit plumbing its depths, and I still get the sense I haven't seen more than a tenth of what it has to offer.&lt;/p&gt;
&lt;p&gt;Here's a function straight from the codex that'll be a big help to theme and plugin developers: the &lt;code&gt;&lt;a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script" title="wp_enqueue_script()"&gt;wp_enqueue_script()&lt;/a&gt;&lt;/code&gt; function.&lt;/p&gt;
&lt;h3&gt;What's it for?&lt;/h3&gt;
&lt;p&gt;Glad you asked. If you find yourself building WordPress themes and plugins that're heavy on the JavaScript, this guy's gonna be your new best friend. For starters, instead of having to package your theme with its own copy of &lt;a href="http://jquery.com" title="jQuery"&gt;jQuery&lt;/a&gt; or &lt;a href="http://script.aculo.us/" title="Scriptaculous"&gt;Scriptaculous&lt;/a&gt;, you can use &lt;code&gt;wp_enqueue_script()&lt;/code&gt; to include the most recent version of the library WordPress has available wherever you need it. Calling the function thusly will print a link to the script right before the end of your document's &lt;code&gt;head&lt;/code&gt;:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;lt;?php wp_enqueue_script('jquery'); ?&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;But what if I prefer to include jQuery with my plugin anyway?&lt;/h3&gt;
&lt;p&gt;Nothing's stopping you. But consider the possibility that the people who use your plugin or theme are likely to at some point install some other WordPress add-on that also uses jQuery or Scriptaculous. The big benefit to using &lt;code&gt;wp_enqueue_script()&lt;/code&gt; is that WordPress keeps track of what JavaScript is already being included on the page. No library or script will be included more than once. This can help cut down on collisions that might break your theme or plugin.&lt;/p&gt;
&lt;h3&gt;Cool. What else can it do?&lt;/h3&gt;
&lt;p&gt;Aside from JavaScript libraries, this function also gives you access to a bunch of other handy scripts already used by WordPress core, mostly in the admin interface. &lt;a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script" title="wp_enqueue_script()"&gt;Check out the Codex page&lt;/a&gt; for a complete list. Even more helpful: you can register your own script &amp;ndash; either something you wrote or borrowed from someone else &amp;ndash; and declare any libraries on which it depends. Calling the function like this:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;lt;?php wp_enqueue_script('dropdowns', '/wp-content/plugins/fancydropdowns/js/dropdowns.js', array('jquery'), '1.0' ); ?&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;would automatically pull in links to both your script and the jQuery library. All you're giving it is what you're calling your script, the path where it can be found, its dependencies, and your script's version number, in that order.&lt;/p&gt;
&lt;p&gt;I don't pick apart a ton of WordPress plugins, but having looked at the internals of a crazy number of themes in the last year, I can tell you that a bunch of them could benefit from this handy function.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/KnyX-MAAatA" height="1" width="1"/&gt;</description>
      <dc:date>2008-09-10T22:02:16+00:00</dc:date>
    </item>

    <item>
      <title>Aggregating Your Social Bookmarking Feeds With SimplePie</title>
      <link>http://www.thenestedfloat.com/articles/aggregating-your-social-bookmarking-feeds-with-simplepie/</link>
      <guid>http://www.thenestedfloat.com/articles/aggregating-your-social-bookmarking-feeds-with-simplepie/</guid>
      <description>&lt;p&gt;Now that &lt;a href="http://www.thenestedfloat.com/articles/introducing-agregado-a-free-wordpress-theme-with-lifestream/" title="Agregado is launched"&gt;Agregado is launched&lt;/a&gt;, I'm starting to review what I learned during the build process. In short: tons. But how about an example?&lt;/p&gt;
&lt;h3&gt;The wonders of SimplePie.&lt;/h3&gt;
&lt;p&gt;Agregado uses &lt;a href="http://simplepie.org" title="SimplePie"&gt;SimplePie&lt;/a&gt; to aggregate &lt;abbr title="Really Simple Syndication"&gt;RSS&lt;/abbr&gt; feeds from services you use anywhere on the web. When you call SimplePie in your program, you first instantiate a new SimplePie object. For all intents and purposes, what you've got is a single feed entity that you can print to your page, traverse, and otherwise mangle with code. That's great news for lifestream fans because it abstracts the parts of the task that are really just mind-numbingly boring &amp;ndash; that is, ordering your items by date, caching, and the like. It's a real time-saver for developers. One of the reasons SimplePie is gaining popularity is how dead simple it is to instantiate one of these objects in your code:&lt;/p&gt;
&lt;ol class="code"&gt;
	&lt;li&gt;$feed = new SimplePie(array(&lt;/li&gt;
	&lt;li class="alt"&gt;	'http://simplepie.org/blog/feed/',&lt;/li&gt;
	&lt;li&gt;	'http://digg.com'&lt;/li&gt;
	&lt;li class="alt"&gt;), $_SERVER['DOCUMENT_ROOT'] . '/cache');&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That's all it takes to set up an object that contains items from any assortment of arbitrary feeds.&lt;/p&gt;
&lt;h3&gt;The problem.&lt;/h3&gt;
&lt;p&gt;The trouble starts when you want to get information about the source of one of those feeds you just mashed together. To SimplePie, where the feeds came from doesn't matter so much anymore. But if you're building a lifestream for your site, you'll likely want to assign classes to each item &amp;ndash; perhaps to give them a particular color or place an icon next to the link. There are a couple ways you can tackle the problem. You could use PHP to look at the content of the link and assign a class that way. But what about social bookmarking sites like &lt;a href="http://delicious.com" title="Delicious"&gt;Delicious&lt;/a&gt; or &lt;a href="http://ma.gnolia.com" title="Magnolia"&gt;Magnolia&lt;/a&gt;? In those cases, the feed link will point to the site you've bookmarked, not the service you used. And if you've bookmarked a site on Delicious, you'll probably want to indicate that on your lifestream.&lt;/p&gt;
&lt;h3&gt;A solution.&lt;/h3&gt;
&lt;p&gt;Fortunately, there's an easy way around this. All you've gotta do is iterate over the items in your master feed, and for each item "climb out" of the master feed using SimplePie's &lt;code&gt;get_feed()&lt;/code&gt; method. At it's simplest (hyuck, hyuck), the code would look something like this:&lt;/p&gt;
&lt;ol class="code"&gt;
	&lt;li&gt;&amp;lt;?php&lt;/li&gt;
	&lt;li class="alt"&gt;foreach ($feed-&amp;gt;get_items() as $item)&lt;/li&gt;
	&lt;li&gt;{&lt;/li&gt;
	&lt;li class="alt"&gt;	$parent_feed = $item-&amp;gt;get_feed();&lt;/li&gt;
	&lt;li&gt;	$address = $parent_feed-&amp;gt;subscribe_url();&lt;/li&gt;
	&lt;li class="alt"&gt;	if (strstr($address, 'thenestedfloat'))&lt;/li&gt;
	&lt;li&gt;	{&lt;/li&gt;
	&lt;li class="alt"&gt;		$class = "myblog";&lt;/li&gt;
	&lt;li&gt;	}&lt;/li&gt;
	&lt;li class="alt"&gt;	elseif (strstr($address, 'delicious')) {&lt;/li&gt;
	&lt;li&gt;		$class = "delicious";&lt;/li&gt;
	&lt;li class="alt"&gt;	}&lt;/li&gt;
	&lt;li&gt;?&amp;gt;&lt;/li&gt;
	&lt;li class="alt"&gt;	&amp;lt;li class="&amp;lt;?php echo $class; ?&amp;gt;"&amp;gt;&amp;lt;?php echo $item-&amp;gt;get_title(); ?&amp;gt;&amp;lt;/li&amp;gt;&lt;/li&gt;
	&lt;li&gt;&amp;lt;?php&lt;/li&gt;
	&lt;li class="alt"&gt;}&lt;/li&gt;
	&lt;li&gt;?&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Take note of lines 4 and 5. That's where we're getting the address of the parent feed for the link. After that, all we're doing is printing out the item and using the PHP &lt;code&gt;strstr&lt;/code&gt; function to see which service we're working with.&lt;/p&gt;
&lt;p&gt;Isn't that nice? Yeah. All the way nice.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/vvwXGCgosgo" height="1" width="1"/&gt;</description>
      <dc:date>2008-09-09T21:38:03+00:00</dc:date>
    </item>

    <item>
      <title>Introducing Agregado: A Free WordPress Theme With Lifestream</title>
      <link>http://www.thenestedfloat.com/articles/introducing-agregado-a-free-wordpress-theme-with-lifestream/</link>
      <guid>http://www.thenestedfloat.com/articles/introducing-agregado-a-free-wordpress-theme-with-lifestream/</guid>
      <description>&lt;p&gt;This is a pretty exciting post for me. A few months back, the folks over at &lt;a href="http://smashingmagazine.com" title="Smashing Magazine"&gt;Smashing Magazine&lt;/a&gt; approached esteemed &lt;a href="http://wordpress.org" title="WordPress"&gt;WordPress&lt;/a&gt; theme designer Darren Hoyt (who, in the interest of full disclosure, is also my office-mate) about creating a free, high quality WordPress theme to be released as part of that site's free theme collection. Darren asked that I handle the back-end features while he rolled out the design.&lt;/p&gt;
&lt;p&gt;Today, we're proud to introduce &lt;a href="http://www.darrenhoyt.com/2008/09/08/agregado-lifestream-theme-for-wordpress-released/" title="Agregado"&gt;Agregado&lt;/a&gt;. While the theme boasts a whole slew of extra features and flourishes, the main attraction is the integrated lifestream carousel featured prominently on the homepage. Heavily indebted to &lt;a href="http://kierandelaney.net/" title="Kieran Delaney"&gt;Kieran Delaney&lt;/a&gt;'s &lt;a href="http://kierandelaney.net/blog/projects/simplelife/" title="SimpleLife plugin"&gt;SimpleLife plugin&lt;/a&gt;, Agregado's lifestream accomodates all the major social networking sites &amp;ndash; including Twitter, Pownce, Flickr, Facebook, Last.fm, Magnolia, Delicious, Goodreads, and four additional feeds of your choosing. The whole thing's nested in a snazzy little rotating carousel. Make your website the one place people think to look for everything you're up to online.&lt;/p&gt;
&lt;p&gt;What else? Oh, plenty of fun stuff. Drop-down effects courtesy of jQuery, a built in contact form, and numbered pagination sprinkled throughout. And that's not to mention the off-the-charts electric-space vibe and clean UI of Darren's design.&lt;/p&gt;
&lt;p&gt;So &lt;a href="http://darrenhoyt.com/demo/agregado/" title="give it a look"&gt;give it a look&lt;/a&gt;, kick the wheels, and make sure to let Darren and me know what you think. Stay tuned, too, because we've been talking up some really big ideas &amp;ndash; some that extend the concepts behind the Agregado theme and some that'll take us into completely new territory. Whatever it is, you can count on me talking about it here &amp;ndash; so &lt;a href="http://www.thenestedfloat.com/feed/" title="grab the feed"&gt;grab the feed&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/5Kk7F9NHbEA" height="1" width="1"/&gt;</description>
      <dc:date>2008-09-08T14:26:38+00:00</dc:date>
    </item>

    <item>
      <title>Complex ExpressionEngine Queries Revisited</title>
      <link>http://www.thenestedfloat.com/articles/complex-expressionengine-queries-revisited/</link>
      <guid>http://www.thenestedfloat.com/articles/complex-expressionengine-queries-revisited/</guid>
      <description>&lt;p&gt;Not so long ago, I wrote about &lt;a href="http://www.thenestedfloat.com/articles/expressionengines-sql-query-module/" title="a method"&gt;a method&lt;/a&gt; for running complex queries on an &lt;a href="http://expressionengine.com" title="ExpressionEngine"&gt;ExpressionEngine&lt;/a&gt; database using two built-in functions: &lt;a href="http://expressionengine.com/docs/modules/weblog/weblog_entries.html" title="exp:weblog:entries"&gt;&lt;code&gt;exp:weblog:entries&lt;/code&gt;&lt;/a&gt; and &lt;a href="http://expressionengine.com/docs/modules/query/index.html" title="exp:query"&gt;&lt;code&gt;exp:query&lt;/code&gt;&lt;/a&gt;. It's a neat and useful trick, but the example I suggested was a somewhat limited, specific use case. There are tons of ways to relate one bit of data to another in ExpressionEngine and equally as many ways to get at that data. Let's take a look at another one of those methods.&lt;/p&gt;
&lt;h3&gt;Querying on categorized data in ExpressionEngine.&lt;/h3&gt;
&lt;p&gt;Like virtually every other &lt;abbr title=Content Management System"&gt;CMS&lt;/abbr&gt; on the planet, ExpressionEngine provides some handy tools for applying categories to data and displaying that data in a logical way. In EE, &lt;code&gt;exp:weblog:categories&lt;/code&gt; is likely gonna be the right tool for the job. Let's say you have a "staff" weblog where each staff member is assigned to one or more categories &amp;ndash; maybe clerical, administrative, and executive. Your template code might look something like this:&lt;/p&gt;
&lt;ol class="code"&gt;
	&lt;li&gt;&amp;lt;ul&amp;gt;&lt;/li&gt;
	&lt;li class="alt"&gt;	&amp;#123;exp:weblog:categories weblog="staff" show_empty="no" style="linear"&amp;#125;&lt;/li&gt;				
	&lt;li&gt;	&amp;lt;li&amp;gt;&amp;lt;a href="&amp;#123;path="about/staff_list"&amp;#125;"&amp;gt;&amp;#123;category_name&amp;#125;&amp;lt;/li&amp;gt;&lt;/li&gt;
	&lt;li class="alt"&gt;	&amp;#123;/exp:weblog:categories&amp;#125;&lt;/li&gt;
	&lt;li&gt;&amp;lt;ul&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What you'll end up with is an unordered list of all your categories associated with the "staff" weblog, each linking to a template that displays the items belonging to that category. So your &lt;abbr title="HyperText Markup Language"&gt;HTML&lt;/abbr&gt; output would look like this:&lt;/p&gt;
&lt;ol class="code"&gt;
	&lt;li&gt;&amp;lt;ul&amp;gt;&lt;/li&gt;
	&lt;li class="alt"&gt;	&amp;lt;li&amp;gt;&amp;lt;a href="/about/staff_list/"&amp;gt;Administrative&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/li&gt;
	&lt;li&gt;	&amp;lt;li&amp;gt;&amp;lt;a href="/about/staff_list/"&amp;gt;Managerial&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/li&gt;
	&lt;li class="alt"&gt;	&amp;lt;li&amp;gt;&amp;lt;a href="/about/staff_list/"&amp;gt;Executive&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/li&gt;
	&lt;li&gt;&amp;lt;/ul&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;But what if&amp;hellip;&lt;/h3&gt;
&lt;p&gt;Let's say you wanna skip the middle man. That is, you don't want to make the user click through to another page to see all the staff members in a particular category. What if instead you just wanna list all staff, organized by category, on this current page and link each of those staff members to their individual bio pages? In many instance, limiting the number of times a site visitor must click to a new page will increase the time they spend on your site.&lt;/p&gt;
&lt;p&gt;Luckily, EE lets you nest &lt;code&gt;exp:weblog:entries&lt;/code&gt; within &lt;code&gt;exp:weblog:categories&lt;/code&gt;. Our solution might look like this:&lt;/p&gt;
&lt;ol class="code"&gt;
	&lt;li&gt;&amp;#123;exp:weblog:categories weblog="staff" show_empty="no" style="linear"&amp;#125;&lt;/li&gt;				
	&lt;li class="alt"&gt;&amp;lt;h3&amp;gt;&amp;#123;category_name&amp;#125;&amp;lt;/h3&amp;gt;&lt;/li&gt;
	&lt;li&gt;&amp;lt;ul&amp;gt;&lt;/li&gt;
	&lt;li class="alt"&gt;	&amp;#123;exp:weblog:entries weblog="staff" category="&amp;#123;category_id&amp;#125;" limit="999" orderby="staff_last_name" sort="asc" status="featured|open"&amp;#125;&lt;/li&gt;
	&lt;li&gt;	&amp;lt;li&amp;gt;&lt;/li&gt;
	&lt;li class="alt"&gt;		&amp;lt;h3&amp;gt;&amp;lt;a href="&amp;#123;title_permalink="about/staff"&amp;#125;"&amp;gt;&amp;#123;title&amp;#125;&amp;lt;/a&amp;gt;, &amp;#123;staff_position&amp;#125;&amp;lt;/h3&amp;gt;&lt;/li&gt;
	&lt;li&gt;		&amp;lt;span class="contact"&amp;gt;&amp;#123;staff_phone&amp;#125;&amp;#123;if staff_email&amp;#125;, &amp;lt;a href="mailto:&amp;#123;staff_email&amp;#125;"&amp;gt;email&amp;lt;/a&amp;gt;&amp;#123;/if&amp;#125;&amp;lt;/span&amp;gt;&lt;/li&gt;
	&lt;li class="alt"&gt;	&amp;lt;/li&amp;gt;&lt;/li&gt;
	&lt;li&gt;	&amp;#123;/exp:weblog:entries&amp;#125;&lt;/li&gt;
	&lt;li class="alt"&gt;&amp;lt;/ul&amp;gt;&lt;/li&gt;
	&lt;li&gt;&amp;#123;/exp:weblog:categories&amp;#125;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Nice, right? The trick is on line 4. EE is set up in a way that allows you to use the &lt;code&gt;category_id&lt;/code&gt; of the current category you're iterating over as a parameter for &lt;code&gt;exp:weblog:entries&lt;/code&gt;. ExpressionEngine doesn't always allow this kind of nesting, and when they do, it's often poorly documented. My advice? If you find yourself needing similar functionality but with other modules and tags, just give it a shot. If it doesn't work, there's always &lt;a href="http://expressionengine.com/forums/" title="the forums"&gt;the forums&lt;/a&gt;. Someone's likely tried to do exactly what you're doing, and if you're lucky, they've already found a super elegant solution.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/wYsKj3vvofM" height="1" width="1"/&gt;</description>
      <dc:date>2008-09-06T18:59:28+00:00</dc:date>
    </item>

    <item>
      <title>Opentape: Filling The Muxtape Void</title>
      <link>http://www.thenestedfloat.com/articles/opentape-filling-the-muxtape-void/</link>
      <guid>http://www.thenestedfloat.com/articles/opentape-filling-the-muxtape-void/</guid>
      <description>&lt;p&gt;In addition to talking about it &lt;a href="http://www.thenestedfloat.com/articles/the_simplicity_of_muxtape/" title="here"&gt;here&lt;/a&gt;, I've been chatting up &lt;a href="http://muxtape.com" title="Muxtape"&gt;Muxtape&lt;/a&gt; to everyone who'll listen. But now it looks like &lt;a href="http://arstechnica.com/news.ars/post/20080819-riaa-confirms-its-behind-the-muxtape-shutdown.html" title="Muxtape's gone the way of the dodo"&gt;Muxtape's gone the way of the dodo&lt;/a&gt;. That's too bad, really, because I honestly (and naively) believed that the Muxters might be able to sidestep the &lt;abbr title="Recording Industry Association of America"&gt;RIAA&lt;/abbr&gt; altogether. I mean, songs linked to legitimate copies at Amazon, it was near-impossible for anyone less than a Comp Sci major to hack songs out of the system, and&amp;hellip;well, it was just so good natured and &lt;em&gt;fun&lt;/em&gt;. You just gotta root for people who make toys this cool.&lt;/p&gt;
&lt;p&gt;But the cassette tape, for people of my particular demographic, is a powerful symbol of youth, and when you mix all that symbolism with such a useful tool and then pull it away with a muscular, authoritarian flourish, somebody will evolve the concept &amp;ndash; and this time, they'll make it harder to clamp down on. (See also: &lt;a href="http://en.wikipedia.org/wiki/Napster" title="Napster"&gt;Napster&lt;/a&gt; begets &lt;a href="http://en.wikipedia.org/wiki/BitTorrent_(protocol)" title="Bittorrent"&gt;Bittorrent&lt;/a&gt;.)&lt;/p&gt;
&lt;p&gt;No surprise then that &lt;a href="http://opentape.fm/" title="Opentape"&gt;Opentape&lt;/a&gt; &amp;ndash; a clone of Muxtape that, aside from being self-hosted, is virtually identical to our fallen comrade &amp;ndash; is receiving &lt;a href="http://lifehacker.com/5041781/host-your-own-music-playlist-with-opentape" title="all sorts"&gt;all sorts&lt;/a&gt; &lt;a href="http://arstechnica.com/news.ars/post/20080826-opentape-invites-riaa-to-play-whack-a-mole-post-muxtape.html" title="of awesome"&gt;of awesome&lt;/a&gt; &lt;a href="http://www.techcrunch.com/2008/08/26/muxtape-reborn-unofficially-as-opentape/" title="geek press"&gt;geek press&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I won't lie: the install process was buggy as all hell, but it looks like the developers are trying to move fast to fill the gap left by Muxtape, and I'm confident they'll get things ironed out in short order. I've got it up and running behind a password protected directory here on &lt;abbr title="The Nested Float"&gt;TNF&lt;/abbr&gt;, and it works a charm. Don't worry. I've got all sorts of copyright permissions for these tracks. If you want to listen, &lt;a href="mailto:&amp;#109;&amp;#097;&amp;#116;&amp;#116;&amp;#104;&amp;#101;&amp;#119;&amp;#116;&amp;#100;&amp;#097;&amp;#119;&amp;#115;&amp;#111;&amp;#110;&amp;#064;&amp;#103;&amp;#109;&amp;#097;&amp;#105;&amp;#108;&amp;#046;&amp;#099;&amp;#111;&amp;#109;" title="just holler"&gt;just holler&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And if you like what you hear, I've been told I throw a mean bar-mitzvah.&lt;/p&gt;
&lt;h3&gt;Apropos of nothing.&lt;/h3&gt;
&lt;p&gt;A few weeks back, I promised to break each TNF content offering into a separate RSS feed. The deed is done. If you're already subscribed to &lt;a href="http://feeds.feedburner.com/thenestedfloat" title="TNF's main feed"&gt;TNF's main feed&lt;/a&gt; and you don't mind getting all this site's content delivered right to your proverbial door, do nothing. If that sounds like a bit much to take in, you can subscribe to individual feeds for &lt;a href="feed://feeds.feedburner.com/thenestedfloat/links" title="links"&gt;links&lt;/a&gt;, &lt;a href="feed://feeds.feedburner.com/thenestedfloat/quotes" title="quotes"&gt;quotes&lt;/a&gt;, and &lt;a href="http://feeds.feedburner.com/thenestedfloat/articles" title="articles"&gt;articles&lt;/a&gt; (or from your browser's address bar, natch).&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/qHLzsm0PW4w" height="1" width="1"/&gt;</description>
      <dc:date>2008-08-28T03:27:40+00:00</dc:date>
    </item>

    <item>
      <title>Preventing Your Javascript From Loading In An IFrame</title>
      <link>http://www.thenestedfloat.com/articles/preventing-your-javascript-from-loading-in-an-iframe/</link>
      <guid>http://www.thenestedfloat.com/articles/preventing-your-javascript-from-loading-in-an-iframe/</guid>
      <description>&lt;p&gt;I sure as donuts wish someone had written a post like this before I needed it. So even if &lt;em&gt;you&lt;/em&gt; don't need it, file under "useful when someone's looking for an answer."&lt;/p&gt;
&lt;h3&gt;The Problem&lt;/h3&gt;
&lt;p&gt;Sometimes you just don't want the Javascript you've included on a page to load. I ran into one of these situations while working on a &lt;a href="http://wordpress.org" title="WordPress"&gt;WordPress&lt;/a&gt; theme with &lt;a href="http://darrenhoyt.com" title="a friend of mine"&gt;a friend of mine&lt;/a&gt;. The theme in question uses Jan Sorgalla's ridiculously useful &lt;a href="http://sorgalla.com/jcarousel/" title="jCarousel"&gt;jCarousel&lt;/a&gt; plugin for &lt;a href="http://jquery.com/" title="jQuery"&gt;jQuery&lt;/a&gt; on the homepage to load a list of text items that visitors can scroll through. You know: like a carousel.&lt;/p&gt;
&lt;p&gt;But WordPress 2.6 has a new theme picker on the backend. When a site administrator is selecting a new theme, rather than switching your entire site to that theme immediately, the contents of your site are loaded in an &lt;a href="http://en.wikipedia.org/wiki/IFrame" title="iframe"&gt;iframe&lt;/a&gt; so you can see what it'll look like before committing. It's a gimmick of dubious usefulness, but that's beside the point. The short of it: the gimmick choked on our carousel. Errors galore. They even included the word "Aborting." Never good.&lt;/p&gt;
&lt;h3&gt;The Solution&lt;/h3&gt;
&lt;p&gt;The carousel is initiated by a chunk of script in the header of the page, so all we have to do is prevent that chunk from executing. Like this:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;if (window == window.top) &amp;#123;&lt;/li&gt;
&lt;li class="alt"&gt;	...the chunklet of code...&lt;/li&gt;
&lt;li&gt;&amp;#125;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That's it. Even if you're a base JS novice like me, you know that &lt;code&gt;window&lt;/code&gt; refers to the browser window &amp;ndash; the global execution environment for all your code. It contains all the windows you see in your browser (and occasionally some you don't) including documents loaded in &lt;a href="http://www.w3.org/TR/html401/present/frames.html" title="frames"&gt;frames&lt;/a&gt; and iframes. Luckily &lt;code&gt;window&lt;/code&gt; has a property called &lt;code&gt;top&lt;/code&gt; that returns a reference to the document that contains all child documents. All we're saying here is "if the window where the code is loading is at the top, have at it." Otherwise, refrain. No more nasty error messages.&lt;/p&gt;
&lt;p&gt;Oh, and be on the lookout for an announcement about this theme, likely some time in the next week. It is, as they say, super sweet.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/JglUWFkH-fQ" height="1" width="1"/&gt;</description>
      <dc:date>2008-08-26T12:58:50+00:00</dc:date>
    </item>

    <item>
      <title>ExpressionEngine’s SQL Query Module</title>
      <link>http://www.thenestedfloat.com/articles/expressionengines-sql-query-module/</link>
      <guid>http://www.thenestedfloat.com/articles/expressionengines-sql-query-module/</guid>
      <description>&lt;p&gt;&lt;a href="http://www.thenestedfloat.com/articles/harnessing-expressionengines-input-class/" title="I promised"&gt;I promised&lt;/a&gt; more ExpressionEngine tips, and I intend to deliver.&lt;/p&gt;
&lt;p&gt;Today, let's take a look at &lt;abbr title="ExpressionEngine's"&gt;EE's&lt;/abbr&gt; &lt;a href="http://expressionengine.com/docs/modules/query/index.html" title="SQL query module"&gt;SQL query module&lt;/a&gt;. Like the &lt;a href="http://expressionengine.com/docs/modules/gallery/index.html" title="gallery module"&gt;gallery module&lt;/a&gt;, this one's only available with a paid license, and for my money, the functionality these two tools bring to the table more than make up for the $100 personal site fee.&lt;/p&gt;
&lt;p&gt;The query module is, for lack of a better phrase, almost completely frill-free. It takes one main argument: a valid &lt;a href="http://en.wikipedia.org/wiki/SQL" title="SQL"&gt;SQL&lt;/a&gt; query statement. It then loops through the results just like &lt;code&gt;&lt;a href="http://expressionengine.com/docs/modules/weblog/weblog_entries.html" title="exp:weblog:entries"&gt;exp:weblog:entries&lt;/a&gt;&lt;/code&gt;, allowing you to access these fields by referencing a field's short name wrapped in curly braces. But where &lt;code&gt;exp:weblog:entries&lt;/code&gt; decides what SQL to run based on the parameters you pass it, &lt;code&gt;exp:sql&lt;/code&gt; gives you a main-line connection to your database.&lt;/p&gt;
&lt;p&gt;True, for most everyday EE tasks, the complex, behind-the-scenes work baked into most tag pairs is a help and not a hindrance &amp;ndash; especially if you don't know much (or any) SQL. But in certain circumstances, &lt;code&gt;exp:query&lt;/code&gt; is indispensible.&lt;/p&gt;
&lt;h3&gt;Nesting queries.&lt;/h3&gt;
&lt;p&gt;One of EE's big limitations is you can't nest one &lt;code&gt;exp:weblog:entries&lt;/code&gt; call in another. I recently needed to do just that for a client project. This client is an umbrella organization that oversees around 40 smaller organizations located across the country. In the parent org's parlance, these are each projects. One of the umbrella organizations biggest requests was that each child organization should be able to add and edit their own information, but they should not have access to other organizations' content. Using EE's highly flexible &lt;a href="http://www.blue-dreamer.co.uk/index.php/blog/entry/expressionengine-member-groups-and-modules/" title="user group system"&gt;user group system&lt;/a&gt;, I set up a separate member group with accounts for each child organization. To get things started, I created one post in a "Projects" weblog per child organization and assigned the associated member as the author. Each entry would then be displayed on a separate page at /projects/organization_name. Because I set the permissions for this member group such that each member has access to only their material, on login to the Control Panel, each org would see only their main page in the edit tab.&lt;/p&gt;
&lt;p&gt;But then I ran into a problem. Each org &lt;em&gt;also&lt;/em&gt; needed to be able to post news items to the /news/ section with headline links printed to their main project page. Related entries were out of the question, because that would require me to present the child organizations with a drop down of all other child organizations, and leaving open the possibility that they could inadvertently associate their news item with the wrong organization.&lt;/p&gt;
&lt;p&gt;I realized that the one thing the project and news items would have in common on each project page was their author. I would simply run a query on the News weblog nested within the main &lt;code&gt;exp:weblog:entries&lt;/code&gt; call, using the author id from the former in the latter. (Phew!) What I wanted was this:&lt;/p&gt;
&lt;ol class="code"&gt;
	&lt;li&gt;&amp;#123;exp:weblog:entries weblog="projects" url_title="&amp;#123;segment_2&amp;#125;"&amp;#125;&lt;/li&gt;
	&lt;li class="alt"&gt;	...project body...&lt;/li&gt;
	&lt;li&gt;	&amp;#123;exp:weblog:entries weblog="news" author_id="&amp;#123;author_id&amp;#125;" limit="5"&amp;#125;&lt;/li&gt;
	&lt;li class="alt"&gt;		...news items...&lt;/li&gt;
	&lt;li&gt;	&amp;#123;/exp:weblog:entries&amp;#125;&lt;/li&gt;
	&lt;li class="alt"&gt;&amp;#123;/exp:weblog:entries&amp;#125;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;But as noted, you can't nest calls to &lt;code&gt;exp:weblog:entries&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;exp:query to the rescue.&lt;/h3&gt;
&lt;p&gt;What you &lt;em&gt;can&lt;/em&gt; do is nest &lt;code&gt;exp:query&lt;/code&gt; inside &lt;code&gt;exp:weblog:entries&lt;/code&gt;. You'll run into some variable collision (that is, EE will get confused about which "title" you mean &amp;ndash; the project title or the news title &amp;ndash; but that can be fixed by either &lt;a href="http://www.w3schools.com/SQL/sql_alias.asp" title="aliasing the variable names"&gt;aliasing the variable names&lt;/a&gt; or by &lt;a href="http://expressionengine.com/docs/templates/embedding_templates.html" title="embedding the exp:query call in a sub-template"&gt;embedding the &lt;code&gt;exp:query&lt;/code&gt; call in a sub-template&lt;/a&gt; and passing it an embed variable with the correct author id. I chose the latter. So I ended up with this:&lt;/p&gt;
&lt;ol class="code"&gt;
	&lt;li&gt;&amp;#123;exp:weblog:entries weblog="projects" url_title="&amp;#123;segment_2&amp;#125;"&amp;#125;&lt;/li&gt;
	&lt;li class="alt"&gt;	...project body...&lt;/li&gt;
	&lt;li&gt;	&amp;#123;embed="includes/news_headlines" author_id="&amp;#123;author_id&amp;#125;"&amp;#125;&lt;/li&gt;
	&lt;li class="alt"&gt;&amp;#123;/exp:weblog:entries&amp;#125;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The embedded template contained this:&lt;/p&gt;
&lt;ol class="code"&gt;
	&lt;li&gt;&amp;#123;exp:query sql="SELECT title,url_title,entry_date FROM exp_weblog_titles WHERE weblog_id=10 AND author_id=&amp;#123;embed:author_id&amp;#125; ORDER BY entry_date DESC LIMIT 5"&amp;#125;&lt;/li&gt;
	&lt;li class="alt"&gt;	...news headlines...&lt;/li&gt;
	&lt;li&gt;&amp;#123;/exp:query&amp;#125;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Voila! Embedded content. Granted, the SQL part is daunting if you're new to the Tao of the database, but &lt;a href="http://www.keithjbrown.co.uk/vworks/mysql/mysql_p1.php" title="with a little studying"&gt;with a little studying&lt;/a&gt;, anyone can cook up a userful query.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/vswRvxVzl_o" height="1" width="1"/&gt;</description>
      <dc:date>2008-08-20T02:40:34+00:00</dc:date>
    </item>

    <item>
      <title>Harnessing ExpressionEngine’s Input Class</title>
      <link>http://www.thenestedfloat.com/articles/harnessing-expressionengines-input-class/</link>
      <guid>http://www.thenestedfloat.com/articles/harnessing-expressionengines-input-class/</guid>
      <description>&lt;p&gt;I'm in the middle of a mammoth site build using &lt;a href="http://expressionengine.com" title="ExpressionEngine"&gt;ExpressionEngine&lt;/a&gt;, the same &lt;abbr title="Content Management System"&gt;CMS&lt;/abbr&gt; I use to power &lt;abbr title="The Nested Float"&gt;TNF&lt;/abbr&gt;. In fact, part of the reason I decided to rebuild my personal site on &lt;abbr title="ExpressionEngine"&gt;EE&lt;/abbr&gt; was to prepare for this project. And holy shnikeys, I'm glad that I did.&lt;/p&gt;
&lt;p&gt;Over the next few weeks, I'll be posting about some of the best tricks I've learned during this particular build. It's a nice hefty list and growing daily.&lt;/p&gt;
&lt;p&gt;Let's start with the simplest:&lt;/p&gt;
&lt;h3&gt;Invoking ExpressionEngine's input class in your templates.&lt;/h3&gt;
&lt;p&gt;Sound tough? It's not.&lt;/p&gt;
&lt;p&gt;EE uses &lt;a href="http://expressionengine.com/docs/development/usage/input.html" title="a class called $IN"&gt;a class called $IN&lt;/a&gt; to fetch any incoming data from a user of your site. This includes page requests &amp;ndash; in the form of a URL &amp;ndash; but can also include data submitted to &lt;a href="http://www.w3schools.com/php/php_post.asp" title="the $_POST variable"&gt;the $_POST variable&lt;/a&gt;, and even client-side info like browser type. The ExpressionEngine documentation mentions it (see link above), but it only gets a detailed analysis in the context of module and plugin building. That's too bad, because its utility can trickle down to us lowly template builders, too.&lt;/p&gt;
&lt;p&gt;The trick that's been most useful to me was ripped straight from &lt;a href="http://expressionengine.com/docs/templates/globals/url_segments.html#425" title="this comment"&gt;this comment&lt;/a&gt; on the documentation. The code goes like this:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;lt;?php&lt;/li&gt;
&lt;li class="alt"&gt;global $IN;&lt;/li&gt;
&lt;li&gt;$seg1 = $IN-&amp;gt;fetch_uri_segment('1');&lt;/li&gt;
&lt;li class="alt"&gt;if ($seg2 != '' &amp;&amp; $seg1 == 'foo') {&lt;/li&gt;
&lt;li&gt;?&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;...do stuff...&lt;/li&gt;
&lt;li&gt;&amp;lt;?php } ?&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;All you're doing is invoking the $IN class and then getting at the data using the class' methods. Set your template to &lt;a href="http://expressionengine.com/docs/templates/php_templates.html" title="process php on input"&gt;process php on input&lt;/a&gt;, and you're good to go.&lt;/p&gt;
&lt;p&gt;If you've used ExpressionEngine before, you may be thinking "Uhh...yeah? Big woop. I can already do that with EE's built in &lt;a href="http://expressionengine.com/docs/templates/globals/url_segments.html" title="URL segment variables"&gt;URL segment variables&lt;/a&gt;." But there's a big difference: you can't evaluate EE's proprietary global variables the way you can evaluate a standard php variable. Por ejemplo, you can't do anything like this:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;lt;?php&lt;/li&gt;
&lt;li class="alt"&gt;if (is_numeric($seg3)) {&lt;/li&gt;
&lt;li&gt;?&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;...do stuff...&lt;/li&gt;
&lt;li&gt;&amp;lt;?php } ?&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This trick can be especially useful if, say, you want to show a particular chunk of results if the URL was part of a homegrown date-based archive scheme you'd concocted. Sure, EE has a date-based archived system, but in some scenarios, it can't deliver what you need. And then the $IN class becomes your best friend.&lt;/p&gt;
&lt;p&gt;There are a bunch of other classes that could be used in a similar fashion &amp;ndash; including the $OUT class (for which no documentation exists) and the likely-to-be-more-useful &lt;a href="http://expressionengine.com/docs/development/usage/template.html" title="$TMPL (or template)"&gt;$TMPL (or template)&lt;/a&gt; and &lt;a href="http://expressionengine.com/docs/development/usage/database.html" title="$DB (or database)"&gt;$DB (or database)&lt;/a&gt; classes.&lt;/p&gt;
&lt;p&gt;So go &amp;ndash; muck up those templates. And let me know how you get on.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/WBW5nlqdk9k" height="1" width="1"/&gt;</description>
      <dc:date>2008-08-10T03:15:22+00:00</dc:date>
    </item>

    <item>
      <title>Comments!</title>
      <link>http://www.thenestedfloat.com/articles/comments/</link>
      <guid>http://www.thenestedfloat.com/articles/comments/</guid>
      <description>&lt;p&gt;So here&amp;#8217;s something I just did: I turned on comments for &lt;a href="http://thenestedfloat.com/links/" title="Links"&gt;Links&lt;/a&gt; and &lt;a href="http://thenestedfloat.com/quotes/" title="Quotes"&gt;Quotes&lt;/a&gt; here at &lt;abbr title="The Nested Float"&gt;TNF&lt;/abbr&gt;. To get to the single page and leave a comment, you just have to click that little hash at the end of the entry in question. I don&amp;#8217;t exactly recall why I didn&amp;#8217;t do this in the first place. Perhaps because no one would pay any attention to those two sections.
&lt;/p&gt;
&lt;p&gt;
Damned if I wasn&amp;#8217;t wrong. They may not be an accurate representation of the whole, but the people who read my blog &lt;em&gt;and&lt;/em&gt; talk to me in real life &amp;ndash; most notably &lt;a href="http://www.facebook.com/profile.php?id=597531647" title="my sister-in-law Jessie"&gt;my sister-in-law Jessie&lt;/a&gt; &amp;ndash; are actually clickin&amp;#8217; those links. And because I&amp;#8217;d do anything to get that particular group commenting here, this seemed like a wise choice.
&lt;/p&gt;
&lt;p&gt;
While we&amp;#8217;re on the subject of my site, I&amp;#8217;ve got a question for all you subscribers. Right now, I&amp;#8217;ve only got one feed, and it only spits out the articles. Would anyone be interested in separate feeds for links and quotes? And would anyone (perish the thought) actually want to subscribe to a master feed?
&lt;/p&gt;
&lt;p&gt;
If yes, say so, and you can consider it done.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/nWJxprPnWZg" height="1" width="1"/&gt;</description>
      <dc:date>2008-08-05T01:12:00+00:00</dc:date>
    </item>

    <item>
      <title>Getting Nothing Done</title>
      <link>http://www.thenestedfloat.com/articles/getting-nothing-done/</link>
      <guid>http://www.thenestedfloat.com/articles/getting-nothing-done/</guid>
      <description>&lt;p&gt;I think I'm breaking up with &lt;abbr title="Getting Things Done"&gt;GTD&lt;/abbr&gt;.&lt;/p&gt;
&lt;p&gt;I've had good luck with David Allen's &lt;em&gt;&lt;a href="http://www.amazon.com/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280"&gt;Getting Things Done&lt;/a&gt;&lt;/em&gt; in the year I've been following its (fairly rigid) set of instructions (suggestions? guidelines?) for stress-free productivity.&lt;/p&gt;
&lt;p&gt;I've had good luck. For the most part. And then I'll spend two weeks, maybe three, avoiding the mass of work I know I need to do. Completely avoiding, knowingly avoiding, sometimes even &lt;em&gt;enjoying&lt;/em&gt; the avoiding. And then for one reason or another, I'm back on the plan. Once I'm back on, I'm ticking to-do items off the list faster than seems possible.&lt;/p&gt;
&lt;p&gt;The most popular complaint about David Allen's teachings is my biggest complaint, too.&lt;/p&gt;
&lt;h3&gt;GTD's enormity makes it fragile.&lt;/h3&gt;
&lt;p&gt;I know a thousand people have made this same point a thousand different ways. And for anyone reading Allen's book with an ounce of skepticism will inevitably come to the same conclusion: following &lt;em&gt;all&lt;/em&gt; the guidelines would eat up half your waking hours. It's true. My version of GTD is pretty significantly stripped down, and it has been from the start. Still, I feel it could do with a bit more pruning.&lt;/p&gt;
&lt;p&gt;When &lt;em&gt;all&lt;/em&gt; your productivity &amp;ndash; in life, work, recreation, etc. &amp;ndash; gets tied up in one system, one unfinished task can end up log jamming everything. For example, a minor remodeling project that I spent more time avoiding than I care to admit ended up totally derailing me. But it wasn't just the task itself. It was the thought of tasking the whole thing out, project-izing it, analyzing it. What I really needed was to just &lt;a href="http://freelanceswitch.com/start/get-things-started-simpler-than-gtd/" title="get things started"&gt;get things started&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The problem for me is that some things just shouldn't be over-thought. And it's precisely those tasks that end up slipping through the cracks and causing havoc that brings the whole thing down. Even if they require 20 steps to complete them, they don't need to be flow-charted. They don't need to be brainstormed. The just need done. So I'm officially going lax on the whole GTD thing. I'll likely even stop calling it GTD.&lt;/p&gt;
&lt;h3&gt;But about that bath water...&lt;/h3&gt;
&lt;p&gt;That doesn't mean I still didn't learn a lot  from my Getting Things Done experiment. I certainly never was before, but I'm officially a list person now. My relationship to the lists is what's likely to change. What needs planning will get it. What doesn't won't.&lt;/p&gt;
&lt;p&gt;And admittedly, it might turn out that I'm breaking up with GTD in name only. It could be that little bit of perceived freedom's all I need.&lt;/p&gt;
&lt;p&gt;We'll see.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/BlIhbhBiJFw" height="1" width="1"/&gt;</description>
      <dc:date>2008-07-28T03:04:51+00:00</dc:date>
    </item>

    <item>
      <title>No Joke</title>
      <link>http://www.thenestedfloat.com/articles/no-joke/</link>
      <guid>http://www.thenestedfloat.com/articles/no-joke/</guid>
      <description>&lt;p&gt;The reviews for Christopher Nolan's &lt;a href="http://www.imdb.com/title/tt0468569/" title="The Dark Knight"&gt;The Dark Knight&lt;/a&gt; have been &lt;a href="http://www.rottentomatoes.com/m/the_dark_knight/" title="Rotten Tomatoes"&gt;pretty&lt;/a&gt; &lt;a href="http://www.rottentomatoes.com/m/the_dark_knight/" title="N.Y. Times"&gt;darn&lt;/a&gt; &lt;a href="http://www.rottentomatoes.com/m/the_dark_knight/" title="Washington Post"&gt;good&lt;/a&gt;. Yeah, I know &amp;ndash; all the big name reviews start off somewhat damning, claiming in one way or another that Heath Ledger stole the show, that it'd be a hollow shell of a movie without him. But read on and you'll see there's a good deal of praise crammed in each one, especially considering this is a Summer Blockbuster we're talking about.&lt;/p&gt;
&lt;p&gt;Every year I'm more skeptical of movie reviews. I've been sent to more abject junk &amp;ndash; and worse, shooed away from some true gems &amp;ndash; so it's getting easier to brush these things off. But when someone like Salon's comics expert &lt;a href="http://www.salon.com/ent/movies/feature/2008/07/19/batman_comics/" title="Douglas Wolk "&gt;Douglas Wolk&lt;/a&gt; goes and points out, in total comic geek terms, what this movie &lt;em&gt;could&lt;/em&gt; have been, I find it much harder to be completely in love.&lt;/p&gt;
&lt;p&gt;Wolk's point is well taken. The best Batmans are more introspective than Bale's, and they're usually also more crafty, more intelligent. Batman isn't only upstaged by the Joker in this newest flick &amp;ndash; he's upstaged by just about anything with a pulse. It's a one-dimensional performance. The nearly unintelligible monotone, the straight-line pursed lips, even the fight sequences feel stilted. Bale's Batman could have been so much &lt;em&gt;more&lt;/em&gt;. I went to bed last night totally swayed.&lt;/p&gt;
&lt;p&gt;But I think Wolk &amp;ndash; and all the other naysayers &amp;ndash; are missing something. This is the film where we see Batman on the verge of bowing out, acknowledging that heroes sometimes need to have a face. Hell, the movie doesn't even have the word "Batman" in the title. And all these reviews are in agreement about the Joker. He's the unquestionable center of the film. I for one have never been more skeezed out &amp;ndash; or exhilarated, for that matter &amp;ndash; by a hero-flick villain.&lt;/p&gt;
&lt;p&gt;I'm not saying Christopher Nolan made an entirely conscious decision to background the film's lead character to make any kind of artistic statement. But it seems plausible that, seeing what an unbelievable performance he'd captured in Ledger's Joker, a different film began to emerge.&lt;/p&gt;
&lt;p&gt;There's more than enough emotional weight in Nolan's film. What sets it apart from any superhero flick I've ever seen is that this is the first that's comfortable handing almost all of that weight over to its anarchistic psychopath. I'm finding it hard to believe that's really a bad thing.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/gajW3J20yi0" height="1" width="1"/&gt;</description>
      <dc:date>2008-07-20T03:56:40+00:00</dc:date>
    </item>

    <item>
      <title>The iPhone (slightly) Evolved</title>
      <link>http://www.thenestedfloat.com/articles/the-iphone-slightly-evolved/</link>
      <guid>http://www.thenestedfloat.com/articles/the-iphone-slightly-evolved/</guid>
      <description>&lt;p&gt;I don't care to talk about &lt;a href="http://www.engadget.com/2008/07/11/itunes-activation-servers-go-down-iphone-3g-customers-being-sen/" title="the piece of the iPhone 2.0 launch that Apple botched"&gt;the piece of the iPhone 2.0 launch that Apple botched&lt;/a&gt;. Rubbernecking's way less fun when the problem's already resolved. Plus, even if my phone got bricked for the better part of a day (it did), I can still be grateful for a free software upgrade that offers heady improvements over older versions of said software (I am, and it does).&lt;/p&gt;
&lt;p&gt;What I &lt;em&gt;am&lt;/em&gt; interested in are the little gems Apple have added to an already brilliant device. Sure, native apps are great. I've played more Reversi this weekend than any human ever should, and I'm super excited about &lt;a href="http://graffit.io/" title="Graffitio"&gt;Graffitio&lt;/a&gt;, a simple location-aware app that makes smart use of the iPhone's geo-locating capabilities. But for me, the real news is that Apple has left almost all of the iPhone's &lt;abbr title="User Interface"&gt;UI&lt;/abbr&gt; and core functionality untouched, opting instead to implement a handful of fixes and incremental improvements to the 1.x series software.&lt;/p&gt;
&lt;h3&gt;A Standalone Contacts App&lt;/h3&gt;
&lt;p&gt;The iPhone's biggest strength has always been the way it incorporates and extends the Mac's Address Book application. Nothing drove the utility of the iPhone home for me like the moment I realized that each type of address data stored on my desktop was, when downloaded to my phone, represented by a separate contextually-aware mode. Tap a contact's email address, the Mail app opens. Tap a website address, Safari appears. Tap a phone number and (logically) a phone conversation is started. Tap a street address, the Map application opens and drops a pin on the location, exposing any Google data via a tasteful link that in turn opens its own Contact-like page.&lt;/p&gt;
&lt;p&gt;The problem: the first-gen iPhone OS hid the main contact book inside the phone app. The contact list would reveal itself at appropriate times, but if you wanted to, say, take a quick glance at all the methods available for contacting your mom, you had to first click the Phone icon on your home screen &amp;ndash; even if you had no intention of making a call. It's a small detail, but one that proves Apple really gets what sets the iPhone apart.&lt;/p&gt;
&lt;h3&gt;Multiple Calendars&lt;/h3&gt;
&lt;p&gt;Meg and I share eight separate calendars synced over our &lt;abbr title="Local Area Network"&gt;LAN&lt;/abbr&gt; with &lt;a href="http://www.busymac.com/" title="BusySync"&gt;BusySync&lt;/a&gt; and hooked to separate Google calendars out &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing" title="in the cloud"&gt;in the cloud&lt;/a&gt;. It works well everywhere &amp;ndash; except on the old phone. The first-gen iPhone OS synced all calendar data but displayed events as if they all belonged to the same calendar. Any event added to the iPhone calendar were added to a default calendar on the desktop.&lt;/p&gt;
&lt;p&gt;iPhone 2.0 introduces true multiple calendar support, complete with color coding and the option to view a single calendar's worth of appointments at a time. In future versions, I'd like to be able to match the colors I've assigned assigned to each calendar on my desktop instead of assigning color codes randomly. Additionally, it'd be nice to view complex calendar sets on the phone &amp;ndash; like view "Life" and "Work," but not "Chores."&lt;/p&gt;
&lt;h3&gt;Password Entry Assistance&lt;/h3&gt;
&lt;p&gt;If you've ever had to enter the &lt;a href="http://en.wikipedia.org/wiki/Wired_Equivalent_Privacy" title="WEP key"&gt;WEP key&lt;/a&gt; for your friend's wireless network on your iPhone, you'll know what a gift this is. All hidden password fields &amp;ndash; that includes both the system and in Sarari &amp;ndash; now display the last character you entered for the briefest of moments. It's just enough long enough to encourage confidence in your keyboarding abilities. My only quibble: the true security nuts should have the option to toggle this function on and off via the system panel.&lt;/p&gt;
&lt;p&gt;I have a feeling a number of other details will reveal themselves over the coming weeks. Which ones have I missed?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/OppJimbndVM" height="1" width="1"/&gt;</description>
      <dc:date>2008-07-14T02:59:35+00:00</dc:date>
    </item>

    <item>
      <title>The Best Camera</title>
      <link>http://www.thenestedfloat.com/articles/the-best-camera/</link>
      <guid>http://www.thenestedfloat.com/articles/the-best-camera/</guid>
      <description>&lt;p&gt;Back in 2003, I got bit by the photography bug. Bad. As my wife recalls, this was during a period when she actually knew more about computers than me. I'd just bought &lt;a href="http://en.wikipedia.org/wiki/Ibook#iBook_G3_Dual_USB_.2812.1-inch_and_14.1-inch.29" title="my first Mac"&gt;my first Mac&lt;/a&gt; and got a &lt;a href="http://www.dpreview.com/reviews/specs/Canon/canon_g2.asp" title="Canon G2"&gt;Canon G2&lt;/a&gt; mostly because I wanted an excuse to play with iPhoto. But then I started teaching myself some photography basics, took a couple thousand photos, upgraded to &lt;a href="http://www.dpreview.com/reviews/canoneos10d/" title="a better camera"&gt;a better camera&lt;/a&gt;, and &amp;ndash; most importantly &amp;ndash; bought a bunch of &lt;a href="http://www.amazon.com/Sam-Abell-Photographic-Leah-Bendavid-Val/dp/0847824969/ref=pd_bbs_sr_2?ie=UTF8&amp;s=books&amp;qid=1215480903&amp;sr=8-2" title="Sam Abell"&gt;really&lt;/a&gt; &lt;a href="http://www.amazon.com/Man-Ray-Aperture-Masters-Photography/dp/0893817430/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1215480979&amp;sr=1-1" title="Man Ray"&gt;terrific&lt;/a&gt; &lt;a href="http://www.amazon.com/Henri-Cartier-Bresson-Aperture-Masters-Photography/dp/0893817449/ref=pd_sim_b_2" title="Henri Cartier-Bresson"&gt;photo&lt;/a&gt; &lt;a href="http://www.amazon.com/Edward-Weston-Legacy-Jennifer-Watts/dp/1858942063/ref=sr_1_11?ie=UTF8&amp;s=books&amp;qid=1215481532&amp;sr=1-11" title="Edward Weston"&gt;books&lt;/a&gt;. I even took a photography class at the &lt;a href="http://grad.usda.gov/" title="USDA Graduate School"&gt;&lt;abbr title="United States Department of Agriculture"&gt;USDA&lt;/abbr&gt; Graduate School&lt;/a&gt;, which I'd recommend for anyone who ever finds themselves with a few months to kill in or near DC.&lt;/p&gt;
&lt;h3&gt;Camera backpacks are cool and all&amp;hellip;&lt;/h3&gt;
&lt;p&gt;But that mammoth &lt;abbr title="Single Lens Reflex"&gt;SLR&lt;/abbr&gt;, I slowly stopped carrying it around. Not totally, but mostly. A quick scan through the pictures I've taken since 2005 is strange. Forty consecutive pictures of some couch cushions, followed by five sunsets, followed by an SD card's worth of pics from my Grandma's 90th birthday. I get it out when I'm so moved, but apparently only if it's An Event or something beautiful near home.&lt;/p&gt;
&lt;p&gt;Mind you, most of my favorite pics from the last few years were taken with that camera. There's &lt;a href="http://flickr.com/photos/matthewtdawson/2517164929/" title="the one of Meg"&gt;the one of Meg&lt;/a&gt;. The lighting in that could have only been captured by a nice lens. There's a metric frak-ton of &lt;a href="http://www.flickr.com/photos/matthewtdawson/1173392865/in/set-72157601547656506/?rotated=1&amp;cb=1215482512872" title="Baby Jack"&gt;Baby Jack&lt;/a&gt; pics, the peanut that finally convinced me having kids might be a nice idea. I'll no doubt take thousands more pictures with it. (Digital cameras actually &lt;em&gt;do&lt;/em&gt; last that long, you know.)&lt;/p&gt;
&lt;h3&gt;But the best camera is the one in your hand.&lt;/h3&gt;
&lt;p&gt;It's an extraordinarily old adage, but true. And &lt;a href="http://en.wikipedia.org/wiki/IPhone" title="the iPhone"&gt;my phone&lt;/a&gt;, with its measly 2 megapixel lens, is the first camera I've owned that actually stays with me all the time. The picture quality is &lt;em&gt;just&lt;/em&gt; good enough to make it worth using. The &lt;a href="http://en.wikipedia.org/wiki/Image_noise" title="noise"&gt;noise&lt;/a&gt; might be obnoxious as hell, and you better have a hell of a steady hand in anything other than open daylight, but I've seen worse. And as &lt;a href="http://www.digitalomo.com/" title="digitalomo.com"&gt;this site&lt;/a&gt; reminded me, the idea that you can take awesome pictures with crappy cameras is nothing new.&lt;/p&gt;
&lt;p&gt;That, and I can absolutely 100% guarantee that I wouldn't have caught &lt;a href="http://www.flickr.com/photos/matthewtdawson/2371207559/" title="my cousin Ansley with a whole orange in her mouth"&gt;my cousin Ansley with a whole orange in her mouth&lt;/a&gt;, &lt;a href="http://www.flickr.com/photos/matthewtdawson/2595811864/" title="Tim's impossibly hot lunch-on-a-dare"&gt;Tim's impossibly hot lunch-on-a-dare&lt;/a&gt;, or &lt;a href="http://www.flickr.com/photos/matthewtdawson/2640083191/" title="Jason in the midst of a late-night hostile takeover"&gt;Jason in the midst of a late-night hostile takeover&lt;/a&gt; with any other camera, no matter how stellar the optics.&lt;/p&gt;
&lt;p&gt;Out of a thousand useless crappy snaps you take with that Nokia, in five years, there's likely to be a few you'll wish you'd saved if you're not saving them somewhere. I'm just sayin'.&lt;/p&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/MLaMuJfwTCo" height="1" width="1"/&gt;</description>
      <dc:date>2008-07-08T02:57:24+00:00</dc:date>
    </item>

    <item>
      <title>Mixing PHP Variables with ExpressionEngine Template Tags</title>
      <link>http://www.thenestedfloat.com/articles/mixing_php_variables_with_expressionengine_template_tags/</link>
      <guid>http://www.thenestedfloat.com/articles/mixing_php_variables_with_expressionengine_template_tags/</guid>
      <description>&lt;p&gt;I'm knee deep in a project at &lt;a href="http://category4.com" title="Category 4"&gt;my day job&lt;/a&gt; that's turning out to be a perfect example of &lt;a href="http://expressionengine.com/" title="ExpressionEngine"&gt;ExpressionEngine&lt;/a&gt;'s biggest strengths &amp;ndash; fine-grained access control, a speedier build process, and crazy flexibility.&lt;/p&gt;
&lt;p&gt;My task is to take a client's current site, change none of the layout or styling on existing pages, and port the whole thing to &lt;abbr title="ExpressionEngine"&gt;EE&lt;/abbr&gt;. Because we did the original build, the code is all standards compliant and has managed to stay pretty clean. The site's currently managed by the client with a basic &lt;abbr title="What You See Is What You Get"&gt;WYSIWYG&lt;/abbr&gt; maintenance tool. It's actually worked quite well for them. But their organization represents 30 or so distinct sub-organizations, and giving those sub-orgs access to their own content is the biggest reason for this move. The hope is that the site will stay more current if opened up to these partners.&lt;/p&gt;
&lt;h3&gt;ExpressionEngine in the hiz-ouse!&lt;/h3&gt;
&lt;p&gt;For each of those sub-organization pages, the amount of content varies greatly. Most only have an overview page. But some have additional resources, some have conferences, some have news items &amp;ndash; and some have all of those plus more. Each sub-org is represented by a single entry in a "Projects" &lt;a href="http://expressionengine.com/docs/modules/weblog/index.html" title="weblog"&gt;weblog&lt;/a&gt;. Each of those additional content types are corralled in separate EE weblogs (appropriately named "News," "Resources," etc.) and related to the appropriate project by using a &lt;a href="http://expressionengine.com/docs/modules/weblog/related_entries.html" title="related entries"&gt;related entries&lt;/a&gt; field type and pulled into the correct project page with a call to &lt;code&gt;&lt;a href="http://expressionengine.com/docs/modules/weblog/reverse_related_entries.html" title="reverse_related_entries"&gt;reverse_related_entries&lt;/a&gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://www.konizer.com/" title="Chris Konizer"&gt;project manager&lt;/a&gt; I'm working with suggested tabbing these additional pages, and rather than coding the &lt;abbr title="JavaScript"&gt;JS&lt;/abbr&gt; ourselves, &lt;a href="http://darrenhoyt.com" title="Darren Hoyt"&gt;our colleague&lt;/a&gt; suggested we go with &lt;a href="http://onlinetools.org/tools/domtabdata/" title="DOMTab"&gt;DOMTab&lt;/a&gt;. Works a charm.&lt;/p&gt;
&lt;h3&gt;The problem.&lt;/h3&gt;
&lt;p&gt;Well, DOMTab, like any JS component, is pretty particular about how the code should be laid out. You've got a container &lt;code&gt;div&lt;/code&gt; and a &lt;code&gt;ul&lt;/code&gt; for the nav where each &lt;code&gt;li&lt;/code&gt; represents one of the child &lt;code&gt;div&lt;/code&gt;s, which can be named whatever you want. So something like this:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;lt;div class=&amp;quot;domtab&amp;quot;&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;	&amp;lt;ul class=&amp;quot;domtabs&amp;quot;&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;		&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#resources&amp;quot;&amp;gt;Resources&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/li&gt;
&lt;li&gt;		&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#news&amp;quot;&amp;gt;News&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;		[... and so on ...]&lt;/li&gt;
&lt;li&gt;	&amp;lt;/ul&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;	&amp;lt;div&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;		&amp;lt;h2&amp;gt;&amp;lt;a name=&amp;quot;resources&amp;quot;id=&amp;quot;resources&amp;quot;&amp;gt;Resources&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;
&lt;li&gt;		&amp;lt;p&amp;gt;Here&amp;#x27;s where the resources go.&amp;lt;/p&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;lt;/div&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;lt;div&amp;gt;&lt;/li&gt;
&lt;li&gt;		&amp;lt;h2&amp;gt;&amp;lt;a name=&amp;quot;news&amp;quot; id=&amp;quot;news&amp;quot;&amp;gt;News&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;		&amp;lt;p&amp;gt;Here&amp;#x27;s where the news goes.&amp;lt;/p&amp;gt;&lt;/li&gt;
&lt;li&gt;	&amp;lt;/div&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;	[... and so on ...]&lt;/li&gt;
&lt;li class="alt"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;lt;/div&amp;gt;&amp;lt;!--END DOMTAB--&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Many (or most) of our sub-projects don't have any additional info, and for those cases, we want the entire DOMtab section hidden. If there are any resources, news items, etc., then we want to show the whole thing, a list item in that initial &lt;code&gt;ul&lt;/code&gt;, and an associated div in the body.&lt;/p&gt;
&lt;h3&gt;The solution I wish worked.&lt;/h3&gt;
&lt;p&gt;We've already hit the problem, even if it's not apparent yet. The simplest, and most elegant thing to do would be to wrap the entire chunk in a conditional call to &lt;code&gt;reverse_related_entries&lt;/code&gt; and then nest other &lt;code&gt;reverse_related_entries&lt;/code&gt; calls within. It'd look something like this:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;#123;if &amp;#123;reverse_related_entries weblog=&amp;quot;resources|news&amp;quot;&amp;#125;&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;&amp;lt;div class=&amp;quot;domtab&amp;quot;&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;lt;ul class=&amp;quot;domtabs&amp;quot;&amp;gt;&lt;/li&gt;
&lt;li&gt;	&amp;#123;if &amp;#123;reverse_related_entries weblog=&amp;quot;resources&amp;quot;&amp;#125;&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;		&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#resources&amp;quot;&amp;gt;Resources&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/li&gt;
&lt;li&gt;	&amp;#123;/if&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;#123;if &amp;#123;reverse_related_entries weblog=&amp;quot;news&amp;quot;&amp;#125;&amp;#125;&lt;/li&gt;
&lt;li&gt;		&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;#news&amp;quot;&amp;gt;News&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;#123;/if&amp;#125;&lt;/li&gt;
&lt;li&gt;	[..and so on...]&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;lt;/ul&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;#123;if &amp;#123;reverse_related_entries weblog=&amp;quot;resources&amp;quot;&amp;#125;&amp;#125;&lt;/li&gt;
&lt;li&gt;	&amp;lt;div&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;		&amp;lt;h3&amp;gt;&amp;lt;a name=&amp;quot;resources&amp;quot; id=&amp;quot;resources&amp;quot;&amp;gt;Resources&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;/li&gt;
&lt;li&gt;		&amp;#123;reverse_related_entries weblog=&amp;quot;resources&amp;quot;&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;		[...print our resources info here...]&lt;/li&gt;
&lt;li&gt;		&amp;#123;/reverse_related_entries&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;lt;/div&amp;gt;&lt;/li&gt;
&lt;li&gt;	&amp;#123;/if&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;	&amp;#123;if &amp;#123;reverse_related_entries weblog=&amp;quot;news&amp;quot;&amp;#125;&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;lt;div&amp;gt;&lt;/li&gt;
&lt;li&gt;		&amp;lt;h3&amp;gt;&amp;lt;a name=&amp;quot;news&amp;quot; id=&amp;quot;news&amp;quot;&amp;gt;News&amp;lt;/a&amp;gt;&amp;lt;/h3&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;		&amp;#123;reverse_related_entries weblog=&amp;quot;news&amp;quot;&amp;#125;&lt;/li&gt;
&lt;li&gt;		[...print our news info here...]&lt;/li&gt;
&lt;li class="alt"&gt;		&amp;#123;/reverse_related_entries&amp;#125;&lt;/li&gt;
&lt;li&gt;	&amp;lt;/div&amp;gt;&lt;/li&gt;
&lt;li class="alt"&gt;	&amp;#123;/if&amp;#125;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class="alt"&gt;	[...and so on...]&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li class="alt"&gt;&amp;lt;/div&amp;gt;&amp;lt;!--END DOMTAB--&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;#123;/if&amp;#125;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;But alas, that won't work. We're already within an initial &lt;code&gt;&lt;a href="http://expressionengine.com/docs/modules/weblog/weblog_entries.html" title="exp:weblog:entries"&gt;exp:weblog:entries&lt;/a&gt;&lt;/code&gt; call, so it'd be asking a lot of EE to let us nest queries this deeply.&lt;/p&gt;
&lt;h3&gt;Halfway there.&lt;/h3&gt;
&lt;p&gt;What you &lt;em&gt;could&lt;/em&gt; do is pull out all the nesting and wrap each item's opening and closing portions in its own conditional that checks &lt;code&gt;reverse_related_entries&lt;/code&gt;. So, just for example's sake, the code for the entire DOMtab section would look like this:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;#123;if reverse_related_entries&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;&amp;lt;div class=&amp;quot;domtab&amp;quot;&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;#123;/if&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;[...here's where all our content goes...]&lt;/li&gt;
&lt;li class="alt"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;#123;if reverse_related_entries&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;&amp;lt;/div&amp;gt;&amp;lt;!--END DOMTAB--&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;#123;/if&amp;#125;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That's fine in theory, but when you start extrapolating out exactly how many conditionals you'll need to get the whole thing to work, stuff starts to look crazy.&lt;/p&gt;
&lt;h3&gt;What I ended up doing.&lt;/h3&gt;
&lt;p&gt;To eliminate the clutter inherent in wrapping every single conditional element in its own &lt;code&gt;reverse_related_entries&lt;/code&gt; conditional, what I ended up doing was &lt;a href="http://expressionengine.com/docs/templates/php_templates.html" title="turning on PHP for the template"&gt;turning on PHP for the template&lt;/a&gt; and setting the parsing stage to output. That last part's important because it tells EE to run the template tags &lt;em&gt;before&lt;/em&gt; running the PHP. That lets me do this:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&amp;#123;if reverse_related_entries&amp;#125;&lt;/li&gt;
&lt;li class="alt"&gt;&amp;lt;?php TRUE = $has_additional_info; ?&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;#123;/if&amp;#125;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now whenever I want to check to see if a chunk of code should be printed to the page, I only have to write a PHP conditional that starts with &lt;code&gt;&amp;lt;php if ($has_additional_info) : ?&amp;gt;&lt;/code&gt; and I'm good to go. It's much more readable than the alternative, and as a bonus, uses less overhead.&lt;/p&gt;
&lt;h3&gt;Made it this far?&lt;/h3&gt;
&lt;p&gt;Wow. Look at the big brain on Brett!&lt;/p&gt;
&lt;p&gt;If you're new to ExpressionEngine but like what you see, may I suggest &lt;a href="http://www.ryanirelan.com/blog/entry/learn-expressionengine-with-the-ee-screencast-series/" title="Ryan Irelan's EE Screencast Series"&gt;Ryan Irelan's EE Screencast Series&lt;/a&gt;? I'm usually skeptical about any screencast that requires me to open my wallet, but I've watched all of these, and they're the nuts.&lt;/p&gt;
&lt;p&gt;Look at that. It's the first day of a four day weekend, and I've spent two hours writing a single blog post. Time for me to do some recreatin'.&lt;/p&gt;
&lt;p&gt;Happy futzin' everyone!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/JyQaeZCbOZQ" height="1" width="1"/&gt;</description>
      <dc:date>2008-07-03T17:22:56+00:00</dc:date>
    </item>

    <item>
      <title>The Simplicity of Muxtape</title>
      <link>http://www.thenestedfloat.com/articles/the_simplicity_of_muxtape/</link>
      <guid>http://www.thenestedfloat.com/articles/the_simplicity_of_muxtape/</guid>
      <description>&lt;p&gt;I'm always sitting on posts for two or three days too long. Reference my just-in-scribble-form notes on &lt;a href="http://muxtape.com" title="Muxtape"&gt;Muxtape&lt;/a&gt;, how I think it's the bee's knees, easily in my Top Ten list of best web services ever. Then yesterday, &lt;a href="http://subtraction.com" title="Khoi's post at subtraction.com"&gt;Khoi Vinh&lt;/a&gt; posted his missive about the site's limitations, arguing &amp;ndash; it seems, at least &amp;ndash; that the ones listed should be on the top of &lt;a href="http://justinouellette.com/" title="Justin"&gt;Justin&lt;/a&gt;'s list of future features.&lt;/p&gt;
&lt;p&gt;I couldn't disagree more. Sounds like there actually are &lt;a href="http://muxtape.tumblr.com/post/40423464/muxtape-update" title="some major changes coming"&gt;some major changes coming&lt;/a&gt;, and I'll likely be impressed with a handful of them. For starters, I think it's great that the Muxtape team recently implemented an auto-play on direct links from the &lt;abbr title="Really Simple Syndication"&gt;RSS&lt;/abbr&gt; feed for your tape.&lt;/p&gt;
&lt;p&gt;But in the end, I think Muxtape is just about perfect. I'd rather not see any feature implemented that detracts from what I've come to regard as the service's greatest strength.&lt;/p&gt;
&lt;h3&gt;Muxtape Keeps You Focused On The Music&lt;/h3&gt;
&lt;p&gt;If you think about it, most of Muxtape's "missing" features force you to do one important thing: &lt;em&gt;listen to the damn music&lt;/em&gt;. Want to read about the history of the artist you've got spinning? Too bad. How about rearrange the tracks from several muxes to create your own &amp;uuml;ber-hip supermux? Not if you don't own the tracks, boyo. How about search? What if I wanna listen to that one specific track and see all the users that have muxed it in to their tapes? But you're at a music site built for listening to music, not socializing. Why not give that tape that just popped up a listen? After all, that's what you're here for &amp;ndash; to listen to music. Right?&lt;/p&gt;
&lt;p&gt;Khoi was right on about one thing: Muxtape is the anti-Facebook. But I'd take it a step further. It's the anti-social social network. What you can glean from a user is 100% limited to the songs they'd like you to hear. In that way, it's about as authentic to the mixtape spirit and experience as you can get. What does it mean that I'd at one point put Prince's "Strange Relationship" beside Scott Walker's "Cossacks Are?" (Answer: probably not as much as I wish it did.)&lt;/p&gt;
&lt;p&gt;If you haven't spent much time on Muxtape, do. It's worth every minute you put in, especially if you can still remember the best way to fake a crossfade on that Sony boombox your dad gave you. While you're there, &lt;a href="http://mattdawson.muxtape.com" title="My muxtape"&gt;give mine a listen&lt;/a&gt;. And if you can glean anything from my personality from the offerings, let me know. I'm all about the insights.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/a911kF3lTnA" height="1" width="1"/&gt;</description>
      <dc:date>2008-07-02T01:24:44+00:00</dc:date>
    </item>

    <item>
      <title>Jack Burden: Still An A-hole</title>
      <link>http://www.thenestedfloat.com/articles/jack_burden_still_an_a_hole/</link>
      <guid>http://www.thenestedfloat.com/articles/jack_burden_still_an_a_hole/</guid>
      <description>&lt;p&gt;If you're one of the unlucky people who recently asked me what I've been reading, I apologize. I just &lt;em&gt;cannot shut up&lt;/em&gt; about Robert Penn Warren's &lt;em&gt;&lt;a href="http://en.wikipedia.org/wiki/All_the_King's_Men" title="All the King's Men on Wikipedia"&gt;All the King's Men&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;What? You've already read it? That's nice. I'm sure you got everything you could out of it when you were 17. There couldn't possibly be anything left for you to take from it now, could there?&lt;/p&gt;
&lt;p&gt;I didn't get this book &lt;em&gt;less&lt;/em&gt; when I was younger as much as I got it &lt;em&gt;different&lt;/em&gt;. For starters, that seventh chapter, the one that builds the backstory of protagonist &lt;a href="http://en.wikipedia.org/wiki/All_the_King's_Men#Jack_Burden" title="Jack Burden"&gt;Jack Burden&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/All_the_King's_Men#Anne_Stanton" title="Anne Stanton on Wikipedia"&gt;Anne Stanton&lt;/a&gt;, his mathematically exact, foxy-as-hell love interest. I know it's supposed to be high school girls and not boys that swoon, but I'm pretty sure that's exactly what I did when I first read that chapter. At 29, the whole chapter &amp;ndash; which has way more to do with missed opportunity in general than it does with high-falutin' crap like love &amp;ndash; comes off instead as devastatingly sad.&lt;/p&gt;
&lt;p&gt;More importantly, though, I got exactly how much of a factory-wrapped-douche Jack Burden really is. From start to finish, one thing after another. He's a terrible son. He's a nihilist. He's a shitty husband. He's unaccountable for anything at all.&lt;/p&gt;
&lt;p&gt;And damned if I didn't eat it up this time.&lt;/p&gt;
&lt;p&gt;The cool thing about re-reading books from your teen and pre-teen years is that you're not just bringing a boatload of personal experience to the table. You've also got a whole arsenal of pop-culture references to fling around. Jack Burden solidified the mold for &lt;a href="http://en.wikipedia.org/wiki/Nate_Fisher" title="Nate Fisher"&gt;every&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Tony_Soprano" title="Tony Soprano"&gt;brooding&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Fight_Club" title="Fight Club"&gt;introspective&lt;/a&gt;, &lt;a href="http://www.imdb.com/title/tt0169547/" title="American Beauty"&gt;whiny&lt;/a&gt;, &lt;a href="http://www.imdb.com/title/tt0106856/" title="Falling Down"&gt;white guy&lt;/a&gt; since. (I mean, his name's &lt;em&gt;Burden&lt;/em&gt; for chrissakes.)&lt;/p&gt;
&lt;p&gt;Which leads me to the point that inspired this post in the first place. Another thing that changed in my reading: I'm bothered by the tidyness of it all. As my wife pointed out, this is a story of its time (which, I would argue, accounts for Jack's casual racism, never addressed in the book, even when major plot points could support it), and as such, open-ended finales are hard to come by. The kind of half-way epiphanies bittersweet disappointments that close much modern fiction just didn't appear in full force until a decade or two later.&lt;/p&gt;
&lt;p&gt;So I've got a suggestion. Can someone re-write the ending for me? My way, you'll only have to redo a few pages. It's simple (&lt;strong&gt;WARNING &amp;ndash; eensy little spoiler here&lt;/strong&gt;): let Jack tell Sugar Boy about Tiny's ploy to kill the Boss. It's a dirty little moment, the last we see of Jack's dark side, and best of all, Jack is self-aware enough to think through the consequences as he makes the decision. It'd be the perfect cynical little twist. Plus, Jack would still get the girl, and Sugar Boy would get to realize his destiny.&lt;/p&gt;
&lt;p&gt;Huh? You've got better things to do than mangling classic American fiction? I'll just have to rewrite it myself.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/mYx7_zCHorI" height="1" width="1"/&gt;</description>
      <dc:date>2008-06-27T13:21:00+00:00</dc:date>
    </item>

    <item>
      <title>Stealth Edits</title>
      <link>http://www.thenestedfloat.com/articles/stealth_edits/</link>
      <guid>http://www.thenestedfloat.com/articles/stealth_edits/</guid>
      <description>&lt;p&gt;I&amp;#8217;ve got an itchy trigger finger. As a blogger, that means I&amp;#8217;m sometimes publishing articles that, while proofed, may not quite be ready for prime time. It&amp;#8217;s less often an issue of misspellings or grammar. In most cases, a sentence just sounds clunky or I used two paragraphs in an argument when one could clearly do the job.
&lt;/p&gt;
&lt;p&gt;
So I admit it: I do, from time to time, &lt;a href="http://en.wikipedia.org/wiki/Stealth_edit" title="A wikipedia definition"&gt;stealth edit&lt;/a&gt; my posts. My &lt;a href="http://www.thenestedfloat.com/articles/instaparty/" title="Instaparty"&gt;last post&lt;/a&gt;, for example, was a late-night one-off, fueled by sleeplessness and caffeine. A three minute once-over the next day helped turn it into something I wouldn&amp;#8217;t mind re-reading or re-linking months or years down the road.
&lt;/p&gt;
&lt;p&gt;
Since the changes I make are almost always cosmetic, it seems senseless to post an update list. I mean, does anyone care that I reduced the use of passive voice in the third paragraph? (They don&amp;#8217;t. Trust me &amp;ndash; I already checked.)
&lt;/p&gt;
&lt;p&gt;
But that&amp;#8217;s why I&amp;#8217;m wondering if I should bother with all this stealth editing in the first place. True, every blog is different. Perfect grammar and finely crafted turns of phrase aren&amp;#8217;t necessarily on everyone&amp;#8217;s list of requirements when evaluating a blog post, theirs or others. Content is king, but timeliness and originality count for something too.
&lt;/p&gt;
&lt;p&gt;
Does it matter? If a tree falls in the forest and the other trees don&amp;#8217;t give a flying flip about dangling participles, does it make a sound? I know the question itself &amp;ndash; Is stealth editing bad? &amp;ndash; is essentially a non-starter. A bunch of factors determine whether a post-publish editorial process is appropriate for any given article. What I&amp;#8217;m more interested in is whether I&amp;#8217;m the only one that&amp;#8217;s doing this sort of thing.
&lt;/p&gt;
&lt;p&gt;
Well, am I?
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/60IJy0Kp2ok" height="1" width="1"/&gt;</description>
      <dc:date>2008-06-22T20:45:00+00:00</dc:date>
    </item>

    <item>
      <title>Instaparty</title>
      <link>http://www.thenestedfloat.com/articles/instaparty/</link>
      <guid>http://www.thenestedfloat.com/articles/instaparty/</guid>
      <description>&lt;p&gt;I&amp;#8217;ve now spun Girl Talk&amp;#8217;s &lt;a href="http://74.124.198.47/illegal-art.net/__girl__talk___feed__the__anima.ls___/" title="Get the Album"&gt;&lt;em&gt;Feed The Animals&lt;/em&gt;&lt;/a&gt;, released this past Wednesday, no less than a dozen times. We&amp;#8217;re talking continuous plays here &amp;ndash; the whole album, all the way through. No album in my collection has ever received this kind of undivided attention.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s &lt;em&gt;breathtaking&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I wondered, &lt;a href="http://fimoculous.com/archive/post-4501.cfm" title="as Rex did"&gt;as Rex did&lt;/a&gt;, if this album would be better than Gillis&amp;#8217;s last and, further, what that even means for an artist who &lt;strike&gt;simply&lt;/strike&gt; repurposes the work of others.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s all about raising the stakes of the game. To my ears, Gillis has done that simply by doubling down on the emotional weight.&lt;/p&gt;
&lt;p&gt;It took me about five go-rounds to get there. Even if you&amp;#8217;ve spent a bunch of time with Girl Talk&amp;#8217;s &lt;a href="http://en.wikipedia.org/wiki/Secret_Diary" title="Secret Diary"&gt;last&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Unstoppable_%28Girl_Talk_album%29" title="Unstoppable"&gt;several&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Night_Ripper" title="Night Ripper"&gt;albums&lt;/a&gt;, it&amp;#8217;s hard not to be bowled over by the whole unthinkable mass of the thing. Complicating matters are Gillis&amp;#8217;s mixing and mastering skills, which, on a strictly technical level, seem to be improving with every album. There&amp;#8217;s just &lt;em&gt;something different&lt;/em&gt; about the quality of tone that Gillis is squeezing from these songs.&lt;/p&gt;
&lt;p&gt;But that &lt;em&gt;soul&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Where &lt;em&gt;Night Ripper&lt;/em&gt; had only a handful of really emotionally evocative moments &amp;ndash; &lt;a href="http://youtube.com/watch?v=hf7XHacoTcc&amp;amp;feature=related" title="Tiny Dancer/JUICY"&gt;the best of which&lt;/a&gt; nearly became legendary &amp;ndash; &lt;em&gt;Feed The Animals&lt;/em&gt; is full to the brim with hair-on-end, moist-eyed revelations. Granted, we&amp;#8217;re not talking conventional tear-jerker material. &amp;#8220;Jessie&amp;#8217;s Girl&amp;#8221; has never sounded sweeter than it does here, laid against Three 6 Mafia&amp;#8217;s &amp;#8220;I&amp;#8217;d Rather.&amp;#8221; Then there&amp;#8217;s Tone Loc and Fleetwood Mac building the base for Trina&amp;#8217;s sweet-but-suggestive &amp;#8220;I&amp;#8217;ve Got A Thing For You.&amp;#8221; &amp;#8220;Play Your Part (pt. 1),&amp;#8221; the album&amp;#8217;s very first track, laces Lil&amp;#8217; Wayne with Sinead O&amp;#8217;Connor&amp;#8217;s &amp;#8220;Nothing Compares 2 U,&amp;#8221; Wayne slinging &amp;#8220;Pick &amp;#8216;em up? Fuck &amp;#8216;em, let &amp;#8216;em lay / Where I&amp;#8217;m from, we see a fuckin&amp;#8217; dead body every day&amp;#8221; just before Sinead belts out the line that made her famous. It&amp;#8217;s the tension baked in, hope and resignation, that makes the moment. And it&amp;#8217;s Shawnna&amp;#8217;s refrain, &amp;#8220;I was gettin&amp;#8217; some head,&amp;#8221; that rips us back out.&lt;/p&gt;
&lt;p&gt;But to what end? Why would someone piss on such a special moment?&lt;/p&gt;
&lt;p&gt;Aww, hush up. Who cares? &lt;a href="http://www.flickr.com/photos/kingpinphoto/sets/72157594350396880/" title="Pics of a Girl Talk Party"&gt;Let&amp;#8217;s dance&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/E_6oDOMXuwg" height="1" width="1"/&gt;</description>
      <dc:date>2008-06-21T03:39:00+00:00</dc:date>
    </item>

    <item>
      <title>Battlestar Galactica and The Scorched Earth Technique</title>
      <link>http://www.thenestedfloat.com/articles/battlestar_galactica_and_the_scorched_earth_technique/</link>
      <guid>http://www.thenestedfloat.com/articles/battlestar_galactica_and_the_scorched_earth_technique/</guid>
      <description>&lt;p&gt;&lt;strong&gt;CAUTION: Spoilers for the mid-fourth-season finale of Battlestar Galacitca follow.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Remember when The Sopranos started the long wind-up to its finale? Tony had been shot by Uncle June and was now laid up in a hospital bed, his recovery still in question. As that unending, multi-episode dream sequence was drawing to a close, there was Tony B. beckoning to our man from the doorstep of a farm house simultaneously lovely and terrifying. The clatter of a party inside clicked and sparkled. We all knew what was inside. It was a tired conceit &amp;ndash; Life or Death: Choose &amp;ndash; but it felt appropriate.&lt;/p&gt;
&lt;p&gt;For a moment there, I honestly believed the writers were about to do something momentous. Tony S. was on his way out, leaving a wealth of episodes for the writers to finally deal with questions that really mattered. They'd have already trampled all over the most mundane of plot points: "Does Tony live or die?"&lt;/p&gt;
&lt;p&gt;We all know that David Chase ended up taking an entirely different risk with &lt;a href="http://www.youtube.com/watch?v=rnT7nYbCSvM" title="The Sopranos final scene"&gt;the end of his story&lt;/a&gt;. In retrospect, I can't imagine a better ending. But I still say a killer opportunity was missed.&lt;/p&gt;
&lt;p&gt;Well, bully for us if Ronald Moore didn't &amp;ndash; forgive me &amp;ndash; &lt;a href="http://www.urbandictionary.com/define.php?term=Roll+The+Hard+Six" title="Definition on Urban Dictionary"&gt;roll the hard six&lt;/a&gt;. The critics &lt;a href="http://www.salon.com/ent/tv/review/2008/06/14/bsg_finale/" title="The salon.com review"&gt;all&lt;/a&gt; &lt;a href="http://www.scifiheaven.net/index.php/2008/06/12/bsg-revelations-a-spoiler-filled-review/" title="The Sci-Fi Heaven review"&gt;seem&lt;/a&gt; &lt;a href="http://latimesblogs.latimes.com/showtracker/2008/06/battlestar-ga-1.html" title="An LA Times review"&gt;to&lt;/a&gt; &lt;a href="http://www.ew.com/ew/article/0,,20206806,00.html?iid=top25-20080614-'Battlestar+Galactica'+recap%3A+Semifinal+destination" title="Thew EW review"&gt;agree&lt;/a&gt; that this was a top notch episode. Me, I'm thrilled that, with the most irrelevant questions already answered, we've still got &lt;a href="http://featuresblogs.chicagotribune.com/entertainment_tv/2008/06/battlestars-fin.html" title="Maureen Ryan's article"&gt;at least eleven episodes left &amp;ndash; including a rumored &lt;em&gt;three hour&lt;/em&gt; finale&lt;/a&gt; to focus on the fun stuff.&lt;/p&gt;
&lt;p&gt;My wife Meg nailed it immediately. She's not much for the SciFi channel, but she's a whip-smart English Ph.D. student and &amp;ndash; at least on some level &amp;ndash; appreciates the show's unorthodox narrative turns. She skipped Friday's episode, so last night, I was describing that final scene to her &amp;ndash; how Adama, having just landed on Earth, bends down and grasps a first fist full of earth, the tittering geiger counter instantly telegraphing the extent to which humanity is fraked.&lt;/p&gt;
&lt;p&gt;"Ha!" she said. "It's the Scorched Earth technique. Literally. Burn the whole story down and start over."&lt;/p&gt;
&lt;p&gt;"ExACTly," I say. "Isn't that, like, totally frakin' awesome."&lt;/p&gt;
&lt;p&gt;Meg smiled.&lt;/p&gt;
&lt;p&gt;That's fine, Meg. I'm excited enough for the both of us.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/6LiJ6nJvtvQ" height="1" width="1"/&gt;</description>
      <dc:date>2008-06-15T22:39:00+00:00</dc:date>
    </item>

    <item>
      <title>One Thing A Web App Should Never Do</title>
      <link>http://www.thenestedfloat.com/articles/one_thing_a_web_app_should_never_do/</link>
      <guid>http://www.thenestedfloat.com/articles/one_thing_a_web_app_should_never_do/</guid>
      <description>&lt;p&gt;For the past couple weeks, I&amp;#8217;ve been playing around with both &lt;a href="http://fluidapp.com/" title="Fluid"&gt;Fluid&lt;/a&gt; (for OSX) and &lt;a href="http://labs.mozilla.com/featured-projects/#prism" title="Prism "&gt;Prism&lt;/a&gt; (on Vista). For those that are unfamiliar, both apps do basically the same thing: they let you create a site-specific web browser that presents itself as an app on your machine. So, if you use Gmail, you can easily create an app for Gmail that logs you into the service when your app is launched from the dock or taskbar. These little apps are especially handy when used with an app launcher like &lt;a href="http://en.wikipedia.org/wiki/Quicksilver_(software)" title="Quicksilver"&gt;Quicksilver&lt;/a&gt; or &lt;a href="http://www.launchy.net/" title="Launchy"&gt;Launchy&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Though skeptical of the concept at first (I kept thinking, &amp;#8220;Isn&amp;#8217;t this what tabs are for?), I&amp;#8217;m now sold. I &lt;em&gt;love&lt;/em&gt; the idea of running a dock full of applications all powered by other machines out in &lt;a href="http://en.wikipedia.org/wiki/Cloud_computing" title="The Cloud on Wikipedia"&gt;the cloud&lt;/a&gt;. The hurtle as I see it isn&amp;#8217;t in the concept; it&amp;#8217;s in the design of these applications. And I&amp;#8217;d like to humbly submit one thing that all web app authors must do to fit in with current and future generations of these single-site browsers:that remain are less about flaws in the concept
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;em&gt;Your app must not rely on the browser&amp;#8217;s back button.&lt;/em&gt;&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
With Fluid, you have the option of turning on standard browser controls, but in Prism, you don&amp;#8217;t. In my opinion, for the concept to hold water, you really should dispose of the browse buttons anyway.
&lt;/p&gt;
&lt;p&gt;
Look at the apps you have open right now on your machine. Besides a file browser or a finder, how many of them have buttons that imitate the forward/back buttons of a web browser? One, maybe? I&amp;#8217;m betting zero is the norm. For a web app to feel like a desktop app, it needs to at least follow the basic rules of desktop apps.
&lt;/p&gt;
&lt;p&gt;
Most web apps I use pass this test handily. &lt;a href="http://www.netvibes.com/#web" title="Netvibes"&gt;Netvibes&lt;/a&gt; does the best, with &lt;a href="http://basecamphq.com" title="Basecamp"&gt;Basecamp&lt;/a&gt; coming in a close second. (Basecamp, unfortunately, is missing some features in Prism that I&amp;#8217;d like to see. For instance, I wish I could switch to a project in a new tab rather than leaving the project I&amp;#8217;m currently viewing. Also, Prism doesn&amp;#8217;t let me refresh the page, which is crucial for fast, efficient use. And in fact, I think it&amp;#8217;d be great if Basecamp included a refresh button on every page.)
&lt;/p&gt;
&lt;p&gt;
For the most part, Google does okay, but when you start using their apps in a site-specific browser you start uncovering minor flaws in their design pretty quick. One example: Google has a habit of placing links to other services in the header of their services. These links frequently open in a new window and expose no way for you to return to your application without the use of a back button.
&lt;/p&gt;
&lt;p&gt;
It&amp;#8217;s not even worth arguing whether the use of web apps will ever eclipse the use of desktop apps. (For the record, they will &amp;ndash; at least in the way we currently define a desktop application.) If these site-specific browsers grow in popularity, app developers must consider the small features that let folks working outside of the typical browser box use all features of the app quickly and efficiently.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/E-WFJUos_2A" height="1" width="1"/&gt;</description>
      <dc:date>2008-06-12T17:14:00+00:00</dc:date>
    </item>

    <item>
      <title>The IE “Carriage Return” bug.</title>
      <link>http://www.thenestedfloat.com/articles/the_ie_carriage_return_bug/</link>
      <guid>http://www.thenestedfloat.com/articles/the_ie_carriage_return_bug/</guid>
      <description>&lt;p&gt;Hey, IE users: why did none of y'alls tell me my site's been borked since launch day?&lt;/p&gt;
&lt;p&gt;It's okay. I forgive you. Just lemme explain what happened.&lt;/p&gt;
&lt;p&gt;I'm using ExpressionEngine's &lt;a href="http://expressionengine.com/docs/templates/globals/conditionals.html" title="EE conditional tags"&gt;conditional tags&lt;/a&gt; on the URL of every page you visit here. I use these on EE's &lt;a href="http://expressionengine.com/docs/templates/globals/url_segments.html" title="EE segment variables"&gt;segment variables&lt;/a&gt;. The way things work here, both secondary (like the /articles/ page) and tertiary (like /articles/some_article) page are served up by the same template. Within that template is a conditional that says "if there's no third part to the URL, use one part of the template to render the requested page. If there is, use another.&lt;/p&gt;
&lt;p&gt;The day after launch, I ran into a problem. Pagination &amp;ndash; which I hadn't tested to that point &amp;ndash; didn't work. When a user hits the "next" button, a number prefixed by the letter "P" gets added to the URL. Basically, I wanted the template to display this page as if that extra URL segment never existed.&lt;/p&gt;
&lt;p&gt;So I did something like this:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;body id="&amp;#123;if segment_2 == ""&amp;#125;&lt;/code&gt;
&lt;li class="alt"&gt;&lt;code&gt;// Show as single page content.&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#123;if:elseif&amp;#125;&lt;/code&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;code&gt;	&amp;lt;?php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;	// Test the second segment with &lt;a href="http://us.php.net/preg_replace" title="preg_replace"&gt;preg_replace&lt;/a&gt; and display the correct template.&lt;/code&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;code&gt;	?&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;#123;/if&amp;#125;"&amp;gt;&lt;/code&gt;
&lt;/ol&gt;
&lt;p&gt;The problem is this: ExpressionEngine apparently needed me to add a carriage return after I closed the php statement before I ended that EE conditional. This meant that the final HTML rendered like this:&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;body id="interior&lt;/code&gt;&lt;/li&gt;
&lt;li class="alt"&gt;&lt;code&gt;"&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It validates fine. And every browser was happy with it, except &lt;abbr title="Internet Explorer"&gt;IE&lt;/abbr&gt;. It completely ignored the opening &lt;code&gt;body&lt;/code&gt; tag, which was a major problem since much of the basic layout rules here are at &lt;abbr title="The Nested Float"&gt;TNF&lt;/abbr&gt; are assigned via the &lt;code&gt;id&lt;/code&gt; applied to that element.&lt;/p&gt;
&lt;p&gt;My solution was &lt;a href="http://en.wikipedia.org/wiki/Kludge" title="kludgey on Wikipedia"&gt;kludgey&lt;/a&gt; but functional: just put the closing bracket for that &lt;code&gt;body&lt;/code&gt; tag at the end of every instance of the &lt;code&gt;id&lt;/code&gt; value. It's repeated code, so it's annoying, but an unborked site is a happy site.&lt;/p&gt;
&lt;p&gt;Lesson learned. It's not the kind of thing I guess will ever get addressed in &lt;abbr title="Internet Explorer"&gt;IE&lt;/abbr&gt; &amp;ndash; especially because I'm not even sure if the validator is right on this one &amp;ndash; but it sure would be nice if they did.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/SK0h5cJQxbA" height="1" width="1"/&gt;</description>
      <dc:date>2008-06-09T02:15:00+00:00</dc:date>
    </item>

    <item>
      <title>Could you design without Photoshop?</title>
      <link>http://www.thenestedfloat.com/articles/could_you_design_without_photoshop/</link>
      <guid>http://www.thenestedfloat.com/articles/could_you_design_without_photoshop/</guid>
      <description>&lt;p&gt;Yesterday, the folks at &lt;a href="http://www.37signals.com/" title="37signals"&gt;37signals&lt;/a&gt; posted a piece titled &lt;a href="http://www.37signals.com/svn/posts/1061-why-we-skip-photoshop" title="The article at the 37signals blog."&gt;&amp;#8220;Why we skip Photoshop&amp;#8221;&lt;/a&gt; that detailed the main reasons their staff goes straight from &lt;abbr title="User Interface"&gt;UI&lt;/abbr&gt; paper sketches to &lt;abbr title="HyperText Markup Language"&gt;HTML&lt;/abbr&gt; development.
&lt;/p&gt;
&lt;p&gt;
Am I surprised that 37signals shies away from Photoshop, arguably the most widely used mockup tool in webdesign? Not at all. I love the company&amp;#8217;s products, and I use nearly all of them. But I don&amp;#8217;t think anyone would disagree that their photoshop-free process shows through in their interface design. These are no-frills products. Boxy edges and simple gradients abound.
&lt;/p&gt;
&lt;p&gt;
The problem is that for web &lt;em&gt;designers&lt;/em&gt;, there&amp;#8217;s no escaping what Photoshop can bring to the table. It&amp;#8217;s not that the points Jason raises in the above article aren&amp;#8217;t valid. It&amp;#8217;s because when you&amp;#8217;re building a site for a client, the very first thing they want to know is &amp;#8220;What&amp;#8217;s it gonna look like?&amp;#8221; In almost every instance, they&amp;#8217;re going to be expecting a site that &amp;ndash; forgive me, guys &amp;ndash; has more depth than a 37signals product.
&lt;/p&gt;
&lt;p&gt;
It should be clear where my personal tastes lie. I mean, look around. If I can get away with an image directory that clocks in at under 50kb, I&amp;#8217;m pleased as punch. All the criticisms people aim at the 37signals design team could be applied to pretty much any design I do for myself.
&lt;/p&gt;
&lt;p&gt;
The reason I really appreciate Jason&amp;#8217;s article is because even TNF &amp;ndash; the sparsest design I&amp;#8217;ve ever dreamed up &amp;ndash; started in Photoshop. For those of us that would love it if &lt;a href="http://en.wikipedia.org/wiki/Vi" title="vi on Wikipedia"&gt;one program&lt;/a&gt; could be all we needed to build a website, it&amp;#8217;s awfully nice to be reminded that even the most sacrosanct parts of our process can be reconsidered from time to time, or more importantly, from project to project.
&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/thenestedfloat/articles/~4/b4TiUvnT0rQ" height="1" width="1"/&gt;</description>
      <dc:date>2008-06-05T02:51:00+00:00</dc:date>
    </item>

    
    </channel>
</rss>
