<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://planet-soc.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Planet SoC - </title>
 <link>http://planet-soc.com/organization/BBC+Research/planet</link>
 <description>Planet view per organization</description>
 <language>en</language>
<item>
 <title>How to write good Kamaelia components and systems</title>
 <link>http://planet-soc.com/node/2925</link>
 <description>&lt;p&gt;I&amp;#8217;d like to apologize for two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;For not posting to my blog in so long.&lt;/li&gt;
&lt;li&gt;For not continuing the distutils discussion.  I&amp;#8217;d kind of abandoned the idea for using distutils to distribute my app, but might end up using it to package my gateway, so stay tuned.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With that said, I think it&amp;#8217;s time for me to share my views on the subject of what a good Kamaelia component is.  Some of these are general rules of thumb of computer science, but they bear repeating here too.  So here it goes.  My rules for writing good Kamaelia components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Keep it simple, avoid premature optimization, and take small steps.&lt;/strong&gt;  If you&amp;#8217;re not totally new to programming, you&amp;#8217;ve probably heard this a million times before.  But a reminder never hurts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design your components to work well with others.&lt;/strong&gt;  You don&amp;#8217;t know what someone else will want to use them for.  For example, I&amp;#8217;m using Ryan&amp;#8217;s HTTPServer code to serve webpages via XMPP.  I won&amp;#8217;t get into the technical details of how that works here in my blog, but suffice it to say that I&amp;#8217;m using Ryan&amp;#8217;s code for something I&amp;#8217;m for sure he didn&amp;#8217;t imagine it would be used for.  And it works pretty well.  Make sure to keep in mind that rule 1 overrides this rule, though.  Don&amp;#8217;t convolute your code because you think someone else may want to use it later.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don&amp;#8217;t forget about shutdown handling.&lt;/strong&gt;  Let&amp;#8217;s face it.  Making your components shut down properly in Kamaelia/Axon is a pain.  I think Michael and Matt will both agree with me on this.  But don&amp;#8217;t ignore it.  That will only make the problem worse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Beware the &amp;#8220;one true&amp;#8221; programming paradigm, including Kamaelia.&lt;/strong&gt;  Since I&amp;#8217;ve been programming in Kamaelia, I&amp;#8217;ve begun to wonder how I&amp;#8217;ll ever transition back to &amp;#8220;normal&amp;#8221; programming.  Indeed, Kamaelia is a fun and inventive way to program concurrently.  But that doesn&amp;#8217;t mean that it&amp;#8217;s best suited for every situation.  You may find that it&amp;#8217;s better to just go with plain old structured or object oriented programming for some problems.  And there&amp;#8217;s nothing wrong with that.  Personally, I use what I like to call a &amp;#8220;wrap around&amp;#8221; rule.  That is to say, I always try to progam the solution I can wrap my head around the easiest.  Chances are, I can get Kamaelia to do just about anything I want it to do.  But if I find myself unable to fathom how I&amp;#8217;ll do something in Kamaelia, I don&amp;#8217;t do it in Kamaelia.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be creative and have fun.&lt;/strong&gt;  I constantly am trying to think of new ways to do old problems.  And sometimes it doesn&amp;#8217;t work out so well.  But the worst case scenario is that I learn a new way &lt;strong&gt;not&lt;/strong&gt; to do things and have to start over.  Best case scenario is that I find something innovative.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be lazy.&lt;/strong&gt;  I won&amp;#8217;t get too much into the specifics of this, but I see a lot of components written using a lot of unnecessary code.  For example, when you check an inbox, how many times have you written the following lines of code:&lt;br /&gt;
&lt;pre&gt;while self.dataReady(&#039;some_inbox&#039;):
    msg = self.recv(&#039;some_inbox&#039;)
    do_stuff_with_msg(msg)&lt;/pre&gt;&lt;p&gt;You may not realize it, but Axon components now have a built in function Inbox that takes care of two of those three lines for you.  Thus, those three lines can be written using a simple list comprehension:&lt;/p&gt;
&lt;pre&gt;[do_stuff_with_msg(msg) for msg in self.Inbox(&#039;inbox&#039;)]&lt;/pre&gt;&lt;p&gt;In my opinion, that&amp;#8217;s a lot more readable than the first version.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You may agree or disagree with the points I bring up.  And that&amp;#8217;s fine.  But those are my views on what it takes to write good systems using Axon and Kamaelia.&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/2925#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/9">BBC Research</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Tue, 15 Jul 2008 22:05:58 +0200</pubDate>
 <dc:creator>JasonMBaker</dc:creator>
 <guid isPermaLink="false">2925 at http://planet-soc.com</guid>
</item>
<item>
 <title>Python distutils and you: Part I</title>
 <link>http://planet-soc.com/node/1766</link>
 <description>&lt;p&gt;In the past few days, I&amp;#8217;ve grown a lot more familiar with python&amp;#8217;s packaging options than I ever hoped to become.  So, I thought I would share some of the things I learned in case anyone else runs across a need to use this in their GSoC projects (or any other project for that matter).&lt;br /&gt;
The setup script&lt;br /&gt;
This is the meat of python distutils.  Surprisingly, there&amp;#8217;s really not all to writing the setup.py script itself.  Suppose I have a file called &amp;#8220;foo.py&amp;#8221; that I&amp;#8217;d like to install on someone&amp;#8217;s computer.  Here&amp;#8217;s what a setup.py script will look like:  (examples shamelessly copied from the &lt;a href=&quot;http://docs.python.org/dist/dist.html&quot;&gt;distutils documentation&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;pre&gt;from distutils.core import setup&lt;/pre&gt;&lt;pre&gt;setup(name=&#039;foo&#039;,&lt;/pre&gt;&lt;pre&gt;      version=&#039;1.0&#039;,&lt;/pre&gt;&lt;pre&gt;      py_modules=[&#039;foo&#039;],&lt;/pre&gt;&lt;pre&gt;      )&lt;/pre&gt;&lt;p&gt;That wasn&amp;#8217;t so difficult was it?  All you need now is to put foo.py in the same directory as setup.py and you&amp;#8217;re good to go!&lt;br /&gt;
Packages&lt;br /&gt;
Now suppose that instead of a single module, we want to put a whole &lt;em&gt;package&lt;/em&gt; into our distribution (a package being a directory containing an &lt;strong&gt;init&lt;/strong&gt;.py).   That&amp;#8217;s where the packages keyword comes into play.  Just pass a list of package names to the setup function.&lt;br /&gt;
So, let&amp;#8217;s assume we have a directory &amp;#8216;foo&amp;#8217; in the same directory as our setup.py script.  This directory contains the files &lt;strong&gt;init&lt;/strong&gt;.py, bar.py, and bar3.py.  Here&amp;#8217;s how we would do that:&lt;/p&gt;
&lt;pre&gt;from distutils.core import setup&lt;/pre&gt;&lt;pre&gt;setup(name=&#039;foo&#039;,&lt;/pre&gt;&lt;pre&gt;      version=&#039;1.0&#039;,&lt;/pre&gt;&lt;pre&gt;      packages=[&#039;foo&#039;],&lt;/pre&gt;&lt;pre&gt;      )&lt;/pre&gt;&lt;p&gt;Now, suppose we want to get something we can distribute.  That&amp;#8217;s pretty easy.  All you have to do is type&lt;/p&gt;
&lt;pre&gt;python setup.py sdist&lt;/pre&gt;&lt;p&gt;That will create a directory called &amp;#8216;dist&amp;#8217;.  If you look inside dist, you will see foo.tar.gz (or foo.zip for you windows users out there).  Now all your user has to do is type in&lt;/p&gt;
&lt;pre&gt;sudo python setup.py install&lt;/pre&gt;&lt;p&gt;and foo will go into the end user&amp;#8217;s site-packages directory.&lt;br /&gt;
Scripts&lt;br /&gt;
Now this is all well and good if all we want to distribute is a library.  But I&amp;#8217;m packaging an application.  Suppose I have a python file called &amp;#8216;dofoo.py&amp;#8217; that that will import modules from foo when the end user runs it.  Here&amp;#8217;s how we would put that into the file:&lt;/p&gt;
&lt;pre&gt;from distutils.core import setup&lt;/pre&gt;&lt;pre&gt;setup(name=&#039;foo-program&#039;,&lt;/pre&gt;&lt;pre&gt;      version=&#039;1.0&#039;,&lt;/pre&gt;&lt;pre&gt;      packages=[&#039;foo&#039;],
scripts=[&#039;dofoo.py&#039;],&lt;/pre&gt;&lt;pre&gt;      )&lt;/pre&gt;&lt;p&gt;What does this do?  Well first of all, the installer will automagically change the shebang line in dofoo.py to the end user&amp;#8217;s python location if the first line of it begins with #! and contains the word python.  Secondly, dofoo.py will be installed to /usr/bin unless the end user puts it elsewhere.  Ideally, the key is to focus on what functionality something provides here rather than where it will go in the user&amp;#8217;s file system since the user has ultimate control over what goes where.&lt;br /&gt;
Conclusion&lt;br /&gt;
Well, the part about writing the setup.py script ended up being longer than I had originally intended.  There is still a lot more metadata that can go into setup.py.  But hopefully that should be sufficient to give you a general idea of what distutils is all about.  Next time I plan on talking a little bit more about the manifest and possibly some more distribution options.&lt;/p&gt;&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/1766#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/9">BBC Research</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Wed, 04 Jun 2008 07:21:40 +0200</pubDate>
 <dc:creator>JasonMBaker</dc:creator>
 <guid isPermaLink="false">1766 at http://planet-soc.com</guid>
</item>
<item>
 <title>Kamaelia Publish v. 0.0.1!</title>
 <link>http://planet-soc.com/node/1667</link>
 <description>&lt;p&gt;You may download the initial version of Kamaelia Publish &lt;a title=&quot;here&quot; href=&quot;http://www.coderspalace.com/downloads/PublishInstaller.zip&quot;&gt;here&lt;/a&gt; (Mac OS X only currently).  Upon installing the package, you will find that Kamaelia Publish can serve basic WSGI webpages.  You will get a demonstration of basic WSGI functions by going to &lt;a href=&quot;http://127.0.0.1:8082&quot;&gt;http://127.0.0.1:8082/simple&lt;/a&gt;.  I&amp;#8217;ve gotten it running using MoinMoin, but for some reason POST methods don&amp;#8217;t seem to work (thus you can&amp;#8217;t edit pages).&lt;br /&gt;
And yes, I know the fact that the icon keeps bouncing up and down in the dock is annoying.  I&amp;#8217;ll have to find a way to fix it.&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/1667#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/9">BBC Research</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Sat, 31 May 2008 01:44:05 +0200</pubDate>
 <dc:creator>JasonMBaker</dc:creator>
 <guid isPermaLink="false">1667 at http://planet-soc.com</guid>
</item>
<item>
 <title>Gold Soundz</title>
 <link>http://planet-soc.com/node/1443</link>
 <description>&lt;p&gt;It&amp;#8217;s been far too long since the last post (exams looming large over my otherwise peaceful existence), and given that my fellow SoCers have managed it I think it must be time for a status update.  Firstly (and perhaps most importantly) we have sound!  The screenshot below shows &lt;a href=&quot;http://www.pygame.org/&quot;&gt;pygame&lt;/a&gt; drawing a bouncy XY pad, all created as a &lt;a href=&quot;http://kamaelia.sourceforge.net/Home&quot;&gt;Kamaelia&lt;/a&gt; component.  This is then outputting OSC messages which are read by &lt;a href=&quot;http://puredata.info/&quot;&gt;PD&lt;/a&gt; and used to trigger and modulate percussive noise.&lt;br /&gt;
&lt;a href=&quot;http://cowallpaper.files.wordpress.com/2008/05/pd_osc_1.png&quot;&gt;&lt;img class=&quot;size-medium wp-image-14 aligncenter&quot; src=&quot;http://cowallpaper.files.wordpress.com/2008/05/pd_osc_1.png?w=300&amp;amp;h=211&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;211&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
If you look closely at the PD patch you can begin to get an idea of how easy it is to work with OSC messages - the OSCroute objects make it simple to split up the different messages, giving you complete control over what is received and where it is used.  So what does it sound like?  Well, kinda chaotic and noisy and full of goodness - &lt;a href=&quot;http://www.box.net/shared/8wz0hx3www&quot;&gt;listen here&lt;/a&gt;.&lt;br /&gt;
Changing tack slightly, over at Create Digital Music there is an &lt;a href=&quot;http://createdigitalmusic.com/2008/05/22/interview-new-virtual-instrument-maker-faw-talks-usability-and-design/&quot;&gt;interesting interview&lt;/a&gt; with the guys from &lt;a href=&quot;http://futureaudioworkshop.com/&quot;&gt;Future Audio Workshop&lt;/a&gt; talking about their rather lovely looking new synth Circle.  There&amp;#8217;s a lot of interesting stuff about interface design, and also a bit about its use of OSC.  I think Gavin Burke, FAW&amp;#8217;s co-founder, sums up the difference between OSC and MIDI nicely:&lt;br /&gt;
You’re not trying to think about MIDI and what MIDI channels you’re on and all that kind of stuff; it just keeps it nice and simple. [OSC] is where it’s heading. It’s where most people want to be; most people don’t want to [have to do MIDI mappings].&lt;br /&gt;
Read the whole thing though - it&amp;#8217;s interesting stuff.&lt;br /&gt;
&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/categories/cowallpaper.wordpress.com/13/&quot; /&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/tags/cowallpaper.wordpress.com/13/&quot; /&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/cowallpaper.wordpress.com/13/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/cowallpaper.wordpress.com/13/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/cowallpaper.wordpress.com/13/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/cowallpaper.wordpress.com/13/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/cowallpaper.wordpress.com/13/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/cowallpaper.wordpress.com/13/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/cowallpaper.wordpress.com/13/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/cowallpaper.wordpress.com/13/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/cowallpaper.wordpress.com/13/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/cowallpaper.wordpress.com/13/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=cowallpaper.wordpress.com&amp;amp;blog=3561968&amp;amp;post=13&amp;amp;subd=cowallpaper&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/1443#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/9">BBC Research</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Fri, 23 May 2008 12:36:28 +0200</pubDate>
 <dc:creator>orphansandoligarchs</dc:creator>
 <guid isPermaLink="false">1443 at http://planet-soc.com</guid>
</item>
<item>
 <title>Miscelleny</title>
 <link>http://planet-soc.com/node/1425</link>
 <description>&lt;p&gt;I just thought I&amp;#8217;d make a post about some of the miscellaneous goings on inside the Kamaelia project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.davbo.org/blog/2008/05/22/kamaelia-multicore-support/&quot;&gt;Davbo posts about multicore support&lt;/a&gt;.  Although somewhat rambling (hey, he says so himself), he brings up some interesting points.&lt;/li&gt;
&lt;li&gt;Lawouach makes a long and very informative post about &lt;a href=&quot;http://www.defuze.org/archives/18-XMPP,-AtomPub-and-microblogging.html&quot;&gt;XMPP, atompub, and microblogging&lt;/a&gt;.  I&amp;#8217;m working on reading the whole thing, I promise.  I really need to learn more about XMPP and headstock so that when it comes time to do some stuff with it, I won&amp;#8217;t be totally lost.&lt;/li&gt;
&lt;li&gt;In other news, Lawouach was also &lt;a href=&quot;http://www.defuze.org/archives/19-They-made-me-do-it....html&quot;&gt;forced to use Twitter&lt;/a&gt;.  Poor guy.&lt;/li&gt;
&lt;li&gt;You can also review the extremely interesting notes of our &lt;a href=&quot;http://groups.google.com/group/kamaelia/msg/561675bea2563212&quot;&gt;last meeting&lt;/a&gt;.  I know.  Try to contain your excitement.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For me, not too much has changed since my last post.  I&amp;#8217;m inching towards having better wsgi.errors support, and I think I&amp;#8217;m almost there.  I did also make an attempt at creating a better solution towards managing component shutdown in Kamaelia, but I think until some issues get worked out, it&amp;#8217;s going to be best for testing components.&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/1425#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/9">BBC Research</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Fri, 23 May 2008 04:51:16 +0200</pubDate>
 <dc:creator>JasonMBaker</dc:creator>
 <guid isPermaLink="false">1425 at http://planet-soc.com</guid>
</item>
<item>
 <title>Kamaelia Multicore Support</title>
 <link>http://planet-soc.com/node/1406</link>
 <description>&lt;p&gt;In response to a blog post over at &lt;a href=&quot;http://yeoldeclue.com/cgi-bin/blog/blog.cgi?rm=viewpost&amp;amp;nodeid=1209413487&quot;&gt;Ye Olde Clue&lt;/a&gt;. I thought I&amp;#8217;d write up my thoughts on this topic since I&amp;#8217;m (hopefully) going to try to review this code and merge it into the core of Kamaelia. I say hopefully because it&amp;#8217;s partly a matter of experience with subversion which at the minute I&amp;#8217;m a few years behind other people on the Kamaelia project. Fortunately they&amp;#8217;re all patient with me while I ask questions.&lt;br /&gt;
Okay, so, meanwhile back at the point: &amp;#8220;Where should Multicore support sit in the Kamaelia tree?&amp;#8221;&lt;br /&gt;
In my opinion the scope of what we&amp;#8217;re calling &amp;#8220;Multicore support&amp;#8221;, is potentially more than just that. It &lt;strong&gt;potentially&lt;/strong&gt; opens up avenues for things like distributed computing and many interesting things which require &amp;#8220;Process Manipulation&amp;#8221;. Of course I don&amp;#8217;t see this happening in the near future but Kamaelia already has some very cool support for various network protocols. I think it would be reasonably trivial now we have 2 Processes working on different cores to stretch the distance of those cores to say the scale of a WAN. That sounds pretty damn cool to me, it may be a long way off or have little benefits. However with Axon I believe this kind of thing could be done in 1 line of code as opposed to several hundred. Yet again displaying how the Axon model makes concurrency so elegant and simple.&lt;br /&gt;
More immediate effects (pointed out by Matt on IRC) this component also applies to single core CPU&amp;#8217;s with things like Hyperthreading, along with any other/further technologies implemented on this level of hardware.&lt;br /&gt;
Okay so I kinda rambled off-topic. Anyway; for things like this I think it&amp;#8217;s a good idea to not box this into a label like &amp;#8220;Multicore support&amp;#8221; when we&amp;#8217;re looking at another tool in Kamaelia arsenal &lt;img src=&quot;http://www.davbo.org/blog/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;br /&gt;
This is why I would rather see this code placed in &amp;#8220;Kamaelia.Chassis.Process&amp;#8221; rather than &amp;#8220;Kamaelia.Chassis.Multicore&amp;#8221;. Hopefully this makes sense.&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/1406#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/9">BBC Research</category>
 <category domain="http://planet-soc.com/taxonomy/term/182">Universe SoC</category>
 <pubDate>Fri, 23 May 2008 01:06:45 +0200</pubDate>
 <dc:creator>Davbo</dc:creator>
 <guid isPermaLink="false">1406 at http://planet-soc.com</guid>
</item>
<item>
 <title>What’s new</title>
 <link>http://planet-soc.com/node/1417</link>
 <description>&lt;p&gt;It&amp;#8217;s been a little while since I&amp;#8217;ve posted last, and there&amp;#8217;s a lot that&amp;#8217;s new, so I&amp;#8217;ll enumerate the points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The WSGI code is close to being complete.  There are a couple of caveats though.  First of all, there is no support for the write() callable.  This is important for legacy app support as well as for streaming.  Secondly, the wsgi.errors object still directs to stderr.  There&amp;#8217;s not necessarily anything wrong with this, but it&amp;#8217;s certainly a good idea to have some kind of custom error log (see the next bullet point for more info on how I plan to achieve this).  And lastly, my implementation of wsgi.input can be prone to DOS attacks.  This is definitely something that needs to be fixed, but isn&amp;#8217;t necessarily a first priority for me.&lt;/li&gt;
&lt;li&gt;I&amp;#8217;ve written a logging component for Kamaelia.  It essentially uses a backplane to register itself to a service.  The idea being that you won&amp;#8217;t necessarily need a reference to any kind of object in order to post messages to a log.  What I&amp;#8217;m working on at the moment is an adapter for this component to act as a wsgi.errors object.&lt;/li&gt;
&lt;li&gt;I&amp;#8217;ve set up the basic structure of how I think the Descartes server will be.  It&amp;#8217;s far from being distribution ready, but it should be enough to give you the basic idea.  For now, I&amp;#8217;m placing some of the components (like the ServerCore) in my sketches directory as I&amp;#8217;m not sure if any modifications I make to them will necessarily be a good fit for Kamaelia as a whole.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that&amp;#8217;s it for now.  I think I may spend a little bit of time reading my start of program present, &lt;a href=&quot;http://www.amazon.com/Beautiful-Code-Leading-Programmers-Practice/dp/0596510047/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1211405701&amp;amp;sr=8-1&quot;&gt;Beautiful Code&lt;/a&gt;.&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/1417#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/9">BBC Research</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Wed, 21 May 2008 23:36:56 +0200</pubDate>
 <dc:creator>JasonMBaker</dc:creator>
 <guid isPermaLink="false">1417 at http://planet-soc.com</guid>
</item>
<item>
 <title>URI vs URL</title>
 <link>http://planet-soc.com/node/1418</link>
 <description>&lt;p&gt;Ok, so this is one issue that&amp;#8217;s been bugging me about HTTP.  I keep hearing the acronyms URI and URL mentioned.  I knew that URL wasn&amp;#8217;t technically accurate, but I couldn&amp;#8217;t ever find a good explanation of what the difference between the two are or why URI is more technically accurate.  This is even after reading various explanations about the subject.  Here&amp;#8217;s what I&amp;#8217;ve come up with:&lt;br /&gt;
&lt;strong&gt;URI&lt;/strong&gt;&lt;br /&gt;
A URI is a name that identifies something globally.  Admittedly, this explanation is a little bit vague, but then again the idea of a URI is kind of a vague concept.  We&amp;#8217;ll come back to this later, but I&amp;#8217;ll give you a few examples of URIs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;pre&gt;http://www.coderspalace.com&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;pre&gt;http://www.coderspalace.com/index.php&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;pre&gt;file://usr/lib/python&lt;/pre&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;URL&lt;br /&gt;
A URL is a special kind of URI.  It gives you more precise instructions on &lt;em&gt;where &lt;/em&gt;something is located.  Thus, something like http://www.coderspalace.com/j_baker/ will tell you what computer a webpage is and will even narrow down where the webpage is located, but it won&amp;#8217;t give you an exact location of the file like http://www.coderspalace.com/j_baker/index.php will.&lt;br /&gt;
So I suppose the next question is: who cares?  The point is that nowadays you don&amp;#8217;t really need the level of precision that a URL requires and haven&amp;#8217;t for a long time.  Try going to &lt;a href=&quot;http://www.coderspalace.com/j_baker/&quot;&gt;http://www.coderspalace.com/j_baker/&lt;/a&gt; and &lt;a title=&quot;http://www.coderspalace.com/j_baker&quot; href=&quot;http://www.coderspalace.com/j_baker/index.php&quot;&gt;http://www.coderspalace.com/j_baker/index.php&lt;/a&gt; and see if you get any difference between the two links.  You won&amp;#8217;t.  This is because my webserver is smart enough to know that when you go to http://www.coderspalace.com/j_baker/ you &lt;em&gt;really&lt;/em&gt; mean http://www.coderspalace.com/j_baker/index.php.  Pretty cool, huh?&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/1418#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/9">BBC Research</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Wed, 14 May 2008 07:59:46 +0200</pubDate>
 <dc:creator>JasonMBaker</dc:creator>
 <guid isPermaLink="false">1418 at http://planet-soc.com</guid>
</item>
<item>
 <title>Kamaelia in DevChix</title>
 <link>http://planet-soc.com/node/1419</link>
 <description>&lt;p&gt;&lt;a href=&quot;http://www.devchix.com/2008/05/10/kamaelia-the-future-of-python-frameworks-looks-promising/&quot;&gt;Kamaelia:  The future of Python frameworks looks promising&lt;/a&gt;&lt;br /&gt;
Gloria from DevChix writes about Kamaelia.  It is nice to see that the project is gaining some attention from others.  Gloria does bring up one important point though:  installing some of the dependencies for Kamaelia is a pain.  Especially if you&amp;#8217;re a newbie.  Hell, sometimes even if you&amp;#8217;re not a newbie.&lt;br /&gt;
I would like to point out that to me, this really seems like more of a python issue than a Kamaelia one.  I mean, try installing &lt;a href=&quot;http://www.die-offenbachs.de/eric/index.html&quot;&gt;Eric&lt;/a&gt; or &lt;a href=&quot;http://pythonide.blogspot.com/&quot;&gt;SPE&lt;/a&gt; without some kind of package manager.  You&amp;#8217;ll quickly learn the meaning of the words &amp;#8220;dependency hell.&amp;#8221;&lt;br /&gt;
With that said, I think that regardless of the platform that Kamaelia is on, it does aim to be a programming methodology that is easy to use for beginners.  And it does need to be able to overcome these problems if it ever intends to achieve that goal.&lt;br /&gt;
I was planning on making an &amp;#8220;easy to use&amp;#8221; package manager for installing WSGI software for end users to use.  If I do it properly, I may be able to make this be a solution for the problem that Gloria mentions.&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/1419#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/9">BBC Research</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Wed, 14 May 2008 07:09:04 +0200</pubDate>
 <dc:creator>JasonMBaker</dc:creator>
 <guid isPermaLink="false">1419 at http://planet-soc.com</guid>
</item>
<item>
 <title>Google FriendConnect</title>
 <link>http://planet-soc.com/node/1420</link>
 <description>&lt;p&gt;Ars Technica writes about Google&amp;#8217;s upcoming &lt;a title=&quot;FriendConnect&quot; href=&quot;http://arstechnica.com/news.ars/post/20080512-google-friend-connect-to-bring-social-networks-to-your-site.html&quot; target=&quot;_blank&quot;&gt;FriendConnect&lt;/a&gt; technology.  From what I can see, it looks pretty awesome.  It is essentially an extension of Google&amp;#8217;s OpenSocial that allows site owners to embed authentication and various other social apps in their webpage.  They give Ingrid Michaelson&amp;#8217;s &lt;a title=&quot;website&quot; href=&quot;http://www.ingridmichaelson.com/&quot; target=&quot;_blank&quot;&gt;website&lt;/a&gt; as an example of what FriendConnect can do.  Whatever the case, it looks pretty interesting.  And more importantly, it looks like something I would want to put into Kamaelia Publish.  I just signed up for a preview release of it.  We&amp;#8217;ll see if I get in.&lt;/p&gt;
</description>
 <comments>http://planet-soc.com/node/1420#comments</comments>
 <category domain="http://planet-soc.com/taxonomy/term/9">BBC Research</category>
 <category domain="http://planet-soc.com/taxonomy/term/181">Planet SoC</category>
 <pubDate>Tue, 13 May 2008 18:31:10 +0200</pubDate>
 <dc:creator>JasonMBaker</dc:creator>
 <guid isPermaLink="false">1420 at http://planet-soc.com</guid>
</item>
</channel>
</rss>
