<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
   <title>End Your If</title>
   <link>http://www.endyourif.com</link>
   <category>CodeProject</category>
   <description>Helping Developers Solve Those Tough Coding Problems</description>
   <language>en-us</language>
   <managingEditor>info@endyourif.com (Jamie Munro)</managingEditor>
   <image>
      <url>http://www.endyourif.com/img/endyourif1.png</url>
      <title>End Your If</title>
      <link>http://www.endyourif.com</link>
   </image>

   

      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/EndYourIf" /><feedburner:info uri="endyourif" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><item>
      <title>Why the Repository Pattern</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/GoyO7RJy4LE/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 20 May 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/why-the-repository-pattern/</guid>
      <description>After the incredible reaction to a recent blog post, &lt;a title="Entity Framework Beginner’s Guide Done Right" href="http://endyourif.com/entity-framework-beginners-guide-done-right/"&gt;Entity Framework Beginner’s Guide Done Right&lt;/a&gt;, I feel like before writing some more code to further the basic example, I’ll take a step back and explain &lt;em&gt;my beliefs&lt;/em&gt; in the repository pattern.&lt;br /&gt;

&lt;br /&gt;

I was really overwhelmed with the reaction; what started with a simple 30 minute blogging effort has turned into something absolutely incredible.  The original post was really a starting point about not placing direct querying and saving to the database mingled with the core code.&lt;br /&gt;

&lt;br /&gt;

&lt;em&gt;Please note, these are my thoughts on the pattern based on current and previous pain points that I’ve/am experiencing and I’d love to hear others input in making things better.&lt;/em&gt;&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/GoyO7RJy4LE" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/why-the-repository-pattern/</feedburner:origLink></item>
      <item>
      <title>Why is my calendar always full?</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/UxAYLl_PuuQ/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 15 May 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/why-is-my-calendar-always-full/</guid>
      <description>Curse you full calendar!  I find it impossible to get anything accomplished when most of my day is spent in meetings.  More importantly, meetings with the “big wigs” always seem to be the worse.  Really, we need to spend 30 minutes to review a three page Word document that we could have read &lt;em&gt;before&lt;/em&gt; the meeting!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/UxAYLl_PuuQ" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/why-is-my-calendar-always-full/</feedburner:origLink></item>
      <item>
      <title>Simple Things Make Me Happy</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/BNIfsBw1k5E/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 14 May 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/simple-things-make-me-happy/</guid>
      <description>I often go to a drive-thru, whether it’s to order food or my favorite coffee, whenever I finish ordering I always say “Thank you”.  I think this is an important thing to do.  What makes me really happy is the 1 out of 5 (maybe 10) times the person says “You’re welcome”.&lt;br /&gt;

&lt;br /&gt;

This simple statement makes me happy; it’s a really great way to start my day.&lt;br /&gt;

&lt;br /&gt;

There are of course many other examples of simple things that make me happy, as a parent for example, I watch my kids on an almost daily (even hourly) basis learn new things.  This is turn makes me really happy and it’s always the simplest things that they learn.&lt;br /&gt;

&lt;br /&gt;

I feel like this is an important trait that also applies to the world I live in: web application or web game development.  Simple things make me happy.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/BNIfsBw1k5E" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/simple-things-make-me-happy/</feedburner:origLink></item>
      <item>
      <title>Entity Framework Beginner’s Guide Done Right</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/WAy8I4a2eWI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 13 May 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/entity-framework-beginners-guide-done-right/</guid>
      <description>Entity framework is a great ORM provided by Microsoft.  There are a ton of examples of how to get up and running with it really quickly.  The only problem with all of them, is the get you off on the wrong foot.&lt;br /&gt;

&lt;br /&gt;

In all of the EF example guides, the &lt;em&gt;DbContext&lt;/em&gt; class is typically deeply embedded into the core of your code.  This of course is great for Entity framework because the effort to change will be next to impossible – speaking from experience of course here.&lt;br /&gt;

&lt;br /&gt;

Instead, by making some subtle changes we can integrate Entity framework in a separate layer in case at some later date you wish to replace it.  Of course, you might never need to replace it, but following these simple techniques will allow better segregation of code and even provide simpler unit testing.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/WAy8I4a2eWI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/entity-framework-beginners-guide-done-right/</feedburner:origLink></item>
      <item>
      <title>Why Java Makes Me Tremble In My Boots</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/e0DPUEdWwb0/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 06 May 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/why-java-makes-me-tremble-in-my-boots/</guid>
      <description>Let me begin by saying that I have not spent a lot of time in Java.  I learned it in college (some 12 years ago) and I’ve used it sparingly throughout my development career.  To date I’ve never done a full project using only Java.  And ironically, one of the main reasons I haven’t is I don’t know where to start…&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/e0DPUEdWwb0" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/why-java-makes-me-tremble-in-my-boots/</feedburner:origLink></item>
      <item>
      <title>Trial and Error – Your best friend and worst enemy!</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/8OU82n_4lIw/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 29 Apr 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/trial-and-error-your-best-friend-and-worst-enemy/</guid>
      <description>I've recently had my eyes open, mostly since becoming a parent.  My oldest kids are now 3; they are right at the stage of wanting to do everything for themselves.  It’s important to let them!  Kids learn through trial and error, so why shouldn't I?&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/8OU82n_4lIw" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/trial-and-error-your-best-friend-and-worst-enemy/</feedburner:origLink></item>
      <item>
      <title>Compelling Interview Questions</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/ahkNEpBtTMI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 25 Apr 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/compelling-interview-questions/</guid>
      <description>It seems to be hiring spree time once again and I find myself spending lots of time reviewing resumes, meeting people, hearing all about their past and future.  7 times out of 10 I find myself knowing within 5 to 10 minutes of the start of an interview whether I immediately need to find an exit strategy or keep proceeding with the interview.&lt;br /&gt;

&lt;br /&gt;

A few times people can talk-the-talk and that’s why we have second interviews and written tests.  So the odd time that the 3 of 10 make it through, we quickly weed them out as well.&lt;br /&gt;

&lt;br /&gt;

Enough background, let’s move on to some of my favorite questions, but more importantly, why and what I’m looking for when I ask them.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/ahkNEpBtTMI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/compelling-interview-questions/</feedburner:origLink></item>
      <item>
      <title>My First Experiences with Kinect for Windows - @KinectWindows</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/b4SV80l7AWg/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 05 Mar 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/my-first-experiences-with-kinect-for-windows-kinectwindows/</guid>
      <description>I recently had the pleasure of some free time recently – with three kids this does not come often – so I decided to finally plug my Kinect into my PC.  I find it kind of funny how long it actually took for this to happen.  Over a year ago I finally joined the real world and made the decision to finally make a new console gaming purchase.&lt;br /&gt;

&lt;br /&gt;

Like everyone, I had to choose between the PS3 and Xbox 360.  Each of course has their pros and cons.  But when it came down to it, I could develop for the Xbox and Kinect for free and this became the deciding decision factor.&lt;br /&gt;

&lt;br /&gt;

So finally over a year later I finally plugged my Kinect into my PC’s USB port!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/b4SV80l7AWg" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/my-first-experiences-with-kinect-for-windows-kinectwindows/</feedburner:origLink></item>
      <item>
      <title>Javascript, the Back Button, and Windows Phone 8 Development</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/DxvwISUWtBs/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 18 Feb 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/javascript-the-back-button-and-windows-phone-8-development/</guid>
      <description>I recently had the opportunity to begin exploring and toying around with Windows Phone 8 development.&lt;br /&gt;

&lt;br /&gt;

Why you ask?  Why not really, but mostly because I was giving a free phone and it’s an untapped market when it comes to apps.  At this stage it’s not over diluted like the Android and iPhone stores are.  That and of course there is an option to create apps using HTML, Javascript, and CSS – technologies I’ve used and mastered for years!&lt;br /&gt;

&lt;br /&gt;

