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

<channel>
	<title>Spinning Plates</title>
	<atom:link href="http://blog.suredev.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.suredev.com</link>
	<description>Tales of a small-time web shop.</description>
	<lastBuildDate>Tue, 09 Nov 2010 03:37:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Fixing That Awful Light-On-Dark Text Rendering on Macs</title>
		<link>http://blog.suredev.com/2010/01/fixing-that-awful-light-on-dark-text-rendering-on-macs/</link>
		<comments>http://blog.suredev.com/2010/01/fixing-that-awful-light-on-dark-text-rendering-on-macs/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 15:19:19 +0000</pubDate>
		<dc:creator>Fred LeBlanc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.suredev.com/?p=147</guid>
		<description><![CDATA[I&#8217;ve been using only Apple products for a couple of years now, and for the most part it&#8217;s been a pretty rewarding experience. That said, I know exactly what my least favorite part of the Mac experience is: its light-text-on-a-dark-background rendering in the web browser is gross. How can there be so much attention to [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using only Apple products for a couple of years now, and for the most part it&#8217;s been a pretty rewarding experience. That said, I know exactly what my least favorite part of the Mac experience is: its light-text-on-a-dark-background rendering in the web browser is gross.</p>
<p>How can there be so much attention to detail everywhere, but when I decide to invert my world with a dark-themed website I get blotchy, leaky type? Blech. Through many hours of experimenting and a happy accident while coding on the train, I stumbled across a solution.<span id="more-147"></span></p>
<p>Did you know that if you apply the slightest <code>text-shadow</code> to your text, the rendering looks a hundred times better? Take a look:</p>
<div id="attachment_150" class="wp-caption aligncenter" style="width: 592px"><img class="size-full wp-image-150" title="text rendering" src="http://blog.suredev.com/wp-content/uploads/2010/01/picture-5.jpg" alt="Left: normal Mac rendering; Right: using the text-shadow trick" width="582" height="343" /><p class="wp-caption-text">Left: normal Mac rendering; Right: using the text-shadow trick</p></div>
<p>Nothing fancy going on here, just this on the right block:</p>
<div style="padding-left: 30px; "><code>p {</p>
<div style="padding-left: 30px; ">text-shadow: 0 0 1px rgba(0,0,0,0.01);</div>
<p></code><code>}</code></div>
<p>You can use any color you want, it doesn&#8217;t matter as the <code>0.01</code> makes virtually invisible.</p>
<p>Of course, your mileage may vary: I&#8217;m not sure how efficient it is to throw text-shadows on everything. The more complex your HTML, the more this thing is going to weigh down page-rendering. Also, if you&#8217;re using text-shadows (that are made to show up) in certain areas, you wouldn&#8217;t want to apply this to everything as it may overwrite those.</p>
<p>Finally, it&#8217;s important to remember that this is only going to work in browsers that support <code>text-shadow</code>. Luckily — since we&#8217;re only targeting Mac browsers — most of the modern browsers support this. (Firefox 3.0 being the only exception.)</p>
<p>But either way: pretty cool, eh?</p>
<p><strong>Update:</strong> And for those that are curious, here&#8217;s the same effect with the colors reversed.</p>
<div id="attachment_170" class="wp-caption aligncenter" style="width: 592px"><img class="size-full wp-image-170" title="picture-6" src="http://blog.suredev.com/wp-content/uploads/2010/01/picture-6.jpg" alt="Same as above: left is standard, right is adjusted." width="582" height="342" /><p class="wp-caption-text">Same as above: left is standard, right is adjusted.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.suredev.com/2010/01/fixing-that-awful-light-on-dark-text-rendering-on-macs/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Clouds Midnight: Another TextMate Theme</title>
		<link>http://blog.suredev.com/2009/10/clouds-midnight-another-textmate-theme/</link>
		<comments>http://blog.suredev.com/2009/10/clouds-midnight-another-textmate-theme/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 18:38:01 +0000</pubDate>
		<dc:creator>Fred LeBlanc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.suredev.com/?p=142</guid>
		<description><![CDATA[It was only a matter of time, but I&#8217;ve created a second TextMate theme, &#8220;Clouds Midnight,&#8221; a dark-background version my popular first theme, Clouds. Download Clouds Midnight now. Like Clouds, this theme was built to work nicely with HTML, CSS, JavaScript and PHP. As always, please provide feedback if you use it with another language. [...]]]></description>
			<content:encoded><![CDATA[<p>It was only a matter of time, but I&#8217;ve created a second TextMate theme, &#8220;Clouds Midnight,&#8221; a dark-background version my popular first theme, <a href="/2009/07/clouds-a-textmate-theme/">Clouds</a>.</p>
<p><a href="/uploads/clouds-midnight.zip">Download Clouds Midnight now.</a></p>
<p>Like Clouds, this theme was built to work nicely with HTML, CSS, JavaScript and PHP. As always, please provide feedback if you use it with another language.<span id="more-142"></span></p>
<p>I&#8217;ve been developing this dark version for a couple of weeks now, and I&#8217;ve added some new highlighting that isn&#8217;t found in Clouds: HTML attributes are now a different color to stand out from the tag name (thank you to the talent <a href="http://www.marcamos.com">Marc Amos</a> of <a href="http://www.bostonwebstudio.com">Boston Web Studio</a> for this suggestion). I&#8217;ve been using this with my favorite 14px Inconsolata-dz (as pictured below), but I&#8217;ve found that this also works quite well with the old stand-by of 10px Monaco with Anti-Alias turned off.</p>
<div id="attachment_143" class="wp-caption aligncenter" style="width: 440px"><img class="size-full wp-image-143" title="clouds-midnight" src="http://blog.suredev.com/wp-content/uploads/2009/10/clouds-midnight.png" alt="The New Clouds Midnight" width="430" height="516" /><p class="wp-caption-text">The New Clouds Midnight</p></div>
<p>So, if you want it, <a href="/uploads/clouds-midnight.zip">here it is</a>.</p>
<h2>How to Install a TextMate Theme</h2>
<p>There are a couple of ways you can do this: you can double-click on the file inside the zip file download, and assuming you have TextMate installed, the theme should load up. </p>
<p>Or, you’ll want to drop the file inside of the zip file download into:<br />
<code>~/Library/Application Support/TextMate/Themes</code></p>
<p>Then, go into TextMate’s preferences, choose the Fonts &amp; Colors tab and choose “Clouds Midnight” from the drop-down. Poof, done.</p>
<p>And that&#8217;s that. Again, tell your friends and/or leave me feedback.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.suredev.com/2009/10/clouds-midnight-another-textmate-theme/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Clouds: A TextMate Theme</title>
		<link>http://blog.suredev.com/2009/07/clouds-a-textmate-theme/</link>
		<comments>http://blog.suredev.com/2009/07/clouds-a-textmate-theme/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 01:10:13 +0000</pubDate>
		<dc:creator>Fred LeBlanc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.suredev.com/?p=127</guid>
		<description><![CDATA[I've created a custom TextMate theme called "Clouds." Read more about it, or download it for free.]]></description>
			<content:encoded><![CDATA[<p>Sometimes creativity can manifest itself in weird ways. I&#8217;ve created a new TextMate theme called &#8220;Clouds.&#8221; It&#8217;s a light theme — as you may have guessed — that starts with a white background and grows from there.</p>
<p><a title="Prepare for awesome." href="http://blog.suredev.com/uploads/clouds.zip">Download Clouds now.</a></p>
<p>It was build to work nicely with HTML, CSS, JavaScript and PHP. If you code in other languages, your feedback is encouraged. I&#8217;d love to know how to widen the scope of this theme.<span id="more-127"></span></p>
<p>For best results, I use this theme with Inconsolata-dz, a version of Inconsolata with straight-quotes instead of the weird semi-slanted ones the original font comes with. I suggest you <a href="http://nodnod.net/2009/feb/12/adding-straight-single-and-double-quotes-inconsola/">download Inconsolata-dz</a> and use it anti-aliased at size 14px. It&#8217;s a little larger than you may be used to, but give it an hour and you&#8217;ll never go back.</p>
<p>Here are some poorly laid out example with ridiculous content. You should be looking at the colors, not the code.</p>
<div id="attachment_134" class="wp-caption alignnone" style="width: 482px"><img class="size-full wp-image-134" title="HTML" src="http://blog.suredev.com/wp-content/uploads/2009/07/picture-5.png" alt="Clouds with HTML" width="472" height="302" /><p class="wp-caption-text">Clouds with HTML</p></div>
<div id="attachment_129" class="wp-caption alignnone" style="width: 437px"><img class="size-full wp-image-129" title="JavaScript" src="http://blog.suredev.com/wp-content/uploads/2009/07/picture-2.png" alt="Clouds with JavaScript" width="427" height="263" /><p class="wp-caption-text">Clouds with JavaScript</p></div>
<div id="attachment_130" class="wp-caption alignnone" style="width: 433px"><img class="size-full wp-image-130" title="PHP" src="http://blog.suredev.com/wp-content/uploads/2009/07/picture-3.png" alt="Clouds with PHP" width="423" height="340" /><p class="wp-caption-text">Clouds with PHP</p></div>
<div id="attachment_139" class="wp-caption alignnone" style="width: 586px"><img class="size-full wp-image-139" title="CSS!" src="http://blog.suredev.com/wp-content/uploads/2009/07/picture-6.png" alt="Clouds with CSS" width="576" height="223" /><p class="wp-caption-text">Clouds with CSS</p></div>
<p>Like what you see? <a title="Do it! Do it!" href="http://blog.suredev.com/uploads/clouds.zip">Get Clouds now</a>.</p>
<h2>How to Install a TextMate Theme</h2>
<p>You&#8217;ll want to drop the file inside of the zip file download into:<br />
<code>~/Library/Application Support/TextMate/Themes</code></p>
<p>Then, go into TextMate&#8217;s preferences, choose the Fonts &amp; Colors tab and choose &#8220;Clouds&#8221; from the drop-down. Poof, done.</p>
<p>Tell your friends, and give me feedback!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.suredev.com/2009/07/clouds-a-textmate-theme/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Encapsulation in Project Management</title>
		<link>http://blog.suredev.com/2009/04/encapsulation-in-project-management/</link>
		<comments>http://blog.suredev.com/2009/04/encapsulation-in-project-management/#comments</comments>
		<pubDate>Sat, 11 Apr 2009 18:01:36 +0000</pubDate>
		<dc:creator>Fred LeBlanc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://blog.suredev.com/?p=86</guid>
		<description><![CDATA[Learn why object-oriented programming's greatest trick also works wonders for project management.]]></description>
			<content:encoded><![CDATA[<p>Encapsulation is a concept used in object-oriented programming that allows code to scale and be refactored without taking down the entire system. In coding, encapsulation states that my code can call a function (giving it the required parameters) and it will get the same result back every time exactly as expected without needing to know what went on inside the function itself.</p>
<p>When translated to project management, encapsulation can increase productivity, ingenuity, quality, trust and morale. It establishes a connection between responsibility and authority — a key component of project management.<span id="more-86"></span></p>
<h3>First Things First, Defining Encapsulation</h3>
<p>Simply put, encapsulation is abstracting the <em>completion</em> of a task from <em>how</em> that task gets completed. These two aspects are connected by something called an &#8220;interface<em>.</em>&#8221;</p>
<h3>Interfaces</h3>
<p>When most people in our industry hear the word &#8220;interface,&#8221; they think of a &#8220;user-interface.&#8221; Obviously, a user-interface <em>is</em> an interface, but it&#8217;s just one kind. Since it is the most common, let&#8217;s roll with it. When users are using functionality that you&#8217;ve created — a contact form, for example — they are looking to accomplish a task: they want to ask a question to which you&#8217;ll answer.</p>
<p>The instructions that you provide, as well as the text-fields and buttons you give them are the interface by which the task is started. By validating the form, you are ensuring that the user has provided all of the required information needed to accomplish the task. After form submission, the user is alerted that someone will be in touch within two business days.</p>
<p>And a day later, the question is answered.</p>
<h3>The Glory of Encapsulation</h3>
<p>Notice that before that last sentence I left out a lot of stuff? How did the message get delivered? Via email or text message? What research or resources went into finding out the answer?</p>
<p>The glory of encapsulation is that to the user, these things doesn&#8217;t matter.</p>
<p><img class="size-full wp-image-94 alignright" title="interface" src="http://blog.suredev.com/wp-content/uploads/2009/04/interface.gif" alt="interface" width="320" height="426" />Here is a less technical example of encapsulation at work. A kid wants a green ball, so he asks the interface for one. In a couple of minutes, he is provided with the ball, exactly like he asked for.</p>
<p><em>(Look at how happy he is!)</em></p>
<p>Where did the ball come from? What&#8217;s on the other side of this wall that create these balls? How many people are over there studying and researching to create better and more cost-effective balls? As long as what came out was exactly what was expected by the kid, none of these questions matter to him. He fulfilled the interface requirements (providing the shape and color), and got what he wanted. If he asked the interface for the same shape and color again, an identical result would come out.</p>
<h3>How This Applies to Project Management</h3>
<p>Encapsulation should be used in day-to-day project management to solve three common management dilemmas:</p>
<ol>
<li>Micromanagement</li>
<li>&#8220;Too many cooks in the kitchen&#8221;</li>
<li>Responsibility without authority</li>
</ol>
<p>Step back for a moment and consider the bigger picture: the contract with your client is nothing but a large interface.</p>
<p>Your client brought you a project request, an amount of money they will pay for it and the time by which it must be completed. You&#8217;ve agreed to get it done. You shake hands to signify that the interface&#8217;s parameters were fulfilled successfully.</p>
<p>From here, most of the particulars of how the project gets done isn&#8217;t important to clients, as long as you deliver exactly what is expected on-time and on-budget.</p>
<p>In turn, you can think of <em>that</em> project as being a collection of smaller &#8220;sub-projects.&#8221; Assign one of your team members to be a &#8220;sub-project manager&#8221; for each of those sub-projects, making that person solely responsible for seeing it through. (Or, to continue the green ball metaphor, you be the kid and they&#8217;re the guy behind the wall.)</p>
<p>Create an interface with them:</p>
<ul>
<li>Describe in detail what must be accomplished to complete the sub-project</li>
<li>Set the time and date by which must be completed</li>
<li>Set any limits on a budget for them to work with</li>
<li>Confirm that they understand the task that they are responsible for</li>
<li>Inform them that they have the authority to use any means available to them</li>
</ul>
<h3>And Then What?</h3>
<p>And then you turn them loose and trust them to make you proud.</p>
<p>Show up at the agreed-upon time, collect your agreed-upon deliverables as was defined in the interface and move onto the next sub-project. Just like the kid in the example: who knows what went on behind those bricks — your sub-project manager may have recruited other team members, may have made deals with other teams around the office creating interfaces of their own, or may have even ask their NASA-engineer brother for help on the weekends.</p>
<p>Most importantly: who cares?</p>
<p>Part of your sub-project manager&#8217;s responsibility is ensuring that any new interfaces that they&#8217;ve chosen to execute fits inside the interfaces they&#8217;ve already been bound to fulfill. Giving this responsibility-with-authority empowers your team members to be more than just &#8220;the people that do the work.&#8221; They become &#8220;people that get the work done.&#8221; Your trust and confidence in their ability to make things happen boosts team moral and relieves you of the stress of juggling too many items at once.</p>
<p>As a project manager you can&#8217;t be expected to be a master of every skill required to complete your project, you just need to know what isn&#8217;t possible. With that in mind, let the people on your team do what they were hired for: creating the most appropriate solution for the task they&#8217;ve been given. This leads to higher efficiency and, typically, better results.</p>
<h3>And That&#8217;s It?</h3>
<p>Well, rinse and repeat.</p>
<p>Encapsulate each of your sub-projects until all of them are complete. Of course, it&#8217;s impossible to fully stay away as a project manager. After all, while internally your team fully trusts encapsulation, the client paying for all of this is going to want updates.</p>
<p>It may be worth setting up milestones as part of your interfacing with your sub-project managers. Let them know that you&#8217;ll need updates to coincide with your schedule. Try not to spring these updates on them as they, like you, have a schedule of how things are getting done.</p>
<p>Finally, once your project launches, step back and ask the magic question: how did that go?</p>
<h3>Review for Efficiency</h3>
<p>It will take some tweaking to adjust the size of the sub-projects so that your team members (sub-project managers) don&#8217;t become either bored <em>or</em> overwhelmed. Have a small internal review after each sub-project completes to make sure your project is still on track and your team&#8217;s spirits are high.</p>
<p>Through encapsulation, everyone in the team gets empowered to make decisions. Having the control to get things done the way each person individually works best lowers the overall project stress and improves the results. So give encapsulation a try; start small and work your way up. You&#8217;ll be amazed at the results that you start seeing right away.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.suredev.com/2009/04/encapsulation-in-project-management/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Shutting Up YSlow</title>
		<link>http://blog.suredev.com/2009/04/shutting-up-yslow/</link>
		<comments>http://blog.suredev.com/2009/04/shutting-up-yslow/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 19:15:18 +0000</pubDate>
		<dc:creator>Fred LeBlanc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.suredev.com/?p=65</guid>
		<description><![CDATA[How to go from a D or an F to an A with Firebug's YSlow component.]]></description>
			<content:encoded><![CDATA[<p>Today I took the time to streamline the <a href="http://suredev.com">new SureDev site</a> and actually investigated what each aspect of the YSlow Firebug extension was complaining about. Since the solutions to each were relatively easy to implement but a bit scattered to find around the web, here&#8217;s a full list of the things I did in my <code>.htaccess</code> to go from a D-grade to an A.</p>
<p>Oh, this post assumes you&#8217;re using Apache, which is what I use. If anyone has advice on other webservers, please leave comments about it.<span id="more-65"></span></p>
<h3>1. Make Fewer HTTP Requests</h3>
<p>This one is pretty self-explanatory. If you have a bunch of images all over your site, you&#8217;re going to trigger this one. Try using a <a href="http://blog.mozilla.com/webdev/2009/03/27/css-spriting-tips/">spriting technique</a> for multiple little icons, or removing images all together.</p>
<p>Remember: people are looking for your content, and generally most of that comes over tied to your base document. Don&#8217;t weigh them down with bells and whistles unless it&#8217;s enhancing your content or enhancing the site&#8217;s brand.</p>
<h3>2. Use a CDN</h3>
<p>Alright, I cheated a little on this one. My website is small, and I don&#8217;t anticipate landing tens of thousands of hits per day. That said, it didn&#8217;t make sense for this one to be tearing my score down. My solution: add my own custom CDN host to Firefox&#8217;s preferences.</p>
<p>To do this, visit <code>about:config</code>.</p>
<p>Right-click in the window of settings and choose <code>New » String</code>. For the first window, enter <code>extensions.firebug.yslow.cdnHostnames</code>. Second, list the domain names that are serving up your content. No quotes, please, just a comma-separated list. And that&#8217;s it. Instant A (as I said, with a bit of cheating).</p>
<h3>3. Add an Expires Header</h3>
<p>You&#8217;ll need Apache to be configured with <code>mod_expires</code> for this one to work. This code can be placed in your site configuration, or — more conveniently — in your site&#8217;s <code>.htaccess</code> file. You&#8217;ll want to add at least two lines to this file:</p>
<blockquote><p><code>ExpiresActive on</code><br />
<code>ExpiresDefault "access plus 30 days"</code></p></blockquote>
<p>The first line turns on expire-headers, the second sets the default expiration for files sent. I went with &#8220;access plus 30 days&#8221; for now, but there are <a href="http://httpd.apache.org/docs/1.3/mod/mod_expires.html">a bunch of other options</a>.</p>
<h3>4. Gzip Components</h3>
<p>For this one, you&#8217;ll need <code>mod_deflate</code> installed. To enable this, add the following line to your <code>.htaccess</code> file:</p>
<blockquote><p><code>AddOutputFilterByType DEFLATE text/html text/javascript</code></p></blockquote>
<p>You can add as many MIME types as you wish to the end of this, just separate them by spaces. I actually had to add a few more to get everything nicely zipped, including <code>text/css</code>, <code>text/plain</code>, <code>text/xml</code> and <code>application/x-javascript</code>.</p>
<p>If you have a file or two that seems to not be getting picked up after installing this, you can use the <a href="https://addons.mozilla.org/en-US/firefox/addon/3829">Live HTTP Headers</a> plug-in for Firefox, hit that file directly and see what MIME type the browser is seeing. Simply add this to the end of your line and you should be all set.</p>
<h3>5. Put CSS at the Top</h3>
<p>You should put all of your calls to CSS files in your page&#8217;s <code>&lt;head&gt;</code> tag. ;)</p>
<h3>6. Put JS at the Bottom</h3>
<p>You should put all of your JavaScript at the bottom of your page, right before the <code>&lt;/body&gt;</code>. This is easy if you&#8217;re practicing <a href="http://en.wikipedia.org/wiki/Unobtrusive_JavaScript">unobtrusive JavaScript</a>.</p>
<h3>7. Avoid CSS Expressions</h3>
<p>I&#8217;ve never used CSS Expressions, so I can&#8217;t really speak much for them, but you probably shouldn&#8217;t use them. Rather than that, use JavaScript or a server-side language to set classes on items you wish to change.</p>
<h3>8. Make JS and CSS External</h3>
<p>I got an <em>n/a</em> on this one, but as a general rule virtually all of my multi-page sites have externally included CSS and JavaScript files. Why? Because this way the browser can cache things, meaning less download time for your users.</p>
<h3>9. Reduce DNS Lookups</h3>
<p>Another one I haven&#8217;t really ever had a problem with. Ideally, you should have as few domains as possible serving up your content. This means to cut back on hot-linking. Browsers will cache DNS lookups, but the timing can be oddly short. (According to Yahoo!, Firefox only caches lookups for 1 minute by default.)</p>
<h3>10. Minify JS</h3>
<p>Your hand-written JavaScript files probably have a lot of comments and new lines in them, and while this is great for readability, these are all wasted bytes your users are downloading. <em>Minifying</em> your JavaScript removes all of these extra characters, but doesn&#8217;t obfuscate your code.</p>
<p>There are websites out there that will take an uploaded JavaScript file and return nicely minified versions to you. I&#8217;ve been using <a href="http://jscompress.com">http://jscompress.com</a> for my files.</p>
<h3>11. Avoid Redirects</h3>
<p>All of the files that you link to should be the files that you&#8217;re loading. Redirecting generally occurs when you link to something that has been moved. For older files, this a reasonable trade-off because who wants to go back and update every single include on sites that no one really looks at anymore?</p>
<p>Something may be said for planning out your file structure ahead of time so that you&#8217;re not always moving things around. That&#8217;s probably a full blog post of its own.</p>
<h3>12. Remove Duplicate Scripts</h3>
<p>This is exactly what it sounds like. This problem usually occurs when either teams working on a site start getting really large (the ol&#8217; &#8220;too many cooks in the kitchen&#8221;), or the number of files that require keeping track of becomes overwhelming. For small- to medium-sized sites, I wouldn&#8217;t think this would be a problem.</p>
<h3>13. Configure ETags</h3>
<p>YSlow has a <a href="http://developer.yahoo.com/performance/rules.html#etags">big explanation about ETags</a> that you can read, but the most important line for me was at the end. If you&#8217;re not going to take advantage of ETags, turn them off. This is a simple one-liner in your <code>.htaccess</code> again:</p>
<blockquote><p><code>FileETag none</code></p></blockquote>
<p>Simple as that. This isn&#8217;t to say that ETags aren&#8217;t worthwhile, but if you decide that they aren&#8217;t something you need at the moment, specifying so in your <code>.htaccess</code> will speed things up and improve your grade.</p>
<h3>And YSlow is Stunned</h3>
<p>The new SureDev has gone from a D (63) to an A (96) with about fifteen minutes worth of work! And call me crazy, but page loads really do <em>feel</em> faster.</p>
<p>It&#8217;s worth noting: I&#8217;m still getting a B in <em>Add an Expires Header</em> because of the Google Analytics tracking script, but I can live with that for now.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.suredev.com/2009/04/shutting-up-yslow/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Meet SureDev, v2*</title>
		<link>http://blog.suredev.com/2009/04/meet-suredev-v2/</link>
		<comments>http://blog.suredev.com/2009/04/meet-suredev-v2/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 04:46:56 +0000</pubDate>
		<dc:creator>Fred LeBlanc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.suredev.com/?p=56</guid>
		<description><![CDATA[Version 2 of the site has been released, and while there are still tweaks being made, things seems stable enough to show people.]]></description>
			<content:encoded><![CDATA[<p>*Beta, of course. :)</p>
<p>Version 2 of the site has been posted live for the world to see, and although there are still a bunch of tweaks that need to be made, things seem stable enough to release. IE users, I can&#8217;t promise you anything yet, but I&#8217;m working on it.<span id="more-56"></span></p>
<div id="attachment_58" class="wp-caption alignleft" style="width: 257px"><img class="size-full wp-image-58" title="new-logo" src="http://blog.suredev.com/wp-content/uploads/2009/04/new-logo.gif" alt="The New SureDev" width="247" height="181" /><p class="wp-caption-text">The New SureDev</p></div>
<p>This version has a number of changes from the first. Besides the obvious (new look, new branding, much lighter), we now have a nicely integrated blog. Hopefully I can come up with enough nuggets of quasi-wisdom to drive people back to the site — a problem that the first version had.</p>
<p>Also, our news and announcement platform has changes from a custom-build CMS tool to Twitter (if you didn&#8217;t know already, we&#8217;re <a href="http://twitter.com/suredev">@suredev</a>). I encourage you to follow us for the latest updates and for keeping in touch. Don&#8217;t worry, you won&#8217;t get flooded with messages, and I certainly <a href="http://blog.suredev.com/2009/04/retweet-etiquette/">won&#8217;t be retweeting my posts on my personal Twitter account</a>.</p>
<p>So there you have it. Your thoughts, ideas, questions and comments are welcomed (and encourage) as always. I look forward to posting a bunch here, updating the site with a lot of great work, and building a bunch of cool things to share with you all.</p>
<p>Ready? Go!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.suredev.com/2009/04/meet-suredev-v2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retweet Etiquette</title>
		<link>http://blog.suredev.com/2009/04/retweet-etiquette/</link>
		<comments>http://blog.suredev.com/2009/04/retweet-etiquette/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 18:11:09 +0000</pubDate>
		<dc:creator>Fred LeBlanc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Social Networking]]></category>

		<guid isPermaLink="false">http://blog.suredev.com/?p=50</guid>
		<description><![CDATA[There’s been a growing trend lately amongst people that have more than one Twitter account: unwanted retweeting. Here’s something to keep in mind while you walk the line of multiple Twitter accounts.]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been a growing trend lately amongst people that have more than one Twitter account: <em>unwanted retweeting</em>. Here&#8217;s something to keep in mind while you walk the line of multiple Twitter accounts.<span id="more-50"></span></p>
<h3>The Accounts I&#8217;m Talking About</h3>
<p>My target for this complaint is actually people just like me: I have a personal twitter account (<a href="http://twitter.com/fredleblanc">@fredleblanc</a>), which I use for my day-to-day things of what I&#8217;m doing, and then my &#8220;business&#8221; account (<a href="http://twitter.com/suredev">@suredev</a>). I post my company announcements through this account because it&#8217;s more interactive than a broadcast email list, much more viral, easier to update and —possibly the most important of all — limits my wordiness.</p>
<h3>The Problem</h3>
<p>I&#8217;ve seen an increasing trend in the above-described users of retweeting their business&#8217;s company posts on their personal account — not just now and then, but virtually every non-replying post. These posts usually happens within minutes (and sometimes seconds) of one another.</p>
<h3>The Thought</h3>
<p>The joy of Twitter is that I can choose the users that I wish to follow, not be forced into faux-friendships just to appease acquaintances (like on some other popular social networking sites). It can be tempting to tap into the potential of your personal account&#8217;s following crowd of users for retweeting your business&#8217;s latest accomplishments or announcements, but there&#8217;s a good chance that they&#8217;re not interested.</p>
<p>If people (friends, family, followers) <em>are</em> interested in the things your company has to announce, they will follow your company&#8217;s Twitter name as well.</p>
<p>The people that love you so much that they follow both you <em>and</em> your business are getting hit twice with information. In other words: your biggest fans and are being hit with the largest burden. The signal-to-noise ratio of Twitter is dangerous enough, and doubling your posts just adds to that.</p>
<p>Sometimes the personal excitement about something you&#8217;ve accomplished at your business — launching a project, for example — is something you want to post about personally. Under this rule of etiquette (Twittiquette?) posting the same fact on both accounts is acceptable, but each should bring something new to the table.</p>
<p>For example, my company&#8217;s announcement is more matter-of-factly worded, like &#8220;Launched BobsWidgets.com!&#8221; Compare this to something more loosely offered from your personal account, such as &#8220;Finally just launched BobsWidgets.com! A lot of hard work, but well worth it. Go look!&#8221;</p>
<p>Same information, different insight.<br />
Company delivery: fact. Personal delivery: friendly fact.</p>
<p>If you simply retweet every post your company makes, why would anyone bother following both names? Why should they?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.suredev.com/2009/04/retweet-etiquette/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Anatomy of a 404</title>
		<link>http://blog.suredev.com/2009/03/anatomy-of-a-404/</link>
		<comments>http://blog.suredev.com/2009/03/anatomy-of-a-404/#comments</comments>
		<pubDate>Tue, 31 Mar 2009 05:03:52 +0000</pubDate>
		<dc:creator>Fred LeBlanc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Spinning Plates]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.suredev.com/?p=34</guid>
		<description><![CDATA[It&#8217;s important to have, so thus: tonight&#8217;s project was spent creating a page-not-found page. I went against the grain on this one, choosing to berate my user rather than even remotely try to help them. Why? For one thing, they should never see this page anyway, and two, if they do see it, I want [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_33" class="wp-caption alignright" style="width: 310px"><img class="size-medium wp-image-33" title="broken-page" src="http://blog.suredev.com/wp-content/uploads/2009/03/picture-4-300x274.png" alt="Shattered glass and everyting." width="300" height="274" /><p class="wp-caption-text">Shattered glass and everything.</p></div>
<p>It&#8217;s important to have, so thus: tonight&#8217;s project was spent creating a page-not-found page. I went against the grain on this one, choosing to berate my user rather than even remotely try to help them. Why? For one thing, they should never see this page anyway, and two, if they do see it, I want them to have a little fun.<span id="more-34"></span></p>
<p>I give you: the interactive 404 page.</p>
<p>It fits with the theme of this site and what I want it to be: relaxed and enjoyable. You have to repair the crack before you can actually click on anything useful to move on. This fixes two issues:</p>
<ol>
<li>It&#8217;s a problem having a gigantic GIF over your page if you want to click anything underneath it.</li>
<li>Interactivity is fun.</li>
</ol>
<p>If you&#8217;d like to give this page a whirl for yourself, <a href="http://blog.suredev.com/oh-noooo">be my guest</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.suredev.com/2009/03/anatomy-of-a-404/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Spinning Plates?</title>
		<link>http://blog.suredev.com/2009/03/spinning-plates/</link>
		<comments>http://blog.suredev.com/2009/03/spinning-plates/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 17:21:07 +0000</pubDate>
		<dc:creator>Fred LeBlanc</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Spinning Plates]]></category>

		<guid isPermaLink="false">http://blog.suredev.com/?p=17</guid>
		<description><![CDATA[Learn why this blog is called "Spinning Plates" relates to, and an overview of what this blog is hopefully going to be about.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been told more than once that project management is like spinning plates; you&#8217;ve got to stay attentive to keep them all going without letting anything drop. Taking a step back, I see that all areas of life are like that — except <em>riding a bike</em> of course, the cycling industry has an incredible PR firm.</p>
<p>My plan for this blog is to describe how I keep my plates spinning, and from time-to-time offer some advice on how to keep yours spinning, too.<span id="more-17"></span></p>
<p>From the start, I&#8217;m hoping to post thoughts, stories and helpful tidbits about all of the things I deal with in my professional life:</p>
<ul>
<li> project management</li>
<li>web development</li>
<li>web design</li>
<li>website planning</li>
<li>client relationships</li>
<li>writing content</li>
<li>making money</li>
<li>doing what I love</li>
</ul>
<p>Hopefully all with a laugh or two along the way.</p>
<p>And with that, I add another plate to spin: blogging. Good luck to me, and good luck to you. Your thoughts are welcomed and encouraged.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.suredev.com/2009/03/spinning-plates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

