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

<channel>
	<title>BrandonSavage.net &#187; Web Architecture</title>
	<atom:link href="http://www.brandonsavage.net/category/web-architecture/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.brandonsavage.net</link>
	<description>The personal blog of Brandon Savage. Contains entries of a personal and professional nature focusing on PHP, Apple, LAMP, MySQL and Washington, DC.</description>
	<lastBuildDate>Wed, 28 Jul 2010 15:28:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>What Constitutes A Web Service?</title>
		<link>http://www.brandonsavage.net/what-constitutes-a-web-service/</link>
		<comments>http://www.brandonsavage.net/what-constitutes-a-web-service/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 20:21:31 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Web Architecture]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=468</guid>
		<description><![CDATA[The explosion of the concept of &#8220;web services&#8221; has generated a debate over what &#8220;web services&#8221; actually are. An article by Raj Mishra tries to limit the concept of &#8220;web service&#8221; to a strict ten-point list, insisting that a web service have a WSDL and uses SOAP. While this is a perfectly fine sentiment (even [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/what-constitutes-a-web-service/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Scaling Up: Picking The Right Setup</title>
		<link>http://www.brandonsavage.net/scaling-up-picking-the-right-setup/</link>
		<comments>http://www.brandonsavage.net/scaling-up-picking-the-right-setup/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 11:30:48 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[System Architecture]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[CDN]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[grid computing]]></category>
		<category><![CDATA[Mosso]]></category>
		<category><![CDATA[scaling]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=277</guid>
		<description><![CDATA[Now that your application is running at peak performance and you&#8217;ve decided that it&#8217;s time to scale, let&#8217;s talk about the right setup. The modern age has brought us lots of new ways to take a growing site and scale it. From Amazon Web Services to cloud computing and grid computing, to Mosso and Akamai, [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/scaling-up-picking-the-right-setup/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<series:name><![CDATA[Scaling Up]]></series:name>
	</item>
		<item>
		<title>Looking Back: Learning From Old Code</title>
		<link>http://www.brandonsavage.net/looking-back-learning-from-old-code/</link>
		<comments>http://www.brandonsavage.net/looking-back-learning-from-old-code/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 04:30:52 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Friday Inspirations]]></category>
		<category><![CDATA[Personal Management]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[Code Reviews]]></category>
		<category><![CDATA[Code Samples]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=293</guid>
		<description><![CDATA[In 2007 I wrote a blogging program from scratch. I was really proud of it, too. It was all my own invention, with a little help that I got from a Facebook developer I knew, and I worked really hard on it. Spent the whole summer writing it so I&#8217;d be able to launch it [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/looking-back-learning-from-old-code/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Scaling Up: Baby Steps (a.k.a. Asking The Right Questions)</title>
		<link>http://www.brandonsavage.net/scaling-up-baby-steps-aka-asking-the-right-questions/</link>
		<comments>http://www.brandonsavage.net/scaling-up-baby-steps-aka-asking-the-right-questions/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 11:30:13 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Business Management]]></category>
		<category><![CDATA[System Architecture]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[efficiency]]></category>
		<category><![CDATA[preparation]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[scaling]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=174</guid>
		<description><![CDATA[Before we actually get started hacking on our code, let&#8217;s make sure we&#8217;ve got the right questions asked and answered. We&#8217;re going to need some resources, the help of others in our organization, and probably some understanding of the current system structure before we&#8217;re successful in our goal. Some of these questions may seem mundane, [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/scaling-up-baby-steps-aka-asking-the-right-questions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Scaling Up]]></series:name>
	</item>
		<item>
		<title>Scaling Up: Making Your Website Stand Up To Traffic</title>
		<link>http://www.brandonsavage.net/scaling-up-making-your-website-stand-up-to-traffic/</link>
		<comments>http://www.brandonsavage.net/scaling-up-making-your-website-stand-up-to-traffic/#comments</comments>
		<pubDate>Mon, 16 Feb 2009 11:00:59 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[System Architecture]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[scalability]]></category>

		<guid isPermaLink="false">http://www.brandonsavage.net/?p=129</guid>
		<description><![CDATA[The ability to turn a website into a large web service is a skill that&#8217;s deeply important amongst web application developers, but yet I&#8217;ve found it to be somewhat lacking. How is it that this fundamental skill is so often overlooked? Part of it has to do with the fact that many developers work on [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/scaling-up-making-your-website-stand-up-to-traffic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[Scaling Up]]></series:name>
	</item>
		<item>
		<title>Where Comments Are Useful</title>
		<link>http://www.brandonsavage.net/where-comments-are-useful/</link>
		<comments>http://www.brandonsavage.net/where-comments-are-useful/#comments</comments>
		<pubDate>Thu, 25 Dec 2008 04:30:04 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[comments]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://dev.brandonsavage.net/?p=107</guid>
		<description><![CDATA[PHP In Action writes on the use of comments in code, specifically citing Eli White&#8217;s Commenting on Commenting over at PHP Advent. They are critical of Eli&#8217;s advice, saying that comments should be unnecessary, and that code should be clean enough to easily understand it. There&#8217;s a lot of good advice, especially about writing clean [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/where-comments-are-useful/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Keeping Superglobals Out Of Classes</title>
		<link>http://www.brandonsavage.net/keeping-superglobals-out-of-classes/</link>
		<comments>http://www.brandonsavage.net/keeping-superglobals-out-of-classes/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 18:41:08 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[objects php 5]]></category>
		<category><![CDATA[superglobals]]></category>

		<guid isPermaLink="false">http://dev.brandonsavage.net/?p=94</guid>
		<description><![CDATA[Have you ever written code like this? &#60;?php class VerifyLogin extends UserObject { function verifyCredentials() { $username = mysql_real_escape_string($_POST[&#039;username&#039;]); $password = mysql_real_escape_string($_POST[&#039;password&#039;]); $passwordhash = MD5($username . $password); // Salt our PW Hash $sql = &#039;SELECT id FROM userTable WHERE username = &#039; . $username . &#039; AND password = &#039; . $passwordhash . &#039; LIMIT [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/keeping-superglobals-out-of-classes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Attention Developers: Functions Should Return Things!</title>
		<link>http://www.brandonsavage.net/attention-developers-functions-should-return-things/</link>
		<comments>http://www.brandonsavage.net/attention-developers-functions-should-return-things/#comments</comments>
		<pubDate>Fri, 10 Oct 2008 00:25:03 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[readability]]></category>

		<guid isPermaLink="false">http://dev.brandonsavage.net/?p=68</guid>
		<description><![CDATA[Hey you&#8230;yeah you PHP developer, stop doing this: &#60;?php function foo($bar) { $baz = &#039;&#60;p class=&#34;myclass&#34;&#62;&#039; . $bar . &#039; is cool!&#60;/p&#62;&#039;; echo $baz; } ?&#62; That&#8217;s bad. Really bad. It&#8217;s frustrating. Particularly to a developer who comes after you, and wants to deal with the output themselves, for any number of reasons. Please, when [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/attention-developers-functions-should-return-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Benchmark Early and Often</title>
		<link>http://www.brandonsavage.net/benchmark-early-and-often/</link>
		<comments>http://www.brandonsavage.net/benchmark-early-and-often/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 02:56:24 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[System Architecture]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[Alternative PHP Cache]]></category>
		<category><![CDATA[ApacheBench]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[benchmarking]]></category>
		<category><![CDATA[load testing]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://dev.brandonsavage.net/?p=64</guid>
		<description><![CDATA[This past week I had to deal with a new concept: a client site that failed due to excessive load. Most of the week was spent optimizing the site by doing the critical components: installing APC, ensuring that our caching (Akamai) was satisfactory and properly configured, and making performance improvements. But one thing that became [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/benchmark-early-and-often/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Is This Ever OK?</title>
		<link>http://www.brandonsavage.net/is-this-ever-ok/</link>
		<comments>http://www.brandonsavage.net/is-this-ever-ok/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 04:35:37 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[coding standards]]></category>
		<category><![CDATA[readability]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://dev.brandonsavage.net/?p=62</guid>
		<description><![CDATA[As a developer I&#8217;m often torn between the concept of &#8220;it works&#8221; and the concept of &#8220;it&#8217;s right.&#8221; This is no less true than in the following example&#8230; &#60;?php class Foo { public $property; public function outputProperty($var = null) { // Some function processing here. ?&#62; The value of the property is &#60;?php echo $this-&#62;property; [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/is-this-ever-ok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google: Simplicty, Meet Power</title>
		<link>http://www.brandonsavage.net/google-simplicty-meet-power/</link>
		<comments>http://www.brandonsavage.net/google-simplicty-meet-power/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 00:49:39 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[application architecture]]></category>
		<category><![CDATA[Ease-of-use]]></category>
		<category><![CDATA[good design]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[simplicity in design]]></category>

		<guid isPermaLink="false">http://dev.brandonsavage.net/?p=48</guid>
		<description><![CDATA[In the war between simplicity and power, there are those on each side that say you must sacrifice one to get the other. But as Google shows us, you can have both without sacrificing one for the other. The Google homepage is relatively unchanged from when its founders created it. Sure, they&#8217;ve added links to [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/google-simplicty-meet-power/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Designing With The Next Developer In Mind</title>
		<link>http://www.brandonsavage.net/designing-with-the-next-developer-in-mind/</link>
		<comments>http://www.brandonsavage.net/designing-with-the-next-developer-in-mind/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 15:53:28 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[code architecture]]></category>
		<category><![CDATA[database design]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[healthy design]]></category>

		<guid isPermaLink="false">http://dev.brandonsavage.net/?p=42</guid>
		<description><![CDATA[A huge part of my role as a developer is to work with existing code that needs tweaks or changes to integrate new features. This is often not the fault of anyone but time; new features are required and old ideas are replaced. But often there&#8217;s a certain lack of forward thinking by the past [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/designing-with-the-next-developer-in-mind/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Need for Administrative Interface</title>
		<link>http://www.brandonsavage.net/the-need-for-administrative-interface/</link>
		<comments>http://www.brandonsavage.net/the-need-for-administrative-interface/#comments</comments>
		<pubDate>Thu, 21 Aug 2008 01:25:33 +0000</pubDate>
		<dc:creator>Brandon Savage</dc:creator>
				<category><![CDATA[Web Architecture]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[design decisions]]></category>
		<category><![CDATA[value]]></category>

		<guid isPermaLink="false">http://dev.brandonsavage.net/?p=40</guid>
		<description><![CDATA[Quick &#8211; you have a tight budget and you need to save money. What do you cut? If you said the admin interface, you are like many clients I&#8217;ve had but strangely, you&#8217;d still be wrong. Lots of people figure that the public facing portion of the website is the most important. And for the [...]]]></description>
		<wfw:commentRss>http://www.brandonsavage.net/the-need-for-administrative-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk (feed is rejected)
Page Caching using apc (user agent is rejected)
Database Caching 45/55 queries in 0.020 seconds using disk
Content Delivery Network via Amazon Web Services: S3: files.brandonsavage.net.s3.amazonaws.com

Served from: www.brandonsavage.net @ 2010-07-31 10:51:07 -->