I actually submitted my first app last weekend – and sadly – it got rejected :(  I was given two reasons; firstly I did set a default application icon, whoops my bad.  Secondly, I didn’t properly handle the back button since there are “multiple pages” in my application.&lt;br /&gt;

&lt;br /&gt;

It took me several hours to finally found the answer so I thought I would share it.  &lt;em&gt;Please note, this feels like a bit of a hack, but I wasn’t able to get the “suggested” solutions working…&lt;/em&gt;&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/DxvwISUWtBs" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/javascript-the-back-button-and-windows-phone-8-development/</feedburner:origLink></item>
      <item>
      <title>MSConfig – What Would I Do Without You!</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/lseywBZLr3Q/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 11 Feb 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/msconfig-what-would-i-do-without-you/</guid>
      <description>Being a web developer typically means you’ve probably been around computers your whole life.  This means that you’ve troubleshooted them, broke them, fixed them, fixed them for others, etc…  As time has gone by and I’ve dedicated myself to the art and craft of development, I’ve slowly drifted away from supporting computers.&lt;br /&gt;

&lt;br /&gt;

However, I recently upgraded my work laptop from Windows 7 to Windows 8 – what a frustrating experience this was!  But not the purpose of this article, just part of the train tracks of a good story!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/lseywBZLr3Q" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/msconfig-what-would-i-do-without-you/</feedburner:origLink></item>
      <item>
      <title>Simplifying the buzz word “Responsive Design”</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/g1ys9aqdi8M/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 04 Feb 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/simplifying-the-buzz-word-responsive-design/</guid>
      <description>Every so often there is a new buzz word in the web development/design industry.  A few years ago it was HTML5 and CSS3.  Now it seems to be “responsive design”.  And of course this makes a lot of sense.  With more and more Internet users accessing the content on their laptop or desktop PC, tablets, and mobile phones, websites need to be able to be ready to serve up the content in an appropriate fashion.&lt;br /&gt;

&lt;br /&gt;

In this article, I want to take a step back and help simplify this process because by stopping and thinking just a little bit, it doesn’t need to be complicated.  In fact it’s quite simple.&lt;br /&gt;

&lt;br /&gt;

At the time of writing this article, my blog is only about 50% responsive, I am planning a new design soon that will take it to the next level.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/g1ys9aqdi8M" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/simplifying-the-buzz-word-responsive-design/</feedburner:origLink></item>
      <item>
      <title>Changes to Model:find('first') in CakePHP 2.3</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/CQQTpL3OWGA/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 30 Jan 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/changes-to-modelfindfirst-in-cakephp-2-3/</guid>
      <description>A new stable release of CakePHP has just been released a few days ago, version 2.3.  With this many great new changes have come out of it.  You can read the full change log here:&lt;br /&gt;

&lt;a href="http://bakery.cakephp.org/articles/lorenzo/2013/01/28/cakephp_2_3_0_is_out"&gt;http://bakery.cakephp.org/articles/lorenzo/2013/01/28/cakephp_2_3_0_is_out&lt;/a&gt;&lt;br /&gt;

&lt;br /&gt;

One of the things that immediately caught my mind was this great big bolded sentence:&lt;br /&gt;

&lt;blockquote&gt;&lt;strong&gt;IMPORTANT:&lt;/strong&gt; &lt;code&gt;Model::find('first') &lt;/code&gt;&lt;strong&gt;will now return an empty array when no records are found. Make sure you update your tests!&lt;/strong&gt;&lt;/blockquote&gt;&lt;br /&gt;

Immediately after reading this I thought major code changes were going to be required; however, luckily my fear was unfounded.  Let me provide an example...&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/CQQTpL3OWGA" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/changes-to-modelfindfirst-in-cakephp-2-3/</feedburner:origLink></item>
      <item>
      <title>Recent Guest Posts on PHPMaster.com</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/0BCNjEmlPIE/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 07 Jan 13 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/recent-guest-posts-on-phpmaster-com/</guid>
      <description>I've had the pleasure of being a guest writer at a fantastic site called &lt;a href="http://www.phpmaster.com"&gt;phpmaster.com&lt;/a&gt;.  This site is a subsidiary site to one of the most popular technology blogging sites &lt;a href="http://www.sitepoint.com"&gt;sitepoint.com&lt;/a&gt;.&lt;br /&gt;

&lt;br /&gt;

The first article I wrote is an excellent extension of the various CakePHP articles I've written about in the past.  It discusses a variety of ways to improve the speed of CakePHP applications.  The latest article (that was just released a few days ago) discusses creating your very own OAuth server.  Since OAuth2 is still in a draft state, the article is for creating an OAuth1 server.&lt;br /&gt;

&lt;br /&gt;

In case you are not a regular of this site, here is a quick preview of the articles.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/0BCNjEmlPIE" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/recent-guest-posts-on-phpmaster-com/</feedburner:origLink></item>
      <item>
      <title>2012 Year in Review</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/7z1Y9wp6pTI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 21 Dec 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/2012-year-in-review/</guid>
      <description>Wow!  I can’t believe 2013 is coming.  It seriously feels just the other day when I sat down and wrote my &lt;a href="http://endyourif.com/2011-year-in-review/"&gt;2011 year in review&lt;/a&gt;…&lt;br /&gt;

&lt;br /&gt;

Thinking back, 2012 is probably a more average year.  I don’t feel like anything new and major really happened in the industry that I was a part of.  However, in my personal life, I welcomed my third child in late October – hence the lack of website updates since I’ve been extremely busy with my growing family.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/7z1Y9wp6pTI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/2012-year-in-review/</feedburner:origLink></item>
      <item>
      <title>Node.js Versus Nginx: Bare Bones Test</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/ivWwaLWaUJk/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 04 Dec 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/node-js-versus-nginx-bare-bones-test/</guid>
      <description>This is a quick follow up to yesterday’s post on &lt;a href="http://www.endyourif.com/node-js-versus-apache2-bare-bones-test/"&gt;Node.js Versus Apache2: Bare Bones Test&lt;/a&gt; where I performed a straight HTML test of Node.js versus Apache.  With my recent switch to Nginx, I thought it prudent to perform this exact same test swapping out Apache for Nginx.  The results are much more interesting to yesterday’s since there is no total destruction (sorry for the spoiler if you didn’t read yesterday’s article).&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/ivWwaLWaUJk" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/node-js-versus-nginx-bare-bones-test/</feedburner:origLink></item>
      <item>
      <title>Node.js Versus Apache2: Bare Bones Test</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/5IZnrc0tVLI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 03 Dec 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/node-js-versus-apache2-bare-bones-test/</guid>
      <description>I've written a few recent articles on Node.js, mostly to familiarize myself with the effort involved in creating basic applications with it.  I have yet to use it in production, mostly because I’m just not sure how ready I am to use it on a large project…&lt;br /&gt;

&lt;br /&gt;

I have been quite curious with performance compared to the standard tools that I've used forever and ever.  In the following article, I’m going to do some basic comparisons between Node and Apache2 performance.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/5IZnrc0tVLI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/node-js-versus-apache2-bare-bones-test/</feedburner:origLink></item>
      <item>
      <title>CSS: Start Generic before going Specific</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/iNL0RwJHRJI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 23 Oct 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/css-start-generic-before-going-specific/</guid>
      <description>This might be a boring refresher for some people; however, I think it’s important from time-to-time to go back and visit the basics.  CSS can provide a lot of power to a web developer (or designer), but when used improperly it can cause a lot of headaches.&lt;br /&gt;

&lt;br /&gt;

When using CSS, like doing on development, it’s important to stop and think about what you are doing and more importantly, what’s the easiest way to accomplish it!&lt;br /&gt;

&lt;br /&gt;

Let’s start with understanding the acronym behind CSS – it stands for Cascading Style Sheets.  Cascading, being the very important word to understand.  This means that the base styles you define will carry throughout (or cascade) all of your design unless a specific style is overridden.&lt;br /&gt;

&lt;br /&gt;

I’m going to begin by demonstrating how I typically begin creating a style sheet.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/iNL0RwJHRJI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/css-start-generic-before-going-specific/</feedburner:origLink></item>
      <item>
      <title>Node.js – Ajax Pagination without the Pages</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/eiwKz5A52Ro/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 15 Oct 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/node-js-ajax-pagination-without-the-pages/</guid>
      <description>With my recent endeavours into Node, I thought that taking a fun article like this one - &lt;a title="CakePHP 2-0 Ajax Pagination WITHOUT The Pages" href="http://www.endyourif.com/cakephp-2-0-ajax-pagination-without-the-pages/"&gt;CakePHP 2-0 Ajax Pagination WITHOUT The Pages&lt;/a&gt; – would be a really fun experiment to see how difficult it would be to accomplish in Node.&lt;br /&gt;

&lt;br /&gt;

At the end of the day, the logic is still the exact same, retrieve the items, determine the max length, calculate the number of pages, and then perform AJAX as well scroll down to fill in more content as-needed.&lt;br /&gt;

&lt;br /&gt;

Leveraging the Express API and Jade templates, this is quite painless to implement into Node.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/eiwKz5A52Ro" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/node-js-ajax-pagination-without-the-pages/</feedburner:origLink></item>
      <item>
      <title>The Importance of Local Development Environments</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/FQ2NiGxhj70/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 11 Oct 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/the-importance-of-local-development-environments/</guid>
      <description>This is an interesting topic – it's really easy to argue both ways.  Is it really worth installing a lot of software that will eventually slow down your machine or even open up your company's firewall to allow certain traffic to come through on different ports?&lt;br /&gt;

&lt;br /&gt;

Many IT teams might say no, but I'll argue forever with them about &lt;em&gt;always&lt;/em&gt; having a fully replicated &lt;em&gt;local&lt;/em&gt; development environment!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/FQ2NiGxhj70" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/the-importance-of-local-development-environments/</feedburner:origLink></item>
      <item>
      <title>Catching Email Resellers with the + Sign</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/juZsYXPHxFs/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 10 Oct 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/catching-email-resellers-with-the-sign/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/10/images.jpg"&gt;&lt;img class="alignright size-full wp-image-829" title="images" src="http://content.endyourif.com/wp-content/uploads/2012/10/images.jpg" alt="" width="224" height="225" /&gt;&lt;/a&gt;I'm sure you're like me and register to new websites almost daily giving them the same old email address each time or if you are even really anal about it, creating a new email account for each site.  Then all of a sudden our email box starts getting more and more filled with spam, what's the big idea?&lt;br /&gt;

&lt;br /&gt;

This is a neat one that I feel a little late to the game with, but hey why not, it might help someone out there!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/juZsYXPHxFs" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/catching-email-resellers-with-the-sign/</feedburner:origLink></item>
      <item>
      <title>PHP: Single Quotes versus Double Quotes</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/SKABLtOHHBw/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 09 Oct 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/php-single-quotes-versus-double-quotes/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/10/quotes.jpg"&gt;&lt;img class="alignleft size-medium wp-image-826" title="quotes" src="http://content.endyourif.com/wp-content/uploads/2012/10/quotes-300x300.jpg" alt="" width="300" height="300" /&gt;&lt;/a&gt;I always enjoy doing interviews and asking potential candidates what the difference between single quotes and double quotes are in PHP.  Most people have the basic understanding that single quotes are not interpreted by the compiler whereas double quotes are processed while the page is being executed.  The follow up question is typically which one they prefer; this answer is always 50/50.  I have always been a fan of single quotes thinking them to be faster…&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/SKABLtOHHBw" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/php-single-quotes-versus-double-quotes/</feedburner:origLink></item>
      <item>
      <title>Node using Jade Templates with Express</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/VISOaB-mv3s/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 08 Oct 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/node-using-jade-templates-with-express/</guid>
      <description>After my first article on Node - &lt;a href="http://content.endyourif.com/my-first-node-application/"&gt;My First Node Application&lt;/a&gt; – I setup and installed the Node server as well as the Express add-on package.  In today's article, I'm going to expand on that by creating actual output.  In my research and comparison, Jade templates look quite nice.&lt;br /&gt;

&lt;br /&gt;

Let's be honest, anything that can simplify the mundane typing of HTML code and let me output my content faster is a win-win in my books!&lt;br /&gt;

&lt;br /&gt;

Let's get started.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/VISOaB-mv3s" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/node-using-jade-templates-with-express/</feedburner:origLink></item>
      <item>
      <title>Google Event Tracking</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/ABOEueI78jA/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 05 Oct 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/google-event-tracking/</guid>
      <description>Since I've recently moved from &lt;a href="http://www.endyourif.com/upgrading-my-blog-the-final-saga/"&gt;WordPress to a custom solution&lt;/a&gt; I've missed a few things about the WordPress stats – more specifically which links were clicked in.  I think it's a good thing to know whether or not people like the links I often include in my blog articles.  I try not to link out too much, as the whole goals of my articles are for you to stay and read them!  Crazy concept, I know…&lt;br /&gt;

&lt;br /&gt;

Like most people, I rely on Google Analytics to provide me the stats about my website.  I certainly don't have the traffic that requires a custom solution!  The nice part is that Google has made this very easy through Custom Event Tracking.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/ABOEueI78jA" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/google-event-tracking/</feedburner:origLink></item>
      <item>
      <title>My First Node Application</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/PsJG8b_cL0U/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 04 Oct 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/my-first-node-application/</guid>
      <description>I have the unique pleasure of being a technical reviewer for an upcoming book by a former co-worker of mine.  Since it will be his second book on Node (his first being a co-author of &lt;a href="https://www.amazon.com/dp/1449398588/ref=as_li_qf_sp_asin_til?tag=endyourif-20&amp;amp;camp=0&amp;amp;creative=0&amp;amp;linkCode=as1&amp;amp;creativeASIN=1449398588&amp;amp;adid=04B4YFD0GMS808RBS67A&amp;amp;"&gt;Node Up and Running&lt;/a&gt;), I thought I should probably get a feel for using Node.  I've of course read some of the documentation and have a thorough understand of JavaScript already, as well as event driven programming – working on some very large MMO projects.&lt;br /&gt;

&lt;br /&gt;

I thought I would share how easy it is to &lt;em&gt;really&lt;/em&gt; and &lt;em&gt;truly&lt;/em&gt; get up and running with Node.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/PsJG8b_cL0U" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/my-first-node-application/</feedburner:origLink></item>
      <item>
      <title>Mysql: Insert or Update in One SQL Statement</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/-4pKavEbvBA/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 03 Oct 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/mysql-insert-or-update-in-one-sql-statement/</guid>
      <description>I must say, I really wish I knew about this technique years ago – before I started using frameworks to do a lot of my development.  The effort that was wasted in building separate code and separate logic to deal with inserts vs updates, when all of this time, there is a nice and simple feature built-in to Mysql that does this for us…&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/-4pKavEbvBA" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/mysql-insert-or-update-in-one-sql-statement/</feedburner:origLink></item>
      <item>
      <title>Regular Expressions with Mysql</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/cFd6VkbCjFY/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 02 Oct 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/regular-expressions-with-mysql/</guid>
      <description>I must admit, this is something that I've never done until just recently; creating a regular expression in Mysql.  I've typically been able to accomplish whatever I wanted to with a &lt;em&gt;LIKE&lt;/em&gt; statement or some server-side code.&lt;br /&gt;

&lt;br /&gt;

However, just recently I updated the plugin I use to output sample code.  I was previously using a syntax of &lt;em&gt;&amp;#91;codesyntax lang="php"&amp;#93;&lt;/em&gt; and now I needed to change it simply be &lt;em&gt;&amp;#91;code&amp;#93;&lt;/em&gt;.  This wasn't that simple since I've done hundreds of blogs with several different languages.  In searching I had over 15 distinct differences – hence, regular expressions to the rescue!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/cFd6VkbCjFY" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/regular-expressions-with-mysql/</feedburner:origLink></item>
      <item>
      <title>Mysql Uptime Check Script</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/l2ejh38WMH4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 01 Oct 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/mysql-uptime-check-script/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/images.jpg"&gt;&lt;img class="alignleft size-full wp-image-746" title="images" src="http://content.endyourif.com/wp-content/uploads/2012/09/images.jpg" alt="" width="120" height="144" /&gt;&lt;/a&gt;I've been pretty vocal recently over my move to &lt;a href="http://www.endyourif.com/amazon-ec2-shoutout/"&gt;Amazon EC2&lt;/a&gt; and switching to &lt;a href="http://www.endyourif.com/its-lemp-not-lamp/"&gt;LEMP stack&lt;/a&gt; and then switch to a &lt;a href="http://www.endyourif.com/update-it-actually-should-be-lepp-not-lemp-or-lamp/"&gt;LEPP stack&lt;/a&gt;.  This has certainly seen some great improvements in speed, traffic, and Google indexing.  Unfortunately as many of you may know who run their own dedicated server, it's not all white sandy beaches and beautiful sunsets!  When something goes wrong, it's up to you to fix it.&lt;br /&gt;

&lt;br /&gt;

So far the only issue that I see keep cropping up is my Mysql database seems to crash every several days.  From what I can see, it appears to be a lack of memory issue – it appears my EC2 server is just shy on a bit of memory.&lt;br /&gt;

&lt;br /&gt;

At this point, I don't think it's worth upgrading; instead I've built a simple Mysql uptime script that will ensure it's always running for me.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/l2ejh38WMH4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/mysql-uptime-check-script/</feedburner:origLink></item>
      <item>
      <title>Renaming a Database in Mysql</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/dfcOJYcLvnc/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 28 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/renaming-a-database-in-mysql/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/CloudDatabase.jpg"&gt;&lt;img class="alignright size-medium wp-image-739" title="CloudDatabase" src="http://content.endyourif.com/wp-content/uploads/2012/09/CloudDatabase-300x274.jpg" alt="" width="300" height="274" /&gt;&lt;/a&gt;Unfortunately – and probably for good reason – the &lt;em&gt;&lt;a href="http://dev.mysql.com/doc/refman/5.1/en/rename-database.html"&gt;RENAME DATABASE&lt;/a&gt;&lt;/em&gt; command had a short life in Mysql for safety precaution reasons.&lt;br /&gt;

&lt;br /&gt;

After doing some research, it appears that the best approach is as follows as it works well for both MyISAM and InnoDB table types:&lt;br /&gt;

&lt;ol&gt;&lt;br /&gt;

	&lt;li&gt;Create new database&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;Perform &lt;em&gt;RENAME TABLE&lt;/em&gt; command that includes the table and database from the old one to the newly created database&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;Repeat once for each table&lt;/li&gt;&lt;br /&gt;

&lt;/ol&gt;&lt;br /&gt;

In all of the examples I didn't find an automated script – time to make one I thought!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/dfcOJYcLvnc" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/renaming-a-database-in-mysql/</feedburner:origLink></item>
      <item>
      <title>Using Jquery to Check a Checkbox</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/1slD6OIow08/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 27 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/using-jquery-to-check-a-checkbox/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/checkbox.png"&gt;&lt;img class="alignleft size-full wp-image-737" title="checkbox" src="http://content.endyourif.com/wp-content/uploads/2012/09/checkbox.png" alt="" width="256" height="256" /&gt;&lt;/a&gt;This is an excellent follow up on a recent post – &lt;a href="http://www.endyourif.com/determine-if-an-element-is-visible-with-jquery/"&gt;Determine if an element is visible with Jquery&lt;/a&gt; – because in that post we use the &lt;em&gt;is&lt;/em&gt; Jquery operator to check if an item is visible or hidden.&lt;br /&gt;

&lt;br /&gt;

&lt;em&gt;Spoiler alert&lt;/em&gt;, in this article, we can leverage the exact same function by altering the value of the selector passed into it.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/1slD6OIow08" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/using-jquery-to-check-a-checkbox/</feedburner:origLink></item>
      <item>
      <title>Determine if an element is visible with Jquery</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/RG9Qg9_biQ8/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 26 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/determine-if-an-element-is-visible-with-jquery/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/5518991291_8c8164c5cf_b.jpg"&gt;&lt;img class="size-medium wp-image-690 alignright" title="5518991291_8c8164c5cf_b" src="http://content.endyourif.com/wp-content/uploads/2012/09/5518991291_8c8164c5cf_b-300x225.jpg" alt="" width="300" height="225" /&gt;&lt;/a&gt;When I interview web developers, I always like to ask the following basic Javascript question:&lt;br /&gt;

&lt;br /&gt;

Write a function in Javascript that will ‘toggle’ or show/hide an element upon being fired.&lt;br /&gt;

&lt;pre&gt;&lt;code&gt;

function toggle(elementIdValue) {



}

&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;

&lt;br /&gt;

I typically see one of two answers: Jquery or classic JavaScript.  Both of course are effective.  But, in this article I'm going to demonstrate another way as well.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/RG9Qg9_biQ8" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/determine-if-an-element-is-visible-with-jquery/</feedburner:origLink></item>
      <item>
      <title>A Fancier Twitter Timeline</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/S4tBMbs2-Yo/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 25 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/a-fancier-twitter-timeline/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/twittertimeline.jpg"&gt;&lt;img class="alignleft size-medium wp-image-798" title="twittertimeline" src="http://content.endyourif.com/wp-content/uploads/2012/09/twittertimeline-300x229.jpg" alt="" width="300" height="229" /&gt;&lt;/a&gt;I truly enjoy the finer things in life.  For example, if I'm going to eat a steak I don't want some fatty low grade piece of meat.  I would much rather (in this case, spend the additional money) to get an AAA grade of meat.  The taste is worth it.&lt;br /&gt;

&lt;br /&gt;

The same is true with development; the &lt;a href="https://dev.twitter.com/docs/embedded-timelines"&gt;Twitter Timeline&lt;/a&gt; is "nice", but I personally don't want a linear, scrollable representation of my Tweets!  I want the AAA grade where in this case it just takes a little bit more time instead of money…  As you can see above, my Tweets are sliding in and out every 7.5 seconds.  Once it cycles through my latest 10, it restarts again.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/S4tBMbs2-Yo" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/a-fancier-twitter-timeline/</feedburner:origLink></item>
      <item>
      <title>Upgrading my Blog - The Final Saga!</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/mqRdF4KHoX8/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 24 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/upgrading-my-blog-the-final-saga/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/cpuusage.jpg"&gt;&lt;img class="alignright size-medium wp-image-795" title="cpuusage" src="http://content.endyourif.com/wp-content/uploads/2012/09/cpuusage-300x193.jpg" alt="" width="300" height="193" /&gt;&lt;/a&gt;Several of my recent posts have been discussing my recent move to &lt;a href="http://www.endyourif.com/amazon-ec2-shoutout/"&gt;Amazon EC2&lt;/a&gt; and updating, first to a &lt;a href="http://www.endyourif.com/its-lemp-not-lamp/"&gt;LEMP stack&lt;/a&gt;, and then to a &lt;a href="http://www.endyourif.com/update-it-actually-should-be-lepp-not-lemp-or-lamp/"&gt;LEPP stack&lt;/a&gt;, which all provided great speed increases.  However, can you really be satisfied with a slightly faster loading WordPress blog, especially when my CPU was dying regularly with 100% usage?  I certainly couldn't, especially when &lt;a href="http://www.endyourif.com/yslow-helping-slow-web-pages-load-faster/"&gt;YSlow&lt;/a&gt; was giving me such a bad rating that I had really no control over…&lt;br /&gt;

&lt;br /&gt;

Firstly, a big shout out must go to &lt;a href="http://nesbot.com/"&gt;Nesbot.com&lt;/a&gt;; he was so kind to share his &lt;a href="https://github.com/briannesbitt/nesbot.com/"&gt;custom blog code&lt;/a&gt; that he built using &lt;a href="http://slimframework.com/"&gt;SlimPHP&lt;/a&gt;.  Of course I had to add a few features myself – including my fancy Twitter slider – and an importer from my WordPress blog into this new blog structure.&lt;br /&gt;

&lt;br /&gt;

If you look at the screenshot to the right, you can see &lt;em&gt; exactly &lt;/em&gt;when I switched two other sites to use this code on the 22nd of September!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/mqRdF4KHoX8" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/upgrading-my-blog-the-final-saga/</feedburner:origLink></item>
      <item>
      <title>CakePHP Global Constants and Functions</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/gwTq7YHQ-D0/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 21 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/cakephp-global-constants-and-functions/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/lazy-cat.jpg"&gt;&lt;img class="alignleft size-full wp-image-733" title="lazy-cat" src="http://content.endyourif.com/wp-content/uploads/2012/09/lazy-cat.jpg" alt="" width="225" height="187" /&gt;&lt;/a&gt;If you ever find yourself perusing some of the default code that comes with CakePHP, you might find yourself somewhat curious and confused when you see such functions as &lt;em&gt;&amp;lt;?php e('Hello World');?&amp;gt;&lt;/em&gt; or &lt;em&gt;&amp;lt;?pho echo h('&amp;lt;a href=""&amp;gt;Hello World&amp;lt;/a&amp;gt;');?&amp;gt;&lt;/em&gt;.&lt;br /&gt;

&lt;br /&gt;

I know I certainly was and became determined to understand what the heck these were doing.  It quickly became apparent that these were just two of the &lt;em&gt;many&lt;/em&gt; built-in extension functions that are part of the CakePHP framework!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/gwTq7YHQ-D0" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/cakephp-global-constants-and-functions/</feedburner:origLink></item>
      <item>
      <title>CakePHP Extending one View from Another</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/k1uXKV6Jqp4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 20 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/cakephp-extending-one-view-from-another/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/inheritance-view.png"&gt;&lt;img class="alignright size-medium wp-image-731" title="inheritance-view" src="http://content.endyourif.com/wp-content/uploads/2012/09/inheritance-view-300x191.png" alt="" width="300" height="191" /&gt;&lt;/a&gt;A new feature in CakePHP 2.1 is the ability to make one view extend another view.  This is a very neat feature; it's actually quite similar to the concept of &lt;a href="http://www.webistrate.com/jquery-creating-templates-for-your-html-content/"&gt;Jquery templating&lt;/a&gt;.  The concept behind it is relatively straight forward.  You define one view that contains common elements that will be updated in another view.  The goal is to avoid duplicating the HTML in a different view.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/k1uXKV6Jqp4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/cakephp-extending-one-view-from-another/</feedburner:origLink></item>
      <item>
      <title>The Best Way to Prevent SQL Injection</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/yzr7sCp7QZ4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 19 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/the-best-way-to-prevent-sql-injection/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/sql_injection.gif"&gt;&lt;img class="alignleft size-full wp-image-729" title="sql_injection" src="http://content.endyourif.com/wp-content/uploads/2012/09/sql_injection.gif" alt="" width="300" height="225" /&gt;&lt;/a&gt;If you use a framework of some sort, you probably haven't thought about SQL injection for some time – in fact it almost seems dated to even discuss it.  However, security should never be overlooked and it's important to not trust third party applications and people by default!  So what is the best way to prevent SQL injection?&lt;br /&gt;

&lt;br /&gt;

Have you noticed how I haven't specified a specific language?  This is done purposely, because at the end of the day – all languages – should be able to follow this paradigm…&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/yzr7sCp7QZ4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/the-best-way-to-prevent-sql-injection/</feedburner:origLink></item>
      <item>
      <title>CakePHP 2.x Login System</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/sNkXwtwSnVQ/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 18 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/cakephp-2-x-login-system/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/20050818-01L-300x199.jpg"&gt;&lt;img class="alignright size-full wp-image-727" title="20050818-01L-300x199" src="http://content.endyourif.com/wp-content/uploads/2012/09/20050818-01L-300x199.jpg" alt="" width="300" height="199" /&gt;&lt;/a&gt;Well, since one of my most popular all-time blog posts is &lt;a title="Permalink to Login system with CakePHP in under 10 minutes" href="http://www.endyourif.com/login-system-with-cakephp-in-under-10-minutes/"&gt;Login system with CakePHP in under 10 minutes&lt;/a&gt; I think it's time that I update it to version 2.x (currently 2.2 at the time of writing).  The original post was probably written for version 1.2 or 1.1 and there have been several changes made, especially with breaking changes to the &lt;em&gt;AuthenicateComponent&lt;/em&gt;.&lt;br /&gt;

&lt;br /&gt;

The beautiful part is the changes are extremely limited.  In fact, only the &lt;em&gt;UsersController&lt;/em&gt; requires a few minor changes.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/sNkXwtwSnVQ" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/cakephp-2-x-login-system/</feedburner:origLink></item>
      <item>
      <title>Load Testing Mysql with mysqlslap</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/QwcutLoQqWI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 17 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/load-testing-mysql-with-mysqlslap/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/3022366763_f2256684d3.jpg"&gt;&lt;img class="alignleft size-medium wp-image-716" title="3022366763_f2256684d3" src="http://content.endyourif.com/wp-content/uploads/2012/09/3022366763_f2256684d3-300x282.jpg" alt="" width="300" height="282" /&gt;&lt;/a&gt;I have a few thoughts for some testing/comparison of mysql tables that I have been curious about.  Before starting though, I thought it was prudent that I should give it some thought about the approach.  The first thing that came to mind was altering the &lt;a title="Permalink to A Simple But Effective Speed Comparison" href="http://www.endyourif.com/a-simple-but-effective-speed-comparison/"&gt;A Simple But Effective Speed Comparison&lt;/a&gt; code to execute a bunch of SQL queries against my local installation.&lt;br /&gt;

&lt;br /&gt;

I really didn't like this approach because of the potential inaccuracy due to the overhead of the language and connecting to mysql before executing the queries.  The whole purpose of these potential upcoming articles is to compare mysql, not a specific language integrating with mysql.&lt;br /&gt;

&lt;br /&gt;

Luckily for us, as of Mysql 5.1.4, a tool called mysqlslap is shipped with the server installation.  This tool allows us to client emulation against our mysql server!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/QwcutLoQqWI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/load-testing-mysql-with-mysqlslap/</feedburner:origLink></item>
      <item>
      <title>Update: It Actually Should Be LEPP Not LEMP or LAMP!</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/f82kX1kxrP4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 14 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/update-it-actually-should-be-lepp-not-lemp-or-lamp/</guid>
      <description>In several recent posts: &lt;a title="Permalink to It’s LEMP not LAMP!" href="http://www.endyourif.com/its-lemp-not-lamp/"&gt;It’s LEMP not LAMP!&lt;/a&gt; and &lt;a title="Permalink to Amazon EC2 Shoutout!" href="http://www.endyourif.com/amazon-ec2-shoutout/"&gt;Amazon EC2 Shoutout!&lt;/a&gt; I've discussed how I switched from a shared hosting account with GoDaddy to a dedicated Micro instance with Amazon.  At the same time I decided to go out and try nginx (pronounced Engine-X) and remove Apache from the equation.&lt;br /&gt;

&lt;br /&gt;

This saw some incredible results.  However, several times since switching I've run into several database issues where it appears Mysql runs out of memory!  Performing a &lt;em&gt;top&lt;/em&gt; command shows over 15 &lt;em&gt;mysql&lt;/em&gt; processes running at anyone giving time each taking up to 10% of the memory.  On a micro instance I only get 600mb, so this adds up quickly!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/f82kX1kxrP4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/update-it-actually-should-be-lepp-not-lemp-or-lamp/</feedburner:origLink></item>
      <item>
      <title>A Short Rant About Coding Conventions</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/7HAhFzSF6wU/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 13 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/a-short-rant-about-coding-conventions/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/now-hiring-must-have-a-clue.jpg"&gt;&lt;img class="alignright size-medium wp-image-686" title="now-hiring-must-have-a-clue" src="http://content.endyourif.com/wp-content/uploads/2012/09/now-hiring-must-have-a-clue-300x225.jpg" alt="" width="300" height="225" /&gt;&lt;/a&gt;Yesterday's article actually got me a little amped up about coding conventions – &lt;a href="http://www.endyourif.com/comparing-a-while-loop-against-a-foreach-loop-of-an-array/"&gt;Comparing a while loop against a foreach loop of an array&lt;/a&gt; – because I never thought I would actually have to do a comparison between a &lt;em&gt;while&lt;/em&gt; loop and a &lt;em&gt;foreach&lt;/em&gt; loop on an array!  If we go back and revisit the post, I was reviewing a recent CakePHP commit for an optimization on the Hash class.  The code in question is three separate blocks of code that leverage the &lt;em&gt;array_shift&lt;/em&gt; function to get the next value in the array with a &lt;em&gt;foreach&lt;/em&gt; loop instead.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/7HAhFzSF6wU" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/a-short-rant-about-coding-conventions/</feedburner:origLink></item>
      <item>
      <title>Comparing a while loop against a foreach loop of an array</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/a9ZM3L8FddA/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 12 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/comparing-a-while-loop-against-a-foreach-loop-of-an-array/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/Arrays2.gif"&gt;&lt;img class="alignleft size-medium wp-image-688" title="Arrays2" src="http://content.endyourif.com/wp-content/uploads/2012/09/Arrays2-300x266.gif" alt="" width="300" height="266" /&gt;&lt;/a&gt;Are you confused by the title?  I was when I first got the idea to even write this blog as well.  I was recently perusing the CakePHP change logs and came across an interesting commit – &lt;a href="https://github.com/cakephp/cakephp/commit/ecdf0e6"&gt;Optimization for Hash Method&lt;/a&gt;.&lt;br /&gt;

&lt;br /&gt;

The optimization is quite simple, this code:&lt;br /&gt;

&lt;br /&gt;

&lt;pre&gt;&lt;code&gt;

while (($key = array_shift($parts)) !== null)

&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;

&lt;br /&gt;

Is replaced with the following code:&lt;br /&gt;

&lt;br /&gt;

&lt;pre&gt;&lt;code&gt;

foreach ($parts as $key)

&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;

&lt;br /&gt;

This is actually done several times in the commit.  It seems that the original developer is really keen on using the &lt;em&gt;array_shift&lt;/em&gt; function.  Just in seeing this code, I thought the original code was odd to utilize that function so I immediately had to do a comparison and validate the optimization!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/a9ZM3L8FddA" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/comparing-a-while-loop-against-a-foreach-loop-of-an-array/</feedburner:origLink></item>
      <item>
      <title>PhoneGap and Jquery Mobile – A Truly Winning Combination</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/aO0naQktm_Y/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 11 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/phonegap-and-jquery-mobile-a-truly-winning-combination/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/phonegap.png"&gt;&lt;img class="alignright size-medium wp-image-693" title="phonegap" src="http://content.endyourif.com/wp-content/uploads/2012/09/phonegap-300x125.png" alt="" width="300" height="125" /&gt;&lt;/a&gt;Any regular readers may have noticed that I finally got around to updating and adding a new book under "My Books" on the right-hand side of the screen.  Yes, I not-so recently published my third book (and second with O'Reilly) earlier this year.&lt;br /&gt;

&lt;br /&gt;

The book is called &lt;a href="http://www.amazon.com/dp/1449319548/ref=as_li_qf_sp_asin_til?tag=endyourif-20&amp;amp;camp=14573&amp;amp;creative=327641&amp;amp;linkCode=as1&amp;amp;creativeASIN=1449319548&amp;amp;adid=16SE8MTP165N3DPX5CZH&amp;amp;&amp;amp;ref-refURL=http%3A%2F%2Fwww.endyourif.com%2F" target="_blank"&gt;20 Recipes for Programming PhoneGap&lt;/a&gt; – Cross-Platform Mobile Development for Android and iPhone.  Throughout this book, I get you up and running quickly using the PhoneGap API along with the Jquery Mobile API to take care of the pesky mobile design issues.&lt;br /&gt;

&lt;br /&gt;

Much like I did when I released my MVC 3.NET book, I provided a free chapter from the book for my readers.  Well here is an excellent recipe sample from my PhoneGap book.  The goal of this recipe is to provide a standard approach to automatically fire (or trigger) a JavaScript function when a PhoneGap page has loaded – either on initial launch or after the user has navigated within the application.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/aO0naQktm_Y" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/phonegap-and-jquery-mobile-a-truly-winning-combination/</feedburner:origLink></item>
      <item>
      <title>Are you having CakePHP and NGINX Rewrite Rule Issues?</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/d35wBME4UK8/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 10 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/are-you-having-cakephp-and-nginx-rewrite-rule-issues/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/nginx.png"&gt;&lt;img class="alignleft size-medium wp-image-696" title="nginx" src="http://content.endyourif.com/wp-content/uploads/2012/09/nginx-300x187.png" alt="" width="300" height="187" /&gt;&lt;/a&gt;In a recent blog post – &lt;a href="http://www.endyourif.com/its-lemp-not-lamp/"&gt;It's LEMP Not LAMP&lt;/a&gt; – I discussed about making the switch to using NGINX (pronounced Engine-X).  I had little-to-no issues getting by basic Wordpress blogs up and running.  However, for some reason I couldn't get my older CakePHP sites up and working.&lt;br /&gt;

&lt;br /&gt;

I was racking my brain forever, trying everything I could think of with the rewrite rules – thinking for sure this &lt;em&gt;must&lt;/em&gt; be the root of the cause.  In the end I thought it might just be an issue with the version of CakePHP I was using, as it was an older version (1.2.x).  However, I just grabbed a clean copy from CakePHP's Github of 1.2.10 and got it up and running without issues.&lt;br /&gt;

&lt;br /&gt;

I'm of course even more confused at this point, so why am I writing this blog post you ask?  The answer is simple, if you're having issues with getting an old CakePHP site to work on NGINX, try upgrading your CakePHP version.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/d35wBME4UK8" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/are-you-having-cakephp-and-nginx-rewrite-rule-issues/</feedburner:origLink></item>
      <item>
      <title>What I Learned This Summer</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/gXYGfYq7Np4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 07 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/what-i-learned-this-summer/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/3888632330_7a45b3b051_z.jpg"&gt;&lt;img class="alignright size-medium wp-image-698" title="3888632330_7a45b3b051_z" src="http://content.endyourif.com/wp-content/uploads/2012/09/3888632330_7a45b3b051_z-300x300.jpg" alt="" width="300" height="300" /&gt;&lt;/a&gt;Well – it's Friday and all of the kids are back in school.  While this post is being published, I'm probably stuck in traffic!  I can't believe it's a new school year already, luckily my kids aren't old enough so it's just traffic that I need to get used to.&lt;br /&gt;

&lt;br /&gt;

This has been a great summer so far and I thought it would be a good idea to summarize the variety of things I've learned about – but have not necessarily blogged about…&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/gXYGfYq7Np4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/what-i-learned-this-summer/</feedburner:origLink></item>
      <item>
      <title>It's LEMP not LAMP!</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/nEZTrU8ZnQQ/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 06 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/its-lemp-not-lamp/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/lamp.png"&gt;&lt;img class="alignleft size-medium wp-image-701" title="lamp" src="http://content.endyourif.com/wp-content/uploads/2012/09/lamp-300x216.png" alt="" width="300" height="216" /&gt;&lt;/a&gt;I'm sure many of you have heard the term LAMP before – standing for Linux Apache Mysql and PHP.  This is a very typical setup for many open source websites.  It's been around for ages.  But make way for LEMP.  In a recent &lt;a href="http://w3techs.com/technologies/cross/web_server/ranking"&gt;report by w3techs&lt;/a&gt;, a new HTTP server is climbing its way up the ranks called nginx, but it is pronounced Engine-X; hence, the term LEMP – standing for Linux Engine-X (nginx) Mysql and PHP.&lt;br /&gt;

&lt;br /&gt;

According to this w3techs report nginx is now used by almost 12.5% of the websites we know what web server they are running on.  More significantly a staggering 28.2% (of the 12.5%) websites rank in the top 1,000 worldwide (according to their Alexa ranking).&lt;br /&gt;

&lt;br /&gt;

Along with my recent switch to Amazon EC2, I also decided to switch to a LEMP stack.  I thought I should throw out another shout out to &lt;a href="http://www.howtoforge.com/"&gt;HowToForge.com&lt;/a&gt; for this AMAZING step-by-step tutorial on installing a LEMP stack with extremely simple to follow instructions on my brand new Ubuntu 12 server.&lt;br /&gt;

&lt;br /&gt;

&lt;a href="http://www.howtoforge.com/installing-nginx-with-php5-and-php-fpm-and-mysql-support-lemp-on-ubuntu-12.04-lts"&gt;Check out the step-by-step instructions to setting up your LEMP server&lt;/a&gt;.&lt;br /&gt;

&lt;br /&gt;

I think I only had to make one modification to this instruction set before being able to perform one of the &lt;em&gt;apt-get install&lt;/em&gt; commands I had to perform an update on the box.  Luckily enough, the OS told me exactly what to do!&lt;br /&gt;

&lt;br /&gt;

A friend and former colleague introduced me to nginx a while back with his blog about &lt;a href="http://www.alwaysgetbetter.com/blog/2012/01/30/setting-wordpress-nginx-fastcgi/"&gt;Setting up WordPress with nginx and FastCGI&lt;/a&gt;.  This is quite useful for understanding the nginx configuration for a virtual host that requires rewrite rules as nginx currently has no support for .htaccess files!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/nEZTrU8ZnQQ" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/its-lemp-not-lamp/</feedburner:origLink></item>
      <item>
      <title>Amazon EC2 Shoutout!</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/BsL-wwkiE64/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 05 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/amazon-ec2-shoutout/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/shout-out.jpg"&gt;&lt;img class="alignright size-medium wp-image-703" title="shout-out" src="http://content.endyourif.com/wp-content/uploads/2012/09/shout-out-300x211.jpg" alt="" width="300" height="211" /&gt;&lt;/a&gt;I was previously hosting all of my sites with GoDaddy, using one of their unlimited domain hosting services.  While this was pretty inexpensive compared to similar services, I was never truly happy with the load time.  Often taking over 1.2 seconds to load this blog!&lt;br /&gt;

&lt;br /&gt;

At my current job, I had the pleasure of doing of some speed testing with some Amazon EC2 services.  I was certainly impressed with them.  While I was doing some costing for work, I decided to do a bit of costing for myself.  I run several websites, no hits by any means, but enough that I care about the poor performance I was getting at GoDaddy.&lt;br /&gt;

&lt;br /&gt;

My annual fee at GoDaddy was in the neighbourhood of $100/year.  Quite decent for the 7-10 websites I'm currently hosting.  However, I started looking at the micro instances that Amazon offers.  These start as low as $0.02 per hour.  When you cost this out over the entire year, it works out to around $180/year.  Obviously more expensive, but Amazon also offers reserved instances.  Knowing that my sites will be around for the whole year, getting a 1 year reserved instance brings it down to $130/year; much closer to the previous $100/year that you barely notice it!&lt;br /&gt;

&lt;br /&gt;

If you're a regular visitor of this blog, you'll now notice that the site takes less than 0.5 seconds to load!  Not too shabby for a few bucks more a year.&lt;br /&gt;

&lt;br /&gt;

Now, here's the real kicker, Amazon is offering FREE micro instances for a year with certain usage limitations!  So far, my sites are taking complete advantage of it and I'm extremely happy.&lt;br /&gt;

&lt;br /&gt;

&lt;em&gt;Before making the jump, please remember there is a big difference; one is managed by a team of professionals to keep running versus running your own dedicated server with EC2.&lt;/em&gt;&lt;br /&gt;

&lt;br /&gt;

If you have a little bit of knowledge and know what you're doing, I definitely suggest taking advantage of Amazon EC2's free micro hosting!&lt;br /&gt;

&lt;br /&gt;

P.S. I am not getting anything in return from Amazon for writing this post, just thought Amazon deserved the recognition for providing me with free micro hosting!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/BsL-wwkiE64" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/amazon-ec2-shoutout/</feedburner:origLink></item>
      <item>
      <title>A Simple But Effective Speed Comparison</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/u37XRPfiP0M/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 04 Sep 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/a-simple-but-effective-speed-comparison/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/09/7077246973_47c1e37b04.jpg"&gt;&lt;img class="alignleft size-full wp-image-705" title="7077246973_47c1e37b04" src="http://content.endyourif.com/wp-content/uploads/2012/09/7077246973_47c1e37b04.jpg" alt="" width="256" height="192" /&gt;&lt;/a&gt;A little while ago, I wrote a simple .NET application that performs X amount of requests and calculates an average speed of those requests.  It does this by dropping the highest and lowest request times, then taking an average speed on the remaining requests.&lt;br /&gt;

&lt;br /&gt;

This does a decent job for a straight up &lt;a href="https://github.com/endyourif/speedtester"&gt;speed test&lt;/a&gt;.  However, a few possibilities could arise, such as CPU hogging that could skew the results.  Instead, I've made a few alterations and converted the speed tester to not be based on the number of requests, but instead based on a specific amount of time.  This should help eliminate some inconsistencies of doing a straight number of requests.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/u37XRPfiP0M" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/a-simple-but-effective-speed-comparison/</feedburner:origLink></item>
      <item>
      <title>PHP: Require/Include vs Autoloader</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/uKHaga0EelM/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 29 Aug 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/php-requireinclude-vs-autoloader/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/08/vs-300x197.jpg"&gt;&lt;img class="alignright size-full wp-image-707" title="vs-300x197" src="http://content.endyourif.com/wp-content/uploads/2012/08/vs-300x197.jpg" alt="" width="300" height="197" /&gt;&lt;/a&gt;Google has long since ingrained into my brain how important every millisecond is when dealing with large amounts of traffic.&lt;br /&gt;

&lt;br /&gt;

In this post, I'm going to demonstrate a really simplistic way to improve your PHP website performance.  It seems to go against the grain of "old school" vanilla PHP writing, but the results are incredible!  By removing the use of &lt;em&gt;require&lt;/em&gt; and &lt;em&gt;include&lt;/em&gt; and replacing it with a &lt;em&gt;spl_autoload_register&lt;/em&gt; function instead, the time savings are more than 10 times!&lt;br /&gt;

&lt;br /&gt;

Not only that, in theory it's less lines of code!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/uKHaga0EelM" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/php-requireinclude-vs-autoloader/</feedburner:origLink></item>
      <item>
      <title>JavaScript: Easy Creation of "Countdown Timers"</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/JVvuGgZ7PUM/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 28 Aug 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/javascript-easy-creation-of-countdown-timers/</guid>
      <description>&lt;a href="http://content.endyourif.com/wp-content/uploads/2012/08/4415693_d76b15da03_z.jpg"&gt;&lt;img class="alignleft size-medium wp-image-709" title="4415693_d76b15da03_z" src="http://content.endyourif.com/wp-content/uploads/2012/08/4415693_d76b15da03_z-300x300.jpg" alt="" width="300" height="300" /&gt;&lt;/a&gt;If there is one thing I don't like doing – it's doing the same thing twice or even more!  So I was building an application on the side where I need to have a listing that performs a simple countdown.  At this point I've been lazy and just have it counting down the seconds, but this example would be really easy to update to put a proper countdown of days, hours, minutes, and seconds – and heck if you get really adventurous even weeks, months, and years!&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/JVvuGgZ7PUM" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/javascript-easy-creation-of-countdown-timers/</feedburner:origLink></item>
      <item>
      <title>CakePHP Version Comparison with PHP Version Comparison</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/enTvBUWEwlI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 25 Jun 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/cakephp-version-comparison-with-php-version-comparison/</guid>
      <description>I've seen a few recent blog articles comparing the new version of PHP 5.4 to its predecessors and I thought I should get involved with this a bit as well.&lt;br /&gt;

&lt;br /&gt;

To perform this test, I will layout the conditions I have chosen.  I'm trying to keep this as simple as possible.  I currently run a Dell Laptop with Windows 7 on it:&lt;br /&gt;

&lt;br /&gt;

Windows NT 6.1 build 7601 (Unknown Windows version Business Edition Service Pack 1) i586&lt;br /&gt;

&lt;br /&gt;

Because I often do a lot of .NET development recently I have PHP running as a CGI under IIS 7.5.&lt;br /&gt;

&lt;br /&gt;

I then created a very simple .NET application that performs 100 requests of the same web page and tracks the response time.  These lists of response times are sorted and the highest and lowest responses are dropped.  The average is then calculated from this.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/enTvBUWEwlI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/cakephp-version-comparison-with-php-version-comparison/</feedburner:origLink></item>
      <item>
      <title>2011: Year in Review</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/TMUPfxVEpX4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 02 Jan 12 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/2011-year-in-review/</guid>
      <description>The New Year has arrived, I wasn't quite prepared to sum up my year on December 31&lt;sup&gt;st&lt;/sup&gt; because I was busy spending time with the kids during my, well deserved, one week off for the holidays.  This last year was probably the hardest year of my life.  At my current job, I stepped up and took on a big management role while being lead developer on multiple projects – for some reason I made this mistake again…&lt;br /&gt;

&lt;br /&gt;

Even though this was a hard year, there certainly were big rewards.  I dove into some new technology with the Photon Socket Server from Exitgames; got back into C# and .NET; released two books and currently editing my third; watched my kids walk for the first time; visited Seattle twice and met one of the now former lead developers of MVC .NET; launched a new website (&lt;a href="http://www.webistrate.com/"&gt;Webistrate – Draw your own conclusions&lt;/a&gt;) – very happy with the creative name on this one!; and many, many more things.&lt;br /&gt;

&lt;br /&gt;

What did I learn this year?  Don't bite more than you can chew!  Don't make a major platform change during an extremely tight deadline!  Don't carry your anger with you everywhere – the world truly isn't out to get you, well maybe sometimes it is!  Interviewing people is not an overly enjoyable process, mostly because it takes 3 bad interviews for even 1 mediocre one.  However, the one that's really good is always easy to pick from the bunch.  A few late hires were made at the end of the year that will be starting soon, hopefully all the hard interviewing will truly pay off and more fantastic people will join the team we are building.&lt;br /&gt;

&lt;br /&gt;

That's quite a bunch of negatives up there, but we do typically learn from our mistakes, so what about some positives?  Writing books are hard work; but a lot more fun than doing day-to-day development work.  When I write books, I find that I really take my time and think more about how I want to accomplish something because my solution will be used by many people in many different scenarios.  Blogging is also a lot of fun, but is probably more time consuming than book writing, blogs are typically successful because of repeat, good, quality content – hence why this blog is not allowing me to stay home every day and write (not that it's not good quality of course :p that I unfortunately do not blog as much as I would like too!).&lt;br /&gt;

