<?xml version='1.0' encoding='utf-8' ?>
<!--  If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/  -->
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>Brian &quot;Krow&quot; Aker&apos;s Idle Thoughts</title>
  <link>http://krow.livejournal.com/</link>
  <description>Brian &quot;Krow&quot; Aker&apos;s Idle Thoughts - LiveJournal.com</description>
  <lastBuildDate>Fri, 06 Nov 2009 08:18:19 GMT</lastBuildDate>
  <generator>LiveJournal / LiveJournal.com</generator>
  <lj:journal>krow</lj:journal>
  <lj:journalid>12598</lj:journalid>
  <lj:journaltype>personal</lj:journaltype>
  <atom10:link rel='hub' href='http://pubsubhubbub.appspot.com/' />
  <image>
    <url>http://l-userpic.livejournal.com/39906800/12598</url>
    <title>Brian &quot;Krow&quot; Aker&apos;s Idle Thoughts</title>
    <link>http://krow.livejournal.com/</link>
    <width>99</width>
    <height>92</height>
  </image>

<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/676287.html</guid>
  <pubDate>Fri, 06 Nov 2009 08:18:19 GMT</pubDate>
  <title>Amazon RDS, MySQL, Hmm?</title>
  <link>http://krow.livejournal.com/676287.html</link>
  <description>When a name like &lt;a href=&quot;http://aws.amazon.com/rds/&quot;&gt;Amazon&lt;/a&gt; gets into the business, everyone acts like everything is new and shiny again :)&lt;br /&gt;&lt;br /&gt;Why, I can remember like it was, well... almost a decade ago when I first saw a hosting vendor get into the business of support MySQL databases.&lt;br /&gt;&lt;br /&gt;The first vendor I remember? &lt;a href=&quot;http://www.rackspace.com/solutions/managed_hosting/services/database/mysql.php&quot;&gt;Rackspace&lt;/a&gt;. Why? Because way back when, they were the main sponsor for the second OpenSource Database Conference.&lt;br /&gt;&lt;br /&gt;Looking through the options that Amazon provides, they do look pretty sharp. Database backups can be a pain, and providing snapshot based ones is an excellent idea. There was some talk of snapshotting when I was at the MySQL User Group this week talking about &lt;a href=&quot;http://drizzle.org&quot;&gt;Drizze&lt;/a&gt;. The general consensus was that this was the superior way to do backups.&lt;br /&gt;&lt;br /&gt;The other backup methods, like using a physical backup tool, certainly work (Innodb has &lt;a href=&quot;http://www.innodb.com/products/hot-backup/&quot;&gt;sold one for years&lt;/a&gt;, and Percona has &lt;a href=&quot;https://launchpad.net/percona-xtrabackup&quot;&gt;one that they provide&lt;/a&gt;). If logical backups are your thing you can always use mysqldump with Innodb to do an online backup (If you look through past blogs you can see how I use it and the distributed revision control system &lt;a href=&quot;http://mercurial.selenic.com/&quot;&gt;Mercurial&lt;/a&gt; to backup my databases and provide point in time recovery/selective restores).&lt;br /&gt;&lt;br /&gt;Backup services to S3 are not new at all. &lt;a href=&quot;http://www.zmanda.com/zrm-mysql-enterprise.html&quot;&gt;Zmanda&lt;/a&gt; started to provide a product for backing it up years ago. Googling on &quot;S3 mysql backup&quot;, I found several links for HOWTO to do it. &lt;br /&gt;&lt;br /&gt;Looking at the API, I believe native driver support is available. I would be curious to find out if they are supporting just the ASCII protocol, or if they have enabled the binary one as well (which is an awesome way of crashing your database). I am going to assume these databases are all in a self contained instance. If not? Should be simple enough to crash you and your neighbor. It would be interesting to find out how many changes they had to make to the database (or still have to make... all of this reminds me that they were heavily recruiting at the MySQL User&apos;s Conference last year). It was pretty obvious back then that they were going to work on this service. There is no mention of SSL support. The SSL stuff built into MySQL would be a pain to make work, but I suspect they could with some hacking.&lt;br /&gt;&lt;br /&gt;I wonder if libdrizzle&apos;s mysql bits will work? I suspect we will have to try that out. If so, anyone need sharding in their driver?&lt;br /&gt;&lt;br /&gt;BTW if you follow their &quot;use mysqldump&quot; model for pushing data into the service, remember that --single-transaction will allow you to do a hot backup. There is no need to lock up your current database. I am still appalled at how few people know that.  Years ago we should have renamed &quot;mysqldump&quot; to &quot;mysqlbackup&quot; and defaulted the settings for Innodb. Outside of licensing, I suspect &quot;how to backup&quot; my database was the most often requested question.&lt;br /&gt;&lt;br /&gt;Oh, that and &quot;are you worried now that Oracle has acquired Innodb?&quot;&lt;br /&gt;&lt;br /&gt;Renaming our dump tool to backup would have made for pretty slick marketing :)&lt;br /&gt;&lt;br /&gt;Amazon&apos;s sizing numbers look good. They have hit the sweet spot for most users.&lt;br /&gt;&lt;br /&gt;Monitoring is nice, but also, not that hard. If you have everything already in AWS I can see where the &quot;one stop shopping&quot; would be nice (or is that one-click?).&lt;br /&gt;&lt;br /&gt;There is more you can find in an &lt;a href=&quot;http://aws.typepad.com/aws/2009/10/introducing-rds-the-amazon-relational-database-service-.html&quot;&gt;article by Jeff&lt;/a&gt;. &lt;a href=&quot;http://blog.rightscale.com/2009/10/26/amazon-relational-database-service/&quot;&gt;Rightscale&lt;/a&gt; has an article up as well. &lt;br /&gt;&lt;br /&gt;I&apos;m really curious to find out what they have disabled in 5.1, I have a hard time believing they can support all of its features. Coming up with an upgrade path should be interesting to watch. I&apos;ve seen no sign of any patches coming back from them, so I would assume they have rolled their own. This means either they will be on 5.1 for a long time, or will be spending a lot of engineering time maintaining their own version.  (Most of the bigger MySQL shops do, so it is not all that surprising.) The number of folks on the planet that can really maintain custom versions well is pretty small. I don&apos;t believe Amazon has any of them on staff. I am sure though that they can find people who can figure it out. &lt;br /&gt;&lt;br /&gt;I have seen mixed results when companies keep their own custom versions of MySQL. It can be pretty easy to code yourself into a corner when you don&apos;t play an active part in the community. 5.1 should provide many years worth of use for them though.&lt;br /&gt;&lt;br /&gt;Kudos to Amazon.  Having them run a database service won&apos;t provide the &quot;high end&quot; sort of usage that keeps the folks who tune databases in business, but there certainly are a lot of users for whom this type of service will work just fine.&lt;br /&gt;&lt;br /&gt;At the very least this service will certainly up the ante for others in the MySQL hosting business.&lt;br /&gt;&lt;br /&gt;Providing services like RDS and application is the future for cloud companies. It will be interesting to see what they will come up with next.&lt;br /&gt;&lt;br /&gt;I&apos;m surprised &lt;a href=&quot;http://code.google.com/p/memcached/&quot;&gt;Memcached&lt;/a&gt; hasn&apos;t been done as a service yet, but perhaps that is why I have those SASL patches sitting in my inbox. &lt;br /&gt;&lt;br /&gt;We still have a little while before &lt;a href=&quot;http://gearman.org/&quot;&gt;Gearman&lt;/a&gt; will be announced :)</description>
  <comments>http://krow.livejournal.com/676287.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>7</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/675706.html</guid>
  <pubDate>Tue, 03 Nov 2009 17:44:13 GMT</pubDate>
  <title>Drizzle, InfiniDB, Column Oriented Storage</title>
  <link>http://krow.livejournal.com/675706.html</link>
  <description>I have been asked a number of times  &quot;do you think there is a need for a column oriented database in the open source world?&quot;&lt;br /&gt;&lt;br /&gt;The answer has been yes!&lt;br /&gt;&lt;br /&gt;Users and vendors have asked me this question a number of times. The problem has been most of the vendors were interested in creating closed source solutions around either Drizzle/MySQL, or, did their efforts in a way that made serious modifications to the backend (aka... made poor use of the storage engine interface).&lt;br /&gt;&lt;br /&gt;For these reasons I have not really found myself all that thrilled to work with what has been out there. Also, I would often find that the commitment to open source was either luke warm or &quot;we will do it, once we have some traction...&quot;.&lt;br /&gt;&lt;br /&gt;My response to that?  &quot;Tell me more when you open source it. I&apos;ll see if it will work.&quot;&lt;br /&gt;&lt;br /&gt;For this reason I was very happy to see Calpont do their release of &lt;a href=&quot;http://www.infinidb.org/resources/tech-articles/69-introducing-infinidb-from-calpont&quot;&gt;Infinidb&lt;/a&gt; last week.&lt;br /&gt;&lt;br /&gt;So as of this weekend?&lt;br /&gt;&lt;br /&gt;We have a &lt;a href=&quot;http://drizzle.org/wiki/Calpont_InfiniDB_in_Drizzle&quot;&gt;project&lt;/a&gt; to use their engine with &lt;a href=&quot;http://drizzle.org/&quot;&gt;Drizzle&lt;/a&gt;. Infinidb makes use of the storage engine interface I worked on for MySQL which is a subset of the interface we have built for Drizzle. We have had several engines ported already, but this will be the first column oriented engine we will have ported to Drizzle.&lt;br /&gt;&lt;br /&gt;Building in different engines beyond the basic transactional engines is fun, because we get to see how the design stretches to fit additional needs. The core of Drizzle stays the same, but the micro-kernel nature of our design allows for others to expand the reach of where Drizzle can be used. &lt;a href=&quot;http://posulliv.com/&quot;&gt;Padraig&lt;/a&gt; started working on the engine on Friday and had it loading by the end of the weekend.&lt;br /&gt;&lt;br /&gt;It should be fun to see what additional enhancements we can do out of the box with Infini engine :)</description>
  <comments>http://krow.livejournal.com/675706.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>11</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/675421.html</guid>
  <pubDate>Tue, 03 Nov 2009 16:37:13 GMT</pubDate>
  <title>Note on sidewalk</title>
  <link>http://krow.livejournal.com/675421.html</link>
  <description>&lt;a href=&quot;http://pics.livejournal.com/krow/pic/00111tha/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/krow/pic/00111tha/s320x240&quot; alt=&quot;photo.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://krow.livejournal.com/675421.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/674842.html</guid>
  <pubDate>Sat, 31 Oct 2009 23:10:56 GMT</pubDate>
  <title>Power Tools and Pumpkin Cutting</title>
  <link>http://krow.livejournal.com/674842.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/brianaker/4061628643/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2697/4061628643_cb1208e3ea.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/brianaker/4061628643/&quot;&gt;DSC_0189.JPG&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/brianaker/&quot;&gt;krow&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	&lt;/p&gt;</description>
  <comments>http://krow.livejournal.com/674842.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/674682.html</guid>
  <pubDate>Thu, 29 Oct 2009 19:45:18 GMT</pubDate>
  <title>Game, Which is faster?</title>
  <link>http://krow.livejournal.com/674682.html</link>
  <description>Last night while working with someone I am tutoring we got into a conversation of &quot;what is faster&quot;. Below is some assembler that was created from it, for two different programs which did exactly the same thing, but in different ways. &lt;br /&gt;&lt;br /&gt;The question is, which is faster? &lt;br /&gt;Second Question, which do you think was the more maintainable code?&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
	.file	&quot;?&quot;
	.text
