<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    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/">

    <channel>
    
    <title>Low Weblog</title>
    <link>http://loweblog.com/</link>
    <description>Weblog by Lodewijk Schutte ~ Low. Personal bits in Dutch, professional stuff in English.</description>
    <dc:language>en</dc:language>
    <dc:creator>Low</dc:creator>
    <dc:rights>Copyright 2011</dc:rights>
    <dc:date>2011-08-15T11:38:37+00:00</dc:date>
    <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
    

    <item>
      <title>Jaarlijst 2011</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Weblog&amp;seed=http%3A%2F%2Floweblog.com%2Farchives%2Fblog%2Fjaarlijst-2011%2F&amp;seed_title=Jaarlijst+2011</link>
      <guid>http://loweblog.com/archives/blog/jaarlijst&#45;2011/</guid>
      <description>Niets gepost in 2011, als je m&#8217;n werkgerelateerde berichten niet meetelt. Op de valreep dan toch nog een jaarlijst van dit jaar, omdat er zoveel moois gemaakt is. In bijna willekeurige volgorde, zonder linkjes, want ik neem aan dat u weet hoe Google werkt:

The Black Keys &#45; El Camino
dEUS &#45; Keep You Close
Feist &#45; Metals
Kasabian &#45; Velociraptor!
De Kift &#45; Brik
Other Lives &#45; Tamer Animals
PJ Harvey &#45; Let England Shake
Radiohead &#45; King Of Limbs
Ryan Adams &#45; Ashes &#038; Fire
St. Vincent &#45; Strange Mercy
Tom Waits &#45; Bad As Me
Wilco &#45; The Whole Love

Moeilijk om hier een winnaar uit te plukken. Ryan Adams? PJ Harvey? Of toch gewoon Tom Waits? Ja, misschien wel.</description>
      <dc:subject>Muziek</dc:subject>
      <content:encoded><![CDATA[<p>Niets gepost in 2011, als je m&#8217;n werkgerelateerde berichten niet meetelt. Op de valreep dan toch nog een jaarlijst van dit jaar, omdat er zoveel moois gemaakt is. In bijna willekeurige volgorde, zonder linkjes, want ik neem aan dat u weet hoe Google werkt:</p>
<ul>
<li>The Black Keys - El Camino</li>
<li>dEUS - Keep You Close</li>
<li>Feist - Metals</li>
<li>Kasabian - Velociraptor!</li>
<li>De Kift - Brik</li>
<li>Other Lives - Tamer Animals</li>
<li>PJ Harvey - Let England Shake</li>
<li>Radiohead - King Of Limbs</li>
<li>Ryan Adams - Ashes &#038; Fire</li>
<li>St. Vincent - Strange Mercy</li>
<li>Tom Waits - Bad As Me</li>
<li>Wilco - The Whole Love</li>
</ul>
<p>Moeilijk om hier een winnaar uit te plukken. Ryan Adams? PJ Harvey? Of toch gewoon Tom Waits? Ja, misschien wel.</p>
]]></content:encoded>
      <dc:date>2011-12-30T09:40:29+00:00</dc:date>
    </item>

    <item>
      <title>go to Low</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Weblog&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fgo-to-low%2F&amp;seed_title=go+to+Low</link>
      <guid>http://loweblog.com/freelance/article/go&#45;to&#45;low/</guid>
      <description>So yeah, I moved all my ExpressionEngine add&#45;on&#45;related stuff to gotolow.com. Read the blog post over there to see what&#8217;s what and make the necessary changes in your bookmarks. So remember, for ExpressionEngine add&#45;ons: go to Low.</description>
      <dc:subject>Announcements, ExpressionEngine</dc:subject>
      <content:encoded><![CDATA[<p>So yeah, I moved all my ExpressionEngine add-on-related stuff to <a href="http://gotolow.com/">gotolow.com</a>. Read the <a href="http://gotolow.com/blog/launch">blog post over there</a> to see what&#8217;s what and make the necessary changes in your bookmarks. So remember, for ExpressionEngine add-ons: <a href="http://gotolow.com/">go to Low</a>.</p>
]]></content:encoded>
      <dc:date>2011-08-15T11:38:37+00:00</dc:date>
    </item>

    <item>
      <title>Sound familiar?</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Weblog&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fsound-familiar%2F&amp;seed_title=Sound+familiar%3F</link>
      <guid>http://loweblog.com/freelance/article/sound&#45;familiar/</guid>
      <description>So, I was just listening to @jmathias on the EE Podcast, where &#8212; among other things &#8212; James talked about Pixel &#038; Tonic&#8217;s Assets add&#45;on for ExpressionEngine. He applauded the add&#45;on, but one of the remarks he made was that he thought it is &#8220;inherently wrong to mimic Finder&#8221; because it is &#8220;unfamiliar to a large portion of users&#8221;.</description>
      <dc:subject>ExpressionEngine, Rants</dc:subject>
      <content:encoded><![CDATA[<p>So, I was just listening to <a href="http://twitter.com/jmathias">@jmathias</a> on the <a href="http://ee-podcast.com/episodes/ellislab-qa-with-james-mathias">EE Podcast</a>, where &#8212; among other things &#8212; James talked about <a href="http://pixelandtonic.com/">Pixel &#038; Tonic</a>&#8217;s Assets add-on for <a href="http://expressionengine.com/index.php?affiliate=lodewijk">ExpressionEngine</a>. He applauded the add-on, but one of the remarks he made was that he thought it is &#8220;inherently wrong to mimic Finder&#8221; because it is &#8220;unfamiliar to a large portion of users&#8221;.</p>
<p>I must admit, I am an OS X user and I haven&#8217;t yet taken a look at <a href="http://pixelandtonic.com/assets">Assets</a>, but I can say this. Lack of familiarity does not mean bad UX. It just means unfamiliar. If you take the two extreme positions, you could make a file interface either like Windows Explorer or Mac OS X Finder. Choosing either of the two will exclude the other, so no good choice could be made, according to that stance. Trying to come up with something entirely new is very difficult indeed and will very certainly be unfamiliar to all of your users. And this idea is true for any kind of interface, not just a file manager.</p>
<p>To conclude, I think it&#8217;s wrong to dismiss an interface/design/UX, just because it&#8217;s unfamiliar to a certain portion of your users. It most definitely is not &#8220;inherently wrong&#8221;. It&#8217;s a matter of how easy it is to get familiar with the interface, not how familiar you already are. If an interface &#8220;just works&#8221;, familiarity is irrelevant. Plus, do not dismiss the joy of working with a piece of software. If OS X wasn&#8217;t such a joy to work with, I never would have switched from Windows to Mac, despite the fact that I was unfamiliar with Finder the first time I worked on a Mac.</p>
]]></content:encoded>
      <dc:date>2011-07-21T21:25:35+00:00</dc:date>
    </item>

    <item>
      <title>Jaarlijst 2010</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Weblog&amp;seed=http%3A%2F%2Floweblog.com%2Farchives%2Fblog%2Fjaarlijst-2010%2F&amp;seed_title=Jaarlijst+2010</link>
      <guid>http://loweblog.com/archives/blog/jaarlijst&#45;2010/</guid>
      <description>Het is alweer een tijd geleden dat ik een jaarlijst opgesteld heb. Dit jaar zijn er echter een aantal juweeltjes uitgebracht die ik graag met u wil delen. Hieronder de 10 platen uit 2010 (enigszins op volgorde) die ik met veel plezier heb geluisterd, met daarbij het beste nummer van dat album, naar mijn bescheiden mening.