&lt;br /&gt;

So what can we look forward to in 2012?  Well another book from me, this time on PhoneGap.  Mobile development and more specifically the adoption of HTML5 in the main stream (Microsoft, Adobe, etc…) will make it extremely important for us developers to focus more on attempting to build one codebase for many different platforms, not just the web anymore.  Instead we will need to develop for mobile devices (the one million and one different kinds of course), pad devices, even Windows 8 devices!&lt;br /&gt;

&lt;br /&gt;

Hopefully from all of the lessons learned in 2011, this New Year will be a lot less stress free!&lt;br /&gt;

&lt;br /&gt;

&amp;nbsp;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/TMUPfxVEpX4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/2011-year-in-review/</feedburner:origLink></item>
      <item>
      <title>MVC 3 Routing Example</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/37AvohIahGs/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 17 Oct 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/mvc-3-routing-example/</guid>
      <description>Below is an excerpt of a chapter from my new book: &lt;a href="http://www.amazon.com/dp/1449309860/ref=as_li_qf_sp_asin_til?tag=endyourif-20&amp;amp;camp=14573&amp;amp;creative=327641&amp;amp;linkCode=as1&amp;amp;creativeASIN=1449309860&amp;amp;adid=1MFPJB9H6RHA5H8E8ZF4&amp;amp;"&gt;20 Recipes for Programming MVC 3&lt;/a&gt;.&lt;br /&gt;

