<?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>Maggie Nelson</title>
	<atom:link href="http://maggienelson.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://maggienelson.com</link>
	<description>databases and code goodness</description>
	<lastBuildDate>Tue, 26 Jan 2010 15:18:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Inner Join / Outer Join &#8211; The Database Song</title>
		<link>http://maggienelson.com/2010/01/inner-join-outer-join-the-database-song/</link>
		<comments>http://maggienelson.com/2010/01/inner-join-outer-join-the-database-song/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 15:14:00 +0000</pubDate>
		<dc:creator>maggie</dc:creator>
				<category><![CDATA[entry]]></category>

		<guid isPermaLink="false">http://maggienelson.com/?p=311</guid>
		<description><![CDATA[Finally found some footage of the Inner Join / Outer Join database song Craig Campbell and I created for the Schematic Tech Summit in September 2008!  (The contribution was: lyrics about 50/50 and 100% of music is original and written by Craig.)
Link to the footage: Inner Join / Outer Join
And the lyrics:
Craig: &#8220;Hey Maggie, [...]]]></description>
			<content:encoded><![CDATA[<p>Finally found some footage of the Inner Join / Outer Join database song <a href="http://www.craigiam.com/">Craig Campbell</a> and I created for the Schematic Tech Summit in September 2008!  (The contribution was: lyrics about 50/50 and 100% of music is original and written by Craig.)</p>
<p>Link to the footage: <a href="http://www.flickr.com/photos/theporto/4306053499/">Inner Join / Outer Join</a></p>
<p>And the lyrics:</p>
<p>Craig: &#8220;Hey Maggie, I think this song&#8217;s going to be in A major&#8230;&#8221;<br />
Maggie &#8220;Major?! but I just met&#8217;er!&#8221;</p>
<p>inner join outer join<br />
do you really know the difference?<br />
inner join outer join<br />
a null could ruin your existence</p>
<p>it doesn&#8217;t matter which you choose<br />
whichever database you use<br />
oracle, mysql [and postgres!]<br />
i&#8217;ve got a story i should tell<br />
about inner and outer joins</p>
<p>CHORUS</p>
<p>do those phrases sound like gibberish<br />
like bubbles from a talking fish?<br />
or german or italian<br />
or japanese or french or dutch<br />
or maybe klingon?</p>
<p>CHORUS</p>
<p>focus on integrity<br />
and your database will feel pretty<br />
do you want an epic fail<br />
or do you want your app to scale<br />
and reach to Jupiter</p>
<p>where aliens can run queries<br />
to make sure you have your foreign keys<br />
have your ON DELETE CASCADE<br />
relations come to aid!<br />
your world is normalized</p>
<p>CHORUS x 2</p>
]]></content:encoded>
			<wfw:commentRss>http://maggienelson.com/2010/01/inner-join-outer-join-the-database-song/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>More about &#8220;In the Cloud&#8221;</title>
		<link>http://maggienelson.com/2009/07/more-about-in-the-cloud/</link>
		<comments>http://maggienelson.com/2009/07/more-about-in-the-cloud/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 19:28:08 +0000</pubDate>
		<dc:creator>maggie</dc:creator>
				<category><![CDATA[entry]]></category>

		<guid isPermaLink="false">http://maggienelson.com/?p=284</guid>
		<description><![CDATA[Schematic gave me some props for speaking at the NYSE panel I mentioned earlier:

Thanks for the reference!
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.schematic.com">Schematic</a> gave me some props for speaking at the NYSE panel <a href="http://maggienelson.com/2009/07/in-the-cloud-fanatically/">I mentioned earlier</a>:</p>
<p><a href="http://www.schematic.com/#/WhatsNew/"><img src="http://maggienelson.com/blog/wp-content/uploads/2009/07/picture-21.png" alt="schematic-whats-new" title="schematic-whats-new" width="448" height="561" class="aligncenter size-full wp-image-283" /></a></p>
<p>Thanks for the reference!</p>
]]></content:encoded>
			<wfw:commentRss>http://maggienelson.com/2009/07/more-about-in-the-cloud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More distributed key/value storage options</title>
		<link>http://maggienelson.com/2009/07/more-distributed-keyvalue-storage-options/</link>
		<comments>http://maggienelson.com/2009/07/more-distributed-keyvalue-storage-options/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 14:47:15 +0000</pubDate>
		<dc:creator>maggie</dc:creator>
				<category><![CDATA[entry]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[distributed]]></category>
		<category><![CDATA[keyvalue]]></category>
		<category><![CDATA[relational]]></category>
		<category><![CDATA[tokyocabinet]]></category>

		<guid isPermaLink="false">http://maggienelson.com/?p=277</guid>
		<description><![CDATA[CouchDB has infected me and I&#8217;ve been reading a lot about alternative ways to store data AND organize it.  In the midst of options for alternatives to relational databases, these two stand out:
Cassandra &#8211; &#8220;Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store. Cassandra brings together the distributed systems technologies from Dynamo [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://couchdb.apache.org/">CouchDB</a> has infected me and I&#8217;ve been reading a lot about alternative ways to store data AND organize it.  In the midst of options for alternatives to relational databases, these two stand out:</p>
<p><a href="http://incubator.apache.org/cassandra/">Cassandra</a> &#8211; &#8220;Cassandra is a highly scalable, eventually consistent, distributed, structured key-value store. Cassandra brings together the distributed systems technologies from Dynamo and the data model from Google&#8217;s BigTable. Like Dynamo, Cassandra is eventually consistent. Like BigTable, Cassandra provides a ColumnFamily-based data model richer than typical key/value systems.&#8221;</p>
<p>The huge appeal of Cassandra seems to be the approach to make it highly fault-tolerant.  Writes never fail.  Data is always available.  No single point of failure.  If you&#8217;re making a Twitter-like app, you should consider it.  </p>
<p><a href="http://tokyocabinet.sourceforge.net/spex-en.html">Tokyo Cabinet</a> &#8211; &#8220;Tokyo Cabinet uses hash algorithm to retrieve records. If a bucket array has sufficient number of elements, the time complexity of retrieval is &#8220;O(1)&#8221;. That is, time required for retrieving a record is constant, regardless of the scale of a database. It is also the same about storing and deleting. Collision of hash values is managed by separate chaining. Data structure of the chains is binary search tree. Even if a bucket array has unusually scarce elements, the time complexity of retrieval is &#8220;O(log n)&#8221;.&#8221;</p>
<p>Tokyo Cabinet is slightly newer and is apparently stupidly fast, faster than any other storage solutions out there (at least for now). It&#8217;s written in C and provided as API of C, Perl, Ruby, Java, and Lua.</p>
<p>Do you know anyone who has used these two already?  Care to share your experiences?</p>
]]></content:encoded>
			<wfw:commentRss>http://maggienelson.com/2009/07/more-distributed-keyvalue-storage-options/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>In the Cloud, Fanatically.</title>
		<link>http://maggienelson.com/2009/07/in-the-cloud-fanatically/</link>
		<comments>http://maggienelson.com/2009/07/in-the-cloud-fanatically/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 23:36:47 +0000</pubDate>
		<dc:creator>maggie</dc:creator>
				<category><![CDATA[entry]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[hosting]]></category>
		<category><![CDATA[rackspace]]></category>

		<guid isPermaLink="false">http://maggienelson.com/?p=266</guid>
		<description><![CDATA[As you may remember from my excited Twitter posts, I spoke on a panel organized by Rackspace at the New York Stock Exchange on June 17th.  The audience of the panel was mostly composed of representatives from various NYC agencies that, basically, build cool websites for clients (Yours Truly&#8217;s employer included). 
The panel topic [...]]]></description>
			<content:encoded><![CDATA[<p>As you may remember from my excited Twitter posts, I spoke on a panel organized by <a href="http://www.rackspace.com">Rackspace</a> at the New York Stock Exchange on June 17th.  The audience of the panel was mostly composed of representatives from various NYC agencies that, basically, build cool websites for clients (<a href="http://www.schematic.com">Yours Truly&#8217;s employer</a> included). </p>
<p>The panel topic was loosely defined and the conversation tended gravitate toward Twitter and Twitter-like applications.  Why Twitter?  It gained huge popularity, resulting in performance problems, often leading to the surfacing of the beloved <a href="http://en.wikipedia.org/wiki/Fail_Whale#Outages">Fail Whale</a>.  It also attracts some of the biggest buzzwords of Web 2.0: social networks, information architecture, folksonomy (hash tag anyone?).  In the end, Twitter has piles and piles of data &#8211; a lot of it is noise, but there is a method to the madness.  The panel talked about the possibilities other applications like it mean to the Internet and to future people-oriented business.</p>
<p>Among others, I shared the panel with Jonathan Bryce, the co-founder of Mosso.com, now rebranded to <a href="http://www.rackspacecloud.com/">The Rackspace Cloud</a> and Robert Scoble, a <a href="http://twitter.com/scobleizer">Twitter</a>er and <a href="http://friendfeed.com/scobleizer">FriendFeed</a>er Extraordinaire!  </p>
<p>The Rackspace team took <a href="http://www.rackspace.com/downloads/videos/nysepanelweb.mov">a video of the panel</a>, so check it out!  (Warning: pretty big .mov file.)  I already <3'ed Rackspace, as many of you know, but just in case, big props to <a href="http://twitter.com/bustamantea">Adrianna Bustamante</a> and her team for the efficient nerd-wrangling! (Although I still got to mention robot overlords in the panel!)</p>
<p><a href="http://www.rackspace.com/downloads/videos/nysepanelweb.mov"><img src="http://maggienelson.com/blog/wp-content/uploads/2009/07/nyse_framegrab.png" alt="nyse_framegrab" title="nyse_framegrab" width="505" height="273" class="aligncenter size-full wp-image-272" /></a></p>
<p>Oh, and as for the question: &#8220;How do we make money from Twitter?&#8221;  The answer is &#8220;Nobody knows, and even if they did, they sure aren&#8217;t going to tell you for free!&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://maggienelson.com/2009/07/in-the-cloud-fanatically/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.rackspace.com/downloads/videos/nysepanelweb.mov" length="278541902" type="video/quicktime" />
		</item>
		<item>
		<title>ORM in the PHP World</title>
		<link>http://maggienelson.com/2009/05/orm-in-the-php-world/</link>
		<comments>http://maggienelson.com/2009/05/orm-in-the-php-world/#comments</comments>
		<pubDate>Thu, 21 May 2009 16:05:36 +0000</pubDate>
		<dc:creator>maggie</dc:creator>
				<category><![CDATA[entry]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[relational]]></category>

		<guid isPermaLink="false">http://maggienelson.com/?p=262</guid>
		<description><![CDATA[Yesterday I gave a talk at the php&#124;tek 2009 Conference about the ORM in the PHP World.  In the first part of the presentation, I&#8217;m focusing on what an ORM is, what would make a great ORM, design patters for ORM and tying ORM systems to the PHP world in terms of philosophy, uses [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I gave a talk at the <a href="http://joind.in/event/view/14">php|tek 2009 Conference</a> about the <a href="http://maggienelson.com/conferences/phptek2009/ORM_in_the_PHP_World.pdf">ORM in the PHP World</a>.  In the first part of the presentation, I&#8217;m focusing on what an ORM is, what would make a great ORM, design patters for ORM and tying ORM systems to the PHP world in terms of philosophy, uses and approaches.  The second part of the presentation talks about a list of ORMs that I have seen and their pros and cons.  </p>
<p>The ORMs I mention:</p>
<ul>
<li><a href="http://propel.phpdb.org/trac/">Propel</a></li>
<li><a href="http://www.doctrine-project.org/">Doctrine</a></li>
<li><a href="http://getdorm.com/">dOrm</a></li>
<li>Zend Framework &#8211; specifically the proposed <a href="http://framework.zend.com/wiki/display/ZFPROP/Zend_Db_Mapper+-+Benjamin+Eberlei">Zend_Db_Mapper</a></li>
<li><a href="http://xyster.devweblog.org/wiki/xyster/Orm">Xyster Framework</a></li>
<li><a href="http://codeigniter.com/user_guide/">CodeIgniter</a></li>
<li>ez components&#8217;s <a href="http://ezcomponents.org/docs/api/latest/introduction_PersistentObject.html">Persistent Object</a> and <a href="http://ezcomponents.org/docs/tutorials/PersistentObject#the-persistence-mapping">Persistent Mapping</a></li>
<li><a href="http://www.symfony-project.org/doc/1_2/">symfony</a></li>
<li><a href="http://phplinq.codeplex.com/">PHPLinq</a></li>
<li><a href="http://solarphp.com/package/Solar_Sql_Model">Solar&#8217;s Solar_Sql_Model</a></li>
<li><a href="http://www.outlet-orm.org/">Outlet PHP ORM</a></li>
<li><a href="http://www.coughphp.com/">CoughPHP</a></li>
<li><a href="http://www.greaterscope.net/projects/ORMer">ORMer</a></li>
</ul>
<p>I plan on talking about each of these ORMs in detail in separate blog posts, so stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://maggienelson.com/2009/05/orm-in-the-php-world/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Weekend Reading: Fun with Data and Statistics</title>
		<link>http://maggienelson.com/2009/04/weekend-reading-fun-with-data-and-statistics/</link>
		<comments>http://maggienelson.com/2009/04/weekend-reading-fun-with-data-and-statistics/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 17:41:07 +0000</pubDate>
		<dc:creator>maggie</dc:creator>
				<category><![CDATA[entry]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[reading]]></category>
		<category><![CDATA[reference]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://maggienelson.com/?p=247</guid>
		<description><![CDATA[I know, I know, it&#8217;s only Thursday, but a girl can dream, right?
At work, I design a lot of database systems that manage a lot of data.  Most of these systems are put in front of real human beings who are expected to find meaningful data in a big big pile of it.  [...]]]></description>
			<content:encoded><![CDATA[<p>I know, I know, it&#8217;s only Thursday, but a girl can dream, right?</p>
<p>At work, I design a lot of database systems that manage a lot of data.  Most of these systems are put in front of real human beings who are expected to find meaningful data in a big big pile of it.  The two main approaches are to use either a harsh, editorial-driven, curated system such as a category hierarchy (Rock falls under Music falls under Entertainment) or have a completely free-flowing, user-generated system such as tagging or description search.  But in either case, there&#8217;s always something missing &#8211; you pick tagging, you wish people didn&#8217;t tag things with &#8220;boobies&#8221; so much.  You pick a strict category structure and it just feels too restrictive.  So what can you do?  The March/April 2009 issue of <a href="http://www.computer.org/portal/site/intelligent/">IEEE Intelligent Systems Magazine</a> has an article <a href="http://www.computer.org/portal/cms_docs_intelligent/intelligent/homepage/2009/x2exp.pdf">Unreasonable Effectiveness of Data</a>.</p>
<blockquote><p>We should stop acting as if our goal is to author extremely elegant theories, and instead embrace complexity and make use of the best ally we have: the unreasonable effectiveness of data.</p></blockquote>
<p>The article broke my brain a little bit, but <a href="http://www.computer.org/portal/cms_docs_intelligent/intelligent/homepage/2009/x2exp.pdf">go read it</a>, it&#8217;s interesting nevertheless.</p>
<p>While we&#8217;re talking about representations of data, go read about <a href="http://en.wikipedia.org/wiki/Semantic_web">the Semantic Web</a> &#8211; how can we tell computers and teh internets what we humans want?</p>
<p>If you want a little bit lighter reading, go read Bill Bryson&#8217;s books about language, specifically <a href="http://www.amazon.com/Mother-Tongue-Bill-Bryson/dp/B001W6RRFM">Mother Tongue</a> and <a href="http://www.amazon.com/Made-America-Bill-Bryson/dp/0380713810">Made In America</a>.  Reading anything by Bill Bryson will make you a better person (or your money back).</p>
<p>Once you have your data, someone will inevitably ask to tell them what&#8217;s &#8220;popular&#8221;.  I&#8217;m putting it in quotes, because it means so many things to so many people.  Before you answer, learn a little bit about statistics.  I recommend <a href="http://www.amazon.com/Statistics-Nutshell-Desktop-Reference-OReilly/dp/0596510497">Statistics in a Nutshell</a> from O&#8217;Reilly.  Hint: &#8220;most popular&#8221; does not always mean &#8220;has most views&#8221;.</p>
<p>For some real-life scenarios of statistics, misuse of statistics, problems with polling plus a nice dose of politics, read <a href="http://www.newsweek.com/id/140469">Nate Silver</a>&#8217;s <a href="http://www.fivethirtyeight.com/">FiveThirtyEight.com</a> blog.  He&#8217;s also a partner and analyst for <a href="http://baseballprospectus.com/">Baseball Prospectus</a> &#8211; you might fight baseball boring, but boy, does it lend itself toward awesome stats gathering and mangling.  Reading the two might not be immediately applicable to software developers, but it&#8217;ll put your mind in a right context when trying to get meaning out of your giant pile of data.</p>
<p>I will expect your book reports by Monday.</p>
]]></content:encoded>
			<wfw:commentRss>http://maggienelson.com/2009/04/weekend-reading-fun-with-data-and-statistics/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle Buys Sun</title>
		<link>http://maggienelson.com/2009/04/oracle-buys-sun/</link>
		<comments>http://maggienelson.com/2009/04/oracle-buys-sun/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 15:51:17 +0000</pubDate>
		<dc:creator>maggie</dc:creator>
				<category><![CDATA[entry]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://maggienelson.com/?p=250</guid>
		<description><![CDATA[Oracle buys Sun.  Sun owns MySQL.  Oracle&#8217;s press release about it here.
Does this mean an end to MySQL?  Are all companies using MySQL will now get really harsh sales pitches to use Oracle?  I love Oracle and I love MySQL &#8211; the beauty of both is competition.  &#8220;MySQL is better [...]]]></description>
			<content:encoded><![CDATA[<p>Oracle buys Sun.  Sun owns MySQL.  Oracle&#8217;s press release about it <a href="http://www.oracle.com/sun">here</a>.</p>
<p>Does this mean an end to MySQL?  Are all companies using MySQL will now get really harsh sales pitches to use Oracle?  I love Oracle and I love MySQL &#8211; the beauty of both is competition.  &#8220;MySQL is better than Oracle because&#8230;&#8221; and &#8220;Oracle is better than MySQL because&#8230;&#8221; are what drives both to get better.</p>
<p>Good for Oracle and Sun, but I&#8217;m curious to see what happens.</p>
<p>On the upside, <a href="http://blogs.oracle.com/opal/">Chris</a> and <a href="http://blog.khankennels.com/">Lig</a> will now be coworkers.</p>
]]></content:encoded>
			<wfw:commentRss>http://maggienelson.com/2009/04/oracle-buys-sun/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Example Conundrum</title>
		<link>http://maggienelson.com/2009/03/the-example-conundrum/</link>
		<comments>http://maggienelson.com/2009/03/the-example-conundrum/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 18:06:44 +0000</pubDate>
		<dc:creator>maggie</dc:creator>
				<category><![CDATA[entry]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[examples]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[presenting]]></category>

		<guid isPermaLink="false">http://maggienelson.com/?p=240</guid>
		<description><![CDATA[While working on my presentation about ORMs in PHP for the upcoming php&#124;tek conference in May, I&#8217;m finding it slightly challenging to pick a good example of data represented in the application and in the database, so that I could insert various ORMs in between these two ends.
The example should be flexible enough to fit [...]]]></description>
			<content:encoded><![CDATA[<p>While working on my presentation about <a href="http://tek.mtacon.com/c/schedule/talk/d1s7/1">ORMs in PHP</a> for the upcoming php|tek conference in May, I&#8217;m finding it slightly challenging to pick a good example of data represented in the application and in the database, so that I could insert various ORMs in between these two ends.</p>
<p>The example should be flexible enough to fit within different ORMs.  Think of a scale from ActiveRecord to something really complicated like Java&#8217;s Hibernate &#8211; that&#8217;s the scale for the ORMs.  It also needs to be really intuitive, so that the audience of the talk can understand it without much explanation &#8211; I want to focus on the ORMs themselves, not something else.</p>
<p>At this point, I&#8217;m leaning toward an example representing a user on a social network site and his friends.  Something along these lines (don&#8217;t beat me up, it&#8217;s a very rough draft):</p>
<p>object model:</p>
<blockquote><p><img src="http://maggienelson.com/blog/wp-content/uploads/2009/03/orm_examples_objects.png" alt="orm_examples_objects" title="orm_examples_objects" width="328" height="124" class="aligncenter size-full wp-image-241" /></p></blockquote>
<p>database model:</p>
<blockquote><p><img src="http://maggienelson.com/blog/wp-content/uploads/2009/03/orm_examples_tables.png" alt="orm_examples_tables" title="orm_examples_tables" width="344" height="337" class="aligncenter size-full wp-image-242" /></p></blockquote>
<p>I think it&#8217;s a good idea to keep this example specific to functionality common in web applications (the alternative is kittens, really). On the other hand, I don&#8217;t want the example to be overly complex, so that the audience focuses more on the topic of the presentation rather than the details of the example.  </p>
<p>When you come to presentations, what do you look for in examples?  Are you looking for something you can basically copy and paste and use in your code?  Or are you more interested in high-level theory where examples take a back seat and are there just for flavor but not really to explain?  </p>
]]></content:encoded>
			<wfw:commentRss>http://maggienelson.com/2009/03/the-example-conundrum/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>All the Reference You Need&#8230;</title>
		<link>http://maggienelson.com/2009/03/all-the-reference-you-need/</link>
		<comments>http://maggienelson.com/2009/03/all-the-reference-you-need/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 16:07:37 +0000</pubDate>
		<dc:creator>maggie</dc:creator>
				<category><![CDATA[entry]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[reference]]></category>

		<guid isPermaLink="false">http://maggienelson.com/?p=232</guid>
		<description><![CDATA[People borrow my database books and a bunch of them are in circulation at any given time.  Also, a lot of database resources are online only (e.g. for Oracle and MySQL).  Right now, this is the state of my database bookshelf:
Not bad!  You can probably get through a lot with just these [...]]]></description>
			<content:encoded><![CDATA[<p>People borrow my database books and a bunch of them are in circulation at any given time.  Also, a lot of database resources are online only (e.g. for <a href="http://tahiti.oracle.com">Oracle</a> and <a href="http://www.mysql.com">MySQL</a>).  Right now, this is the state of my database bookshelf:</p>
<div class="wp-caption aligncenter" style="width: 385px"><img alt="l2db" src="http://maggienelson.com/images/l2db.jpg" title="l2db" width="375" height="500" /><p class="wp-caption-text">l2db</p></div>
<p>Not bad!  You can probably get through a lot with just these three&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://maggienelson.com/2009/03/all-the-reference-you-need/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Optimization Woes</title>
		<link>http://maggienelson.com/2009/03/optimization-woes/</link>
		<comments>http://maggienelson.com/2009/03/optimization-woes/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 14:58:20 +0000</pubDate>
		<dc:creator>maggie</dc:creator>
				<category><![CDATA[entry]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://maggienelson.com/?p=227</guid>
		<description><![CDATA[I think by now everyone&#8217;s familiar with the phrase:
&#8220;Premature optimization is the root of all evil.&#8221;
In my day-to-day job, I worry a lot about writing high-performance applications, especially in the way applications manage and retrieve data.  There is a huge difference between designing your application to be optimized for a specific purpose and premature [...]]]></description>
			<content:encoded><![CDATA[<p>I think by now everyone&#8217;s familiar with the phrase:</p>
<blockquote><p>&#8220;Premature optimization is the root of all evil.&#8221;</p></blockquote>
<p>In my day-to-day job, I worry a lot about writing high-performance applications, especially in the way applications manage and retrieve data.  There is a huge difference between designing your application to be optimized for a specific purpose and premature optimization.  It&#8217;s one thing to worry whether echo or print is faster (who cares, really?) &#8211; but it&#8217;s another to design an application to tolerate some slowness in low-traffic parts but gaining ultra fast response time on the first access to the application.  For example, viewing your photo album may take a while but seeing the homepage is pretty freakin&#8217; fast!</p>
<p>In a recent post, Sebastian Bergmann points out that <a href="http://sebastian-bergmann.de/archives/854-Do-Not-Micro-Optimize.html">you should not micro-optimize</a> (in reference to a <a href="http://www.alexatnet.com/node/196">PHP micro-optimization tricks</a> post by Alex Netkachov).  I agree wholeheartedly.  It&#8217;s a nice list and definitely something to keep in mind, but it should be just a small component of your developer bag of tricks!  Before you can optimize, you have to design well first.  Proper design leads to potential for great optimization. And to design well, you have to really understand the problem you&#8217;re trying to solve.  Sebastian links to slides by Ilia Alshanetky from PHP Quebec 2009 on <a href="http://ilia.ws/files/phpquebec_2009.pdf">Common Optimization Mistakes</a>.  Ilia also points out that it&#8217;s important to understand before you start fixing:</p>
<blockquote><p>Solve the business case before optimizing the solution.</p></blockquote>
<p>For PHP Advent, I wrote an article <a href="http://phpadvent.org/2008/optimize-this-by-maggie-nelson">Optimize This!</a>, which talks about how to optimize an existing application.  The most important part to focus on is understand what the application is doing and then figuring out where you&#8217;ll have most impact.  Sure, you can use echo over print (or print over echo, once again, who cares?) to get that 0.0001% performance boost, but if you&#8217;re doing 140 live SQL queries on your homepage, your application will still have 3 minute response time and with more users, the performance will continue to degrade until the application becomes unusable.  </p>
<p>Modularizing code (aka &#8220;Object-Oriented Programming&#8221;) makes it easy to focus on problem areas in an existing application.  Designing well doesn&#8217;t always mean designing for high performance.  Instead, it means designing for flexibility and atomicity &#8211; you want to be able to easily change things without huge impact on the overall system.  So before you go an optimize, take a step back and think about what your application is doing and what it&#8217;s supposed to do.  Go write on the white board &#8211; diagrams prove very useful in figuring out flows and functionality!  Go chat in #phpc channel on irc.freenode.net &#8211; the PHP community will help (with a little bit of playful making fun of, but we&#8217;ll help).  Just don&#8217;t go changing all your methods to static methods unless you&#8217;re really sure it&#8217;s the right thing to do!</p>
]]></content:encoded>
			<wfw:commentRss>http://maggienelson.com/2009/03/optimization-woes/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