.globl main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	movq	%rsp, %rbp
	.cfi_offset 6, -16
	.cfi_def_cfa_register 6
	subq	$2097184, %rsp
	leaq	-2097184(%rbp), %rax
	movl	$1048576, %edx
	movl	$64, %esi
	movq	%rax, %rdi
	call	memset
	movl	$0, -20(%rbp)
	jmp	.L2
.L5:
	leaq	-1048608(%rbp), %rax
	movq	%rax, -16(%rbp)
	leaq	-2097184(%rbp), %rax
	movq	%rax, -8(%rbp)
	jmp	.L3
.L7:
	nop
.L3:
	movq	-8(%rbp), %rax
	movzbl	(%rax), %edx
	movq	-16(%rbp), %rax
	movb	%dl, (%rax)
	movq	-16(%rbp), %rax
	leaq	1(%rax), %rdx
	movq	-8(%rbp), %rax
	addq	$1, %rax
	movzbl	(%rax), %eax
	movb	%al, (%rdx)
	movq	-16(%rbp), %rax
	leaq	2(%rax), %rdx
	movq	-8(%rbp), %rax
	addq	$2, %rax
	movzbl	(%rax), %eax
	movb	%al, (%rdx)
	movq	-16(%rbp), %rax
	leaq	3(%rax), %rdx
	movq	-8(%rbp), %rax
	addq	$3, %rax
	movzbl	(%rax), %eax
	movb	%al, (%rdx)
	movq	-16(%rbp), %rax
	leaq	4(%rax), %rdx
	movq	-8(%rbp), %rax
	addq	$4, %rax
	movzbl	(%rax), %eax
	movb	%al, (%rdx)
	movq	-16(%rbp), %rax
	leaq	5(%rax), %rdx
	movq	-8(%rbp), %rax
	addq	$5, %rax
	movzbl	(%rax), %eax
	movb	%al, (%rdx)
	movq	-16(%rbp), %rax
	leaq	6(%rax), %rdx
	movq	-8(%rbp), %rax
	addq	$6, %rax
	movzbl	(%rax), %eax
	movb	%al, (%rdx)
	movq	-16(%rbp), %rax
	leaq	7(%rax), %rdx
	movq	-8(%rbp), %rax
	addq	$7, %rax
	movzbl	(%rax), %eax
	movb	%al, (%rdx)
	addq	$8, -16(%rbp)
	addq	$8, -8(%rbp)
	leaq	-1048608(%rbp), %rax
	addq	$1048576, %rax
	cmpq	-16(%rbp), %rax
	jne	.L7
