<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Third Party Code &#187; mysql</title>
	<atom:link href="http://thirdpartycode.com/category/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://thirdpartycode.com</link>
	<description>Linux, PHP 5, Apache Consulting in San Antonio, TX</description>
	<lastBuildDate>Tue, 10 Aug 2010 13:35:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>SQL Error with Symfony 1.4.4 and MySQL 5.5</title>
		<link>http://thirdpartycode.com/2010/05/symfony-mysql5-5-error/</link>
		<comments>http://thirdpartycode.com/2010/05/symfony-mysql5-5-error/#comments</comments>
		<pubDate>Mon, 10 May 2010 00:19:36 +0000</pubDate>
		<dc:creator>Vid Luther</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://thirdpartycode.com/?p=574</guid>
		<description><![CDATA[I ran into an interesting bug/fact today while messing around with MySQL 5.5. It seems that in the DDL, you can&#8217;t say &#8220;Type=InnoDB&#124;MyISAM&#124;Foo&#8221; anymore. You have to say &#8220;Engine=InnoDB&#8221;. This will break your propel:build-all , or propel:build-all-load .. or if &#8230; <a href="http://thirdpartycode.com/2010/05/symfony-mysql5-5-error/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthirdpartycode.com%2F2010%2F05%2Fsymfony-mysql5-5-error%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthirdpartycode.com%2F2010%2F05%2Fsymfony-mysql5-5-error%2F&amp;source=vidluther&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>I ran into an interesting bug/fact today while messing around with MySQL 5.5.  It seems that in the DDL, you can&#8217;t say &#8220;Type=InnoDB|MyISAM|Foo&#8221; anymore. You have to say &#8220;Engine=InnoDB&#8221;. </p>
<p>This will break your propel:build-all , or propel:build-all-load  .. or if you manually try to execute the sql from data/sql/*. You&#8217;ll get the following error: </p>
<blockquote><p>
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near &#8216;Type=InnoDB&#8217; at line 11
</p></blockquote>
<p>This issue is resolved in Propel 1.5.0, but I&#8217;m not sure when Symfony will include that in the Symfony 1.4 series. </p>
<p>To fix this issue, all you need to do is edit one file:</p>
<blockquote><p>
symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/classes/propel/engine/builder/sql/mysql/MysqlDDLBuilder.php</p>
<p>Line 156, change it to say:  $script .= &#8220;Engine=$mysqlTableType&#8221;;
</p></blockquote>
<p>Hope this helps anyone else using Propel, Symfony and MySQL 5.5 </p>
]]></content:encoded>
			<wfw:commentRss>http://thirdpartycode.com/2010/05/symfony-mysql5-5-error/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HipHop for PHP is not for you 60% of the time, everytime.</title>
		<link>http://thirdpartycode.com/2010/02/hiphop-for-php/</link>
		<comments>http://thirdpartycode.com/2010/02/hiphop-for-php/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 15:18:11 +0000</pubDate>
		<dc:creator>Vid Luther</dc:creator>
				<category><![CDATA[hiphop]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://thirdpartycode.com/?p=523</guid>
		<description><![CDATA[My apologies to Ron Burgundy for the title of the post, but I&#8217;m just a fan of the wisest man to ever live. As Marco and Illia and countless others have said, unless you don&#8217;t work with PHP or were &#8230; <a href="http://thirdpartycode.com/2010/02/hiphop-for-php/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthirdpartycode.com%2F2010%2F02%2Fhiphop-for-php%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthirdpartycode.com%2F2010%2F02%2Fhiphop-for-php%2F&amp;source=vidluther&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>My apologies to <a href="http://www.imdb.com/title/tt0357413/quotes">Ron Burgundy</a> for the title of the post, but I&#8217;m just a fan of the wisest man to ever live.</p>
<div id="_mcePaste">As <a href="http://blog.tabini.ca/2010/02/hiphop-what-you-need-to-know/">Marco</a> and <a href="http://ilia.ws/archives/213-My-Thoughts-on-HipHop.html">Illia </a>and c<a href="http://www.planet-php.net/search/hiphop">ountless others</a> have said, unless you don&#8217;t work with PHP or were in a coma, Facebook released</div>
<div id="_mcePaste"><a title="HipHop for PHP" href="http://developers.facebook.com/news.php?blog=1&amp;story=358">HipHop for PHP</a> , it&#8217;s open source, it&#8217;s awesome, it makes you go fast.</div>
<h2>It&#8217;s not for you.</h2>
<h2><span style="font-weight: normal; font-size: 13px;">You, being the average PHP developer, systems administrator, hacker.  A lot is being made of how CPU load went down by 50% etc, that&#8217;s a great number and on the surface very hard to argue with, but to really understand it, you must understand the problem a lot better. Facebook didn&#8217;t decide to write HipHop and use it in production because they had all this money laying around and felt like paying 3 engineers to work on something. They looked at other existing alternatives, implemented them, and when they maxed them out, decided to switch.</span></h2>
<h2>HipHop Does Not:</h2>
<div id="_mcePaste">
<ol>
<li>Make your database queries faster. A slow database is slow whether accessed via PHP or C++, Java, Scala, Ruby&#8230;..</li>
<li>Make your images load faster</li>
<li>Debug faster / better, if anything you&#8217;ll be debugging HipHop and PHP , to make sure something didn&#8217;t break in the conversion.</li>
</ol>
</div>
<div id="_mcePaste">I really want people to understand, that the decision to switch to HipHop isn&#8217;t a light decision, and it&#8217;s definitely not the silver bullet.</div>
<h3>If anything, HipHop should be your last resort.</h3>
<div></div>
<h2>But, it&#8217;ll help me reduce the number of web heads!</h2>
<div id="_mcePaste">It&#8217;ll also make you change your deployment process, you&#8217;ll have to learn how to use gdb and other tools to debug things in production.</div>
<div id="_mcePaste">Keep that in mind when you think about the monthly cost of a cloud server, or a slice at slicehost. The number of servers arguments comes into play <em><strong>when you can eliminate &gt; 100 servers</strong></em>.</div>
<div></div>
<div>If you&#8217;re going from 4 servers to 2, I guarantee you that you&#8217;re doing it wrong.</div>
<div></div>
<div>I suggest you to look into your application more, and find the bottlenecks. Be absolutely certain that you can&#8217;t tweak your DB any more, or use APC, or Zend Server or something else.</div>
]]></content:encoded>
			<wfw:commentRss>http://thirdpartycode.com/2010/02/hiphop-for-php/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Changing MySQL storage engine for one table in your Propel/Symfony project</title>
		<link>http://thirdpartycode.com/2009/09/changing-mysql-storage-engine-for-one-table-in-propel-symfony/</link>
		<comments>http://thirdpartycode.com/2009/09/changing-mysql-storage-engine-for-one-table-in-propel-symfony/#comments</comments>
		<pubDate>Fri, 25 Sep 2009 17:22:40 +0000</pubDate>
		<dc:creator>Vid Luther</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://www.phpcult.com/blog/?p=345</guid>
		<description><![CDATA[I need one MyISAM table in my schema, I&#8217;m using Symfony 1.2 and Propel 1.3. As flexible as Symfony and it&#8217;s YAML files are, Propel currently doesn&#8217;t allow you to change the storage engine on the fly. You use the &#8230; <a href="http://thirdpartycode.com/2009/09/changing-mysql-storage-engine-for-one-table-in-propel-symfony/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F09%2Fchanging-mysql-storage-engine-for-one-table-in-propel-symfony%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F09%2Fchanging-mysql-storage-engine-for-one-table-in-propel-symfony%2F&amp;source=vidluther&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>I need one MyISAM table in my schema, I&#8217;m using Symfony 1.2 and Propel 1.3. As flexible as Symfony and it&#8217;s YAML files are, Propel currently doesn&#8217;t allow you to change the storage engine on the fly. You use the storage engine as specified in propel.ini. As discussed in the <a href="http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/FAQ"> Propel FAQ </a>.</p>
<p>So, the next best thing to do now is to have it so that when Symfony runs propel:insert-sql, I can piggyback my own SQL to it. Luckily, this is possible, and it&#8217;s <a href="http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/HowTos/AdditionalSQLFiles"> explained here </a></p>
<p>I now have my own SQL file running at the end, where I do an ALTER TABLE. For the lazy web.</p>
<p>1. Create your Alter table:</p>
<blockquote><p>ALTER TABLE `database`.`footable` ENGINE=`MyISAM`;</p></blockquote>
<p>2. Save the file in $projectdir/data/sql/piggyback.sql</p>
<p>3. Edit $projectdir/data/sql/sqldb.map and append the following line:</p>
<blockquote><p>piggyback.sql=dbconnectioname (usually propel)</p></blockquote>
<p>Save the file and run</p>
<p>./symfony propel:insert-sql</p>
]]></content:encoded>
			<wfw:commentRss>http://thirdpartycode.com/2009/09/changing-mysql-storage-engine-for-one-table-in-propel-symfony/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Building PHP 5.3 packages on Ubuntu 9.04 (Jaunty) for Apache 2</title>
		<link>http://thirdpartycode.com/2009/08/building-php-5-3-packages-on-ubuntu-9-04-jaunty-for-apache-2/</link>
		<comments>http://thirdpartycode.com/2009/08/building-php-5-3-packages-on-ubuntu-9-04-jaunty-for-apache-2/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 04:56:54 +0000</pubDate>
		<dc:creator>Vid Luther</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.phpcult.com/blog/?p=325</guid>
		<description><![CDATA[Goal: Build a PHP 5.3 package, that I can install and upgrade on new ubuntu slices as needed, without having to compile on each box. This is an amalgamation of different blog posts that did certain things really well, but &#8230; <a href="http://thirdpartycode.com/2009/08/building-php-5-3-packages-on-ubuntu-9-04-jaunty-for-apache-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F08%2Fbuilding-php-5-3-packages-on-ubuntu-9-04-jaunty-for-apache-2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F08%2Fbuilding-php-5-3-packages-on-ubuntu-9-04-jaunty-for-apache-2%2F&amp;source=vidluther&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><b> Goal: </b> Build a PHP 5.3 package, that I can install and upgrade on new ubuntu slices as needed, without having to compile on each box.</p>
<p>This is an amalgamation of different blog posts that did certain things really well, but not everything I wanted. The post I refer to specifically <a href="http://www.brandonsavage.net/installing-php-5-3-on-ubuntu/"> Installing PHP 5.3 on Ubuntu by Brandon Savage </a>.</p>
<h2> Prep your system </h2>
<p>Setup your development server to be able to compile things. By default, most installations will not come with compilers installed.</p>
<pre class="brush: bash">
apt-get install checkinstall
</pre>
<p>Say yes, and let it follow the dependencies as needed.</p>
<p>Get the development headers for some of the extensions you&#8217;ll be compiling in.</p>
<pre class="brush: bash">

apt-get install postgresql-8.3 postgresql-client-8.3 postgresql-client-common postgresql-common postgresql-server-dev-8.3
aptitude install mysql-client mysql-client-5.0	mysql-common mysql-server mysql-server-5.0 mysql-server-core-5.0

apt-get install libtidy-dev curl libcurl4-openssl-dev libcurl3 libcurl3-gnutls zlib1g zlib1g-dev libxslt1-dev libzip-dev libzip1 libxml2 libsnmp-base libsnmp15 libxml2-dev libsnmp-dev libjpeg62	libjpeg62-dev libpng12-0 libpng12-dev zlib1g zlib1g-dev libfreetype6 libfreetype6-dev libbz2-dev libxpm4-dev libmcrypt-dev libmcrypt4
</pre>
<h2> Download PHP and Compile it </h2>
<pre class="brush: bash">

mkdir ~/srcs
cd ~/srcs

wget http://us3.php.net/get/php-5.3.0.tar.gz/from/this/mirror
tar xvfz php-5-3-0.tar.gz
cd php-5.3.0
</pre>
<p>Now, you can either do the ./configure &#8211;help and pick your options, or you can use my <a href="http://www.thirdpartycode.com/php53.config.nice"> configure options for PHP 5.3 </a></p>
<pre class="brush: bash">
make
make test

checkinstall
</pre>
<p>checkinstall will ask you some basic questions about the package, answer and let it build the package for you. You will run into an interesting issue at first, apxs2 will complain about a LoadModule not being in the httpd.conf file. This is an artifact of how Ubuntu/Debian likes to handle it&#8217;s configuration files. The simplest thing is to add a line at the bottom of your httpd.conf that loads a benign module. <a href="http://wooga.drbacchus.com/mod_pony"> Mod Pony seems cute </a>.</p>
<p>Configure your PHP like any normal apache server. Reload apache, put the handy phpinfo(); in your documentroot, and then have fun.  <br />
<em><strong> Be sure to remove the phpinfo(); from your production servers. </strong></em><br />
<br />
<em><strong> If you want MySQL 5.1, just do apt-get install mysql-server-5.1 , be sure to change the dev header packages to the same version as well. </strong><strong></strong></em></p>
]]></content:encoded>
			<wfw:commentRss>http://thirdpartycode.com/2009/08/building-php-5-3-packages-on-ubuntu-9-04-jaunty-for-apache-2/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Talking to multiple databases with Symfony 1.2</title>
		<link>http://thirdpartycode.com/2009/08/talking-to-multiple-databases-with-symfony-1-2/</link>
		<comments>http://thirdpartycode.com/2009/08/talking-to-multiple-databases-with-symfony-1-2/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 01:59:23 +0000</pubDate>
		<dc:creator>Vid Luther</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.phpcult.com/blog/?p=313</guid>
		<description><![CDATA[Notes on using Symfony with multiple databases. I&#8217;m building a new application in symfony, and I need to use some data from an existing application written by another developer. I can&#8217;t just extend the existing application for reasons we don&#8217;t &#8230; <a href="http://thirdpartycode.com/2009/08/talking-to-multiple-databases-with-symfony-1-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F08%2Ftalking-to-multiple-databases-with-symfony-1-2%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F08%2Ftalking-to-multiple-databases-with-symfony-1-2%2F&amp;source=vidluther&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Notes on using Symfony with multiple databases.</p>
<p>I&#8217;m building a new application in symfony, and I need to use some data from an existing application written by another developer.</p>
<p>I can&#8217;t just extend the existing application for reasons we don&#8217;t need to get into, but I do need to interface with the data, since the existing<br />
app doesn&#8217;t really have a nice way to handle a SOA, or share data easily, my next best option is to talk to the original app&#8217;s db.</p>
<p>Things you need to think about.</p>
<ol>
<li> <b> No Hacks </b> This is not a hack, symfony/propel support this out of the box, the documentation mentions it briefly but it&#8217;s definitely possible. </li>
<li> <b> Permissions </b> Should you share the same username/password? or different? In my case, I wanted to make sure symfony couldn&#8217;t write to the existing app, so I created a user with SELECT privileges only. (This will affect your ability to run symfony propel:insert-sql (it&#8217;ll give you an error)) </li>
<li> <b> You WILL need MULTIPLE Schema.yml files </b> The docs specifically state this, <b> <em> Symfony will take into account every file ending with schema.yml or schema.xml in the config/ folder </em> </b> </li>
<li> <b> Filesystem </b> I want to keep as much of a separation between the two databases, not only is the user different, so is the location of the Models. This can be done easily with changing the <em> package </em> attribute in the schema.yml file. </li>
</ol>
<h3> Conventions / Background</h3>
<ul>
<li> Existing application is called, &#8220;earlyprototype&#8221;, and the database name is also &#8220;earlyprototype&#8221;. </li>
<li> New application is called, &#8220;newfunapp&#8221;, and the database is also called &#8220;newfunapp&#8221; </li>
</ul>
<h3> The How to </h3>
<h4> Build your YAML files </h4>
<p>Since you need a schema.yml or xml file, you can either generate one using a tool that will take your data defintion and create the YAML for you, or you can cheat and build a temp project, configure it to work with <em> earlyprototype </em>, and then do a <em> symfony propel:build-schema </em>. This will give you a schema.yml file in your config directory.</p>
<p>You will take this file and copy it to the newfunapp now, but you&#8217;ll give it a different name. For simplicity, you&#8217;ll call it earlyprototype.schema.yml.<br />
So you&#8217;ll end up with something like.. <em> ~/websites/newfunapp/config/earlyprototype.schema.yml </em>.</p>
<p>For the purpose of this tutorial, take your schema.yml file for the newfunapp, and rename it to newfunapp.schema.yml</p>
<h3> Edit your Schema YAML files </h3>
<p>You now need to edit your YAML files. They need to look something like the following:</p>
<fieldset>
<legend> config/earlyprototype.schema.yml </legend>
<pre class="brush: php">
earlyprototype:
  _attributes:
    package: lib.model.earlyprototype
    defaultIdMethod: native
</pre>
</fieldset>
<fieldset>
<legend> config/newfunapp.schema.yml </legend>
<pre class="brush: php">
newfunapp:
  _attributes:
    package: lib.model.newfunapp
    defaultIdMethod: native
</pre>
</fieldset>
<p>What you&#8217;ve changed here is the name from &#8220;propel&#8221;, to earlyprototype and newfunapp, so now symfony won&#8217;t be confused. And, you&#8217;ve told symfony to put the models in their own directories inside the lib/model/ folder of your app.</p>
<h3> Edit your database.yml file </h3>
<p>Now, you need to tell symfony about the DSN for the different databases. Just like you can specify your original db in the environments, you can do the same for the different dbs. Keep the changes to the schema.yml we made above in mind.</p>
<fieldset>
<legend> config/databases.yml </legend>
<pre class="brush: php">
dev:
  newfunapp:
    param:
      classname: DebugPDO
      username: newfunappexampleuser
      password: testingexample
      encoding: utf8
  earlyprototype:
    class: sfPropelDatabase
    param:
      classname: DebugPDO
      dsn: 'mysql:host=localhost;dbname=earlyprototype'
      username: earlyprototypereadonlyuser
      password: testingexample
      encoding: utf8
  propel:
	 class: sfPropelDatabase
	 param:
	    dsn: 'mysql:host=localhost;dbname=pearanalytics3'
	    username: thiscantpossiblywork
	    password: thisisnotevenarealpassword
</pre>
</fieldset>
<h4> Possible Bug: For some reason, I noticed I need to have the &#8216;propel&#8217; connection here, just the name </h4>
<h3> Build your SQL and Models </h3>
<dl>
<dt> <b> Build SQL </b> </dt>
<dd>
<pre class="brush: bash"> symfony propel:build-sql </pre>
</dd>
<dt> <b> Build Models </b> </dt>
<dd> symfony propel:build-model </dd>
</dl>
<p>When you build your models, you&#8217;ll see that the lib/model/ directory has two subdirectories, that&#8217;s where<br />
your models are now.</p>
<h3> Connecting to the the different databases </h3>
<p>Now that you have multiple connections, you can&#8217;t just call the basic methods, you need to specify the connection when you make your queries.</p>
<dl>
<dt> <b> Execute a query with a different connection </b> </dt>
<dd>
<pre class="brush: php">AllreportsPeer::doSelect($c, Propel::getConnection('earlyprototype')); </pre>
</dd>
</dl>
<p><strong> <em> This relates to the possible bug thing above. If you don&#8217;t have a propel connection defined in the databases.yml, the code above will not work. <img src='http://thirdpartycode.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  </em></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://thirdpartycode.com/2009/08/talking-to-multiple-databases-with-symfony-1-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Redefining Spam, in the age of Twitter</title>
		<link>http://thirdpartycode.com/2009/05/redefining-spam-in-the-age-of-twitter/</link>
		<comments>http://thirdpartycode.com/2009/05/redefining-spam-in-the-age-of-twitter/#comments</comments>
		<pubDate>Thu, 14 May 2009 01:15:11 +0000</pubDate>
		<dc:creator>Vid Luther</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[other]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[uce]]></category>

		<guid isPermaLink="false">http://www.phpcult.com/blog/?p=289</guid>
		<description><![CDATA[For the past few months, I&#8217;ve been helping my friend develop and market Philtro . We&#8217;ve gone through various iterations of the elevator pitch for it, and the one that seems to be kinda working, is: &#8220;It&#8217;s like a spam &#8230; <a href="http://thirdpartycode.com/2009/05/redefining-spam-in-the-age-of-twitter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F05%2Fredefining-spam-in-the-age-of-twitter%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F05%2Fredefining-spam-in-the-age-of-twitter%2F&amp;source=vidluther&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>For the past few months, I&#8217;ve been helping my friend develop and market <a href="http://philtro.com"> Philtro </a>.<br />
We&#8217;ve gone through various iterations of the elevator pitch for it, and the one that seems to be kinda working, is: <em> &#8220;It&#8217;s like a spam filter for your Twitter account.&#8221; </em></p>
<p>At SXSW, I got the <a href="http://www.flickr.com/photos/nanpalmero/3364688224/in/set-72157615438326167/"> opportunity to talk to </a> Guy Kawasaki about this tool, and he said &#8220;There is no spam on twitter, if you don&#8217;t like it, don&#8217;t follow them&#8221;.</p>
<p>While that&#8217;s an easy way to handle spam, I also realized that the word Spam means different things to different people.</p>
<p>On Twitter, nothing is UCE. It&#8217;s easy to block the profiles with the attractive women, selling Blackberries, iPhones, and who want to chat with me in private with a webcam because 140charactersistoosmalltodiscusstheirdesires.</p>
<p>Philtro is not trying to eliminate viagra ads from your tweetstream. The aim is to help you make the most out of twitter, friendfeed, facebook without alienating people.</p>
<p>Example:</p>
<blockquote><p>
I follow Dan, because he&#8217;s a great guy to follow when it comes to design patterns, PHP and Macs. He&#8217;s got great insight into those topics, he&#8217;s also an avid fan of Twilight, Traveling pants, and underwater basket weaving. I am not.</p>
<p>I want to see what he has to say about the topics I share with him, but I don&#8217;t care about his latest Twilight fanclub meetings.
</p></blockquote>
<p>This is where Philtro comes in, it figures out the topics I care about based on the training I give it. &#8220;Training&#8221; means marking 50 unique<br />
tweets as &#8220;Thumbs up &#8221; or &#8220;Thumbs down&#8221;.</p>
<p>So, Philtro gets rid of uninteresting tweets to you. It&#8217;s not a spam filter in the traditional sense of the word, it&#8217;s not  recommending Twitter users to you (yet&#8230;).  I can&#8217;t think of a word for it, but the best analogy would be a chain of emails at work, to which you&#8217;re CC&#8217;d on, but the topic is something you have no say on.  You can&#8217;t remove yourself from other people&#8217;s REPLY ALL button, so you&#8217;re just stuck deleting emails all day.</p>
<p>If you want to get into the private beta faster, <a href="http://www.philtro.com/openinvite/1"> use my super duper special link </a>.</p>
<p>It&#8217;s not Unsolicited, and the Tweeter is not &#8220;Junk&#8221;,  what is it?</p>
]]></content:encoded>
			<wfw:commentRss>http://thirdpartycode.com/2009/05/redefining-spam-in-the-age-of-twitter/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Cost of clouds, Mosso/Slicehost vs AWS</title>
		<link>http://thirdpartycode.com/2009/04/cost-of-clouds-mossoslicehost-vs-aws/</link>
		<comments>http://thirdpartycode.com/2009/04/cost-of-clouds-mossoslicehost-vs-aws/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 14:47:53 +0000</pubDate>
		<dc:creator>Vid Luther</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[mosso]]></category>
		<category><![CDATA[rackspace]]></category>
		<category><![CDATA[slicehost]]></category>

		<guid isPermaLink="false">http://www.phpcult.com/blog/?p=266</guid>
		<description><![CDATA[Marco Tabini has a great post discussing the cost of the cloud, and the current state of affairs. He calls for a simpler cloud platform, not just in terms of cost, but ease of use and products and services that &#8230; <a href="http://thirdpartycode.com/2009/04/cost-of-clouds-mossoslicehost-vs-aws/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F04%2Fcost-of-clouds-mossoslicehost-vs-aws%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F04%2Fcost-of-clouds-mossoslicehost-vs-aws%2F&amp;source=vidluther&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://mtabini.blogspot.com/2009/04/cost-of-cloud.html"> Marco Tabini </a> has a great post discussing the cost of the cloud, and the current state of affairs. He calls for a simpler cloud platform, not just in terms of cost, but ease of use and products and services that adapt to changes in the market. Though the $100/month Mosso offering is mentioned (this site is hosted on Mosso), I would like to point out the recent acquisitions by Rackspace/Mosso that make their cloud offerings even more compelling than AWS for me.</p>
<ul>
<li> Slicehost : Rackspace announced the acquisition in late 2008. This allows me to spin up virtual instances or Slicehost&#8217;s version of AMI&#8217;s called Slices <strong>(this was updated due to Ian&#8217;s comment below. You cannot migrate an AMI from EC2 to Slicehost)</strong>. fairly quickly, and cheaply, but more importantly I know what definitively what my costs will be if I know how much bandwidth I&#8217;ll be using up. </li>
<li> JungleDisk: I think is a good way to get into the consumer space, I&#8217;ve told a lot of my friends to use JungleDisk to back up their files, with the obvious caveat to encrypt sensitive information and not to back up your SSN # to the cloud </li>
<li> Limelight CDN: I think this is just the static file portion, not the video stuff yet, but it&#8217;s pretty neat. </li>
</ul>
<p>Now acquisitions alone don&#8217;t make something worthwhile, it&#8217;s what you do with them. I&#8217;m not a 100% clear on what the plans are with JungleDisk, but I have seen what they&#8217;re doing with Slicehost and Limelight and it&#8217;s pretty slick.</p>
<p>If you&#8217;re a <a href="http://www.mosso.com"> Mosso </a> customer, you can now enable <a href="http://www.mosso.com/cloudfiles.jsp"> Cloudfiles </a> and <a href="http://www.mosso.com/cloudservers.jsp"> Cloud Servers</a>.</p>
<p>Cloudfiles has in my opinion a much better set of documentation of it&#8217;s API, and a much lower barrier to entry. I was literally able to upload content to the system in less than 5 minutes of signing up. You can already use Cyberduck and access the cloud files system via a simple to use FTP client. There&#8217;s also a firefox extension. This incidentally highlights the power of open source. I believe the Mosso guys did the development themselves for Cyberduck and contributed the code back, I could be wrong.  This is a great equalizer for a player late in the game. S3 is now available as an option on almost every major closed source file transfer application, but getting a company to invest time in your system is hard to do.  There has to be a demand, which may not come because there&#8217;s no easy way to access your system. So they solved the ease of use problem right off the bat.</p>
<p>Apart from ease of access/adoption, what I really like, is that the incoming bandwidth to cloudfiles is free, if you&#8217;re using Mosso. So, if my web front end accepts a file upload, I can take that and upload it to cloudfiles without incurring bandwidth costs. So, now I have a load balanced web server and a fairly low cost CDN available to me under one control panel.</p>
<p>Then, add Cloudservers. Which is basically slicehost, without the bandwidth priced in. And the same rules apply here,  any bandwidth to and from Mosso and Cloudservers is complimentary. So now, I can spin up my slices of MySQL, and use my flavor of Linux and my custom MySQL patches, and create my own cluster, or master/slave environment without the need to share resources with the other MySQL users in the cloud. This really gives me the flexibility that other shared hosting providers lack.</p>
<p>Lastly, something you can&#8217;t put a price on. Customer Support. Rackspace is truly fanatical about support, they really do give a crap, which is refreshing.  What&#8217;s awesome is that the same quality of support is available for the Cloud offerings as is for their Managed Hosting customers. I can&#8217;t afford managed hosting, and I always thought that sure if I&#8217;m paying $500/month for an ok system the support better be good, but for $100/month , virtually unlimited websites and clients, and I get the same level of professional/non script reading support? Why should I waste time trying anything else? I have no idea who or what to call or email to when it comes to AWS.</p>
<p><strong>Disclaimer:</strong> I think my last paragraph sounds like a marketing gimmick, so.. I&#8217;ve edited it a few times, but seriously, in this economy, and even in better economies, customer service is key, and these guys should run a customer service university for other tech companies.</p>
<p><strong>Thanks to a comment by John Frank of Amazon in the comments below.  There is indeed a way to get 24/7 support.</strong> <strong>AWS has had 24/7 phone and email support for quite some time: <a href="http://aws.amazon.com/premiumsupport/#overview"> http://aws.amazon.com/premiumsupport/#overview </a></strong></p>
<p>I&#8217;d like to know who else you think is a major player for the consumer/bootstrap businesses out there as well as enterprises. I&#8217;ll be following this post up with a set of tools I use, to make my life in the cloud easier. I&#8217;d like to know what you use as well, applications, code libraries, etc.</p>
<p>If you&#8217;re considering using Mosso, I suggest you read <a href="http://www.snipe.net/tags/hosting/"> Snipe&#8217;s Notes </a> they are extremely well written and informative, and a coupon for two months free <img src='http://thirdpartycode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://thirdpartycode.com/2009/04/cost-of-clouds-mossoslicehost-vs-aws/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Using Subversion with Mosso</title>
		<link>http://thirdpartycode.com/2009/03/using-subversion-with-mosso/</link>
		<comments>http://thirdpartycode.com/2009/03/using-subversion-with-mosso/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 05:15:58 +0000</pubDate>
		<dc:creator>Vid Luther</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[mosso]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.phpcult.com/blog/using-subversion-with-mosso/</guid>
		<description><![CDATA[Thanks to Expandrive . You can now use Subversion (SVN) on websites hosted at Mosso . The idea of mounting a directory you&#8217;d normally ftp/sftp to, and then using SVN on it, at first seemed oddly implausible to me. But, &#8230; <a href="http://thirdpartycode.com/2009/03/using-subversion-with-mosso/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F03%2Fusing-subversion-with-mosso%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F03%2Fusing-subversion-with-mosso%2F&amp;source=vidluther&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Thanks to <a href="http://www.expandrive.com/mac"> Expandrive </a>. You can now use Subversion (SVN) on websites hosted at <a href="http://www.mosso.com"> Mosso </a>. The idea of mounting a directory you&#8217;d normally ftp/sftp to, and then using SVN on it, at first seemed oddly implausible to me. But, I tried it recently, and got exactly the results I wanted. I even had the repository hosted at <a href="http://www.unfuddle.com"> Unfuddle </a>.  I think this post is fairly obvious, but if you have any questions feel free to ask in the comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://thirdpartycode.com/2009/03/using-subversion-with-mosso/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Using your Mac as a local web development environment.</title>
		<link>http://thirdpartycode.com/2009/02/using-your-mac-as-a-local-web-development-environment/</link>
		<comments>http://thirdpartycode.com/2009/02/using-your-mac-as-a-local-web-development-environment/#comments</comments>
		<pubDate>Sat, 07 Feb 2009 15:15:27 +0000</pubDate>
		<dc:creator>Vid Luther</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.phpcult.com/blog/?p=235</guid>
		<description><![CDATA[My last post was for all users, technical and non. This post is for the techies who know me, and are switching. Some are coming from Windows, some from Linux, some are designers who need to do some local development. &#8230; <a href="http://thirdpartycode.com/2009/02/using-your-mac-as-a-local-web-development-environment/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F02%2Fusing-your-mac-as-a-local-web-development-environment%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F02%2Fusing-your-mac-as-a-local-web-development-environment%2F&amp;source=vidluther&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>My <a href="http://www.phpcult.com/blog/welcome-to-os-x-or-yet-another-switchers-page-20/"> last post </a> was for all users, technical and non. This post is for the techies who know me, and are switching. Some are coming from Windows, some from Linux, some are designers who need to do some local development. So, I&#8217;ll try to keep this post as simple as possible, and perhaps more like a tutorial, where you can &#8220;copy and paste&#8221; commands and files. <br />
If you&#8217;re going to be doing any kind of web development, chances are you&#8217;ll be deploying to a linux/unix server. I don&#8217;t know anything about Windows or IIS, so ignore this post if you&#8217;re looking for IIS help. I&#8217;m also assuming basic level of knowledge with how to find and edit files either via Finder, or via Terminal. For the non unix folks <b> ~ </b> for the rest of the article, means <strong> <em> &#8220;Your home directory&#8221; </em></strong>. Your home directory is usually <b> /Users/yourusername </b></p>
<h3> Security Caveat </h3>
<p>If you&#8217;re doing this on a laptop, please keep your company, or your clients security and confidentiality in mind. Disable auto login, use strong passwords, enable computer locking via Keychain. <br />
<a href="http://cdn.cloudfiles.mosso.com/c23981/basic_laptop_security.png"> I use these settings as a base</a>.  You can and should do a little more, but that&#8217;s not the focus of this post.</p>
<h3> Things you&#8217;ll need </h3>
<ol>
<li> <b> <a href="http://www.apachefriends.org/en/xampp-macosx.html"> XAMPP </a> </b> I prefer it over MAMP, because it seems to get upgraded faster, so the chances of a more recent PHP version are higher. Of course, for the uber nerds, you can get Macports, or Fink. If you&#8217;re comfortable, you can even install the Dev Tools CD, get GCC, and compile things yourself, something I used to do, but I no longer need the cutting edge. </li>
<li> When I feel like getting cutting edge, I do install <a href="http://www.vmware.com"> Vmware Fusion </a>, turn on a Linux image, and have fun. </li>
<li> <a href="http://www.expandrive.com/expandrive"> Expandrive </a> This is more for production, and remote servers, but I find this tool ridiculously handy. It&#8217;s better than the free variant of Macfuse, so it&#8217;s worth the money. Here&#8217;s how it&#8217;s better: the way to manage the drives is simpler, and reconnects to remote drives are more stable than the free sshfs variant. </li>
<li> You can get <a href="http://www.mamp.info/en/index.html"> MAMP and MAMP Pro </a> MAMP Pro is worth the upgrade, if you decide to get MAMP. </li>
<li> <a href="http://dev.mysql.com/" title="MySQL"> <b> MySQL </b> </a> If you need MySQL 5.1, or for some reason 4 or 3, you need to go get it yourself, but XAMPP offers MySQL 5.0 by default </li>
<li> <a href="http://macromates.com" title="Textmate"> <b> Textmate </b> </a> An excellent editor if you don&#8217;t like vim/emacs. </li>
<li> <a href="http://code.google.com/p/macvim/"> <b> MacVim </b> </a> This is gVim for mac, with all the mac keyboard bindings, and the power of vim. (this is subjective: and the ease of vim).  I&#8217;ve replaced the default vim, with this for my personal use </li>
<li> <a href="http://www.open.collab.net/downloads/community/"> Subversion 1.5 </a> By default, OS X comes with SVN 1.4, some of my repositories have been upgraded to 1.5 so I needed to upgrade </li>
<li> <a href="http://code.google.com/p/git-osx-installer/"> Git </a> I&#8217;ve been playing on some projects which aren&#8217;t live, but merely proof of concepts, and I decided to learn git, with those projects. I&#8217;m really digging it, though I&#8217;m still struggling with <a href="http://wiki.github.com/evilchelu/braid"> Braid </a> and getting it to do things like SVN Externals. </li>
<li> <a href="http://versionsapp.com"> Versions App </a> This is a nice GUI for SVN, if you&#8217;re into GUIs </li>
</ol>
<h3> Setting up your Shell </h3>
<p>Most of these things will go into <strong> ~/.bash_profile </strong></p>
<h5> Set your editors </h5>
<p>Open up ~/.bash_profile in your favorite editor, and add the following lines </p>
<blockquote><p>
	export SVN_EDITOR=&#8217;vim&#8217;<br />
	export EDITOR=&#8217;vim&#8217;
</p></blockquote>
<p>Of course, you can replace vim, with emacs, pico, nano, or if you hate your life, ed.</p>
<h5> Change your paths </h5>
<p>Since we&#8217;ve downloaded XAMPP, macvim, Subversion and Git, we need to make sure the newer version of these apps is available to us.</p>
<blockquote><p>PATH=/usr/local/git/bin:/opt/local/bin:/usr/local/mysql/bin:$HOME/bin:$PATH<br />
PATH=$PATH:/Applications/xampp/xamppfiles/bin:/opt/subversion/bin</p></blockquote>
<p>I prefer to move the older binaries out of the way. <br />
Open a new shell  and type <em> which php </em> , or <em> which svn </em><br />
if you see things like <strong>/usr/bin/php</strong> or<strong> /usr/bin/svn,</strong> it means you&#8217;re still using the older versions. So do the following: (# bash represents your bash prompt, not a comment)</p>
<blockquote><p> # cd /usr/bin<br />
 # sudo mkdir old<br />
 # sudo mv php* old<br />
 # sudo mv svn* old</p></blockquote>
<p>You need to do some other things with Macvim, email me if their install instructions aren&#8217;t clear to you.</p>
<h3> Setup your virtual hosts, and hosts file </h3>
<p>Since you&#8217;re doing web development, you need to setup apache, and a means to access the virtual hosts on your laptop. Since you&#8217;re using XAMPP, you need to make sure that the built in Apache is not turned on. Go to <b> System Preferences -> Sharing </b> and make sure <b> Web Sharing is not checked </b></p>
<h5> The easy, but expensive way </h5>
<p>
You can download <a href="http://clickontyler.com/virtualhostx/"> VirtualHost X </a> and manage your virtual hosts with that, but the app is fairly basic, you still need to know your custom directives, if you want to do anything advanced. What&#8217;s nice is that it edits your /etc/hosts file for you, so it&#8217;s all done in one step. It&#8217;s not as advanced as MAMP Pro. But, it&#8217;s fairly straightforward and flexible as a GUI.</p>
<h5> The somewhat harder, but cheaper way </h5>
<p>Since we&#8217;re using XAMPP, you need to do the following:</p>
<blockquote><p>
# sudo vim /Applications/xampp/etc/httpd.conf : and uncomment the line asking for httpd-vhosts.conf<br />
# sudo vim /Applications/xampp/etc/extra/httpd-vhosts.conf
</p></blockquote>
<p>Here you can create your own virtual hosts. I use a naming convention of laptop.domain.com, which always points to 127.0.0.1. You could edit your Name servers and add that record, but then it doesn&#8217;t work if you don&#8217;t have an internet connection. So, I prefer editing my /etc/hosts file. </p>
<p><b> Example Virtual Host Configuration </b></p>
<blockquote>
<p>NameVirtualHost *:80</p>
<p>#Local Symfony installation for website</p>
<p>&lt; VirtualHost *&gt;<br />
    ServerName &#8220;laptop.example.com&#8221;<br />
    DocumentRoot &#8220;/Users/vluther/websites/example/web&#8221;<br />
        &lt;Directory /Users/vluther/websites/example/web/&gt;<br />
                Options Indexes FollowSymLinks MultiViews<br />
                AllowOverride All<br />
                Order allow,deny<br />
                allow from all<br />
        &lt;/Directory&gt;<br />
    Alias /sf /Users/vluther/websites/example/lib/vendor/symfony/data/web/sf</p>
<p>        ErrorLog /var/log/apache2/example_error.log</p>
<p>        CustomLog /var/log/apache2/example_access.log combined</p>
<p>&lt;/VirtualHost&gt;
</p></blockquote>
<p><b> <em> Notice I keep the logs in /var/log/apache2/. This is so I don&#8217;t need to mess with the log rotation scripts of OS X. </em> </b><br />
<br />
<b> Example /etc/hosts file </b></p>
<blockquote><p>
127.0.0.1	laptop.example.com	example<br />
127.0.0.1	laptop.example2.com	example2
</p></blockquote>
<h3> In conclusion </h3>
<p>I&#8217;m not going into details of how you create your local working copies with git, svn, or finder. If you really need help with that, email me, or <a href="http://twitter.com/vluther"> ping me on twitter </a><br />
<br />
If you&#8217;re using Django, or RoR, you can skip most of the apache configuration options, and just use the built in web servers that come with the frameworks. For production/stage testing I recommend installing linux on a vmware image, and then messing with FastCGI/mod_python for Django or whatever you need to do with ruby.<br />
<br />
By no means is this supposed to be the only way you do things, there&#8217;s more than one way to skin this cat. Please share your insights and methods in the comments below. </p>
]]></content:encoded>
			<wfw:commentRss>http://thirdpartycode.com/2009/02/using-your-mac-as-a-local-web-development-environment/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Scaling a startup, technically and fiscally</title>
		<link>http://thirdpartycode.com/2009/01/sharding-startups/</link>
		<comments>http://thirdpartycode.com/2009/01/sharding-startups/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 16:29:06 +0000</pubDate>
		<dc:creator>Vid Luther</dc:creator>
				<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.phpcult.com/blog/?p=225</guid>
		<description><![CDATA[Jeremy has a great post about why DHH&#8217;s article on Sharding is&#8230;.dumb, i mean flawed. If you&#8217;re a startup, and think you&#8217;re about to experience tremendous growth, listen to Jeremy, not DHH. I&#8217;ll let Jeremy and the other tech heavy &#8230; <a href="http://thirdpartycode.com/2009/01/sharding-startups/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F01%2Fsharding-startups%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fthirdpartycode.com%2F2009%2F01%2Fsharding-startups%2F&amp;source=vidluther&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p><a href="http://jeremy.zawodny.com/blog/archives/010841.html">Jeremy</a> has a great post about why <a href="http://www.37signals.com/svn/posts/1509-mr-moore-gets-to-punt-on-sharding">DHH&#8217;s article on Sharding</a> is&#8230;.dumb, i mean flawed.</p>
<p>If you&#8217;re a startup, and think you&#8217;re about to experience tremendous growth, listen to Jeremy, not DHH.  I&#8217;ll let Jeremy and the other tech heavy hitters handle the technical flaws with his article.</p>
<p>I&#8217;m not sure about his definition of &#8220;reasonable&#8221; is, but I can&#8217;t find a single system with 128GB of RAM within my definition of &#8220;reasonable&#8221;.  Secondly, the whole notion that bigger/better/faster is the solution is absurd. That&#8217;s like saying we need a bigger land fill because the one we have currently is full. Sure, that&#8217;ll work, but how do you install said landfill into place? do you dig under the current one? do you use &#8220;bolt on&#8221; land fills?</p>
<p>DHH completely misses the purpose of sharding in my opinion. It&#8217;s not just about the load and distribution of reads/writes for mysql, but the organizational benefits are invaluable. I&#8217;ve been using some form of sharding for the past 5 years, and it&#8217;s helped me considerably. The drawbacks he&#8217;s mentioned, can also be a benefit. The number of times I&#8217;ve been able to upgrade a certain set of customers without affecting the others, has been invaluable for us, and for the customers. Your entire system doesn&#8217;t have to go down just because MySQL doesn&#8217;t have online changes yet.  We&#8217;ve been able to upgrade our system without any noticeable downtime to our customers, because of sharding.</p>
<p>I&#8217;m sure he&#8217;s right on certain points and situations, but I&#8217;d suggest the end user not consider his word as gospel, nor mine, nor Jeremy&#8217;s.. your situation is unique, but don&#8217;t discard a methodology just because newer/faster hardware is around the corner.</p>
]]></content:encoded>
			<wfw:commentRss>http://thirdpartycode.com/2009/01/sharding-startups/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)

Served from: thirdpartycode.com @ 2010-09-10 17:44:23 -->