<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Lennart Regebro: Plone consulting</title>
	<atom:link href="http://regebro.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://regebro.wordpress.com</link>
	<description>Plone is the community!</description>
	<pubDate>Fri, 18 Jul 2008 15:13:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
			<item>
		<title>A quick five.grok sprint update!</title>
		<link>http://regebro.wordpress.com/2008/07/18/a-quick-fivegrok-sprint-update/</link>
		<comments>http://regebro.wordpress.com/2008/07/18/a-quick-fivegrok-sprint-update/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 15:13:59 +0000</pubDate>
		<dc:creator>Lennart Regebro</dc:creator>
		
		<category><![CDATA[grok]]></category>

		<category><![CDATA[plone]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[zope]]></category>

		<category><![CDATA[belgium]]></category>

		<category><![CDATA[five.grok]]></category>

		<category><![CDATA[Louvain-la-Neuve]]></category>

		<category><![CDATA[sprint]]></category>

		<guid isPermaLink="false">http://regebro.wordpress.com/?p=112</guid>
		<description><![CDATA[Today and yesterday we have been six people at the Bubblenet offices in Louvain-la-Neuve, Brussels, where we have been working on five.grok. The main work has been implementing views. During this my intuition proved incorrect and Godefroids correct: Most of the classes and grokkers from Grok turned out to be directly useable under five.grok with [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Today and yesterday we have been six people at the Bubblenet offices in <span><span><span dir="ltr"><span class="locality">Louvain-la-Neuve, Brussels, where we have been working on five.grok. The main work has been implementing views. During this my intuition proved incorrect and Godefroids correct: Most of the classes and grokkers from Grok turned out to be directly useable under five.grok with no modifications.I thought we would need much more differences between Grok and five.grok than has so far been the case. (Although security will certainly be a big issue).<br />
</span></span></span></span></p>
<p><span><span><span dir="ltr"><span class="locality">As a result of this a new module has been started to keep everything related to views and layers and such, and it will probably be called grokcore.browser (although it&#8217;s currently called grokcore.view). Just as grokcore.component extracts the parts from grok that has to do with the component architechture, grokcore.[browser|view] has all the parts with Zope views. We hope to get this accepted into Grok itself, so that both Grok and five.grok ends up using it, because there is a lot of code, and a massive amount of tests to handle views, and it would be silly to have two implementations of everything.</span></span></span></span></p>
<p>As a result of this, five.grok now has both adapters and utilities and views, and is therefore right now starting to become useful. Some have today been sprinting on an example application of how to extend a Zope2 object with five.grok views. We hope this example application will show us what is missing and what the next parts to be added to five.grok is.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/regebro.wordpress.com/112/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/regebro.wordpress.com/112/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/regebro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/regebro.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/regebro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/regebro.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/regebro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/regebro.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/regebro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/regebro.wordpress.com/112/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/regebro.wordpress.com/112/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/regebro.wordpress.com/112/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=regebro.wordpress.com&blog=1158551&post=112&subd=regebro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://regebro.wordpress.com/2008/07/18/a-quick-fivegrok-sprint-update/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/regebro-128.jpg" medium="image">
			<media:title type="html">regebro</media:title>
		</media:content>
	</item>
		<item>
		<title>Mini-sprint on introspection in Paris!</title>
		<link>http://regebro.wordpress.com/2008/07/15/mini-sprint-on-introspection-in-paris/</link>
		<comments>http://regebro.wordpress.com/2008/07/15/mini-sprint-on-introspection-in-paris/#comments</comments>
		<pubDate>Tue, 15 Jul 2008 16:12:17 +0000</pubDate>
		<dc:creator>Lennart Regebro</dc:creator>
		
		<category><![CDATA[grok]]></category>

		<category><![CDATA[plone]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[zope]]></category>

		<category><![CDATA[zope3]]></category>

		<category><![CDATA[introspector]]></category>

		<category><![CDATA[paris]]></category>

		<category><![CDATA[sprint]]></category>

		<guid isPermaLink="false">http://regebro.wordpress.com/?p=109</guid>
		<description><![CDATA[In this years summer of code, there are two related projects, Martin Lundwalls Component Registry Introspector, which I mentor, and Ulrich Fouquets Grok Introspector, which Martijn Faassen mentors. We have since the start of this planned to get together all four and work on this for some time, and the result of this is a [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In this years summer of code, there are two related projects, Martin Lundwalls <a href="http://code.google.com/soc/2008/plone/app.html?csaid=NR8RHQ9GUi0JGBQJEgJdHSIKNUkCRlsCVnMGaElVFlhXAyMDOQ%3D%3D%0A" target="_blank">Component Registry Introspector</a>, which I mentor, and Ulrich Fouquets <a href="http://code.google.com/soc/2008/zope/app.html?csaid=LR8NMwxfRicMIF0AFlFXVXYAa0YBFVEAUXlcYUpRFw%3D%3D%0A" target="_blank">Grok Introspector</a>, which Martijn Faassen mentors. We have since the start of this planned to get together all four and work on this for some time, and the result of this is a two day mini-sprint on introspection for the Zope component architecture and various Zope variants, including Grok and Plone. The sprint is graciously hosted by <a href="http://www.pilotsystems.net/" target="_blank">Pilot Systems</a> here in Paris, the 21st and 22nd of July.</p>
<p>If you are interested in coming and helping in the tasks, you are welcome! I can&#8217;t promise that the weather will be as perfect as it is today, but the cafés will still be here next week as well, so I can promise a great time! Mail me at regebro@gmail.com for more information.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/regebro.wordpress.com/109/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/regebro.wordpress.com/109/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/regebro.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/regebro.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/regebro.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/regebro.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/regebro.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/regebro.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/regebro.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/regebro.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/regebro.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/regebro.wordpress.com/109/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=regebro.wordpress.com&blog=1158551&post=109&subd=regebro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://regebro.wordpress.com/2008/07/15/mini-sprint-on-introspection-in-paris/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/regebro-128.jpg" medium="image">
			<media:title type="html">regebro</media:title>
		</media:content>
	</item>
		<item>
		<title>icalendar 2.0.1 released</title>
		<link>http://regebro.wordpress.com/2008/07/11/icalendar-201-released/</link>
		<comments>http://regebro.wordpress.com/2008/07/11/icalendar-201-released/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 20:16:17 +0000</pubDate>
		<dc:creator>Lennart Regebro</dc:creator>
		
		<category><![CDATA[calendaring]]></category>

		<category><![CDATA[plone]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[zope]]></category>

		<category><![CDATA[icalendar]]></category>

		<guid isPermaLink="false">http://regebro.wordpress.com/?p=107</guid>
		<description><![CDATA[MaxM&#8217;s icalendar module is a python module that reads and writes data according to RFC2445, commonly known as iCalendar. I have been using it since the fall of 2005, and only discovered a small set of bugs in it. In fact, after the release of version 1.2 in November 2006, only two (and a half) [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://http://www.mxm.dk/" target="_blank">MaxM&#8217;s</a> icalendar module is a python module that reads and writes data according to RFC2445, commonly known as iCalendar. I have been using it since the fall of 2005, and only discovered a small set of bugs in it. In fact, after the release of version 1.2 in November 2006, only two (and a half) bugs have been found and reported to icalendar-dev<span class="HcCDpe">@codespeak.net as far as I can see</span>. Today I fixed those and released a new version. Well, in fact, I didn&#8217;t see one of the bug reports until I had made one release already, so I released two new versions today, 2.0 and 2.0.1.</p>
<p>Two and a half bugs normally doesn&#8217;t give you an increase in the major version number, but one of the bugs changes the API, so 2.0 is not compatible with 1.x if you use EXDATE or RDATE in your application.</p>
<p>I haven&#8217;t updated icalendars homepage, because I don&#8217;t remember how to do it, but they are available at pypi, and installable as eggs, so it shouldn&#8217;t matter much. So, go ahead and use this fine piece of software, and I&#8217;ll look forward to making a new release in 2010.</p>
<h2>Changes in 2.0.1 compared to 1.2</h2>
<ul>
<li>EXDATE and RDATE now returns a vDDDLists object, which contains a list of vDDDTypes objects. This is do that EXDATE and RDATE can contain lists of dates, as per RFC.<br />
***Note!***: This change is incompatible with earlier behavior, so if you handle EXDATE and RDATE you will need to update your code.</li>
<li>When creating a vDuration of -5 hours (which in itself is nonsensical nothing can last for a negative time period), the ical output of that was -P1DT19H, which is correct, but ugly. Now it&#8217;s &#8216;-PT5H&#8217;, which is prettier, and compatible with Korganizer that for some reason seems to think things can last less than no time.</li>
<li>Renamed the UTC class to Utc, so it would not clash with the UTC object, since that rendered the UTC object unpicklable.</li>
<li>Made the tests run under Python 2.5 and 2.6.</li>
</ul>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/regebro.wordpress.com/107/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/regebro.wordpress.com/107/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/regebro.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/regebro.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/regebro.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/regebro.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/regebro.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/regebro.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/regebro.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/regebro.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/regebro.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/regebro.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=regebro.wordpress.com&blog=1158551&post=107&subd=regebro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://regebro.wordpress.com/2008/07/11/icalendar-201-released/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/regebro-128.jpg" medium="image">
			<media:title type="html">regebro</media:title>
		</media:content>
	</item>
		<item>
		<title>Get your recurring Plone events here! New releases of major calendaring products!</title>
		<link>http://regebro.wordpress.com/2008/07/10/get-your-recurring-plone-events-here-new-releases-of-major-calendaring-products/</link>
		<comments>http://regebro.wordpress.com/2008/07/10/get-your-recurring-plone-events-here-new-releases-of-major-calendaring-products/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 09:52:04 +0000</pubDate>
		<dc:creator>Lennart Regebro</dc:creator>
		
		<category><![CDATA[calendaring]]></category>

		<category><![CDATA[plone]]></category>

		<category><![CDATA[dateable]]></category>

		<category><![CDATA[plone4artistscalendar]]></category>

		<category><![CDATA[recurring events]]></category>

		<guid isPermaLink="false">http://regebro.wordpress.com/?p=106</guid>
		<description><![CDATA[I just released Dateable 0.3, the project that aims to be the future mega project of Plone calendaring. I also released Plone4ArtistsCalendar 2.0a1, and the reason for that is that these projects now are pretty much one and the same. Before the final release of Plone4ArtistsCalendar 2.0 it is quite likely that we&#8217;ll use only [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I just released Dateable 0.3, the project that aims to be the future mega project of Plone calendaring. I also released Plone4ArtistsCalendar 2.0a1, and the reason for that is that these projects now are pretty much one and the same. Before the final release of Plone4ArtistsCalendar 2.0 it is quite likely that we&#8217;ll use only the name Dateable, as it&#8217;s shorter and cuter, but that renaming hasn&#8217;t happened yet.</p>
<p>So, what is new in this alpha release: Well, main anticipated news is recurring events. Yes, you heard me right: Recurring events. The mechanism to have recurring events is there now, although the user interface is quite rough and missed some features. That&#8217;s the first main reason this is an alpha release and not a beta. The second main reason is that the iCalendar support doesn&#8217;t handle recurring events yet.</p>
<p>The other main news, which is less hotly anticipated except by me, is that Plone4ArtistsCalendar now uses dateable.chronos as it&#8217;s main views. Dateable.chronos has week and day views in addition to the month, list and past views of p4a.calendar. And thanks to much work from several people, these views look awesome!</p>
<p>And the third main new feature of this is that this is an egg-only release. It means it&#8217;s very easy to install. In your Plone 3 buildout add p4a.plonecalendar to the list of eggs, and to the list of zcml packages. Run buildout, restart. Install the Plone4Artists PloneCalendar and Plone4Artists PloneEvent products in Quickinstaller. Done! Events now have a recurrence tab, and Folders have a Calendar subtype.</p>
<p>So, please go ahead and test! Yes, this is an alpha release, don&#8217;t install it on production systems, please. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> If you like it, please come and help at p4a-users@googlegroups.com. Main things that needs to be fixed: Recurring event support for iCalendar. Recurring event support for the Plone event portlet. A nice useable, Ajaxified UI for Events.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/regebro.wordpress.com/106/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/regebro.wordpress.com/106/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/regebro.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/regebro.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/regebro.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/regebro.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/regebro.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/regebro.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/regebro.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/regebro.wordpress.com/106/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/regebro.wordpress.com/106/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/regebro.wordpress.com/106/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=regebro.wordpress.com&blog=1158551&post=106&subd=regebro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://regebro.wordpress.com/2008/07/10/get-your-recurring-plone-events-here-new-releases-of-major-calendaring-products/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/regebro-128.jpg" medium="image">
			<media:title type="html">regebro</media:title>
		</media:content>
	</item>
		<item>
		<title>I&#8217;m going to PyCon Poland.</title>
		<link>http://regebro.wordpress.com/2008/07/09/im-going-to-pycon-poland/</link>
		<comments>http://regebro.wordpress.com/2008/07/09/im-going-to-pycon-poland/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 21:00:05 +0000</pubDate>
		<dc:creator>Lennart Regebro</dc:creator>
		
		<category><![CDATA[python]]></category>

		<category><![CDATA[pycon]]></category>

		<category><![CDATA[pycon-pl]]></category>

		<guid isPermaLink="false">http://regebro.wordpress.com/?p=104</guid>
		<description><![CDATA[18-19th October there will be a PyCon in Rybnik, Poland. I will here hold a talk about the python-incompatibility project and how to write code that runs under both 2.6 and 3.0 for a smooth transition to 3.0. The rest of the talks are in Polish, of course, so I won&#8217;t understand them, but I&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>18-19th October there will be a <a href="http://liwo.polsl.pl/pycon-pl" target="_blank">PyCon in Rybnik, Poland</a>. I will here hold <a href="http://liwo.polsl.pl/pycon-pl/agenda/python-3-0-compatibility" target="_blank">a talk</a> about the <a href="http://code.google.com/p/python-incompatibility/" target="_blank">python-incompatibility</a> project and how to write code that runs under both 2.6 and 3.0 for a smooth transition to 3.0. The rest of the talks are in Polish, of course, so I won&#8217;t understand them, but I&#8217;ll hang around and mingle anyway.</p>
<p>See you there!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/regebro.wordpress.com/104/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/regebro.wordpress.com/104/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/regebro.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/regebro.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/regebro.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/regebro.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/regebro.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/regebro.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/regebro.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/regebro.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/regebro.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/regebro.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=regebro.wordpress.com&blog=1158551&post=104&subd=regebro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://regebro.wordpress.com/2008/07/09/im-going-to-pycon-poland/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/regebro-128.jpg" medium="image">
			<media:title type="html">regebro</media:title>
		</media:content>
	</item>
		<item>
		<title>Mini sprint on five.grok!</title>
		<link>http://regebro.wordpress.com/2008/07/09/mini-sprint-on-fivegrok/</link>
		<comments>http://regebro.wordpress.com/2008/07/09/mini-sprint-on-fivegrok/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 06:14:42 +0000</pubDate>
		<dc:creator>Lennart Regebro</dc:creator>
		
		<category><![CDATA[grok]]></category>

		<category><![CDATA[zope]]></category>

		<guid isPermaLink="false">http://regebro.wordpress.com/?p=103</guid>
		<description><![CDATA[My vacation plans stopped me from going to the Blackforest sprint in the end of August. Too bad I had wanted to work on five.grok there. But as compensation I&#8217;m going to Brussels the 17th and 18th for a mini-sprint on Grok and Zope 2. If you are interested, be there, or B2! Contact Godefroid [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>My vacation plans stopped me from going to the Blackforest sprint in the end of August. Too bad I had wanted to work on five.grok there. But as compensation I&#8217;m going to Brussels the 17th and 18th for a mini-sprint on Grok and Zope 2. If you are interested, be there, or B<sup>2</sup>! Contact Godefroid for more info: <span class="HcCDpe"><span class="lDACoc">gotcha@bubblenet.be.</span></span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/regebro.wordpress.com/103/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/regebro.wordpress.com/103/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/regebro.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/regebro.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/regebro.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/regebro.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/regebro.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/regebro.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/regebro.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/regebro.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/regebro.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/regebro.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=regebro.wordpress.com&blog=1158551&post=103&subd=regebro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://regebro.wordpress.com/2008/07/09/mini-sprint-on-fivegrok/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/regebro-128.jpg" medium="image">
			<media:title type="html">regebro</media:title>
		</media:content>
	</item>
		<item>
		<title>Do not send emails to Sweden!</title>
		<link>http://regebro.wordpress.com/2008/06/18/do-not-send-emails-to-sweden/</link>
		<comments>http://regebro.wordpress.com/2008/06/18/do-not-send-emails-to-sweden/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 16:21:11 +0000</pubDate>
		<dc:creator>Lennart Regebro</dc:creator>
		
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://regebro.wordpress.com/?p=102</guid>
		<description><![CDATA[Or have servers there. Why? Well, the Swedish parlament look set to vote through a law that gives FRA (Swedens NSA, basically) the right to do surveillance on all electronic traffic crossing Swedish borders. Yes. All. Really. They do really intend to survey ALL electronic traffic, looking for what is called &#8220;external threats&#8221; (i.e. terrorists [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Or have servers there. Why? Well, the Swedish parlament look set to vote through a law that gives FRA (Swedens NSA, basically) the right to do surveillance on all electronic traffic crossing Swedish borders. Yes. All. Really. They do really intend to survey ALL electronic traffic, looking for what is called &#8220;external threats&#8221; (i.e. terrorists and such).</p>
<p>So, if you send email to a Swedish server, this email will be read by a machine to see if it matches certain criteria, and if so, it might be read by somebody at FRA in the end. This is the rights that are being given to an organisation that has illegally done this kind of surveillance within Sweden for ten years. And this is a move supported by around 80% or the parliament. Yes, really. Of course, only 50% will actually vote for it because the social democrats, who&#8217;s law it really is, is now in opposition and votes against everything out of principle.</p>
<p>The law has been by Googles expert in questions like this been characterized as not having any place in a western democracy. I agree.</p>
<p>I am so amazingly happy that I have moved from that country.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/regebro.wordpress.com/102/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/regebro.wordpress.com/102/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/regebro.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/regebro.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/regebro.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/regebro.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/regebro.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/regebro.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/regebro.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/regebro.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/regebro.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/regebro.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=regebro.wordpress.com&blog=1158551&post=102&subd=regebro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://regebro.wordpress.com/2008/06/18/do-not-send-emails-to-sweden/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/regebro-128.jpg" medium="image">
			<media:title type="html">regebro</media:title>
		</media:content>
	</item>
		<item>
		<title>My blog as a Wordle!</title>
		<link>http://regebro.wordpress.com/2008/06/12/my-blog-as-a-wordle/</link>
		<comments>http://regebro.wordpress.com/2008/06/12/my-blog-as-a-wordle/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 22:08:39 +0000</pubDate>
		<dc:creator>Lennart Regebro</dc:creator>
		
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://regebro.wordpress.com/?p=100</guid>
		<description><![CDATA[I like the ideas of good looking word coulds like wordle. Here is the front page of my blog today, as a wordle.

Somebody should make a Plone tag cloud portlet that looks like that.
       ]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I like the ideas of good looking word coulds like <a href="http://www.wordle.net/">wordle.</a> Here is the front page of my blog today, as a wordle.</p>
<p><a href="http://www.wordle.net/gallery/regebro_wordpress_com" title="regebro.wordpress.com"><img src="http://www.wordle.net/thumb/regebro_wordpress_com" style="border:1px solid #ddd;padding:4px;"></a></p>
<p>Somebody should make a Plone tag cloud portlet that looks like that.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/regebro.wordpress.com/100/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/regebro.wordpress.com/100/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/regebro.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/regebro.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/regebro.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/regebro.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/regebro.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/regebro.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/regebro.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/regebro.wordpress.com/100/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/regebro.wordpress.com/100/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/regebro.wordpress.com/100/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=regebro.wordpress.com&blog=1158551&post=100&subd=regebro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://regebro.wordpress.com/2008/06/12/my-blog-as-a-wordle/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/regebro-128.jpg" medium="image">
			<media:title type="html">regebro</media:title>
		</media:content>

		<media:content url="http://www.wordle.net/thumb/regebro_wordpress_com" medium="image" />
	</item>
		<item>
		<title>Python 3 will make you a better programmer.</title>
		<link>http://regebro.wordpress.com/2008/06/06/python-3-will-make-you-a-better-programmer/</link>
		<comments>http://regebro.wordpress.com/2008/06/06/python-3-will-make-you-a-better-programmer/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 16:39:40 +0000</pubDate>
		<dc:creator>Lennart Regebro</dc:creator>
		
		<category><![CDATA[plone]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[python 3000]]></category>

		<category><![CDATA[zope]]></category>

		<guid isPermaLink="false">http://regebro.wordpress.com/?p=98</guid>
		<description><![CDATA[In the python-incompatibility project I&#8217;ve added loads of code that works under 2.5 but does not work under Python 3.0. I&#8217;ve also added code on how to re-write the code so that it will run under both 2.6 and 3.0.
Quite a lot of time, the rewritten code will run not only under 2.6 and 3.0, [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In the <a href="http://code.google.com/p/python-incompatibility/" target="_blank">python-incompatibility</a> project I&#8217;ve added loads of code that works under 2.5 but does not work under Python 3.0. I&#8217;ve also added code on how to re-write the code so that it will run under both 2.6 and 3.0.</p>
<p>Quite a lot of time, the rewritten code will run not only under 2.6 and 3.0, but also under 2.5! This may be surprising, but the reason is that you in 2.x is able to do a lot of bad things that you can&#8217;t do in 3.0.<br />
One example is using the keys of a dictionary as a list. For example, this code is valid in 2.x:</p>
<pre>d = {'key1': 'value1',
     'key2': 'value2',
     'key3': 'value3',
}
d.values()[1]</pre>
<p>But doing that is a bad idea. The keys of a dictionary isn&#8217;t sorted, so you don&#8217;t know which one you get back. Of course, if you are going through all the keys, that&#8217;s OK, but that would mean you are doing some sort of basic newbie mistake, like</p>
<pre>for i in len(d.keys()):
  key = d.keys()[i]</pre>
<p>When you should be doing</p>
<pre>for key in d.keys():</pre>
<p>Now, in Python 3 you simply cannot slice the keys of a dictionary, because .keys() doesn&#8217;t return a list, but a view, which isn&#8217;t sliceable. So, these kinds of bad programming can&#8217;t happen in Python 3. Or, well, they can, but you need to also explicitly convert keys() to a list, so it&#8217;s unlikely you do it by mistake, which can happen under 2.5, where one person can start slicing a list without noticing that it comes from a dictionary further up in code that somebody else wrote. So in 3.0 you have to intentionally create bad code in situations where it could happen by mistake in 2.x.</p>
<p>I like Python 3. Python 2 rocks. Python 3 is metal!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/regebro.wordpress.com/98/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/regebro.wordpress.com/98/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/regebro.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/regebro.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/regebro.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/regebro.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/regebro.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/regebro.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/regebro.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/regebro.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/regebro.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/regebro.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=regebro.wordpress.com&blog=1158551&post=98&subd=regebro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://regebro.wordpress.com/2008/06/06/python-3-will-make-you-a-better-programmer/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/regebro-128.jpg" medium="image">
			<media:title type="html">regebro</media:title>
		</media:content>
	</item>
		<item>
		<title>Python indendation rocks (and sucks a little bit).</title>
		<link>http://regebro.wordpress.com/2008/05/30/python-indendation-rocks-and-sucks-a-little-bit/</link>
		<comments>http://regebro.wordpress.com/2008/05/30/python-indendation-rocks-and-sucks-a-little-bit/#comments</comments>
		<pubDate>Fri, 30 May 2008 05:50:32 +0000</pubDate>
		<dc:creator>Lennart Regebro</dc:creator>
		
		<category><![CDATA[python]]></category>

		<category><![CDATA[programming]]></category>

		<category><![CDATA[indentation]]></category>

		<category><![CDATA[langauges]]></category>

		<guid isPermaLink="false">http://regebro.wordpress.com/?p=97</guid>
		<description><![CDATA[Andy Buckley wrote a blog about why Python indentation was bad. He has two arguments, and one example. Fortunately, he is mostly wrong. He is right about his first argument: Invisible syntax isn&#8217;t really a good idea.  A really good example of  invisible code was old to me by a friend in Sweden [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Andy Buckley wrote a blog about <a href="http://www.insectnation.org/articles/2007/08/15/python-indentation-considered-boneheaded/" target="_blank">why Python indentation was bad</a>. He has two arguments, and one example. Fortunately, he is mostly wrong. He is right about his first argument: Invisible syntax isn&#8217;t really a good idea.  A really good example of  invisible code was old to me by a friend in Sweden many years ago. There was a programming language, I&#8217;ve forgotten the name, where any characters where allowed in variable names. For a joke, people would insert the escape codes for colours in the variable names, so you would have a green variable, named red, and a red variable named red. Highly confusing. Then somebody figured out you could call the variable &lt;escape to red&gt;&lt;escape to red&gt;red&lt;escape back&gt;. This would of course be completely indistinguishable from the other red red variable, and make the program incomprehensible.</p>
<p>Yes, invisible syntax is bad, and if you mix tabs and spaces in Python, the syntax indeed becomes invisible. Andy will without a doubt be happy to know that Python 3 will no longer allow it. Try it and you get &#8220;TabError: inconsistent use of tabs and spaces in indentation&#8221;. This news was greeted at PyCon this year with loud cheers. That means that with Python 3, the syntax is no longer invisible. You will see the difference in indentation, the indentation can no longer be ambiguous.  Yes, you can still mix three spaces with two spaces and one space and ten spaces. But that doesn&#8217;t matter. Inconsistent indentation might be confusing, but no more so that inconsistent variable naming, and is no fault of the language.</p>
<p>The second reason from Andy is that you can&#8217;t use tools to fix the indentation. But this is in fact incorrect. If the indentation is broken, that is a syntactic error. It&#8217;s a bug. You can&#8217;t use tools to fix bugs, you need a programmer. His has an example of broken indentation and asks how it should be fixed. It&#8217;s this:</p>
<pre>def myfunction(foo, bar):
    foo.boing()
   for i in bar.fizzle(foo):
      baz = i**2
    foo.wibble(baz)
    return foo, baz
</pre>
<p>Well, but with braces, that code would look like this (or similar, the indentation errors makes the code ambiguous, so there is alternative ways of misplacing the braces.):</p>
<pre>def myfunction(foo, bar): {
    foo.boing()}
   {
   for i in bar.fizzle(foo): { {
      baz = i**2 }
    foo.wibble(baz)
    return foo, baz }
}
</pre>
<p>How would you correct that? Which braces are incorrect? There is an error in how the blocks are created, and you can&#8217;t fix that with a tool, no matter if the blocks are created with brackets or white space.</p>
<p>Andy&#8217;s real world example is that he needed to cooperate with somebody whose editor liked using a mix of tabs and three-space indents. First, delete that editor, or fix the configuration. Secondly, as long as the indentation in fact is correct, you <em>can</em> fix it. The confusion comes if you use an editor where you have said that tabs should be shown as equal to four spaces, and you mix tabs and spaces. Then you can get things that look like this:</p>
<pre>def foo():
      for x in range(5):
    print x
</pre>
<p>And you go &#8220;wha?&#8221; Because that print line starts with a tab, which is expanded by python to eight spaces, but shown by your editor as four. And the line before contains six spaces. So, Python will interpret this correctly, your editor will not. However, if you look at the file with &#8220;less&#8221; it will look OK. These type of problems are fixable. You can use a script that replaces all tabs with spaces, correctly. Then the file will look OK. And if the indentation after this is a mix of two, five and umpteen spaces, this is also fixable by tools. In fact WingIDE, which I use, will complain on mixes of tabs and spaces and ask if they should be fixed. It will adapt the indentation to what is already going on in the file, so when I get a file written with three spaces as indentation (this has happened), this works just fine, but I can also tell it that no, it should in fact always be 4 (or 2 or 6 or 9) spaces as indentation, consistently, and it will re-indent the whole file.</p>
<p>So, yes, invisible syntax is bad. Yes, Python 2 has it. Python 3 does not. That you can&#8217;t fix programmer bugs with tools is nothing unique for Python. You <em>can</em> fix ugly indentation in Python, as long as the code actually runs.</p>
<p>There is however one actual problem with the indentation: There is no do-until loop. And this is because you can&#8217;t write:</p>
<pre>do:
  blablablabl
until x
</pre>
<p>This is a pity, because I want a do until loop. An alternate syntax is possible:</p>
<pre>until x:
   blablablablabal
</pre>
<p>But this apparently has been decided against, because it means that the test comes before the code, and the variables used in the test gets defined after the test, which apparently is frowned upon from a syntactic point of view. I don&#8217;t care. I still want an until x statement, but it seems I won&#8217;t get one. And this is the indentations fault, and the only real problem with Pythons indentation as I see it. But the benefits still are so many more and so much bigger that the drawbacks get dropped-kicked into PHP-land.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/regebro.wordpress.com/97/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/regebro.wordpress.com/97/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/regebro.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/regebro.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/regebro.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/regebro.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/regebro.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/regebro.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/regebro.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/regebro.wordpress.com/97/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/regebro.wordpress.com/97/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/regebro.wordpress.com/97/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=regebro.wordpress.com&blog=1158551&post=97&subd=regebro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://regebro.wordpress.com/2008/05/30/python-indendation-rocks-and-sucks-a-little-bit/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/regebro-128.jpg" medium="image">
			<media:title type="html">regebro</media:title>
		</media:content>
	</item>
	</channel>
</rss>