<?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>Kered.org/Blog &#187; google / SoC</title>
	<atom:link href="http://kered.org/blog/category/google-soc/feed/" rel="self" type="application/rss+xml" />
	<link>http://kered.org/blog</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sat, 26 Feb 2011 06:40:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>$10 Million Android Developer Challenge</title>
		<link>http://kered.org/blog/2007-11-12/10-million-android-developer-challenge/</link>
		<comments>http://kered.org/blog/2007-11-12/10-million-android-developer-challenge/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 23:44:37 +0000</pubDate>
		<dc:creator>derek</dc:creator>
				<category><![CDATA[google / SoC]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://kered.org/blog/2007-11-12/10-million-android-developer-challenge/</guid>
		<description><![CDATA[Google has announced their &#8220;gPhone&#8221;, and it&#8217;s a open, Linux-based software platform called Android:

watch their intro video

And they&#8217;re celebrating by also announcing a $10 million developer challenge, two be handed out in two $5 million dollar rounds with at least 50 individual recipients each round.  Pretty exciting, eh?
So does anyone have any suggestions for [...]]]></description>
			<content:encoded><![CDATA[<p>Google has announced their &#8220;gPhone&#8221;, and it&#8217;s a open, Linux-based software platform called Android:</p>
<ul>
<li><a href="http://www.youtube.com/watch?v=1FJHYqE0RDg">watch their intro video</a></li>
</ul>
<p>And they&#8217;re celebrating by also announcing a <a href="http://www.google.com/intl/en/press/pressrel/20071112_android_challenge.html">$10 million developer challenge</a>, two be handed out in two $5 million dollar rounds with at least 50 individual recipients each round.  Pretty exciting, eh?</p>
<p>So does anyone have any suggestions for <em>&#8220;i wish my phone could do this&#8221;</em>?  <img src='http://kered.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   I&#8217;d love to hear your thoughts&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://kered.org/blog/2007-11-12/10-million-android-developer-challenge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Django External Schema Evolution Branch</title>
		<link>http://kered.org/blog/2007-10-19/django-external-schema-evolution-branch/</link>
		<comments>http://kered.org/blog/2007-10-19/django-external-schema-evolution-branch/#comments</comments>
		<pubDate>Fri, 19 Oct 2007 16:52:35 +0000</pubDate>
		<dc:creator>derek</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[google / SoC]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://kered.org/blog/2007-10-19/django-external-schema-evolution-branch/</guid>
		<description><![CDATA[Just an update on my former SoC2006 work&#8230;
We now no longer require a patch to Django.  One import statement in settings.py allows our program to fake it via the very crafty Python language.
The new website is here: http://code.google.com/p/deseb/
The discussion list us here: http://groups.google.com/group/deseb-discuss
Plus there is an introductory video available here: http://kered.org/deseb_demo.mpeg
]]></description>
			<content:encoded><![CDATA[<p>Just an update on my former SoC2006 work&#8230;</p>
<p>We now no longer require a patch to Django.  One import statement in settings.py allows our program to fake it via the very crafty Python language.</p>
<p>The new website is here: <a href="http://code.google.com/p/deseb/">http://code.google.com/p/deseb/</a><br />
The discussion list us here: <a href="http://groups.google.com/group/deseb-discuss">http://groups.google.com/group/deseb-discuss</a></p>
<p>Plus there is an introductory video available here: <a href="http://kered.org/deseb_demo.mpeg">http://kered.org/deseb_demo.mpeg</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kered.org/blog/2007-10-19/django-external-schema-evolution-branch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://kered.org/deseb_demo.mpeg" length="22128512" type="video/mpeg" />
		</item>
		<item>
		<title>Django Schema Evolution</title>
		<link>http://kered.org/blog/2007-07-19/django-schema-evolution/</link>
		<comments>http://kered.org/blog/2007-07-19/django-schema-evolution/#comments</comments>
		<pubDate>Thu, 19 Jul 2007 20:42:44 +0000</pubDate>
		<dc:creator>derek</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[google / SoC]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://kered.org/blog/2007-07-19/django-schema-evolution/</guid>
		<description><![CDATA[I&#8217;ve ported my schema evolution work from my SoC project last summer to Django v0.96.   To use it, download the patch below, and run the following:
$ cd /&#60;path_to_python_dir&#62;/site-packages/django/
$ patch -p1 &#60; ~/&#60;download_dir&#62;/django_schema_evolution-v096patch.txt
It should output the following:
patching file core/management.py
patching file db/backends/mysql/base.py
patching file db/backends/mysql/introspection.py
patching file db/backends/postgresql/base.py
patching file db/backends/postgresql/introspection.py
patching file db/backends/sqlite3/base.py
patching file db/backends/sqlite3/introspection.py
patching file db/models/fields/__init__.py
patching file db/models/options.py
To [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve ported my schema evolution work from my SoC project last summer to Django v0.96.   To use it, download the patch below, and run the following:</p>
<pre><code>$ cd /&lt;path_to_python_dir&gt;/site-packages/django/
$ patch -p1 &lt; ~/&lt;download_dir&gt;/django_schema_evolution-v096patch.txt</code></pre>
<p>It should output the following:</p>
<pre><code>patching file core/management.py
patching file db/backends/mysql/base.py
patching file db/backends/mysql/introspection.py
patching file db/backends/postgresql/base.py
patching file db/backends/postgresql/introspection.py
patching file db/backends/sqlite3/base.py
patching file db/backends/sqlite3/introspection.py
patching file db/models/fields/__init__.py
patching file db/models/options.py</code></pre>
<p>To use it:</p>
<pre><code>$ cd /&lt;path_to_project_dir&gt;/
$ ./manage.py sqlevolve &lt;app_name&gt;</code></pre>
<p>It should output something like this:</p>
<pre><code>BEGIN;
ALTER TABLE `main_query` CHANGE COLUMN `accuracy` `accuracynew` numeric(10, 6) NULL;
ALTER TABLE `main_query` ADD COLUMN `price` varchar(256) NULL;
COMMIT;</code></pre>
<p>Assuming you have a model such as this:</p>
<pre><code>class Query(models.Model):
    query = models.CharField(maxlength=256, blank=False)
    accuracynew = models.FloatField(max_digits=10, decimal_places=6, null=True, blank=True, aka='accuracy')
    price = models.CharField(maxlength=256, null=True, blank=True) # new column
</code></pre>
<p>Note the <code>aka</code> field where I changed the name of &#8220;accuracy&#8221; to &#8220;accuracynew&#8221;.</p>
<p>Source code:</p>
<ul>
<li><a id="p47" href="http://home.kered.org/blog/wp-content/uploads/2007/07/django_schema_evolution-v096patch1.txt">django_schema_evolution-v096patch.txt</a></li>
</ul>
<p>Documentation:</p>
<ul>
<li><a href="http://code.djangoproject.com/wiki/SchemaEvolutionDocumentation">http://code.djangoproject.com/wiki/SchemaEvolutionDocumentation</a></li>
</ul>
<p>Let me know if you find any bugs.</p>
<p><strong>UPDATE:</strong> This project is now on Google Code: <a href="http://code.google.com/p/deseb/">http://code.google.com/p/deseb/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kered.org/blog/2007-07-19/django-schema-evolution/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Gift from Google</title>
		<link>http://kered.org/blog/2006-06-12/gift-from-google/</link>
		<comments>http://kered.org/blog/2006-06-12/gift-from-google/#comments</comments>
		<pubDate>Mon, 12 Jun 2006 17:20:43 +0000</pubDate>
		<dc:creator>derek</dc:creator>
				<category><![CDATA[google / SoC]]></category>

		<guid isPermaLink="false">http://kered.org/blog/2006-06-12/gift-from-google/</guid>
		<description><![CDATA[Google has sent out gifts to all SoC selectees.  Here are the pictures&#8230;
   
]]></description>
			<content:encoded><![CDATA[<p>Google has sent out gifts to all SoC selectees.  Here are the pictures&#8230;</p>
<p><a class="imagelink" href="http://home.kered.org/blog/wp-content/uploads/2006/11/06-12-06_11151.jpg" title="the box"><img id="image17" src="http://home.kered.org/blog/wp-content/uploads/2006/11/06-12-06_11151.jpg" alt="the box" /></a> <a class="imagelink" href="http://home.kered.org/blog/wp-content/uploads/2006/11/06-12-06_11161.jpg" title="the book"><img id="image18" src="http://home.kered.org/blog/wp-content/uploads/2006/11/06-12-06_11161.jpg" alt="the book" /></a> <a class="imagelink" href="http://home.kered.org/blog/wp-content/uploads/2006/11/06-12-06_11171.jpg" title="the logo"><img id="image19" src="http://home.kered.org/blog/wp-content/uploads/2006/11/06-12-06_11171.jpg" alt="the logo" /></a> <a class="imagelink" href="http://home.kered.org/blog/wp-content/uploads/2006/11/06-12-06_11181.jpg" title="open"><img id="image20" src="http://home.kered.org/blog/wp-content/uploads/2006/11/06-12-06_11181.jpg" alt="open" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://kered.org/blog/2006-06-12/gift-from-google/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Summer of Code</title>
		<link>http://kered.org/blog/2006-05-24/summer-of-code/</link>
		<comments>http://kered.org/blog/2006-05-24/summer-of-code/#comments</comments>
		<pubDate>Wed, 24 May 2006 07:45:22 +0000</pubDate>
		<dc:creator>derek</dc:creator>
				<category><![CDATA[django]]></category>
		<category><![CDATA[google / SoC]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">https://kered.org/blog/2006/05/24/summer-of-code/</guid>
		<description><![CDATA[Google&#8217;s Summer of Code project has accepted my application.   For those of you not familiar  with this, basically Google funds you for a summer to work on an open source project of your choosing.  It&#8217;s a fairly big w00t in the programming and academic worlds.   I can&#8217;t tell you [...]]]></description>
			<content:encoded><![CDATA[<p>Google&#8217;s <a href="http://code.google.com/soc/">Summer of Code</a> project has accepted my application.   For those of you not familiar  with this, basically Google funds you for a summer to work on an open source project of your choosing.  It&#8217;s a fairly big w00t in the programming and academic worlds.   I can&#8217;t tell you all how exciting this is.  <img src='http://kered.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The skinny: I will be implementing <a href="http://code.djangoproject.com/wiki/SchemaEvolution">schema evolution</a> for the <a href="http://www.djangoproject.com/">Django project</a>.   Watch <a href="https://kered.org/blog/category/soc/">this category</a> for further updates.</p>
<p>The meat of my proposal:</p>
<p>I would like to implement the introspection and migration schema evolution suggestions detailed here: [<a href="http://code.djangoproject.com/wiki/SchemaEvolution">http://code.djangoproject.com/wiki/SchemaEvolution</a>]</p>
<p>I am in a unique position for this proposal because I have implemented much of this functionality before.  I am the PM/tech lead for a large (~400k loc) java based web application.  We have a 200+ table schema, and last December I wrote a schema manager that implements much of what is described in your schema evolution proposal.  (this is no coincidence – Django&#8217;s need was my catalyst/inspiration)  Obviously I would not be able to use any of the code (as it was written for an Air Force contract), but the techniques would be transferable.</p>
<p>The schema manager I wrote (in Java, manipulating an Oracle DB, and likely on the outer difficulty edge of any similar implementation) was developed independently from your wiki&#8217;s proposal.  (it was inspired by the one-line &#8216;this would be hard but nice to have&#8217; comment in the 0.9.0 documentation, IIRC)  However it implements everything listed in your &#8216;Automatically applied migration code&#8217; suggestion.  Additionally, it supports the following:</p>
<ul>
<li>automatic downgrades are supported (in addition to upgrades)</li>
<li>the application can automatically identify a schema without a &#8217;schema version&#8217; table</li>
<li>the application can verify the accuracy of a schema</li>
<li>multiple schema identification algorithms are simultaneously  supported (for instance: primary keys, foreign keys and constraints can be named in Oracle – should a constraint name change be considered a schema version change?  you decide)</li>
<li>multiple different schemas with &#8216;equivalent&#8217; functionality can be mapped back to a single logical schema version  (&#8216;equivalency&#8217; obviously being determined by the developer)</li>
</ul>
<p>I would like to note that this would not be simply a porting project.  For obvious legal reasons I would not have access to my previous code base.  It would be in a different language.  (I am familiar with Python, but not yet competent)  It would be designed against a different database.  And it would be for an object framework very different from my previous application experience.  Nonetheless, many of the &#8216;hard&#8217; problems associated with this type of functionality I have already solved, proven and deployed.</p>
<p>As far as the introspection functionality, this was prototyped, but never deployed for the following reasons:</p>
<ul>
<li>my application does not have a central, unified object definition mechanism from which to base such a function</li>
<li>converting our application to such would have been prohibitive</li>
<li>other development requirements took priority</li>
</ul>
<p>However my exploratory code towards this was promising.  (you all would be proud of my tuple-based model implementation in Java – made quite the use of the new 1.5 features and had full compile-time checking of all parameters)</p>
<p>BTW, I briefly considered a full Java port of Django last winter.  (I&#8217;ve owned django4j.com for a while now)  I still think it would be a good long-term idea, but a bit much for a summer project.</p>
<p>As far as any legal concerns you might have, I&#8217;ve contributed to open source projects before with both my company&#8217;s and the government&#8217;s knowledge and approval.  (including my own project, buglist)  I know the landscape well.  Plus my contract will be ending soon.  (on 6/30)</p>
<p>Anyway, I look forward to working with you all.  <img src='http://kered.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
&#8211; Derek Anderson</p>
<p>P.S.  Yes, getting *everyone* to save their migration scripts in a VCS should be an absolute, unwavering requirement.  Good god it scares me how few people do this.</p>
]]></content:encoded>
			<wfw:commentRss>http://kered.org/blog/2006-05-24/summer-of-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

