<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Ramblings of a web guy</title>
	<atom:link href="http://doughboy.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://doughboy.wordpress.com</link>
	<description>Brian Moon, of dealnews.com, shares what he knows (and learns) about PHP, MySQL and other stuff</description>
	<pubDate>Wed, 14 May 2008 01:22:20 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
			<item>
		<title>PHP session cookie refresh</title>
		<link>http://doughboy.wordpress.com/2008/05/14/php-session-cookie-refresh/</link>
		<comments>http://doughboy.wordpress.com/2008/05/14/php-session-cookie-refresh/#comments</comments>
		<pubDate>Wed, 14 May 2008 00:40:47 +0000</pubDate>
		<dc:creator>Brian Moon</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[memcached]]></category>

		<guid isPermaLink="false">http://doughboy.wordpress.com/?p=131</guid>
		<description><![CDATA[I have always had an issue with PHP Sessions.  Albeit, a lot of my issues are now invalid.  When they were first implemented, they had lots of issues.   Then the $_SESSION variable came to exist and it was better.  Then memcached came to exist and you could store sessions there. [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I have always had an issue with PHP Sessions.  Albeit, a lot of my issues are now invalid.  When they were first implemented, they had lots of issues.   Then the $_SESSION variable came to exist and it was better.  Then memcached came to exist and you could store sessions there.  That was better.  But, still, after all this time, there is one issue that still bugs me.</p>
<p>When you start a session, if the user had no cookie, they get a new session id and they get a cookie.  You can configure that cookie to last for n seconds via php.ini or session_cookie_set_params().  But, and this is a HUGE but for me, that cookie will expire in n seconds no matter what.  Let me explain further.  For my needs, the cookie should expire in n seconds <strong>from last activity. </strong>So, each page load where sessions are used should reset the cookie&#8217;s expiration.  This way, if a user leaves the site, they have n seconds to come back and still be logged in.</p>
<p>Consider an application that sets the cookie expiration to 5 minutes.  The person clicks around on the site, gets a phone call that lasts 8 minutes and then gets back to using the site.  Their session has expired!!!!  How annoying is that?  The only sites I know that do that are banks.  They have good reason.  I understand that.</p>
<p>My preference would be to either set an ini value that tells PHP sessions to keep the session active as long as the user is using the site.  Or give me access to the internal function php_session_send_cookie().  That is the C function that sends the cookie to the user&#8217;s browser.  Hmm, perhaps a patch is in my future.</p>
<p>In the short term, this is what I do:<br />
<code><br />
setcookie(<br />
ini_get(&#8221;session.name&#8221;),<br />
session_id(),<br />
time()+ini_get(&#8221;session.cookie_lifetime&#8221;),<br />
ini_get(&#8221;session.cookie_path&#8221;),<br />
ini_get(&#8221;session.cookie_domain&#8221;),<br />
ini_get(&#8221;session.cookie_secure&#8221;),<br />
ini_get(&#8221;session.cookie_httponly&#8221;)<br />
);<br />
</code></p>
<p>That will set the session cookie with a fresh ttl.</p>
<p>Ok, going to dig into some C code now and see if I can make a patch for this.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/doughboy.wordpress.com/131/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/doughboy.wordpress.com/131/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/doughboy.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/doughboy.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/doughboy.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/doughboy.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/doughboy.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/doughboy.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/doughboy.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/doughboy.wordpress.com/131/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/doughboy.wordpress.com/131/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/doughboy.wordpress.com/131/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=doughboy.wordpress.com&blog=302707&post=131&subd=doughboy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://doughboy.wordpress.com/2008/05/14/php-session-cookie-refresh/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/doughboy-128.jpg" medium="image">
			<media:title type="html">doughboy</media:title>
		</media:content>
	</item>
		<item>
		<title>Thoughts on the 2008 MySQL Conference and Expo</title>
		<link>http://doughboy.wordpress.com/2008/05/07/thoughts-on-the-2008-mysql-conference-and-expo/</link>
		<comments>http://doughboy.wordpress.com/2008/05/07/thoughts-on-the-2008-mysql-conference-and-expo/#comments</comments>
		<pubDate>Wed, 07 May 2008 17:48:47 +0000</pubDate>
		<dc:creator>Brian Moon</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Phorum]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[memcached]]></category>

		<guid isPermaLink="false">http://doughboy.wordpress.com/?p=130</guid>
		<description><![CDATA[Well, it has been almost a month.  I know I am late to the blogosphere on my thoughts.  Just been busy.
Again this year, the Phorum team was invited to be a part of the DotOrg Pavilion.  What is that?  Basically they just give expo floor space to open source projects.  It is cool.  We had [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Well, it has been almost a month.  I know I am late to the blogosphere on my thoughts.  Just been busy.</p>
<p>Again this year, the Phorum team was invited to be a part of the DotOrg Pavilion.  What is that?  Basically they just give expo floor space to open source projects.  It is cool.  We had a great location this year.  We were right next to the area where they served food and drinks during the breaks.  We had lots of traffic and met some of our power users.  <a href="http://www.imvu.com/">IMVU.com</a> is getting 1.5 million messages per month in their Phorum install.  They did have to customize it to fit into their sharding.  But, that is expected.  A guy (didn&#8217;t catch his name) from Innobase came by and told us that they just launced <a href="http://forums.innodb.com/">InnoDB support forums</a> on their site using Phorum.  Cool.  So now MySQL and Innobase use Phorum.  I am humbled by the message that sends to me about Phorum.</p>
<p>Speaking of our booth, we were right next to the <a href="http://www.phpmyadmin.net/">phpMyAdmin</a> guys.  Wow, that product has come a long way.  I was checking out the visual database designer they have now.  It was neat.  I also met the Gentoo MySQL package maintainer.  He was in the phpMyAdmin booth.</p>
<p>I was interviewed by <a href="http://www.webdevradio.com/">WebDevRadio</a> as I <a href="http://doughboy.wordpress.com/2008/05/03/interview-with-webdevradio/">already posted</a>.  I was also asked to do a short Q&amp;A with the Sun Headlines video team.  They used one part of my clip.  I won&#8217;t link to that.  No, if you find it good for you.  I need to be interviewed some more or something.  I did not look comfortable at all.</p>
<p>There were lots of companies with <em>open</em> in their name or slogan.  I guess this is expected pandering.</p>
<p>I attended part of the InnoDB talk given by <a href="http://en.oreilly.com/mysql2008/public/schedule/speaker/88">Mark Callaghan</a> of Google.  It appears that Google is serious about improving InnoDB on large machines.  That is, IMO, good news for anyone that likes InnoDB.  If I counted right, they had more than 5 people who at least part of their job is to improve InnoDB.</p>
<p>I gave my two talks.  The first had low attendance, but the feedback was nice.  It was just after the snack break in the expo hall and I was in the farthest room from the expo hall.  That is what I keep telling myself. =)  The second was better attended and the feedback seemed good there.  I was told by Maurice (Phorum Developer) that I talked too fast and at times sounded like Mr. Mackey from South Park by repeating the word <em>bad </em>a lot.  I will have to work on that in the future.  I want to do more speaking.</p>
<p>On the topic of my second talk, there seemed to be a lot of &#8220;This is how we scaled our site&#8221; talks.  I for one found them all interesting.  Everyone solves the problem differently.</p>
<p>Next year I am thinking about getting more specific with my talk submissions.  Some ideas include: PHP, MySQL and Large Data Sets, When is it ok to denormalize your data?, Using memcached (not so much about how it works), Index Creation (tools, tips, etc.).</p>
<p>In closing, I want to give a big thanks to Jay Pipes and Lenz Grimmer from MySQL.  Despite Jay&#8217;s luggage being lost he was still a big help with some registration issues among other things.  Both of them helped out the Phorum team a great deal this year.  Thanks guys.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/doughboy.wordpress.com/130/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/doughboy.wordpress.com/130/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/doughboy.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/doughboy.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/doughboy.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/doughboy.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/doughboy.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/doughboy.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/doughboy.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/doughboy.wordpress.com/130/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/doughboy.wordpress.com/130/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/doughboy.wordpress.com/130/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=doughboy.wordpress.com&blog=302707&post=130&subd=doughboy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://doughboy.wordpress.com/2008/05/07/thoughts-on-the-2008-mysql-conference-and-expo/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/doughboy-128.jpg" medium="image">
			<media:title type="html">doughboy</media:title>
		</media:content>
	</item>
		<item>
		<title>Amazon MP3 Store has holes</title>
		<link>http://doughboy.wordpress.com/2008/05/06/amazon-mp3-store-has-holes/</link>
		<comments>http://doughboy.wordpress.com/2008/05/06/amazon-mp3-store-has-holes/#comments</comments>
		<pubDate>Tue, 06 May 2008 16:03:04 +0000</pubDate>
		<dc:creator>Brian Moon</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Web Security]]></category>

		<guid isPermaLink="false">http://doughboy.wordpress.com/?p=129</guid>
		<description><![CDATA[A coworker found out how secure Amazon&#8217;s MP3 store is.  Even big guys like Amazon make errors in their web site security.
So, I clicked purchase and the album immediately started downloading. It was at this point that I had the thought cross my mind: &#8220;Did I update my credit card info?&#8221;
Well, no, I didn&#8217;t. Before [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>A coworker found out <a href="http://somogyiperspective.blogspot.com/2008/05/amazon-does-not-want-my-money.html">how secure Amazon&#8217;s MP3 store</a> is.  Even big guys like Amazon make errors in their web site security.</p>
<blockquote><p><em>So, I clicked purchase and the album immediately started downloading. It was at this point that I had the thought cross my mind: &#8220;Did I update my credit card info?&#8221;</p>
<p>Well, no, I didn&#8217;t. Before the album finished downloading, I was trying to change the method of payment. Turns out, for a digital purchase, you can&#8217;t do such a thing. So, I waited and wondered was was going to come of this&#8230;</em></p></blockquote>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/doughboy.wordpress.com/129/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/doughboy.wordpress.com/129/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/doughboy.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/doughboy.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/doughboy.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/doughboy.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/doughboy.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/doughboy.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/doughboy.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/doughboy.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/doughboy.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/doughboy.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=doughboy.wordpress.com&blog=302707&post=129&subd=doughboy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://doughboy.wordpress.com/2008/05/06/amazon-mp3-store-has-holes/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/doughboy-128.jpg" medium="image">
			<media:title type="html">doughboy</media:title>
		</media:content>
	</item>
		<item>
		<title>Example my.cnf files</title>
		<link>http://doughboy.wordpress.com/2008/05/06/example-mycnf-files/</link>
		<comments>http://doughboy.wordpress.com/2008/05/06/example-mycnf-files/#comments</comments>
		<pubDate>Tue, 06 May 2008 15:17:00 +0000</pubDate>
		<dc:creator>Brian Moon</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://doughboy.wordpress.com/?p=128</guid>
		<description><![CDATA[When I first started installing MySQL for myself, it was quite handy to have the example my.cnf files in the source package.  I was a noob to the MySQL configuration.  Even after I became more experienced, I would use them as a starting point.  However, I now find that they are so behind the times [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>When I first started installing MySQL for myself, it was quite handy to have the example my.cnf files in the source package.  I was a noob to the MySQL configuration.  Even after I became more experienced, I would use them as a starting point.  However, I now find that they are so behind the times they are not as useful.  Here are some of the comments from the files.</p>
<p><strong>my-small.cnf</strong></p>
<p># This is for a system with little memory (&lt;= 64M) where MySQL is only used<br />
# from time to time and it&#8217;s important that the mysqld daemon<br />
# doesn&#8217;t use much resources.</p>
<p><strong>my-medium.cnf</strong></p>
<p># This is for a system with little memory (32M - 64M) where MySQL plays<br />
# an important part, or systems up to 128M where MySQL is used together with<br />
# other programs (such as a web server)</p>
<p><strong>my-large.cnf</strong></p>
<p># This is for a large system with memory = 512M where the system runs mainly<br />
# MySQL.</p>
<p><strong>my-huge.cnf</strong></p>
<p># This is for a large system with memory of 1G-2G where the system runs mainly<br />
# MySQL.</p>
<p>I end up using the large or huge files as a starting point for every server I set up by hand.  The small and medium should be renamed underpowered and teeny-tiny.  Who has less than 64MB of RAM on a server now?  Can you even buy sticks of memory that small in any modern system?  Most come with 256MB sticks minimum.  And they never come with just one stick.</p>
<p>I will use the large example as a starting point for a server that has 2GB of RAM and will be running an entire site on one server.  I use huge for any server that runs only MySQL.  And even then, most of them have 4GB of RAM or more.</p>
<p>I don&#8217;t know if anyone at MySQL has plans on tweaking these files or not.  Perhaps those good guys at the <a href="http://www.mysqlperformanceblog.com/">MySQL Performance Blog</a> or <a href="http://www.percona.com/">Percona</a> could create some example my.cnf files.  I could put some out there, but I fear their sole purpose would be for someone to point out what I am doing wrong. =P  Hey, they work for me.  Hmm, maybe this would make a good <a href="http://forge.mysql.com/">MySQL Forge</a> section.  A whole area of user contributed my.cnf files.  They could be architecture specific and everything.  What runs best on Solaris?  Linux?  BSD?  Windows?  32-bit?  64-bit?</p>
<p>One thing I would for sure like to see is example files for InnoDB dominant servers.  Most of our servers all run primariy InnoDB tables.  None of these above examples covers InnoDB.  They have comments, but no preconfigured values.  I have seen more than one server using InnoDB tables without any custom configuration in their my.cnf.  In the end that is the fault of the server admin/owner no doubt.</p>
<p>What do you say?  Anyone up for a MySQL Forge section for my.cnf files?</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/doughboy.wordpress.com/128/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/doughboy.wordpress.com/128/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/doughboy.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/doughboy.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/doughboy.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/doughboy.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/doughboy.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/doughboy.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/doughboy.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/doughboy.wordpress.com/128/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/doughboy.wordpress.com/128/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/doughboy.wordpress.com/128/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=doughboy.wordpress.com&blog=302707&post=128&subd=doughboy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://doughboy.wordpress.com/2008/05/06/example-mycnf-files/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/doughboy-128.jpg" medium="image">
			<media:title type="html">doughboy</media:title>
		</media:content>
	</item>
		<item>
		<title>Interview with WebDevRadio</title>
		<link>http://doughboy.wordpress.com/2008/05/03/interview-with-webdevradio/</link>
		<comments>http://doughboy.wordpress.com/2008/05/03/interview-with-webdevradio/#comments</comments>
		<pubDate>Sat, 03 May 2008 15:13:00 +0000</pubDate>
		<dc:creator>Brian Moon</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Phorum]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[memcached]]></category>

		<guid isPermaLink="false">http://doughboy.wordpress.com/?p=127</guid>
		<description><![CDATA[While I was at the MySQL Conference, I sat down with Michael Kimsal of WebDevRadio and recapped the two talks that I gave at the conference.  I have uploaded the slides so you can follow along if you want.
One to a Cluster - The evolution of the dealnews.com architecture.
MySQL Tips and Tricks - Some simple [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>While I was at the MySQL Conference, I sat down with Michael Kimsal of <a href="http://www.webdevradio.com/index.php">WebDevRadio</a> and <a href="http://www.webdevradio.com/index.php?id=74">recapped the two talks</a> that I gave at the conference.  I have uploaded the slides so you can follow along if you want.</p>
<p><a href="http://content.dealnews.com/files/one_to_cluster.pdf">One to a Cluster</a> - The evolution of the dealnews.com architecture.</p>
<p><a href="http://content.dealnews.com/files/phorum_mysql_tricks.pdf">MySQL Tips and Tricks</a> - Some simple tips and some of the more advanced SQL we use in Phorum.</p>
<p>Thanks Michael.  Any time you need a guest, just let me know.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/doughboy.wordpress.com/127/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/doughboy.wordpress.com/127/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/doughboy.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/doughboy.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/doughboy.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/doughboy.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/doughboy.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/doughboy.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/doughboy.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/doughboy.wordpress.com/127/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/doughboy.wordpress.com/127/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/doughboy.wordpress.com/127/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=doughboy.wordpress.com&blog=302707&post=127&subd=doughboy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://doughboy.wordpress.com/2008/05/03/interview-with-webdevradio/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/doughboy-128.jpg" medium="image">
			<media:title type="html">doughboy</media:title>
		</media:content>
	</item>
		<item>
		<title>Embracing the new communication</title>
		<link>http://doughboy.wordpress.com/2008/05/02/embracing-the-new-communication/</link>
		<comments>http://doughboy.wordpress.com/2008/05/02/embracing-the-new-communication/#comments</comments>
		<pubDate>Fri, 02 May 2008 23:03:12 +0000</pubDate>
		<dc:creator>Brian Moon</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://doughboy.wordpress.com/?p=126</guid>
		<description><![CDATA[As I said a while back, I started using Twitter.  I get it.  Today I had a good idea and so I created a couple of new Twitter feeds.  If you are a big fan of my day job, you might want to look at http://tinyurl.com/6hznd3 and http://tinyurl.com/6f83rl.  We will see where it goes from [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As I said a while back, I started using Twitter.  I get it.  Today I had a good idea and so I created a couple of new Twitter feeds.  If you are a big fan of my day job, you might want to look at <a href="http://tinyurl.com/6hznd3">http://tinyurl.com/6hznd3</a> and <a href="http://tinyurl.com/6f83rl">http://tinyurl.com/6f83rl</a>.  We will see where it goes from here</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/doughboy.wordpress.com/126/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/doughboy.wordpress.com/126/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/doughboy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/doughboy.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/doughboy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/doughboy.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/doughboy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/doughboy.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/doughboy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/doughboy.wordpress.com/126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/doughboy.wordpress.com/126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/doughboy.wordpress.com/126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=doughboy.wordpress.com&blog=302707&post=126&subd=doughboy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://doughboy.wordpress.com/2008/05/02/embracing-the-new-communication/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/doughboy-128.jpg" medium="image">
			<media:title type="html">doughboy</media:title>
		</media:content>
	</item>
		<item>
		<title>MySQL Conference Swag</title>
		<link>http://doughboy.wordpress.com/2008/05/01/mysql-conference-swag/</link>
		<comments>http://doughboy.wordpress.com/2008/05/01/mysql-conference-swag/#comments</comments>
		<pubDate>Thu, 01 May 2008 18:09:08 +0000</pubDate>
		<dc:creator>Brian Moon</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[Phorum]]></category>

		<guid isPermaLink="false">http://doughboy.wordpress.com/?p=125</guid>
		<description><![CDATA[I was reading a post about The Swag Report and realized that I stayed so busy at the Phorum booth (and a little at the memcached booth) and preparing for my talks, I did not bother to go around and collect any swag from the conference.  So, if you are a vendor and want to [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I was reading a post about <a href="http://arjen-lentz.livejournal.com/113112.html">The Swag Report</a> and realized that I stayed so busy at the Phorum booth (and a little at the memcached booth) and preparing for my talks, I did not bother to go around and collect any swag from the conference.  So, if you are a vendor and want to mail me some swag that I missed, you can send it to: Brian Moon, 198 S. Hillcrest Rd., Odenville, AL  35120.  Of course, I expect nothing.  But, ya never know what product I might pimp because of a t-shirt. =)</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/doughboy.wordpress.com/125/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/doughboy.wordpress.com/125/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/doughboy.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/doughboy.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/doughboy.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/doughboy.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/doughboy.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/doughboy.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/doughboy.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/doughboy.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/doughboy.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/doughboy.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=doughboy.wordpress.com&blog=302707&post=125&subd=doughboy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://doughboy.wordpress.com/2008/05/01/mysql-conference-swag/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/doughboy-128.jpg" medium="image">
			<media:title type="html">doughboy</media:title>
		</media:content>
	</item>
		<item>
		<title>Playing with MySQL&#8217;s index merge</title>
		<link>http://doughboy.wordpress.com/2008/04/22/playing-with-mysql-index-merge/</link>
		<comments>http://doughboy.wordpress.com/2008/04/22/playing-with-mysql-index-merge/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 18:44:31 +0000</pubDate>
		<dc:creator>Brian Moon</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[Personal]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://doughboy.wordpress.com/?p=124</guid>
		<description><![CDATA[So, I mentioned before that I found out about index_merge at the MySQL Conference.  I was wondering why I had not heard more about it since it came out in 5.0.3.  When talking with some MySQL people about it, I received mixed results.  So, I decided to kind of run my own [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So, I mentioned before that I found out about <a href="http://dev.mysql.com/doc/refman/5.0/en/index-merge-optimization.html">index_merge</a> at the MySQL Conference.  I was wondering why I had not heard more about it since it came out in 5.0.3.  When talking with some MySQL people about it, I received mixed results.  So, I decided to kind of run my own tests on some data and see what I could figure out.</p>
<p>I apologize for WordPress&#8217; bad output. =(</p>
<p><strong>The Data</strong></p>
<p>I created a table with 5 million rows.  Early tests with MySQL&#8217;s Harrison Fisk (HarrisonF) over my shoulder with small data sets showed MySQL would optimize out the indexes in favor of table scans.  I wanted to avoid that.  This is my table schema:</p>
<p><code><br />
CREATE TABLE `test2` (<br />
`id1` int(10) unsigned NOT NULL default &#8216;0&#8242;,<br />
`id2` int(10) unsigned NOT NULL default &#8216;0&#8242;,<br />
`id3` int(10) unsigned NOT NULL default &#8216;0&#8242;,<br />
`dt` datetime NOT NULL default &#8216;0000-00-00 00:00:00&#8242;,<br />
`somevar` varchar(255) NOT NULL default &#8221;,<br />
KEY `id1` (`id1`),<br />
KEY `id2` (`id2`)<br />
) ENGINE=MyISAM<br />
</code></p>
<p>The field id1 was filled with random vaules between 1 and 5000.  I filled id2 with random values between 1 and 100, except that about half the data has the value 999 in it.  This was to emulate the issue we were seeing on the smaller table.  We found that if a value was in more than n% of the rows, the optimizer would skip the index.  I wanted to test that on larger data sets.  id3 was filled with random values between 1 and 1000000.  dt was a random date/time between 1999 and 2008.  and somevar was a random string chars.</p>
<p><strong>Intersect Merges</strong></p>
<p><code><br />
mysql&gt; explain select count(*) from test2 where id2=99 and id1=4795;<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
| id | select_type | table | type        | possible_keys | key     | key_len | ref  | rows | Extra                                              |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
|  1 | SIMPLE      | test2 | index_merge | id1,id2       | id1,id2 | 4,4     | NULL |    3 | Using intersect(id1,id2); Using where; Using index |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
</code></p>
<p>This is the most basic of example.  MySQL uses the two indexes, finds where they intersect and merges the data together.  This query is quite fast, although a key on the two together would be faster.  If you have this showing up a lot, you probably need to combine the two keys into one.  I should also note that in this example, only the keys are needed, no data from the tables.  This is important.</p>
<p><code><br />
mysql&gt; explain select sql_no_cache somevar from test2 where id2=99 and id1=4795;<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+<br />
| id | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra       |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+<br />
|  1 | SIMPLE      | test2 | ref  | id1,id2       | id1  | 4       | const |  930 | Using where |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+<br />
</code></p>
<p>As you see, as soon as we ask for data that is not in the indexes, our intersect is dropped in favor of using the key with the least values and simply scanning on those to match the rest of the where clause.  This was the case pretty much every time I tried it.  I was never able to use an index_merge with intersect when requesting data not available in the key.</p>
<p><strong>Union Merges</strong></p>
<p><code><br />
explain select sql_no_cache somevar from test2 where id2=99 or id1=4795;<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br />
| id | select_type | table | type        | possible_keys | key     | key_len | ref  | rows  | Extra                             |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+<br />
|  1 | SIMPLE      | test2 | index_merge | id1,id2       | id2,id1 | 4,4     | NULL | 27219 | Using union(id2,id1); Using where |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;+</code></p>
<p>mysql&gt;  select sql_no_cache somevar from test2 where id2=99 or id1=4795;<br />
26237 rows in set (0.20 sec)</p>
<p>This merge type takes to keys involved in an OR and then merges the data much like a UNION statement would.  As you can see, in this case, it did use the index even though we requested `somevar` that is not in the index.</p>
<p>To show the alternative to this, I selected using id3 instead of id1.  id3 has no index.</p>
<p><code><br />
mysql&gt; explain select sql_no_cache somevar from test2 where id2=99 or id3=266591;<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+<br />
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows    | Extra       |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+<br />
|  1 | SIMPLE      | test2 | ALL  | id2           | NULL | NULL    | NULL | 5000000 | Using where |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;&#8212;-+</code></p>
<p>mysql&gt; select sql_no_cache somevar from test2 where id2=99 or id3=266591;<br />
25252 rows in set (26.01 sec)</p>
<p>As you can see, this does a table scan even though there is a key on id2.  It does you know good.</p>
<p><strong>Sort Union Merge</strong></p>
<p><code><br />
mysql&gt; explain select sql_no_cache id1, id2 from test2 where id2=99 or id1 between 4999 and 5000;<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
| id | select_type | table | type        | possible_keys | key     | key_len | ref  | rows  | Extra                                  |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+<br />
|  1 | SIMPLE      | test2 | index_merge | id1,id2       | id2,id1 | 4,4     | NULL | 44571 | Using sort_union(id2,id1); Using where |<br />
+&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;&#8212;+&#8212;&#8212;+&#8212;&#8212;-+&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-+</code></p>
<p>mysql&gt; select sql_no_cache somevar from test2 where id2=99 or id1 between 4999 and 5000;<br />
27295 rows in set (0.19 sec)</p>
<p>This behaves much like the union merge.  However, because one index is using a range, MySQL must first sort one index and then merge the two.  Again, if I switch this to an AND instead of an OR, index_merge is not used in favor of scanning the id2 indexed data for matches to the rest of the where clause.</p>
<p><strong>Conclusion</strong></p>
<p>Hmm, after all this, I see why this was not a big announcement.  It can only make bad SQL and tables better.  Tables and queries that are already optimized using composite indexes will see no benefit from this.  At best this will help me with some one off queries or reports that are only run monthly where I don&#8217;t want to pollute the indexes with special cases just for those queries.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/doughboy.wordpress.com/124/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/doughboy.wordpress.com/124/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/doughboy.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/doughboy.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/doughboy.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/doughboy.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/doughboy.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/doughboy.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/doughboy.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/doughboy.wordpress.com/124/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/doughboy.wordpress.com/124/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/doughboy.wordpress.com/124/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=doughboy.wordpress.com&blog=302707&post=124&subd=doughboy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://doughboy.wordpress.com/2008/04/22/playing-with-mysql-index-merge/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/doughboy-128.jpg" medium="image">
			<media:title type="html">doughboy</media:title>
		</media:content>
	</item>
		<item>
		<title>2008 MySQL Conference, part 1</title>
		<link>http://doughboy.wordpress.com/2008/04/17/2008-mysql-conference-part-1/</link>
		<comments>http://doughboy.wordpress.com/2008/04/17/2008-mysql-conference-part-1/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 21:43:50 +0000</pubDate>
		<dc:creator>Brian Moon</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Phorum]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://doughboy.wordpress.com/?p=123</guid>
		<description><![CDATA[It is always surprising what I learn when I go to a conference these days.  Years ago, I could go to any talk and just suck it all in.  Now, it is the little nuggets.  The topics as a whole do more to confirm what I have already developed while running the [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>It is always surprising what I learn when I go to a conference these days.  Years ago, I could go to any talk and just suck it all in.  Now, it is the little nuggets.  The topics as a whole do more to confirm what I have already developed while running the <a href="http://www.phorum.org/">Phorum</a> project and building the infastructure for <a href="http://dealnews.com/">dealnews.com</a>.  That confirmation is still nice.  You know you are not the only one that thought a particular solution was a good idea.</p>
<p>One of the confirmations I have had is that the big sites like Flickr, Wikipedia, Facebook and others don&#8217;t use exotic setups when it comes to their hardware and OS.  During a keynote panel, they all commented that they did not do any virtualization on their servers.  Most did not use SANs.  Some ran older MySQL versions but some were running quite recent versions.  I have kept thinking that I did not have the desire to get to fancy with that stuff and clearly I am not the only one.</p>
<p>One of the little nuggets that will likely change my world is <a href="http://dev.mysql.com/doc/refman/5.0/en/index-merge-optimization.html">index_merge in MySQL</a>.  I feel silly as this has been around since 5.0.3 but I was not aware of it.  Basically MySQL will now use more than one key to resolve a where clause and possibly an order by depending on the query.  This could lead to me removing several keys from tables in both Phorum and at dealnews.</p>
<p>There were others, but I am tired and trying to get OpenID into the Phorum trunk right now so I will have to think of more later.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/doughboy.wordpress.com/123/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/doughboy.wordpress.com/123/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/doughboy.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/doughboy.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/doughboy.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/doughboy.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/doughboy.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/doughboy.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/doughboy.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/doughboy.wordpress.com/123/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/doughboy.wordpress.com/123/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/doughboy.wordpress.com/123/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=doughboy.wordpress.com&blog=302707&post=123&subd=doughboy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://doughboy.wordpress.com/2008/04/17/2008-mysql-conference-part-1/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/doughboy-128.jpg" medium="image">
			<media:title type="html">doughboy</media:title>
		</media:content>
	</item>
		<item>
		<title>Phorum turns 10</title>
		<link>http://doughboy.wordpress.com/2008/04/17/phorum-turns-10/</link>
		<comments>http://doughboy.wordpress.com/2008/04/17/phorum-turns-10/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 21:27:05 +0000</pubDate>
		<dc:creator>Brian Moon</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Phorum]]></category>

		<guid isPermaLink="false">http://doughboy.wordpress.com/?p=122</guid>
		<description><![CDATA[So, I am at the MySQL Conference this week with my Phorum co-developers.  We got to talking last night about how old Phorum is.  We knew it was about 10 years.  We pulled up some old archived zip file of version 1.5 and found in the this in the comment block.

* Created [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So, I am at the MySQL Conference this week with my Phorum co-developers.  We got to talking last night about how old Phorum is.  We knew it was about 10 years.  We pulled up some old archived zip file of version 1.5 and found in the this in the comment block.</p>
<p><code><br />
* Created 04/16/1998<br />
</code></p>
<p>Whoa!  That means that yesterday was the 10th birthday of the Phorum project.  I would guess that is the date I originally put the code up on my personal web site for people to download.  I remember sending that email to the  PHP General mailing list.  I told people they could have the code if they would help debug it.  Later I officially made a GPL license and then a BSD style license as I became more knowledgeable about the open source and free software world.</p>
<p>So, for kicks we decided to install version 1.6 on the phorum.org site.  Keep in mind the release date for that was March 30, 1999.  The only hurdles were a default value on an auto increment column in the .sql file, needing register_globals and adding .php3 to be parsed as PHP.  That got it up and running.  I had hoped to post the URL for fun, but sadly, 5 lines in were sql injection vulnerabilties.  Ah, the good ol&#8217; days.</p>
<p>Sadly, I don&#8217;t have my emails from 1998.  I lost everything in 2001 due to either a hard drive crash or some shady deal I had with someone hosting the Phorum site at the time.  I can&#8217;t remember.  If anyone happens to have UseNet archives or mailing list archives of the PHP General list from April 1998, please let me know.  I would love to have that old stuff.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/doughboy.wordpress.com/122/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/doughboy.wordpress.com/122/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/doughboy.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/doughboy.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/doughboy.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/doughboy.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/doughboy.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/doughboy.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/doughboy.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/doughboy.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/doughboy.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/doughboy.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=doughboy.wordpress.com&blog=302707&post=122&subd=doughboy&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://doughboy.wordpress.com/2008/04/17/phorum-turns-10/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/doughboy-128.jpg" medium="image">
			<media:title type="html">doughboy</media:title>
		</media:content>
	</item>
	</channel>
</rss>