.L4:
	addl	$1, -20(%rbp)
.L2:
	cmpl	$4095, -20(%rbp)
	jbe	.L5
	movl	$0, %eax
	leave
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	&quot;GCC: (GNU) 4.4.1 20090725 (Red Hat 4.4.1-2)&quot;
	.section	.note.GNU-stack,&quot;&quot;,@progbits
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
	.file	&quot;?&quot;
	.text
.globl main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	movq	%rsp, %rbp
	.cfi_offset 6, -16
	.cfi_def_cfa_register 6
	subq	$2097184, %rsp
	leaq	-2097184(%rbp), %rax
	movl	$1048576, %edx
	movl	$64, %esi
	movq	%rax, %rdi
	call	memset
	movl	$0, -20(%rbp)
	jmp	.L2
.L5:
	leaq	-1048608(%rbp), %rax
	movq	%rax, -16(%rbp)
	leaq	-2097184(%rbp), %rax
	movq	%rax, -8(%rbp)
	jmp	.L3
.L4:
	movq	-8(%rbp), %rax
	movzbl	(%rax), %edx
	movq	-16(%rbp), %rax
	movb	%dl, (%rax)
	addq	$1, -16(%rbp)
	addq	$1, -8(%rbp)
.L3:
	leaq	-1048608(%rbp), %rax
	addq	$1048576, %rax
	cmpq	-16(%rbp), %rax
	jne	.L4
	addl	$1, -20(%rbp)
.L2:
	cmpl	$4095, -20(%rbp)
	jbe	.L5
	movl	$0, %eax
	leave
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	&quot;GCC: (GNU) 4.4.1 20090725 (Red Hat 4.4.1-2)&quot;
	.section	.note.GNU-stack,&quot;&quot;,@progbits
&lt;/pre&gt;</description>
  <comments>http://krow.livejournal.com/674682.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>7</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/674161.html</guid>
  <pubDate>Sun, 25 Oct 2009 00:37:20 GMT</pubDate>
  <title>&quot;Fish&quot; Foot Massage</title>
  <link>http://krow.livejournal.com/674161.html</link>
  <description>When someone asks &quot;Do you want to get a fish foot massage?&quot;, do not assume you just aren&apos;t hearing them well and that all you will be receiving a plain old foot massage.&lt;br /&gt;&lt;br /&gt;Yes, those are fish in the picture, and yes they are eating the dead skin from my feet.&lt;br /&gt;&lt;br /&gt;This is the first time I ever wanted to keep fish around the house. It tickles, but once you get past that?&lt;br /&gt;&lt;br /&gt;Awesome :)&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/krow/pic/00110gx4/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/krow/pic/00110gx4/s320x240&quot; alt=&quot;IMG_0289.jpeg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://krow.livejournal.com/674161.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>6</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/673452.html</guid>
  <pubDate>Fri, 23 Oct 2009 04:39:55 GMT</pubDate>
  <title>Guess!</title>
  <link>http://krow.livejournal.com/673452.html</link>
  <description>&lt;a href=&quot;http://pics.livejournal.com/krow/pic/0010zhhb/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/krow/pic/0010zhhb/s320x240&quot; alt=&quot;photo.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://krow.livejournal.com/673452.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>10</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/673195.html</guid>
  <pubDate>Thu, 22 Oct 2009 18:28:52 GMT</pubDate>
  <title>RMS, GPL, The Peculiar Institution of Dual Licensing</title>
  <link>http://krow.livejournal.com/673195.html</link>
  <description>I am going to take the words of my colleague &lt;a href=&quot;http://www.tbray.org/ongoing/When/200x/2009/10/21/On-the-EU&quot;&gt;Tim Bray&lt;/a&gt; to explain my own position regarding the acquisition of Sun by Oracle:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;i&gt;