Spoon &#45; Transference, Written In Reverse
Oceansize &#45; Self Preserved While The Bodies Float Up, Silent/Transparent
Savoy Grand &#45; Accident Book, Last Night On Earth
Angus &#038; Julia Stone &#45; Down The Way, Yellow Brick Road
I Am Kloot &#45; Sky At Night, I Still Do
Eels &#45; End Times, Little Bird
De Jeugd van Tegenwoordig &#45; De Lachende Derde, Elektrotechnique
Janelle Mon&#225;e &#45; The ArchAndroid, Faster
Peter Gabriel &#45; Scratch My Back, The Boy In The Bubble
Midlake &#45; The Courage Of Others, Acts Of Man

Daarbij moet ik nog mededelen dat ik ook zeer veel naar fraaie klanken van J. Tillman (Vacilando Territory Blues en Year In The Kingdom) heb geluisterd. Die zouden zomaar in de bovenstaande lijst komen ten koste van Midlake, zij het niet dat die twee albums respectievelijk in 2008 en 2009 uitgekomen zijn.</description>
      <dc:subject>Life, Muziek</dc:subject>
      <content:encoded><![CDATA[<p>Het is alweer een tijd geleden dat ik een jaarlijst opgesteld heb. Dit jaar zijn er echter een aantal juweeltjes uitgebracht die ik graag met u wil delen. Hieronder de 10 platen uit 2010 (enigszins op volgorde) die ik met veel plezier heb geluisterd, met daarbij het beste nummer van dat album, naar mijn bescheiden mening.</p>
<ul class="spaced">
<li><a href="http://www.last.fm/music/Spoon/Transference">Spoon - Transference</a>, <em>Written In Reverse</em></li>
<li><a href="http://www.last.fm/music/Oceansize/Self+Preserved+While+The+Bodies+Float+Up">Oceansize - Self Preserved While The Bodies Float Up</a>, <em>Silent/Transparent</em></li>
<li><a href="http://www.last.fm/music/Savoy+Grand/Accident+Book">Savoy Grand - Accident Book</a>, <em>Last Night On Earth</em></li>
<li><a href="http://www.last.fm/music/Angus%2B%2526%2BJulia%2BStone/Down+the+Way">Angus &#038; Julia Stone - Down The Way</a>, <em>Yellow Brick Road</em></li>
<li><a href="http://www.last.fm/music/I+Am+Kloot/Sky+at+Night">I Am Kloot - Sky At Night</a>, <em>I Still Do</em></li>
<li><a href="http://www.last.fm/music/Eels/End+Times">Eels - End Times</a>, <em>Little Bird</em></li>
<li><a href="http://www.last.fm/music/De+Jeugd+van+Tegenwoordig">De Jeugd van Tegenwoordig - De Lachende Derde</a>, <em>Elektrotechnique</em></li>
<li><a href="http://www.last.fm/music/Janelle%2520Mon%25C3%25A1e">Janelle Mon&#225;e - The ArchAndroid</a>, <em>Faster</em></li>
<li><a href="http://www.last.fm/music/Peter+Gabriel/Scratch+My+Back">Peter Gabriel - Scratch My Back</a>, <em>The Boy In The Bubble</em></li>
<li><a href="http://www.last.fm/music/Midlake/The+Courage+Of+Others">Midlake - The Courage Of Others</a>, <em>Acts Of Man</em></li>
</ul>
<p>Daarbij moet ik nog mededelen dat ik ook zeer veel naar fraaie klanken van J. Tillman (Vacilando Territory Blues en Year In The Kingdom) heb geluisterd. Die zouden zomaar in de bovenstaande lijst komen ten koste van Midlake, zij het niet dat die twee albums respectievelijk in 2008 en 2009 uitgekomen zijn.</p>
]]></content:encoded>
      <dc:date>2010-12-27T10:19:55+00:00</dc:date>
    </item>

    <item>
      <title>Book review: Building websites with EE2</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Weblog&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fbook-review-building-websites-with-ee2%2F&amp;seed_title=Book+review%3A+Building+websites+with+EE2</link>
      <guid>http://loweblog.com/freelance/article/book&#45;review&#45;building&#45;websites&#45;with&#45;ee2/</guid>
      <description>A couple of months ago, I received an email from Packt Publishing asking me to review their book Building Websites with ExpressionEngine 2. I thought &#8220;why not&#8221; and received a copy to review. Apparently, I wasn&#8217;t the only one &#8212; Tony Geer recently posted his review of the same book. Well then, here&#8217;s mine.</description>
      <dc:subject>ExpressionEngine</dc:subject>
      <content:encoded><![CDATA[<p>A couple of months ago, I received an email from Packt Publishing asking me to review their book <a href="http://link.packtpub.com/UHKowE">Building Websites with ExpressionEngine 2</a>. I thought &#8220;why not&#8221; and received a copy to review. Apparently, I wasn&#8217;t the only one &#8212; Tony Geer <a href="http://www.tonygeer.com/2010/12/18/building-websites-with-expressionengine-2-book-review/">recently posted his review</a> of the same book. Well then, here&#8217;s mine.</p>
<p><a href="http://link.packtpub.com/UHKowE" style="float:left;border:none;margin:0 1em 1em 0;background:none"><img src="http://loweblog.com/images/uploads/ee-book.jpg" alt="Book: Building Websites with ExpressionEngine 2" width="125" height="152" style="border:none" /></a> One of the first things mentioned in the book is who it is intended for. It is made clear it&#8217;s intended for novices and beginners of <a href="http://expressionengine.com/index.php?affiliate=lodewijk">ExpressionEngine</a>, not for experienced developers. Considering myself the latter, I wondered if I actually <em>could</em> review the book as I do not belong to the focus group. I decided to look more at the validity of the technical details described in the book.</p>
<h2 style="clear:left">Hands on</h2>
<p>The book takes the approach of guiding the reader through the process of building an example website. This is a good approach of getting to know EE hands-on. That said, it would be even better for novices to not stick to one method or book only, but look into other resources, too. </p>
<p>After the introduction, the book goes on with a chapter about installation on a local server,  which includes instruction on how to hide (or rename) the index.php from your urls. Here I felt like a bit too much attention went to setting up a .htaccess file. After all, hiding the index.php is not an officially supported EE feature. I&#8217;d probably give it a mention and leave it at that.</p>
<p>The book continues with a basic control panel tour, which includes the Template Manager. Combined with the following chapter &#8220;Moving a Website to ExpressionEngine&#8221;, it provides a explanation of EE&#8217;s basic features and workings. The next chapter, &#8220;Creating a Fully-Equipped Channel&#8221; expands on that with features like Comments and RSS.</p>
<p>All the steps are quite verbose and accompanied by plenty of screenshots; I&#8217;m sure newbies would appreciate this do-as-I-do-approach. Even better, there are so-called &#8220;Challenges&#8221; at the end of these chapters to encourage the reader to think for themselves instead of just following instructions. This is a good way of trying to trigger that ever important EE Lightbulb Moment&#8482;.</p>
<p>Personally, I would have preferred to see a more detailed description about the template parser &#8212; explaining a bit more how variables, tags, embeds and snippets work together.</p>
<h2>The basics and a bit more</h2>
<p>After dealing with the basics, the book explains the Member module for a bit. Then two examples are described: how to create a calendar and a Photo Gallery. Now, although practical and explained in detail, I tend to dislike that both these examples require the jQuery plugin FancyBox to work. Also, the html used in these examples isn&#8217;t the prettiest I&#8217;ve ever seen. For example, on page 217 it says:</p>
<blockquote><p>It makes sense to display the thumbnails in a table.</p></blockquote>
<p>No, it doesn&#8217;t. Thumbnails aren&#8217;t tabular data. Just use a list and css to style it the way you want. Despite that the markup has little to nothing to do with EE, it does affect my opinion on the book.</p>
<p>This trend continues for the rest of the book. In chapter 9 &#8220;Beyond the basics&#8221;, other modules like Search, Mailing List and Email are described. All the examples are based on the example site, which should be installed on your local machine. Because of this, the following warning is found throughout the book (eg. page 248):</p>
<blockquote><p>Remember that if you are following along in a localhost environment, you will not actually be able to send outgoing e-mails</p></blockquote>
<p>This may be the case in the author&#8217;s environment, but the MAMP installation on my Mac sure can. I find inaccuracies like this annoying and not very professional.</p>
<p>The final chapter deals with backing up and upgrading EE, as well as extending it with add-ons. I was pleasantly surprised to find own name in the list of developers like <a href="http://pixelandtonic.com/">Pixel &#038; Tonic</a>, <a href="http://www.newism.com.au/">Newism</a> and <a href="http://www.solspace.com/">Solspace</a>. Too bad <a href="http://www.ngenworks.com/">nGen Works</a> is held responsible for <a href="http://buildwithstructure.com/">Structure</a> instead of its authors <a href="http://twitter.com/rockthenroll">Travis Schmeisser</a> and <a href="http://twitter.com/jackmcdade">Jack McDade</a> &#8212; another inaccuracy.</p>
<h2>Conclusion</h2>
<p><a href="http://link.packtpub.com/UHKowE">Building Websites with ExpressionEngine 2</a> is a solid book, especially for its focus group. Despite some glitches in the details, the technical side of things is described in detail and correctly. I have glanced at <a href="http://www.mijingo.com/products/books/expressionengine-2-quickstart-guide/">Ryan Irelan&#8217;s book</a>, and I reckon having both books would be most beneficial to someone just starting out with the excellence that is <a href="http://expressionengine.com/index.php?affiliate=lodewijk">ExpressionEngine</a>.</p>
]]></content:encoded>
      <dc:date>2010-12-21T20:58:35+00:00</dc:date>
    </item>

    <item>
      <title>Andrew Bird bij TED</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Weblog&amp;seed=http%3A%2F%2Floweblog.com%2Farchives%2Fblog%2Fandrew-bird-bij-ted%2F&amp;seed_title=Andrew+Bird+bij+TED</link>
      <guid>http://loweblog.com/archives/blog/andrew&#45;bird&#45;bij&#45;ted/</guid>
      <description>Andrew Bird&#8217;s one&#45;man orchestra of the imagination</description>
      <dc:subject>Dump, Muziek</dc:subject>
      <content:encoded><![CDATA[<p><a href="http://www.ted.com/talks/andrew_bird_s_one_man_orchestra_of_the_imagination.html">Andrew Bird&#8217;s one-man orchestra of the imagination</a></p>
]]></content:encoded>
      <dc:date>2010-11-08T13:02:13+00:00</dc:date>
    </item>

    <item>
      <title>User generated forms in EE</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Weblog&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fuser-generated-forms-in-ee%2F&amp;seed_title=User+generated+forms+in+EE</link>
      <guid>http://loweblog.com/freelance/article/user&#45;generated&#45;forms&#45;in&#45;ee/</guid>
      <description>Recently, I released a new ExpressionEngine add&#45;on: Low Freeform Field. This simple field type generates a drop down list with available Freeform fields and will display the selected field name in your templates. Now, this isn&#8217;t a big deal by itself, but combined with Matrix, it can allow you to create forms with channel entries. Let me show you how.</description>
      <dc:subject>ExpressionEngine, Forms</dc:subject>
      <content:encoded><![CDATA[<p>Recently, I released a new <a href="http://expressionengine.com/index.php?affiliate=lodewijk">ExpressionEngine</a> add-on: <a href="http://loweblog.com/software/low-freeform-field/">Low Freeform Field</a>. This simple field type generates a drop down list with available Freeform fields and will display the selected field name in your templates. Now, this isn&#8217;t a big deal by itself, but combined with Matrix, it can allow you to create forms with channel entries. Let me show you how.</p>
<h2>Freeform and Matrix</h2>
<p>First of all, you need to have <a href="http://www.solspace.com/software/detail/freeform/">Freeform</a> installed, a free from managing module by the add-on veterans at <a href="http://www.solspace.com/">Solspace</a>. In Freeform, you can define different form fields that can be populated by any number of forms. The only down side is, you still have to create the HTML for those forms in your templates and there&#8217;s no good way to automate this. Until now.</p>
<p>Secondly, you&#8217;ll need <a href="http://pixelandtonic.com/matrix">Pixel &#038; Tonic&#8217;s Matrix</a>. This field type allows you to create tabular data in channel entries, which can be used in a plethora of ways. You define the columns, and the client can add as many rows to the matrix as desired. <a href="http://pixelandtonic.com/">Pixel &#038; Tonic</a> is also responsible for many other great field types, like <a href="http://pixelandtonic.com/divebar">P&#038;T List</a> which we&#8217;ll use in this example, too.</p>
<h2>Channel and Fields</h2>
<p>Now, to start automating from creation, we&#8217;ll create a designated channel called Forms. To this channel, we&#8217;ll add a couple of custom fields, for example:</p>
<ul>
<li><code>form_description</code>: a textarea for adding a form description;</li>
<li><code>form_fields</code>: a matrix field with all the form fields for this form;</li>
<li><code>form_feedback</code>: a textarea for the message displayed to the user after submitting the form;</li>
<li><code>form_notify</code>: a text input field where you can enter email addresses that will receive form notifications.</li>
</ul>
<p>The fun starts with the Matrix field. To that, we&#8217;ll add the following columns:</p>
<ul>
<li><code>field_name</code>: the <a href="http://loweblog.com/software/low-freeform-field/">Low Freeform Field</a>;</li>
<li><code>field_label</code>: the label associated with the form field;</li>
<li><code>field_type</code>: a drop down to determine the type of input field, eg. text, textarea, select, radio, checkbox&#8230;</li>
<li><code>field_options</code>: if the type is select, radio or checkbox, you can use this field to define the different options. <a href="http://pixelandtonic.com/divebar">P&#038;T List</a> is really useful here;</li>
<li><code>field_required</code>: a checkbox to select whether this field is required or not.</li>
</ul>
<p>You could add more columns if needed. For example, you could add a <code>field_class</code> for custom styling or <code>field_notes</code> if you need to display per-field instructions. Below is a screenshot of the publish form with the above settings, but as you can imagine, the possibilities are endless.</p>
<p><a href="/images/screenshots/user-form.png" rel="lightbox"><img src="/images/screenshots/user-form-thumb.png" alt="Publish form with Matrix and Low Freeform Field" width="540" height="100" /></a></p>
<h2>The template</h2>
<p>To bring it all together, we need to create a clever template. You could get creative and use an embed and relationships to add forms to other entries, but in this case, we&#8217;ll add the code to the index template in the <code>forms</code> template group. A link to a single form would look like this: <code>domain.com/forms/my-custom-form</code>. Here&#8217;s some code to go with it:</p>
<pre><code>&#123;exp:channel:entries channel=&#34;forms&#34; limit=&#34;1&#34;&#125;

  &#60;h1&#62;&#123;title&#125;&#60;/h1&#62;

  &#123;if segment_3 == 'thanks'&#125;
    &#123;form_feedback&#125;
  &#123;/if&#125;

  &#123;if segment_3 != 'thanks'&#125;

    &#123;form_description&#125;

    &#123;exp:freeform:form
      collection=&#34;&#123;title&#125;&#34;
      notify=&#34;&#123;form_notify&#125;&#34;
      required=&#34;&#123;form_fields search:field_required=&#34;y&#34; backspace=&#34;1&#34;&#125;&#123;field_name&#125;&#124;&#123;/form_fields&#125;&#34;
      return=&#34;&#123;segment_1&#125;/&#123;segment_2&#125;/thanks&#34;&#125;

      &#60;fieldset&#62;
        &#123;form_fields&#125;

          &#60;label for=&#34;&#123;field_name&#125;&#34;&#62;
            &#123;field_label&#125;
            &#123;if field_required == 'y'&#125; &#60;span class=&#34;required&#34;&#62;*&#60;/span&#62;&#123;/if&#125;
          &#60;/label&#62;

          &#123;if field_type == 'text'&#125;
            &#60;input type=&#34;text&#34; name=&#34;&#123;field_name&#125;&#34; id=&#34;&#123;field_name&#125;&#34; /&#62;
          &#123;if:elseif field_type == 'textarea'&#125;
            &#60;textarea name=&#34;&#123;field_name&#125;&#34; id=&#34;&#123;field_name&#125;&#34; rows=&#34;10&#34; cols=&#34;40&#34;&#62;&#60;/textarea&#62;
          &#123;if:elseif field_type == 'select'&#125;
            &#60;select name=&#34;&#123;field_name&#125;&#34; id=&#34;&#123;field_name&#125;&#34;&#62;
              &#123;field_options&#125;
                &#60;option value=&#34;&#123;item&#125;&#34;&#62;&#123;item&#125;&#60;/option&#62;
              &#123;/field_options&#125;
            &#60;/select&#62;
          &#123;if:elseif field_type == 'radio'&#125;
            &#123;field_options&#125;
              &#60;label&#62;&#60;input type=&#34;radio&#34; name=&#34;&#123;field_name&#125;&#34; value=&#34;&#123;item&#125;&#34; /&#62; &#123;item&#125;&#60;/label&#62;
            &#123;/field_options&#125;
          &#123;if:elseif field_type == 'checkbox'&#125;
            &#123;field_options&#125;
              &#60;label&#62;&#60;input type=&#34;checkbox&#34; name=&#34;&#123;field_name&#125;[]&#34; value=&#34;&#123;item&#125;&#34; /&#62; &#123;item&#125;&#60;/label&#62;
            &#123;/field_options&#125;
          &#123;/if&#125;

        &#123;/form_fields&#125;
        &#60;button type=&#34;submit&#34;&#62;Submit form&#60;/button&#62;
      &#60;/fieldset&#62;

    &#123;/exp:freeform:form&#125;
  &#123;/if&#125;

&#123;/exp:channel:entries&#125;</code></pre>
<p>After opening the channel:entries tag, we&#8217;ll open the freeform:form tag, using the entry&#8217;s title as the form collection. Using Matrix&#8217; search option, we&#8217;ll define freeform&#8217;s required parameter. We can set more parameters, depending on the channel fields available.</p>
<p>Then we&#8217;ll loop through the <code>form_fields</code>. Use an advanced conditional to account for all the different input types and loop through the <code>field_options</code> if necessary. As you can see, the output is fully customisable.</p>
<h2>Awesomeness achieved</h2>
<p>This approach allows for fairly flexible custom forms, and with a bit of creative thinking, you could make it even better.</p>
<p>[ETA] Great minds think alike, so it seems. Here&#8217;s a write-up for <a href="http://trevordavis.net/blog/freeform-fieldframe-expressionengine-form-builder/">the same idea in EE1</a> that I wasn&#8217;t aware of.</p>
]]></content:encoded>
      <dc:date>2010-10-18T07:24:28+00:00</dc:date>
    </item>

    <item>
      <title>Nesting tags and performance in EE</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Weblog&amp;seed=http%3A%2F%2Floweblog.com%2Ffreelance%2Farticle%2Fnesting-tags-and-performance-in-ee%2F&amp;seed_title=Nesting+tags+and+performance+in+EE</link>
      <guid>http://loweblog.com/freelance/article/nesting&#45;tags&#45;and&#45;performance&#45;in&#45;ee/</guid>
      <description>Not too long ago, I tweeted:
