<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Objectively Oriented</title>
      <link>http://www.objectivelyoriented.com/</link>
      <description></description>
      <language>en</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Tue, 29 Apr 2008 10:37:42 -0500</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>WTF indeed!</title>
         <description><![CDATA[Most of you are probably familiar with <a href="http://thedailywtf.com/">The Daily WTF: Curious Perversions in Information Technology</a>.  Yes, other people's crappy code is hilarious, but it's also educational to see.  (And maybe you ARE doing something crappy and you just hid it so well other people haven't found it yet?)

If you enjoy this type of thing (who doesn't?) and you're into databases and especially Oracle, there's a site inspired by The Daily WTF just for Oracle blunders!  Check it out: <a href="http://oracle-wtf.blogspot.com/">Oracle WTF</a>!

I found out about this via <a href="http://tkyte.blogspot.com/2008/04/stuff.html">Tom Kyte's post</a>, so I might as well also share some of his awesomeness:

<blockquote>As an aside, anyone that knows me, knows my mantra - written many times:
<ul>
<li>You should do it in a single SQL statement if at all possible.</li>
<li>If you cannot do it in a single SQL Statement, then do it in PL/SQL (as little PL/SQL as possible!).</li>
<li>If you cannot do it in PL/SQL, try a Java Stored Procedure.  The number of times this is necessary is extremely rare today with Oracle9i and above.</li>
<li>If you cannot do it in Java, do it in a C external procedure.  This is most frequently the approach when raw speed, or the use of a 3rd party API written in C is needed.</li>
<li>If you cannot do it in a C external routine, you might want to seriously think about why it is you need to do it...</li>
</ul>
</blockquote>

Ok, back to writing good code, not crappy at all! :)
]]></description>
         <link>http://www.objectivelyoriented.com/2008/04/wtf_indeed.html</link>
         <guid>http://www.objectivelyoriented.com/2008/04/wtf_indeed.html</guid>
        
        
         <pubDate>Tue, 29 Apr 2008 10:37:42 -0500</pubDate>
      </item>
            <item>
         <title>NTILE() - easy way to generate tag clouds </title>
         <description><![CDATA[The Oracle feature set is often brought up as an argument (for?  against?) when comparing it against other databases.  And it is indeed a huge feature set and it's pretty great to use, but granted, the Oracle documentation can be pretty dry to read.  

For example, check out the documentation for the <a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14223/analysis.htm#sthref1718">NTILE Function</a>.  Yeah, sounds kind of boring.  What good could it be in the wonderful world of web development?  After all, who manages employee or sales tables anymore...

Answer: generating tag clouds.  
]]></description>
         <link>http://www.objectivelyoriented.com/2008/04/ntile_easy_way_to_generate_tag.html</link>
         <guid>http://www.objectivelyoriented.com/2008/04/ntile_easy_way_to_generate_tag.html</guid>
        
        
         <pubDate>Mon, 28 Apr 2008 11:32:17 -0500</pubDate>
      </item>
            <item>
         <title>php|architect: Database Design for PHP Programmers by Mac Newbold</title>
         <description><![CDATA[The <a href="http://www.phparch.com/c/magazine/issue/67">February 2008 issue of php|architect</a> features an article by <a href="http://www.phparch.com/c/magazine/author/172">Mac Newbold</a> titled "Database Design for PHP Programmers".  Here's the blurb:

<blockquote>While PHP can do a lot of great things by itself, it can do much more when you add a relational database. Whether you use MySQL, PostgreSQL, Oracle, MicroSoft SQL Server or SQLite, the way you design your schema and build your tables has a big impact on the abilities of your application. By the same token, mistakes in your database structure can be very difficult to fix or overcome. A little bit of careful planning can go a long way.</blockquote>

It's a pretty good article about database design and I think all PHP developers who are just starting to integrate databases in their applications should read it.  However, there are a few things I'd like to add and point out.
]]></description>
         <link>http://www.objectivelyoriented.com/2008/02/the_february_2008_issue_of_1.html</link>
         <guid>http://www.objectivelyoriented.com/2008/02/the_february_2008_issue_of_1.html</guid>
        
        
         <pubDate>Wed, 27 Feb 2008 11:54:04 -0500</pubDate>
      </item>
            <item>
         <title>dbMorph - proposal excerpts</title>
         <description><![CDATA[After some consideration, I changed the name of my db manager project to <a href="https://sourceforge.net/projects/dbmorph">dbMorph</a>.  Naming it dbSync was a little misleading as syncing really implies bringing something in sync with something else or syncing to disk, etc., while this tool is really for managing database changes.  

Work is starting on 2/4 (Monday) and tomorrow I'm doing a mini presentation on how this tool will work.  Here are some excerpts:]]></description>
         <link>http://www.objectivelyoriented.com/2008/01/dbmorph_proposal_excerpts.html</link>
         <guid>http://www.objectivelyoriented.com/2008/01/dbmorph_proposal_excerpts.html</guid>
        
        
         <pubDate>Thu, 31 Jan 2008 13:29:41 -0500</pubDate>
      </item>
            <item>
         <title>DbSync, now on SourceForge</title>
         <description><![CDATA[The working name of my database delta manager is... DbSync!  It will live here: <a href="https://sourceforge.net/projects/dbsync/">sourceforge.net/projects/dbsync</a>.  

I've never managed an open source project before, so this will be an interesting experience (any thoughts, ideas, words of warning are welcome).  Work is scheduled to start Feb. 4th, 2008 as my company's graciously allowing me to use up to 50% of my time for an R&D project.  Yay!]]></description>
         <link>http://www.objectivelyoriented.com/2008/01/dbsync_now_on_sourceforge.html</link>
         <guid>http://www.objectivelyoriented.com/2008/01/dbsync_now_on_sourceforge.html</guid>
        
        
         <pubDate>Mon, 28 Jan 2008 21:22:24 -0500</pubDate>
      </item>
            <item>
         <title>How to manage your database deltas - proposals galore!</title>
         <description><![CDATA[Rob Allen has recently proposed a database schema manager for Zend Framework.  Here's the <a href="http://framework.zend.com/wiki/display/ZFPROP/Zend_Db_Schema_Manager+-+Rob+Allen">proposal</a>.

It looks good, although I'm worried it's missing support for stored procedures, which will be especially important when working with Oracle.  

In May, I'm talking at php|tek about <a href="http://tek.phparch.com/c/schedule/talk/d2s4/2">how to keep your PHP and database in sync</a>.  This talk mainly focuses on a database schema manager that Rob Allen describes; I have already written this tool for a project I'm currently working on, mainly driven by the need to share database changes across many developers.  

NEWS! This year I'm releasing this tool under an open source license.  I am not going to tie it into any framework - I think this tool can be useful on any project and doesn't need to be written in the language of the application.  

Now with Rob's proposal there's more pressure to get this out the door - I will have a sourceforge link for all of you soon.  

P.S. It'll be released under the new BSD license - thanks to everyone in #phpc for helping me understand the downfalls of certain licenses!]]></description>
         <link>http://www.objectivelyoriented.com/2008/01/how_to_manage_your_database_de.html</link>
         <guid>http://www.objectivelyoriented.com/2008/01/how_to_manage_your_database_de.html</guid>
        
        
         <pubDate>Mon, 28 Jan 2008 10:31:26 -0500</pubDate>
      </item>
            <item>
         <title>PHP Advent Calendar</title>
         <description><![CDATA[During the days of December, the Perl community used to maintain the <a href="http://perladvent.pm.org/">Perl Advental Calendar</a>.  In a similar fashion, the PHP community now has its own <a href="http://shiflett.org/blog/2007/dec/php-advent-calendar-day-1">PHP Advent Calendar</a>, thanks to <a href="http://shiflett.org">Chris Shiflett</a> who is maintaining it this year.

Along with great PHP tips, the calendar also features many of the prominent PHP personalities (and their photos!).  The PHP community is one of the nicest communities that grows around a programming language and/or philosophy that I have ever encountered.  Go on to <a href="http://shiflett.org/blog/2007/dec/php-advent-calendar-day-1">the calendar</a> to find out about its people.  And thanks again to Chris for compiling it!]]></description>
         <link>http://www.objectivelyoriented.com/2007/12/php_advent_calendar.html</link>
         <guid>http://www.objectivelyoriented.com/2007/12/php_advent_calendar.html</guid>
        
        
         <pubDate>Mon, 17 Dec 2007 14:21:59 -0500</pubDate>
      </item>
            <item>
         <title>See you at php|tek 2008!</title>
         <description><![CDATA[Two of my talks were accepted for the <a href="http://tek.phparch.com">php|tek Conference 2008</a>!  They are:

<b>Keeping Your Database and PHP in Sync</b>

As your application changes, so will the database that supports it. Keeping database objects and stored procedures synchronized with PHP can be a challenge in a multi-developer environment with a short release cycle and multiple development branches. This talk describes a method for containing database changes in a way that the application understands–think Ruby on Rails “migrations”. Changes to the database are applied when appropriate PHP changes have been made. The method is database-blind and allows the developer to choose a storage engine, such as XML. Bring your favorite svn tricks to share!


<b>Angering Database Gods</b>

Rapid development techniques often promote abstraction of database interaction. Many available frameworks offer mechanisms that can prevent the developer from making database design decisions. This talk focuses on describing specific approaches to utilizing a database in your application and the pros and cons of each choice. We will talk about proper database design, using PHP to construct SQL, limiting access to the database via caching an d others. As the talk progresses, we will attempt to design a scalable and high-performance database-driven environment for a social networking site.


My husband says that I am now fluent in Blurb.  See you all in Chicago!]]></description>
         <link>http://www.objectivelyoriented.com/2007/11/see_you_at_phptek_2008.html</link>
         <guid>http://www.objectivelyoriented.com/2007/11/see_you_at_phptek_2008.html</guid>
        
        
         <pubDate>Wed, 28 Nov 2007 23:59:16 -0500</pubDate>
      </item>
            <item>
         <title>A LIFO Life</title>
         <description><![CDATA[November so far has been really busy with trying to finish projects before December and the general holiday laziness that overcomes people at that time of the year.  As a result, I have been able to reply to the most recent things in my mailbox and haven't had a chance to look at a backlog yet.  My mailbox is a last-in first-out system - whatever's at the top gets preferential treatment.  This means I miss some things. 

Recently, <a href="http://blogs.oracle.com/opal">Chris Jones</a> sent me a photo he took during ZendCon this year.  I did a presentation via iChat for the Zend Unconference.  Sorry for the delay in posting it - here's what the presentation looked like:]]></description>
         <link>http://www.objectivelyoriented.com/2007/11/a_lifo_life.html</link>
         <guid>http://www.objectivelyoriented.com/2007/11/a_lifo_life.html</guid>
        
        
         <pubDate>Fri, 16 Nov 2007 10:37:35 -0500</pubDate>
      </item>
            <item>
         <title>Database change management tools</title>
         <description><![CDATA[If you remember, a while back, as I was complaining about Ruby on Rails, I also <a href="http://www.objectivelyoriented.com/2007/06/ruby_on_rails_migrations_good.html">praised its migrations system</a> which allows you to keep your database in sync with your code.  

On a current project (Oracle + PHP), I wrote (with a few coworkers) a database management tool that does what Ruby on Rails does in terms of migrations, with one huge difference: keeping track of database packages and which version of them should be compiled given the specified DDL and DML change.  It works really nice - it still has kinks to be worked out and some edge cases to address, but it's a really useful piece of code that has greatly reduced the amount of whining among developers who have to make frequent database changes.  I submitted a talk about how it works for <a href="http://tek.phparch.com/">php|tek 2008</a>, so maybe you can hear me talk about in detail at some point. 

Now, PEAR has a <a href="http://pear.php.net/pepr/pepr-proposal-show.php?id=507">proposal for a DbDeploy</a>.  This is a great idea!  Unfortunately, it looks like the proposal and the code written for this package completely fails to address the fact that a database change (or delta) may include changes other than simple DDL and DML statements.  Most of the code I write for my applications includes tons of stored procedures and chances are, dear reader, that you are in the same situation.   So it looks like I'm getting myself involved in writing this package - stay tuned!]]></description>
         <link>http://www.objectivelyoriented.com/2007/11/database_change_management_too.html</link>
         <guid>http://www.objectivelyoriented.com/2007/11/database_change_management_too.html</guid>
        
        
         <pubDate>Thu, 15 Nov 2007 11:45:09 -0500</pubDate>
      </item>
            <item>
         <title>The easiest thing in the world</title>
         <description><![CDATA[A lot of times, the choice to use MySQL is becuase it's "easy".  Easy to set up, easy to use, no mess.  Well, here's a post from Gena01 from #phpc on <a href="http://www.gena01.com/forum/index.php?topic=184.0">Installing Oracle Instant Client and making it work with PHP</a> (on Linux).  

Setup consists of two parts:

1. Installing Oracle Instant Client on Linux
2. Getting and compiling oci8 extension for PHP

It's very simple or "easy", so try it out!]]></description>
         <link>http://www.objectivelyoriented.com/2007/11/the_easiest_thing_in_the_world.html</link>
         <guid>http://www.objectivelyoriented.com/2007/11/the_easiest_thing_in_the_world.html</guid>
        
        
         <pubDate>Fri, 02 Nov 2007 17:13:36 -0500</pubDate>
      </item>
            <item>
         <title>php|tek 2008 - deadline for submissions today!</title>
         <description><![CDATA[The deadline for <a href="http://tek.phparch.com/c/p/cfp">php|tek 2008</a> is today!  I just submitted my talks (yay!)

You may remember me <a href="http://www.objectivelyoriented.com/2007/06/ruby_on_rails_migrations_good.html">complaining </a>about the shortcomings of Ruby on Rails migrations system.  One of the talks I submitted is about a script I wrote with some coworkers that works like the migration system but it also considers referential integrity and changes to stored procedures.  It will keep you PHP and database in sync at all times - I hope I made the description interesting enough for the organizers to pick it!]]></description>
         <link>http://www.objectivelyoriented.com/2007/10/phptek_2008_deadline_for_submi.html</link>
         <guid>http://www.objectivelyoriented.com/2007/10/phptek_2008_deadline_for_submi.html</guid>
        
        
         <pubDate>Wed, 31 Oct 2007 01:30:26 -0500</pubDate>
      </item>
            <item>
         <title>Ramblecast 2.0 now released to the unsuspecting public</title>
         <description><![CDATA[<a href="http://podcast.phparch.com/main/index.php/episodes:20071018">Ramblecast 2.0</a> which was recorded at php|works 2007 has finally been edited and released.  

Hosts/Guests:

   1. Paul Reinheimer
   2. Sean Coates
   3. Sara Golemon (aka DYG)
   4. Ben Ramsey
   5. Maggie Nelson <-- yours truly
   6. Chris Shiflett
   7. Terry Chay
   8. Dustin Whittle
   9. Ed Finkler
  10. Derick Rethans

Happy listening!]]></description>
         <link>http://www.objectivelyoriented.com/2007/10/ramblecast_20_now_released_to.html</link>
         <guid>http://www.objectivelyoriented.com/2007/10/ramblecast_20_now_released_to.html</guid>
        
        
         <pubDate>Thu, 18 Oct 2007 15:51:47 -0500</pubDate>
      </item>
            <item>
         <title>I now know what to name my future child</title>
         <description><![CDATA[Yeah, yeah, <a href="http://www.zendcon.com">ZendCon</a> is going on right now and it seems to be going well.  I gave a <a href="http://www.zendcon.com/wiki/index.php?title=You_Don%27t_Need_a_DBA">presentation</a> yesterday via iChat at the <a href="http://www.zendcon.com/wiki/index.php?title=Uncon">Zend UnConference 2007</a> and it was pretty good, except for my computer crashing during the Q&A at the end and thus abruptly severing the connection.  Yikes!

But, more importantly, <a href="http://xkcd.com/327/">this XKCD comic</a> is making rounds on all database-related blogs.  <a href="http://tkyte.blogspot.com/2007/10/just-for-fun.html">Tom Kyte</a>, <a href="http://www.petefinnigan.com/weblog/archives/00001104.htm">Pete Finnigan</a>, and many others are referencing it like it's going out of style.  At least 6 people IMed me this morning telling me about it.  If this comic teaches at least one person about SQL injections, we win.  Thank you, XKCD! (*appends name to list of possible baby names*)

In other happy news, <a href="http://blogs.oracle.com/opal/">Chris Jones</a> reports that the OCI8 extension for PHP has just been released with <a href="http://blogs.oracle.com/opal/2007/10/09#a224">changes to support Oracle Database 11g "Database Resident Connection Pooling" (DRCP)</a>.  Yay!]]></description>
         <link>http://www.objectivelyoriented.com/2007/10/i_now_know_what_to_name_my_fut.html</link>
         <guid>http://www.objectivelyoriented.com/2007/10/i_now_know_what_to_name_my_fut.html</guid>
        
        
         <pubDate>Wed, 10 Oct 2007 12:53:31 -0500</pubDate>
      </item>
            <item>
         <title>PHP Unconference &apos;07 @ ZendCon</title>
         <description><![CDATA[As some of you know, I can't go to <a href="http://www.zendcon.com">ZendCon</a> this year because of work.  Half of the developers on a project I'm on are going and since we want to be nice to our client, we need some people to stay and hold down the fort.  I'm one of those staying behind, and we have a moat, so stand back!

Fortunately, though, thanks to the organizing powers of the bearded <a href="http://surripui.net">Patrick Reilly</a>, I will be able to participate a little bit by giving a talk at the <a href="http://www.zendcon.com/wiki/index.php?title=Uncon">PHP Unconference '07</a> at ZendCon.  I'll be presenting on Tuesday, October 9th at 5pm PST via iChat.  (Technology = science + awesome!)  If you tune in, you'll see a polished and improved version of my "<a href="http://www.zendcon.com/wiki/index.php?title=You_Don%27t_Need_a_DBA">You Don't Need a DBA</a>" presentation, which I gave at <a href="http://works.phparch.com">php|works</a> earlier this year.  
]]></description>
         <link>http://www.objectivelyoriented.com/2007/09/php_unconference_07_zendcon.html</link>
         <guid>http://www.objectivelyoriented.com/2007/09/php_unconference_07_zendcon.html</guid>
        
        
         <pubDate>Tue, 25 Sep 2007 10:30:26 -0500</pubDate>
      </item>
      
   </channel>
</rss>