[Disclosure: I have no non-public information on any of the MySQL-related 
aspects of the Sun/Oracle transaction, nor on the current anti-trust review, 
and I am not speaking for anyone but myself.]&lt;/i&gt;&lt;/pre&gt; Just to further add to this, I am one of the main contributors to the largest community driven and contributed fork of the MySQL server, Drizzle.&lt;br /&gt;&lt;br /&gt; From &lt;a href=&quot;http://keionline.org/ec-mysql&quot;&gt;Richard Stallman&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
MySQL is made available to the public in two parallel ways. Most users 
obtain it as free/libre software under the GNU General Public License 
(GPL) version 2; the code is released in this way gratis. 
MySQL is also available under a different, proprietary license for a fee.
This approach was able to provide (1) an attractive platform for 
developers looking to use FLOSS, and secured MySQL enormous 
mind share, particularly in supporting content rich web pages and 
other Internet applications, and (2) the ability for paying clientèle to 
combine and distribute MySQL in customizations that they do not 
want to make available to the public as free/libre software under the GPL. 
With excellent management and considerable trust within the user 
community, MySQL became the gold standard for web based FLOSS 
database applications.
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;What I find sad is Richard&apos;s commitment to the expansion of more close source software by the means of a &quot;Robin Hood&quot; sort of philosophy. Dual Licensing is nothing more then the creation of yet more software, where the end result is the creation of not more open source software, but the creation of yet more closed source software.&lt;br /&gt;&lt;br /&gt;The GPL&apos;s approach is to provide a stick or carrot. If you are open source, then you don&apos;t pay, assuming of you are &quot;the right&quot; sort of open source. If you are close source or pick a license which is not compatible with the GPL you are forced into paying for use of a commercial license. When you &quot;pay&quot; for open source the freedom that was originally offered to the end user is removed. In the case of incompatible open source licenses you too are forced into the position of removing the freedom granted both and possibly the freedom you granted to your own work. Take any current distribution of a linux distribution and do the research on licenses within it. The tangled mess that is found will confuse anyone. MySQL itself was only able to solve some of this by offering a &lt;a href=&quot;http://www.mysql.com/about/legal/licensing/foss-exception/&quot;&gt;&quot;FLOSS Exception&quot;&lt;/a&gt; to the portions of the code it owns.&lt;br /&gt;&lt;br /&gt;Dual licensing is anti-open source. I have no issues with this per-se, but I find his support of a &quot;peculiar institution&quot; a bit head scratching.&lt;br /&gt;&lt;br /&gt;At the heart of dual licensing is &quot;ownership rights&quot;, which inevitably come into conflict with the nature of open source. Open Source projects that preserve the ability to do dual license come into conflict with the developers who contribute the code. For the project to continue it must ask the original developer to give up their rights to the code via copyright assignment (there is some debate on whether copyright can be held in joint, but this is often disputed by lawyers). Thus dual licensing forces any developer who wishes to contribute into a position of either giving up their rights and allowing their work to end up in commercial software, or creating a fork of the software with their changes. In essence it creates monopolies which can only be broken via forking the software.Forking software over small changes is for the most part unviable because of the cost of keeping a fork of the software up to date, but it is not impossible.&lt;br /&gt;&lt;br /&gt;I, being one of the main contributors of the largest of the MySQL forks, Drizzle, can tell you that this is no simple task but is quite achievable. Our reward has been that in our single year of operation we have achieved a larger base of contributions then MySQL achieved in its decade long existence. Community contribution at the expense of proprietary extensions is a small price compare if you consider the value that surrounds us by releasing that opportunity.&lt;br /&gt;&lt;br /&gt;The conflict inherent in trying to reserve rights, and take the rights from others, leads to conflict.&lt;br /&gt;&lt;br /&gt;If you wish to observe this in action, take a look at the internals@mysql.com  list. Watch the jockeying and counter posture attacks that go on between Sun, MontyAB, and other groups. Each group trying to take rights and create position within the MySQL codebase. None of this does any good for the ecosystem surrounding MySQL. Users lose out in the end as bug fixes and enhancements are lost over an attempt to hold eventual rights that will be reserved for proprietary software, and at the same time creating a monopoly for the single party who gains &quot;rights&quot; control over the project.&lt;br /&gt;&lt;br /&gt;What I find sad about this is Richard&apos;s own lack of imagination when it comes to the opportunity he has at hand. Here is an opportunity for him to influence Europe&apos;s main body and push forward the concepts of co-operation and community that surround open sources, and he wastes it for the opportunity to preserve the &quot;peculiar institution&quot; of dual licensing and furthering monopolistic intentions.&lt;br /&gt;&lt;br /&gt;Preservations of the rights of end users,  linking issues, open source license compatibilities, the rights of open source developers to continue their work... there are a plethora of concepts and actions he could be investigating.&lt;br /&gt;&lt;br /&gt;Richard&apos;s advocation for dual license is in conflict with the concept of the nature of the free exchange of ideas and concepts within the open source community. His attempts at being an open source advocate on the point in question?&lt;br /&gt;&lt;br /&gt;Fail.</description>
  <comments>http://krow.livejournal.com/673195.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>31</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/672179.html</guid>
  <pubDate>Thu, 15 Oct 2009 17:26:03 GMT</pubDate>
  <title>libmemcached, protocol handlers, rolling your own server!</title>
  <link>http://krow.livejournal.com/672179.html</link>
  <description>One of the cooler things has been worked on in &lt;a href=&quot;http://launchpad.net/libmemcached&quot;&gt;libmemcached&lt;/a&gt; lately is the ability to &lt;a href=&quot;http://en.wikipedia.org/wiki/Tinkertoy&quot;&gt;tinkertoy&lt;/a&gt; up &lt;a href=&quot;http://en.wikipedia.org/wiki/Memcached&quot;&gt;Memcached&lt;/a&gt; servers.&lt;br /&gt;&lt;br /&gt;What does that mean?&lt;br /&gt;&lt;br /&gt;There are a lot of forks of memcached. Some commercial, some open source, some that are in house at a variety of companies. They all share a few common concepts though.&lt;br /&gt;&lt;br /&gt;&lt;li&gt; Protocol&lt;br /&gt;&lt;li&gt; Scale Out&lt;br /&gt;&lt;br /&gt;The recognition of this lead me to want to create a set of libraries that  anyone, could use to build these types of servers quickly. After talking to a number of vendors and users it became pretty apparent that something like this needed to be done. The goal is to make it easy for people to write protocol compatible servers in a way that they can focus on the problems that they are concerned with, without getting bogged down in the details. &lt;br /&gt;&lt;br /&gt;Also, for those of us who are client writers, we didn&apos;t want to see a tower of babble pop up around the protocol. memcapable, our protocol certification tool, works hand in hand with this to make sure that services that are being built today are compatible with the clients that have been released. No one benefits from a tower of babel.&lt;br /&gt;&lt;br /&gt;Users want to know they can use different servers with existing applications, client writers want to be able to support users, and vendors of all variety want end user confidence in their solutions.&lt;br /&gt;&lt;br /&gt;In 0.34 &quot;libmemcachedprotocol&quot; has now been added to libmemcached. Here is an example of the structure:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