&lt;br /&gt;

In today’s heavily fought battles for search engine supremacy, it’s quite difficult to winthe race with a website address that looks like:&lt;br /&gt;

&lt;blockquote&gt;http://www.example.com/books/details?id=4.&lt;/blockquote&gt;&lt;br /&gt;

Using routes, the website can look like:&lt;br /&gt;

&lt;blockquote&gt;http://www.example.com/20-recipes-for-mvc3&lt;/blockquote&gt;&lt;br /&gt;

which provides much more context, both to the user and the search engine.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/37AvohIahGs" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/mvc-3-routing-example/</feedburner:origLink></item>
      <item>
      <title>20 Recipes for Programming MVC 3</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/u7N_6SO9c6c/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 12 Oct 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/20-recipes-for-programming-mvc-3/</guid>
      <description>Yesterday marks the official launch of my second book: &lt;a href="http://www.amazon.com/dp/1449309860/ref=as_li_qf_sp_asin_til?tag=endyourif-20&amp;amp;camp=14573&amp;amp;creative=327641&amp;amp;linkCode=as1&amp;amp;creativeASIN=1449309860&amp;amp;adid=0SDCDVCW26DXYXGASHQT&amp;amp;"&gt;20 Recipes for Programming MVC 3&lt;/a&gt;.  The book is being published by O'Reilly and is available in both e-book or print edition.  I'm quite proud of this book as I've feel like my writing style was really able to mature while working with a real editor to bring a great cookbook on ASP.NET's MVC 3.&lt;br /&gt;

&lt;br /&gt;

The tagline for the book is, Faster, Smarter Web Development and that truly is my goal with all of the recipes in the book.  It covers basic material from authentication and emails to more complex features like routing and AJAX - even has an excellent tutorial on converting your website into a mobile site in a few easy steps!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/u7N_6SO9c6c" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/20-recipes-for-programming-mvc-3/</feedburner:origLink></item>
      <item>
      <title>Highlights from Webistrate: HTML5, MVC 3, and CSS3</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/1m-h2FXJp3c/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 21 Sep 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/highlights-from-webistrate-html5-mvc-3-and-css3/</guid>
      <description>Over the past few weeks some great articles have been released on Webistrate:&lt;br /&gt;

&lt;ul&gt;&lt;br /&gt;

	&lt;li&gt;&lt;a title="Permalink to HTML5: Creating an HTML5 Website and degrading for older browsers" href="http://www.webistrate.com/html5-creating-an-html5-website-and-degrading-for-older-browsers/"&gt;HTML5: Creating an HTML5 Website and degrading for older browsers&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;

&lt;/ul&gt;&lt;br /&gt;

&lt;ul&gt;&lt;br /&gt;

	&lt;li&gt;&lt;a title="Permalink to MVC3: Using Class Extensions to simplify your code with the UrlHelper" href="http://www.webistrate.com/mvc3-using-class-extensions-to-simplify-your-code-with-the-urlhelper/"&gt;MVC3: Using Class Extensions to simplify your code with the UrlHelper&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;

&lt;/ul&gt;&lt;br /&gt;

&lt;ul&gt;&lt;br /&gt;

	&lt;li&gt;&lt;a title="Permalink to CSS3: Attribute Selectors" href="http://www.webistrate.com/css3-attribute-selectors/"&gt;CSS3: Attribute Selectors&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;

&lt;/ul&gt;&lt;br /&gt;

Exploring some of the new features of ASP.NET, HTML5, and CSS3.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/1m-h2FXJp3c" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/highlights-from-webistrate-html5-mvc-3-and-css3/</feedburner:origLink></item>
      <item>
      <title>Making AJAX Content Loading Prettier</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/7UGFIQ1HpWc/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 08 Sep 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/making-ajax-content-loading-prettier/</guid>
      <description>In today's article on Webistrate I explore &lt;a title="Permalink to jQuery: Transitioning AJAX Content into view with $.animate()" href="http://www.webistrate.com/jquery-transitioning-ajax-content-into-view-with-animate/"&gt;Transitioning AJAX Content into view with $.animate()&lt;/a&gt; using some basic jQuery.  Please note, it doesn't look overly pretty because I'm not a designer, but the functionality is there and it can be prettied with relative ease.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/7UGFIQ1HpWc" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/making-ajax-content-loading-prettier/</feedburner:origLink></item>
      <item>
      <title>Improving the speed of AJAX request and response times</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/zO4eCDBaKwU/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 01 Sep 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/improving-the-speed-of-ajax-request-and-response-times/</guid>
      <description>Today a new article was released on &lt;a href="http://www.webistrate.com"&gt;Webistrate &lt;/a&gt;that discusses how to use &lt;a href="http://www.webistrate.com/jquery-creating-templates-for-your-html-content/"&gt;jQuery Templates&lt;/a&gt; to speed up your websites AJAX queries by return back JSON data and then doing the visual enhancements on the client-side with the use of a predefined jQuery template.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/zO4eCDBaKwU" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/improving-the-speed-of-ajax-request-and-response-times/</feedburner:origLink></item>
      <item>
      <title>Developers to the rescue of designers...again!</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/a4tjEgv2R50/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 30 Aug 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/developers-to-the-rescue-of-designers-again/</guid>
      <description>I don't know about you, but my designers love their custom fonts and I'm tired of slicing and reslicing images - especially when the website is multilingual.&lt;br /&gt;

&lt;br /&gt;

CSS3 to the rescue allowing us to import custom fonts and make them work cross-browser.  Check out how to use the &lt;a href="http://www.webistrate.com/css3-custom-fonts-using-font-face/"&gt;@font-face CSS3 tag&lt;/a&gt; to do it!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/a4tjEgv2R50" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/developers-to-the-rescue-of-designers-again/</feedburner:origLink></item>
      <item>
      <title>Webistrate.com - Draw Your Own Conclusions</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/RfZ3qs-7aSI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 25 Aug 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/webistrate-com-draw-your-own-conclusions/</guid>
      <description>I've been working on a new web site recently.  I've enjoyed doing my blog; however, I find that blogging is different from what I want this new web site to be.  The goal of Webistrate is to provide &lt;a href="http://www.webistrate.com"&gt;full code solutions&lt;/a&gt; oppose to what I often times do with my blog.  My blog has always contained a lot of personal opinions or short little tidbits that I learned.  With Webistrate, I'm beginning by working with some of my existing articles and converting them to this new style.  A problem and a solution.&lt;br /&gt;

&lt;br /&gt;

You can see this now with a new approach to an existing post I have on my blog: &lt;a title="Permalink to CakePHP: Login System using the Authentication Component" href="http://www.webistrate.com/cakephp-login-system-using-the-authentication-component/"&gt;CakePHP: Login System using the Authentication Component&lt;/a&gt;.  This post goes from using partial code blocks, building up the solution, to presenting a full solution and complete description.&lt;br /&gt;

&lt;br /&gt;

The site is still pretty new right now, so there are only a few posts, but more on the way!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/RfZ3qs-7aSI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/webistrate-com-draw-your-own-conclusions/</feedburner:origLink></item>
      <item>
      <title>ToLower-ToUpper and the CurrentCulture.CultureInfo</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/fvD0GskKUEI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 08 Aug 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/tolower-toupper-and-the-currentculture-cultureinfo/</guid>
      <description>I have recently being working on my largest multi-lingual site ever - over 30 languages - in ASP.NET.  While implementing it, there have been a lot of bumps and bruises along the way.  One of the most recent one was noticing that the ToUpper and ToLower functions in ASP.NET take the CurrentCulture.CultureInfo into consideration.&lt;br /&gt;

&lt;br /&gt;

As you may guess, this is both a blessing and a curse.&lt;br /&gt;

&lt;br /&gt;

When I'm working with text that is to be translated, but should appear upper or lower case this makes perfect sense that the CurrentCulture.CultureInfo should be taking into account.  However, be sure you remember this later when you are doing text transformations and text comparisons on words that should NOT be translated.&lt;br /&gt;

&lt;br /&gt;

At the end of the day, if you don't want the CurrentCulture.CultureInfo to be used, both functions can be easily overloaded as follows:&lt;br /&gt;

&lt;blockquote&gt;String.ToUpper(new CultureInfo("en"))&lt;br /&gt;

String.ToLower(new CultureInfo("en"))&lt;/blockquote&gt;&lt;br /&gt;

I spent a fair bit of time tracking down why existing code was working perfectly, when suddenly as the team implemented the 8th language, something suddenly started failing.  Thank goodness for unit testing to quickly point out that there was a problem - then it was just a matter of understanding it!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/fvD0GskKUEI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/tolower-toupper-and-the-currentculture-cultureinfo/</feedburner:origLink></item>
      <item>
      <title>Officially published my CakePHP Book</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/GmnOwPXwuZo/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 19 May 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/officially-published-my-cakephp-book/</guid>
      <description>Finally!  It has been a long time in the making, but my book is finally finished and published!  About two years ago, I began the undertaking of writing a book.  At the time it was merely a hobby while I was working on my blog.  Seeing if I could turn the success of my blog articles into a book.&lt;br /&gt;

&lt;br /&gt;

As you may recall a few months ago, I released an e-book.  This e-book was basically my original works written for CakePHP 1.2.  I saw some success with the e-book, so that made me believe that I should seek publishing on my book.  Unfortunately, there isn't much hope for mainstream success with a big publisher like O'Reilly because &lt;a href="http://www.amazon.com/Rapid-Application-Development-CakePHP-1/dp/1460954394" target="_blank"&gt;CakePHP&lt;/a&gt; is too small of a niche for them to focus on.&lt;br /&gt;

&lt;br /&gt;

During this time, I focused on upgrading the book to be relevant to &lt;a href="http://www.amazon.com/Rapid-Application-Development-CakePHP-1/dp/1460954394" target="_blank"&gt;CakePHP 1.3&lt;/a&gt;.  I even added a special bonus chapter about upgrading from CakePHP 1.2 to 1.3, which I must say was extremely painless; especially if you stick with the standards.&lt;br /&gt;

&lt;br /&gt;

Anyways, I hope you take the opportunity to view my &lt;a href="http://www.amazon.com/Rapid-Application-Development-CakePHP-1/dp/1460954394" target="_blank"&gt;CakePHP book&lt;/a&gt;.&lt;br /&gt;

&lt;br /&gt;

Enjoy!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/GmnOwPXwuZo" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/officially-published-my-cakephp-book/</feedburner:origLink></item>
      <item>
      <title>CakePHP 1.2 VS 1.3 VS 2.0 Page Request Times</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/wS4IcY-JnG0/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 07 Mar 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/cakephp-1-2-vs-1-3-vs-2-0-page-request-times/</guid>
      <description>When I first started using CakePHP a few years ago, we had a lot of complaints about speed.  If you do some Google searches comparing CakePHP to other frameworks, it seems to be near the bottom of the pack.  I previously wrote a few articles on optimizing CakePHP here:&lt;br /&gt;

&lt;ul&gt;&lt;br /&gt;

	&lt;li&gt;&lt;a href="http://www.endyourif.com/optimizing-cakephp-websites/"&gt;Optimizing CakePHP Websites&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;&lt;a href="http://www.endyourif.com/caching-queries-in-cakephp/"&gt;Caching Queries in CakePHP&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;&lt;a href="http://www.endyourif.com/optimize-your-css-and-js-with-cakephp-in-minutes/"&gt;Optimize your CSS and JS with CakePHP in minutes&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;

&lt;/ul&gt;&lt;br /&gt;

Implementing the following tips certainly helped; however, if there are issues with the core framework response time, no amount of optimization will truley help.  So after reading up on CakePHP 2.0 and it's recent speed improvements, I wanted to do some straight CakePHP comparisons.  Below are 10 load times for CakePHP 1.2, 1.3, and the new 2.0.  These load times are of a brand new install simply loading the default home view, no database connection or any model loading.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/wS4IcY-JnG0" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/cakephp-1-2-vs-1-3-vs-2-0-page-request-times/</feedburner:origLink></item>
      <item>
      <title>AJAX Star Rating Plugin For CakePHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/k-TNyyD0MTc/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 02 Mar 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/ajax-star-rating-plugin-for-cakephp/</guid>
      <description>First off, I didn't write this plugin, I was browsing CakePHP's plugin bakery and it came from there:&lt;br /&gt;

&lt;a href="http://bakery.cakephp.org/articles/schneimi/2010/08/19/ajax-star-rating-plugin-1" target="_blank"&gt;http://bakery.cakephp.org/articles/schneimi/2010/08/19/ajax-star-rating-plugin-1&lt;/a&gt;&lt;br /&gt;

&lt;br /&gt;

This is an excellent plugin and very easy-to-use.  The above article is extremely detailed and provides excellent step-by-step instructions to set it up and get it running.&lt;br /&gt;

&lt;br /&gt;

In reviewing the comments, like any self-made plugins there were a few issues encountered and ironed out along the way, so if you run into any issues be sure to search the comments.&lt;br /&gt;

Enjoy this excellent Star Rating Plugin for your next or current CakePHP site!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/k-TNyyD0MTc" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/ajax-star-rating-plugin-for-cakephp/</feedburner:origLink></item>
      <item>
      <title>CakePHP 2-0 Ajax Pagination WITHOUT The Pages</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/iR3ES8qqunU/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 28 Feb 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/cakephp-2-0-ajax-pagination-without-the-pages/</guid>
      <description>As I promised in &lt;a href="http://www.endyourif.com/creating-ajax-pagination-without-the-pages/"&gt;this article&lt;/a&gt;, I have created a full CakePHP example of performing AJAX pagination without the pages.  The goal of this article is to display news articles to a user.  As the user scrolls down, we will dynamically load in additional content so they can continue to scroll and read.&lt;br /&gt;

&lt;br /&gt;

One of our challenges is to not load too much or too little content.  For more details on this, please review the &lt;a href="http://www.endyourif.com/creating-ajax-pagination-without-the-pages/"&gt;theory article&lt;/a&gt;.  Let's begin.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/iR3ES8qqunU" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/cakephp-2-0-ajax-pagination-without-the-pages/</feedburner:origLink></item>
      <item>
      <title>CakePHP CSS Enhancements From 1.2 To 1.3</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/0v-pmOIvc5s/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 23 Feb 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/cakephp-css-enhancements-from-1-2-to-1-3/</guid>
      <description>This article does seem a bit late since CakePHP 2.0 is on it's way.  However, I felt it prudent to point out a few things that I'm really happy to see in the new default CSS provided by CakePHP.&lt;br /&gt;

&lt;br /&gt;

On CakePHP's website, you will find an excellent migration guide from 1.2 to 1.3 here:&lt;br /&gt;

&lt;a href="http://book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3"&gt;http://book.cakephp.org/view/1561/Migrating-from-CakePHP-1-2-to-1-3&lt;/a&gt;&lt;br /&gt;

&lt;br /&gt;

It describes in great detail the various changes throughout the entire application and there are a lot of them.  But I think it left out some of the most important stuff, the default CSS provided for people who use the bakery to create their websites!&lt;br /&gt;

&lt;br /&gt;

One of the things that irked me in 1.2 was I had to manually update the paginator helper to display what field is currently being sorted on.  Many times I had to ensure my peers were also doing the same thing and a lot of time was wasted checking this and ensuring it was done correctly.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/0v-pmOIvc5s" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/cakephp-css-enhancements-from-1-2-to-1-3/</feedburner:origLink></item>
      <item>
      <title>Creating AJAX Pagination WITHOUT The Pages</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/JntUVW6kAlY/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 21 Feb 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/creating-ajax-pagination-without-the-pages/</guid>
      <description>You may have noticed some changes in the way a few websites work.  For example, if you go to Google Images and do a search, there is no pagination (1, 2, 3, Next, Previous) anymore.  Instead Google loads the images as you need them, e.g. when you scroll down.&lt;br /&gt;

&lt;br /&gt;

Another example is Facebook's newsfeed.  I read an excellent article a few months back on their developer blog about this design decision.  By default, Facebook will only load a "full screen" of information with minimal scrolling.  However, as soon as you start scrolling they begin to fetch and display more content.  In the article, Facebook described this decision as a bandwidth saver.  They found that a lot of people would navigate away from the newsfeed before ever scrolling down or only looking at the top content.  By only showing 10-15 posts, they can keep the size of their newsfeed down oppose to loading 30+ posts that are never going to be read!  File size can easily go down 100s of KBs per page view and when you're talking about millions of page views per second, that's a significant number.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/JntUVW6kAlY" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/creating-ajax-pagination-without-the-pages/</feedburner:origLink></item>
      <item>
      <title>IBM's Watson on Jeopardy, The Final Saga</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/xXfihzOKVQY/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 17 Feb 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/ibms-watson-on-jeopardy-the-final-saga/</guid>
      <description>In yesterday's article I focused mainly on Watson.  So, in case you missed the episode last night, BIG SPOILER ALERT, Watson won.  Ken was actually pretty close after Double Jeopardy; in fact he was leading after the Jeopardy round.  If Ken would have bet bigger in Final Jeopardy it wouldn't have been a gigantic blow out...&lt;br /&gt;

&lt;br /&gt;

