<?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"
	>

<channel>
	<title>Mach9 Blog</title>
	<atom:link href="http://www.mach9.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mach9.com/blog</link>
	<description>Welcome to Our Blog</description>
	<pubDate>Sun, 16 Nov 2008 04:08:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>To Outsource or Not To Outsource!</title>
		<link>http://www.mach9.com/blog/small_business/to-outsource-or-not-to-outsource/</link>
		<comments>http://www.mach9.com/blog/small_business/to-outsource-or-not-to-outsource/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 18:08:30 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
		
		<category><![CDATA[Small Business]]></category>

		<category><![CDATA[affordable web design]]></category>

		<category><![CDATA[affordable web development]]></category>

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

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

		<category><![CDATA[overseas outsourcing]]></category>

		<guid isPermaLink="false">http://www.mach9.com/blog/?p=72</guid>
		<description><![CDATA[ 
Is it really a question? Not for us, its simple, we just do not do it. Have we done it? Sure, we have. We have experienced the trials and tribulations around outsourcing. There were too many issues around outsourcing and product development so we sat down and really analyzed what we were getting for [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;"> </span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;">Is it really a question?<span> </span>Not for us, its simple, we just do not do it.<span> </span>Have we done it?<span> </span>Sure, we have.<span> </span>We have experienced the trials and tribulations around outsourcing. There were too many issues around outsourcing and product development so we sat down and really analyzed what we were getting for what we were paying, and what we could do better.<span> </span>I am really talking about outsourcing your web development overseas.<span> </span>We have all heard of India, or China, or Romania, even Russia.<span> </span>So here is what we found out.  <span id="more-72"></span><br />
</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;"> </span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;">So what is outsourcing and what do I mean when I say outsourcing. To us, outsourcing simply means hiring a contractor to do work for you in order to get a job done.<span> </span>Whether you outsource a portion of a project or the entire thing, there can be some real pains around it.<span> </span>The other thing is outsourcing is even done locally vs. overseas.<span> </span>A common misconception with outsourcing is that many people think of India or China immediately when you say outsourcing.<span> </span>Yes, there are a ton of companies that use these countries and their developing economies. However, there are web design and development companies that outsource their work locally as well and are really just a middle man.<span> </span>While that can work for some, many of us want to have the comfort level to know that whoever we are doing business with, produces a product or service in house, not farm it out.</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;"> </span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;">In this business, price is a factor for many people and companies.<span> </span>Sometimes I begin to wonder if people are willing to sacrifice quality for price.<span> </span>I talk to people every day that are so concerned with price and don’t really care about the quality.<span> </span>Imagine building a product and because of price, you had to take short cuts.<span> </span>Or because of price you hired a much less experienced firm overseas which saved you a lot of money.<span> </span>You are happy right?<span> </span>Are you really happy?<span> </span>Here is what I have seen and experienced.</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;"> </span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;">At first everything is going along well, the design is ok and you are satisfied with it, but it doesn’t knock your socks off, because you couldn’t talk directly to the designer because the designer doesn’t speak English or is not capable of speaking to customers, or whatever the case may be.<span> </span>That should not happy.<span> </span>Every time you tell a story, if its retold, it looses some element of how it was told.<span> </span>If you can’t talk directly to the designer of your project, can you be sure whoever you are telling will convey the design concepts properly?<span> </span>Check out <a title="Robert" href="http://www.mach9.com/our_team/robert" target="_self">Robert</a> our world class designer.<span> </span>Not only can you see him, you can call him directly and talk to him.<span> </span>Cool huh?</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;"> </span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;">So, now you get to the application or development piece of your project.<span> </span>You have to stay up late to get updates and communicate with your developers.<span> </span>If that’s your style, great, that will work out good for you.<span> </span>If you are like most of us, you need your beauty sleep. It’s tough to stay up night after night trying to communicate with someone over email or IM to view your project.<span> </span>A lot of times, <span> </span>scope and what you want to happen in your application are not translated properly, so you wind up spending much more time trying to get things right.<span> </span>This has to be one of the most frustrating pieces with outsourcing there is.<span> </span>So now your project is behind schedule and milestones are getting missed.<span> </span>You are starting to wonder if you made the right choice to go with a less expensive, less experienced company. The design is just ok, and things seem to work, just not quite right.</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;"> </span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;">Now lets take this and multiply your testing efforts by millions of users.<span> </span>Do you think these design firms that outsource their developers understand what the balance is between code and server requirements.<span> </span>Do you think they take into consideration when they are writing code, at what point it’s going to break when you get a ton of traffic to your application because everyone loves the application? If you do not take the time to plan properly for mass market testing, chances are you are going to see a big problem once your application becomes mainstream.</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;"> </span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;">The last major problem that I see is the cleanliness of code and the ability to make changes.<span> </span>Outsourcing is usually cheaper because the people that are working on the projects are inexperienced.<span> </span>When it comes time to make changes, that should take only minutes wind up taking hours because the code is not properly documented, another developer is working on it, or it’s built incorrectly and you wind up having to update 100 files instead of just one.<span> </span>And guess who pays for that?<span> </span>You do.</span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;"> </span></p>
<p class="MsoNormal"><span style="font-size: 12pt; font-family: Arial;">At the end of the day, you get what you pay for.<span> </span>That’s the bottom line. Sometimes it makes sense to outsource, in web design and development, in our opinion it doesn’t.<span> </span>You can see all of our <a title="staff" href="http://www.mach9.com/our_team" target="_self">staff</a> and and/or even talk to them as well.<span> </span>We have over 100 clients.<span> </span>Why do you think they came to us versus going to an outsourcing company or using someone that does this “on the side”.<span> </span>If you want a professional website or a professional web application then hire a professional company.<span> </span>Call us anytime to discuss your business.<span> </span>We would be glad to help.<span> </span>919-341-2382</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mach9.com/blog/small_business/to-outsource-or-not-to-outsource/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Migrating your cakePHP 1.1 application to 1.2 - Chapter 2 Model changes</title>
		<link>http://www.mach9.com/blog/web-development/cakephp/migrating-your-cakephp-11-application-to-12-chapter-2-model-changes/</link>
		<comments>http://www.mach9.com/blog/web-development/cakephp/migrating-your-cakephp-11-application-to-12-chapter-2-model-changes/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 15:29:44 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<category><![CDATA[Cake Development]]></category>

		<category><![CDATA[CakePHP Documentation]]></category>

		<category><![CDATA[CakePHP Help]]></category>

		<category><![CDATA[CakePHP Migrations]]></category>

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

		<guid isPermaLink="false">http://www.mach9.com/blog/?p=61</guid>
		<description><![CDATA[Please note that this article is intended for audiences that already have a decent understanding of the cakePHP frame work and essentially know where to look to make the necessary changes to the web application that you have already coded for the 1.1 framework. 
Ok so now you have the default cakePHP page up and [...]]]></description>
			<content:encoded><![CDATA[<p>Please note that this article is intended for audiences that already have a decent understanding of the cakePHP frame work and essentially know where to look to make the necessary changes to the web application that you have already coded for the 1.1 framework. <span id="more-61"></span></p>
<p>Ok so now you have the default cakePHP page up and working, now for the fun part, moving the actual code over and seeing what works.  Most applications use just the controllers,models, views, and webroot directories under the app directory, and there could be some things in the vendors directory as well.  It will vary from application to application.  Start by bringing the inocuous stuff forward first I would start with the webroot and vendors directories.  Once you have proven that doesn&#8217;t cause any major problems, other than maybe losing your css formatting, then move onto the models,views,and controllers directories.   At this point you have probably migrated all of your code over and have noticed what is working and more to the point what is not.  At this point it is probably a good idea to turn the debugging level up to at least 1, but I would probably set it to 2 so you can get all the SQL data that the application is passing back and forth.  This way you can see if the model find and save functions are working properly.</p>
<p>For the most part you will probably not have to change anything in the model definitions themselves.  the bulk of the changes will come in the controllers that use the models to find/save data.  Here are the major changes that I have found in the model methods that will require recoding.</p>
<p>1. findAll and findAll(By &lt;Camel case table column id&gt;) - these functions have been deprecated (removed), in version 1.2.  This means that you need to replace all instances of these function calls within your code.  In this case you need to use the new find function that is more specific in its use but is more flexible.</p>
<p>(i.e.) $this-&gt;Model-&gt;findAll($conditions,$fields,$order,$limit,$page,$recursive);</p>
<p>would become</p>
<p>$this-&gt;Model-&gt;find(&#8217;all&#8217;,array(&#8217;conditions&#8217;=&gt;array(), &#8216;fields&#8217;=&gt;array(), &#8216;order&#8217;=&gt;array(), &#8216;limit&#8217;=&gt;array(), &#8216;page&#8217;=&gt;number, &#8216;recursive&#8217;=&gt;number));</p>
<p>As you can see it is considerably longer to type, but is more specific in how you use it.</p>
<p>2. findCount  and findCountBy(Camel case by table column) - this has also been deprecated (removed), the good news here is that the changes almost identical to the findAll with just one minor exception.</p>
<p>So $this-&gt;Model-&gt;findCount($conditions,$fields,$order,$limit,$page,$recursive);</p>
<p>would become</p>
<p>$this-&gt;Model-&gt;find(&#8217;count&#8217;,array(&#8217;conditions&#8217;=&gt;array(), &#8216;fields&#8217;=&gt;array(), &#8216;order&#8217;=&gt;array(), &#8216;limit&#8217;=&gt;array(), &#8216;page&#8217;=&gt;number, &#8216;recursive&#8217;=&gt;number));</p>
<p>Notice the only real change to the find command is the first word in the find function from &#8216;all&#8217; to &#8216;count&#8217;.  The nice thing about the newer version of findCount is that it just returns the numeric count instead of an array that you must index to get to the count.</p>
<p>Note the original find function has not really changed but under the hood in the cake libraries are basically doing this.</p>
<p>$this-&gt;Model-&gt;find(&#8217;first&#8217;,array(&#8217;conditions&#8217;=&gt;array(), &#8216;fields&#8217;=&gt;array(), &#8216;order&#8217;=&gt;array(), &#8216;limit&#8217;=&gt;array(), &#8216;page&#8217;=&gt;number, &#8216;recursive&#8217;=&gt;number));</p>
<p>So in essence the the find function has been re-written in cake 1.2 to be more specific in it&#8217;s use, the good news is that for the most part the new find functions appear to be more optimized and the generated SQL is considerably more compact than previous versions and seems to run quicker.  There are four basic keywords for the new find function (all,count,first,list), where the keyword versions of &#8216;all&#8217; and &#8216;count&#8217; must be used for their deprecated counterparts.  The &#8216;first&#8217; keyword version can be used interchangeably with the standard find function.  The last keyword &#8216;list&#8217; is used to replace the generateList function which has also been deprecated, This was used primarily in forms to generate quick list of information for drop downs, however it could also be used for quick id and field lists.  The function call looks just like the new declarations above, but first keyword changes as before. (i.e.)</p>
<p>$this-&gt;Model-&gt;find(&#8217;list&#8217;,array(&#8217;conditions&#8217;=&gt;array(), &#8216;fields&#8217;=&gt;array(), &#8216;order&#8217;=&gt;array(), &#8216;limit&#8217;=&gt;array(), &#8216;page&#8217;=&gt;number, &#8216;recursive&#8217;=&gt;number));</p>
<p>That about covers the major changes to the model class in cakePHP 1.2, this will keep anyone busy for some time changing out their controllers, and possibly helpers if there is model code in them.  For the most part the model declarations in cakePHP 1.2 are basically the same as in 1.1, however if you are doing any special validation rules in your models, it would be a good idea to test those out once you get the controllers functioning properly.  In the next chapter I will discuss the changes to the helper functions, and some of the rules enforcement changes on helpers as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mach9.com/blog/web-development/cakephp/migrating-your-cakephp-11-application-to-12-chapter-2-model-changes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Living Among the Developers: A Designer&#8217;s Perspective</title>
		<link>http://www.mach9.com/blog/design/living-among-the-developers-a-designers-perspective/</link>
		<comments>http://www.mach9.com/blog/design/living-among-the-developers-a-designers-perspective/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 15:37:07 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
		
		<category><![CDATA[Design]]></category>

		<category><![CDATA[design vs development]]></category>

		<category><![CDATA[raleigh web design]]></category>

		<category><![CDATA[web design]]></category>

		<category><![CDATA[web design raleigh]]></category>

		<guid isPermaLink="false">http://www.mach9.com/blog/?p=34</guid>
		<description><![CDATA[Ah, the age old debate of looking good or working well.  Is it more important to attract attention or sustain usability? To appease our inner artist or satisfy our utilitarian instincts?  The debate of design vs development, frontend vs backend, form vs function.   
Of course it is an oversimplification that would  lead you [...]]]></description>
			<content:encoded><![CDATA[<p>Ah, the age old debate of looking good or working well.  Is it more important to attract attention or sustain usability? To appease our inner artist or satisfy our utilitarian instincts?  The debate of design vs development, frontend vs backend, form vs function. <span id="more-34"></span>  </p>
<p>Of course it is an oversimplification that would  lead you to believe that form and function are mutually exclusive.  I in no way think that these two are incompatible.  However, in my limited but valuable experience I have come to learn that a designer with developer&#8217;s abilities and vice versa exists the same way a unicorn or a purple elephant might exist, as a figment of our untamed imagination.  What follows are lessons, from a designers perspective, on this very subject.  I realize that I open myself up for ridicule and mockery for not recognizing those who have not only accomplished this task but have done it well.   To these I simply reply, thank you for reading my blog.</p>
<p><strong>THE OBSERVATION </strong></p>
<p>If I were to say that I have never felt like Jane Goodall or Dian Fossey, as they patiently and carefully crouched behind rocks and trees in foreign jungles to study Chimpanzees and Gorillas, I would be a liar.  In fact this feeling is only intensified by the fact that at Mach 9, instead of cubicles, we work underneath actual tiki huts.  I have noticed some of the habits of the developer and wish to share them now.</p>
<p>The developer is normally very thoughtful and focused on the work that is given them.  They are very involved in that work to the point that it can become dangerous to interrupt with questions or comments related to the way their work will be displayed.  The developer is also very concise and clear in their instruction.  The same way a military commander would hand a subordinate detailed instructions on how to proceed with the invasion the developer will at times pass along instructions, however very rarely will it be for an invasion.  On very many occasions I found the developers to be&#8230;how should i put this&#8230;careful, cautious, exacting, neat, systematic, diplomatic, accurate and tactful but sometimes self-willed, stubborn, opinionated and flat out rude.  However,  in just the same way that Dian Fossey stretched out her hand to give her beloved and wild gorilla &#8216;Peanuts&#8217; a love pat, so too must designers and developers come together for the good of the Internet.</p>
<p><strong>THE ANALYSIS</strong></p>
<p>The designer tends to have very many opposite traits to that of his/her counterpart the developer.  Designers tend to be more idealistic and flighty but concerned with beauty and, more practically, usability.  It is not only my intent to prove that both designer and developer alike can co-exist but to show that they can work together in a beautiful harmony to produce some amazing and cutting edge products.  This is what I have really been discovering in my time as the Creative Director at Mach 9.  The developers are good people with good intentions.  Beyond that nothing is accomplished without them.  In this way the relationship is as far from mutually exclusive as you can get.  Instead I have learned that the success of a web development company is fully dependent on the success of the designer and developer relationship.</p>
<p><strong>THE APPLICATION</strong></p>
<p>Modern web design is such that it attempts to create the &#8216;easiest to use&#8217; yet still &#8216;most powerful&#8217; websites.  This is partly what is meant by the term Web 2.0. (you like that don&#8217;t you Google)  It goes beyond the designers ability to create nice drop shadows or shiny floor reflections.   It means creating and designing in a way that not only appeases our inner artist but speaks volumes to our silent utilitarian.  It is here that I have found the answer to the debate between form and function.  In much the same way Apple has put its most powerful computers into the sleekest looking boxes, designers and developers must work together in harmony to accomplish amazing feats.</p>
<p>-Robert</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mach9.com/blog/design/living-among-the-developers-a-designers-perspective/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Migrating your cakePHP 1.1 application to 1.2 - Chapter 1 Configuration Changes</title>
		<link>http://www.mach9.com/blog/web-development/cakephp/migrating-your-cakephp-11-application-to-12-chapter-1-configuration-changes/</link>
		<comments>http://www.mach9.com/blog/web-development/cakephp/migrating-your-cakephp-11-application-to-12-chapter-1-configuration-changes/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 17:33:15 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://www.designdevelopmentmarketing.com/?p=17</guid>
		<description><![CDATA[Please note that this article is intended for audiences that already have a decent understanding of the cakePHP frame work and essentially know where to look to make the necessary changes to the web application that you have already coded for the 1.1 framework.  
So you have decided to migrate your cakePHP site from [...]]]></description>
			<content:encoded><![CDATA[<p>Please note that this article is intended for audiences that already have a decent understanding of the cakePHP frame work and essentially know where to look to make the necessary changes to the web application that you have already coded for the 1.1 framework.  <span id="more-17"></span></p>
<p>So you have decided to migrate your cakePHP site from version 1.1 stable to the latest and greatest version 1.2.  There have been several changes to the frame work since 1.1 and some for the better.  From what I can tell in the RC2 candidate that we have used on several projects here is that the frame work has been sped up, and a fair amount of the overhead with database queries has been optimized.</p>
<p>I have spent about a weeks worth of time getting a version 1.1 site to come forward to the RC2 candidate, and for the most part it was a fairly painless process.  However, it can be tedious, and sometimes finding every thing in all the views, and controllers can feel at times daunting.  However, with some perseverance and attention to error messages that are produced with debug turned on you can work through this.</p>
<p>I would recommend that you make backups of the /app and /cake directories before starting this task, and then unpack the cakePHP distribution in the same base directory as the /app and /cake directories, then do the configuration changes listed below, then slowly start bringing your controllers, models, views, etc and working through the errors.</p>
<p><strong>Chapter 1</strong> - Base configuration changes</p>
<p>These changes are fairly straight forward and easy to make, the only two files that need to change are core.php and routes.php in the /app/config directory where ever your base cakePHP installation lives.</p>
<p>Changes to core.php, I would recommend just using the default one that comes with the cakePHP distrubution and incorporate your specific changes to the file.  The biggest change to the core.php file is that the php function define is used much less in favor of the Configure object.  Now you can just leave your configuration file the way it is, but doing so can result in strange behaviour on down the line, so it would be recommended that you upgrade this file, and if you have some application specific things that need to be defined put them here.</p>
<p>Changes to routes.php, this change is MUCH simplier than the changes required for core.php, in version 1.1 the connect function was not static and therefore the frame work needed to instantiate a single Router class in order to provide the connect function.  In version 1.2 the function has been made static and the only real change that needs to happen in your routes.php file is to change all instances $Route-&gt;connect to Router::connect in the file and save off.</p>
<p>Finally if you have the rewrite engine enabled for the web server that this is running on, ensure that the .htaccess files are set up properly in the base web directory for the application, all the way down to the webroot directory for the cakePHP application.  In the web server web root directory and the /app directory make sure the following lines are in your .htaccess file:</p>
<p>&lt;IfModule mod_rewrite.c&gt;<br />
RewriteEngine on<br />
RewriteRule    ^$    webroot/    [L]<br />
RewriteRule    (.*) webroot/$1    [L]<br />
&lt;/IfModule&gt;</p>
<p>finally make sure that you use .htaccess file that comes with the distrubution in the webroot directory or make sure that it has these lines in it.</p>
<p>&lt;IfModule mod_rewrite.c&gt;<br />
RewriteEngine On<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]<br />
&lt;/IfModule&gt;</p>
<p>There shouldn&#8217;t be any other configuration changes that you need to make, just make sure that you have all the configuration files copied over from your old application (mainly database.php, and with the exception of the core.php and routes.php that were changed previously).  If you have done everything properly, you should have the default cakePHP home page that states all is well, or you need to fix something (usually permissions changes to the /app/tmp directory).  That should be it for the configuration changes, next Chapter we will discuss the changes to the model that have been made and how this will affect your controllers and views.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mach9.com/blog/web-development/cakephp/migrating-your-cakephp-11-application-to-12-chapter-1-configuration-changes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Intro to CakePHP</title>
		<link>http://www.mach9.com/blog/web-development/cakephp/intro-to-cakephp/</link>
		<comments>http://www.mach9.com/blog/web-development/cakephp/intro-to-cakephp/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 16:41:16 +0000</pubDate>
		<dc:creator>Aaron</dc:creator>
		
		<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://www.designdevelopmentmarketing.com/?p=16</guid>
		<description><![CDATA[CakePHP is an Open Source development framework, built largely on PHP, but also utilizing tools like Ajax for some visual flair.  Primarily, though, it&#8217;s a Model-View-Controller (MVC) Framework, modeled after Ruby on Rails.  
What this means, essentially, is that it is a nice way of structuring the code so that different activities are [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://cakephp.org/">CakePHP</a> is an Open Source development framework, built largely on PHP, but also utilizing tools like Ajax for some visual flair.  Primarily, though, it&#8217;s a <a href="http://en.wikipedia.org/wiki/Model-view-controller">Model-View-Controller (MVC)</a> Framework, modeled after Ruby on Rails.  <span id="more-16"></span></p>
<p>What this means, essentially, is that it is a nice way of structuring the code so that different activities are separated logically.  Database interaction and data validation should always be done in the Model.  Displaying of data should always be done in the View.  And any special logic that needs to be done to link the data to a display should be done in the Controller.</p>
<p>These are essentially extensions of <a href="http://en.wikipedia.org/wiki/Object_oriented_programming">Object-Oriented Programming</a>.  In fact, the representations of each Model and Controller are actually Objects, which can be extended or inherited.</p>
<p>CakePHP has it&#8217;s little quirks with these implementations that are meant to make development faster, but can trip up a developer new to Cake if they are unaware of them.  CakePHP has very specific expected naming conventions.</p>
<p>A Model, for example, might be called Event.  The file representing this model will need to be placed in the app/models directory and named <em><strong>event.php</strong></em>.  The Class name (a Class being a logical block of code, and an Object being an instance of that Class) would then need to be <em><strong>Event</strong></em>.  The related database table would also need to be named <em><strong>events</strong></em>.  Notice the difference in capitalization.  If the file name is not lower case and/or the class name does not begin with an uppercase letter, the Model may not work properly, or might require extra coding to make it work, which can get unnecessarily tedious.</p>
<p>Typically, each Model should have a matching Controller that performs any necessary activities between the Model and the Views.  This Controller should be placed in a file in the app/controllers directory and named <em><strong>events_controller.php</strong></em>.  The Controller Class should be named <em><strong>EventsController</strong></em>.  Notice the difference in pluralization.  If these naming conventions are set properly, no extra coding is required to link the Model to the Controller.  Also notice how multiple words are handled: all lowercase and separated by an underscore for file names, and differentiated with capital letters in the class name.  This would work if you wanted a Silly Photos MVC set: app/models/silly_photo.php for the SillyPhoto Model and silly_photos database table, and app/controllers/silly_photos_controller.php for the SillyPhotosController class.</p>
<p>Views are a little different in that they are related directly to the Controller.  Generally, the names of View files will match exactly with the method names in the Controller.  Usual methods for a Controller are <em><strong>add</strong></em>, <em><strong>delete</strong></em>, <em><strong>edit</strong></em>, and <em><strong>index</strong></em>.  The related View files for the EventsController would be located in app/views/<em><strong>events</strong></em>/ and would be named <em><strong>add.ctp</strong></em>, <em><strong>delete.ctp</strong></em>, <em><strong>edit.ctp</strong></em>, and <em><strong>index.ctp</strong></em>, respectively.  The subdirectory of the views files must match the Controller&#8217;s file name, minus the _controller text (ie: views for SillyPhotosController would be located in app/views/silly_photos/).  The case and pluralization of the Controller method names and View file names should be the same, so a method called list_items should have a View file called list_items.ctp.</p>
<p>There are exceptions to these rules that can be made, but it&#8217;s generally easier to stick with these conventions.  The only time you might need to explore the exceptions is when trying to integrate code that is maintained by a third party, where their conventions do not quite match those in CakePHP.</p>
<p>In my next post I will describe some of the performance and configuration gotchas I have experienced while learning and developing with CakePHP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mach9.com/blog/web-development/cakephp/intro-to-cakephp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>jscalendar &#038; Internet explorer.</title>
		<link>http://www.mach9.com/blog/web-development/jscalendar-and-internet-explorer/</link>
		<comments>http://www.mach9.com/blog/web-development/jscalendar-and-internet-explorer/#comments</comments>
		<pubDate>Fri, 17 Oct 2008 14:45:34 +0000</pubDate>
		<dc:creator>Jason</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.designdevelopmentmarketing.com/?p=11</guid>
		<description><![CDATA[If you use jscalendar in your projects you might want to read further.  We use it a fair amount here as it is a good date picking tool and it plugs into the cakePHP framework really well.  Anyway, there have been some reported bugs with this component with the proper placement of the [...]]]></description>
			<content:encoded><![CDATA[<p>If you use jscalendar in your projects you might want to read further.  We use it a fair amount here as it is a good date picking tool and it plugs into the cakePHP framework really well.  Anyway, there have been some reported bugs with this component with the proper placement of the calendar in Internet explorer 6 &amp; 7.  The problem arises when the calendar that is being generated is fairly close to edge of the displayable area.  When you click on the element to bring the calendar up it is no where near where you clicked.  The solution is fairly simple, but can be maddening to find and fix.  Luckily someone already has.  If you open the caledar.js file in the inlcuded files, just change the following lines (should be around line number 1393 and 1394). <span id="more-11"></span></p>
<p>Change</p>
<p>if (Calendar.is_ie) {<br />
br.y += document.body.scrollTop;<br />
br.x += document.body.scrollLeft;<br />
} else {<br />
br.y += window.scrollY;<br />
br.x += window.scrollX;<br />
}</p>
<p>to</p>
<p>if (Calendar.is_ie) {<br />
br.y += document.documentElement.scrollTop;<br />
br.x += document.documentElement.scrollLeft;<br />
} else {<br />
br.y += window.scrollY;<br />
br.x += window.scrollX;<br />
}</p>
<p>After that all should be well, also if you look at the code just below the fix you can see what NOT to name a function.  Evidentally the khtml browser is hard to code around for this particular widget.  I will let you see what the actual function name is for yourself, as it really shouldn&#8217;t be repeated here.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mach9.com/blog/web-development/jscalendar-and-internet-explorer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Apple Goes Glass</title>
		<link>http://www.mach9.com/blog/tech/apple-goes-glass/</link>
		<comments>http://www.mach9.com/blog/tech/apple-goes-glass/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 14:48:39 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
		
		<category><![CDATA[Tech]]></category>

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

		<category><![CDATA[glass track pad]]></category>

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

		<guid isPermaLink="false">http://www.designdevelopmentmarketing.com/?p=9</guid>
		<description><![CDATA[Apple&#8217;s new MacBooks are moving to the next level of interaction and user experience with the new glass trackpad.  The ingeniousdesign behind these new trackpads allows the user to build on the gesture technology that has been around for years.  Taking the lead from their iPhone interface, which took the world by storm [...]]]></description>
			<content:encoded><![CDATA[<p>Apple&#8217;s new MacBooks are moving to the next level of interaction and user experience with the new glass trackpad.  The ingeniousdesign behind these new trackpads allows the user to build on the gesture technology that has been around for years.  Taking the lead from their iPhone interface, which took the world by storm back in 2007, the new trackpad incorporates touch technology to make your workflow do exactly that, flow.  Multi-finger gestures allow for 1,2,3 or 4 finger control and the ability to access.  Spin?  Enlarge, shrink?  of course those are there, but the new gestures include Next, Previous, App Switcher, Expose, and Show desktop. Will the new zero button mouse scare some people? Probably.  But at the end of the day, gestures are easy to learn and become a natural part of your computing experience.  If you&#8217;re still weary of new technology, have no fear, you can still always plug in a good old USB mouse, or go wireless with Bluetooth.  I for one am looking forward to getting my hands on one of these in the near future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mach9.com/blog/tech/apple-goes-glass/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