void initialize_interface_v0_handler(void)
{
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_GET]= get_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_SET]= set_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_ADD]= add_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_REPLACE]= replace_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_DELETE]= delete_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_INCREMENT]= arithmetic_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_DECREMENT]= arithmetic_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_QUIT]= quit_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_FLUSH]= flush_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_GETQ]= get_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_NOOP]= noop_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_VERSION]= version_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_GETK]= get_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_GETKQ]= get_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_APPEND]= concat_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_PREPEND]= concat_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_STAT]= stat_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_SETQ]= set_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_ADDQ]= add_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_REPLACEQ]= replace_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_DELETEQ]= delete_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_INCREMENTQ]= arithmetic_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_DECREMENTQ]= arithmetic_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_QUITQ]= quit_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_FLUSHQ]= flush_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_APPENDQ]= concat_command_handler;
   interface_v0_impl.interface.v0.comcode[PROTOCOL_BINARY_CMD_PREPENDQ]= concat_command_handler;
}
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As you can see, the interface is a designed around callbacks. You supply the callbacks, we handle the protocol parsing, both binary and text. The idea is to let you hook up the memcached protocol to anything. If you download the latest code, or just grab via CMS, aka &quot;bzr clone lp:libmemcached&quot;, you can get a feel for it.&lt;br /&gt;&lt;br /&gt;Take a look inside of example/interface_v0.c and you will find a simple single threaded memcached server that uses just a simple linked list to store items held in memcached.&lt;br /&gt;&lt;br /&gt;Want something more complex?&lt;br /&gt;&lt;br /&gt;Take a look inside of example/storage_innodb.c  and you can see where we have an example memcached storage system using the &lt;a href=&quot;http://www.innodb.com/products/embedded-innodb/&quot;&gt;Innodb Embedded Engine&lt;/a&gt;. Coming soon, a longer article on this!&lt;br /&gt;&lt;br /&gt;Wanting to contribute one for Tokyo Cabinet, BDB, SQLite? Please send patches :)&lt;br /&gt;&lt;br /&gt;Right now we are still accepting feedback on the interface. While we have shopped it around and gotten some great feedback, I would love to see more. We have not finished writing the encapsulation functions just yet, so we haven&apos;t generated API for Ruby, Perl, Python, etc just yet, but I expect to see this happen over the next couple of months.&lt;br /&gt;&lt;br /&gt;Have fun with it!</description>
  <comments>http://krow.livejournal.com/672179.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/671235.html</guid>
  <pubDate>Tue, 13 Oct 2009 16:22:33 GMT</pubDate>
  <title>New in Drizzle, 2009.10.1178</title>
  <link>http://krow.livejournal.com/671235.html</link>
  <description>Welcome to the metronome, every two weeks we drop a release of Drizzle.&lt;br /&gt;&lt;br /&gt;Which makes it sort of boring to blog about each release since they are consistent :)&lt;br /&gt;&lt;br /&gt;But no two releases are really the same, and this last one had a bit of fun in it:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
drizzle&amp;gt; CREATE TABLE A (a int) ENGINE=Archive;
Query OK, 0 rows affected (0 sec)

drizzle&amp;gt; create table B like A ENGINE=innodb;
Query OK, 0 rows affected (0 sec)