Now, in today's article I wanted to focus specifically on how incredible Google's search technology is.  Below are the 5 categories from the Jeopardy round and a sample of questions from each category.  Beneath the question is the answer and whether Watson was wrong.  Beneath the answer is the result of a Google search and how easily and where the answer could be found.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/xXfihzOKVQY" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/ibms-watson-on-jeopardy-the-final-saga/</feedburner:origLink></item>
      <item>
      <title>IBM's Watson On Jeopardy!</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/8aC3WGA9HHM/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 16 Feb 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/ibms-watson-on-jeopardy/</guid>
      <description>I've been a fan of &lt;a href="http://jeopardy.com"&gt;Jeopardy!&lt;/a&gt; for quite some time now.  Even more so over the past year.  Now that I am the Father of twins, going out at night just isn't as easy as it was!  When I first heard about &lt;a href="http://www.watson.ibm.com/"&gt;Watson being on Jeopardy&lt;/a&gt;, probably about 3 or 4 months ago, I was extremely excited.  Actually watching it over the past two nights has been just as thrilling.&lt;br /&gt;

&lt;br /&gt;

Learning about the technology behind it, being a geek and trying to think and understand some of the algorithms used, watching it think and tell you it's best guess and a little bit about the process to find it has been nothing but entertaining.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/8aC3WGA9HHM" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/ibms-watson-on-jeopardy/</feedburner:origLink></item>
      <item>
      <title>Building A Scalable Queueing System With PHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/UePPiIpioXM/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 14 Feb 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/building-a-scalable-queueing-system-with-php/</guid>
      <description>In today's article we are going to cover building a queueing system with PHP.  Before we begin, let's define what a queueing system is.  The best place to start is the dictionary:&lt;br /&gt;

&lt;br /&gt;

"to line up or wait in a queue"&lt;br /&gt;

&lt;br /&gt;

Now that we have our definition, let's define why we would want to build a queueing system.  A queueing system is an excellent tool that will allow us to take a specific process and perform the functionality "offline", e.g. the process will line up and we will process them one at a time at a later date.  This will probably be easier to explain with an example.&lt;br /&gt;

&lt;br /&gt;

Imagine an admin area of a website that allows the administrator to send out a mass email to all of their users.  The simple process to building this functionality would be as follows:&lt;br /&gt;

&lt;br /&gt;

1. Build a form that accepts a subject and a body for the email.&lt;br /&gt;

2. Retrieve the list of users from your database.&lt;br /&gt;

3. Loop through the users and send each person an individual email.&lt;br /&gt;

&lt;br /&gt;

The above example works nice and fast when there are only a few hundred users.  However, imagine trying to send this email to 10,000 users.  The administrator would be waiting a long time for this process to finish.  Not only that, if they closed the browser, it probably would not finish properly.&lt;br /&gt;

&lt;br /&gt;

So, the goal of our queueing system is to remove a specific process from running "online" (in a web browser) and running it "offline" with a scheduled task.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/UePPiIpioXM" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/building-a-scalable-queueing-system-with-php/</feedburner:origLink></item>
      <item>
      <title>Publishing an e-book on Smashwords</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/IfTTQ6LyJNo/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 07 Feb 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/publishing-an-e-book-on-smashwords/</guid>
      <description>I feel a little bit behind in the times on this one, but I'll work to catch up quickly.  Over the past year or so I've been compiling samples and I put together a book for developing CakePHP websites.  I saught publishing on the book, but unfortunately all of the big name publishers felt that CakePHP is too small of a market.&lt;br /&gt;

&lt;br /&gt;

After being rejected, I wasn't too sure what to do with the book.  So, I left it for a while.  Then, earlier this week through some Google searching I stumbled upon the idea of an e-book.  Previously I've associated e-books with "Get rich quick schemes" as you see a lot of websites selling e-books along those lines.&lt;br /&gt;

&lt;br /&gt;

I started investigating this option a bit more and I found some videos about creating e-books with Adobe Indesign and formatting them for the various readers.  This quickly started sounding like a lot of work!  Instead I searched for other solutions.  That's when I found it: &lt;a href="http://www.smashwords.com/?ref=endyourif" target="_blank"&gt;Smashwords&lt;/a&gt;.  This is an incredible service.  You upload your Word Document and they automatically convert it for the over 10 e-book options out there!  Not only that, they will sell it and promote it on your behalf.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/IfTTQ6LyJNo" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/publishing-an-e-book-on-smashwords/</feedburner:origLink></item>
      <item>
      <title>Interesting CakePHP Bakery Components</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/M2koOW2re58/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 03 Feb 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/interesting-cakephp-bakery-components/</guid>
      <description>I enjoy researching what other people are doing in the CakePHP world and I came across several interesting components at CakePHP's bakery website:&lt;br /&gt;

&lt;h2&gt;Wizard Component&lt;/h2&gt;&lt;br /&gt;

&lt;a href="http://bakery.cakephp.org/articles/jaredhoyt/2010/09/10/wizard-component-1-2-1"&gt;http://bakery.cakephp.org/articles/jaredhoyt/2010/09/10/wizard-component-1-2-1&lt;/a&gt;&lt;br /&gt;

&lt;br /&gt;

This component looks pretty neat and easy-to-use.  You import the component and set a list of steps that the wizard will traverse through.  You then create views for those steps with forms that submit to themselves.  The wizard will then process the form and proceed to the next step for you persisting the data along the way.&lt;br /&gt;

&lt;h2&gt;Breadcrumbs Component&lt;/h2&gt;&lt;br /&gt;

&lt;a href="http://bakery.cakephp.org/articles/rees/2010/08/14/breadcrumbs"&gt;http://bakery.cakephp.org/articles/rees/2010/08/14/breadcrumbs&lt;/a&gt;&lt;br /&gt;

&lt;br /&gt;

This is a component and helper all-in-one.  Inside your controllers, you define the breadcrumbs in each function and you alter your app controller to automatically render the breadcrumbs on each page for you making it a pain-less process to add breadcrumbs to your site!&lt;br /&gt;

&lt;h2&gt;SMS Text Message Component&lt;/h2&gt;&lt;br /&gt;

&lt;a href="http://bakery.cakephp.org/articles/donald_jackson/2010/08/14/component-to-send-sms-text-messages"&gt;http://bakery.cakephp.org/articles/donald_jackson/2010/08/14/component-to-send-sms-text-messages&lt;/a&gt;&lt;br /&gt;

&lt;br /&gt;

This is a component that is written specifically for Panaceamoblie that is a helpful service to allow your website to send SMS services.  It works very similar to the EmailComponent.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/M2koOW2re58" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/interesting-cakephp-bakery-components/</feedburner:origLink></item>
      <item>
      <title>CakePHP 2.0 Rant Retraction</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/8vvh4AIjzi0/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 01 Feb 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/cakephp-2-0-rant-retraction/</guid>
      <description>&lt;a href="http://www.endyourif.com/cakephp-2-0-rant/"&gt;In yesterday's article&lt;/a&gt;, it appears I may have misunderstood something regarding lazy loading.  I incorrectly read it as "loading the data" on-demand oppose to loading the object on-demand.  This actually looks like a great feature, especially after reading this: &lt;a href="http://bakery.cakephp.org/articles/Frank/2010/08/10/optimizing-model-loading-with-lazymodel"&gt;http://bakery.cakephp.org/articles/Frank/2010/08/10/optimizing-model-loading-with-lazymodel&lt;/a&gt;&lt;br /&gt;

&lt;br /&gt;

It appears associated models would automatically be loaded simply because they are related to the model you are querying, even if you are not retrieving data from it.&lt;br /&gt;

&lt;br /&gt;

Thanks for the clarification on lazy loading Jose and I'm actually quite excited to see this change after further research into the situation.  Check out these benchmarks from the above mentioned article:&lt;br /&gt;

&lt;h3&gt;Before lazy loading&lt;/h3&gt;&lt;br /&gt;

Total Requests made: 100&lt;br /&gt;

Total Time elapsed: 6.8480186462402 (seconds)&lt;br /&gt;

Requests/Second: 14.603 req/sec&lt;br /&gt;

Average request time: 0.068 seconds&lt;br /&gt;

Standard deviation of average request time: 0.002&lt;br /&gt;

Longest/shortest request: 0.078 sec/0.066 sec&lt;br /&gt;

Memory usage: 9.75MB&lt;br /&gt;

&lt;h3&gt;Post lazy loading&lt;/h3&gt;&lt;br /&gt;

Total Requests made: 100&lt;br /&gt;

Total Time elapsed: 4.8957378864288 (seconds)&lt;br /&gt;

Requests/Second: 20.426 req/sec&lt;br /&gt;

Average request time: 0.049 seconds&lt;br /&gt;

Standard deviation of average request time: 0.001&lt;br /&gt;

Longest/shortest request: 0.056 sec/0.048 sec&lt;br /&gt;

Memory usage: 7.25MB&lt;br /&gt;

&lt;br /&gt;

Almost 6 full requests more per second!  Just in the 100 requests made there is over 2 seconds being gained!  Excellent work community!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/8vvh4AIjzi0" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/cakephp-2-0-rant-retraction/</feedburner:origLink></item>
      <item>
      <title>CakePHP 2.0 Rant</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/2kT7vVQbGg8/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 31 Jan 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/cakephp-2-0-rant/</guid>
      <description>I was recently visiting the CakePHP bakery and decided to read a little bit about CakePHP 2.0-dev.  I've rather enjoyed CakePHP as a framework since version 1.1 all the way through to version 1.3.  However, after reading some of the "features" for version 2, I have to say, I'm a little disappointed about their focus.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/2kT7vVQbGg8" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/cakephp-2-0-rant/</feedburner:origLink></item>
      <item>
      <title>Random Funny Technology Videos</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/SZg5_vVfDFM/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 27 Jan 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/random-funny-technology-videos/</guid>
      <description>&lt;div id="_mcePaste"&gt;I was surfing the Interweb recently and came across some cool/funny videos that I thought I would share:&lt;/div&gt;&lt;br /&gt;

&lt;h2&gt;Amazing iPod Trick&lt;/h2&gt;&lt;br /&gt;

&lt;div id="_mcePaste"&gt;&lt;a title="http://www.break.com/index/amazing-ipod-trick-1984104" href="http://www.break.com/index/amazing-ipod-trick-1984104"&gt;http://www.break.com/index/amazing-ipod-trick-1984104&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div id="_mcePaste"&gt;This video turns a black iPod into a white iPod.  I'm not sure if I would personally want to try this, but it sure looks cool afterwords.&lt;/div&gt;&lt;br /&gt;

&lt;div id="_mcePaste"&gt;&lt;/div&gt;&lt;br /&gt;

&lt;h2&gt;Roombas Hack to Play Pac-Man&lt;/h2&gt;&lt;br /&gt;

&lt;div id="_mcePaste"&gt;&lt;a title="http://www.ohgizmo.com/2011/01/11/roombas-playing-pac-man/" href="http://www.ohgizmo.com/2011/01/11/roombas-playing-pac-man/"&gt;http://www.ohgizmo.com/2011/01/11/roombas-playing-pac-man/&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div id="_mcePaste"&gt;Excellent use of a vacuum and great way to promote it's cleaning skills by "finding" dirt.&lt;/div&gt;&lt;br /&gt;

&lt;div id="_mcePaste"&gt;&lt;/div&gt;&lt;br /&gt;

&lt;h2&gt;Image Translating iPhone App&lt;/h2&gt;&lt;br /&gt;

&lt;div id="_mcePaste"&gt;&lt;a title="http://www.techi.com/2010/12/image-translating-iphone-app/" href="http://www.techi.com/2010/12/image-translating-iphone-app/"&gt;http://www.techi.com/2010/12/image-translating-iphone-app/&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div id="_mcePaste"&gt;This is one of the coolest apps ever.  Show a road sign or some picture with words and watch it translate the text in the image for you right on your iPhone!&lt;/div&gt;&lt;br /&gt;

&lt;div id="_mcePaste"&gt;&lt;/div&gt;&lt;br /&gt;

&lt;h2&gt;Facebok Profile Picture Hack Tutorial&lt;/h2&gt;&lt;br /&gt;

&lt;div id="_mcePaste"&gt;&lt;a title="http://www.youtube.com/watch?v=vhvJqGgzmoQ" href="http://www.youtube.com/watch?v=vhvJqGgzmoQ"&gt;http://www.youtube.com/watch?v=vhvJqGgzmoQ&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;

&lt;div id="_mcePaste"&gt;The new profile displays pictures from your last album on the top of your profile, watch this video to make it a sequence of photos splitting your features across multiple images.&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/SZg5_vVfDFM" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/random-funny-technology-videos/</feedburner:origLink></item>
      <item>
      <title>Using the TextHelper with CakePHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/lOB4azfE9-Q/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 24 Jan 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/using-the-texthelper-with-cakephp/</guid>
      <description>Really, the TextHelper?  Yes, this is probably one of the most overlooked helpers in CakePHP.  Sure we all know about the HTML Helper, Form Helper, JS Helper, etc... but how many of us use the Text Helper?  I've seen so many custom functions for truncating text and adding an ellipsis (...) to the end of it.  How about replacing email addresses with links?  Etc...  No more I say!  Let's begin explorining the Text Helper now.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/lOB4azfE9-Q" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/using-the-texthelper-with-cakephp/</feedburner:origLink></item>
      <item>
      <title>Maintaining a session in a session-less environment</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/NnRLerV5qr4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 17 Jan 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/maintaining-a-session-in-a-session-less-environment/</guid>
      <description>Confused?  I know I was at first, but let me explain.  First, why would there be a session-less environment?  I thought this was a HUGE plus to server-side development languages over basic HTML that is session-less?  Well, you would be right in that sense; however, as I mentioned in a recent blog that I've switched careers and I am currently doing server-side game development for large Facebook Virtual Worlds.  The client/server relationship in these games are completely session-less.  Each time the client performs an action, the server doesn't "know" who they are because it's not a consistent relationship like a browser and a web server.&lt;br /&gt;

&lt;br /&gt;

Don't worry, there is a simple solution to this problem, let's explore it now.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/NnRLerV5qr4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/maintaining-a-session-in-a-session-less-environment/</feedburner:origLink></item>
      <item>
      <title>Speeding up client/server response times</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/IfwooCCzg1Y/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 10 Jan 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/speeding-up-clientserver-response-times/</guid>
      <description>In the past 6 months I've switched jobs from being a web developer to being a server side game developer.  So far it's been an excellent career shift.  I get to focus on my true passions, intelligent back-end code and no longer having to waste my time with frustrating design challenges (there is a separate team that does that).&lt;br /&gt;

&lt;br /&gt;

Having said that, when developing large Facebook virtual worlds, there are a lot of client/server communication.  For example, each time someone buys something, each time you buy something, etc...  Currently, a lot of games wait for the server to respond, but why should we?  There are a lot of server calls that are done for informational purposes; just to keep the database up-to-date.  So I ask you, why should the end user wait for the server to catch up?  Let's examine a simple approach to alleviate the need for the client to wait.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/IfwooCCzg1Y" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/speeding-up-clientserver-response-times/</feedburner:origLink></item>
      <item>
      <title>Modifying the CakePHP Bakery Templates</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/w9rBOIyMKRk/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 03 Jan 11 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/modifying-the-cakephp-bakery-templates/</guid>
      <description>One of the keys to a successful website is a good user flow.  What defines a good user flow?  At the very core, it requires simple navigation, being able to find what you're looking for, and being able to do it quickly.  CakePHP's bakery let's you quickly create websites that list, add, edit, and delete data.  All you need to do is create a database table and run a few simple bakery commands and this will be done for you.&lt;br /&gt;

&lt;br /&gt;

The basic templates provided are pretty good.  They include links to do all of the above as well as pagination and sortable headers on the table listing page.  I find them a little bland and very "techie".  Most customers don't like this, so let's alter them to suit are needs.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/w9rBOIyMKRk" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/modifying-the-cakephp-bakery-templates/</feedburner:origLink></item>
      <item>
      <title>Maintaining the back button with AJAX</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/6Qakn9A6zAE/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 28 Dec 10 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/maintaining-the-back-button-with-ajax/</guid>
      <description>&lt;a href="http://www.endyourif.com/ajax-can-there-be-too-much/"&gt;Last week&lt;/a&gt; I blogged about whether or not you can use too much AJAX on your website.  The short answer was no; with one caveat being that you must not lose the user interaction experience.  In this scenario I'm referring to the back button.  If the user has "felt" like the content changed, they are likely to click the back button to return.  If they do this, it's important for them to "go back" to where they "think" they were and not the last page that was loaded without AJAX!  I've put together a quick example of how to do this.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/6Qakn9A6zAE" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/maintaining-the-back-button-with-ajax/</feedburner:origLink></item>
      <item>
      <title>AJAX, can there be too much?</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/abJRaQbhPg8/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 22 Dec 10 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/ajax-can-there-be-too-much/</guid>
      <description>Like any problem, there is no one right solution.  There are always many different solutions that work for different reasons.  Some solutions require the best solution; some solutions require the more optimized solution; other solutions just need to "get done".&lt;br /&gt;

&lt;br /&gt;

As a developer, I like AJAX.  It's easy to develop and it makes for a really good user flow.  No more loading new pages to add comments or view the description of a product.  It can all be done with a smooth interface and less waiting.&lt;br /&gt;

&lt;br /&gt;

But, can you have too much AJAX?&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/abJRaQbhPg8" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/ajax-can-there-be-too-much/</feedburner:origLink></item>
      <item>
      <title>Making Money With Flash Games</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/C_ib4D-2j48/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sun, 27 Jun 10 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/making-money-with-flash-games/</guid>
      <description>There are a few different ways to make money with Flash games.  In today's article I will discuss the simplest way.  It requires no development and no Flash skills.  It does require a bit of investment (not a lot though) and some search engine optimization (SEO) skills.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/C_ib4D-2j48" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/making-money-with-flash-games/</feedburner:origLink></item>
      <item>
      <title>iPhone Apps Randomly Crashing?</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/AI9ldNKIMuQ/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 04 Feb 10 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/iphone-apps-randomly-crashing/</guid>
      <description>Today at work I was advancing one of our iPhone applications.  It's a pretty basic application, has a menu which displays some data from the web via XML; all of that fun stuff.&lt;br /&gt;

&lt;br /&gt;

On occasion, I would try to push a view controller and the application would randomly crash, e.g.:&lt;br /&gt;

&lt;br /&gt;

&lt;pre&gt;&lt;code&gt;

-(void) showMainMenu {

[mainNavigationController pushViewController:mainMenuViewController animated:YES];

}

&lt;/code&gt;&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/AI9ldNKIMuQ" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/iphone-apps-randomly-crashing/</feedburner:origLink></item>
      <item>
      <title>Optimizing CakePHP Websites</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/9Iu0BYuYHKo/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 20 Jan 10 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/optimizing-cakephp-websites/</guid>
      <description>&lt;p class="MsoNormal"&gt;CakePHP offers a lot of functionality to us as developers. The ability to develop websites rapidly provides a trade-off in how quickly the website will load. As we expand our skills, we will learn the techniques that will slow down/speed up performance.&lt;/p&gt;&lt;br /&gt;

&lt;br /&gt;

&lt;h3&gt;Objectives&lt;/h3&gt;&lt;br /&gt;

&lt;ul type="disc"&gt;&lt;br /&gt;

	&lt;li class="MsoNormal"&gt;Apply techniques to speed up CakePHP’s load time&lt;/li&gt;&lt;br /&gt;

	&lt;li class="MsoNormal"&gt;Optimize our queries&lt;/li&gt;&lt;br /&gt;

	&lt;li class="MsoNormal"&gt;Cache query results&lt;/li&gt;&lt;br /&gt;

&lt;/ul&gt;&lt;br /&gt;

