<?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>percious.com &#187; Sprox</title>
	<atom:link href="http://percious.com/blog/archives/tag/sprox/feed" rel="self" type="application/rss+xml" />
	<link>http://percious.com/blog</link>
	<description>pythonic musings of a mountaineer</description>
	<lastBuildDate>Fri, 19 Nov 2010 22:50:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Pycon 2009</title>
		<link>http://percious.com/blog/archives/27</link>
		<comments>http://percious.com/blog/archives/27#comments</comments>
		<pubDate>Wed, 04 Feb 2009 23:33:42 +0000</pubDate>
		<dc:creator>percious</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQLAlchemy]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Sprint]]></category>
		<category><![CDATA[Sprox]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Turbogears]]></category>
		<category><![CDATA[grok]]></category>
		<category><![CDATA[nose]]></category>
		<category><![CDATA[nosetests]]></category>
		<category><![CDATA[pycon]]></category>
		<category><![CDATA[tg2]]></category>
		<category><![CDATA[toscawidgets]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://percious.com/blog/archives/27</guid>
		<description><![CDATA[
So, Pycon registration has been up for a few days, I will be speaking both on and off-podium (read: open space) and providing assistance to and presenting tutorials.  Here is a run down of what I am planning in case you wanted a little bit more in-depth information.
Tutorials:
Turbogears2 Beginner and Intermediate:
I will be assisting Mark [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://us.pycon.org/common/img/logo-sitemasthead.gif" height="120" width="328" /></p>
<p>So, Pycon registration has been up for a few days, I will be speaking both on and off-podium (read: open space) and providing assistance to and presenting tutorials.  Here is a run down of what I am planning in case you wanted a little bit more in-depth information.</p>
<p><em>Tutorials:</em></p>
<p><strong>Turbogears2 <a href="http://us.pycon.org/2009/tutorials/schedule/1AM5">Beginner</a> and <a href="http://us.pycon.org/2009/tutorials/schedule/1PM5">Intermediate</a></strong>:</p>
<p>I will be assisting <a href="http://compoundthinking.com/blog/">Mark Ramm</a> by giving individuals help installing and using the new TurboGears2 framework.  Mark is an experienced tutorial presenter, an expert in the technology, and in general a fun character to spend a few hours with.  When you leave his tutorials you should expect to have a working version of TG2 on your machine, along with an understanding of Model, View, and Controller paradigms.  Middleware, Forms, and REST will also be covered.  One note, if you are getting started with TG2, it&#8217;s best to have it installed and running if you plan to attend only the Intermediate Section.  We will not be going over installation in the second-half.</p>
<p><a href="http://us.pycon.org/2009/tutorials/schedule/2AM3"> </a><strong><a href="http://us.pycon.org/2009/tutorials/schedule/2AM3">Toscawidgets: Test Driven Modular Ajax</a>:</strong></p>
<p>I am presenting this tutorial which will describe how to use the valuable Toscawidgets package to create web content.  If you are currently use WSGI technology, and are interested in creating reusable, modular web content, this is a perfect way to get started.  I will show you how to configure TW middleware to work with pylons (which is applicable to other frameworks like repoze.bfg, paste, or even plone/Grok).  I will then describe how you might use this middleware to generate web forms.  The last few hours of class will be devoted to using the JavaScript utilities of TW to create an Ajaxified website, and test it using YUITest.</p>
<p><a href="http://us.pycon.org/2009/tutorials/schedule/2PM5"><strong>The Big F&#8217;ing Tutorial: Development Using the <tt class="docutils literal"><span class="pre">repoze.bfg</span></tt> Web Framework</strong></a></p>
<p>I will assist/present with <a href="http://blog.repoze.org/">Chris McDonough</a> about this up-and-coming framework who&#8217;s goals are to utilize bits of the zope 3 framework, wsgi, and new technologies to make a lighting-fast web server.  Those of you who are familiar with Zope technologies may be interested to find how nicely some of the familiar bits of zope are integrated with wsgi with repoze.bfg.</p>
<p><em> Presentations:</em><span style="display: inline-table" id="proposal_link_92"><span style="display: table-cell; padding-left: 5px"></span></span></p>
<p><strong><span style="display: inline-table" id="proposal_link_92"><span style="display: table-cell; padding-left: 5px">Using Sphinx and Doctests to provide Robust Documentation</span></span></strong></p>
<p>This is a 1/2 hour slot which describes how you can integrate tested documentation with your source code&#8230; with sanity!  I go over a quick install of <a href="http://sphinx.pocoo.org/">Sphinx</a>, and use some screencasts to demenstrate how to add, run, and display doctests using it.</p>
<p><strong>Open Space:<span style="display: table-cell; padding-left: 5px">Agile Development with<a href="http://www.sqlalchemy.org"> SQLAlchemy</a> and Python Testing Tools</span></strong></p>
<p>I really enjoy giving this talk, and even though it was not accepted as a formal talk, I will find a venue by way of Open Space to express my knowledge of Testing, SA, and Nose.  I have given this talk a few times now, and it&#8217;s fairly polished.  My presentation, while on some dry topics, won&#8217;t put you to sleep.  Carefully prepared screencasts and photograph-punctuated slides makes the 45 minutes breeze by.  Questioneers/Hecklers welcome!</p>
<p><em> Sprint Topics</em></p>
<p>I want to spend some time with the Dispatch of TG2, and probably push Sprox further a bit.  If you are just starting with TG, please feel free to contribute.  Sprinting is a great way to learn a lot from the experts in the domain.  We usually do a meet-greet-install the night before the sprints.  Oh, and I&#8217;ve been known to provide refreshments to all of our sprinting hordes (read: FREE BEER).</p>
<p>So, I hope to see all of you there!  If you see me in the hall, feel free to introduce yourself and tell me what you are using Python for!</p>
]]></content:encoded>
			<wfw:commentRss>http://percious.com/blog/archives/27/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Coding Binge</title>
		<link>http://percious.com/blog/archives/18</link>
		<comments>http://percious.com/blog/archives/18#comments</comments>
		<pubDate>Tue, 27 Jan 2009 23:20:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Dojo]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[SQLAlchemy]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Sprint]]></category>
		<category><![CDATA[Sprox]]></category>
		<category><![CDATA[Turbogears]]></category>
		<category><![CDATA[TwTools]]></category>
		<category><![CDATA[tgext]]></category>

		<guid isPermaLink="false">http://percious.com/blog/archives/18</guid>
		<description><![CDATA[            var so = new SWFObject(\\'http://showmedo.com/static/flv/flvplayer.swf\\',\\'mpl\\',\\'636\\',\\'496\\',\\'7\\');        so.addParam("allowfullscreen","true");        so.addVariable("enablejs","true");  so.addVariable("file","http://videos3.showmedo.com/ShowMeDos/pythonOzsvaldWingIDEIntro.flv");    so.addVariable("image","http://videos3.showmedo.com/ShowMeDos/screenshots/pythonOzsvaldWingIDEIntro.jpg");    so.write(\\'player\\');    
I haven&#8217;t written to the blog in a while.  [...]]]></description>
			<content:encoded><![CDATA[<p>    <script type="text/javascript">        var so = new SWFObject(\\'http://showmedo.com/static/flv/flvplayer.swf\\',\\'mpl\\',\\'636\\',\\'496\\',\\'7\\');        so.addParam("allowfullscreen","true");        so.addVariable("enablejs","true");  so.addVariable("file","http://videos3.showmedo.com/ShowMeDos/pythonOzsvaldWingIDEIntro.flv");    so.addVariable("image","http://videos3.showmedo.com/ShowMeDos/screenshots/pythonOzsvaldWingIDEIntro.jpg");    so.write(\\'player\\');    </script></p>
<p>I haven&#8217;t written to the blog in a while.  Quite frankly, I&#8217;ve been busy.  In the last 30 days, I have released 3 software new packages, updated 1, deprecated 1, participated in a sprint that lasted a virtual 2 weeks, closed countless tickets, and pushed forward TG2 functionality.</p>
<p>TG2b4 was released last Saturday.  This was mostly a bug-fix release, but b3 is where the new functionality really came into the scene.  TG2b3 is the first build to include <a href="http://sprox.org">Sprox</a>, a new library for schema-generated widget generation.  Sprox is the offspring of DBSprockets.  I decided I liked the declarative part of DBSprockets so much I wanted to spin it off as it&#8217;s own entity.  Sprox looses DBSprocket&#8217;s table-based dependency, utilizing the mapping provided by SQLAlchemy.  I realized that much of DBSprocket&#8217;s code was doing precisely what SQLSoup was designed to do, and decided to focus my efforts on making and extremely configurable widget base.  The result was a considerable removal of the cruft that was associated with DBSprockets.  Sprox releases with an excellent documentation base provided by Sphinx.</p>
<p>There has been a bit of resistance to Sprox, people were/are confused/upset about my providing yet more options for schema based widget generation.  The fact is I have yet to find anything that performs as well as Sprox from a developer/speed standpoint, and I needed to provide our TurboGears user base with a better way to administrate their site, and also allow them to use that tool component-wise in their system.  I think this method for developing widgets is well done in other frameworks, and we need a solid answer to this problem.  <a href="http://sprox.org">Sprox</a> is just that.</p>
<p>The next step was to re-work Catwalk to use Sprox.  This took a little effort, and I put in RESTful URLs while I was at it, but struggled with making the URLs work within TG2&#8217;s dispatch system.  The result was as close to REST as you can get without conforming to a set <a href="http://microformats.org/wiki/rest/urls">standard</a>.</p>
<p>The result of hacking REST into Catwalk got me thinking, and I decided to implement content-type dispatch as well as RESTful dipatch in TG2.  I went back for another round on Catwalk, and converted it over to the standard.</p>
<p>I&#8217;ve also been toying around with <a href="http://www.dojotoolkit.org">Dojo</a> at NREL.  I&#8217;m pretty much done with ExtJS due to licensing issues, a not-so-hot codebase, and weak support from IRC.  It&#8217;s bad when you go on to ask a question on the channel as a 6 month-user of a software project and end up spending all your time answering everyone else&#8217;s questions (as the most experienced person in the room).  Something must be said for an organization that does not push paid consulting as a primary focus on their website&#8230;  #dojo has been an exceptional resource for getting my work done.  Those guys know their software, and lend a great hand to help you with it.</p>
<p>Back to the topic at hand&#8230; I was able to shoe-horn Dojo into Sprox with little effort, and implemented DojoCatwalk, which worked, but was ultimately not what I wanted.  What I really wanted was configurability.  I started work on tgext.admin, which was supposed to provide enough functionality to replace tgcrud, a command to auto-create crud in your own TG application.  To support <a href="http://http://www.turbogears.org/2.0/docs/main/Extensions/Admin/index.html?highlight=configuration">tgext.admin</a>, I created a new package called tgext.crud, which provided a <a href="http://code.google.com/p/tgtools/source/browse/projects/tgext.crud/trunk/tgext/crud/controller.py">CrudRestController</a>, which is a simple way of providing crud for any object in your model.  AdminController combines this functionality with that of Mark&#8217;s <a href="http://www.turbogears.org/2.0/docs/main/Controllers.html?highlight=lookup">lookup</a> code to provide a fast, configurable set of tables/forms/etc for all objects in your model.  AdminController takes a declarative AdminConfig as input which provides a consistent way to create your administrative toolset.  Did I mention it does Dojo tables with ajax loading?  Yeah.</p>
<p>I&#8217;m not done with this binge yet.  Catwalk is going to mutate one more time before I&#8217;m through with it.  It is going to become a default-configured AdminController specifically designed to work within the context of a quickstarted TG2 application.  I had one blocker ticket which was solved last weekend, so it&#8217;s time to get Catwalk good and finished.</p>
]]></content:encoded>
			<wfw:commentRss>http://percious.com/blog/archives/18/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

