<?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>baseplane - technology platforms &#187; generation</title>
	<atom:link href="http://baseplane.com/category/generation/feed/" rel="self" type="application/rss+xml" />
	<link>http://baseplane.com</link>
	<description>Technology Platforms, Architecture and Kits for all your codes by Ryan Christensen</description>
	<lastBuildDate>Thu, 12 Nov 2009 05:10:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>REST Pattern</title>
		<link>http://baseplane.com/2008/06/30/rest-pattern/</link>
		<comments>http://baseplane.com/2008/06/30/rest-pattern/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 03:00:19 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[baseplane]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[mob]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[architect]]></category>
		<category><![CDATA[ontology]]></category>
		<category><![CDATA[platform]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[semantic]]></category>
		<category><![CDATA[unique]]></category>
		<category><![CDATA[uri]]></category>
		<category><![CDATA[web3]]></category>

		<guid isPermaLink="false">http://baseplane.com/?p=54</guid>
		<description><![CDATA[
UNIVERSITY OF CALIFORNIA, IRVINE
Architectural Styles and
the Design of Network-based Software Architectures
DISSERTATION
submitted in partial satisfaction of the requirements for the degree of
DOCTOR OF PHILOSOPHY
in Information and Computer Science
by
Roy Thomas Fielding
2000
Dissertation Committee:
Professor Richard N. Taylor, Chair
Professor Mark S. Ackerman
Professor David S. Rosenblum

PDF Editions

1-column for viewing online
2-column for printing

Table of Contents

Dedication
Acknowledgments
Curriculum Vitae
Abstract of the Dissertation
Introduction
CHAPTER 1: Software Architecture

1.1 [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>UNIVERSITY OF CALIFORNIA, IRVINE</p>
<h1>Architectural Styles and<br />
the Design of Network-based Software Architectures</h1>
<p>DISSERTATION</p>
<p>submitted in partial satisfaction of the requirements for the degree of</p>
<p>DOCTOR OF PHILOSOPHY</p>
<p>in Information and Computer Science</p>
<p>by</p>
<p><a href="http://www.ics.uci.edu/%7Efielding/">Roy Thomas Fielding</a></p>
<p>2000</p>
<p>Dissertation Committee:<br />
Professor Richard N. Taylor, Chair<br />
Professor Mark S. Ackerman<br />
Professor David S. Rosenblum</p>
</div>
<h2><a name="pdf">PDF Editions</a></h2>
<dl>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/fielding_dissertation.pdf">1-column for viewing online</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/fielding_dissertation_2up.pdf">2-column for printing</a></dd>
</dl>
<h2><a name="toc">Table of Contents</a></h2>
<dl>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/dedication.htm">Dedication</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/acknowledgments.htm">Acknowledgments</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/fielding_cv_2000.htm">Curriculum Vitae</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/abstract.htm">Abstract of the Dissertation</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/introduction.htm">Introduction</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/software_arch.htm">CHAPTER 1: Software Architecture</a>
<dl>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/software_arch.htm#sec_1_1">1.1 Run-time Abstraction</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/software_arch.htm#sec_1_2">1.2 Elements</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/software_arch.htm#sec_1_3">1.3 Configurations</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/software_arch.htm#sec_1_4">1.4 Properties</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/software_arch.htm#sec_1_5">1.5 Styles</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/software_arch.htm#sec_1_6">1.6 Patterns and Pattern Languages</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/software_arch.htm#sec_1_7">1.7 Views</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/software_arch.htm#sec_1_8">1.8 Related Work</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/software_arch.htm#sec_1_9">1.9 Summary</a></dd>
</dl>
</dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_app_arch.htm">CHAPTER 2: Network-based Application Architectures</a>
<dl>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_app_arch.htm#sec_2_1">2.1 Scope</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_app_arch.htm#sec_2_2">2.2 Evaluating the Design of Application Architectures</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_app_arch.htm#sec_2_3">2.3 Architectural Properties of Key Interest</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_app_arch.htm#sec_2_4">2.4 Summary</a></dd>
</dl>
</dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm">CHAPTER 3: Network-based Architectural Styles</a>
<dl>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_1">3.1 Classification Methodology</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_2">3.2 Data-flow Styles</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_3">3.3 Replication Styles</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_4">3.4 Hierarchical Styles</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_5">3.5 Mobile Code Styles</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_6">3.6 Peer-to-Peer Styles</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_7">3.7 Limitations</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_8">3.8 Related Work</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#sec_3_9">3.9 Summary</a></dd>
</dl>
</dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/web_arch_domain.htm">CHAPTER 4: Designing the Web Architecture: Problems and Insights</a>
<dl>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/web_arch_domain.htm#sec_4_1">4.1 WWW Application Domain Requirements</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/web_arch_domain.htm#sec_4_2">4.2 Problem</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/web_arch_domain.htm#sec_4_3">4.3 Approach</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/web_arch_domain.htm#sec_4_4">4.4 Summary</a></dd>
</dl>
</dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm">CHAPTER 5: Representational State Transfer (REST)</a>
<dl>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#sec_5_1">5.1 Deriving REST</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#sec_5_2">5.2 REST Architectural Elements</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#sec_5_3">5.3 REST Architectural Views</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#sec_5_4">5.4 Related Work</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#sec_5_5">5.5 Summary</a></dd>
</dl>
</dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/evaluation.htm">CHAPTER 6: Experience and Evaluation</a>
<dl>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/evaluation.htm#sec_6_1">6.1 Standardizing the Web</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/evaluation.htm#sec_6_2">6.2 REST Applied to URI</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/evaluation.htm#sec_6_3">6.3 REST Applied to HTTP</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/evaluation.htm#sec_6_4">6.4 Technology Transfer</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/evaluation.htm#sec_6_5">6.5 Architectural Lessons</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/evaluation.htm#sec_6_6">6.6 Summary</a></dd>
</dl>
</dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/conclusions.htm">Conclusions</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/references.htm">References</a></dd>
</dl>
<h2><a name="lof">List of Figures</a></h2>
<dl>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#fig_5_1">Figure 5-1. Null Style</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#fig_5_2">Figure 5-2. Client-Server</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#fig_5_3">Figure 5-3. Client-Stateless-Server</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#fig_5_4">Figure 5-4. Client-Cache-Stateless-Server</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#fig_5_5">Figure 5-5. Early WWW Architecture Diagram</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#fig_5_6">Figure 5-6. Uniform-Client-Cache-Stateless-Server</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#fig_5_7">Figure 5-7. Uniform-Layered-Client-Cache-Stateless-Server</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#fig_5_8">Figure 5-8. REST</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#fig_5_9">Figure 5-9. REST Derivation by Style Constraints</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#fig_5_10">Figure 5-10. Process View of a REST-based Architecture</a></dd>
</dl>
<h2><a name="lot">List of Tables</a></h2>
<dl>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#tab_3_1">Table 3-1. Evaluation of Data-flow Styles for Network-based Hypermedia</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#tab_3_2">Table 3-2. Evaluation of Replication Styles for Network-based Hypermedia</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#tab_3_3">Table 3-3. Evaluation of Hierarchical Styles for Network-based Hypermedia</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#tab_3_4">Table 3-4. Evaluation of Mobile Code Styles for Network-based Hypermedia</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#tab_3_5">Table 3-5. Evaluation of Peer-to-Peer Styles for Network-based Hypermedia</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/net_arch_styles.htm#tab_3_6">Table 3-6. Evaluation Summary</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#tab_5_1">Table 5-1. REST Data Elements</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#tab_5_2">Table 5-2. REST Connectors</a></dd>
<dd><a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/rest_arch_style.htm#tab_5_3">Table 5-3. REST Components</a></dd>
</dl>
<hr size="1" noshade="noshade" />
<table border="0" width="100%">
<tbody>
<tr>
<td align="left" valign="top"><em>[<a rel="next" href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/dedication.htm">Next</a>]</em></td>
<td align="center" valign="top">© <a href="http://www.ics.uci.edu/%7Efielding/">Roy Thomas Fielding</a>, 2000.  All rights reserved.</td>
<td align="right" valign="top"><em>[<a href="http://www.ics.uci.edu/%7Efielding/pubs/dissertation/faq.htm">How to reference this work.</a>]</em></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://baseplane.com/2008/06/30/rest-pattern/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kepler a Lua Based Web Development Framework</title>
		<link>http://baseplane.com/2008/06/22/kepler-a-lua-based-web-development-framework/</link>
		<comments>http://baseplane.com/2008/06/22/kepler-a-lua-based-web-development-framework/#comments</comments>
		<pubDate>Sun, 22 Jun 2008 22:45:05 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[announcement]]></category>
		<category><![CDATA[baseplane]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[base]]></category>
		<category><![CDATA[based]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[kit]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[platform]]></category>
		<category><![CDATA[table]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://baseplane.com/?p=53</guid>
		<description><![CDATA[Lua is a very useful language for many things.  Extending core base code with modules and add-ons have made it very useful in game development but since Lua is table-based it can also be easily applied to web development. Well that time has come, See the Kepler Project for a nice collection of modules that [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.keplerproject.org/" target="_blank"><img class="alignright" style="float: right;" src="http://farm4.static.flickr.com/3204/2601483827_a3764cfe7c_o.gif" alt="" width="275" height="52" /></a>Lua is a very useful language for many things.  Extending core base code with modules and add-ons have made it very useful in game development but since Lua is table-based it can also be easily applied to web development. Well that time has come, See the Kepler Project for a nice collection of modules that make a good start for web development with Lua.</p>
<p style="padding-left: 30px;">Kepler is an open source platform that brings the power of <a class="local" href="http://www.keplerproject.org/en/Lua">Lua</a> to web development. There are a number of great Web development platforms out there but none balances portability, size, power and extensibility quite like Kepler does:</p>
<ul style="padding-left: 30px;">
<li>Being extremely portable and light means that it can be installed in very constrained devices as much as in providers that limit the amount of RAM and processing time for your scripts.</li>
<li>If you ever heard of the customization features of games such as <a href="http://www.worldofwarcraft.com/">World of Warcraft</a>, think about all that power applied to web scripting.</li>
<li>Being extensible means both that we can extend the platform by adding new modules and that the users of the applications that you build can extend those applications using Lua.</li>
</ul>
<p style="padding-left: 30px;">Kepler was created by Fábrica Digital and PUC-Rio and is continuously being improved by a core team of commiters (see <a class="local" href="http://www.keplerproject.org/en/Dev_Team">Dev Team</a>) and lots of contributors (see <a class="local" href="http://www.keplerproject.org/en/Credits">Credits</a>).</p>
<p style="padding-left: 30px;">Kepler is free software and uses the MIT license model: it can be used for both academic and commercial purposes at absolutely no cost. See the Kepler <a class="local" href="http://www.keplerproject.org/en/License">License</a> for more details.</p>
<p>Kepler is a platform that uses <a href="http://www.luarocks.org/">LuaRocks</a> to offer <a class="local" href="http://www.keplerproject.org/en/Modules">Modules</a> such as:</p>
<ul>
<li>Page based and MVC XHTML generation (WSAPI, CGILua and Orbit)</li>
<li>SQL and XML processing (LuaSQL and LuaExpat)</li>
<li>Hash (MD5) and a pair crypt/decrypt</li>
<li>Zip files reading (LuaZip)</li>
</ul>
<p>The Lua community is constantly contributing with more modules that can be used with the Kepler <a class="local" href="http://www.keplerproject.org/en/Architecture">Architecture</a>. Most of those modules are catalogued on <a href="http://luaforge.net/">LuaForge</a> and new ones keep coming.</p>
<h2>Unix installation</h2>
<p>Please check <a class="local" href="http://www.keplerproject.org/en/UNIX_Installation">UNIX Installation</a> for a detailed view of how to install Kepler on Unix machines (including OSX).</p>
<h2>Windows installation</h2>
<p>Installing Kepler on Windows does not require any C compiler and should work on any Windows machine with internet access.</p>
<ol>
<li>Download <a href="http://luarocks.org/">LuaRocks</a> and install it using <code>install /SCRIPTS c:\luarocks\0.5.2</code></li>
<li>Add the LuaRocks scripts dir to your system path (the same directory used in the <code>/SCRIPTS</code> parameter above)</li>
<li>Install Kepler and Xavante using <code>luarocks install kepler-xavante</code></li>
<li>Configure everything using <code>setup-kepler</code> and following the instructions</li>
<li>Use <code>xavante</code> to run Xavante as a tray bar application, or use &#8216;xavante_start&#8217; to run Xavante     from the command prompt. Another option is to run Kepler using CGI</li>
</ol>
<p>Once Kepler is running, you might want to look at those pages:</p>
<ul>
<li><a class="local" href="http://www.keplerproject.org/en/Hello_World">Hello World</a> will tell you how to write a simple application</li>
<li><a class="local" href="http://www.keplerproject.org/en/Using_a_Database">Using a Database</a> will tell you how to use some of the popular databases with Kepler.</li>
<li><a class="local" href="http://www.keplerproject.org/en/Configuring_Web_Servers">Configuring Web Servers</a> will tell you how to use Kepler with some specific web servers.</li>
</ul>
<p>The Kepler 1.1 Unix installer can be downloaded from its <a href="http://luaforge.net/frs/?group_id=104">downloads</a> page. Check the <a class="local" href="http://www.keplerproject.org/en/Installation">Installation</a> page for more details and for the Windows installation instructions (using LuaRocks).</p>
<p>If you need the binaries for specifics <a class="local" href="http://www.keplerproject.org/en/Modules">Modules</a> you can also get them from LuaForge, on the module respective project page.</p>
]]></content:encoded>
			<wfw:commentRss>http://baseplane.com/2008/06/22/kepler-a-lua-based-web-development-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Restlet RESTful Lightweight Kit for Java</title>
		<link>http://baseplane.com/2008/06/20/restlet-restful-lightweight-kit-for-java/</link>
		<comments>http://baseplane.com/2008/06/20/restlet-restful-lightweight-kit-for-java/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 03:24:36 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[baseplane]]></category>
		<category><![CDATA[formal]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[market formats]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[toolkits]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jax]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[RESTful]]></category>
		<category><![CDATA[Restlet]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[servlet]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://baseplane.com/?p=52</guid>
		<description><![CDATA[Finally rest for all that boilerplate in Java.  At each turn of lots of Java frameworks you are bombarded with layers.  I felt this long ago and see it in the developers eyes that work with Java.  Java can be easy, it can be RESTful and it will make you look sharp.

Lightweight REST framework for [...]]]></description>
			<content:encoded><![CDATA[<p>Finally rest for all that boilerplate in Java.  At each turn of lots of Java frameworks you are bombarded with layers.  I felt this long ago and see it in the developers eyes that work with Java.  Java can be easy, it can be RESTful and it will make you look sharp.</p>
<p style="padding-left: 30px;"><a href="http://www.restlet.org/"><img src="http://farm4.static.flickr.com/3283/2597021628_8bbf4d5baa_o.gif" alt="" width="200" height="71" /></a></p>
<p style="padding-left: 30px;"><a href="http://www.restlet.org/" target="_blank"><strong>Lightweight REST framework for Java</strong></a></p>
<p class="welcome" style="padding-left: 30px;">Do you want to embrace the architecture of the Web and benefit from its simplicity and scalability? Leverage our innovative REST engine and start blending your Web Sites and Web Services into uniform Web Applications!</p>
<p class="welcome">Java is making things more lightweight now with lots of emerging kits that compete with other web ready platforms like Python, Ruby, .NET, PHP etc. After this many years things get bloated and need to be simplified.  I think this will start winning people over in this direction.</p>
]]></content:encoded>
			<wfw:commentRss>http://baseplane.com/2008/06/20/restlet-restful-lightweight-kit-for-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Common Baseplane Method to Caching &#8212; memcached</title>
		<link>http://baseplane.com/2008/05/27/the-common-baseplane-method-to-caching-memcached/</link>
		<comments>http://baseplane.com/2008/05/27/the-common-baseplane-method-to-caching-memcached/#comments</comments>
		<pubDate>Tue, 27 May 2008 18:11:43 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[baseplane]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rom]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[toolkits]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[apis]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[common]]></category>
		<category><![CDATA[layers]]></category>
		<category><![CDATA[memcached]]></category>

		<guid isPermaLink="false">http://baseplane.com/?p=51</guid>
		<description><![CDATA[If you have ever worked on a massively high trafficked website, you know that cache is very important to keeping the server count down and being a superhero to your database servers.  Cache can be bad and overly optimized but when you hit a certain threshold, relational databases, databases that are dimension modelled for [...]]]></description>
			<content:encoded><![CDATA[<p>If you have ever worked on a massively high trafficked website, you know that cache is very important to keeping the server count down and being a superhero to your database servers.  Cache can be bad and overly optimized but when you hit a certain threshold, relational databases, databases that are dimension modelled for data warehouse, and even server resources get exhausted.  At that point you have two options, buy more servers, or more likely, cache read data.</p>
<p>Each platform has their own way to do this, but there is a common baseplane way to do caching, yes even in .NET.  That is with memcached.  <strong><a href="http://www.danga.com/memcached/apis.bml" target="_blank">Memcached </a></strong>is a very common and useful tool that makes caching data and cache layers in an application something that can be the same on every platform. The benefit of using memcached is it is open, common and<a href="http://www.danga.com/memcached/apis.bml" target="_blank"> it has APIs for nearly every popular web development platform</a> (and can be wired in easily to platforms that don&#8217;t have their own cache mechanism).  Why write your caching layer specific to a certain platform when you can memcache?</p>
<p>If you write high performance web apps and don&#8217;t memcache, I feel bad for your server budget and your late nights when that ad buy hits or something popular on your site becomes all the rave.</p>
<h2>Perl API</h2>
<p>An object-oriented Perl module can be <a href="http://search.cpan.org/dist/Cache-Memcached/">found on CPAN</a> as <tt>Cache::Memcached</tt> or <a href="http://code.sixapart.com/svn/memcached/trunk/api/perl/"> in Subversion</a> (<a href="http://code.sixapart.com/svn/memcached/trunk/api/perl/ChangeLog">ChangeLog</a>). (GPL/Artistic)</p>
<p>The Perl API takes advantage of the server&#8217;s opaque flag support and sets its &#8220;complex&#8221; flag whenever the object being stored or retrieved isn&#8217;t a plain scalar.  In that case, the <tt>Storable</tt> module is used to freeze and thaw the value automatically going in and out of the memcached.</p>
<p>There is also Cache::Memcached::Fast&#8212;another Perl client written in C, largely compatible with the original Cache::Memcached. Available on CPAN at <a href="http://search.cpan.org/dist/Cache-Memcached-Fast/">http://search.cpan.org/dist/Cache-Memcached-Fast/</a>.</p>
<h2>PHP API</h2>
<p>There are tons of PHP libraries available, in different conditions.  But it now seems there&#8217;s an official one:</p>
<ul>
<li><a href="http://pecl.php.net/package/memcache">PHP PECL memcached client</a> &#8212; official PHP client</li>
</ul>
<h2>Python API</h2>
<p>The Python client we&#8217;d previously released was just a prototype, and we don&#8217;t have regular Python programmers on hand. The folks at Tummy.com have took over maintenance. See <a href="ftp://ftp.tummy.com/pub/python-memcached/">ftp://ftp.tummy.com/pub/python-memcached/</a> for the latest versions.</p>
<h2>Ruby API</h2>
<ul>
<li><a href="http://www.deveiate.org/code/Ruby-MemCache.html">http://www.deveiate.org/code/Ruby-MemCache.html</a></li>
<li>gem install memcache-client</li>
<li><a href="http://blog.evanweaver.com/files/doc/fauna/memcached/">http://blog.evanweaver.com/files/doc/fauna/memcached/</a>. C backed client wrapping libmemcached.</li>
</ul>
<h2>Java API</h2>
<p>A Java API is maintained by <a href="mailto:greg@meetup.com">Greg Whalin</a> from <a href="http://www.meetup.com/">Meetup.com</a>.  You can find that library here:</p>
<ul>
<li><a href="http://www.whalin.com/memcached/">http://www.whalin.com/memcached/</a> &#8212; Java API for memcached</li>
</ul>
<p>An improved Java API maintained by Dustin Sallings is also available. Aggressively optimised, ability to run async, supports binary protocol, etc. See site for details:</p>
<ul>
<li><a href="http://bleu.west.spy.net/%7Edustin/projects/memcached/">http://bleu.west.spy.net/~dustin/projects/memcached/</a> &#8212; Improved Java API for memcached</li>
</ul>
<h2>C# API</h2>
<p>There are multiple C# APIs:</p>
<ul>
<li><a href="https://sourceforge.net/projects/memcacheddotnet/">https://sourceforge.net/projects/memcacheddotnet/</a></li>
<li><a href="http://www.codeplex.com/EnyimMemcached/">http://www.codeplex.com/EnyimMemcached/</a> &#8211; Client developed in .NET 2.0 keeping performance and extensibility in mind. (Supports consistent hashing.)</li>
<li><a href="http://code.google.com/p/beitmemcached/">http://code.google.com/p/beitmemcached/</a> &#8211; Client developed by BeIT with many new features.</li>
</ul>
<h2>C API</h2>
<p>Multiple C libraries for memcached exist:</p>
<ul>
<li><a href="http://www.outoforder.cc/projects/libs/apr_memcache/">apr_memcache</a> by Paul Querna; Apache Software License version 2.0</li>
<li><a href="http://tangent.org/552/libmemcached.html">libmemcached</a> by Brian Aker; BSD license. This is a new library, under heavy development.</li>
<li><a href="http://people.freebsd.org/%7Eseanc/libmemcache/">libmemcache</a> by Sean Chittenden; BSD license. This is the original C library. It is no longer under active development. You should try libmemcached instead.</li>
</ul>
<h2>Postgres API</h2>
<p>The pgmemcache project allows you to access memcache servers from Postgresql Stored Procedures and Triggers.   More details and downloads are available at:</p>
<ul>
<li><a href="http://pgfoundry.org/projects/pgmemcache/">http://pgfoundry.org/projects/pgmemcache/</a></li>
</ul>
<h2>Chicken Scheme</h2>
<ul>
<li><a href="http://chicken.wiki.br/memcached">http://chicken.wiki.br/memcached</a> &#8212; Chicken Scheme library</li>
</ul>
<h2>Lua</h2>
<ul>
<li><a href="http://luamemcached.luaforge.net/">http://luamemcached.luaforge.net/</a> &#8212; Lua library</li>
</ul>
<h2>MySQL API</h2>
<p>The memcache_engine allows memcache to work as a storage engine to MySQL. This means that you can SELECT/UPDATE/INSERTE/DELETE from it as though it is a table in MySQL.</p>
<ul>
<li><a href="http://tangent.org/index.pl?node_id=506">memcache_engine</a></li>
</ul>
<p>A set of MySQL UDFs (user defined functions) to work with memcached using libmemcached.</p>
<ul>
<li><a href="http://tangent.org/586/Memcached_Functions_for_MySQL.html">MySQL UDFs for memcached</a></li>
</ul>
<h2>Protocol</h2>
<p>To write a new client, check out the <a href="http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt">protocol docs</a>.  Be aware that the most important part of the client is the hashing across multiple servers, based on the key, or an optional caller-provided hashing value.  Feel free to join the mailing list (or mail me directly) for help, inclusion in Subversion, and/or a link to your client from this site.</p>
<p>The best part, they support all good platforms and even Lua, and wisely they left out VB.NET, no worries, VB.NET&#8217;ers will never know.  Only kidding&#8230;</p>
<p><strong>Finally, memcached is distributed, most cache layers included with platforms listed above are in process and per machine.  If you are running your code on a webfarm memcached is the only way to go.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://baseplane.com/2008/05/27/the-common-baseplane-method-to-caching-memcached/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Baseplane Tool: Tenjin Templating Library (pyTenjin, jsTenjin, phpTenjin, rbTenjin, plTenjin)</title>
		<link>http://baseplane.com/2008/04/07/baseplane-tool-tenjin-templating-library-pytenjin-jstenjin-phptenjin-rbtenjin-pltenjin/</link>
		<comments>http://baseplane.com/2008/04/07/baseplane-tool-tenjin-templating-library-pytenjin-jstenjin-phptenjin-rbtenjin-pltenjin/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 17:17:09 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[baseplane]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[market formats]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[toolkits]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[jstenjin]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[phptenjin]]></category>
		<category><![CDATA[pltenjin]]></category>
		<category><![CDATA[pytenjin]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rbtenjin]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[tenjin]]></category>

		<guid isPermaLink="false">http://baseplane.com/?p=48</guid>
		<description><![CDATA[Tenjin is a great templating library that gets not only cross platform but baseplane ability to make templating very similiar (and FAST) across many languages.    pyTenjin and phpTenjin is currently what I am using but there are executions for Ruby, Perl and Javascript.
Here is a list of the Tenjin Templating engines:

pyTenjin
phpTenjin
rbTenjin
jsTenjin
plTenjin


 Changes
 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kuwata-lab.com/tenjin/" target="_blank">Tenjin is a great templating library </a>that gets not only cross platform but baseplane ability to make templating very similiar (and FAST) across many languages.    pyTenjin and phpTenjin is currently what I am using but there are executions for Ruby, Perl and Javascript.</p>
<p><strong>Here is a list of the Tenjin Templating engines:</strong></p>
<ul>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=201594" target="_blank">pyTenjin</a></li>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=201594" target="_blank">phpTenjin</a></li>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=201594" target="_blank">rbTenjin</a></li>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=201594" target="_blank">jsTenjin</a></li>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=201594" target="_blank">plTenjin</a></li>
</ul>
<dl class="dl1">
<dt class="dt1"> Changes</dt>
<dd class="dd1"> (<a href="http://www.kuwata-lab.com/tenjin/pytenjin-CHANGES.txt">Python</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/rbtenjin-CHANGES.txt">Ruby</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/phptenjin-CHANGES.txt">PHP</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/pltenjin-CHANGES.txt">Perl</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/jstenjin-CHANGES.txt">JavaScript</a>) </dd>
<dt class="dt1"> User&#8217;s Guide</dt>
<dd class="dd1"> (<a href="http://www.kuwata-lab.com/tenjin/pytenjin-users-guide.html">Python</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/rbtenjin-users-guide.html">Ruby</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/phptenjin-users-guide.html">PHP</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/pltenjin-users-guide.html">Perl</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/jstenjin-users-guide.html">JavaScript</a>) </dd>
<dt class="dt1"> FAQ</dt>
<dd class="dd1"> (<a href="http://www.kuwata-lab.com/tenjin/pytenjin-faq.html">Python</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/rbtenjin-faq.html">Ruby</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/phptenjin-faq.html">PHP</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/pltenjin-faq.html">Perl</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/jstenjin-faq.html">JavaScript</a>) </dd>
<dt class="dt1"> Examples</dt>
<dd class="dd1"> (<a href="http://www.kuwata-lab.com/tenjin/pytenjin-examples.html">Python</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/rbtenjin-examples.html">Ruby</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/phptenjin-examples.html">PHP</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/pltenjin-examples.html">Perl</a>) 	    (<a href="http://www.kuwata-lab.com/tenjin/jstenjin-examples.html">JavaScript</a>) </dd>
<dt class="dt1"> Presentation</dt>
<dd class="dd1"> <a href="http://www.kuwata-lab.com/presen/LL2007LT.pdf">2007 LL Spirit LightningTalk</a> (full-version) (Japanese)</dd>
</dl>
<p><strong>Here is what the template markup looks like:</strong></p>
<p><strong>This</strong></p>
<pre class="program">&lt;table&gt;
&lt;tbody&gt;
<strong>&lt;?py i = 0 ?&gt;</strong>
<strong>&lt;?py for item in ['&lt;foo&gt;', 'bar&amp;bar', '"baz"']: ?&gt;</strong>
<strong>&lt;?py     i += 1 ?&gt;</strong>
&lt;tr&gt;
&lt;td&gt;<strong>#{item}</strong>&lt;/td&gt;
&lt;td&gt;<strong>${item}</strong>&lt;/td&gt;
&lt;/tr&gt;
<strong>&lt;?py #end ?&gt;</strong>
&lt;tbody&gt;

&lt;/table&gt;</pre>
<p><strong>Produces This</strong></p>
<pre class="terminal">&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;<strong>&lt;foo&gt;</strong>&lt;/td&gt;
&lt;td&gt;<strong>&amp;lt;foo&amp;gt;</strong>&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;<strong>bar&amp;bar</strong>&lt;/td&gt;
&lt;td&gt;<strong>bar&amp;amp;bar</strong>&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;<strong>"baz"</strong>&lt;/td&gt;
&lt;td&gt;<strong>&amp;quot;baz&amp;quot;</strong>&lt;/td&gt;
&lt;/tr&gt;
&lt;tbody&gt;
&lt;/table&gt;</pre>
<p><strong>Here are some speed results</strong></p>
<table class="table1" border="1" cellspacing="0" summary="MacOS X 10.4 Tiger, Intel CoreDuo 1.83GHz, Memory 2GB">
<caption class="caption1"> MacOS X 10.4 Tiger, Intel CoreDuo 1.83GHz, Memory 2GB </caption>
<tbody>
<tr class="tr1">
<th class="th1">Language</th>
<th class="th1">Template Engine</th>
<th class="th1">Test#1(sec)</th>
<th class="th1">Test#2(sec)</th>
</tr>
<tr class="tr1">
<td class="td1" rowspan="8">Python(2.5.1)</td>
<td class="td1"><strong>pyTenjin</strong> (0.6.1)</td>
<td class="td1" align="right"><strong>6.96</strong></td>
<td class="td1" align="right"><strong>5.61</strong></td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://www.cheetahtemplate.org/">Cheetah</a> (2.0)</td>
<td class="td1" align="right">20.36</td>
<td class="td1" align="right">19.82</td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://www.djangoproject.com/documentation/templates/">Django</a> (0.9.5)</td>
<td class="td1" align="right">71.33</td>
<td class="td1" align="right">59.80</td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://www.djangoproject.com/documentation/templates/">Myghty</a> (1.1)</td>
<td class="td1" align="right">107.88</td>
<td class="td1" align="right">19.30</td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://www.kid-templating.org/">Kid</a> (0.9.6)</td>
<td class="td1" align="right">380.24</td>
<td class="td1" align="right">378.96</td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://genshi.edgewall.org/">Genshi</a> (0.4.4)</td>
<td class="td1" align="right">560.30</td>
<td class="td1" align="right">271.69</td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://www.makotemplates.org/">Mako</a> (0.1.9)</td>
<td class="td1" align="right">17.78</td>
<td class="td1" align="right">13.49</td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://webpy.org/templetor">Templetor</a> (web.py 0.22)</td>
<td class="td1" align="right">428.19</td>
<td class="td1" align="right">61.53</td>
</tr>
<tr class="tr1">
<td class="td1" rowspan="3">Ruby(1.8.6)</td>
<td class="td1"><strong>rbTenjin</strong> (0.6.0)</td>
<td class="td1" align="right"><strong>7.34</strong></td>
<td class="td1" align="right"><strong>4.52</strong></td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://modruby.net/en/index.rbx/eruby/whatis.html">eruby</a> (1.0.5)</td>
<td class="td1" align="right">12.29</td>
<td class="td1" align="right">11.53</td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/">ERB</a>(def_method) (Ruby1.8.6)</td>
<td class="td1" align="right">36.73</td>
<td class="td1" align="right">5.85</td>
</tr>
<tr class="tr1">
<td class="td1" rowspan="2">PHP(5.2.0)</td>
<td class="td1"><strong>phpTenjin</strong> (0.0.1)</td>
<td class="td1" align="right"><strong>5.39</strong></td>
<td class="td1" align="right"><strong>3.64</strong></td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://smarty.php.net/">Smarty</a> (2.6.18)</td>
<td class="td1" align="right">10.84</td>
<td class="td1" align="right">10.21</td>
</tr>
<tr class="tr1">
<td class="td1" rowspan="3">Perl(5.8.8)</td>
<td class="td1"><strong>plTenjin</strong> (0.0.1)</td>
<td class="td1" align="right"><strong>10.42</strong></td>
<td class="td1" align="right"><strong>5.72</strong></td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://template-toolkit.org/">Template-Toolkit</a>(XS) (2.18)</td>
<td class="td1" align="right">103.58</td>
<td class="td1" align="right">26.30</td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://html-template.sourceforge.net/">HTML::Template</a> (2.9)</td>
<td class="td1" align="right">46.70</td>
<td class="td1" align="right">30.21</td>
</tr>
<tr class="tr1">
<td class="td1">JS(spidermonkey)</td>
<td class="td1"><strong>jsTenjin</strong> (0.0.1)</td>
<td class="td1" align="right"><strong>19.00</strong></td>
<td class="td1" align="right"><strong>12.98</strong></td>
</tr>
<tr class="tr1">
<td class="td1">JS(Rhino, JDK5)</td>
<td class="td1"><strong>jsTenjin</strong> (0.0.1)</td>
<td class="td1" align="right"><strong>24.29</strong></td>
<td class="td1" align="right"><strong>19.15</strong></td>
</tr>
<tr class="tr1">
<td class="td1" rowspan="2">Java(JDK5)</td>
<td class="td1"><a href="http://velocity.apache.org/">Velocity</a> (1.4)</td>
<td class="td1" align="right">22.80</td>
<td class="td1" align="right">11.41</td>
</tr>
<tr class="tr1">
<td class="td1"><a href="http://velocity.apache.org/">Velocity</a> (1.5)</td>
<td class="td1" align="right">20.01</td>
<td class="td1" align="right">8.42</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://baseplane.com/2008/04/07/baseplane-tool-tenjin-templating-library-pytenjin-jstenjin-phptenjin-rbtenjin-pltenjin/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Code Generation != ORM, Code Generation IS for the Code Generation</title>
		<link>http://baseplane.com/2008/02/22/code-generation-orm-code-generation-is-for-the-code-generation/</link>
		<comments>http://baseplane.com/2008/02/22/code-generation-orm-code-generation-is-for-the-code-generation/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 03:48:23 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[baseplane]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[toolkits]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[code generation]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[rom]]></category>
		<category><![CDATA[structure]]></category>
		<category><![CDATA[teams]]></category>

		<guid isPermaLink="false">http://baseplane.com/2008/02/22/code-generation-orm-code-generation-is-for-the-code-generation/</guid>
		<description><![CDATA[Code generation is not ORM (Object Relational Mapping).  ORM is not code generation.
These are two separate ideas.  ORM is part-of code generation but code generation is super to ORM.
I get in discussions with people that are strongly against ORM mostly due in part to Jeff Atwood&#8217;s post that ORM is vietnam. Yes it [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Code generation is not ORM (Object Relational Mapping).</strong>  ORM is not code generation.</p>
<p><strong>These are two separate ideas. </strong> ORM is part-of code generation but code generation is super to ORM.</p>
<p>I get in discussions with people that are strongly against ORM mostly due in part to Jeff Atwood&#8217;s post that <a href="http://www.codinghorror.com/blog/archives/000621.html" target="_blank">ORM is vietnam</a>. Yes it can be, and ORM is only for highly tailored teams and projects and creates bulk and uncontrollable code bases.  BUT, code generation is valuable and here to stay.</p>
<p><strong>Code generation can be </strong>a templating system that outputs code that exactly is the way you would write it and generate unit tests, db field mappings, basic skeletal architecture, maybe a data layer that accesses tables and views or any one of those things from a custom, open source, standard or commercial templating system.</p>
<p><strong>Code generation can also be</strong>  macros, db migration processes (SSPI or DTS or PL-SQL or <em>n</em>), adding a new file in yoru IDE (VS.NET/Eclipse/FD templates), configuration files, refactoring tools, and many other things.  Code generation is a part of life for a programmer or engineer.  In fact if you dont&#8217; start getting a handle on the code generation systems that are evolving then you will be that much more without a solution when platforms advance.</p>
<p><strong>Code generation can also be team building</strong> because many times people against code generation are hand coders.  This is fine and this works great for one programmer.  When you add programmer++ to any single team all of a sudden &#8220;styles&#8221; come into play.  Code generation and basic framework or API code structures should be similar in a team environment so that others have a base layer of knowledge they can get up to speed on.  Code generation brings the style battles and architecture to the forefront on how code should look in an organization. As you can imagine when you give 50 architects or developers the lead, you will get 50 different was of doing things, some good, some bad.  Code generation ensures at least a basic structure of code and apis that can be used.  Team integration is hard, code generation usually goes hand in hand with this if it is as small as new file templates in an IDE or a macro all the way to entire api framework generators.</p>
<p><strong>It is important that code within the same project look and act the same.  Same styles, same conventions, same architecture. One way of settling this is having code generation that everyone agree upon that can help at least structure projects the same, even if implementation and behind the API layer things are like the wild wild west.  </strong></p>
<p><strong>Code Generation &gt; ORM </strong></p>
<p>Code Generation is usually guilty by association.  We are hoping to change the perception, but again code generation is really only needed when you get beyond the single programmer mindset, or when you start to make a product family or open source.</p>
<p><strong>Code Generation != ORM, Code Generation IS for the Code Generation </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://baseplane.com/2008/02/22/code-generation-orm-code-generation-is-for-the-code-generation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Baseplane Tools: OpenSocial Wrappers and Add-on Services</title>
		<link>http://baseplane.com/2008/02/16/baseplane-tools-opensocial-wrappers-and-add-on-services/</link>
		<comments>http://baseplane.com/2008/02/16/baseplane-tools-opensocial-wrappers-and-add-on-services/#comments</comments>
		<pubDate>Sun, 17 Feb 2008 05:04:46 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[baseplane]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[toolkits]]></category>
		<category><![CDATA[innovation]]></category>
		<category><![CDATA[open social]]></category>
		<category><![CDATA[platforms]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[social networking]]></category>

		<guid isPermaLink="false">http://baseplane.com/2008/02/16/baseplane-tools-opensocial-wrappers-and-add-on-services/</guid>
		<description><![CDATA[Markets of many things have a period of innovation and experimentation through normal human trial and error, record response, adjust feedback loops. Over time, certain market standards emerge.
For social networks these market standards are profiles, friends, messages, blogs, pictures, and other custom handlers. OpenSocial has emerged late 2007 and is a great example of where [...]]]></description>
			<content:encoded><![CDATA[<p>Markets of many things have a period of innovation and experimentation <a href="http://code.google.com/apis/opensocial/" target="_blank"><img src="http://baseplane.com/wp-content/uploads/2008/02/opensocial.jpg" alt="opensocial.jpg" class="alignright" align="right" border="0" /></a>through normal human trial and error, record response, adjust feedback loops. Over time, certain market standards emerge.</p>
<p>For social networks these market standards are profiles, friends, messages, blogs, pictures, and other custom handlers. <a href="http://code.google.com/apis/opensocial/" target="_blank">OpenSocial</a> has emerged late 2007 and is a great example of where after a period of time, a standard baseplane platform emerges and makes it another stepping stone to a further period of innovation and experimentation through normal human trial and error, record response, adjust feedback loops by combining and allowing a protocol to expose and consume data for OpenSocial. This could help many smaller or quickly developed communities get setup quickly, and it will also create social network giants that own the data. OpenSocial from Google was released after<a href="http://www.news.com/8301-13577_3-9803872-36.html" target="_blank"> Microsoft signed</a> <a href="http://www.techcrunch.com/2006/08/23/facebook-does-ad-deal-but-not-with-google/" target="_blank">with Facebook</a>. Google came back with OpenSocial that got lots of attention and respec, also a move for Google to own the information and data standard. Then <a href="http://developers.facebook.com/news.php?blog=1&amp;story=60" target="_blank">Facebook got forced to open up the apis to provide almost the same functionality</a>, but no OpenSocial. Sometimes you need toolkits that will help to talk to both systems or many more pluggable ROM generation kits that allow you to integrate into these services such as blogging has the <a href="http://www.xmlrpc.com/metaWeblogApi" target="_blank">metaweblog apis</a> and do most communication in a RESTful or XMLRPC based standard communication. It has allowed many blogging tools to integrate and help proliferate the platform and the companies involved in constructing it such as Wordpress (<a href="http://automattic.com/" target="_blank">Automattic</a>), MoveableType (<a href="http://www.sixapart.com/" target="_blank">SixApart</a>), etc. There is great value to having open standards and market standards that allow the platform to flourish.</p>
<p>The baseplane code generation BOM (baseplane object mapper) has a ROM (rapid object mapper) both in development that can map your objects or existing applications to share along the OpenSocial standards (roadmaps and tests coming soon). We have many more ROMs that allow layers to be added to your code generation and custom manipulation of that work that have been built after 12+ years of experience in enterprise development. The great thing is the ROMs are custom, meaning that they follow your coding style and how you want things. None of this dictator like ORM systems, this is the reverse to that. They can integrate with existing code and they are not THE platform, they help you shape one though. More on this as the BOM is dropped.</p>
<p>The good news is more platforms are emerging, the bad news is there is much to learn and become an expert on.</p>
]]></content:encoded>
			<wfw:commentRss>http://baseplane.com/2008/02/16/baseplane-tools-opensocial-wrappers-and-add-on-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Baseplane has launched</title>
		<link>http://baseplane.com/2008/02/09/baseplane-has-launched/</link>
		<comments>http://baseplane.com/2008/02/09/baseplane-has-launched/#comments</comments>
		<pubDate>Sat, 09 Feb 2008 13:19:20 +0000</pubDate>
		<dc:creator>drawk</dc:creator>
				<category><![CDATA[announcement]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[products]]></category>
		<category><![CDATA[toolkits]]></category>

		<guid isPermaLink="false">http://baseplane.com/2008/02/09/baseplane-has-launched/</guid>
		<description><![CDATA[baseplane is a technology tentacle of drawk, a digital design and development company that produces web applications and games.
The goal of baseplane is to deliver tools that help developers, users and creating a level playing-field in a world of software where platform and company religiosity is breaking standards, simplified software entry points and going against [...]]]></description>
			<content:encoded><![CDATA[<p><strong>base<u>plan</u>e</strong> is a technology tentacle of <a href="http://drawk.com">drawk</a>, a digital design and development company that produces web applications and games.</p>
<p>The goal of baseplane is to deliver tools that help developers, users and creating a level playing-field in a world of software where platform and company religiosity is breaking standards, simplified software entry points and going against the main rule of software, to minimize complexity.</p>
<p>With such great changes in software happening and so many platforms to consume, tools to simplify and make broad platforms to help manage bigger services it is key to take control of these services as the web generations advance.</p>
<p>baseplane has tools to help with social networks (Open social wrappers and other services), blogging aggregation (XMLRPC, metaweblog), code generation (data, to activity to apis to services to service modules like JSON services), consistent architecture spanning multiple platforms (.net, php, java, actionscript (as3) and ruby,python.</p>
<p>Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://baseplane.com/2008/02/09/baseplane-has-launched/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