&lt;p class="MsoNormal"&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/9Iu0BYuYHKo" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/optimizing-cakephp-websites/</feedburner:origLink></item>
      <item>
      <title>Adding SEO functionality</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/KHlh01voWD0/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sun, 15 Nov 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/adding-seo-functionality/</guid>
      <description>&lt;h2&gt;&lt;span style="font-weight: normal; font-size: 13px;"&gt;Two of the biggest things that will improve your search engine rankings are keyword rich website titles and keyword rich links to your content.&lt;span&gt; &lt;/span&gt;Today’s lessons will cover both of these topics.&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;

&lt;h3&gt;Objectives&lt;/h3&gt;&lt;br /&gt;

&lt;ul type="disc"&gt;&lt;br /&gt;

	&lt;li class="MsoNormal"&gt;Improve      our search engine rankings&lt;/li&gt;&lt;br /&gt;

	&lt;li class="MsoNormal"&gt;Set a      title tag&lt;/li&gt;&lt;br /&gt;

	&lt;li class="MsoNormal"&gt;Map a      specific URL to a custom controller and action&lt;/li&gt;&lt;br /&gt;

	&lt;li class="MsoNormal"&gt;Avoid      using ids or numbers in our URL&lt;/li&gt;&lt;br /&gt;

&lt;/ul&gt;&lt;br /&gt;

&lt;p class="MsoNormal"&gt;Before I start, I would like to make it clear that this article is and does not intend to be a be-all-to-end-all of the SEO necessities for your website.&lt;span&gt; &lt;/span&gt;It is meant to describe some excellent techniques to quickly and easily improve upon CakePHP to make it more SEO friendly.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/KHlh01voWD0" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/adding-seo-functionality/</feedburner:origLink></item>
      <item>
      <title>Developer High Fives (in honor of Barney Stinson)</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/jH1-FGdkLAA/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 22 Sep 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/developer-high-fives-in-honor-of-barney-stinson/</guid>
      <description>Last night was the premiere of my current favorite TV show "How I Met Your Mother".  If you are not familiar with the show, former childhood star Neil Patrick Harris (Doogie Howser), plays a character named Barney Stinson.  Barney is known for several catch-phrases as well as special high fives.&lt;br /&gt;

&lt;br /&gt;

Borrowing some of the more popular high fives, I have created a top five high fives for developers.&lt;br /&gt;

&lt;br /&gt;

Without further adieu, let's begin the countdown.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/jH1-FGdkLAA" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/developer-high-fives-in-honor-of-barney-stinson/</feedburner:origLink></item>
      <item>
      <title>margin: 0 auto; not centering in Internet Explorer?</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/ZccwqYa8cqo/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 18 Sep 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/margin-0-auto-not-centering-in-internet-explorer/</guid>
      <description>The other day, I had chopped up a design.  Sliced and diced if you will.  I proceeded to creating the HTML once all of the images were sliced up.&lt;br /&gt;

&lt;br /&gt;

Things were going great.  As per usual I began designing in Mozilla to use Firebug to tweak the CSS and HTML.  Once I finished the design, I proceeded to test in Chrome, Safari, and of course, Internet Explorer.&lt;br /&gt;

&lt;br /&gt;

Every browser but Internet Explorer was working perfectly, what gives?&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/ZccwqYa8cqo" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/margin-0-auto-not-centering-in-internet-explorer/</feedburner:origLink></item>
      <item>
      <title>unbindModel and $this-&gt;paginate()</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/LrarcCnBEo0/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 20 Aug 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/unbindmodel-and-this-paginate/</guid>
      <description>Ugggh what a disaster today was!  On a client's site, we have an older version of CakePHP, pre containable functionality.  Because of this, we have to use unbindModel and bindModel to accomplish the same functionality.&lt;br /&gt;

&lt;br /&gt;

Over the past while, it has not been such a big deal.  However, for some other unknown reason, a search feature wasn't returning back the appropriate associative data.  This had been working for quite some time, then suddenly stopped.  As I mentioned, I'm not exactly sure when and why it stopped working, but it did.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/LrarcCnBEo0" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/unbindmodel-and-this-paginate/</feedburner:origLink></item>
      <item>
      <title>Someone at work tick you off?</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/7XUxu-4T_ro/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 28 Jul 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/someone-at-work-tick-you-off/</guid>
      <description>I don't know about you, but there are many times during a work week where someone ticks me off.  It could be something small or something major.&lt;br /&gt;

&lt;br /&gt;

I've always wondered what I could do about this, so I finally did something.&lt;br /&gt;

&lt;br /&gt;

I created a Facebook application called &lt;a href="http://www.facebook.com/home.php#/apps/application.php?id=93877994371"&gt;Head Slap&lt;/a&gt;!  It let's you type in your friend's name on Facebook and give them a slap on the head.  Enter a personalized message letting them know why they deserve it!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/7XUxu-4T_ro" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/someone-at-work-tick-you-off/</feedburner:origLink></item>
      <item>
      <title>Twitter, are you taking advantage yet?</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/Wd7XIeX4CKU/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 29 Jun 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/twitter-are-you-taking-advantage-yet/</guid>
      <description>I’m sure you are well aware of Twitter by now.  If you are not, perhaps you should crawl out of the hole in the crowd and begin checking out the latest fad on the Internet!  People are absolutely obsessed with Twitter right now.  There are a million sites out there on how to make money on Twitter, how to find followers on Twitter, etc…&lt;br /&gt;

&lt;br /&gt;

Over the past two months I have been receiving some traffic from Twitter.  Nothing major, just a few visits a day here and there, so it never really caught my attention.  At work, my boss wants to jump on the band wagon with Twitter and check it out and see what we can do.  Being a web development firm it’s important to be able to develop in the various API’s for the hot trends, e.g. iPhone, Blackberry, Facebook, Twitter, etc…&lt;br /&gt;

&lt;br /&gt;

So, I began looking into it a bit more.  I signed up for my blog; you can follow me here if you like: &lt;a href="http://twitter.com/endyourif"&gt;http://twitter.com/endyourif&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/Wd7XIeX4CKU" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/twitter-are-you-taking-advantage-yet/</feedburner:origLink></item>
      <item>
      <title>How to write for people and rank high with your keywords</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/e_dGnFcuOqk/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 22 Jun 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/how-to-write-for-people-and-rank-high-with-your-keywords/</guid>
      <description>Using the right keywords are important, but don’t let this drive your content.  It’s important to remember what your first goal should be and not your second.  Your first goal is write and provide useful content to people who do find your content.  Your second goal is for search engines to rank it well.&lt;br /&gt;

&lt;br /&gt;

So, how can this be done?  Start by thinking about what your keywords are for your content.  Once you have your keywords decided, create a title for your content and integrate your keywords into them.  Make sure your title is intuitive, keyword rich, and catches people’s eye.  This can be done through good keywords, a secret, and/or a descriptive title describing exactly what the user wants.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/e_dGnFcuOqk" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/how-to-write-for-people-and-rank-high-with-your-keywords/</feedburner:origLink></item>
      <item>
      <title>Follow me on Twitter</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/KWPs1KGwj0g/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 19 Jun 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/follow-me-on-twitter/</guid>
      <description>I'm sure it's been a long time coming, but I've set myself up a Twitter account and you can follow my latest blogs on there.  Check it out here:&lt;br /&gt;

&lt;br /&gt;

&lt;a href="http://twitter.com/endyourif" target="_blank"&gt;http://twitter.com/endyourif&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/KWPs1KGwj0g" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/follow-me-on-twitter/</feedburner:origLink></item>
      <item>
      <title>The Shocking Truth to Website Success...and it’s not top Google Rankings!</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/_03vb60RNXk/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 15 Jun 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/the-shocking-truth-to-website-successand-its-not-top-google-rankings/</guid>
      <description>Do I believe in SEO?  Absolutely I do.  Do I believe in link popularity?  Absolutely I do.  Do I believe in targeted keywords?  Absolutely I do.  Do I think it’s the most important thing?  No, I don’t.  I am going to reveal to you the true method to a successful website on the Internet!&lt;br /&gt;

&lt;br /&gt;

Being well ranked in Google on specific keywords is good.  Incoming links, both reciprocal links and one-way links are great.  But it will only really pay dividends after you’ve focused on success, the true way.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/_03vb60RNXk" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/the-shocking-truth-to-website-successand-its-not-top-google-rankings/</feedburner:origLink></item>
      <item>
      <title>Facebook Development - Quick and Easy Dialogs</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/_bqXtQAwyzA/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 10 Jun 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/facebook-development-quick-and-easy-dialogs/</guid>
      <description>At my work, whenever we have a link to delete records, we always have a simple Javascript confirm dialog pop-up.  The confirm dialog just does the standard, “Are you sure you wish to delete this record?” with an OK and Cancel button.  If the user clicks cancel, the record is not deleted, if they click OK, the record will be deleted.&lt;br /&gt;

&lt;br /&gt;

If you’ve done some Facebook development, you will notice quickly that the alert() and confirm() functions do not work.  I’ve found this slightly annoying, so I’ve written a very simple Javascript function that let’s me use the nifty dialogs that Facebook provides us.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/_bqXtQAwyzA" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/facebook-development-quick-and-easy-dialogs/</feedburner:origLink></item>
      <item>
      <title>Sharing your way to success</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/FT5TWiSxL84/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sat, 06 Jun 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/sharing-your-way-to-success/</guid>
      <description>In today's article I am going to discuss something that *hopefully* was taught to you at a very young age.  For me, this dates back to my earliest memories of being a child.  In your life, how many times have you heard someone say, "You must share that with others."?  I'm pretty sure it's more than you can count!&lt;br /&gt;

&lt;br /&gt;

Well, what's old is new again.  Sharing is an excellent way to achieve better search engine rankings as well as additional traffic.  Right now, this is what I'm doing, I'm sharing my idea with you in hopes that you will visit my web site and enjoy the excellent content that I have on it.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/FT5TWiSxL84" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/sharing-your-way-to-success/</feedburner:origLink></item>
      <item>
      <title>Fastest Top Five FREE Ways to Gain New Traffic</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/eCNI8gilfgg/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 28 May 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/fastest-top-five-free-ways-to-gain-new-traffic/</guid>
      <description>Today's article is going to discuss my top 5 ways to gain new traffic, did I mention that they are all FREE! Because each are free, they all take a few minutes of work on a regular basis. After a short while, you should hopefully gain a following and not require doing them anymore.&lt;br /&gt;

&lt;br /&gt;

The top 5 reasons are:&lt;br /&gt;

&lt;ol&gt;&lt;br /&gt;

	&lt;li&gt;&lt;br /&gt;

&lt;div&gt;Submit your content to social network sites&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;&lt;br /&gt;

&lt;div&gt;Share your content with article directories&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;&lt;br /&gt;

&lt;div&gt;Create a Twitter following&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;&lt;br /&gt;

&lt;div&gt;Submit to Blog Carnivals&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;&lt;br /&gt;

&lt;div&gt;Comment on other &lt;em&gt;relevant&lt;/em&gt; blogs or forums&lt;/div&gt;&lt;/li&gt;&lt;br /&gt;

&lt;/ol&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/eCNI8gilfgg" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/fastest-top-five-free-ways-to-gain-new-traffic/</feedburner:origLink></item>
      <item>
      <title>Photobucket, Photos, and You</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/Cnl6jU8-sTI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sat, 23 May 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/photobucket-photos-and-you/</guid>
      <description>It seems like photo sharing and social network applications are the in thing right now. Let's take advantage of this. Today I will provide a simple class that will allow you to post photos to a user's Photobucket account in minutes.&lt;br /&gt;

&lt;br /&gt;

&lt;strong&gt;Step 1: Visit &lt;a href="http://photobucket.com/developer/register" target="_blank"&gt;http://photobucket.com/developer/register&lt;/a&gt; to register for an API key &lt;/strong&gt;&lt;br /&gt;

&lt;br /&gt;

Follow the steps to create a new application on Photobucket. When you have finished, Photobucket will send you an email with your API and Secret key. Keep this email for later use.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/Cnl6jU8-sTI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/photobucket-photos-and-you/</feedburner:origLink></item>
      <item>
      <title>Facebook, Photos, and You!</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/q6tdxemd1dI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 18 May 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/facebook-photos-and-you/</guid>
      <description>The Facebook Application API is quite extensive and allows you to get and set many different aspects of a user's Facebook information.&lt;br /&gt;

&lt;br /&gt;

Today, we are going to discuss using the Facebook API to create an album, if it doesn't already exist, and add a photo to that album.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/q6tdxemd1dI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/facebook-photos-and-you/</feedburner:origLink></item>
      <item>
      <title>Creating your first iGoogle Gadget</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/KpQ72PesSO8/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 12 May 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/creating-your-first-igoogle-gadget/</guid>
      <description>Recently at work, we've started diving into Google Gadgets.  They are quite fun and really extremely easy to build.  In this article, I'm going to get you started creating your very own Google Gadget.&lt;br /&gt;

&lt;br /&gt;

Sit back and reserve a few minutes of your time and you will be well on your way in no time!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/KpQ72PesSO8" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/creating-your-first-igoogle-gadget/</feedburner:origLink></item>
      <item>
      <title>Bebo Development Scares Me</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/_rh74sGmid4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 07 May 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/bebo-development-scares-me/</guid>
      <description>Today at work, we've begun looking into creating some Bebo applications.  I know it's a bit behind in the times, but we've been busy with Facebook, iPhone, and Google Gadgets.  It's now time to sink our teeth into Bebo.&lt;br /&gt;

&lt;br /&gt;

I spent about 30 minutes setting up Bebo and reviewing a simple three step process to setup external authentication and it didn't work!  Not only that, when I went to download the API I had to actually right-click and choose "Save As" because it just loaded the whole API as text in my browser.  Talk about a shotty setup.&lt;br /&gt;

&lt;br /&gt;

The API download problems aside, let me tell you more about my authentication problem.  The three step example I followed is from this URL here: &lt;a href="http://www.bebo.com/docs/auth"&gt;http://www.bebo.com/docs/auth&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/_rh74sGmid4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/bebo-development-scares-me/</feedburner:origLink></item>
      <item>
      <title>setTimeout() vs setInterval() in Javascript</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/Cx9YbEuUAKU/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 05 May 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/settimeout-vs-setinterval-in-javascript/</guid>
      <description>It feels like it has been a lifetime since my last blog!  I must apologize for the long delay, but between finding the time and finding a good topic to blog about, it's being difficult.&lt;br /&gt;

&lt;br /&gt;

In today's article, it's been a while since I've needed to use either the setTimeout or setInterval functions and it seems many people are not familiar with the setInterval function.&lt;br /&gt;

&lt;br /&gt;

Let's start by describing the two.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/Cx9YbEuUAKU" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/settimeout-vs-setinterval-in-javascript/</feedburner:origLink></item>
      <item>
      <title>Caching Queries in CakePHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/pfffYXF8v4A/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sat, 25 Apr 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/caching-queries-in-cakephp/</guid>
      <description>If you haven't noticed already, at times CakePHP can be a little slow loading!  The reason for this is quite simple.  Rapid Application Development.  To allow for RAD, sometimes we must give up something, in this scenario it's a bit of speed when loading.  Don't worry, CakePHP offers some excellent utilities to help with this.&lt;br /&gt;

&lt;br /&gt;

The one I will focus on today is caching our CakePHP query results.  The key to this is, we are caching the results, not the queries themselves.  If you know databases well, you may be thinking, "why do I want to cache queries, doesn't my database server do this already?"  The answer to the question is, yes it does.  However, CakePHP still needs to call the database query and parse your results.  What I'm proposing, will avoid both of those steps and allow you to just retrieve the results.&lt;br /&gt;

&lt;br /&gt;

This process not only avoids excess load on the database, it also reduces PHP's processing time that CakePHP has to do to provide you with such useful arrays.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/pfffYXF8v4A" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/caching-queries-in-cakephp/</feedburner:origLink></item>
      <item>
      <title>Understanding group bys</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/_CVy7E-wtQM/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sat, 18 Apr 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/understanding-group-bys/</guid>
      <description>Yesterday, at work, it occurred to me, not for the first time, that something that comes so easily to me, does not to others.  I had tasked someone with, what seemed a simple task, to retrieve a list of users who have reached minimum payout.&lt;br /&gt;

&lt;br /&gt;

The payouts were stored in a separate table from the users and users could have multiple payment records prior to reaching payout, thus we would need to use a SUM() on the amount.  Because we also required other data, we need to use a group by to properly sum the amounts a user has.&lt;br /&gt;

&lt;br /&gt;

The task was handed back to me several hours later to review, it was quite evident that the main concept was "grasped", but the understanding of group bys was not.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/_CVy7E-wtQM" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/understanding-group-bys/</feedburner:origLink></item>
      <item>
      <title>ActivityIndicator with a UIWebView</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/CaZMSRCaGVc/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 15 Apr 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/activityindicator-with-a-uiwebview/</guid>
      <description>Because you can never be sure how long it will take to retrieve content from a web page and have it displayed on the iPod/iPhone, it's quite nice to provide the user with an indication that the content is being retrieved.&lt;br /&gt;

&lt;br /&gt;

The following article provides a nice and easy way to start and stop and animation indicator when the content is being retrieved and has been loaded.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/CaZMSRCaGVc" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/activityindicator-with-a-uiwebview/</feedburner:origLink></item>
      <item>
      <title>Custom pagination query in CakePHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/mkGVwHBtBqM/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 13 Apr 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/custom-pagination-query-in-cakephp/</guid>
      <description>My pet peeve list seems to grow on a regular basis.  One of them is poorly optimized code.  Not only is the code I'm going to discuss poorly optimized, it's from the documentation of CakePHP!&lt;br /&gt;

&lt;br /&gt;

If you search for creating custom pagination in CakePHP, you will find quite a few results, potentially this one.  The one that I would assume the best would be the one from CakePHP itself, but it's not and let me show you why.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/mkGVwHBtBqM" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/custom-pagination-query-in-cakephp/</feedburner:origLink></item>
      <item>
      <title>3 Flaws to CakePHP's AuthComponent</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/d_IpnwMWlTs/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 10 Apr 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/3-flaws-to-cakephps-authcomponent/</guid>
      <description>Good Friday to all.  Over the past several weeks I have been working a lot with the AuthComponent in CakePHP and have learned a couple of lessons that I wanted to share with you all.&lt;br /&gt;

&lt;br /&gt;

The title calls them "flaws", but I suppose this isn't completely accurate, it depends how you look at it.  To me they are flaws because I assumed the AuthComponent worked one way, only to find out different.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/d_IpnwMWlTs" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/3-flaws-to-cakephps-authcomponent/</feedburner:origLink></item>
      <item>
      <title>The flaws of using isset()</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/ZJMy2RdiR_Q/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 08 Apr 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/the-flaws-of-using-isset/</guid>
      <description>I am starting to really dislike the PHP function &lt;a href="http://www.php.net/isset" target="_blank"&gt;isset()&lt;/a&gt;.  Today, I was working on a registration system in CakePHP and my password validation was not working.  If I left the password field blank and clicked submit, it would come back with other errors, but then the password would come back populated with a long string - a hashed version of an empty string!&lt;br /&gt;

&lt;br /&gt;