Pro tip: don&#8217;t ever, ever nest a channel:entries tag inside another tag that loops. Srsly. Don&#8217;t. #eecms
&#8230;which sparked some response. The main reason for not nesting ExpressionEngine&#8217;s channel:entries tags is performance. Let me explain with an example.</description>
      <dc:subject>Categories, ExpressionEngine, Performance, PHP</dc:subject>
      <content:encoded><![CDATA[<p>Not too long ago, I <a href="http://twitter.com/low/status/25056074304">tweeted</a>:</p>
<blockquote><p>Pro tip: don&#8217;t ever, ever nest a channel:entries tag inside another tag that loops. Srsly. Don&#8217;t. #eecms</p></blockquote>
<p>&#8230;which sparked <a href="http://twitter.com/RobertEerhart/status/25058396824">some</a> <a href="http://twitter.com/joelbradbury/status/25062205927">response</a>. The main reason for not nesting ExpressionEngine&#8217;s channel:entries tags is <em>performance</em>. Let me explain with an example.</p>
<h2>Category archives</h2>
<p><a href="http://expressionengine.com/index.php?affiliate=lodewijk&#038;page=user_guide/modules/channel/category_archive.html">EE&#8217;s category archives tag</a> is limited. To overcome this, some people use a channel:entries tag inside a channel:categories tag. Something like this:</p>
<pre><code>&#123;exp:channel:categories channel=&#34;news&#34; style=&#34;linear&#34; disable=&#34;category_fields&#34;&#125;
  &#60;h2&#62;&#123;category_name&#125;&#60;/h2&#62;
  &#123;exp:channel:entries channel=&#34;news&#34; category=&#34;&#123;category_id&#125;&#34; dynamic=&#34;no&#34; disable=&#34;member_data&#124;pagination&#124;category_fields&#34;&#125;
    &#60;h3&#62;&#123;title&#125;&#60;/h3&#62;
    &#123;news_body&#125;
  &#123;/exp:channel:entries&#125;
&#123;/exp:channel:categories&#125;</code></pre>
<p>Now, this will work. However, given enough content, this will slow your site down considerably. The number of queries that will be executed to generate the output is <em>not fixed</em>. Instead, a new channel:entries tag will be generated for each category found, which will result in an <em>unknown number</em> of queries. Dozens at least, hundreds if you have lots of content.</p>
<p>I did a test where I pasted the above code in an empty template, turned on the profiler and checked the number of queries used. With 4 categories and 6 entries, it took <strong>41</strong> queries to generate the page. Then I added a new entry in a new category and reloaded the page. This time it took <strong>45</strong> queries. Just imagine what would happen if there are 20 categories with 200 entries. And that&#8217;s not even a lot.</p>
<h2>Fix it</h2>
<p>To fix this potential problem, we need to make sure the amount of queries needed to generate the page is <em>fixed</em>. We can achieve this by un-nesting the two tags and using PHP on Output. The code is a bit more complicated, but it will improve performance dramatically. Here&#8217;s the code in full. I&#8217;ll explain each bit below.</p>
<pre><code>&#60;?php
  $entries = array();

  &#123;exp:channel:entries channel=&#34;news&#34; dynamic=&#34;no&#34; disable=&#34;member_data&#124;pagination&#124;category_fields&#34;&#125;
    $entry =&#60;&#60;&#60;EOE
      &#60;h3&#62;&#123;title&#125;&#60;/h3&#62;
      &#123;news_body&#125;
EOE;
    &#123;categories&#125;
      $entries[&#123;category_id&#125;][] = $entry;
    &#123;/categories&#125;
  &#123;/exp:channel:entries&#125;
?&#62;

&#123;exp:channel:categories channel=&#34;news&#34; style=&#34;linear&#34; disable=&#34;category_fields&#34;&#125;
  &#60;h2&#62;&#123;category_name&#125;&#60;/h2&#62;
  &#60;?php if (isset($entries[&#123;category_id&#125;])): ?&#62;
    &#60;?=implode(&#34;\n&#34;, $entries[&#123;category_id&#125;])?&#62;
  &#60;?php endif; ?&#62;
&#123;/exp:channel:categories&#125;</code></pre>
<p>First, we&#8217;ll define an array (<code>$entries</code>). Using the channel:entries tag &#8212; without a <code>category=""</code> parameter &#8212; we&#8217;ll fill that array with entries grouped by category. After putting the template chunk for an entry in the <code>$entry</code> variable, we&#8217;ll loop through each related category and add the entry to <code>$entries</code>. What we end up with, is a nested array with all the entries in the right order, grouped by category_id. </p>
<p>To output the entries, we&#8217;ll simply use the channel:categories tag to display each category. We then check if there are entries set in the <code>$entries</code> array for that category_id. If there are, we&#8217;ll echo them to the page after <code>implode</code>-ing them to a string. All done.</p>
<h2>Performance <abbr title="for the win">FTW</abbr></h2>
<p>So, exactly how many queries did we save using this method? I reloaded the page using the above code, with 5 categories and 7 entries: <strong>29</strong> queries. That&#8217;s right, 16 less than the nested method. How many queries would it take if there are 20 categories with 200 entries? 29.</p>
]]></content:encoded>
      <dc:date>2010-09-23T13:07:40+00:00</dc:date>
    </item>

    <item>
      <title>Over de Restaurantweek</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Weblog&amp;seed=http%3A%2F%2Floweblog.com%2Farchives%2Fblog%2Fover-de-restaurantweek%2F&amp;seed_title=Over+de+Restaurantweek</link>
      <guid>http://loweblog.com/archives/blog/over&#45;de&#45;restaurantweek/</guid>
      <description>Vorige week was het Restaurantweek. Gedurende deze week kun je bij vele toprestaurants voor 25 euro een driegangendiner nuttigen. Een leuk initiatief zo op het eerste gezicht. Maar ik zet er na afgelopen week een punt achter. Ik doe er niet meer aan mee. Niet dat ik zelf een restaurant heb&#8230; Nee, ik doe niet meer mee als bezoeker van de restaurantweek. Laat me uitleggen waarom.
Restaurants die meedoen aan deze actie moeten dus voor 25 euro een voor&#45;, hoofd&#45; en nagerecht fabriceren voor een volle tent. Zo ook het restaurant dat ik aandeed, vorige week: La Cloche in Leiden, wat bekend staat als &#233;&#233;n van de betere restaurants uit de buurt. Echter, het voer dat ik voorgeschoteld kreeg kon ik op z&#8217;n positiefst beschrijven als saai en inspiratieloos: zalmtartaar met mosterd&#45;honing dressing (*gaap*), confit de canard (uit blik) met gewokte groente (teveel gembersiroop) en roseval aardappeltjes (&#233;&#233;n partje op mijn bord), en boerenroomijs met warme (= 2 graden warmer dan het ijs) bosbessensaus en (nou komt het) slagroom.
Slaat de Restaurantweek nu niet zijn doel voorbij? Er werd productie gedraaid, geen eten bereid. En ik neem aan dat La Cloche niet de enige is geweest met deze instelling. Mensen die door de lage prijsdrempel eindelijk eens proberen om bij een zogenaamd toprestaurant uit eten te gaan, komen hierdoor dus bedrogen uit. Nee, ik betaal liever iets meer en eet goed, zoals twee weken geleden, bij La Rive.</description>
      <dc:subject>Eten en drinken, Life</dc:subject>
      <content:encoded><![CDATA[<p>Vorige week was het <a href="http://www.restaurantweek.nl/">Restaurantweek</a>. Gedurende deze week kun je bij vele toprestaurants voor 25 euro een driegangendiner nuttigen. Een leuk initiatief zo op het eerste gezicht. Maar ik zet er na afgelopen week een punt achter. Ik doe er niet meer aan mee. Niet dat ik zelf een restaurant heb&#8230; Nee, ik doe niet meer mee als bezoeker van de restaurantweek. Laat me uitleggen waarom.</p>
<p>Restaurants die meedoen aan deze actie moeten dus voor 25 euro een voor-, hoofd- en nagerecht fabriceren voor een volle tent. Zo ook het restaurant dat ik aandeed, vorige week: <a href="http://www.laclocheleiden.nl/">La Cloche</a> in Leiden, wat bekend staat als &#233;&#233;n van de betere restaurants uit de buurt. Echter, het voer dat ik voorgeschoteld kreeg kon ik op z&#8217;n positiefst beschrijven als saai en inspiratieloos: zalmtartaar met mosterd-honing dressing (*gaap*), confit de canard (uit blik) met gewokte groente (teveel gembersiroop) en roseval aardappeltjes (&#233;&#233;n partje op mijn bord), en boerenroomijs met warme (= 2 graden warmer dan het ijs) bosbessensaus en (nou komt het) slagroom.</p>
<p>Slaat de Restaurantweek nu niet zijn doel voorbij? Er werd productie gedraaid, geen eten bereid. En ik neem aan dat La Cloche niet de enige is geweest met deze instelling. Mensen die door de lage prijsdrempel eindelijk eens proberen om bij een zogenaamd toprestaurant uit eten te gaan, komen hierdoor dus bedrogen uit. Nee, ik betaal liever iets meer en eet goed, zoals twee weken geleden, bij <a href="http://www.flickr.com/photos/low/sets/72157624636820123/">La Rive</a>.</p>
]]></content:encoded>
      <dc:date>2010-08-30T19:08:35+00:00</dc:date>
    </item>

    <item>
      <title>Wilco cover</title>
      <link>http://loweblog.com/feeder/?FeederAction=clicked&amp;feed=Weblog&amp;seed=http%3A%2F%2Floweblog.com%2Farchives%2Fblog%2Fwilco-cover%2F&amp;seed_title=Wilco+cover</link>
      <guid>http://loweblog.com/archives/blog/wilco&#45;cover/</guid>
      <description>I Am Trying To Break Your Heart &#45; JC Brooks (Wilco cover)</description>
      <dc:subject>Dump, Muziek</dc:subject>
      <content:encoded><![CDATA[<p><a href="http://www.youtube.com/watch?v=ZK6VILyHVDE">I Am Trying To Break Your Heart - JC Brooks (Wilco cover)</a></p>
]]></content:encoded>
      <dc:date>2010-08-12T11:01:41+00:00</dc:date>
    </item>

    
    </channel>
</rss>