drizzle&amp;gt; show create table B;
+-------+-----------------------------------------------------------+
| Table | Create Table                                              |
+-------+-----------------------------------------------------------+
| B     | CREATE TABLE `b` (
   `a` int DEFAULT NULL
) ENGINE=InnoDB |
+-------+-----------------------------------------------------------+
1 row in set (0 sec)
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Being able to specify an engine when doing a CREATE TABLE LIKE has been long on the list of things to do to make the server more orthogonal for a while now. You would think it would have been easy to do, but it never really was. In MySQL we didn&apos;t have a data dictionary so a command like the above was just a &quot;copy the frm file in place/tell the engine it exists&quot;. Which does work, but it didn&apos;t make it very simple to manipulate. Sure, it could have been done, but it wasn&apos;t all that simple.&lt;br /&gt;&lt;br /&gt;For Drizzle we just ask the StorageEngine factory &quot;find the engine with this definition and had it back to me as a proto&quot;. Once we have the proto we just make any changes we want to it, and then tell the StorageEngine factory &quot;go create this&quot;. After that? It gets sent to whatever engine is supposed to create the table and the table gets created. How the data is stored is up to the engine. The advantage of the federated data dictionary is that engines own their own table information. No 2PC is required for creation and network based engines are free to track their own changes. Pretty handy :)&lt;br /&gt;&lt;br /&gt;Another thing that is changing is our parser. Drizzle&apos;s parser no longer knows or confirms engines. It simply parses the statement and lets the execution system validate the state or existence of the engine (this is making way longterm for the future where parsers just parse... validation belongs elsewhere in the execution pipe). Our execution system no longer exists as a giant switch/case system. Instead we just generate an object and pass that along for execution. A big advantage we were able to realize because of this was that all of our DDL structures are no longer included in the global Lex structure.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://gearman.org/&quot;&gt;Gearman&lt;/a&gt; functions were updated with this release, so we have up two date functionality happening with our integration there. Replication is continuing to evolve and as of this version we now have &lt;a href=&quot;http://posulliv.com/?p=204&quot;&gt;information schema tables&lt;/a&gt; that report on the state of whatever memcached cluster we are attached too. Memcached support that is built into the server didn&apos;t make it in this release, but I expect to see it in next week&apos;s.&lt;br /&gt;&lt;br /&gt;Latest version of Bell, our current release milestone, can be found here:&lt;br /&gt;&lt;a href=&quot;https://launchpad.net/drizzle/+download&quot;&gt;https://launchpad.net/drizzle/+download&lt;/a&gt;</description>
  <comments>http://krow.livejournal.com/671235.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/670687.html</guid>
  <pubDate>Wed, 07 Oct 2009 06:37:49 GMT</pubDate>
  <title>Stargate Universe is Space 1999</title>
  <link>http://krow.livejournal.com/670687.html</link>
  <description>Yes I have been hearing from folks &quot;its Voyager&quot; or &quot;its BattleStar Gallactica&quot;.&lt;br /&gt;&lt;br /&gt;Wrong! It is &lt;a href=&quot;http://en.wikipedia.org/wiki/Space:_1999&quot;&gt;Space 1999&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now for all you who were raised with X-Wing fighters, you should acquaint yourself with the world of the Eagle Transporter. It will be left as an exercise for the reader to go acquaint themselves via wikipedia with the background of the show.&lt;br /&gt;&lt;br /&gt;I could claim that the nuclear explosion which sent the moon hurtling away from the earth in Space 1999 forms the opening point to why the shows are twins born decades apart, but that would be basing everything on a very weak argument (...no more then say, the moon being knocked out of orbit and thrown at lightspeed away from the Earth). &lt;br /&gt;&lt;br /&gt;In Stargate Universe you have a Stargate Crew which is hurtling through space on a starship they cannot control, much like the crew of the moon in Space 1999. Who can possibly control a moon that has been blown out of its orbit? Each week the crew is going to come into contact with a stargate that they will be able to access for a very limited period of time. They will be able to get onto planets once they come into dialing distance, but they will have to get back to ship before they are out of range.&lt;br /&gt;&lt;br /&gt;In Space 1999 you had crews running off on Eagle Transporters once the moon came into distance of a planet (yes... ignore completely the physics of this). They would have a limited time to examine the planet before the moon would go out of range of their craft to join back up with it.&lt;br /&gt;&lt;br /&gt;I am wondering if we can just line the episodes up, and play &quot;match that episode&quot;. &lt;br /&gt;&lt;br /&gt;The main scientist for Stargate Universe outfit would easily fit into the 1970s. &lt;br /&gt;&lt;br /&gt;I wonder how many episodes it will take before they reach some sort of Dystopian world?  &lt;br /&gt;&lt;br /&gt;Alien telepaths?&lt;br /&gt;&lt;br /&gt;With both BSG and Atlantis going off the air I thought for sure I would be getting to take a year off from poorly produced and thought out Science Fiction.&lt;br /&gt;&lt;br /&gt;Oh well! :)&lt;br /&gt;&lt;br /&gt;&lt;img source=&quot;http://en.wikipedia.org/wiki/File:S99-nuclear_explosion.jpg&quot; border=&quot;0&quot;&gt;</description>
  <comments>http://krow.livejournal.com/670687.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/670191.html</guid>
  <pubDate>Wed, 07 Oct 2009 01:37:20 GMT</pubDate>
  <title>Go, Go, Conferences... Drizzle, Memcached, and Gearman</title>
  <link>http://krow.livejournal.com/670191.html</link>
  <description>So where will I be at over the next couple of months?&lt;br /&gt;&lt;br /&gt;In October I will be hitting the Malaysian Open Source Conference:&lt;br /&gt;&lt;a href=&quot;http://foss.my/&quot;&gt;http://foss.my/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In November I will be making my way to Portland for the OpenSQL Camp:&lt;br /&gt;&lt;a href=&quot;http://opensqlcamp.org/Main_Page&quot;&gt;http://opensqlcamp.org/Main_Page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In January I will be attending Linux.Conf.Au&lt;br /&gt;&lt;a href=&quot;http://www.lca2010.org.nz/&quot;&gt;http://www.lca2010.org.nz/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In Malaysia I have scheduled talks on &lt;a href=&quot;http://drizzle.org/&quot;&gt;Drizzle&lt;/a&gt;, &lt;a href=&quot;http://gearman.org/&quot;&gt;Gearman&lt;/a&gt;, and &lt;a href=&quot;http://code.google.com/p/memcached/&quot;&gt;Memcached&lt;/a&gt;. For SQL camp there will be more of the same :)&lt;br /&gt;&lt;br /&gt;Looking for more information in Gearman? Check out this article by Rasmus Lerdorf:&lt;br /&gt;&lt;a href=&quot;http://toys.lerdorf.com/archives/51-Playing-with-Gearman.html&quot;&gt;http://toys.lerdorf.com/archives/51-Playing-with-Gearman.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For Memcached we have released the memcapable program with the latest &lt;a href=&quot;http://launchpad.net/libmemcached/&quot;&gt;libmemcached&lt;/a&gt;. This will allow us to test vendors for compliance with the new binary protocol (and as of the next release the ASCII as well). This should lower some headaches on all sides. As developer we will have an easier time diagnosing problems with servers that aren&apos;t built on the reference implementation, and for end users they can be assured that the products they are buying are following the protocol standard. For vendors? They will be able to create products knowing that the end user  can drop their software stacks/appliances in place and be up and running quickly.&lt;br /&gt;&lt;a href=&quot;http://blogs.sun.com/trond/entry/memcapable&quot;&gt;http://blogs.sun.com/trond/entry/memcapable&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More updates to follow... we have been busy at work on all of the projects in the last couple of months :)</description>
  <comments>http://krow.livejournal.com/670191.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/668368.html</guid>
  <pubDate>Tue, 29 Sep 2009 05:01:14 GMT</pubDate>
  <title>Bowling!</title>
  <link>http://krow.livejournal.com/668368.html</link>
  <description>&lt;a href=&quot;http://pics.livejournal.com/krow/pic/0010xsrc/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/krow/pic/0010xsrc/s320x240&quot; alt=&quot;photo.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://krow.livejournal.com/668368.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/668137.html</guid>
  <pubDate>Mon, 28 Sep 2009 00:06:28 GMT</pubDate>
  <title>Decibel Festival</title>
  <link>http://krow.livejournal.com/668137.html</link>
  <description>&lt;a href=&quot;http://pics.livejournal.com/krow/pic/0010w1e1/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/krow/pic/0010w1e1/s320x240&quot; alt=&quot;photo.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://krow.livejournal.com/668137.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/667556.html</guid>
  <pubDate>Sat, 26 Sep 2009 22:00:53 GMT</pubDate>
  <title>Source Lake</title>
  <link>http://krow.livejournal.com/667556.html</link>
  <description>&lt;a href=&quot;http://pics.livejournal.com/krow/pic/0010td4y/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/krow/pic/0010td4y/s320x240&quot; alt=&quot;photo.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://krow.livejournal.com/667556.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/667303.html</guid>
  <pubDate>Sat, 26 Sep 2009 19:18:08 GMT</pubDate>
  <title>Tunnel Hiking Failure</title>
  <link>http://krow.livejournal.com/667303.html</link>
  <description>&lt;a href=&quot;http://pics.livejournal.com/krow/pic/0010s84b/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/krow/pic/0010s84b/s320x240&quot; alt=&quot;photo.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://krow.livejournal.com/667303.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/665707.html</guid>
  <pubDate>Mon, 21 Sep 2009 16:29:34 GMT</pubDate>
  <title>Drizzle, Optimizer, Execution Flow</title>
  <link>http://krow.livejournal.com/665707.html</link>
  <description>The present in my RSS feed this morning was an article by Peter Zaitsev on :&lt;br /&gt;&lt;a href=&quot;http://www.mysqlperformanceblog.com/2009/09/20/guidance-for-mysql-optimizer-developers/&quot;&gt;http://www.mysqlperformanceblog.com/2009/09/20/guidance-for-mysql-optimizer-developers/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One of the changes made recently to &lt;a href=&quot;http://drizzle.org/&quot;&gt;Drizzle&lt;/a&gt;, is a redesign of our executioner. This was done by &lt;a href=&quot;http://posulliv.com/&quot;&gt;Padraig&lt;/a&gt;. MySQL inherited a design where the parser uses one Global Lex Structure to fill in the members of the query for later use. This structure has members in it for every form of query that can be executed. The structure is also assigned an ENUM that will be used later for determining if the query is a SELECT, INSERT, etc... via a switch/case dispatcher.&lt;br /&gt;&lt;br /&gt;This of course creates a number of limitations in the design, especially for Drizzle since we focus on micro-kernel over monolithic design. What Padraig completed recently was work that took apart the switch/case dispatcher and replaced it with an object executioner. Each of the query types, SELECT, INSERT, etc,... are now assigned to a Statement object which are assigned in the parser on the top level. We are now focusing on removing the Global Lex Structure and placing its members into the Statement execution objects.&lt;br /&gt;&lt;br /&gt;This gives us a smaller footprint parsing and it makes the entire system pluggable in that we can now truly break down the parser in ways that we couldn&apos;t before. Before to extend the parser you would have to grow the global lex structure for any extension to the SQL syntax/execution functionality. The global lex structure has a very large footprint and you have to weigh the cost of any new feature vs growing the size of the global structure. Setting the default values for this alone is fairly expensive (memset() is not your friend).&lt;br /&gt;&lt;br /&gt;It also meant that for someone who wanted to write a new execution path, that had to modify the switch/case executioner and fiddle with all of the code along the path.&lt;br /&gt;&lt;br /&gt;Now in Drizzle? Anyone who wants to write a new execution path can focus on just a single class. This class is generated in the parser and encapsulates all of the logic for a given statement. BTW these Statement objects are not limited to the SQL parser, so any of the new methods for Connection can generate one as well (without going to deep here, what I mean is the work that Eric Day has been doing that will allow us to speak native HTTP/etc will now be able to use direct REST parsers... so SQL is just one method of execution among many).&lt;br /&gt;&lt;br /&gt;This move to Statement gives us a design which is less complex then what we did in the past and it allows a developer who wants to extend the database to focus on just what they want to work on. Hell, maybe we should put together a talk for the East Coast No-SQL conference just to make a point about flexibility around SQL vs No-SQL designs.&lt;br /&gt;&lt;br /&gt;So why did I open up this article up with a reference to Peter&apos;s article?&lt;br /&gt;&lt;br /&gt;Just as the switch/case executioner existed for all queries, a similar one existed for the optimizer. About two months ago we started straightening it out so that we could do the same to it as we have been doing to the main switch/case dispatcher. From the top down we are able to use similar designs at each connecting point in the database.&lt;br /&gt;&lt;br /&gt;The gain is? Just as our Statement Executioner cracks the door open to the main executioning at the core of Drizzle being pluggable, by reuse of design the same will be true of our join optimizer (!!!). Once we are complete, our Join Exectioner will be extendable by just adding in new plugins. Our plans are moving along, and the pluggable parser is on our horizon. The goal will be a set of classes that can be extended so that the Join Executioner can be easily extended as well.&lt;br /&gt;&lt;br /&gt;When I read articles like Peter&apos;s, and Peter is one of the experts in tuning MySQL, it makes me pretty excited to see validation in the concepts we hold dearly. I&apos;m not sure that we will pull off exactly what Peter wants longterm, time will only tell, but I do see that the concepts that we are pushing are shared by others as well.</description>
  <comments>http://krow.livejournal.com/665707.html</comments>
  <category>performance-tuning</category>
  <category>drizzle</category>
  <category>join-optimizers</category>
  <category>mysql</category>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/664446.html</guid>
  <pubDate>Fri, 18 Sep 2009 23:47:00 GMT</pubDate>
  <title>Sometimes it takes three...</title>
  <link>http://krow.livejournal.com/664446.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/brianaker/3932959740/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2671/3932959740_36afa560fb.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/brianaker/3932959740/&quot;&gt;DSCN0955&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/brianaker/&quot;&gt;krow&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	The Mac Mini has now been &quot;popped&quot;. Both the CDROM and the hard drive have now been replaced :)&lt;/p&gt;</description>
  <comments>http://krow.livejournal.com/664446.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>3</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/663367.html</guid>
  <pubDate>Wed, 16 Sep 2009 20:11:23 GMT</pubDate>
  <title>Steve</title>
  <link>http://krow.livejournal.com/663367.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/brady/3925156712/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2438/3925156712_4b91449ced.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/brady/3925156712/&quot;&gt;IMG_8139&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/brady/&quot;&gt;bradyf&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	One of my favorite installations from this year&apos;s Burning Man. Steve tracked people entering/exiting from it. It would assign people to instruments and then mix sound based on movement.&lt;br /&gt;&lt;br /&gt;Pretty awesome.&lt;/p&gt;</description>
  <comments>http://krow.livejournal.com/663367.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>7</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/662700.html</guid>
  <pubDate>Tue, 15 Sep 2009 22:14:30 GMT</pubDate>
  <title>Darwin&apos;s Temple</title>
  <link>http://krow.livejournal.com/662700.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/brianaker/3905344645/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3429/3905344645_64c97e6fee.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/brianaker/3905344645/&quot;&gt;DSC_0038.JPG&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/brianaker/&quot;&gt;krow&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	Notice that the &quot;crash pads&quot; have been moved to the side.&lt;/p&gt;</description>
  <comments>http://krow.livejournal.com/662700.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/661758.html</guid>
  <pubDate>Sat, 12 Sep 2009 03:01:24 GMT</pubDate>
  <title>Off to see the Wizard... Wicked tonight!</title>
  <link>http://krow.livejournal.com/661758.html</link>
  <description>&lt;a href=&quot;http://pics.livejournal.com/krow/pic/0010r74y/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/krow/pic/0010r74y/s320x240&quot; alt=&quot;photo.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://krow.livejournal.com/661758.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/661054.html</guid>
  <pubDate>Thu, 10 Sep 2009 06:30:41 GMT</pubDate>
  <title>Burning Man, Road Trips, Community</title>
  <link>http://krow.livejournal.com/661054.html</link>
  <description>One flat tire and nearly a thousand miles round trip I am back in Seattle again!&lt;br /&gt;&lt;br /&gt;It is really difficult to explain to others exactly what Burning Man is, in large part because it is so many things. Art exhibition, music festival,  community, city, party...&lt;br /&gt;&lt;br /&gt;Every day the event changes. Black Rock City grows from nothing, evolves into a city of tends of thousands, and then returns to nothing within a week.&lt;br /&gt;&lt;br /&gt;No two days of the event are the same.&lt;br /&gt;&lt;br /&gt;The early part of the week is nothing like the later part of the week.&lt;br /&gt;&lt;br /&gt;The weekend?&lt;br /&gt;&lt;br /&gt;Saturday&apos;s Man burn is completely different from the Temple burn that comes Sunday. The dichotomy between the two is incredible. It is hard to believe that the two occur at the same event, with many of the same people.&lt;br /&gt;&lt;br /&gt;At the core is a concept of &quot;radical self reliance&quot;. The concept is impossible to escape. It does not matter if you come in a tent or an RV, at some point you will face yourself, your fears, and your own expectations. No matter what happens, no matter if you overcome or fail, you come out differently on the other end.&lt;br /&gt;&lt;br /&gt;Standing out on the playa one night, I spoke to a friend who had only just arrived midweek. She was wound up and the look in her eyes were one of apprehension.&lt;br /&gt;&lt;br /&gt;I mentioned to her that no matter what, her being there meant that she was going to change.&lt;br /&gt;&lt;br /&gt;Her response?&lt;br /&gt;&lt;br /&gt;&quot;That is what I am afraid of.&quot;&lt;br /&gt;&lt;br /&gt;By the end of the week? She had a smile on her face and was talking about her experience in glowing terms.&lt;br /&gt;&lt;br /&gt;That sort of transformation has been the common currency of the event for the people I have traveled with.&lt;br /&gt;&lt;br /&gt;Community?&lt;br /&gt;&lt;br /&gt;Everywhere you walk you are met with people greeting other people. Gift giving, sharing, and warm welcomes are everyday events. I have had people join our camp midweek. I have seen people show up at camp only to return at the end week. They were never seen between those two times.&lt;br /&gt;&lt;br /&gt;Sleep is the enemy.&lt;br /&gt;&lt;br /&gt;The hardest part of Burning Man?&lt;br /&gt;&lt;br /&gt;Returning Home :)&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/krow/pic/0010qg87/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/krow/pic/0010qg87/s320x240&quot; alt=&quot;3905346957_006e4eee37.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://krow.livejournal.com/661054.html</comments>
  <lj:security>public</lj:security>
  <lj:reply-count>5</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/660957.html</guid>
  <pubDate>Thu, 10 Sep 2009 05:00:51 GMT</pubDate>
  <title>Welcome to your next Hot Shower</title>
  <link>http://krow.livejournal.com/660957.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/brianaker/3906162830/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2653/3906162830_e8dba3801c.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/brianaker/3906162830/&quot;&gt;Welcome to your next Hot Shower&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/brianaker/&quot;&gt;krow&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	Yes, we had hot showers. Often scalding!&lt;/p&gt;</description>
  <comments>http://krow.livejournal.com/660957.html</comments>
  <category>)&apos;(</category>
  <lj:security>public</lj:security>
  <lj:reply-count>7</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/660451.html</guid>
  <pubDate>Thu, 10 Sep 2009 03:22:19 GMT</pubDate>
  <title>Worm Tube</title>
  <link>http://krow.livejournal.com/660451.html</link>
  <description>&lt;div class=&quot;flickr-frame&quot;&gt;	&lt;a href=&quot;http://www.flickr.com/photos/brianaker/3900881096/&quot; title=&quot;photo sharing&quot;&gt;&lt;img src=&quot;http://farm3.static.flickr.com/2652/3900881096_8d002dc603.jpg&quot; class=&quot;flickr-photo&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;	&lt;span class=&quot;flickr-caption&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/brianaker/3900881096/&quot;&gt;DSC_0275&lt;/a&gt;, originally uploaded by &lt;a href=&quot;http://www.flickr.com/people/brianaker/&quot;&gt;krow&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;				&lt;p class=&quot;flickr-yourcomment&quot;&gt;	This is a view down the &quot;tube&quot; of the structure I was working on for the last few months. Other then a few bad pieces of rope we replaced on the first day it turned out incredibly well  :)&lt;br /&gt;&lt;br /&gt;Now I just need to start working out what I will build for next year!&lt;/p&gt;</description>
  <comments>http://krow.livejournal.com/660451.html</comments>
  <category>)&apos;(</category>
  <lj:security>public</lj:security>
  <lj:reply-count>1</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>http://krow.livejournal.com/659776.html</guid>
  <pubDate>Tue, 01 Sep 2009 06:31:06 GMT</pubDate>
  <title>Cube</title>
  <link>http://krow.livejournal.com/659776.html</link>
  <description>&lt;a href=&quot;http://pics.livejournal.com/krow/pic/0010pqw4/&quot;&gt;&lt;img src=&quot;http://pics.livejournal.com/krow/pic/0010pqw4/s320x240&quot; alt=&quot;photo.jpg&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</description>
  <comments>http://krow.livejournal.com/659776.html</comments>
  <category>)&apos;(</category>
  <lj:security>public</lj:security>
  <lj:reply-count>2</lj:reply-count>
</item>
</channel>
</rss>