After some investigation, I discovered that the AuthComponent in CakePHP was doing an isset() check on the username and password fields.  If isset() returned true for both, it would hash the password.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/ZJMy2RdiR_Q" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/the-flaws-of-using-isset/</feedburner:origLink></item>
      <item>
      <title>Reset UINavigationController</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/Ebn3Yk4ntRs/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 06 Apr 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/reset-uinavigationcontroller/</guid>
      <description>The following is a neat little trick to reset your navigation controller when it is integrated with UITabBarController.&lt;br /&gt;

&lt;br /&gt;

The following code will pop the navigation controller up when the user clicks on your tab bar item.  I'll begin by showing a bit of code that needs to take place.  It's going to be a quick overview of this to focus on the main function to reset the navigation controller.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/Ebn3Yk4ntRs" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/reset-uinavigationcontroller/</feedburner:origLink></item>
      <item>
      <title>Scroll a UIWebView</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/_0Gj6RbOY-E/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sat, 04 Apr 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/scroll-a-uiwebview/</guid>
      <description>I struggled with this one for quite a while.  I kept searching and searching, all I could find was forums and no one seemed to have an answer!&lt;br /&gt;

&lt;br /&gt;

Well, if you're here, don't worry, I have the answer you have been looking.  Let me show you how to make a UIWebView scrollable for your iPhone application.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/_0Gj6RbOY-E" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/scroll-a-uiwebview/</feedburner:origLink></item>
      <item>
      <title>Transparent UIWebView</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/NeP4O-dKcN4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 02 Apr 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/transparent-uiwebview/</guid>
      <description>The other day I was working on my iPhone application.  In the application I have a view.  This view creates a UIWebView.  I then proceed to load content from a webpage into the web view.&lt;br /&gt;

&lt;br /&gt;

This works great.  I was then tasked with adding a bit of style to the view.&lt;br /&gt;

&lt;br /&gt;

I started by creating all of the style in the webpage, but I quickly realized that this was causing the load to be a lot slower.  Instead I had to integrate the design into the view and simply display the content from the webpage in the design.&lt;br /&gt;

&lt;br /&gt;

This was going pretty well until the webpage sat like a big white blob on top of my nice image.  I couldn't let this be and had to find a solution, luckily it wasn't to complicated.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/NeP4O-dKcN4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/transparent-uiwebview/</feedburner:origLink></item>
      <item>
      <title>A friendly framework reminder</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/ux8g_ASKNks/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 01 Apr 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/a-friendly-framework-reminder/</guid>
      <description>Quite often at work, I find myself reminding my team members to be sure to ALWAYS utilize the framework to it's fullest.  Just because you are unsure how to do something or have never done it before in the framework, does NOT mean that it cannot be done!&lt;br /&gt;

&lt;br /&gt;

I use to have this thinking as well.  I would curse and curse, I've done this a 100 times, why is it so difficult to do with this framework!&lt;br /&gt;

&lt;br /&gt;

Once I calmed down, I would Google it or look around the documentation and pretty quickly discover how to accomplish it using the framework.  9 times out of 10, I found that it was actually extremely easy to implement.  Not only that, 7 or 8 times out of 10, it would actually save me time!  If it didn't the first time, it certainly always saved me a lot more the next time.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/ux8g_ASKNks" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/a-friendly-framework-reminder/</feedburner:origLink></item>
      <item>
      <title>UINavigationController Background Color</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/C7EkRDAI2ew/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 31 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/uinavigationcontroller-background-color/</guid>
      <description>Boy today was a frustrating day.  Over the past month or so, when I have some free time at work I've been learning Objective C to create iPhone applications.&lt;br /&gt;

&lt;br /&gt;

Today, I struggled and struggled to do the most simplistic thing ever and I wanted to share it with everyone so if you get stuck with the same problem, hopefully you will solve it a lot quicker than I did.&lt;br /&gt;

&lt;br /&gt;

What I was trying to do was to change the background color of the "blue" navigation header.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/C7EkRDAI2ew" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/uinavigationcontroller-background-color/</feedburner:origLink></item>
      <item>
      <title>Web Developers are Warriors</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/QaKKor2SnNU/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 30 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/web-developers-are-warriors/</guid>
      <description>Sick days?  What's a sick day?  I know at my place of work, we don't take them.  Today is a great example of that.  I couldn't even get out of bed yesterday, Sunday, but today, with work knocking on the door, I got up nice and early, popped some medication to get me through the day and here we are 9 hours later at home blogging!&lt;br /&gt;

&lt;br /&gt;

Today's article, won't contain anything informative, just a message to other web developers out there like me, who feel like crap on the weekend, but still get up to work on Monday.&lt;br /&gt;

&lt;br /&gt;

Sometimes, I'd actually take the day off, but today, like many days, I had to move a web site live.  I knew if I stayed home and asked someone else to do it that it would be more stressful than not going in!&lt;br /&gt;

&lt;br /&gt;

So, to all you other web developers, you know what, let's not just limit to web developers, to all you other courageous people who get up in the morning, feeling like garbage, but still go in to work, CHEERS!&lt;br /&gt;

&lt;br /&gt;

I'm hoping to be back tomorrow to blog another day.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/QaKKor2SnNU" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/web-developers-are-warriors/</feedburner:origLink></item>
      <item>
      <title>Unbind Model Validation in CakePHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/bW4Gl-qWR2E/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sat, 28 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/unbind-model-validation-in-cakephp/</guid>
      <description>Have you found yourself wanting to remove validation on a specific field in a specific form?  Yes?  Excellent, you found the right place.&lt;br /&gt;

&lt;br /&gt;

If you haven't had the need for this, a great example of where you would want to accomplish this would be in a users edit form.  Normally in CakePHP we would encrypt the password, especially if you are using the AuthComponent, so we wouldn't want the password prefilled on our form.  Instead, we'll make it blank and place a note underneath that says "Only enter a password if you wish to change it".&lt;br /&gt;

&lt;br /&gt;

The above shouldn't be difficult, however, when you go to use the form, you will get some unexpected results.  I keep getting a message saying that I must enter a password, because I had setup validation on that field for the registration process.  Below is a simple solution to this problem.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/bW4Gl-qWR2E" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/unbind-model-validation-in-cakephp/</feedburner:origLink></item>
      <item>
      <title>Jquery vs Prototype/Scriptaculous</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/53nvb-_jBIs/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 26 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/jquery-vs-prototypescriptaculous/</guid>
      <description>About two years ago I started learning AJAX and drag and drop.  The first project I applied it to was an existing project that was using Prototype and Scriptaculous.  So, I didn't really have a choice as to what library I was going to use.&lt;br /&gt;

&lt;br /&gt;

Two years later, I do not know Jquery all that well, but I am absolutely falling in love with.  Doing things with Jquery seem to be 10 times easier to me.&lt;br /&gt;

&lt;br /&gt;

I always struggled with the each() function that I seemed to be constantly using with Prototype.  Jquery seems to understand this and simplify things for us.&lt;br /&gt;

&lt;br /&gt;

In this article, I'm going to describe my top reasons why I am becoming a Jquery lover over Prototype.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/53nvb-_jBIs" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/jquery-vs-prototypescriptaculous/</feedburner:origLink></item>
      <item>
      <title>How attentive are you?</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/ICnHqu6bZcw/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 25 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/how-attentive-are-you/</guid>
      <description>During my first job interview as a web developer, I was asked, what I thought at the time, a weird question.  "Jamie, on a scale of one to ten, what would you score yourself in regards to attention to detail?"  I said what every employer wanted to hear "eight or nine, no one is perfect".&lt;br /&gt;

&lt;br /&gt;

It was enough to get me the job.  However, as I completed task after task, it was clear that my attention to detail was more around a five or six.  This was a contract position at the time with a possible extension, well as you can guess, I didn't get the extension.&lt;br /&gt;

&lt;br /&gt;

So what's changed today?  The obvious answer is a lot, but let's breakdown things I now do differently to increase my attention of detail to the actual eight or nine I originally said it was.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/ICnHqu6bZcw" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/how-attentive-are-you/</feedburner:origLink></item>
      <item>
      <title>5 Tips to Become a Better Web Developer</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/8wK66MXVePI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 24 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/5-tips-to-become-a-better-web-developer/</guid>
      <description>So, you are looking to become a better web developer?  Well, the fact that you are willing to read this article is a great start!  It's actual one of my five tips.  I'll begin by listing, what I believe, are the most important pieces in becoming a better web developer.&lt;br /&gt;

&lt;ol&gt;&lt;br /&gt;

	&lt;li&gt;Test&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;Adapt&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;Think/Plan&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;Trial and Error&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;Ask for help&lt;/li&gt;&lt;br /&gt;

&lt;/ol&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/8wK66MXVePI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/5-tips-to-become-a-better-web-developer/</feedburner:origLink></item>
      <item>
      <title>Login system with CakePHP in under 10 minutes</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/vEoIgyRJ7h4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 23 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/login-system-with-cakephp-in-under-10-minutes/</guid>
      <description>&lt;blockquote&gt;&lt;em&gt;** If you've found this article through a Google search, visit my &lt;a href="http://www.endyourif.com/cakephp-2-x-login-system/"&gt;CakePHP 2.x Login System&lt;/a&gt; for an updated version of this article. **&lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;

In today's article, I am going to discuss how simple it is to setup a login system with CakePHP.  As the title says, it should be less than 10 minutes.  In theory if you copy and paste the code below, it should be fully functional in less than 5.&lt;br /&gt;

&lt;br /&gt;

Ready, set, let's bake.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/vEoIgyRJ7h4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/login-system-with-cakephp-in-under-10-minutes/</feedburner:origLink></item>
      <item>
      <title>Optimize your CSS and JS with CakePHP in minutes</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/FVIsgIwh9vg/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sat, 21 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/optimize-your-css-and-js-with-cakephp-in-minutes/</guid>
      <description>One of my first articles discussed YSlow.  An excellent Mozilla add-on to help you understand why your web page may be loading slowly.&lt;br /&gt;

&lt;br /&gt;

In that article, I describe the importance of gzip, minify, and grouping your Javascript and CSS code into one file each.&lt;br /&gt;

&lt;br /&gt;

Just recently I was surfing CakePHP's bakery and found a nice add-on to simplify the process and make it super easy.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/FVIsgIwh9vg" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/optimize-your-css-and-js-with-cakephp-in-minutes/</feedburner:origLink></item>
      <item>
      <title>Importance of using the CakePHP Helpers</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/GmNvBnL63x8/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 20 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/importance-of-using-the-cakephp-helpers/</guid>
      <description>Uggghh, I hate to even be writing about this!  I have been spending the past two days cleaning up a project that has been running for over one year.  It was our first ever CakePHP project at our company and we were too lazy to be consistent about using $html-&amp;gt;link() when creating our links.&lt;br /&gt;

&lt;br /&gt;

Just recently the client has requested a change for their Facebook application.  We simply need to add a "requirelogin" HTML attribute to every link.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/GmNvBnL63x8" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/importance-of-using-the-cakephp-helpers/</feedburner:origLink></item>
      <item>
      <title>Re-map key/value array data in PHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/_Ii8Ujr5g24/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 19 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/re-map-keyvalue-array-data-in-php/</guid>
      <description>I was recently tasked with a situation where I needed to populate about 10 different "Settings" for every user in the current database.&lt;br /&gt;

&lt;br /&gt;

This example is specifically for CakePHP, however, it could easily be used elsewhere.  My goal was the following, I had an array that was key value paired as follows:&lt;br /&gt;

&lt;br /&gt;

array(&lt;br /&gt;

 [0] =&amp;gt; array(&lt;br /&gt;

  'User' =&amp;gt; array(&lt;br /&gt;

   'id' =&amp;gt; 1)&lt;br /&gt;

  ),&lt;br /&gt;

 [1] =&amp;gt; array(&lt;br /&gt;

  'User' =&amp;gt; array(&lt;br /&gt;

   'id' =&amp;gt; 2)&lt;br /&gt;

  ),&lt;br /&gt;

 [2] =&amp;gt; array(&lt;br /&gt;

  'User' =&amp;gt; array(&lt;br /&gt;

   'id' =&amp;gt; 3)&lt;br /&gt;

  ),&lt;br /&gt;

 [3] =&amp;gt; array(&lt;br /&gt;

  'User' =&amp;gt; array(&lt;br /&gt;

   'id' =&amp;gt; 4)&lt;br /&gt;

  ),&lt;br /&gt;

)&lt;br /&gt;

&lt;br /&gt;

The result I needed was as follows:&lt;br /&gt;

&lt;br /&gt;

array(&lt;br /&gt;

 [0] =&amp;gt; array(&lt;br /&gt;

  'UserSetting' =&amp;gt; array(&lt;br /&gt;

   'user_id' =&amp;gt; 1)&lt;br /&gt;

  ),&lt;br /&gt;

 [1] =&amp;gt; array(&lt;br /&gt;

  'UserSetting' =&amp;gt; array(&lt;br /&gt;

   'user_id' =&amp;gt; 2)&lt;br /&gt;

  ),&lt;br /&gt;

 [2] =&amp;gt; array(&lt;br /&gt;

  'UserSetting' =&amp;gt; array(&lt;br /&gt;

   'user_id' =&amp;gt; 3)&lt;br /&gt;

  ),&lt;br /&gt;

 [3] =&amp;gt; array(&lt;br /&gt;

  'UserSetting' =&amp;gt; array(&lt;br /&gt;

   'user_id' =&amp;gt; 4)&lt;br /&gt;

  ),&lt;br /&gt;

)&lt;br /&gt;

&lt;br /&gt;

With a few simple lines of code, I was able to quickly and easily achieve this, let me show you how.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/_Ii8Ujr5g24" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/re-map-keyvalue-array-data-in-php/</feedburner:origLink></item>
      <item>
      <title>How to deal with stress at work</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/1WyfrTrKM_0/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 17 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/how-to-deal-with-stress-at-work/</guid>
      <description>I'm assuming I'm not alone with this one, but on a daily basis I seem to bring home a lot of stress from work.  At one point I use to bring home so much stress that I was unable to sleep at night.  From time-to-time it still happens, but with these techniques below I have been able to significantly improve the amount of stress I bring home from work.&lt;br /&gt;

&lt;br /&gt;

Before we discuss resolutions, let's discuss the type of stress us web developers/project managers bring home on a daily basis.&lt;br /&gt;

&lt;ul&gt;&lt;br /&gt;

	&lt;li&gt;Angry clients&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;Your team members not performing well&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;A mistake by you&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;A bug that you were unable to find&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;Too much work&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;Mean boss&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;Difficult co-workers&lt;/li&gt;&lt;br /&gt;

&lt;/ul&gt;&lt;br /&gt;

I'm sure this list could carry on a lot longer, but I think we get the point with HOW much stress we can bring home on a daily basis.&lt;br /&gt;

&lt;br /&gt;

Let's begin by breaking each one down.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/1WyfrTrKM_0" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/how-to-deal-with-stress-at-work/</feedburner:origLink></item>
      <item>
      <title>When to use element() and when to requestAction()</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/ki19mdgbwUs/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 16 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/when-to-use-element-and-when-to-requestaction/</guid>
      <description>Several times a week it seems, someone at my office is asking, "Jamie, should I use $this-&amp;gt;element() or $this-&amp;gt;requestAction()?"&lt;br /&gt;

&lt;br /&gt;

Every time they ask, I ask them back, "What do you need to do?"&lt;br /&gt;

&lt;br /&gt;

There are a few simple ways to determine if using an element is better or a request action is better.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/ki19mdgbwUs" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/when-to-use-element-and-when-to-requestaction/</feedburner:origLink></item>
      <item>
      <title>CakePHP Containable Statement Pitfalls</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/dB9i8gzRHaQ/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sun, 15 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/cakephp-containable-statement-pitfalls/</guid>
      <description>On some of our more recent projects, we have been using the Containable behavior that CakePHP provides.  It works quite nicely, a lot easier than the previous format of having to bind and unbind models on the fly.&lt;br /&gt;

&lt;br /&gt;

The pitfalls began to appear when some of our clients were reporting that some pages are extremely slow.  After a bit of research, it was quite apparent that the root of the cause was attributed to us using the containable feature.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/dB9i8gzRHaQ" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/cakephp-containable-statement-pitfalls/</feedburner:origLink></item>
      <item>
      <title>Keeping your CakePHP Controllers Clean</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/rGgol_n6oAc/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sat, 14 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/keeping-your-cakephp-controllers-clean/</guid>
      <description>As my office gains more and more experience with CakePHP, we are beginning to learn to build more organized web sites.  Looking back at our first few projects, I'm astonished to see how messy our controllers are!&lt;br /&gt;

&lt;br /&gt;

I know the controllers are the "brain" of MVC because it pieces our data to our views, but that doesn't mean everything should go in there.  Our original controllers would contain all of our logic, all of our data manipulation, all of our custom queries, and some additional data validation.&lt;br /&gt;

&lt;br /&gt;

We are now working very hard to keep our controllers as clean and simple as possible.  My goal is to make every function in our controllers under 20 lines of code.  It might sound ambitious, but I think it is completely feasable.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/rGgol_n6oAc" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/keeping-your-cakephp-controllers-clean/</feedburner:origLink></item>
      <item>
      <title>Underscores and Internet Explorer Fun</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/fFmEV-PPZao/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 13 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/underscores-and-internet-explorer-fun/</guid>
      <description>I think my favorite thing about being a web developer is wasting hours and hours of my time, my co-workers time, pretty much every ones time because Internet Explorer is retarded.&lt;br /&gt;

&lt;br /&gt;

Earlier this week, we were developing a site and we created a new sub domain off of our main domain.  Because we already had an existing sub domain for the same client, the team decided to postfix the sub domain with _new.  When we started testing our work, it didn't start off well.  Open up Internet Explorer 7 and receive the login page, attempt to login and just get redirected back to the login page.&lt;br /&gt;

&lt;br /&gt;

We know there is nothing wrong with our login script as it works fine in Mozilla and it's something that we've used on a million other projects.&lt;br /&gt;

&lt;br /&gt;

My head still hurts from banging it against the wall for quite some time to simply discover that Internet Explorer rejects session cookies when a domain contains an underscore ("_") in the name!&lt;br /&gt;

&lt;br /&gt;

I know this is the shortest article I've ever written, but I had to vent.  Hopefully if you run into this problem you will Google it sooner than we did and this article will save you time and a headache!&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/fFmEV-PPZao" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/underscores-and-internet-explorer-fun/</feedburner:origLink></item>
      <item>
      <title>Drag and drop category management with CakePHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/RytknsJH-yY/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 11 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/drag-and-drop-category-management-with-cakephp/</guid>
      <description>&lt;div class="mceTemp mceIEcenter"&gt;Today's article is going to walk you through creating a slick drag and drop with AJAX category management system.&lt;/div&gt;&lt;br /&gt;

CakePHP offers a really nice built-in tree management.  In fact, at a bare minimum you simply need to create a table with 2 extra columns, tell your model to act like a "tree" and rather than doing a find('all') you do a generatetreelist() or a find('threaded') and CakePHP takes care of the rest.&lt;br /&gt;

&lt;br /&gt;

