<?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>The Pythian Blog</title>
	<atom:link href="http://www.pythian.com/news/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pythian.com/news</link>
	<description>News and views from Pythian DBAs</description>
	<lastBuildDate>Fri, 19 Mar 2010 20:07:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Log Buffer #183, a Carnival of the Vanities for DBAs</title>
		<link>http://www.pythian.com/news/9971/log-buffer-183-a-carnival-of-the-vanities-for-dbas/</link>
		<comments>http://www.pythian.com/news/9971/log-buffer-183-a-carnival-of-the-vanities-for-dbas/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 20:07:55 +0000</pubDate>
		<dc:creator>Shakir Sadikali</dc:creator>
				<category><![CDATA[Log Buffer]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technical Blog]]></category>

		<guid isPermaLink="false">http://www.pythian.com/news/?p=9971</guid>
		<description><![CDATA[Hello folks, it&#8217;s great to be back from hiatus. This is the 183rd edition of Log Buffer (arguably the best edition of Log Buffer yet!), the weekly review of database blogs.
The last time I wrote this was just under 2 years ago!!!  WoW.  Things have changed.  Sun bought MySQL, Oracle bought Sun. [...]]]></description>
			<content:encoded><![CDATA[<p>Hello folks, it&#8217;s great to be back from hiatus. This is the 183rd edition of Log Buffer (arguably the best edition of Log Buffer yet!), the weekly review of database blogs.</p>
<p>The last time I wrote this was just under 2 years ago!!!  WoW.  Things have changed.  Sun bought MySQL, Oracle bought Sun. Those were bombshell deals.  At least you can rest assured that some things can be constant.  I still eat my daily serving of broccoli (among other healthful &#8220;things&#8221;).  I urge you all to go the fridge and grab some veggies prior to sitting down for this week&#8217;s&#8230; ahem&#8230; digest.</p>
<p>Starting with Oracle, Pythian&#8217;s own <a href="http://www.pythian.com/news/9881/deferrable-constraints-in-oracle-11gr2-may-lead-to-logically-corrupted-data/">Alex Fatkulin illustrates a bug</a> (?&#8230;likely) that could lead to logically corrupted data.  <a href="http://www.oracledoug.com/serendipity/index.php?/archives/1586-Hotsos-2010-Day-5-Training-Day-with-Tanel-Poder.html">Doug Burns provides an update on his Hotsos 2010 trip</a> with some serious thumbs-up action pointing in Tanel Poder&#8217;s direction and his affinity toward SQL*Plus.</p>
<p>Over at <a href="http://www.rittmanmead.com/2010/03/17/oracle-warehouse-builder-11gr2-importing-essbase-cubes-using-odi-knowledge-modules-part-1/">Mark Rittman’s Oracle Weblog</a>, Venkatakrishnan J talks about <a href="http://www.rittmanmead.com/2010/03/17/oracle-warehouse-builder-11gr2-importing-essbase-cubes-using-odi-knowledge-modules-part-1/">Oracle Warehouse Builder 11gR2 – Importing Essbase Cubes using ODI Knowledge Modules – Part 1</a>.  This should drive the MySQL folks bonkers (in a good way) since he points to an example by David Allen to import MySQL Metadata over and vice versa.  </p>
<p>Oracle Virtualization Blog&#8217;s Adam Hawley let everyone know about a <a href="http://blogs.oracle.com/virtualization/2010/03/best_practices_around_oracle_v.html">Best Practices around Oracle VM with RAC</a> RAC SIG webcast.  It was on March 18th, but it was recorded and should be available online.  I&#8217;m interested in this stuff so I included it here.  I hope you can enjoy it too.</p>
<p>I had the honour to recently provide a training session at a customer site on tuning methods and tools.  A key topic of the discussion was related to Oracle statistics and the CBO.  It was timely that the <a href="http://jonathanlewis.wordpress.com/2010/03/17/partition-stats/">Oracle Scratchpad&#8217;s Jonathan Lewis</a> posted a series created by Doug Burns all about stats.  Nice.</p>
<p>Has anyone ever told you (or maybe you deduced it on your own) that leaving out where clauses is a <em>bad</em> thing.  Well, leave it to <a href="http://hoopercharles.wordpress.com/">Charles Hooper</a> on his <a href="http://hoopercharles.wordpress.com/2010/03/18/improving-performance-by-using-a-cartesian-join/">Oracle Notes</a> to prove to us that sometimes, they are actually more efficient for solving certain types of problems.  In another excellent post titled <a href="http://hoopercharles.wordpress.com/2010/03/15/physical-reads-are-very-fast-why-is-this-sql-statement-slow/#comments">Physical Reads are Very Fast, Why is this SQL Statement Slow</a> Charles also dives into why a slow query is &#8220;actually&#8221; slow.  There&#8217;s an interesting discussion taking place.  More performance tuning goodness was posted by <a href="http://dbatrain.wordpress.com/2010/02/17/tell-rac-to-leave-your-leaves-alone/">Joel Goodman</a> discussing some interesting behaviour with Oracle Index Leaf Blocks contention. <a href="http://dbatrain.wordpress.com/2010/02/17/tell-rac-to-leave-your-leaves-alone/">Tell RAC to Leave Your Leaves Alone</a>!  <a href="http://kerryosborne.oracle-guy.com/">Kerry Osborne</a> illustrates the use of an interesting hidden parameter (_high_priority_processes) to resolve &#8220;log file sync&#8221; issues.</p>
<p>Over on the other side of the fence in the MySQL world, Jay Pipes @ <a href="http://www.joinfu.com/">Join-Fu</a> gives us some background on the MySQL Transaction Log.  Vadim Tkachenko with the <a href="http://www.mysqlperformanceblog.com/about/">MySQL Performance Blog</a> has a number of posts on Percona 9.1 as well as a list of related sessions at the 2010 MySQL conference.  Check it out.</p>
<p>On a more somber note (and by somber I mean legal, we all hate legalese don&#8217;t we?), <a href="http://datacharmer.blogspot.com/">Giuseppe Maxia</a> over at The Data Charmer discusses <a href="http://datacharmer.blogspot.com/2010/03/protocol-gpl-and-how-bazaar-can-help.html">Protocol, the GPL, and how Bazaar can help</a>.  He also has some good takeaways from the <a href="http://datacharmer.blogspot.com/2010/02/linux-mysql-distros-meeting-in-brussels.html">Linux MySQL distros meeting in Brussels</a>.  <a href="http://www.xaprb.com/blog/">Baron Schwartz at xaprb</a> has a new tool he&#8217;d like the MySQL folks to take for a spin.  <a href="http://www.xaprb.com/blog/2010/03/16/try-mk-query-advisor-a-new-maatkit-tool/">Try mk-query-advisor, a new Maatkit tool.</a>  It uses heuristics to find problems in SQL. Please use it and give feedback!</p>
<p>Are you interested in MySQL Clustering?  I am.  <a href="http://www.clusterdb.com/">Andew Morgan</a> has a new post introducing a tutorial to <a href="http://www.clusterdb.com/mysql-cluster/build-mysql-cluster-7-1-from-source-including-mysql-cluster-connector-for-java/">Build  MySQL Cluster 7.1 from source – including MySQL Cluster Connector for Java</a>. With Alex Fatkulin maybe running into an as yet possibly, sort of , kinda non-discovered bug, it&#8217;s only fair we also get some vision into the dark side on the MySQL front.  <a href="http://code.openark.org/blog/">Shlomi Noach states <a href="http://code.openark.org/blog/mysql/but-i-do-want-mysql-to-say-error">But I DO want MySQL to say “ERROR”!</a>.</p>
<p><a href="http://krow.livejournal.com"> Brian Aker</a> invites readers to participate at this year&#8217;s O&#8217;Reilly MySQL User&#8217;s Conference where they will be doing their first ever <a href="http://krow.livejournal.com/687219.html">Ignite</a> talk series. </p>
<p>Lastly, <a href="http://www.flamingspork.com/blog/">Stewart Smith</a> has a very good set of posts illustrating <a href="http://www.flamingspork.com/blog/2010/03/17/stored-proceduresfunctions-for-drizzle/">Stored Procedures/Functions for Drizzle</a>.  Check this out (from Stewart&#8217;s post).</p>
<pre class="brush: plain;">
drizzle&gt; select libtcc(&quot;#include &lt;string.h&gt;\n#include &lt;stdlib.h&gt;\nint foo(char* s) { char *a= 0x199c610; strcpy(s, a); return strlen(s); }&quot;) as result;

+--------------+
| result       |
+--------------+
| Hello World! |
+--------------+
1 row in set (0.01 sec)
</pre>
<p>I dare you.</p>
<p>On to SQL Server&#8230;.</p>
<p><a href="//scarydba.wordpress.com">Scary DBA SQL MVP Grant Fritchey</a> discusses <a href="http://scarydba.wordpress.com/2010/03/18/undocumented-virtual-column-lockres/">Undocumented Virtual Column: %%lockres%</a> and also recaps the <a href="http://scarydba.wordpress.com/2010/03/15/snessug-march-meeting/">SNESSUG March Meeting</a>.  </p>
<p><a href="http://sqlblog.com/blogs/jamie_thomson/default.aspx">Jamie Thomson</a> gives keyboard junkies some tips to <a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/03/18/kill-your-temp-tables-using-keyboard-shortcuts-ssms.aspx">Kill your temp tables using keyboard shortcuts : SSMS</a>.  Anyone interested in distributed queries should read Buck Woody&#8217;s <a href="http://sqlblog.com/blogs/buck_woody/archive/2010/03/16/using-linked-servers-openrowset-and-openquery.aspx">Using linked servers, OPENROWSET and OPENQUERY</a>.</p>
<p>Finally, Aaron Bertrand says with conviction <a href="http://sqlblog.com/blogs/aaron_bertrand/archive/2010/03/15/yes-you-can-benefit-from-both-data-and-backup-compression.aspx">&#8220;Yes, you can benefit from both data and backup compression&#8221;</a>.</p>
<p>Having now exhausted my supply of munchies, it is time for me to retire.  I bid you all a fantastic week.  Keep your data safe, folks.</p>
<p>Shakir</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/news/9971/log-buffer-183-a-carnival-of-the-vanities-for-dbas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogrotate #19: The Weekly Roundup of News for System Administrators</title>
		<link>http://www.pythian.com/news/9695/blogrotate-19-the-weekly-roundup-of-news-for-system-administrators/</link>
		<comments>http://www.pythian.com/news/9695/blogrotate-19-the-weekly-roundup-of-news-for-system-administrators/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 19:35:17 +0000</pubDate>
		<dc:creator>Brad Hudson</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[Technical Blog]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[Blogrotate]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[linus torvalds]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[Pythian]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[vmware]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.pythian.com/news/?p=9695</guid>
		<description><![CDATA[Good morning and welcome once again to the (usually) weekly round-up of news that matters to Sys Admins.  We missed last week for reasons previously stated, client work always comes first.  This week was yet another fast and furious week so let&#8217;s get started.
Operating Systems
In case anyone was wondering about SCO vs. Linux [...]]]></description>
			<content:encoded><![CDATA[<p>Good morning and welcome once again to the (usually) weekly round-up of news that matters to Sys Admins.  We missed last week for reasons previously stated, client work always comes first.  This week was yet another fast and furious week so let&#8217;s get started.</p>
<h3>Operating Systems</h3>
<p>In case anyone was wondering about SCO vs. Linux it is still going on.  If anyone has a lot of free time on their hands and is interested in lost causes, check out <a href="http://www.h-online.com/open/features/SCO-vs-Linux-The-story-so-far-746448.html#list">SCO vs. Linux: The story so far</a> at <a href="http://www.h-online.com">The H Online</a>.  Even more details can be found at the prolific <a href="http://www.groklaw.net">GrokLaw</a> in <a href="http://www.groklaw.net/staticpages/index.php?page=20050315132709446">Summary of SCO v IBM</a>.</p>
<p>If you are running Max OSX you may be vulnerable to at least 20 major security flaws in you system.  <span id="more-9695"></span>Security researcher <a href="http://en.wikipedia.org/wiki/Charlie_Miller_%28security_researcher%29">Charlie Miller</a> will be presenting full details at the upcoming <a href="http://cansecwest.com/">CanSecWest</a> conference.  Read more in <a href="http://www.h-online.com/security/news/item/Mac-OS-X-safer-but-less-secure-Update-957981.html">Mac OS X: &#8220;safer, but less secure&#8221; &#8211; Update</a>.</p>
<p>If you, like me, are part of the &#8220;never put a .0 release into production&#8221; school of thought, then you probably have not rolled out Windows 7 on your company desktops.  Fear not, SP1 is coming.  Check out <a href="http://www.computerworld.com/s/article/9172738/Microsoft_announces_Windows_7_SP1">Microsoft announces Windows 7 SP1</a> at <a href="http://www.computerworld.com">Computer World</a>.</p>
<h3>Internet</h3>
<p>Is Google set to leave China and close the www.google.cn site entirely?  Read the story on <a href="http://news.cnet.com">Cnet news</a> in <a href="http://news.cnet.com/8301-1023_3-20000757-93.html">Report: Google to leave China on April 10</a>.  The sources seem to be dubious, so I would take this with a grain of salt until the official announcement.</p>
<p>There has been stuff floating around the internet about DNS tunneling exploits for years.  The H Online is reporting that hacker Ron Bowes has now released a command line tool and code that could easily be integrated into an exploit.  Check out <a href="http://www.h-online.com/security/news/item/Exploit-code-with-DNS-tunnel-958688.html">Exploit code with DNS tunnel</a> for more.</p>
<p>Have you upgraded from FireFox 3.0 to 3.6 yet?  You probably should soon.  See <a href="http://www.h-online.com/security/news/item/Firefox-3-0-approaches-end-of-life-956587.html">Firefox 3.0 approaches end-of-life</a>.</p>
<h3>Security</h3>
<p><a href="http://www.theregister.co.uk">The Register</a> is reporting that almost 2 weeks after being notified <a href="http://www.theregister.co.uk/2010/03/19/energizer_battery_trojan_remains/">the Energizer site still plagued by data-stealing trojan</a>.  The file in question is &#8220;UsbCharger_setup_V1_1_1.exe&#8221; so try to avoid downloading that one. </p>
<p>There&#8217;s reports of a security flaw in milter, part of the spamassassin utility for scanning email.  The flaw allows a specially crafted RCPT command to trick postfix into running commands as root.  Sendmail servers seem to not be affected.  You can find more details in <a href="http://archives.neohapsis.com/archives/fulldisclosure/2010-03/0139.html">[Full-disclosure] Spamassassin Milter Plugin Remote Root</a>.</p>
<p>Here&#8217;s another follow-up to a previous item about the Waledec botnet being taken down by Microsoft.  See <a href="http://threatpost.com/en_us/blogs/waledac-botnet-now-completely-dead-experts-say-031610">Waledac Botnet Now Completely Crippled, Experts Say</a>.  Microsoft has also waxed poetic on the subject in <a href="http://blogs.technet.com/mmpc/archive/2010/03/15/what-we-know-and-learned-from-the-waledac-takedown.aspx">What we know (and learned) from the Waledac takedown</a> on the technet blog.</p>
<h3>Open Source</h3>
<p>Ars Technica has a cute item on hidden gems in open source applications, affectionately knows in geek nomenclature as &#8220;Easter Eggs&#8221;.  Check out <a href="http://arstechnica.com/open-source/news/2010/03/cracking-open-five-of-the-best-open-source-easter-eggs.ars?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rss">Cracking open five of the best open source easter eggs</a> for a larf, and read over the comments for a bunch more.</p>
<p>That&#8217;s all the time I will have this week.  I know there&#8217;s a lot more stuff from the last 2 weeks that I could have added, so feel free to leave your favourites in the comments.  &#8216;Til next week.</p>
<p>Who you trying to get crazy with SA, don&#8217;t you know I&#8217;m loco?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/news/9695/blogrotate-19-the-weekly-roundup-of-news-for-system-administrators/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deferrable constraints in Oracle 11gR2 may lead to logically corrupted data</title>
		<link>http://www.pythian.com/news/9881/deferrable-constraints-in-oracle-11gr2-may-lead-to-logically-corrupted-data/</link>
		<comments>http://www.pythian.com/news/9881/deferrable-constraints-in-oracle-11gr2-may-lead-to-logically-corrupted-data/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 21:40:17 +0000</pubDate>
		<dc:creator>Alex Fatkulin</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Technical Blog]]></category>
		<category><![CDATA[11g]]></category>
		<category><![CDATA[Oracle 11g]]></category>

		<guid isPermaLink="false">http://www.pythian.com/news/?p=9881</guid>
		<description><![CDATA[I&#8217;ve hit a bug in Oracle 11.2.0.1 when working with deferrable constraints which I think is worth sharing as it may have profound consequences under certain scenarios.
Let&#8217;s start by creating a simple table with a deferrable primary key:
SQL&#62; create table def_bug(n number primary key deferrable initially deferred);

Table created

SQL&#62; insert into def_bug values (1);

1 row inserted

SQL&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve hit a bug in Oracle 11.2.0.1 when working with deferrable constraints which I think is worth sharing as it may have profound consequences under certain scenarios.</p>
<p>Let&#8217;s start by creating a simple table with a deferrable primary key:</p>
<pre class="brush: sql;">SQL&gt; create table def_bug(n number primary key deferrable initially deferred);

Table created

SQL&gt; insert into def_bug values (1);

1 row inserted

SQL&gt; insert into def_bug values (2);

1 row inserted

SQL&gt; commit;

Commit complete</pre>
<p>You can confirm that the primary key constraint is working fine by trying to insert a duplicate value:</p>
<pre class="brush: sql;">SQL&gt; insert into def_bug values (1);

1 row inserted

SQL&gt; commit;

commit

ORA-02091: transaction rolled back
ORA-00001: unique constraint (SRC.SYS_C004070) violated</pre>
<p>So far so good. Open a second session and execute the following update:</p>
<pre class="brush: sql;">SQL&gt; update def_bug set n=3 where n=2;

1 row updated</pre>
<p>Do not commit yet and execute in your first session:</p>
<pre class="brush: sql;">SQL&gt; update def_bug set n=3 where n&lt;=2;</pre>
<p>The above update will block due to our second session holding a lock on the row where <em>n=2</em>. Now commit your second session&#8230;</p>
<pre class="brush: sql; highlight: [5];">SQL&gt; update def_bug set n=3 where n=2;

1 row updated

SQL&gt; commit;

Commit complete</pre>
<p> &#8230;and then commit your first session:</p>
<pre class="brush: sql; highlight: [5];">SQL&gt; update def_bug set n=3 where n&lt;=2;

1 row updated

SQL&gt; commit;

Commit complete</pre>
<p>Take a look at the data now:</p>
<pre class="brush: sql;">SQL&gt; select * from def_bug;

         N
----------
         3
         3</pre>
<p>Ouch! This was certainly unexpected. You can confirm that the primary key is still working by trying to insert a duplicate value again:</p>
<pre class="brush: sql;">SQL&gt; insert into def_bug values (3);

1 row inserted

SQL&gt; commit;

commit

ORA-02091: transaction rolled back
ORA-00001: unique constraint (SRC.SYS_C004070) violated</pre>
<p>It certainly looks like the update statement did not take into account deferrable constraint declared on the table during restart caused by the write consistency mechanism.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/news/9881/deferrable-constraints-in-oracle-11gr2-may-lead-to-logically-corrupted-data/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>dpanneur &#8211; your friendly DarkPAN/CPAN proxy corner store</title>
		<link>http://www.pythian.com/news/9389/dpanneur-your-friendly-darkpancpan-proxy-corner-store/</link>
		<comments>http://www.pythian.com/news/9389/dpanneur-your-friendly-darkpancpan-proxy-corner-store/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 19:40:47 +0000</pubDate>
		<dc:creator>Yanick Champoux</dc:creator>
				<category><![CDATA[SysAdmin]]></category>
		<category><![CDATA[Technical Blog]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[CPAN]]></category>
		<category><![CDATA[darkpan]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[mirror]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://www.pythian.com/news/?p=9389</guid>
		<description><![CDATA[CC BY-NC-SA 2.0
There were two things I have wanted to do for some time now. The first was to come up with a way to quickly and easily set up a DarkPAN mirror so that we would have more control over our dependency chain at work. The second was to make a portable CPAN proxy [...]]]></description>
			<content:encoded><![CDATA[<div style="font-size: small;float: right;margin: 15px"><a rel="cc:attributionURL" href="http://www.flickr.com/photos/21253803@N06/"><img src="http://babyl.dyndns.org/techblog/depanneur.jpg" alt="dépanneur" width="250" /></a><br /><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.0/">CC BY-NC-SA 2.0</a></div>
<p>There were two things I have wanted to do for some time now. The first was to come up with a way to quickly and easily set up a DarkPAN mirror so that we would have more control over our dependency chain at work. The second was to make a portable CPAN proxy service, so that I can always have access to my favorite modules, even if the machine I&#8217;m working on has no Internet access. Last week, I finally had a few &#8216;rount tuits&#8217; to spend on this type of background itch, and the result is <a href="http://github.com/yanick/dpanneur">dpanneur</a> (for <em>dépanneur</em>, French Canadian for <em>convenience store</em>).</p>
<p><strong>Installation</strong></p>
<p>As it stands, <em>dpanneur</em> is a very thin Catalyst application gluing together the goodiness of <a href="http://search.cpan.org/dist/CPAN-Cache">CPAN::Cache</a> and <a href="http://search.cpan.orgl/dist/MyCPAN-App-DPAN">MyCPAN::App::DPAN</a>, and throwing in Git as the archive manager.</p>
<p>To get it running, first fetch it from Github</p>
<pre class="brush: bash;">
$ git clone git://github.com/yanick/dpanneur.git
</pre>
<p>then check that you have all the dependencies</p>
<pre class="brush: bash;">
$ perl Makefile.PL
</pre>
<p>and run the script that will create the module repository</p>
<pre class="brush: bash;">
$ ./script/create_repo
</pre>
<p>For now, the module repository is hard-coded to be in the subdirectory <em>cpan</em> of <em>dpanneur</em>. A branch called <em>proxy</em> is created and checked out. Eventually, I&#8217;ll use GitStore to push newly fetched modules to the repository, but for the time being if <em>dpanneur</em> is to be used as a proxy, that branch must remain as the one being checked out.</p>
<p>All that is left is to fire up the server in whichever mode you prefer (single-thread test server would do nicely for now)</p>
<pre class="brush: bash;">
$ ./script/dpanneur_server.pl
</pre>
<p>and there you are, running your first dpanneur. Congrats! :-)</p>
<p><strong>Using it as a caching proxy</strong></p>
<p>You can use the server as a caching proxy, either for its own sake, or to seed the DarkPAN branches. To do that, you just have to configure your CPAN client to use <em>http://yourmachine:3000/proxy</em>:</p>
<pre class="brush: bash;">
$ cpan
cpan[1]&gt; o conf urllist = http://localhost:3000/proxy
cpan[2]&gt; reload index
cpan[3]&gt; install Acme::EyeDrops
Running install for module 'Acme::EyeDrops'
Running make for A/AS/ASAVIGE/Acme-EyeDrops-1.55.tar.gz
Fetching with LWP:
    http://localhost:3000/proxy/authors/id/A/AS/ASAVIGE/Acme-EyeDrops-1.55.tar.gz
etc..
</pre>
<p>As the modules are downloaded, they are also saved and committed within the repo</p>
<pre class="brush: bash;">
[dpanneur]$ cd cpan

[cpan (proxy)]$ git log -n 3
commit d065ad152f2204295334c5475104a3da517b6ae1
Author: Yanick Champoux &lt;yanick@babyl.dyndns.org&gt;
Date:   Wed Mar 10 20:32:52 2010 -0500

    authors/id/A/AS/ASAVIGE/Acme-EyeDrops-1.55.tar.gz

commit e8d2e83d1b16e2e0713d125f9a4bd2742681f859
Author: Yanick Champoux &lt;yanick@babyl.dyndns.org&gt;

Date:   Wed Mar 10 20:31:42 2010 -0500

    authors/id/D/DC/DCONWAY/Acme-Bleach-1.12.tar.gz

commit 7e0b4b600bac8424c519199ee96dc56ffbb177eb
Author: Yanick Champoux &lt;yanick@babyl.dyndns.org&gt;
Date:   Wed Mar 10 20:30:47 2010 -0500

    modules/03modlist.data.gz
</pre>
<p><strong>Using it as a DarkPAN server</strong></p>
<p>There is not much more involved to enabling DarkPAN repos. All we have to do is to create a branch with the modules we want and have the &#8216;dpan&#8217; utility bundled with MyCPAN::App::DPAN generate the right files for us.</p>
<p>To continue with the example of the previous section, let&#8217;s say that we want a DarkPAN branch containing Acme::EyeDrops, but not Acme::Bleach. Then we&#8217;d do</p>
<pre class="brush: bash;">
                        # only necessary if you are running
                        # the server while you work on the branch
[dpanneur]$ git clone cpan cpan-work   

[dpanneur]$ cd cpan-work

                        # branch just before we imported Acme::Bleach
[cpan-work (proxy)]$ git branch pictoral 7e0b4b600bac8424c519199ee96dc56ffbb177eb

[cpan-work (proxy)]$ git checkout pictoral
Switched to branch 'pictoral'

                        # cherry-pick the Acme::EyeDrops commit
[cpan-work (pictoral)]$ git cherry-pick d065ad152f2204295334c5475104a3da517b6ae1

                        # rebuild the module list
[cpan-work (pictoral)]$ dpan

                        # commit the new 02packages.details.txt.gz
[cpan-work (pictoral)]$ git add .
[cpan-work (pictoral)]$ git commit -m &quot;dpan processing&quot;

                        # push back to the mothership
[cpan-work (pictoral)]$ git push origin pictoral
</pre>
<p>And that&#8217;s it. Now point the cpan client to <em>http://yourmachine:3000/pictoral</em>, and you&#8217;ll get the limited mirror.</p>
<pre class="brush: bash;">
cpan[1]&gt; o conf urllist http://localhost:3000/pictoral
cpan[2]&gt; reload index

cpan[3]&gt; i Acme::EyeDrops
Strange distribution name [Acme::EyeDrops]
Module id = Acme::EyeDrops
    CPAN_USERID  ASAVIGE (Andrew J. Savige &amp;lt;asavige@cpan.org&gt;)
    CPAN_VERSION 1.55
    CPAN_FILE    A/AS/ASAVIGE/Acme-EyeDrops-1.55.tar.gz
    UPLOAD_DATE  2008-12-02
    MANPAGE      Acme::EyeDrops - Visual Programming in Perl
    INST_FILE    /usr/local/share/perl/5.10.0/Acme/EyeDrops.pm
    INST_VERSION 1.55

cpan[4]&gt; i Acme::Bleach
Strange distribution name [Acme::Bleach]
No objects found of any type for argument Acme::Bleach
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/news/9389/dpanneur-your-friendly-darkpancpan-proxy-corner-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log Buffer #182, a Carnival of the Vanities for DBAs</title>
		<link>http://www.pythian.com/news/9417/log-buffer-182-a-carnival-of-the-vanities-for-dbas/</link>
		<comments>http://www.pythian.com/news/9417/log-buffer-182-a-carnival-of-the-vanities-for-dbas/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 17:01:59 +0000</pubDate>
		<dc:creator>Sheeri Cabral</dc:creator>
				<category><![CDATA[Log Buffer]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technical Blog]]></category>
		<category><![CDATA[alias]]></category>
		<category><![CDATA[batch]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[capacity planning]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[column]]></category>
		<category><![CDATA[column store]]></category>
		<category><![CDATA[column-oriented]]></category>
		<category><![CDATA[confoo]]></category>
		<category><![CDATA[convention]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[DB2]]></category>
		<category><![CDATA[drizzle]]></category>
		<category><![CDATA[dw]]></category>
		<category><![CDATA[e-book]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[etl]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[implicit commit]]></category>
		<category><![CDATA[infinidb]]></category>
		<category><![CDATA[internship]]></category>
		<category><![CDATA[IO]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[mainframes]]></category>
		<category><![CDATA[migrate]]></category>
		<category><![CDATA[migration]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[patching]]></category>
		<category><![CDATA[relational]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[scale]]></category>
		<category><![CDATA[scaling]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[slides]]></category>
		<category><![CDATA[STATISTICS IO]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[survey]]></category>
		<category><![CDATA[table alias]]></category>
		<category><![CDATA[top]]></category>
		<category><![CDATA[TSQL]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[vertical]]></category>

		<guid isPermaLink="false">http://www.pythian.com/news/?p=9417</guid>
		<description><![CDATA[This is the 182nd edition of Log Buffer, the weekly review of database blogs.  Make sure to read the whole edition so you do not miss where to submit your SQL limerick!
This week started out with me posting about International Women&#8217;s Day, and has me personally attending Confoo (Montreal) which is an excellent conference [...]]]></description>
			<content:encoded><![CDATA[<p>This is the 182nd edition of Log Buffer, the weekly review of database blogs.  Make sure to read the whole edition so you do not miss where to submit your SQL limerick!</p>
<p>This week started out with <A HREF="http://www.pythian.com/news/author/sheeri/">me</A> posting about <A HREF="http://www.pythian.com/news/9207/international-womens-day/">International Women&#8217;s Day</A>, and has me personally attending <A HREF="http://www.confoo.ca">Confoo</A> (Montreal) which is an excellent conference I hope to return to next year.  I learned a lot from confoo, especially the <A HREF="http://www.pythian.com/news/9387/liveblogging-at-confoo-blending-nosql-and-sql/">blending nosql and sql</A> session I attended.</p>
<p>This week was also the <A HREF="http://www.hotsos.com/sym10.html">Hotsos Symposium</a>.  <A HREF="http://oracledoug.com/serendipity/index.php">Doug&#8217;s Oracle Blog</A> has a <A HREF="http://oracledoug.com/serendipity/index.php?/plugin/tag/hotsos+2010">series of posts about Hotsos</A>.  If all this talk about conferences has gotten you excited, <A HREF="http://www.commandprompt.com/blogs/joshua_drake/">Joshua Drake</a> notes that <A HREF="http://www.commandprompt.com/blogs/joshua_drake/2010/03/14_days_and_the_hotel_is_almost_full_for_postgresql_conference_east/">14 days and the hotel is almost full for postgresql conference east</a> which is <A HREF="http://www.postgresqlconference.org/">March 25th-28th in Philadelphia</a>.  And the <A HREF="http://blogs.oracle.com/databaseinsider/">Oracle database insider</a> notes that the <A HREF="http://blogs.oracle.com/databaseinsider/2010/03/oracle_openworld_2010_call_for.html">Oracle OpenWorld call for papers</a> is now open.</p>
<p>According to <A HREF="https://www.ibm.com/developerworks/mydeveloperworks/blogs/SusanVisser/">Susan Visser</A> this week (ending tomorrow) is also <A HREF="https://www.ibm.com/developerworks/mydeveloperworks/blogs/SusanVisser/entry/read_an_e_book_week_march_7_1312?lang=en">read an e-book week</a>.  So if you have not already done so, read an e-book!  She links a coupon for an e-book in the post.<br />
<span id="more-9417"></span></p>
<p><A HREF="http://db2portal.blogspot.com/">Craig Mullins</A> notes that the mainframe is a good career choice in <A HREF="http://db2portal.blogspot.com/2010/03/mainframes-safe-it-career-choice.html">Mainframes: The Safe IT Career Choice</A>.  He notes that the mainframe is still not dead:</p>
<blockquote><p>People having been predicting the death of the mainframe since the advent of client/server in the late 1980s. That is more than 20 years! Think of all the things that have died in that timespan while the mainframe keeps on chugging away: IBM&#8217;s PC business, Circuit City, Koogle peanut butter, public pay phones, Johnny Cash&#8230; the list is endless.</p></blockquote>
<p>In other career-related news, <A HREF="http://antoniocangiano.com/">Antonio Cangiano</A> is <A HREF="http://antoniocangiano.com/2010/03/05/heads-up-ibm-is-looking-for-top-notch-student-hackers/">looking for [2] top-notch student hackers</A> for a 16-month internship at IBM in Toronto starting in May.  All the details, including how to apply, are in Cangiano&#8217;s blog post.</p>
<p><A HREF="http://it.toolbox.com/blogs/db2zos/">Willie Favero</A> wants to know how you &#8220;solve the batch dilemma&#8221; for issues like &#8220;shrinking your batch window, designing your batch to play nicely with &#8230; OLTP&#8221; in <A HREF="http://it.toolbox.com/blogs/db2zos/hows-your-batch-workload-doing-37343">how&#8217;s your batch workload doing?</a>  Perhaps Favero should read the <A HREF="http://blogs.oracle.com/theshortenspot/2010/03/updated_batch_best_practices.html">updated batch best practices</a> posted by <A HREF="http://blogs.oracle.com/theshortenspot/">Anthony Shorten</A>.</p>
<p><A HREF="https://www.ibm.com/developerworks/mydeveloperworks/blogs/idm/">Bryan Smith</A> surveys a more personal question by asking if you <A HREF="http://www.urbandictionary.com/products.php?defid=1793756">go both ways</A> and &#8220;manage both DB2 for Linux, UNIX, and Windows and DB2 for z/OS&#8221; in <A HREF="https://www.ibm.com/developerworks/mydeveloperworks/blogs/idm/entry/don_t_ask_don_t_tell_bi_platform_dbas?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+ManagingTheDataLifecycle+%28Data+Studio+Team%29&#038;lang=en">don&#8217;t ask, don&#8217;t tell, bi-platform DBAs</A>.  This week&#8217;s Log Buffer editor admits to being a tri-platform DBA &#8212; she has tried many platforms, and in fact, many databases (MySQL, Oracle, DB2, SQL Server, Sybase, Postgres and Ingres)!</p>
<p><A HREF="http://blogs.oracle.com/gridautomation/">Hari Prasanna Srinivasan</a> promotes a patching survey in <A HREF="http://blogs.oracle.com/gridautomation/2010/03/oracle_really_wants_to_hear_fr.html">Oracle really wants to hear from you! Patching Survey</A>.</p>
<p><A HREF="http://blog.4loeser.net/">Henrik Loeser</A> explains what a deadlock and a hot spot are by using a real life analogy taken from a police report in <A HREF="http://blog.4loeser.net/2010/03/deadlock-and-hot-spot-in-real-life.html">deadlock and hot spot in real life</a>.</p>
<p><A HREF="http://sqlblog.com/blogs/jamie_thomson/">Jamie Thomson</A> asks <A HREF="http://sqlblog.com/blogs/jamie_thomson/archive/2010/03/08/why-do-you-abbreviate-schema-names.aspx">why do you abbreviate schema names?</a>.  <A HREF="http://code.openark.org/blog/">Shlomi Noach</A> tries to solve the issue that &#8220;there is no consistent convention as for how to write [about table aliases in] an SQL query&#8221; in <A HREF="http://code.openark.org/blog/mysql/proper-sql-table-alias-use-conventions">proper sql table alias use conventions</A>.  Noach also gives us a <A HREF="http://code.openark.org/blog/mysql/tip-faster-than-truncate">tip: faster than truncate</a>.</p>
<p><A HREF="http://lpetr.org/blog/archives/">Leons Petrazickis</A> reminds us that &#8220;rulesets are chains&#8221; and it is important to have your rulesets in the proper order in <A HREF="http://lpetr.org/blog/archives/iptables-firewall-pitfall">iptables firewall pitfall</a>.</p>
<p>Anyone interested in <A HREF="http://buytaert.net/the-history-of-mysql-ab">the history of MySQL AB</A> will be informed after reading <A HREF="http://buytaert.net/">Dries Buytaert</a>&#8217;s article.<br />
<A HREF="http://gtowey.blogspot.com/">Gavin Towey</A> shares his software that helps centrally manage 120 MySQL servers in <A HREF="http://gtowey.blogspot.com/2010/03/qshpl-distributed-query-tool.html">qsh.pl: distributed query tool</A>  For those who want to learn more about column-oriented databases, particularly in MySQL, <A HREF="http://infinidb.org/infinidb-blog/">Robin Schumacher of the InfiniDB blog</a> announces that there is a <A HREF="http://infinidb.org/infinidb-blog/mysql-university-session-recording-on-mysql-column-databases-now-available.html">MySQL University session recording on MySQL column databases now available</a>.  MySQL join-fu expert <A HREF="http://www.joinfu.com/">Jay Pipes</A> has moved his blog to <A HREF="http://www.joinfu.com">www.joinfu.com</A> and starts with <A HREF="http://www.joinfu.com/2010/03/a-sql-puzzle/">An SQL Puzzle</A> and of course <A HREF="http://www.joinfu.com/2010/03/a-follow-up-on-the-sql-puzzle/">a follow up on the sql puzzle</A>.</p>
<p><A HREF="http://izoratti.blogspot.com/">Ivan Zoratti</A> is happy that <A HREF="http://izoratti.blogspot.com/2010/03/finally-slides-posted-for-dw-breakfast.html">finally, slides posted for the MySQL DW breakfast</A>.  <A HREF="http://venublog.com/">Venu Anuganti</A> gives you tips on one of the most common MySQL frustrations:  optimizing subqueries in <A HREF="http://venublog.com/2010/03/06/how-to-improve-subqueries-derived-tables-performance/">how to improve subqueries derived tables performance</a>.  <A HREF="http://swanhart.livejournal.com/">Justin Swanhart</A> posts the way in which he <A HREF="http://swanhart.livejournal.com/131541.html">Gets Linux performance information from your MySQL database without shell access</a> and <A HREF="http://swanhart.livejournal.com/131788.html">emulates a &#8216;top&#8217; CPU summary using /proc/stat and MySQL</A> using the same method.</p>
<p>The <A HREF="http://www.oracleappsblog.com/index.php">Oracle Apps blog</a> has an <A HREF="http://www.oracleappsblog.com/index.php/weblog/introduction-to-oracle-user-productivity-kit-upk/">introduction to Oracle user productivity kit</a> (UPK).  Even though in this editor&#8217;s opinion the article is very sales-pitchy, it has valuable information, and does indeed live up to its promise:</p>
<blockquote><p>UPK is a software tool that can capture all the steps in a system process. It records every keystroke, every click of the mouse, each menu option chosen and each button pressed. All this is done in the UPK Recorder by going through the transaction and pressing “printscreen” after every user action. From this, without any further effort from the developer, UPK builds a number of valuable outputs.</p></blockquote>
<p><A HREF="http://sqlblog.com/blogs/allen_white/">Allen White</a> gives a great tip on how to optimize queries in <A HREF="http://sqlblog.com/blogs/allen_white/archive/2010/03/05/keep-your-data-clean.aspx">keep your data clean</a>.</p>
<p><A HREF="http://blogs.oracle.com/UPGRADE/">Mike Dietrich</A> reminds you to <A HREF="http://blogs.oracle.com/UPGRADE/2010/03/remove_old_parameters_and_even.html">remove &#8220;old&#8221; parameters and events from your init.ora</A> when upgrading, &#8220;as keeping them will definitely slow down the database performance in the new release.&#8221;  He shows evidence of slowness when this is not done.  Dietrich also shows how you can be <A HREF="http://blogs.oracle.com/UPGRADE/2010/03/gathering_workload_statistics.html">gathering workload statistics</A> &#8220;to give the optimizer some good knowledge about how powerful your IO-system might be&#8221;, especially &#8220;a few days after upgrading to the new release&#8230;while a real workload is running.&#8221;</p>
<p><A HREF="http://krow.livejournal.com/">Brian Aker</a> shows the exciting features coming soon in Drizzle in <A HREF="http://krow.livejournal.com/686178.html">Drizzle, Cherry, Roadmap for our Next Release</A>.</p>
<p>Maybe you are thinking of migrating, not upgrading&#8230;..<A HREF="http://radar.oreilly.com/">The O&#8217;Reilly Radar</A> shows how to asses an Oracle to MySQL migration in <A HREF="http://radar.oreilly.com/2010/03/oracle-to-mysql.html">MySQL migration and risk management</A>.  Actually, that article interviews <A HREF="http://ronaldbradford.com">Ronald Bradford</A> on the subject &#8212; Bradford has been prolific lately, updating <A HREF="http://ronaldbradford.com/blog/tag/my-cnf/">free my.cnf advice series</a> and <A HREF="http://ronaldbradford.com/blog/tag/mysql4oracledba/">&#8220;Don&#8217;t Assume&#8221;: MySQL for the Oracle DBA series</A>.  <A HREF="http://blogs.oracle.com/stevenChan/">Nick Quarmby</A> also talks about migrating Oracle, but not to a new database, just to a new platform, in his <A HREF="http://blogs.oracle.com/stevenChan/2010/03/migrating_oracle_applications_to_new_platforms.html">primer on migrating Oracle Applications to new platforms</A>.  And the big news comes from <A HREF="http://www.dataprix.com/en/blogs/carlos">Carlos of dataprix</a> that <A HREF="http://www.dataprix.com/en/blogs/carlos/twitter-will-migrate-mysql-cassandra-db">Twitter will migrate from MySQL to Cassandra DB</A>.</p>
<p><A HREF="http://www.sqlskills.com/BLOGS/PAUL/">Paul S. Randal</a> explains his way of <A HREF="http://www.sqlskills.com/BLOGS/PAUL/post/Benchmarking-1-TB-table-population-%28part-4-network-optimization%29.aspx">benchmarking: 1 Tb table population</a> on SQL Server.</p>
<p><A HREF="http://www.petefinnigan.com/weblog/entries/">Pete Finnigan</A> shares his slides from <A HREF="http://www.petefinnigan.com/weblog/archives/00001314.htm">a webinar on how to secure oracle</A>, and <A HREF="http://blogs.oracle.com/security/">Denis Pilipchuk</A> shares his <A HREF="http://blogs.oracle.com/security/2010/03/approaches_for_discovering_sec.html">approaches for discovering security vulnerabilities in software applications</A>.</p>
<p><A HREF="http://thoughts.j-davis.com/">Jeff Davis</A> shares his thoughts about <A HREF="http://thoughts.j-davis.com/2010/03/07/scalability-and-the-relational-model/">scalability and the relational model</A>.  <A HREF="http://www.xzilla.net/">Robert Treat</A> responds <A HREF="http://www.xzilla.net/blog/2010/Mar/Actually,-the-Relational-Model-doesnt-scale.html">actually, the relational model doesn&#8217;t scale</a> and <A HREF="http://www.xaprb.com/">Baron Schwartz</A> counters with <A HREF="http://www.xaprb.com/blog/2010/03/08/nosql-doesnt-mean-non-relational/">NoSQL doesn&#8217;t mean non-relational</a>.</p>
<p><A HREF="http://sqlblog.com/blogs/buck_woody/">Buck Woody</A> explains &#8220;whenever you want to know something about SQL Server’s configuration, whether that’s the Instance itself or a database, you have a few options&#8221; &#8212; and of course what those options are &#8212; in <A HREF="http://sqlblog.com/blogs/buck_woody/archive/2010/03/11/system-variables-stored-procedures-or-functions-for-meta-data.aspx">system variables, stored procedures or functions for meta data</a>.</p>
<p>This week&#8217;s <A HREF="http://www.straightpathsql.com/archives/2010/03/invitation-for-t-sql-tuesday-004-io/">T-SQL Tuesday</A> topic was I/O.  There are many links to great blog posts in the comments; three random posts I chose to highlight: <A HREF="http://sqlblog.com/blogs/michael_zilberstein/">Michael Zilberstein</A> talks about <A HREF="http://sqlblog.com/blogs/michael_zilberstein/archive/2010/03/09/23065.aspx">IO capacity planning</A>, while <A HREF="http://sqlblog.com/blogs/kalen_delaney/">Kalen Delaney</a> talks about using STATISTICS IO in <A HREF="http://sqlblog.com/blogs/kalen_delaney/archive/2010/03/09/tsql-tuesday-4-io.aspx">I/O, you know</a>, and <A HREF="http://sqlblog.com/blogs/merrill_aldrich/">Merrill Aldrich</a> chimes in with information on <A HREF="http://sqlblog.com/blogs/merrill_aldrich/archive/2010/03/08/t-sql-tuesday-004-real-world-ssd-s.aspx">real world SSD&#8217;s</a>.  Aldrich also begs folks not to waste resources and make more work for developers and DBAs in <A HREF="http://sqlblog.com/blogs/merrill_aldrich/archive/2010/03/11/dear-isv-you-re-keeping-me-awake-nights-with-your-varchar-dates.aspx">dear ISV, you&#8217;re keeping me awake nights with your VARCHAR() dates</A>.</p>
<p>And we end with a bit of fin:  <A HREF="http://sqlblog.com/blogs/paul_nielsen/">Paul Nielsen</A> wants us all to have a bit of fun; he has posted an SQL limerick and asks readers to create there own in <A HREF="http://sqlblog.com/blogs/paul_nielsen/archive/2010/03/11/there-once-was-in-dublin-a-query.aspx">there once was in Dublin a query</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/news/9417/log-buffer-182-a-carnival-of-the-vanities-for-dbas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liveblogging at Confoo: Blending NoSQL and SQL</title>
		<link>http://www.pythian.com/news/9387/liveblogging-at-confoo-blending-nosql-and-sql/</link>
		<comments>http://www.pythian.com/news/9387/liveblogging-at-confoo-blending-nosql-and-sql/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 16:11:53 +0000</pubDate>
		<dc:creator>Sheeri Cabral</dc:creator>
				<category><![CDATA[Group Blog Posts]]></category>
		<category><![CDATA[bigtable]]></category>
		<category><![CDATA[bson]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[column store]]></category>
		<category><![CDATA[column-oriented]]></category>
		<category><![CDATA[confoo]]></category>
		<category><![CDATA[CouchDB]]></category>
		<category><![CDATA[datamapper]]></category>
		<category><![CDATA[document database]]></category>
		<category><![CDATA[dynomite]]></category>
		<category><![CDATA[gloo]]></category>
		<category><![CDATA[graph]]></category>
		<category><![CDATA[graph database]]></category>
		<category><![CDATA[gridfs]]></category>
		<category><![CDATA[hbase]]></category>
		<category><![CDATA[hypertable]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[key-value]]></category>
		<category><![CDATA[map reduce]]></category>
		<category><![CDATA[memcacheddb]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[neo4j]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Pythian]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[riak]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scaling]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[tokyo cabinet]]></category>
		<category><![CDATA[voldemort]]></category>

		<guid isPermaLink="false">http://www.pythian.com/news/?p=9387</guid>
		<description><![CDATA[Persistence Smoothie:  Blending NoSQL and SQL &#8211; see user feedback and comments at http://joind.in/talk/view/1332.
Michael Bleigh from Intridea, high-end Ruby and Ruby on Rails consultants, build apps from start to finish, making it scalable.   He&#8217;s written a lot of stuff, available at http://github.com/intridea.  @mbleigh on twitter
NoSQL is a new way to think [...]]]></description>
			<content:encoded><![CDATA[<p>Persistence Smoothie:  Blending NoSQL and SQL &#8211; see user feedback and comments at <A HREF="http://joind.in/talk/view/1332">http://joind.in/talk/view/1332</A>.</p>
<p>Michael Bleigh from <A HREF="http://intridea.com/">Intridea</A>, high-end Ruby and Ruby on Rails consultants, build apps from start to finish, making it scalable.   He&#8217;s written a lot of stuff, available at <A HREF="http://github.com/intridea">http://github.com/intridea</A>.  @mbleigh on twitter</p>
<p>NoSQL is a new way to think about persistence.  Most NoSQL systems are not ACID compliant (Atomicity, Consistency, Isolation, Durability).</p>
<p>Generally, most NoSQL systems have:<br />
<span id="more-9387"></span><br />
<UL><LI>Denormalization<br />
</LI><LI>Eventual Consistency<br />
</LI><LI>Schema-Free<br />
</LI><LI>Horizontal Scale<br />
</LI></UL></p>
<p>NoSQL tries to scale (more) simply, it is starting to go mainstream &#8211; NY Times, BBC, SourceForge, Digg, Sony, ShopWiki, Meebo, and more.  But it&#8217;s not *entirely* mainstream, it&#8217;s still hard to sell due to compliance and other reasons.</p>
<p>NoSQL has gotten very popular, lots of blog posts about them, but they reach this hype peak and obviously it can&#8217;t do everything.</p>
<p>&#8220;NoSQL is a (growing) collection of tools, not a new way of life.&#8221;</p>
<p>What is NoSQL?  Can be several things:<br />
<UL><LI>Key-Value Stores<br />
</LI><LI>Document Databases<br />
</LI><LI>Column-oriented data stores<br />
</LI><LI>Graph Databases<br />
</LI></UL></p>
<p><H2>Key-Value Stores</H2><br />
<A HREF="http://www.memcached.org">memcached</a> is a &#8220;big hash in the sky&#8221; &#8211; it is a key value store.  Similarly, NoSQL key-value stores &#8220;add to that big hash in the sky&#8221; and store to disk.</p>
<p>Speaker&#8217;s favorite is <A HREF="http://code.google.com/p/redis/">Redis</a> because it&#8217;s similar to memcached.<br />
<UL><LI>key-value store + datatypes (list, sets, scored sets, soon hashes will be there)<br />
</LI><LI>cache-like functions (like expiration)<br />
</LI><LI>(Mostly) in-memory<br />
</LI></UL></p>
<p>Another interesting key-value store is <A HREF="http://riak.basho.com">Riak</A><br />
<UL><LI>Combination of key-value store and document database<br />
</LI><LI>heavy into HTTP REST<br />
</LI><LI>You can create links between documents, and do &#8220;link walking&#8221; that you don&#8217;t normally get out of a key-value store<br />
</LI><LI>built-in Map Reduce<br />
</LI></UL></p>
<p><H2>Map Reduce:</H2><br />
<UL><LI>Massively parallel way to process large datasets<br />
</LI><LI>First you scour data and &#8220;map&#8221; a new set of dataM<br />
</LI><LI>Then you &#8220;reduce&#8221; the data down to a salient result &#8212; for example, map reduce function to make a tag cloud:  map function makes an array with a tag name and a count of 1 for each instance of that tag, and the reduce tag goes through that array and counts them&#8230;<br />
</LI><LI><A HREF="http://en.wikipedia.org/wiki/MapReduce">http://en.wikipedia.org/wiki/MapReduce</A><br />
</LI></UL></p>
<p>Other key-value stores:<br />
<UL><LI><A HREF="http://1978th.net/tokyocabinet">Tokyo Cabinet</a><br />
</LI><LI><A HREF="http://github.com/cliffmoon/dynomite">Dynomite</a><br />
</LI><LI><A HREF="http://memcachedb.org">memcachedDB</A><br />
</LI><LI><A HREF="http://project-voldemort.com/">Voldemort</A><br />
</LI></UL></p>
<p><H2>Document Databases</H2><br />
Some say that it&#8217;s the &#8220;closest&#8221; thing to real SQL.<br />
<UL><LI><A HREF="http://www.mongodb.org">MongoDB</A> &#8211; Document store that speaks <A HREF="http://en.wikipedia.org/wiki/BSON">BSON</a> (Binary JSON, which is compact).  This is the speaker&#8217;s favorite because it has a rich query syntax that makes it close to SQL.  Can&#8217;t do joins, but can embed objects in other objects, so it&#8217;s a tradeoff</LI><br />
  <UL><LI>Also has <A HREF="http://www.mongodb.org/display/DOCS/GridFS">GridFS</A> that can store large files efficiently, can scale to petabytes of data<br />
  </LI><LI>does have MapReduce but it&#8217;s deliberate and you run it every so often.<br />
  </LI></UL></p>
<p><LI><A HREF="http://couchdb.apache.org">CouchDB</a><br />
<UL><LI>Pure <A HREF="http://www.json.org">JSON</a> Document Store &#8211; can query directly with nearly pure javascript (there are auth issues) but it&#8217;s an interesting paradigm to be able to run your app almost entirely through javascript.<br />
</LI><LI>HTTP REST interface<br />
</LI><LI>MapReduce only to see items in CouchDB.  Incremental MapReduce, every time you add or modify a document, it dynamically changes the functions you&#8217;ve written.  You can do really powerful queries as easy as you can do simple queries.  However, some things are really complex, ie, pagination is almost impossible to do.<br />
</LI><LI>Intelligent Replication &#8211; CouchDB is designed to work with offline integration.  Could be used instead of SQLite as the HTML5 data store, but you need CouchDB running locally to be doing offline stuff w/CouchDB<br />
</LI></UL><br />
</UL></p>
<p><H2>Column-oriented store</H2><br />
Columns are stored together (ie, names) instead of rows.  Lets you be schema-less because you don&#8217;t care about a row&#8217;s consistency, you can just add a column to a table very easily.</LI></p>
<p><UL><LI><A HREF="http://incubator.apache.org/cassandra/">Cassandra</A> &#8211; Built by Facebook, also used by Twitter<br />
</LI><LI><A HREF="http://en.wikipedia.org/wiki/BigTable">BigTable</a><br />
</LI><LI><A HREF="http://hypertable.org">Hypertable</A><br />
</LI><LI><A HREF="http://hadoop.apache.org/hbase/">HBase</A><br />
</LI></UL></p>
<p><H2>Graph Databases</H2><br />
speaker&#8217;s opinion &#8211; there aren&#8217;t enough of these.<br />
<A HREF="http://neo4j.org">Neo4J</a> &#8211; can handle modeling complex relationships &#8211; &#8220;friends of friends of cousins&#8221; but it requires a license.</p>
<p><H2>When should I use this stuff?</H2><br />
<TABLE><TR><TH>If you have:</TH><TH>Use</TH></TR><br />
<TR><TD>Complex, slow joins for an &#8220;activity stream&#8221;</TD><TD>Denormalize, use a key-value store.</TD></TR><br />
<TR><TD>Variable schema, vertical interaction</TD><TD>Document database or column store</TD></TR><br />
<TR><TD>Modeling multi-step relationships (linkedin, friends of friends, etc)</TD><TD>Graph</TD></TR></TABLE></p>
<p>Don&#8217;t look for a single tool that does every job.  Use more than one if it&#8217;s appropriate, weigh the tradeoffs (ie, don&#8217;t have 7 different data stores either!)</p>
<p>NoSQL solves real scalability and data design issues.  But financial transactions HAVE to be atomic, so don&#8217;t use NoSQL for those.</p>
<p>A good presentation is <A HREF="http://www.slideshare.net/bscofield/the-state-of-nosql">http://www.slideshare.net/bscofield/the-state-of-nosql</A>.</p>
<p><H2>Using SQL and NoSQL together</H2><br />
Why?  Well, your data is already in an SQL database (most likely).</p>
<p>You can blend by hand, but the easy way is <A HREF="http://datamapper.org">DataMapper</a>:<br />
Generic, relational ORM (adapters for many SQL dbs and many NoSQL stores)<br />
Implements Identity Map<br />
Module-based inclusion (instead of extending from a class, you just include into a class).</p>
<p>You can set up multiple data targets (default is MySQL, example sets up MongoDB too).<br />
DataMapper is:<br />
<UL><LI>Ultimate Polyglot ORM<br />
</LI><LI>simple r&#8217;ships btween persistence engines are easy<br />
</LI><LI>jack of all, master none<br />
</LI><LI>Sometimes perpetuates false assumptions &#8211;<br />
</LI><LI>If you&#8217;re in Ruby, your legacy stuff is in ActiveRecord, so you&#8217;re going to have to rewrite your code anyway.<br />
</LI></UL></p>
<p>Speaker&#8217;s idea to be less generic and better use of features of each data store &#8211; <A HREF="http://github.com/intridea/gloo">Gloo</A> &#8211; &#8220;Gloo glues together different ORMs by providing relationship proxies.&#8221;  this software is ALPHA ALPHA ALPHA.  </p>
<p>The goal is to be able to define relationships on the terms of any ORM from any class, ORM or not<br />
Right now &#8211; partially working activeRecord relationships<br />
Is he doing it wrong? Is it a crazy/stupid idea?  Maybe.</p>
<p>Example:<br />
<TABLE><TH>Need</TH><TH>Use</TH></TR><br />
<TR><TD>Assume you already have an auth system</TD><TD>it&#8217;s already in SQL, so leave it there.</TD></TR><br />
<TR><TD>Need users to be able to purchase items from the storefront &#8211; Can&#8217;t lose transactions, need full ACID compliance</TD><TD>use MySQL.</TD></TR><br />
<TR><TD>Social Graph &#8211; want to have activity streams and 1-way and 2-way relationships.  Need speed, but not consistency</TD><TD>use Redis</TD></TR><br />
<TR><TD>Product Listings &#8212; selling moves and books, both have different properties, products are pretty much non-relational</TD><TD>use MongoDB</TD></TR></TABLE></p>
<p>He wrote the example in about 3 hours, so integration of multiple data stores <strong>can</strong> be done quickly and work.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/news/9387/liveblogging-at-confoo-blending-nosql-and-sql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Liveblogging at Confoo:  [not just] PHP Performance by Rasmus Lerdorf</title>
		<link>http://www.pythian.com/news/9337/liveblogging-at-confoo-not-just-php-performance-by-rasmus-lerdorf/</link>
		<comments>http://www.pythian.com/news/9337/liveblogging-at-confoo-not-just-php-performance-by-rasmus-lerdorf/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 14:29:46 +0000</pubDate>
		<dc:creator>Sheeri Cabral</dc:creator>
				<category><![CDATA[Technical Blog]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[apc]]></category>
		<category><![CDATA[callgrind]]></category>
		<category><![CDATA[confoo]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[inclued]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[opcode cache]]></category>
		<category><![CDATA[pagespeed]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Pythian]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rasmus]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[siege]]></category>
		<category><![CDATA[strace]]></category>
		<category><![CDATA[twit]]></category>
		<category><![CDATA[valgrind]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[xdebug]]></category>
		<category><![CDATA[yslow]]></category>

		<guid isPermaLink="false">http://www.pythian.com/news/?p=9337</guid>
		<description><![CDATA[Most of this stuff is not PHP specific, and Python or Ruby or Java or .NET developers can use the tools in this talk.
The session on joind.in, with user comments/feedback, is at http://joind.in/talk/view/1320.
Slides are at http://talks.php.net/show/confoo10
&#8220;My name is Rasmus, I&#8217;ve been around for a long time.  I&#8217;ve been doing this web stuff since 1992/1993.&#8221;
&#8220;Generally [...]]]></description>
			<content:encoded><![CDATA[<p>Most of this stuff is not PHP specific, and Python or Ruby or Java or .NET developers can use the tools in this talk.</p>
<p>The session on <A HREF="http://joind.in/">joind.in</a>, with user comments/feedback, is at <A HREF="http://joind.in/talk/view/1320">http://joind.in/talk/view/1320</A>.</p>
<p>Slides are at <A HREF="http://talks.php.net/show/confoo10">http://talks.php.net/show/confoo10</A></p>
<p>&#8220;My name is Rasmus, I&#8217;ve been around for a long time.  I&#8217;ve been doing this web stuff since 1992/1993.&#8221;</p>
<p>&#8220;Generally performance is not a PHP problem.&#8221;  Webservers not config&#8217;d, no expire headers on images, no favicon.  </p>
<p>Tools:  Firefox/Firebug extension called <A HREF="http://developer.yahoo.com/yslow/">YSlow</A> (developed by yahoo) gives you a grade on your site.<br />
<span id="more-9337"></span><br />
<A HREF="http://www.google.com">Google</a> has developed the Firefox/Firebug <A HREF="http://code.google.com/speed/page-speed/">pagespeed</a> tool.</p>
<p>Today Rasmus will pick on <A HREF="http://www.wordpress.com">wordpress</a>.  He checks out the code, then uses <A HREF="http://www.joedog.org/JoeDog/Siege">Siege</a> to do a baseline benchmark &#8212; see <A HREF="http://talks.php.net/show/confoo10/3">the slide</A> for the results.</p>
<p>Before you do anything else install an opcode cache like <A HREF="http://pecl.php.new/APC">APC</A>.  Wordpress really likes this type of caching, see <A HREF="http://talks.php.net/show/confoo10/4">this slide</A> for the results.  Set the timezone, to make sure conversions aren&#8217;t being done all the time.</p>
<p>Make sure you are cpu-bound, NOT I/O bound.  Otherwise, speed up the I/O.</p>
<p>Then strace your webserver processs.  There are <A HREF="http://talks.php.net/show/confoo10/5">common config issues</A> that you can spot in your strace code.  grep for ENOENT which shows you &#8220;No such file or directory&#8221; errors.  </p>
<p>AllowOverride None to turn off .htaccess for every directory, just read settings once from your config file&#8230;.(unless you&#8217;re an ISP).</p>
<p>Make sure DirectoryIndex is set appropriately, watch your include_path.  All this low-hanging fruit has examples on the <A HREF="http://talks.php.net/show/confoo10/5">common config issues</A> slide.</p>
<p><A HREF="http://talks.php.net/show/confoo10/6">Install pecl/inclued and generate a graph</A> &#8211; here is the <A HREF="http://talks.php.net/presentations/slides/intro/wp_inclued1.png">graph image</A> (I have linked it because you really want to zoom in to the graph&#8230;)</p>
<p>In strace output check the open() calls.  Conditional includes, function calls that include files, etc. need runtime context before knowing what to open.  In the example, every request checks to see if we have the config file, once we have config&#8217;d we can get rid of that stuff.  Get rid of all the conditionals and hard-code &#8220;include wp-config.php&#8221;.  Examples are on <A HREF="http://talks.php.net/show/confoo10/7">the slide</a>.</p>
<p>His tips to change:<br />
Conditional config include in wp-load.php (as just mentioned)<br />
Conditional did-header check in wp-blog-header.php<br />
Don&#8217;t call require_wp_db() from wp-settings.php<br />
Remove conditional require logic from wp_start_object_cache</p>
<p>Then check strace again, now all Rasmus sees is theming and translations, which he decided to keep, because that&#8217;s the good benefit of Wordpress &#8211; Performance is all about costs vs. flexibility.  You don&#8217;t want to get rid of all of your flexibility, but you want to be fast.</p>
<p>Set error_reporting(-1) in wp-settings.php to catch all warnings &#8212; warnings slow you down, so get rid of all errors.  PHP error handling is very slow, so getting rid of errors will make you faster.</p>
<p><A HREF="http://talks.php.net/show/confoo10/8">The slide of warnings that wordpress throws</a>.</p>
<p>Look at all C-level calls made, using <A HREF="http://valgrind.org/info/tools.html#callgrind">callgrind</A>, which sits under <A HREF="http://valgrind.org/">valgrind</A>, a CPU emulator used for debugging.  See the <A HREF="http://talks.php.net/presentations/slides/intro/wp_cg.png">image</A> of what callgrind shows.</p>
<p>Now dive into the PHP executor, by installing <A HREF="http://xdebug.org/">XDebug</a>.</p>
<p>Check <A HREF="http://developers.facebook.com/xhprof/">xhprof</A> &#8211; <A HREF="http://www.facebook.com">Facebook</a> open sourced this about a year ago, it&#8217;s a PECL extension.  The output is pretty cool, try it on your own site, Rasmus does <A HREF="http://talks.php.net/show/confoo10/11">show you how to use it</A>.  It shows you functions sorted by the most expensive to the least expensive.</p>
<p>For example, use $_SERVER[REQUEST_TIME] instead of time().  Use pconnect() if MySQL can handle the amount of webserver connections that will be persistent, etc.</p>
<p>After you have changed a lot of the stuff above, benchmark again with siege to see how much faster you are.  In this case there <A HREF="http://talks.php.net/show/confoo10/12">is not much gained so far</A>.</p>
<p>So keep going&#8230;.the blogroll is very slow &#8212; Rasmus gets rid of it by commenting out in the sidebar.php file.  I&#8217;d like to see something to make it &#8220;semi-dynamic&#8221; &#8212; that is, make it a static file that can be re-generated, since you might want the blogroll but links are not changed every second&#8230;..</p>
<p>At this point we&#8217;re out of low-hanging fruit.</p>
<p><A HREF="http://wiki.github.com/facebook/hiphop-php/">HipHop</a> is a PHP to C++ converter &#038; compiler, including a threaded, event-driven server that replaces apache.  Rasmus&#8217; slide says &#8220;Wordpress is well-suited for HipHop because it doesn&#8217;t have a lot of dynamic runtime code. This is using the standard Wordpress-svn checkout with a few tweaks.&#8221; </p>
<p>Then, of course, benchmark again.  </p>
<p>The first time you compile Wordpress with HipHop, you give it a list of files to add to the binary, it will complain about php code that generate file names, so you do have to fix that kind of stuff.  There&#8217;s a huge mess of errors the first time you run it (&#8221;pages and pages&#8221;), and Rasmus had to patch HipHop (and Wordpress) but the changes in HipHop have been put back into HipHop, so you should be good for the most part.</p>
<p>Check out the errors, lots of them show logical errors like $foo.&#8221;bar&#8221; instead of $foo.=&#8221;bar&#8221; and $foo=&#8221;bar&#8221; instead of $foo==&#8221;bar&#8221; in an if statement.  Which of course is nice for your own code, to find those logical errors.</p>
<p>(Wordpress takes in a $user_ID argument and immediately initializes a global $user_ID variable, which overwrites the argument passed in, so you can change the name of the argument passed in&#8230;.)</p>
<p>You can also get rid of some code, things that check for existence of the same thing more than once.  So it will take a bit of tweaking, but it&#8217;s worth it.</p>
<p>There are <A HREF="http://talks.php.net/show/confoo10/15">limitations to HipHop</A>, for example:<br />
<UL><LI>It doesn&#8217;t support any of the new PHP 5.3 language features<br />
</LI><LI>Private properties don&#8217;t really exist under HipHop. They are treated as if they are protected instead.<br />
</LI><LI>You can&#8217;t unset variables. unset will clear the variable, but it will still be in the symbol table.<br />
</LI><LI>eval and create_function are limited<br />
</LI><LI>Variable variables $$var are not supported<br />
</LI><LI>Dynamic defines won&#8217;t work: define($name,$value)<br />
</LI><LI>get_loaded_extensions(), get_extension_funcs(), phpinfo(), debug_backtrace() don&#8217;t work<br />
</LI><LI>Conditional and dynamically created include filenames don&#8217;t work as you might expect<br />
</LI><LI>Default unix-domain socket filename isn&#8217;t set for MySQL so connecting to localhost doesn&#8217;t work</LI></UL></p>
<p>and HipHop does not support all extensions &#8212; see the list Rasmus has of <A HREF="http://talks.php.net/show/confoo10/15">extensions HipHop supports</A>.</p>
<p>Then Rasmus showed <A HREF="http://talks.php.net/show/confoo10/16">an example using Twit</a> (which he wrote) including the <A HREF="http://talks.php.net/show/confoo10/17">benchmarks</A>.  He shows that you can see what&#8217;s going on, like <A HREF="http://talks.php.net/show/confoo10/18">5 MySQL calls on the home page and what happens when you don&#8217;t have a favicon.ico</A> (in yellow).</p>
<p>In summary, &#8220;performance is all about architecture&#8221;, &#8220;know your costs&#8221;.</p>
<p>Be careful, because some tools (like valgrind and xdebug) you don&#8217;t want to put it on production systems, you could capture production traffic and replay it on a dev/testing box, but &#8220;you just have to minimize the differences and do your best&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/news/9337/liveblogging-at-confoo-not-just-php-performance-by-rasmus-lerdorf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Liveblogging at confoo: Can Twitter make money?</title>
		<link>http://www.pythian.com/news/9303/liveblogging-at-confoo-can-twitter-make-money/</link>
		<comments>http://www.pythian.com/news/9303/liveblogging-at-confoo-can-twitter-make-money/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 21:45:38 +0000</pubDate>
		<dc:creator>Sheeri Cabral</dc:creator>
				<category><![CDATA[Technical Blog]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[internet radio]]></category>
		<category><![CDATA[internet tv]]></category>
		<category><![CDATA[jon hansen]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[monetizing]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[social networking]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://www.pythian.com/news/?p=9303</guid>
		<description><![CDATA[subtitle: Monetizing Social Media
Why is social media and social networking essential to you and your business?  (because it will drive sales, but there&#8217;s very few analytics for ROI on social networking and social media)
Relying on advertising is no longer working for print newspapers and television.  So why do we think it will work [...]]]></description>
			<content:encoded><![CDATA[<p>subtitle: Monetizing Social Media</p>
<p>Why is social media and social networking essential to you and your business?  (because it will drive sales, but there&#8217;s very few analytics for ROI on social networking and social media)</p>
<p>Relying on advertising is no longer working for print newspapers and television.  So why do we think it will work on internet media?<br />
<span id="more-9303"></span><br />
Blogging &#8212; you must post 2-4 quality blog posts every week to maintain readership.  This takes a lot of work!  Content is king.</p>
<p>No matter how cool the technology/product/service is, people still buy more often and more easily from people they know and trust.</p>
<p>Social media is a way to show people that you are an industry expert, and that is how you should use them (not to spam and only say &#8220;buy my product&#8221;).</p>
<p>If you do not love your job and try to sell it (say, on social networking), you are going to fail, because you are not passionate about it.</p>
<p>Start small, do not promise a lot, it is better to have more to say than to have dead air time (radio analogy).</p>
<p>Social media is all about building good relationships by having good content that people trust.</p>
<p>Lots of people spend a lot of money on their website, but the website is just a vector to show people your content, and the content is the most important thing.</p>
<p>Cross-pollination &#8211; I think he means forward on information you learn (like, say, liveblogging!)</p>
<p>Get expert guest bloggers &#8212; he did not explain that you can leverage the relationships you form by asking them to blog.  We do this with the <A HREF="http://www.pythian.com/news/category/log-buffer/">Log Buffers</A>&#8230;.</p>
<p>How to make money:<br />
sponsorships<br />
white paper composition<br />
paid articles<br />
consulting<br />
adjunct tie-ins to other related venues<br />
branded blogs</p>
<p>I am personally disappointed because I wanted to learn more, and I feel as though <A HREF="http://www.pythian.com">Pythian</A> already uses the knowledge presented &#8212; we have great exposure through our <A HREF="http://www.pythian.com/news/">blog</A>, and have started really using Twitter, Facebook and other social media sites, etc.</p>
<p>Hansen&#8217;s information was good, and absolutely 100% correct, but I felt that for me it was very basic.  I would like to know some more advanced topics, like:<br />
- How do you know when you have reached the tipping point?<br />
- How do you convert anonymous readers/followers to people you know, without turning them away because they feel they&#8217;re being watched, spammed or don&#8217;t want to give out their info to you?<br />
- When does copy/paste to send out your information start to bother people, how do you know how not to do too much?<br />
- How do you convert readers/followers (anon or not) to paid customers without making them feel like you&#8217;re all about $$, what about if you have some free content and some paid content, how do you know how much to have?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/news/9303/liveblogging-at-confoo-can-twitter-make-money/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Liveblogging:  HTML5 &#8211; Confoo Keynote</title>
		<link>http://www.pythian.com/news/9237/liveblogging-html5-confoo-keynote/</link>
		<comments>http://www.pythian.com/news/9237/liveblogging-html5-confoo-keynote/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 15:17:01 +0000</pubDate>
		<dc:creator>Sheeri Cabral</dc:creator>
				<category><![CDATA[Technical Blog]]></category>

		<guid isPermaLink="false">http://www.pythian.com/news/?p=9237</guid>
		<description><![CDATA[What is confoo?  It is the sequel to the PHP Quebéc Conference (2003 &#8211; 2009).  This year PHP Quebec decided to team up with Montreal-Python, W3Quebéc and OWASP Montréal to produce confoo.
And now, on to Mark Pilgrim of Google speaking on HTML5.

Timeline
1991 &#8211; HTML 1
1994 &#8211; HTML 2
1995 &#8211; Netscape discovers web, ruins [...]]]></description>
			<content:encoded><![CDATA[<p>What is <A HREF="http://www.confoo.ca">confoo</A>?  It is the sequel to the PHP Quebéc Conference (2003 &#8211; 2009).  This year <A HREF="http://www.phpquebec.org">PHP Quebec</A> decided to team up with <A HREF="http://www.montrealpython.org">Montreal-Python</A>, <A HREF="http://www.w3qc.org">W3Quebéc</A> and <A HREF="http://www.owasp.org/index.php/Montréal">OWASP Montréal</A> to produce confoo.</p>
<p>And now, on to Mark Pilgrim of <A HREF="http://www.google.com">Google</A> speaking on HTML5.<br />
<span id="more-9237"></span><br />
<strong>Timeline</strong><br />
1991 &#8211; HTML 1<br />
1994 &#8211; HTML 2<br />
1995 &#8211; Netscape discovers web, ruins it<br />
1996 &#8211; CSS1 + JavaScript<br />
1996 &#8211; Microsoft discovers web, ruins it<br />
1997 &#8211; HTML4 + EMCAScript1<br />
1998 &#8211; CSS2 + EMCAScript2 + DOM1<br />
2000 &#8211; XHTML1 + EMCAScript3 + DOM2<br />
2001 &#8211; XHTML 1.1<br />
[long break!]<br />
2009 &#8211; HTML 5 + ECMA5 + CSS 2.1</p>
<p>HTML5 is not a spec, it&#8217;s a marketing term.  It&#8217;s really HTML5 + CSS3 + JavaScript.</p>
<p><A HREF="http://IsHTML5ReadyYet.com">IsHTML5ReadyYet.com</A> and <A HREF="http://IsHTML5Ready.com">IsHTML5Ready.com</a> are both real websites that give different answers to the question &#8220;is HTML 5 ready?&#8221;</p>
<p><strong>Semantics</strong><br />
HTML started as a semantic language (until Netscape came along).  </p>
<p>New elements (html tags) that do not do anything &#8211; they are for semantic use only:</p>
<pre class="brush: xml;">
&amp;lt;header&amp;gt; &amp;lt;footer&amp;gt;
&amp;lt;section&amp;gt;
&amp;lt;article&amp;gt;
&amp;lt;nav&amp;gt;
&amp;lt;aside&amp;gt; (pull quotes and such)
&amp;lt;time&amp;gt; (datetime markup)
&amp;lt;mark&amp;gt; (marking up runs of text)
&amp;lt;figure&amp;gt; &amp;lt;figcaption&amp;gt;
</pre>
<p>Instead of &#8220;div class=_____&#8221; use these tags&#8230;.for example:</p>
<pre class="brush: xml;">
&amp;lt;body&amp;gt;
  &amp;lt;header&amp;gt;
    &amp;lt;hgroup&amp;gt;
    &amp;lt;h2&amp;gt;page title&amp;lt;/h2&amp;gt;
    &amp;lt;h3&amp;gt;page subtitle&amp;lt;/h3&amp;gt;
    &amp;lt;/hgroup&amp;gt;
   &amp;lt;/header&amp;gt;

&amp;lt;nav&amp;gt;
  &amp;lt;ul&amp;gt; Navigation......
     .....
  &amp;lt;/ul&amp;gt;
&amp;lt;/nav&amp;gt;

&amp;lt;section&amp;gt;
  &amp;lt;article&amp;gt;
   &amp;lt;header&amp;gt;
    &amp;lt;h2&amp;gt;Title&amp;lt;/h2&amp;gt;
   &amp;lt;/header&amp;gt;
&amp;lt;/section&amp;gt;
</pre>
<p>Caveat:  This doesn&#8217;t work in IE but there is a workaround&#8230;..</p>
<p>This can help blind people navigate better&#8230;.and bots too!</p>
<p>&#8220;Google is just another blind web user with 7 million friends&#8221;</p>
<p><strong>Forms</strong><br />
Web forms 2.0<br />
To make a slider from 0-50:</p>
<pre class="brush: xml;">
&amp;lt;input type='range' mix='0' max='50' value='0'&amp;gt;&amp;lt;/input&amp;gt;
</pre>
<p>To use autofocus:</p>
<pre class="brush: xml;">
&amp;lt;input autofocus&amp;gt;
</pre>
<p>(works in 3 browsers)</p>
<p>Talking about blind users again:  &#8220;Focus tracking is VERY important if you can&#8217;t see.  You really need to know where on the page you are, if you start typing what will happen.&#8221;  </p>
<p>Placeholder text &#8212; in a text box, that light text that goes away when you click:</p>
<pre class="brush: xml;">
&amp;lt;input type='text' placeholder='click here and this will disappear'&amp;gt;
</pre>
<p>(works in 2 browsers)</p>
<p><strong>New input types</strong><br />
These are semantic types, do different things in different browsers</p>
<pre class="brush: xml;">
&amp;lt;input type='email'&amp;gt; (on the iphone you get a different keyboard, by default you just get a textfield, so these things degrade gracefully if the browser does not support the feature)
&amp;lt;input type='url'&amp;gt; (a browser like &amp;lt;A HREF=&amp;quot;http://www.opera.com&amp;quot;&amp;gt;Opera&amp;lt;/A&amp;gt; can validate a URL for you instead of you doing it yourself!)
&amp;lt;input type='datetime'&amp;gt; (and more...date pickers are tedious)
&amp;lt;input type='file' multiple&amp;gt; (multiple files without using flash!)
</pre>
<p>For all the inputs HTML5 supports and which browsers support them (<A HREF="http://www.opera.com">Opera</A> is leading the way) search for &#8220;HTML5 input support&#8221;</p>
<p><strong>Accessibility</strong><br />
ARIA = &#8220;accessible rich internet applications&#8221;.  Alt-text is technology that&#8217;s long behind.  ARIA does stuff like making tree views accessible.  For example, right now with a tree view you have to tab through each item, which is a pain.  With code like this:</p>
<pre class="brush: xml;">
&amp;lt;ul id='tree1' role='tree' tabindex='0' aria-labelledby='label_1'&amp;gt;
  &amp;lt;li role='treeitem' tabindex='-1' aria-expanded='true'&amp;gt;Fruits &amp;lt;/li&amp;gt;
    &amp;lt;li role='group'&amp;gt;
    &amp;lt;ul&amp;gt;
      &amp;lt;li role='treeitem' tabindex='-1'&amp;gt;Oranges&amp;lt;/li&amp;gt;
      &amp;lt;li role='treeitem' tabindex='-1'&amp;gt;Pineapples&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
   &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
</pre>
<p>&#8230;.keyboard users can tab to the treeview itself, then use arrow keys to navigate and spacebar to select.  This makes selecting an item at the end of a tree view much easier, and also makes it easy to move <strong>beyond</strong> the tree view without having to press Tab a million times.</p>
<p>Use your favorite search engine for &#8220;ARIA accessibility&#8221; to learn more.</p>
<p><strong>CSS</strong><br />
Mark threw this image up on the screen:</p>
<p><IMG SRC=http://rlv.zcache.com/css_is_awesome_mug-p1687164350719819282objs_210.jpg><br />
(image from <A HREF="http://www.zazzle.com/stevenfrank">http://www.zazzle.com/stevenfrank</A> &#8211; on that site you can buy this coffee mug or a T-shirt with the design)</p>
<p><strong>Web fonts</strong> finally work in CSS3 &#8211; you can use more than Times, Courier, Arial, and occasionally Helvetica.  This works EVERYWHERE &#8211; Chrome, IE, Firefox, Opera, Safari, etc.  Well, it&#8217;s true that they all use it, but they all have different fonts they support.  Read <A HREF="http://paulirish.com/2009/bulletproof-font-face-implementation-syntax/">Bulletproof font face</A> for tips on how to get the font you want no matter what browser is used (yes, even IE).</p>
<p>Opacity is easy [author's note - it's just the "opacity" element, see examples at <A HREF=http://www.css3.info/preview/opacity/>http://www.css3.info/preview/opacity/</A>].</p>
<p>Rounded corners are EASY &#8211; Mark&#8217;s slide passed too fast for me, so I grabbed an example from <A HREF="http://24ways.org/2006/rounded-corner-boxes-the-css3-way">http://24ways.org/2006/rounded-corner-boxes-the-css3-way</A>:</p>
<pre class="brush: xml;">
.box {
  border-radius: 1.6em;
}
</pre>
<p>Gradients are easy [author's note -- looks like you need <A HREF="http://webkit.org/">webkit</A>, there's examples at <A HREF="http://gradients.glrzad.com/">http://gradients.glrzad.com/</A>]</p>
<p>To test CSS3 stuff, use <A HREF=http://www.css3please.com>www.css3please.com</a> &#8211; &#8220;This element will receive inline changes as you edit the CSS rules on the left.&#8221;</p>
<p>[Author's note -- while searching I found <A HREF="http://www.webappers.com/2009/08/10/70-must-have-css3-and-html5-tutorials-and-resources/">http://www.webappers.com/2009/08/10/70-must-have-css3-and-html5-tutorials-and-resources/</A> which is definitely a "must have".]</p>
<p><strong>Canvas</strong><br />
A canvas is a blank slate where you can draw whatever you want, use the canvas tag and id, width and height attributes, everything else is javascript.  Pretty awesome. [Author's note -- Mark had examples but I did not have time to capture them.  I did find a nice tutorial at <A HREF="https://developer.mozilla.org/en/Canvas_tutorial">https://developer.mozilla.org/en/Canvas_tutorial</A>.]</p>
<p><strong>Multimedia</strong><br />
Video with no flash!  <A HREF="http://www.youtube.com">YouTube</A> has HTML5 integration.  Here&#8217;s sample code of how to do movies in HTML5:</p>
<pre class="brush: xml;">
&amp;lt;video src='movie.ogv' controls&amp;gt;&amp;lt;/video&amp;gt;
&amp;lt;video src='movie.ogv' loop&amp;gt;&amp;lt;/video&amp;gt;
&amp;lt;video src='movie.ogv' preload='none'&amp;gt;&amp;lt;/video&amp;gt;  -- don't preload the movie
&amp;lt;video src='movie.ogv' preload='auto'&amp;gt;&amp;lt;/video&amp;gt;
&amp;lt;video src='movie.ogv' autoplay&amp;gt;&amp;lt;/video&amp;gt; -- if you don't have this you don't do evil autoplay....
</pre>
<p>Multimedia is in the DOM and responds to CSS effects, such as reflection:</p>
<pre class="brush: xml;">
&amp;lt;video src='movie.ogv' loop style='webkit-box-reflect: below 1px;'&amp;gt;&amp;lt;/video&amp;gt;
</pre>
<p>(this code might be wrong, the slide flipped fast)</p>
<p>Of course the problem &#8212; codecs.  Right now, .ogv and .mp4 (h264).</p>
<p>Audio inline too, same problem &#8212; only .oga and .mp3:</p>
<pre class="brush: xml;">
&amp;lt;audio src ='podcast.oga' controls&amp;gt;&amp;lt;/audio&amp;gt;
</pre>
<p><strong>Geolocation</strong><br />
<A HREF=http://IsGeolocationPartofHTML5.com>IsGeolocationPartofHTML5.com</a> is a real site, go to it to get the answer.<br />
Geolocation demos &#8212; very much the same, find your location and display it.  Simple but cool.</p>
<p><strong>Cache manifest</strong><br />
Get everything you need for offline usage&#8230;</p>
<pre class="brush: xml;">
&amp;lt;html manifest='another-sky.manifest'&amp;gt;

CACHE MANIFEST
/avatars/zoe.png
/avatars/tamara.png
/scripts/holoband.jpg
</pre>
<p>search for &#8220;google for mobile HTML5 series&#8221; &#8211; good series of articles on using this stuff.</p>
<p><strong>HTML 5 has much more</strong><br />
Local storage<br />
Web workers<br />
Web sockets (2way connections, like raw tcp/ip cxns over the web)<br />
3D canvas (webgl)<br />
Microdata (enhanced semantics)<br />
Desktop notifications<br />
Drag and Drop</p>
<p>Learn more:<br />
<A HREF="http://www.whatwg.org/html5">whatwg.org/html5</A><br />
<A HREF="http://www.diveintohtml5.org">diveintohtml5.org</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/news/9237/liveblogging-html5-confoo-keynote/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hotsos Symposium 2010 &#8212; Battle Against Any Guess Is Won</title>
		<link>http://www.pythian.com/news/9219/hotsos-symposium-2010-battle-against-any-guess-is-won/</link>
		<comments>http://www.pythian.com/news/9219/hotsos-symposium-2010-battle-against-any-guess-is-won/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 20:16:51 +0000</pubDate>
		<dc:creator>Alex Gorbachev</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[baag]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[Hotsos]]></category>
		<category><![CDATA[presentations]]></category>

		<guid isPermaLink="false">http://www.pythian.com/news/?p=9219</guid>
		<description><![CDATA[Video fragments of my session posted at the end &#8212; read on.
I arrived at Omni Mandalay Hotel on Sunday evening with Dan Norris. I was flying through Chicago and it turned out that Dan was on the same flight and only few rows behind me. Small world.
Preparations for the conference were very chaotic on my [...]]]></description>
			<content:encoded><![CDATA[<p><em>Video fragments of my session posted at the end &#8212; read on.</em></p>
<p>I arrived at <a href="http://www.omnihotels.com/FindAHotel/DallasMandalay.aspx">Omni Mandalay Hotel</a> on Sunday evening with <a href="http://www.dannorris.com/">Dan Norris</a>. I was flying through Chicago and it turned out that Dan was on the same flight and only few rows behind me. Small world.</p>
<p>Preparations for the conference were very chaotic on my part and, of course, I didn&#8217;t have either of my presentations ready. I was very stressed and getting sick as well &#8212; it looked like a complete disaster waiting to happen. I&#8217;d like to say that I was feeling like <a href="http://oracledoug.com/serendipity/">Doug Burns</a> as he often managed to get sick just before a conference. Of course, I worked on my slides for the last few days as well as on the flight and presentation was slowly getting there but boy was I tired!</p>
<p>I quickly said hello to the crowd in the bar on the way to my room and rushed away to do some more damage to my slides. And then I had a brilliant idea &#8212; I could still see one of my best mates and do something good about my presentation! I asked Doug if he was interested in the preview (he probably wasn&#8217;t interested but he couldn&#8217;t say it to me) especially that my session wasn&#8217;t on his <a href="http://oracledoug.com/serendipity/index.php?/archives/1574-Hotsos-2010-My-Agenda.html">original agenda</a>. Of course, that would mean that he had to leave a bunch of other good friends and spend some time tete-a-tete. Knowing Doug, this is some of the hardest thing to ask from him but it shows how good of a friend he is! <em>(Plus, everyone thinks that he is anti-social anyway. Shhhh!)</em><br />
<span id="more-9219"></span><br />
Doug has made my day &#8212; while he provided lots of ideas and feedback on few things that I was lucking, he generally approved the idea and confirmed that it wasn&#8217;t totally crazy. I guess that was all I needed back then and Doug knew how nervous I was about it. (Thanks mate!)</p>
<p>So I called Sunday a day very early and went to bed before midnight. I really needed some sleep. Woken up by the alarm at 5AM (I woke up few times during the night looking at the clock &#8212; making sure I didn&#8217;t sleep through) and slides were ready just before lunch. I even managed to do a test run and it took 65 minutes &#8212; a wee bit too long for one hour session. But it was good test and I knew I had to be just a bit more concise in few parts.</p>
<p>Mi morning was very productive. Unfortunately, I missed the opening keynote from Tom Kyte. Such a pity! If what Doug wrote is true, Tom was talking about <a href="http://oracledoug.com/serendipity/index.php?/archives/1578-Hotsos-2010-Day-2-The-conference-begins.html">the mistakes we make *because* of our experience and our assumptions</a>. This was exactly one of the points I was making in my Battle Against Any Guess &#8212; experience is danger. I wish I could see Tom&#8217;s example. Oh well, maybe another time.</p>
<p>I managed to attend half of the <a href="http://richardfoote.wordpress.com/">Richard Foote</a>&#8217;s session on indexes but my mind was far away &#8212; with my own slides. Though, I did manage to focus on bitmap indexes part and the <a href="http://richardfoote.wordpress.com/2010/03/03/1196/">myth of bitmap indexes</a> not working well for columns with high cardinality. Very interesting conclusions. I&#8217;m still wondering how much overhead updates will do to such bitmap index.</p>
<p>After lunch, it was my turn. I ordered few copies of the latest OakTable book &#8212; <a href="http://apress.com/book/view/1430226684">Expert Oracle Practices: Oracle Database Administration from the Oak Table</a> &#8212; that I co-authored with the bunch of other Oakies. I contributed chapter 1 in the book titled just like my presentation &#8212; Battle Against Any Guess. The plan was to give a copy away during the presentation and do a draw for another one at the end of the session. I was so nervous that I forgot about it until the end of the session so I just did a draw for two copies. The lucky winners were Lynn-Georgia Tesch and Surendra Anchula. Congratulations! For the rest of you who left the contact details &#8212; please stay tuned and we&#8217;ll organize few things online.</p>
<p>Now the main topic of this post &#8212; my presentation. What&#8217;s unusual about this session is that it&#8217;s not some technical stuff that I usually do but a more conceptual and motivational talk. Could I pull it off? Well, I think it went fairly well in general even though I did identify few rough places and my lack of English language mastering. Might need to work a little bit more on the flow of the presentation.</p>
<p>We had quite a few good laughs. Later, people in the next hall were asking about it and Dan was making the jokes on the stage so it must have been loud. Anyway, I think nobody fell asleep and I managed to get people thinking about the topic. I received many &#8220;thank you&#8221; notes yesterday and compliments on a good session so by the end of the day I was more and more pleased. Thanks everyone for attending and especially big thanks to those of you who brought to my attention examples from their own battles. If you have more to discuss &#8212; contact me by email (my last name) {at} pythian.com.</p>
<p>Thanks to <a href="http://www.liberidu.com/blog/">Marco Gralike</a> for recording some fragments and sharing them. I think he has more to come.</p>
<p>This is the introductory couple minutes. You can definitely notice how nervous I am starting on the stage:</p>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/DU-ElA41UMU&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/DU-ElA41UMU&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>
<p>Solving the wrong problem example:</p>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/gzV8UNpgYc8&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/gzV8UNpgYc8&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>
<p>That&#8217;s all for now. Stay tuned &#8212; more to come.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.pythian.com/news/9219/hotsos-symposium-2010-battle-against-any-guess-is-won/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
