<?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>.:.</title>
	<atom:link href="http://brainsik.theory.org/.:./feed" rel="self" type="application/rss+xml" />
	<link>http://brainsik.theory.org/.:.</link>
	<description>.:. brainsik</description>
	<lastBuildDate>Mon, 01 Feb 2010 01:27:56 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Apple, Flash, and Bullshit</title>
		<link>http://brainsik.theory.org/.:./2010/apple-flash-and-bullshit</link>
		<comments>http://brainsik.theory.org/.:./2010/apple-flash-and-bullshit#comments</comments>
		<pubDate>Mon, 01 Feb 2010 01:26:17 +0000</pubDate>
		<dc:creator>.:. brainsik</dc:creator>
				<category><![CDATA[OS X]]></category>
		<category><![CDATA[poems + prose + rambles]]></category>

		<guid isPermaLink="false">http://brainsik.theory.org/.:./?p=258</guid>
		<description><![CDATA[On Jan 30, 2010, at 11:58 PM, Your Friend wrote:
Just a quick little snippet from an apple town hall that rings true to me &#8212; whenever [my wife]&#8217;s CPU goes crazy and starts overheating it&#8217;s because of a website w/ flash content&#8230;
As for Adobe, Jobs said they are lazy and Jobs blames Adobe for a [...]]]></description>
			<content:encoded><![CDATA[<p>On Jan 30, 2010, at 11:58 PM, Your Friend wrote:</p>
<blockquote><p>Just a quick little snippet from an apple town hall that rings true to me &#8212; whenever [my wife]&#8217;s CPU goes crazy and starts overheating it&#8217;s because of a website w/ flash content&#8230;</p>
<blockquote><p>As for Adobe, Jobs said they are lazy and Jobs blames Adobe for a buggy implementation of Flash on the Mac as one of the reasons they won&#8217;t support it.</p>
<p><em>Apple does not support Flash because it is so buggy, he says. Whenever a Mac crashes more often than not it&#8217;s because of Flash. No one will be using Flash, he says. The world is moving to HTML5.</em></p></blockquote>
</blockquote>
<p>Those comments are bullshit.</p>
<ol>
<li><em>Regarding speed</em> — Flash now supports hardware acceleration, but Windows is the only OS with hooks for it. Video would be much much quicker if it could use the Mac&#8217;s hardware acceleration. Counterargument is Apple should be allowed full control of their hardware and not have to expose access to it, but I don&#8217;t buy it. How do games access the video chip?<sup>1</sup></li>
<li><em>Regarding bugginess</em> — Chrome and the current Safari are architected such that if a plug-in crashes, the whole browser does not go down. Firefox will eventually be like this too. Arguing Flash can cause a Mac to crash just makes the Mac sound poorly architected, and <a title="sandbox_init(3)" href="http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man3/sandbox_init.3.html">it&#8217;s not</a>.</li>
</ol>
<p>There <em>is</em> a reasonable story I&#8217;ve read for not supporting  Flash (or any popular third party plug-in): the desire for more agile  control over the OS. For example, Apple is moving to<a href="http://www.apple.com/macosx/technology/#sixtyfourbit"> an  entirely 64 bit OS</a>, but Flash is only 32 bit. This means in order to  ship a 64 bit Safari they had to write a sandboxed plug-in system that  32 bit apps could run in.<sup>2</sup> However, they <em>really</em> don&#8217;t want to deal with this  crap on iPhone OS. Imagine if they want to support a different mobile  processor architecture? They want to compile and go, not have to wait  for some other company to port their ware.</p>
<p>There&#8217;s <a title="Apple, Adobe, and Flash" href="http://daringfireball.net/2010/01/apple_adobe_flash">a pretty  good article that covers much of this</a> by pro-Apple<sup>3</sup>  John Gruber.</p>
<p>But let&#8217;s focus on the statement about the future:</p>
<blockquote><p>No one will be using Flash, he says. The world is moving to HTML5.</p></blockquote>
<p>Jobs is referring to the HTML5 &lt;video&gt; tag. This gives a simple, non-Flash based way for browsers to know when to show video. Earlier drafts of <a title="Video Element and Ogg Theora " href="http://www.bluishcoder.co.nz/2007/12/video-element-and-ogg-theora.html">HTML5 also specified using Ogg Theora</a> as the video codec. <a href="http://en.wikipedia.org/wiki/Theora">Theora</a> provides a patent unencumbered, open source implementation anyone  can use. Basically, in 2007 HTML5 solved the  problem of how everyone could watch video on the web without all the problems Flash brings. But Theora was pulled out of the spec in large part due to Apple (and Nokia) <a title="Xiph.Org Statement Regarding the HTML5 Draft and the Ogg Codec Set" href="http://xiph.org/press/2007/w3c/">weakly arguing about submarine patents</a>. When it comes down to it, Apple cares far more about media and content control than fast, bug-free video. They&#8217;re backing a DRM enabled codec over a working web. Performance issues and bugs are a red herring.</p>
<ol class="footnotes"><li id="footnote_0_258" class="footnote">Uses of Flash go far beyond just video, but really, video is the main way we experience Flash. If all those embedded videos didn&#8217;t suck up all that processing power, there would probably be a lot less complaining.</li><li id="footnote_1_258" class="footnote">One could argue this was a good thing do,  regardless.</li><li id="footnote_2_258" class="footnote">Fanboy <img src='http://brainsik.theory.org/.:./wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </li></ol>]]></content:encoded>
			<wfw:commentRss>http://brainsik.theory.org/.:./2010/apple-flash-and-bullshit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EtherPad to Shut Down After Google Acquisition</title>
		<link>http://brainsik.theory.org/.:./2009/etherpad-to-shut-down-after-google-acquisition</link>
		<comments>http://brainsik.theory.org/.:./2009/etherpad-to-shut-down-after-google-acquisition#comments</comments>
		<pubDate>Sat, 05 Dec 2009 04:00:54 +0000</pubDate>
		<dc:creator>.:. brainsik</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[poems + prose + rambles]]></category>

		<guid isPermaLink="false">http://brainsik.theory.org/.:./?p=242</guid>
		<description><![CDATA[Via Daring Fireball: EtherPad to Shut Down After Google Acquisition of Parent Company AppJet
Sad. I just discovered EtherPad and one of my favorite things is its ad-hoc nature. Want to start collaborating on a document right now? Just go to the site, start a new pad, and pass around the URL. You could even make up [...]]]></description>
			<content:encoded><![CDATA[<p>Via Daring Fireball:<a href="http://daringfireball.net/linked/2009/12/04/etherpad"> EtherPad to Shut Down After Google Acquisition of Parent Company AppJet</a></p>
<p>Sad. I just discovered <a href="http://etherpad.com/">EtherPad</a> and one of my favorite things is its ad-hoc nature. Want to start collaborating on a document right now? Just go to the site, start a new pad, and pass around the URL. You could even <a href="http://etherpad.com/ep/pad/create?padId=ThisWasSwell">make up the URL path</a> ahead of time! No account is required; it Just Works.<sup>1</sup></p>
<p>Contrast this with Google Wave where I need to be signed into my account, everyone I want to share with must have a Google account, those accounts need to be in my contacts, etc.<sup>2</sup> The risk is losing the momentum and the moment. It&#8217;d be faster and easier to jump onto an open wiki.</p>
<p>Is my weight on a quick &amp; easy ad-hoc solution a geeky, open source enthusiast desire? Maybe I&#8217;m feeling similar to <a title="Opening Up Librelist.com Code, Looking For Volunteers" href="http://zedshaw.com/blog/2009-12-03.html">the way Zed Shaw is feeling about Google Groups</a>. Maybe this is part of what we are warned about in <a href="http://dashes.com/anil/2009/11/the-web-in-danger.html">The Web in Danger</a>. At the very least, it makes me feel pretty good about having become a software developer: I can stop bitching and start coding.</p>
<p><strong>Update:</strong> Apparently I wasn&#8217;t the only one who was upset. In response to its user base, <a href="http://etherpad.com/ep/blog/posts/etherpad-back-online-until-open-sourced">EtherPad is Back Online Until Open Sourced</a>.</p>
<ol class="footnotes"><li id="footnote_0_242" class="footnote">Of course, I&#8217;m speaking of the free and open portion of EtherPad, as that&#8217;s what I&#8217;m interested in.</li><li id="footnote_1_242" class="footnote">Let&#8217;s just skip the poor &#8220;everyone has a Google account&#8221; argument.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://brainsik.theory.org/.:./2009/etherpad-to-shut-down-after-google-acquisition/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When underdogs break the rules</title>
		<link>http://brainsik.theory.org/.:./2009/when-underdogs-break-the-rules</link>
		<comments>http://brainsik.theory.org/.:./2009/when-underdogs-break-the-rules#comments</comments>
		<pubDate>Sat, 16 May 2009 17:38:56 +0000</pubDate>
		<dc:creator>.:. brainsik</dc:creator>
				<category><![CDATA[society]]></category>

		<guid isPermaLink="false">http://brainsik.theory.org/.:./?p=238</guid>
		<description><![CDATA[This is a great article about how underdogs can win most of the time when they stray from the accepted rules of engagement. Applicable to just about anything.
How David Beats Goliath: When underdogs break the rules
]]></description>
			<content:encoded><![CDATA[<p>This is a great article about how underdogs can win most of the time when they stray from the accepted rules of engagement. Applicable to just about anything.</p>
<p style="text-align: center;"><a href="http://www.newyorker.com/reporting/2009/05/11/090511fa_fact_gladwell?printable=true">How David Beats Goliath: When underdogs break the rules</a></p>
]]></content:encoded>
			<wfw:commentRss>http://brainsik.theory.org/.:./2009/when-underdogs-break-the-rules/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tweenbots</title>
		<link>http://brainsik.theory.org/.:./2009/tweenbots</link>
		<comments>http://brainsik.theory.org/.:./2009/tweenbots#comments</comments>
		<pubDate>Thu, 23 Apr 2009 16:58:21 +0000</pubDate>
		<dc:creator>.:. brainsik</dc:creator>
				<category><![CDATA[New York]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[society]]></category>
		<category><![CDATA[the senses]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[nyc]]></category>
		<category><![CDATA[robots]]></category>

		<guid isPermaLink="false">http://brainsik.theory.org/.:./?p=229</guid>
		<description><![CDATA[I just learned about this project this morning. I like it!
http://www.tweenbots.com/
(I guess this was a good candidate for my first twitter tweet.)
]]></description>
			<content:encoded><![CDATA[<p>I just learned about this project this morning. I like it!</p>
<p><a title="tweenbots" href="http://www.tweenbots.com/">http://www.tweenbots.com/</a></p>
<p>(I guess this was a good candidate for my first twitter tweet.)</p>
]]></content:encoded>
			<wfw:commentRss>http://brainsik.theory.org/.:./2009/tweenbots/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This is the NYPD</title>
		<link>http://brainsik.theory.org/.:./2009/this-is-the-nypd</link>
		<comments>http://brainsik.theory.org/.:./2009/this-is-the-nypd#comments</comments>
		<pubDate>Sat, 18 Apr 2009 20:05:55 +0000</pubDate>
		<dc:creator>.:. brainsik</dc:creator>
				<category><![CDATA[New York]]></category>
		<category><![CDATA[society]]></category>

		<guid isPermaLink="false">http://brainsik.theory.org/.:./?p=214</guid>
		<description><![CDATA[More unnecessary force and an illegal arrest. Many officers in the NYPD continue to work of control and above the law.
Check out their use of pepper spray and especially how they deal with a bystander yelling during last week&#8217;s New School building occupation:

If you were living under a rock last year, here is the video [...]]]></description>
			<content:encoded><![CDATA[<p>More unnecessary force and an illegal arrest. Many officers in the NYPD continue to work of control and above the law.</p>
<p>Check out their use of pepper spray and especially how they deal with a bystander yelling during last week&#8217;s <a title="Police Arrest 22 at New School Building" href="http://cityroom.blogs.nytimes.com/2009/04/10/students-occupy-new-school-building-again/">New School building occupation</a>:</p>
<p style="text-align: center;"><object width="475" height="403" data="http://c.brightcove.com/services/viewer/federated_f8/15254205001" type="application/x-shockwave-flash"><param name="name" value="flashObj" /><param name="bgcolor" value="#000000" /><param name="flashvars" value="videoId=19191746001&amp;playerId=15254205001&amp;viewerSecureGatewayURL=https://console.brightcove.com/services/amfgateway&amp;servicesURL=http://services.brightcove.com/services&amp;cdnURL=http://admin.brightcove.com&amp;domain=embed&amp;autoStart=false&amp;" /><param name="src" value="http://c.brightcove.com/services/viewer/federated_f8/15254205001" /></object></p>
<p>If you were living under a rock last year, here is the video of <a title="NYPD Investigates Cop Videotaped Throwing Cyclist Off Bike" href="http://gothamist.com/2008/07/29/cyclist_thrown_from_bike_by_cop_is.php">a bicyclist being thrown from his bike</a> that got <a title="Officer Investigated in Toppling of Cyclist" href="http://www.nytimes.com/2008/07/29/nyregion/29critical.html">mainstream media coverage</a>:
</p>
<p style="text-align: center;"><object width="475" height="381" data="http://www.youtube-nocookie.com/v/oUkiyBVytRQ&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube-nocookie.com/v/oUkiyBVytRQ&amp;hl=en&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://brainsik.theory.org/.:./2009/this-is-the-nypd/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stewart Brand on Gavin Newsom&#8217;s sustainable cities talk</title>
		<link>http://brainsik.theory.org/.:./2009/stewart-brand-on-gavin-newsoms-sustainable-cities-talk</link>
		<comments>http://brainsik.theory.org/.:./2009/stewart-brand-on-gavin-newsoms-sustainable-cities-talk#comments</comments>
		<pubDate>Thu, 09 Apr 2009 19:34:02 +0000</pubDate>
		<dc:creator>.:. brainsik</dc:creator>
				<category><![CDATA[San Francisco]]></category>
		<category><![CDATA[society]]></category>
		<category><![CDATA[gavin newsom]]></category>
		<category><![CDATA[green cities]]></category>
		<category><![CDATA[stuart brand]]></category>
		<category><![CDATA[the long now]]></category>

		<guid isPermaLink="false">http://brainsik.theory.org/.:./?p=203</guid>
		<description><![CDATA[San Francisco Mayor Gavin Newsom gave a seminar for The Long Now Foundation entitled &#8220;Cities and Time&#8221;. If you live in San Francisco or are interested in Cities going &#8220;Green&#8221;, check out Stewart Brand&#8217;s summary of the talk: Mayor Gavin Newsom, “Cities and Time”.
It&#8217;s interesting to read about some of the things the mayor would [...]]]></description>
			<content:encoded><![CDATA[<p>San Francisco Mayor Gavin Newsom gave a seminar for <a href="http://www.longnow.org/">The Long Now Foundation</a> entitled &#8220;Cities and Time&#8221;. If you live in San Francisco or are interested in Cities going &#8220;Green&#8221;, check out <a href="http://sb.longnow.org/">Stewart Brand</a>&#8217;s summary of the talk: <a href="http://blog.longnow.org/2009/04/09/mayor-gavin-newsom-cities-and-time/">Mayor Gavin Newsom, “Cities and Time”</a>.</p>
<p>It&#8217;s interesting to read about some of the things the mayor would like to see happen in San Francisco. Of course, he won&#8217;t be in office to make good on his desires, but these kinds of comments are probably smart if you want to run for Governor of California. <img src='http://brainsik.theory.org/.:./wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://brainsik.theory.org/.:./2009/stewart-brand-on-gavin-newsoms-sustainable-cities-talk/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Reddit uses Python</title>
		<link>http://brainsik.theory.org/.:./2009/why-reddit-uses-python</link>
		<comments>http://brainsik.theory.org/.:./2009/why-reddit-uses-python#comments</comments>
		<pubDate>Wed, 08 Apr 2009 17:07:59 +0000</pubDate>
		<dc:creator>.:. brainsik</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[pycon]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[reddit]]></category>

		<guid isPermaLink="false">http://brainsik.theory.org/.:./?p=188</guid>
		<description><![CDATA[During Steve Huffman&#8217;s and Alexis Ohanian&#8217;s Pycon Keynote, someone asked why Reddit was moved from Lisp to Python. The reason for moving wasn&#8217;t too interesting, but why they have stayed is. Steve gave two &#8220;huge&#8221; reasons Reddit continues to use Python:
The biggest thing that has kept us on Python … well, there are two huge [...]]]></description>
			<content:encoded><![CDATA[<p>During <a title="Keynote: Reddit: Steve Huffman and Alexis Ohanian" href="http://us.pycon.org/2009/conference/schedule/event/80/">Steve Huffman&#8217;s and Alexis Ohanian&#8217;s Pycon Keynote</a>, someone asked why <a href="http://reddit.com/">Reddit</a> was moved from Lisp to <a href="http://python.org/">Python</a>. The reason for moving wasn&#8217;t too interesting, but why they have stayed is. Steve gave two &#8220;huge&#8221; reasons Reddit continues to use Python:</p>
<blockquote><p>The biggest thing that has kept us on Python … well, there are two huge things. One are the libraries. There&#8217;s a library for everything. We&#8217;ve been learning a lot of these technologies and a lot of these architectures as we go. And, so, when I didn&#8217;t understand connection pools, I can just find a library until I understand it better myself and write our own. Don&#8217;t understand web frameworks, so we&#8217;ll use someone else&#8217;s until we make our own. Don&#8217;t understand a lot of stuff. And Python has an awesome crutch like that. And now, as we&#8217;ve been learning more, pulling more stuff back in house — just so we can have things the way we like them — it&#8217;s made the transition super super easy.</p>
<p>The other thing that keeps us on Python, and this is the major thing, is how readable and writable it is. When we hire new employees &#8230; I don&#8217;t think we&#8217;ve yet hired an employee who knew Python. I just say, &#8220;everything you write needs to be in Python.&#8221; Just so I can read it. And it&#8217;s awesome because I can see from across the room, looking at their screen, whether their code is good or bad. Because good Python code has a very obvious structure. And that makes my life so much easier. […] It&#8217;s extremely expressive, extremely readable, and extremely writable. And that just keeps life smooth.</p></blockquote>
<p>The question gets asked around 25:54 on <a href="http://pycon.blip.tv/file/1951296/">the video</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://brainsik.theory.org/.:./2009/why-reddit-uses-python/feed</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Wordpress SSL redirect failure</title>
		<link>http://brainsik.theory.org/.:./2009/wordpress-ssl-redirect-failure</link>
		<comments>http://brainsik.theory.org/.:./2009/wordpress-ssl-redirect-failure#comments</comments>
		<pubDate>Mon, 06 Apr 2009 02:18:06 +0000</pubDate>
		<dc:creator>.:. brainsik</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://brainsik.theory.org/.:./?p=169</guid>
		<description><![CDATA[I have had so many problems managing the wordpress software, it&#8217;s ridiculous. If I could find a decent replacement, I&#8217;d move everyone over, but this appears to be the best out there. It reminds me of the time when all web browsers sucked and all email clients sucked. The sad thing is, Wordpress used to [...]]]></description>
			<content:encoded><![CDATA[<p>I have had so many problems managing the <a href="http://wordpress.org/download/">wordpress software</a>, it&#8217;s ridiculous. If I could find a decent replacement, I&#8217;d move everyone over, but this appears to be the best out there. It reminds me of the time when all web browsers sucked and all email clients sucked. The sad thing is, Wordpress used to be really solid; now every new version feels a bit more degraded than the last. Perhaps I&#8217;ll let them blame it on using PHP. <img src='http://brainsik.theory.org/.:./wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Enjoy:<sup>1</sup></p>
<pre>$ curl -k -I https://brainsik.theory.org/.:./wp-login.php
HTTP/1.1 302 Found
Date: Mon, 06 Apr 2009 02:08:18 GMT
Server: Apache/2.2.9
X-Powered-By: PHP/5.2.6-2ubuntu4.1
Location: https://brainsik.theory.org/.:./wp-login.php
Vary: Accept-Encoding
Content-Type: text/html; charset=UTF-8</pre>
<ol class="footnotes"><li id="footnote_0_169" class="footnote">HINT: Compare the URL I requested, and the one I was redirected to.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://brainsik.theory.org/.:./2009/wordpress-ssl-redirect-failure/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Forbidden Twitter</title>
		<link>http://brainsik.theory.org/.:./2009/forbidden-twitter</link>
		<comments>http://brainsik.theory.org/.:./2009/forbidden-twitter#comments</comments>
		<pubDate>Wed, 01 Apr 2009 20:43:36 +0000</pubDate>
		<dc:creator>.:. brainsik</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[society]]></category>
		<category><![CDATA[fail]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://brainsik.theory.org/.:./?p=153</guid>
		<description><![CDATA[On most sites I visit, error pages are infrequent. On Twitter, problems are so common the error pages have their own cultural currency. Sadly, I still regularly hit errors without such soothing imagery:

]]></description>
			<content:encoded><![CDATA[<p>On most sites I visit, error pages are infrequent. On Twitter, problems are so common <a title="fail whale images" href="http://images.google.com/images?q=fail+whale">the error pages have their own cultural currency</a>. Sadly, I still <em>regularly</em> hit errors without such soothing imagery:</p>
<p><img class="centered" src="http://brainsik.theory.org/.:./wp-content/uploads/2009/04/403twitter.png" alt="403 Twitter" /></p>
]]></content:encoded>
			<wfw:commentRss>http://brainsik.theory.org/.:./2009/forbidden-twitter/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flexicommunity of web frameworks</title>
		<link>http://brainsik.theory.org/.:./2009/flexicommunity-of-web-frameworks</link>
		<comments>http://brainsik.theory.org/.:./2009/flexicommunity-of-web-frameworks#comments</comments>
		<pubDate>Wed, 25 Mar 2009 04:53:44 +0000</pubDate>
		<dc:creator>.:. brainsik</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sqlalchemy]]></category>
		<category><![CDATA[web framework]]></category>

		<guid isPermaLink="false">http://brainsik.theory.org/.:./?p=104</guid>
		<description><![CDATA[The group I work with has thought about using Django a few times, but our biggest concern has been the lock-in you get with their base components. We&#8217;re already happy using SQLAlchemy and Genshi for a system application in our project. Besides liking the tools we&#8217;ve picked, we&#8217;d like to avoid using multiple tools for [...]]]></description>
			<content:encoded><![CDATA[<p>The group I work with has thought about using Django a few times, but our biggest concern has been the lock-in you get with their base components. We&#8217;re already happy using <a href="http://www.sqlalchemy.org/">SQLAlchemy</a> and <a href="http://genshi.edgewall.org/">Genshi</a> for a system application in our project. Besides liking the tools we&#8217;ve picked, we&#8217;d like to avoid using multiple tools for the same task. On the other hand, if a second set of tools provides a framework we&#8217;ll totally rock with, sign us up!</p>
<p>A few days ago, <a title="One Laptop Battery Later And I'm A Django Fan" href="http://zedshaw.com/blog/2009-03-20.html">Zed Shaw spooged about how rad Django is</a>. There isn&#8217;t a lot of meat to his story, but there are enticing morsels like <a href="http://docs.djangoproject.com/en/dev/intro/tutorial04/#use-generic-views-less-code-is-better">generic views</a>, the <a href="http://pinaxproject.com/docs/0.5.1/intro.html#features">Pinax component list</a>, and:</p>
<blockquote><p>Django has been pushing the idea of having discrete “applications” that act within a “site” as cooperating but separate components.</p></blockquote>
<p>Inspired, the first thing I looked at was the ORM. The schema we&#8217;ve inherited and need to redesign is absurdly complex<sup>1</sup> so I suspected this is where I&#8217;d first hit limitations.</p>
<p>The redesign will use natural keys when possible <em>and reasonable </em>to help protect against duplicate data entry<sup>2</sup> — the system we inherited uses only surrogate keys and has duplicate data in a variety of places. Also, we add protection (against errors, bad data, etc.) at multiple layers, so this approach fits well with our philosophy.</p>
<p>When choosing a natural key, sometimes more than one column is needed to guarantee uniqueness. This is called a composite primary key. Unfortunately, <a title="Automatic primary key fields" href="http://docs.djangoproject.com/en/dev/topics/db/models/#id1">composite primary keys are not supported by Django</a><sup>3</sup> and their wiki page about <a href="http://code.djangoproject.com/wiki/MultipleColumnPrimaryKeys">Multi-Column Primary Key support</a> is disheartening. The only reason they might implement this feature is to support &#8220;legacy databases (whose schema cannot be changed)&#8221;. This plus the automatic generation of primary key &#8220;id&#8221; columns tells me they have made a choice for us: use surrogate keys.</p>
<p>Our model is now outside Django&#8217;s current scope and there is no way to leverage another ORM that can support our needs. Sadder still, the brilliance of an entire database toolkit<sup>4</sup> perfectly suited to work with the M in our <a title="Model-View-Controller" href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a> project is inaccessible.</p>
<p>This is the problem with frameworks like <a href="http://djangoproject.com/">Django</a>, Ruby on Rails, and others; they enforce their &#8220;pragmatic design&#8221;<sup>5</sup> on you. You must use their ORM, their template language, their request dispatcher, etc. You are sequestered within their community.</p>
<p>In frameworks like <a href="http://pylonshq.com/">Pylons</a> (and others) where you get both structure and choice of base components, all the different communities of ORM creators, template engine writers, and etc. are available and intermingling. Communication between projects is high and even <a title="What's new in TurboGears 2" href="http://www.turbogears.org/2.0/docs/main/WhatsNew.html#what-s-new-in-turbogears-2">the frameworks themselves are mixing</a>!<sup>6</sup></p>
<p>Our project will be growing for years, the longevity and flexibility of the community is critical. The last thing we want is 4 years from now realizing we&#8217;re dependent on a suite of core components nobody is using.</p>
<ol class="footnotes"><li id="footnote_0_104" class="footnote">We actually blew the Python call stack with our relation references when using SQLAlchemy and <a href="http://www.sqlalchemy.org/docs/05/reference/ext/declarative.html">declarative</a>. You might be thinking that&#8217;s because the model is crap, and you&#8217;d be right. We are actually keeping a tally how many times we exclaim &#8220;WTF!?&#8221; each day as we try to beat the beast into submission.</li><li id="footnote_1_104" class="footnote">See Josh Berkus&#8217; <a title="Primary Keyvil, Part I" href="http://it.toolbox.com/blogs/database-soup/primary-keyvil-part-i-7327">Primary Keyvil series</a> for explanation of how natural keys can provide a database level way of protecting against duplicate data.</li><li id="footnote_2_104" class="footnote">&#8220;Each model requires <em>exactly one</em> field to have <code>primary_key=True</code>.&#8221;</li><li id="footnote_3_104" class="footnote">SQLAlchemy is not just <a title="Object Relational Tutorial " href="http://www.sqlalchemy.org/docs/05/ormtutorial.html">an ORM</a>, it’s an <a title=" SQL Expression Language Tutorial" href="http://www.sqlalchemy.org/docs/05/sqlexpression.html">expression language</a> and <a title="SQLAlchemy 0.5.x Documentation" href="http://www.sqlalchemy.org/docs/05/">more</a>.</li><li id="footnote_4_104" class="footnote">From the Django project homepage.</li><li id="footnote_5_104" class="footnote">TurboGears 2 was rewritten on top of Pylons.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://brainsik.theory.org/.:./2009/flexicommunity-of-web-frameworks/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.666 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-17 14:22:43 -->