After doing a quick test, I was quite impressed with what CakePHP did for me, but I was not satisified.  I wanted to create a really slick category management system that I can re-use and show off.  Well, in this tutorial I go about 90% of the way.  The only thing I didn't have time to finish was, rather than redrawing my tree through AJAX, use DHTML and dynamically update my tree after dragging and dropping.  Don't worry, I plan to finish this with a part two soon.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/RytknsJH-yY" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/drag-and-drop-category-management-with-cakephp/</feedburner:origLink></item>
      <item>
      <title>Drag and drop with animations in jquery</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/aWzsaqnBmDY/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 10 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/drag-and-drop-with-animations-in-jquery/</guid>
      <description>Every year at Halloween, my company offers prizes to the best dressed employees.  For the past two years I have one as well as my co-worker that partakes in our crazy costumes.  You may be wondering what this has to do with drag and drop, don't worry I'm getting there.&lt;br /&gt;

&lt;br /&gt;

This years prize happened to be a monkey slingshot.  Basically you place your index and middle fingers in pockets attached to the monkey's arms.  You then proceed to pull back and let fly.  Well, as you can imagine, we had a lot of fun with this guy, so much fun in fact we broke it :(&lt;br /&gt;

&lt;br /&gt;

So one day after work I was messing around with drag and drop and some jquery animations.  I was quickly able to get a "mock slingshot" shooting at a target and this is what I want to share today.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/aWzsaqnBmDY" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/drag-and-drop-with-animations-in-jquery/</feedburner:origLink></item>
      <item>
      <title>How to add comments with AJAX in CakePHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/Z_c4JldzWZs/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 09 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/how-to-add-comments-with-ajax-in-cakephp/</guid>
      <description>In today's article we are going to create a very basic blog that allows people to create a post and posts comments on that post via AJAX.  We are going to keep it extremely basic and just focus on that actual AJAX functionality.&lt;br /&gt;

&lt;br /&gt;

Ready? Let's begin.  We are going to start by creating two database tables: posts and posts_comments.  Below is a sample create statement for the posts table:&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/Z_c4JldzWZs" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/how-to-add-comments-with-ajax-in-cakephp/</feedburner:origLink></item>
      <item>
      <title>How to advance our CMS in CakePHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/-wiHb-TWMj4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sun, 08 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/how-to-advance-our-cms-in-cakephp/</guid>
      <description>At the end of &lt;a href="http://www.endyourif.com/how-to-create-a-cms-with-cakephp/"&gt;part one&lt;/a&gt;, we had a working CMS.  Well, at least it was saving files and they could be displayed to the public.  In today's article, we are going to further advance our CMS.  We will cover the following items:&lt;br /&gt;

&lt;ol&gt;&lt;br /&gt;

	&lt;li&gt;fckEditor&lt;/li&gt;&lt;br /&gt;

	&lt;li&gt;Revisions&lt;/li&gt;&lt;br /&gt;

&lt;/ol&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/-wiHb-TWMj4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/how-to-advance-our-cms-in-cakephp/</feedburner:origLink></item>
      <item>
      <title>How to create a CMS with CakePHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/LUVjCBO-VIU/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sat, 07 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/how-to-create-a-cms-with-cakephp/</guid>
      <description>I really enjoying writing code and I find that snippets just don't always cut it for me.  So in today's article, I am going to describe the process of creating a CMS (Content Management System) with CakePHP.&lt;br /&gt;

&lt;br /&gt;

This will be a two part article, in part one we will focus on getting the basics working.  The basics will include ability to add, edit, and delete static content pages.&lt;br /&gt;

&lt;br /&gt;

Part two will advance on our basis and allow us to create drafts and revert back to previous versions.&lt;br /&gt;

&lt;br /&gt;

To begin, let's download the latest release of CakePHP.  After you've downloaded it, extract it to a folder of your choice.  In my case it will be c:\xampplite\htdocs\CMS.  I can now access my new web site by browsing to &lt;a href="http://localhost/CMS"&gt;http://localhost/CMS&lt;/a&gt;.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/LUVjCBO-VIU" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/how-to-create-a-cms-with-cakephp/</feedburner:origLink></item>
      <item>
      <title>AJAX Select box in CakePHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/4dA1df3VG-A/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 06 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/ajax-select-box-in-cakephp/</guid>
      <description>When I created my first personal CakePHP web site, this was something that had me quite frustrated.  I struggled and struggled to figure out and understand how to do a simple "if I change this select box, how can I populate another one".&lt;br /&gt;

&lt;br /&gt;

I had previously done this a million times in other languages with a simple "onchange()" function that would do my AJAX and populate my other select box.&lt;br /&gt;

&lt;br /&gt;

To solve this problem, I checked CakePHP's web site and did not find anything useful.  Don't forget this was almost a year ago, I find the web site has come a long way now.  Because I couldn't find a could example, I did the next best thing, I dove write into the form helper and ajax helper.  Shortly after, I found enough information to start my trial and error process.&lt;br /&gt;

&lt;br /&gt;

Excellent, now we are getting some where.  Now that we know this, let's create our two select boxes and make our second one populate through AJAX.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/4dA1df3VG-A" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/ajax-select-box-in-cakephp/</feedburner:origLink></item>
      <item>
      <title>How to setup a route in CakePHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/SCmHQkYDKsw/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 05 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/how-to-setup-a-route-in-cakephp/</guid>
      <description>If you are like me and are creating personal web sites, one of the best ways to gain traffic to your site is through SEO.  I won't go into detail here as I want to focus on how to setup a route in CakePHP, but having SEO friendly URLs will go a long way in helping.&lt;br /&gt;

&lt;br /&gt;

First let's define what a "route" is.  In CakePHP it allows you to add a different path to access a specific controller and/or function in that controller.&lt;br /&gt;

&lt;br /&gt;

For example, let's say I want to create a CMS.  I might create a controller called "StaticContent" and then place a function for each page a client would like to create.  I'm pretty sure I would start getting a lot of calls saying, "Jamie, why is my URL http://www.myaddress.com/StaticContent/myCustomPage?"  So to avoid those calls, we can use a route to make it more accessible and SEO friendly.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/SCmHQkYDKsw" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/how-to-setup-a-route-in-cakephp/</feedburner:origLink></item>
      <item>
      <title>A practical CASE Statement Example</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/acUMvhz_YTg/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 04 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/a-practical-case-statement-example/</guid>
      <description>What is a SQL case statement? Well, it's much like a switch statement in a development language. It allows you to test several different cases for a field and determine what you would like to do for each one.&lt;br /&gt;

&lt;br /&gt;

If you have ever visited Mysql's documentation, you may have been as lost as I was. You will find something like this:&lt;br /&gt;

&lt;br /&gt;

&lt;pre&gt;&lt;code&gt;CASE v

WHEN 2 THEN SELECT v;

WHEN 3 THEN SELECT 0;

ELSE

BEGIN

END;

END CASE;

&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;

&lt;br /&gt;

If you are as confused as I was, let me provide you a better, more clear example.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/acUMvhz_YTg" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/a-practical-case-statement-example/</feedburner:origLink></item>
      <item>
      <title>How to create a socket server in PHP</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/6c7YQIYNINI/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 02 Mar 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/how-to-create-a-socket-server-in-php/</guid>
      <description>&lt;p&gt;Ever want to build a chat application or perhaps even a game?  If so, a socket server will help you get started.  Once you understand the underlying functionality of creating the server, enhancing it is just as easy.&lt;/p&gt;&lt;br /&gt;

&lt;p&gt;The way a socket server works is, it will be running continously and waiting for a client to connect to it.  When a client connects, our server will add it to our list of clients and begin waiting for messages from that client.&lt;/p&gt;&lt;br /&gt;

&lt;p&gt;Without further adieu, here is the full source code:&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/6c7YQIYNINI" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/how-to-create-a-socket-server-in-php/</feedburner:origLink></item>
      <item>
      <title>Top 5 SEO Tips To Achieve Top 10 Rankings In Google</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/qSd_WbSd8Vs/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sat, 28 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/top-5-seo-tips-to-achieve-top-10-rankings-in-google/</guid>
      <description>I thought I would follow-up my "&lt;a href="http://www.endyourif.com/how-to-get-indexed-by-google-in-one-hour/"&gt;How to get indexed by Google in ONE hour&lt;/a&gt;" article with my &lt;strong&gt;top 5 SEO (search engine optimization) tips&lt;/strong&gt;.&lt;br /&gt;

&lt;br /&gt;

The following 5 items are by no means in order of importance, it's best to try the ones that you think you can do first.  When you are implementing the following 5 SEO tips, it's important to not rush anything.  When you are creating a web site and writing content, it's important to take your time, write good content, read it, update it to better market your keywords, and read it again to ensure you are marketing your keywords to the best of their potential.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/qSd_WbSd8Vs" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/top-5-seo-tips-to-achieve-top-10-rankings-in-google/</feedburner:origLink></item>
      <item>
      <title>The Importance of Database Indexing</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/Vq2qyX8Xos8/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 27 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/the-importance-of-database-indexing/</guid>
      <description>If you are not familiar with database indexes or even if you are, but not sure when to use them, this article will be perfect for you.&lt;br /&gt;

&lt;br /&gt;

In this article, I will show you an example of a simple query without an index and then that same query again with the index.  I am certain that you will be shocked by the difference.&lt;br /&gt;

&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/Vq2qyX8Xos8" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/the-importance-of-database-indexing/</feedburner:origLink></item>
      <item>
      <title>Dynamic COUNT() Versus Static COUNT()</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/iNrIL1ZoNV8/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 24 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/dynamic-count-versus-static-count/</guid>
      <description>I'll continue today with another good database programming article.  If you missed yesterdays, you may view it &lt;a href="http://www.endyourif.com/why-you-should-avoid-order-by-rand-or-newid/"&gt;here&lt;/a&gt;.&lt;br /&gt;

&lt;br /&gt;

Today's article will discuss when to use a static COUNT() versus a dynamic COUNT().  On a regular basis we are tasked with creating a message center or a photo album and we need to display a count of new messages or pictures in the album.&lt;br /&gt;

&lt;br /&gt;

The obvious solution is to do a simple query: SELECT COUNT(*) FROM pictures WHERE album_id = 1 and display the result beside our album name.  Now, let's assume that we allow multiple albums our actual query would be closer to this: SELECT albums.*, COUNT(pictures.*) as picture_count FROM albums INNER JOIN pictures ON albums.id = pictures.album_id WHERE albums.id = 1.  This will of course work, but let me show you a better, more practical approach that will improve performance significantly on large databases.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/iNrIL1ZoNV8" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/dynamic-count-versus-static-count/</feedburner:origLink></item>
      <item>
      <title>Why You Should Avoid ORDER BY RAND() OR NEWID()</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/ptt3erFqiYw/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 23 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/why-you-should-avoid-order-by-rand-or-newid/</guid>
      <description>Quite often we get a complaint from a client that their homepage is too slow.  The first thing we do is load the homepage up and see for ourselves.  Yep, it looks slow, so the next step is too see what is being done.  Quite often you'll see some random data being displayed on the homepage.  Whether it's random news articles, photos, videos, etc...If this is not the case, you may find my article on &lt;a href="http://www.endyourif.com/yslow-helping-slow-web-pages-load-faster/"&gt;improving slow loading web pages&lt;/a&gt; more useful.&lt;br /&gt;

&lt;br /&gt;

If the homepage is slow because of random data, you can lay a bet with high certainty that those 10 random articles are being pulled with an ORDER BY RAND() OR NEWID() slowing the site to a crawl.  In case you are curious the difference, RAND() is the MySQL way and NEWID() is the SQL Server way.  In this article, I'll show you why you should avoid these functions and several different solutions to help you overcome this issue.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/ptt3erFqiYw" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/why-you-should-avoid-order-by-rand-or-newid/</feedburner:origLink></item>
      <item>
      <title>Why You Should Always Backup</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/j_J3P_w5kgo/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sun, 22 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/why-you-should-always-backup/</guid>
      <description>Man, what a week it has been.  As you may have noticed it's been a few days too many since my last post.  The reason for that is a hectic week at work has prevented me from having time.&lt;br /&gt;

&lt;br /&gt;

Now that the week is over and it was hectic because of my own stupidity, I mine as well write an article about it to save you some time.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/j_J3P_w5kgo" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/why-you-should-always-backup/</feedburner:origLink></item>
      <item>
      <title>Fixing slow drag and drop with scriptaculous</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/fZkNuQW3iK8/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 18 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/fixing-slow-drag-and-drop-with-scriptaculous/</guid>
      <description>Recently on a project I was working on, I was tasked with fixing drag and drop that was terribly slow.  The drag and drop was implemented with &lt;a href="http://script.aculo.us/" target="_blank"&gt;scriptaculous&lt;/a&gt; on a calendar system.  When you clicked an event to drag it it took about 5 seconds before the page would actually let you drag it!  This was clearly unacceptable and it has to be possible because Google Calendar is lightening fast.&lt;br /&gt;

&lt;br /&gt;

 The first thing I did was download and setup &lt;a href="http://jquery.com" target="_blank"&gt;jquery&lt;/a&gt; to see if it was related to how scriptaculous was created.  After setting up jquery, it was just as slow.  This lead me to believe that it was a fundamental problem with how the drag and drop was set up in both libraries.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/fZkNuQW3iK8" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/fixing-slow-drag-and-drop-with-scriptaculous/</feedburner:origLink></item>
      <item>
      <title>Why Frameworks Are Better</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/rCXcYRFQJs4/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Tue, 17 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/why-frameworks-are-better/</guid>
      <description>Are you a person who dislikes frameworks?  Or are you a person who loves frameworks?  Or are you even a person who isn't quite sure what a framework is?  The following article will discuss the pros and cons of frameworks and the common downfalls that people fall into.&lt;br /&gt;

&lt;br /&gt;

I'm not sure if it's only people I meet or a world-wide thing, but it seems people do not like to use frameworks (at least at first).  At my work, we use them on every new project.  So, when a new hot shot developer joins our team, we inevitable get to have the battle of "Ugghh, I don't want to use a framework I want to code my way and only my way".&lt;br /&gt;

&lt;br /&gt;

If this is your typical response to frameworks, I suggest you continue to read and let me enlighten you on why we live and die by our frameworks.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/rCXcYRFQJs4" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/why-frameworks-are-better/</feedburner:origLink></item>
      <item>
      <title>CSS Tips - Margins in Internet Explorer</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/krRgna9OZ2A/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Mon, 16 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/css-tips-margins-in-internet-explorer/</guid>
      <description>This is the first article to follow-up on my why "&lt;a title="Permanent Link to Why Is Internet Explorer Better?" rel="bookmark" href="http://www.endyourif.com/why-is-internet-explorer-better/"&gt;Why Is Internet Explorer Better?&lt;/a&gt;".&lt;br /&gt;

&lt;br /&gt;

Today's article is going to discuss how Internet Explorer deals with margins.  To explain this weird and frustrating issue, I am going to build a photo gallery and break it down into several steps.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/krRgna9OZ2A" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/css-tips-margins-in-internet-explorer/</feedburner:origLink></item>
      <item>
      <title>Why Is Internet Explorer Better?</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/usiG4S9fXfQ/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sun, 15 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/why-is-internet-explorer-better/</guid>
      <description>I'm guessing I probably got your attention with this one?  I'm also guessing that you cannot scroll down fast enough to the comments box and start typing a bunch of nasty messages to me.&lt;br /&gt;

&lt;br /&gt;

WAIT!  Before you do that, let me explain why.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/usiG4S9fXfQ" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/why-is-internet-explorer-better/</feedburner:origLink></item>
      <item>
      <title>Drag and Drop with AJAX Example</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/YPOsFqGhjac/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Sat, 14 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/drag-and-drop-with-ajax-example/</guid>
      <description>At my work it's quite clear to me that a lot of people have difficulty with both AJAX and drag and drop functionality.  In this article, I thought I would provide a realistic and simplistic example of how to accomplish both AJAX and drag and drop together.&lt;br /&gt;

&lt;br /&gt;

By the end of this article you will be able to create an extremely slick content management system that works really smoothly.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/YPOsFqGhjac" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/drag-and-drop-with-ajax-example/</feedburner:origLink></item>
      <item>
      <title>SQL Tips - Why LEFT JOINS are bad</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/5xPacdA4Iys/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Fri, 13 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/sql-tips-why-left-joins-are-bad/</guid>
      <description>When you do SQL queries do you find yourself always, or almost always, using left joins?  If you've answered yes to this question, I would suggest to continue to read and understand some downfalls that you might be getting yourself into.&lt;br /&gt;

&lt;br /&gt;

Let's start by looking at a standard query that has a left join:&lt;br /&gt;

&lt;br /&gt;

SELECT * FROM users u LEFT JOIN countries c ON c.id = u.country_id WHERE u.id = 5&lt;br /&gt;

&lt;br /&gt;

The following query will return all fields from the users table and all fields from the countries table.  Now you're thinking, "Yeah, looks good, so what's wrong with this?".  Well, I'm glad you asked.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/5xPacdA4Iys" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/sql-tips-why-left-joins-are-bad/</feedburner:origLink></item>
      <item>
      <title>How to get indexed by Google in ONE hour</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/HEkgQewqsbw/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Thu, 12 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/how-to-get-indexed-by-google-in-one-hour/</guid>
      <description>If you're not familiar with how some people accomplish getting their web sites submitted to Google quickly, you are going to absolutely love this article.&lt;br /&gt;

&lt;br /&gt;

I've bet you've heard from many people that it can take days, weeks, even months to get indexed by Google.  If you have heard that, you're now thinking, "OK Jamie, you must have had a really stressful day at work today and you're now hallucinating that this is possible!".&lt;br /&gt;

&lt;br /&gt;

If I read this blog title a while ago, I'm sure I would be thinking the same thing as you!  Ok, let's move on to how to get indexed by Google within one hour.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/HEkgQewqsbw" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/how-to-get-indexed-by-google-in-one-hour/</feedburner:origLink></item>
      <item>
      <title>YSlow - Helping slow web pages load faster</title>
      <link>http://feedproxy.google.com/~r/EndYourIf/~3/BTjJ8Vk8g9g/</link>
      <author>info@endyourif.com (Jamie Munro)</author>
      <pubDate>Wed, 11 Feb 09 12:00:00 +0000</pubDate>
      <guid isPermaLink="false">http://www.endyourif.com/yslow-helping-slow-web-pages-load-faster/</guid>
      <description>This article is a continuation to my article about &lt;a href="http://www.endyourif.com/firebug-a-developers-best-friend/"&gt;Firebug&lt;/a&gt;.  &lt;a href="http://developer.yahoo.com/yslow/" target="_blank"&gt;YSlow&lt;/a&gt; is an add-on to Firebug that helps developers determine why a site is loading slowly.&lt;br /&gt;

&lt;br /&gt;

After you install YSlow, if you open up Firebug in Mozilla a new tab will now appear called "YSlow".  The next steps would be to load a web site that you want to check it's performance.  After the web site has loaded, click the YSlow tab, if the results don't compile automatically, click the Performance button to run the diagnostics.&lt;br /&gt;

&lt;br /&gt;

The grading is made up of 13 steps.  For each step you receive a grade from A to F.  An overall grade is compiled in the same format.&lt;img src="http://feeds.feedburner.com/~r/EndYourIf/~4/BTjJ8Vk8g9g" height="1" width="1"/&gt;</description>
   <feedburner:origLink>http://www.endyourif.com/yslow-helping-slow-web-pages-load-faster/</feedburner:origLink></item>
   </channel>
</rss>
