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

<channel>
	<title>Beutelevision &#187; Programming</title>
	<atom:link href="http://beutelevision.com/blog2/topics/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://beutelevision.com/blog2</link>
	<description>by Thomas Beutel</description>
	<lastBuildDate>Fri, 23 Jul 2010 16:24:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='beutelevision.com' port='80' path='/blog2/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Detecting a click in a checkbox with jQuery</title>
		<link>http://beutelevision.com/blog2/2010/03/20/detecting-a-click-in-a-checkbox-with-jquery/</link>
		<comments>http://beutelevision.com/blog2/2010/03/20/detecting-a-click-in-a-checkbox-with-jquery/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 16:07:50 +0000</pubDate>
		<dc:creator>Thomas Beutel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://beutelevision.com/blog2/?p=206</guid>
		<description><![CDATA[A simple script to detect when a checkbox is clicked. What you do with once you&#8217;ve detected the click is up to you.
 &#60;html&#62;
 &#60;head&#62;
 &#60;script src="http://www.google.com/jsapi"&#62;&#60;/script&#62;
 &#60;script&#62;
 google.load("jquery", "1.3.2");
 google.setOnLoadCallback(function() {
  $('#agree').click( function() {
    if($(this).attr('checked')){
      alert('checked');
    }
    else{
  [...]]]></description>
			<content:encoded><![CDATA[<p>A simple script to detect when a checkbox is clicked. What you do with once you&#8217;ve detected the click is up to you.</p>
<pre> &lt;html&gt;
 &lt;head&gt;
 &lt;script src="<a href="http://www.google.com/jsapi">http://www.google.com/jsapi</a>"&gt;&lt;/script&gt;
 &lt;script&gt;
 google.load("jquery", "1.3.2");
 google.setOnLoadCallback(function() {
  $('#agree').click( function() {
    if($(this).attr('checked')){
      alert('checked');
    }
    else{
      alert('unchecked');
    }
  });
 });
 &lt;/script&gt;
 &lt;/head&gt;
 &lt;body&gt;
 &lt;p&gt;
 &lt;input id="agree" type="checkbox" /&gt; I agree
 &lt;/p&gt;
 &lt;/body&gt;&lt;/html&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://beutelevision.com/blog2/2010/03/20/detecting-a-click-in-a-checkbox-with-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redirect from within a Wordpress admin page</title>
		<link>http://beutelevision.com/blog2/2010/03/19/redirect-from-within-wordpress-admi/</link>
		<comments>http://beutelevision.com/blog2/2010/03/19/redirect-from-within-wordpress-admi/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 04:11:01 +0000</pubDate>
		<dc:creator>Thomas Beutel</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://beutelevision.com/blog2/?p=201</guid>
		<description><![CDATA[I was trying to perform a redirect to generate a CSV file from within a Wordpress admin page using the wp_redirect( ) function, but the problem was that I would always get the dreaded &#8220;Cannot modify header information &#8211; headers already sent&#8221; message. This is because admin plugins are simply hooks that are performed within [...]]]></description>
			<content:encoded><![CDATA[<p>I was trying to perform a redirect to generate a CSV file from within a Wordpress admin page using the wp_redirect( ) function, but the problem was that I would always get the dreaded &#8220;Cannot modify header information &#8211; headers already sent&#8221; message. This is because admin plugins are simply hooks that are performed within the framework of the admin system.</p>
<p>The solution was to use a Javascript redirect. The Javascript attaches an event listener to listen for the &#8220;load&#8221; event. When the admin page is finished loading, a page containing the CSV data is loaded. That page has a Content-Type of application/csv, so it downloads immediately, leaving the admin page open (at least in Safari 4).</p>
<p>In my Wordpress admin panel (this is a fragment of a plugin):</p>
<pre>   // setup Javascript redirect
     $location='/wp/csv-output/?year='.$year.'&amp;month='.$month;
 ?&gt;
 &lt;script&gt;
 function addListener(element, event, listener, bubble) {
  if(element.addEventListener) {
    if(typeof(bubble) == "undefined") bubble = false;
    element.addEventListener(event, listener, bubble);
  } else if(this.attachEvent) {
    element.attachEvent("on" + event, listener);
  }
 }
 addListener(this, "load", function() { window.location="&lt;?php echo $location ?&gt;" });
 addListener(document, "load", function() { window.location="&lt;?php echo $location ?&gt;" });
 &lt;/script&gt;</pre>
<p>And in my CSV page (again, just a fragment):</p>
<pre>   ob_end_clean();</pre>
<pre>   header("Content-type: application/csv");
   header("Content-Disposition: attachment; filename=contact_data_$year_$month.csv");
   header("Pragma: no-cache");
   header("Expires: 0");</pre>
<p>I found the javascript code <a href="http://answers.google.com/answers/threadview?id=510976">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://beutelevision.com/blog2/2010/03/19/redirect-from-within-wordpress-admi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Result of expression &#8216;document.forms[0].submit&#8217; [[object HTMLInputElement]] is not a function.</title>
		<link>http://beutelevision.com/blog2/2009/09/15/result-of-expression-document-forms0-submit-object-htmlinputelement-is-not-a-function/</link>
		<comments>http://beutelevision.com/blog2/2009/09/15/result-of-expression-document-forms0-submit-object-htmlinputelement-is-not-a-function/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 21:34:48 +0000</pubDate>
		<dc:creator>Thomas Beutel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://beutelevision.com/blog2/2009/09/15/result-of-expression-document-forms0-submit-object-htmlinputelement-is-not-a-function/</guid>
		<description><![CDATA[I was trying to add a small delay into my form submission like so:
&#60;form ... onsubmit="setTimeout('document.forms[0].submit()',2000);return false;"&#62;
but everytime I tried it, I got the following error:
Result of expression 'document.forms[0].submit' [[object HTMLInputElement]] is not a function.
This one had me stumped, until I realized what it was telling me&#8230; that my submit button was named &#8220;submit&#8221;.
&#60;input type="submit" [...]]]></description>
			<content:encoded><![CDATA[<p>I was trying to add a small delay into my form submission like so:</p>
<p><code>&lt;form ... onsubmit="setTimeout('document.forms[0].submit()',2000);return false;"&gt;</code></p>
<p>but everytime I tried it, I got the following error:</p>
<p><code>Result of expression 'document.forms[0].submit' [[object HTMLInputElement]] is not a function.</code></p>
<p>This one had me stumped, until I realized what it was telling me&#8230; that my submit button was named &#8220;submit&#8221;.</p>
<p><code>&lt;input type="submit" name="submit" id="Button1" /&gt;</code></p>
<p>I changed the name of the submit button and the problem went away.</p>
<p><code>&lt;input type="submit" name="button1" id="Button1" /&gt;</code></p>
<p>Basically, Javascript provides a &#8220;convenience&#8221; by adding the names of the form inputs as children of the form. But this then clashes with preset function names, like the submit() function.</p>
]]></content:encoded>
			<wfw:commentRss>http://beutelevision.com/blog2/2009/09/15/result-of-expression-document-forms0-submit-object-htmlinputelement-is-not-a-function/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>RSSCloud: No need to adjust your firewall</title>
		<link>http://beutelevision.com/blog2/2009/09/08/rsscloud-no-need-to-adjust-your-firewall/</link>
		<comments>http://beutelevision.com/blog2/2009/09/08/rsscloud-no-need-to-adjust-your-firewall/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 05:01:59 +0000</pubDate>
		<dc:creator>Thomas Beutel</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[rsscloud]]></category>

		<guid isPermaLink="false">http://beutelevision.com/blog2/?p=173</guid>
		<description><![CDATA[I&#8217;ve been following the recent development of RSSCloud with interest&#8230; I think it has the potential to replace Twitter in the long term, although I suspect that Twitter might also evolve in the direction of RSSCloud.
One misconception about RSSCloud is the supposed need for the cloud to notify the desktop or mobile reader of an [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been following the recent development of <a href="http://rsscloud.org">RSSCloud</a> with interest&#8230; I think it has the potential to replace Twitter in the long term, although I suspect that Twitter might also evolve in the direction of RSSCloud.</p>
<p>One misconception about RSSCloud is the supposed need for the cloud to notify the desktop or mobile reader of an update. This would seem to mean that you would have to adjust your firewall to accept inbound connections to your computer/mobile device.</p>
<p>While the <a href="http://rsscloud.org/walkthrough.html">implementor&#8217;s guide</a> shows that the cloud does notify the aggregator, the aggregator doesn&#8217;t have to be the same as the reader. As the guide <a href="http://rsscloud.org/walkthrough.html#theAggregator">suggests</a>, the aggregator can also be in the cloud, with the reader opening an outbound connection to the aggregator, in the same way AIM or Skype or Jabber clients do, using protocols like XMPP. No need to adjust your firewall.</p>
<p>For that matter, Twitter clients do the same thing, using <a href="http://apiwiki.twitter.com/Twitter-REST-API-Method%3A-statuses-friends_timeline">HTTP REST calls</a>. The only difference is Twitter limits the number of <a href="http://apiwiki.twitter.com/Rate-limiting">API calls per hour</a> (currently 150 requests per hour, or 2.5 requests per min&#8211;close enough to realtime for me), while there are no limits with XMPP. The tradeoff is arguably one of simplicity &#8211; is your client easier to implement with one or the other?</p>
<p>Hopefully the folks working on RSSCloud are developing an example of a cloud aggregator and an associated protocol. My vote would be for the protocol to be REST-based, but I could be convinced otherwise.</p>
]]></content:encoded>
			<wfw:commentRss>http://beutelevision.com/blog2/2009/09/08/rsscloud-no-need-to-adjust-your-firewall/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using jQuery and Prototype together while avoiding the dreaded element.dispatchEvent error</title>
		<link>http://beutelevision.com/blog2/2009/08/28/using-jquery-and-prototype-together-and-avoiding-the-dreaded-elementdispatchevent-error/</link>
		<comments>http://beutelevision.com/blog2/2009/08/28/using-jquery-and-prototype-together-and-avoiding-the-dreaded-elementdispatchevent-error/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 18:13:27 +0000</pubDate>
		<dc:creator>Thomas Beutel</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://beutelevision.com/blog2/?p=161</guid>
		<description><![CDATA[Here is what I do to avoid the dreaded &#8220;element.dispatchEvent is not a function&#8221; error. I load jQuery first, Prototype second, and then I use jQuery( ) instead of $( ) for all my jQuery calls.
 &#60;!--  Set up jQuery and prototype together  --&#62;
 &#60;script src="http://www.google.com/jsapi"&#62;&#60;/script&#62;
 &#60;script&#62;
 google.load("jquery", "1.3.2");
 google.load("prototype", "1.6.0.3");
 google.setOnLoadCallback(function() {
 [...]]]></description>
			<content:encoded><![CDATA[<p>Here is what I do to avoid the dreaded &#8220;element.dispatchEvent is not a function&#8221; error. I load jQuery first, Prototype second, and then I use jQuery( ) instead of $( ) for all my jQuery calls.</p>
<pre> &lt;!--  Set up jQuery and prototype together  --&gt;
 &lt;script src="http://www.google.com/jsapi"&gt;&lt;/script&gt;
 &lt;script&gt;
 google.load("jquery", "1.3.2");
 google.load("prototype", "1.6.0.3");
 google.setOnLoadCallback(function() {
  jQuery('#helphide').hide();
  jQuery('#helpbutton').click( function(){
    jQuery('#helphide').toggle();
 });
 });
 &lt;/script&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://beutelevision.com/blog2/2009/08/28/using-jquery-and-prototype-together-and-avoiding-the-dreaded-elementdispatchevent-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Skype to control a model train</title>
		<link>http://beutelevision.com/blog2/2009/08/21/using-skype-to-control-a-model-train/</link>
		<comments>http://beutelevision.com/blog2/2009/08/21/using-skype-to-control-a-model-train/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 18:44:25 +0000</pubDate>
		<dc:creator>Thomas Beutel</dc:creator>
				<category><![CDATA[Model Railroading]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Skype]]></category>

		<guid isPermaLink="false">http://beutelevision.com/blog2/?p=159</guid>
		<description><![CDATA[Small wireless spy cameras are widely available, and there are even a few available specifically for  HO-scale trains.
This got me to thinking about letting my cousin in Germany run a train on my train layout, using Skype. Why not? Connecting the camera receiver to my laptop is easy and Skype allows you to select [...]]]></description>
			<content:encoded><![CDATA[<p>Small wireless spy cameras are widely available, and there are even a <a href="http://www.gadgettom.com/GadgetCAM.htm">few</a> <a href="http://factorydirecttrains.com/css-811t1-singlecamera24ghzsystemwithsound.aspx">available</a> specifically for  HO-scale trains.</p>
<p>This got me to thinking about letting my cousin in Germany run a train on my train layout, using Skype. Why not? Connecting the camera receiver to my laptop is easy and Skype allows you to select the camera source for video chats. For controlling the train, I can use the open source <a href="http://jmri.sourceforge.net/">JMRI</a> framework.</p>
<p>The only integration problem to solve is how to expose the throttle controls to my cousin. I could hack something together on a web page and have him work the controls there.</p>
<p>But is there a way to build this on top of Skype? After all, Skype supports instant messaging, so throttle commands could travel back and forth over IM. Skype offers an <a href="https://developer.skype.com/Docs/ApiDoc/Skype_API_reference">API</a>, but I haven&#8217;t  yet delved deeply enough to know what kind of applications I can build on top of Skype.</p>
<p>More soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://beutelevision.com/blog2/2009/08/21/using-skype-to-control-a-model-train/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Useless use of private variable in void context (Perl)</title>
		<link>http://beutelevision.com/blog2/2008/08/01/useless-use-of-private-variable-in-void-context-perl/</link>
		<comments>http://beutelevision.com/blog2/2008/08/01/useless-use-of-private-variable-in-void-context-perl/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 17:55:49 +0000</pubDate>
		<dc:creator>Thomas Beutel</dc:creator>
				<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[typo perl error]]></category>

		<guid isPermaLink="false">http://beutelevision.com/blog2/?p=97</guid>
		<description><![CDATA[Can you see what is wrong with this Perl code snippet?
      foreach my $cat (@$categories) {
        if ($cat->{col} == $column and $cat=>{pos} == $position) {
          return $cat;
        [...]]]></description>
			<content:encoded><![CDATA[<p>Can you see what is wrong with this Perl code snippet?</p>
<div class="codeblock">      foreach my $cat (@$categories) {<br />
        if ($cat->{col} == $column and $cat=>{pos} == $position) {<br />
          return $cat;<br />
        }<br />
      }
</div>
<p>It gets the &#8220;Useless use of private variable in void context&#8221; at the last brace. Well, it took me a while, but it was the equal sign in $cat=>{pos} which should be $cat->{pos}. Worse, I copied and pasted this code somewhere else, which doubled the problem. (Yes I know, all copying and pasting is evil&#8211;I get it!)</p>
<p>In any case, <a href="http://www.perlmonks.org/?node_id=267730">this comment</a> on Perlmonks was helpful, suggesting to look for typos backward from the point of the error. Yup, that&#8217;s exactly what it was.</p>
]]></content:encoded>
			<wfw:commentRss>http://beutelevision.com/blog2/2008/08/01/useless-use-of-private-variable-in-void-context-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lava lamps for programming</title>
		<link>http://beutelevision.com/blog2/2008/07/30/lava-lamps-for-programming/</link>
		<comments>http://beutelevision.com/blog2/2008/07/30/lava-lamps-for-programming/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 05:03:17 +0000</pubDate>
		<dc:creator>Thomas Beutel</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://beutelevision.com/blog2/?p=96</guid>
		<description><![CDATA[I just love this idea: integrating lava lamps to Cruise Control so that you can see when a software build has gone bad. The idea is to turn on a red lava lamp when the build failed, otherwise turn on a green one. Cool!
]]></description>
			<content:encoded><![CDATA[<p>I just love this idea: <a href="http://www.hostfrontier.com/index.php/2007081413/agile/integrating-lava-lamps-to-cruisecontrol.html">integrating lava lamps to Cruise Control</a> so that you can see when a software build has gone bad. The idea is to turn on a red lava lamp when the build failed, otherwise turn on a green one. Cool!</p>
]]></content:encoded>
			<wfw:commentRss>http://beutelevision.com/blog2/2008/07/30/lava-lamps-for-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Symfony project menus for Emacs</title>
		<link>http://beutelevision.com/blog2/2008/07/27/symfony-project-menus-for-emacs/</link>
		<comments>http://beutelevision.com/blog2/2008/07/27/symfony-project-menus-for-emacs/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 05:10:17 +0000</pubDate>
		<dc:creator>Thomas Beutel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://beutelevision.com/blog2/?p=95</guid>
		<description><![CDATA[After reading the Productive Programmer, I was inspired to write a custom script to add Symfony menus to my Emacs editor. After some frustration (I find emacs LISP tough to grok), I finally figured it out. (script is below)
Anyway, here are a couple of pictures showing custom menus for a small project. This allows me [...]]]></description>
			<content:encoded><![CDATA[<p>After reading the Productive Programmer, I was inspired to write a custom script to add Symfony menus to my Emacs editor. After some frustration (I find emacs LISP tough to grok), I finally figured it out. (script is below)</p>
<p>Anyway, here are a couple of pictures showing custom menus for a small project. This allows me to find and load module templates, action files, and models quickly and easily.</p>
<p> </p>
<p><a href="http://beutelevision.com/blog2/wp-content/uploads/2008/07/picture-19.gif"><img class="alignnone size-medium wp-image-94" title="picture-19" src="http://beutelevision.com/blog2/wp-content/uploads/2008/07/picture-19.gif" alt="symfonu modules in an emacs menu" width="300" height="151" /></a></p>
<p> </p>
<p><a href="http://beutelevision.com/blog2/wp-content/uploads/2008/07/picture-20.gif"><img class="alignnone size-medium wp-image-93" title="picture-20" src="http://beutelevision.com/blog2/wp-content/uploads/2008/07/picture-20.gif" alt="lib/models in an emacs menu" width="300" height="263" /></a></p>
<p>OK, I didn&#8217;t write the script in elisp. Instead, I use perl to generate the elisp code. To create the elisp code, I run this script at the root of the Symfony project.</p>
<div class="codeblock"><code>#!/usr/bin/perl<br />
$dir = `pwd`;<br />
chomp $dir;   </p>
<p>print qq{<br />
;; menu.el - quick access menus for emacs editor<br />
;; *** auto generated by bin/symenu ***<br />
;; To use this menu, load into buffer and then ESC-X eval-buffer<br />
;; T. Beutel</p>
<p>(defvar my-menu nil "my menu")<br />
};</p>
<p>my $menus = qq{<br />
 (easy-menu-define my-menu global-map "My own menu"<br />
 '("Modules"<br />
};</p>
<p>my $count = 0;</p>
<p>while(){<br />
  ($module) = (m/ \/ ([^\/]+) \z /xms);<br />
  $count++;<br />
  print qq{<br />
(defun $module-actions ()<br />
 (interactive)<br />
  (let (mybuffer)<br />
    (setq mybuffer (find-file "$dir/apps/frontend/modules/$module/actions/actions.class.php"))<br />
 )<br />
)<br />
};</p>
<p>$menus .= qq{<br />
 ("$module"<br />
 ["actions" $module-actions t]<br />
};</p>
<p>while(){<br />
    ($template,$success,$tmpl2) = (m/ \/ (?: ([^\/]+) (Success) | ([^\/]+) ) \.php \z /xms);<br />
    $template ||= $tmpl2;</p>
<p>$count++;<br />
    print qq{<br />
(defun $module-$template ()<br />
 (interactive)<br />
  (let (mybuffer)<br />
    (setq mybuffer (find-file "$dir/apps/frontend/modules/$module/templates/$template$success.php"))<br />
 )<br />
)<br />
};</p>
<p>$menus .= qq{<br />
 ["$template" $module-$template t]<br />
};</p>
<p>}</p>
<p>$menus .= ")\n";</p>
<p>}</p>
<p>print $menus . "))\n";</p>
<p># Models</p>
<p>my $menus = qq{<br />
 (easy-menu-define my-menu global-map "My own menu"<br />
 '("Models"<br />
};</p>
<p>my $count = 0;</p>
<p>while(<br />
){<br />
  ($model) = (m/ \/ ([^\/]+) \.php \z /xms);</p>
<p>$count++;<br />
  print qq{<br />
(defun model-$model ()<br />
 (interactive)<br />
  (let (mybuffer)<br />
    (setq mybuffer (find-file "$dir/lib/model/$model.php"))<br />
 )<br />
)<br />
};</p>
<p>$menus .= qq{<br />
 ["$model" model-$model t]<br />
};</p>
<p>}</p>
<p></code><code>print $menus . "))\n";<br />
</code></p>
</div>
<p>Update: After I wrote my implementation, I found this pure elisp implementation that creates an even better symfony navigation: <a href="http://svn.tracfort.jp/svn/dino-symfony/emacs-symfony/emacs-symfony/symfony-navigation.el">http://svn.tracfort.jp/svn/dino-symfony/emacs-symfony/emacs-symfony/symfony-navigation.el</a></p>
]]></content:encoded>
			<wfw:commentRss>http://beutelevision.com/blog2/2008/07/27/symfony-project-menus-for-emacs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A SproutCore example by Johannes Fahrenkrug</title>
		<link>http://beutelevision.com/blog2/2008/07/25/89/</link>
		<comments>http://beutelevision.com/blog2/2008/07/25/89/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 03:28:33 +0000</pubDate>
		<dc:creator>Thomas Beutel</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[SproutCore]]></category>
		<category><![CDATA[opensocial sproutcore]]></category>

		<guid isPermaLink="false">http://beutelevision.com/blog2/?p=89</guid>
		<description><![CDATA[Johannes Fahrenkrug wrote a nice tutorial on  building an OpenSocial app with SproutCore.
]]></description>
			<content:encoded><![CDATA[<p>Johannes Fahrenkrug wrote a nice tutorial on  <a href="http://blog.springenwerk.com/2008/07/socialsprout-using-sproutcore-in.html">building an OpenSocial app with SproutCore</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://beutelevision.com/blog2/2008/07/25/89/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Productive Programmer Book</title>
		<link>http://beutelevision.com/blog2/2008/07/25/the-productive-programmer-book/</link>
		<comments>http://beutelevision.com/blog2/2008/07/25/the-productive-programmer-book/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 01:49:37 +0000</pubDate>
		<dc:creator>Thomas Beutel</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://beutelevision.com/blog2/?p=88</guid>
		<description><![CDATA[
I just finished reading the Productive Programmer and I really like the suggestions, such as SLAP (single level of abstraction). The book isn&#8217;t language specific, but it is Java-heavy in the examples. Still, everything is adaptable to other languages.
There is now also a wiki for the book.
]]></description>
			<content:encoded><![CDATA[<div style="float:right;padding-left:15px;"><iframe src="http://rcm.amazon.com/e/cm?t=tctref-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=0596519788&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe></div>
<p>I just finished reading the Productive Programmer and I really like the suggestions, such as SLAP (single level of abstraction). The book isn&#8217;t language specific, but it is Java-heavy in the examples. Still, everything is adaptable to other languages.</p>
<p>There is now also a <a href="http://www.productiveprogrammer.com/wiki/index.php/Main_Page">wiki for the book</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://beutelevision.com/blog2/2008/07/25/the-productive-programmer-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
