<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1.1" -->
<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/"
	>

<channel>
	<title>lifeBLUE Blogs</title>
	<link>http://www.lifeblue.com/blogs</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Fri, 03 Sep 2010 14:27:46 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.1</generator>
	<language>en</language>
			<item>
		<title>Inspirational Design Sites</title>
		<link>http://www.lifeblue.com/blogs/2010/09/03/inspirational-design-sites/</link>
		<comments>http://www.lifeblue.com/blogs/2010/09/03/inspirational-design-sites/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 14:19:49 +0000</pubDate>
		<dc:creator>tautfest</dc:creator>
		
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.lifeblue.com/blogs/2010/09/03/inspirational-design-sites/</guid>
		<description><![CDATA[Since my last blog entry was on the ills of creative block, I figured it appropriate to follow up with a list of design blogs/sites that I use on a regular basis to keep up with what&#8217;s hot in the design world. (I know this topic has been done before on the LB blog, but…not [...]]]></description>
			<content:encoded><![CDATA[<p>Since my last blog entry was on the ills of creative block, I figured it appropriate to follow up with a list of design blogs/sites that I use on a regular basis to keep up with what&#8217;s hot in the design world. (I know this topic has been done before on the LB blog, but…not by me! ) </p>
<p>I&#8217;ve talked before about how important I think it is as a designer to immerse yourself in the <a href="http://www.lifeblue.com/blogs/2010/03/16/a-little-bit-about-graphic-design-and-the-creative-process-a-blog-by-benjamin-tautfest/">world of design</a> . Personally, I sometimes obsess over it to the point of it being a bit unhealthy, but what can I say - I love the stuff.  </p>
<p>When I was a design student at the Art Institute of Dallas, the library was full of design annuals, books, &#038; magazines on design of all kinds.  Inspiration was never more than a library trip away. But have you ever looked at the prices of these annuals and publications? Man, they&#8217;re not cheep! That&#8217;s why a high quality design site is worth gold; they&#8217;re super accessible and best of all…FREE!   </p>
<p>Here&#8217;s a list of some goodn&#8217;s:</p>
<p>1. <a href="www.logopond.com">Logo Pond</a><br />
Welcome to my latest obsession. Logo Pond is a free site where some of the biggest and best logo designers (along with anyone else who wants to upload their work) post designs for critique, feedback, and show. It&#8217;s a huge resource for inspiration, and a great place to get critiques from some of the best in the business. If your submitted logo makes the gallery (and our Taste of Watters Creek logo recently has), you&#8217;ve done something outstanding.</p>
<p>2. <a href="www.logodesignlove.com">Logo Design Love</a><br />
Moving on with logo sites, Logo Design Love is a great place to find articles on what&#8217;s going on in the world of logo design, articles on the logo design process, and interviews from top logo designers.</p>
<p>3. <a href="www.logolounge.com">Logo Lounge</a> (I promise not all of these will be logo sites!)<br />
Logo Lounge is the website of the famed Logo Lounge book series. Without being a member, access to the site is limited, but there&#8217;s still some good content to get at, like the logo trends article. If you are a member, you can upload logos to be considered for their publication (fingers crossed for a future pick from the LB!). </p>
<p>4. <a href="www.underconsideration.com">Under Consideration</a><br />
This site mostly shows brands who have currently undergone image overhauls or revamps and gives commentary. Sometimes the commentary errs on the negative side, but it&#8217;s cool to see who is updating and what they&#8217;re updating to.</p>
<p>5. <a href="www.behance.net">Behance</a><br />
Behance has got to be my all-time favorite. This place is a great resource for creative professionals of all kinds. Users upload projects and the best ones get showcased in the gallery. Let me tell you, the work here is hot, hot, hot! It includes everything from fashion, product design, photography, web, branding, print, illustration, painting, animation, architecture, interior design, and sound can be found here. It is truly inspiring! </p>
<p>6. <a href="www.smashingmagazine.com">Smashing Magazine</a><br />
Geared for design on the web, Smashing is good for both graphic guys and developers alike. They have informative articles, interviews, themed showcases, great inspirational entries, and I love all their freebies - specifically the icon sets.</p>
<p>7. <a href="www.lifelounge.com/blog/luke">Luke Lucas</a><br />
Luke Lucas is an Australian designer who deals mostly with typography illustration. His blog is mostly about the aforementioned. It&#8217;s not something I get the pleasure to do very often - if at all - in my professional career, but it&#8217;s super inspiring to me and I respect the heck out of it. Overall, there&#8217;s a lot of cool artsy stuff there.</p>
<p>8. <a href="www.ffffound.com">fffffound</a><br />
This site is pretty cool - sometimes a little too cool. At times it&#8217;s too much of a hipsters paradise for me, but there&#8217;s also a lot of stunning cutting edge imagery that can be found here. Users can posts and share their favorite found images from around the web, mostly having to do with art and design.  Warning - sometimes the images contain &#8220;artsy&#8221; nudity and can be rather racy. Gasp! Not my thing at all, but there&#8217;s lots of wholesome design goodness at ffffound too.</p>
<p>9. <a href="www.designobserver.com">Design Observer</a><br />
Founded by Pentagram&#8217;s Michael Bierut and others, Design Observer is a more intellectual approach to the design world. There are lots of well written essays and commentary for when you feel like getting all brainy about design.</p>
<p>10. <a href="www.underconsideration.com/fpo/">Under Consideration FPO</a><br />
Aka, For Print Only, is all about topnotch projects from the wonderful world of print design. What&#8217;s really cool about this site is that it shows a project overview and details, including quantity produced, production cost, production time, print method, dimensions, paper stock used, etc. For a design nerd me, it&#8217;s really cool to see all of those real-world specifications. Inspiration + real-world education = a better designer.</p>
<p>11. <a href="www.pagecrush.com">Page Crush</a><br />
A self proclaimed inspirational design hub, page crush is chalk full of examples of well designed websites. It&#8217;s a nice stop to gather some quick ideas for web layouts if you&#8217;re feeling a little creatively stumped.</p>
<p>12. <a href="blog.iso50.com">ISO50</a><br />
This is the blog of graphic design guru Scott Hansen aka ISO50 I&#8217;ve been a long-time fan of ISO50&#8217;s work. His blog is a nice showcase of design stuff that inspires him, including a lot of retro design goodies, as well as some practical information entries like design magazine critiques &#038; overviews.</p>
<p>13. <a href="www.thecssawards.com">The CSS Awards</a><br />
Another web design specific blog a lot like page crush. What I really like about this site is that it ranks every featured site on a scale of 1 - 10 on the criteria of design, creativity, usability, and content. The rating is displayed in a cool color-coded graphic and the featured work is always top-notch.</p>
<p>14. <a href="www.fwa.com">FWA</a><br />
FWA stand for Favorite Website Award. It is a recognized industry award program and inspirational portal. If you&#8217;ve won an FWA, you&#8217;ve done something truly amazing. When you want to be floored &#038; inspired by some forward-thinking outside of the box conceptual madness, this is the place.  These sites push boundaries in design, functionality, and content. I heart FWA.</p>
<p>15. <a href="aiga.org">AIGA</a><br />
In their own words, &#8220;AIGA, the professional association for design, stimulates thinking about design, demonstrates the value of design and empowers the success of designers at each stage of their careers. AIGA’s mission is to advance designing as a professional craft, strategic tool and vital cultural force. Founded in 1914, AIGA remains the oldest and largest professional membership organization for design, and is a nonprofit, 501(c)(3) educational institution.&#8221; Couldn&#8217;t have said it better myself! Their site is a great stop for all things design, including inspiration, professional resources, education, the business of design, and articles.</p>
<p>Well there you have it, folks - 15 of my favorite design site bookmarks.  If you&#8217;re a design junkie like me who has a huge scrolling list of bookmarks of design sites &#038; blogs, I hope I&#8217;ve turned you on to one or two that you haven&#8217;t been to before.  If you&#8217;re new to the world of design sites, well then&#8230;welcome to the obsession. Is there one I missed? Please leave comments with your favorite design site and maybe I&#8217;ll feature it in my next blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lifeblue.com/blogs/2010/09/03/inspirational-design-sites/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creative Advertising At Its Finest!</title>
		<link>http://www.lifeblue.com/blogs/2010/08/20/creative-advertising-at-its-finest/</link>
		<comments>http://www.lifeblue.com/blogs/2010/08/20/creative-advertising-at-its-finest/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 16:12:22 +0000</pubDate>
		<dc:creator>ShaunaK</dc:creator>
		
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://www.lifeblue.com/blogs/2010/08/20/creative-advertising-at-its-finest/</guid>
		<description><![CDATA[Do you ever walk by an ad, or a piece of a marketing campaign and think, “Why didn’t I come up with that?” If something makes you take a “double-take”, chances are they did it right.
When it comes to advertising, you basically have anything to work with. From the usual billboards and magazines, to the [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever walk by an ad, or a piece of a marketing campaign and think, “Why didn’t I come up with that?” If something makes you take a “double-take”, chances are they did it right.</p>
<p>When it comes to advertising, you basically have anything to work with. From the usual billboards and magazines, to the toothbrush at the dentist office, or the shopping bag you walk out of the store with. There are only about a million ways you can tie your name to something. But it’s the ideas above and beyond that really catch your eye.</p>
<p>Here are a few of my favorite pieces of creative advertising:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td width="33%" align="center" height="220"><img src="http://www.lifeblue.com/blogs/images/ads/1.jpg" /></td>
<td width="34%" align="center"><img src="http://www.lifeblue.com/blogs/images/ads/2.jpg" /></td>
<td width="33%" align="center"><img src="http://www.lifeblue.com/blogs/images/ads/3.jpg" /></td>
</tr>
<tr>
<td align="center" height="320"><img src="http://www.lifeblue.com/blogs/images/ads/4.jpg" /></td>
<td align="center"><img src="http://www.lifeblue.com/blogs/images/ads/5.jpg" /></td>
<td align="center"><img src="http://www.lifeblue.com/blogs/images/ads/6.jpg" /></td>
</tr>
<tr>
<td align="center" height="220"><img src="http://www.lifeblue.com/blogs/images/ads/7.jpg" /></td>
<td align="center"><img src="http://www.lifeblue.com/blogs/images/ads/8.jpg" /></td>
<td align="center"><img src="http://www.lifeblue.com/blogs/images/ads/9.jpg" /></td>
</tr>
</table>
<p>So, utilize whatever it takes… your only goal is to grab the user. Think creatively and turn your marketing efforts up a notch!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lifeblue.com/blogs/2010/08/20/creative-advertising-at-its-finest/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Picture Speaks a Thousand Words</title>
		<link>http://www.lifeblue.com/blogs/2010/08/13/a-picture-speaks-a-thousand-words/</link>
		<comments>http://www.lifeblue.com/blogs/2010/08/13/a-picture-speaks-a-thousand-words/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 20:33:16 +0000</pubDate>
		<dc:creator>JAM23</dc:creator>
		
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.lifeblue.com/blogs/2010/08/13/a-picture-speaks-a-thousand-words/</guid>
		<description><![CDATA[Web design has transformed a lot over the last decade, and really has progressed allowing designers to express themselves. As a web designer I am constantly looking at examples of great web design and trying to keep us ahead of the curve with our design concepts. 
One important aspect I learned in my research is [...]]]></description>
			<content:encoded><![CDATA[<p>Web design has transformed a lot over the last decade, and really has progressed allowing designers to express themselves. As a web designer I am constantly looking at examples of great web design and trying to keep us ahead of the curve with our design concepts. </p>
<p>One important aspect I learned in my research is the significance of photography in web design. Websites that jumped off the screen to me were simplistic and contained spectacular photography. Photography is a great way to grab the viewer’s eye and keep them fixated on the site. The first thing viewers notice when they visit a website is the photograph. Text is secondary if it is of interest. Our attention span is so short that we predominately look at the photographs and look further if needed. </p>
<p>We recently designed a website for Watters Creek located in Allen, Texas. Below I have the before and after photographs on the site and you can see for yourself the vast difference in the way the photography is used. The revamped version uses photographs that take up a majority of the screen and the rest of the design has a simplistic and inviting look. While the previous version of the site uses a smaller photograph, and the rest of the design is not as clean and takes away from the photography.</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<td width="50%" align="center">
<p><img src="/blogs/images/watterscreek_old.jpg" style="padding: 5px;" /></p>
</td>
<td width="50%" align="center">
<p><img src="/blogs/images/watterscreek.jpg" style="padding: 5px;" /></p>
</td>
</table>
<p>Here are some great examples of websites using impressive photography…   </p>
<p><a href="http://duchyoriginals.com/" rel="nofollow">Duchy Origionals</a></p>
<p><a href="http://www.cathedralmountain.com/" rel="nofollow">Cathedral Mountain Lodge</a></p>
<p><a href="http://www.thetouchagency.co.uk/" rel="nofollow">The Touch Agency</a></p>
<p><a href="http://www.rebeccaruth.co.uk/" rel="nofollow">Rebecca Ruth Photography</a></p>
<p><a href="http://www.rebeccaruth.co.uk/" rel="nofollow">Rebecca Ruth Photography</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.lifeblue.com/blogs/2010/08/13/a-picture-speaks-a-thousand-words/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Uh&#8230; Creative Block&#8230;</title>
		<link>http://www.lifeblue.com/blogs/2010/08/06/uh-creative-block/</link>
		<comments>http://www.lifeblue.com/blogs/2010/08/06/uh-creative-block/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 15:34:51 +0000</pubDate>
		<dc:creator>tautfest</dc:creator>
		
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.lifeblue.com/blogs/2010/08/06/uh-creative-block/</guid>
		<description><![CDATA[As you may be able to tell from my clever blog title, I seem to be suffering from the dreaded creative block. Ugh. What&#8217;s worse is that it&#8217;s just in the attempt to come up with a cool idea for a blog! But while picking at my brain for crumbs of creative intelligence, and acknowledging [...]]]></description>
			<content:encoded><![CDATA[<p>As you may be able to tell from my clever blog title, I seem to be suffering from the dreaded creative block. Ugh. What&#8217;s worse is that it&#8217;s just in the attempt to come up with a cool idea for a blog! But while picking at my brain for crumbs of creative intelligence, and acknowledging that I am indeed starving for tasty nuggets of inspiration, a light - albeit it a very sad, dim pale yellow light - went off in my head to make my blog about…creative block! Brilliant?</p>
<p><img src="/blogs/images/creative_block.jpg" style="padding: 5px; margin: 7px; border: 1px solid #636363" align="right" /></p>
<p>It falls upon all who endeavor in the arts, whether it be commercial or fine, visual or aural, for hire or for fun. Usually - for me, at least - it happens at a time when I really don&#8217;t have time for it. That&#8217;s how it seems anyway. Maybe it&#8217;s because intense concentration is the enemy of inspiration? Maybe. Because you&#8217;re thinking so intently about getting the task at hand completed as you speed frantically down the desert road of ideas, you soon find yourself slamming on the brakes to avoid slamming into the road block barricades suddenly just 40 yards ahead. That can certainly be one of many possible causes, no doubt.</p>
<p>At any rate, creative block happens. It&#8217;s inevitable. So what can one do about it? Here&#8217;s some ideas.</p>
<p><strong>1) Quit.</strong><br />
Maybe creative endeavors just aren&#8217;t your thing. Maybe you&#8217;re just a hack. Maybe you should try another career path, like accounting or being a tax collector for the IRS. They say quitters never win. Well, the world needs losers too.</p>
<p><strong>2) Punch a wall…or someone&#8217;s face.</strong><br />
Nothing like a little rage to get those creative juices flowing. But be careful not to break your hand. Once the creative block has been viciously torn down by your act of blind rage, you&#8217;ll find it nearly impossible to work with your paws all awkwardly bundled up in a cast.</p>
<p><strong>3) Enhance your mind….with substances.</strong><br />
I find anything in the psychedelics family to be the most effective choice here. But if you&#8217;re too wussy to go all out and possibly end up in the loony bin or jail, try a Monster energy drink. **takes 3 massive gulps**</p>
<p><strong>4) Steal. Blatantly.</strong><br />
Go to your favorite design blog, find the first work that sparks an interest in your tiny void of a brain, an rip it off. Literally copy the design, color scheme and layout identically (You will, however, have to change out the content for your own. Bummer.) Chances are if it&#8217;s featured on a design blog, it&#8217;s good, so all of the work has been done for you already. Why bother yourself with being a creative genius when other designers far superior than you already are?</p>
<p>Well there you have it. After 12 years of design experience and a lifetime of being a so-called &#8220;creative&#8221; person, this is what I&#8217;ve come up with - a crapy list of 4 pathetic &#8220;ideas.&#8221;  Pfft!</p>
<p>In all seriousness (just incase you didn&#8217;t pick up on the sarcastic tone of this blog) creative block is a real issue for creative professionals, but I don&#8217;t know that it&#8217;s got any real solutions.  </p>
<p>I read once in a textbook for graphic design that the best thing to do when developing a concept is to not think about it too intently. Keep the problem somewhere at the fore front of your mind, but go about your other business, and when you least expect it - maybe when you&#8217;re taking a shower, sitting on the royal throne, walking your dog, eating pork tacos, vacuuming you hair, shaving your lawn, doing hand stands in the rain, etc. - a solution will come. The catch to this &#8220;method&#8221; is that it requires you not to be in a time crunch. Dang.</p>
<p>Of course, there&#8217;s the almighty sketch book. With your problem in mind, just start sketching. Any design should start with a pencil and paper anyway.</p>
<p>Looking at your favorite design/art blogs/books/magazines can really help too. But remember kids - plagiarism = bad. Being inspired or influenced  = good. Let&#8217;s face it - if you&#8217;re an artist of any kind, you&#8217;re inspired by work that has come before you, and that&#8217;s totally okay. Just be sure to give your work a fresh twist of originality - something to make it your own.</p>
<p>To regurgitate an idea I recently came across on stimulating creativity, embrace randomness. I like this idea. To be able to do this, you can&#8217;t be afraid to fail. You know, failure in the design world can actually be a good thing. Not overall failure of a concept or design, but failure in the initial stages of conceptualizing and comping is okay. These failures can lead you to your successes. The pressure to get it right the first time can be overwhelming and counter productive. So embrace randomness, and don&#8217;t be afraid to fail.  Got it?</p>
<p>Everything else aside, sooner or later the creative block, like the velvet rope at your city&#8217;s hottest night club, will be opened up for your V.I.P. access into exclusive creative utopian bliss! It&#8217;s inevitable.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.lifeblue.com/blogs/2010/08/06/uh-creative-block/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Top 3 Things That PHP 5.3 Brings to the Table</title>
		<link>http://www.lifeblue.com/blogs/2010/07/21/top-3-things-that-php-53-brings-to-the-table/</link>
		<comments>http://www.lifeblue.com/blogs/2010/07/21/top-3-things-that-php-53-brings-to-the-table/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 18:04:17 +0000</pubDate>
		<dc:creator>JMills</dc:creator>
		
		<category><![CDATA[Nerd Matrix]]></category>

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

		<guid isPermaLink="false">http://www.lifeblue.com/blogs/2010/07/21/top-3-things-that-php-53-brings-to-the-table/</guid>
		<description><![CDATA[PHP 5.3 is out and is moving from &#8220;a nice toy to play with&#8221; release into a production ready version of PHP. I for one am ready for this to happen. PHP 5.3 has some really great improvements that will empower programmers to do rock-star level stuff. Here are three things that I&#8217;m itching to [...]]]></description>
			<content:encoded><![CDATA[<p>PHP 5.3 is out and is moving from &#8220;a nice toy to play with&#8221; release into a production ready version of PHP. I for one am ready for this to happen. PHP 5.3 has some really great improvements that will empower programmers to do rock-star level stuff. Here are three things that I&#8217;m itching to use.</p>
<p><strong>Name Spaces</strong><br />
I can&#8217;t think of a more wonderful thing to come to PHP. Right now I have to create class names that look more like paragraphs than anything else. Here&#8217;s a little (fake) example.</p>
<pre><code>
LB_ContentManagement_Helper_Validation_SpecialCharacters::ReplaceAmpersand($content);
</code></pre>
<p>In order to have an <code>__autoload()</code> function we need to have class names that also represent where the file is found. It makes for all kinds of goofy class names. I&#8217;m looking forward to the day when I can just state the namespaces I&#8217;m using and then call the class like this</p>
<pre><code>
SpecialCharacters::ReplaceAmpersand($content);
</code></pre>
<p><strong>Late Static Binding</strong><br />
This is a complex issue with many implications. One of those implications is that you can now call a static method from a variable like so.</p>
<pre><code>
$className = "Users";
$methodName = "Login";

$className::$methodName("bob@domain.com","password");
</code></pre>
<p>Prior to PHP 5.3, this wasn&#8217;t possible. You had to instantiate the class, then call a public method to do the same thing. Now you can call a method outside of the context of strict inheritance. In the above example you could set a different method for different types of logins, such as an admin login vs. a site user. Not the most practical example, but it gives you an idea of what you can do.</p>
<p><strong>Anonymous Functons</strong><br />
Anyone who has done anything with JavaScript will know the power of anonymous functions. They empower the programmer to create a function that can be used as a callback. Here&#8217;s an example.</p>
<pre><code>
function doStuff($arg1, $arg2, $callback)
{
    // do something with the arguments

    $callback();
}

doStuff("1", "2", function() { echo "we just did a callback"; });
</code></pre>
<p>In the above example, the call to the function &#8220;doStuff&#8221; contained an anonymous function. This was then called within &#8220;doStuff&#8221; when all the processing of <code>$arg1</code> and <code>$arg2</code> was finished. This methodology has been a life saver in JavaScript, especially with jQuery, and I&#8217;m glad to see its arrival in PHP.</p>
<p>These and other features are moving PHP forward. I can&#8217;t wait until PHP 5.3 is adopted as the standard so that these new features can be turned into great applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lifeblue.com/blogs/2010/07/21/top-3-things-that-php-53-brings-to-the-table/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Schema Busters – Part 3: Tricks &#38; Tweaks</title>
		<link>http://www.lifeblue.com/blogs/2010/07/16/schema-busters-%e2%80%93-part-3-tricks-tweaks/</link>
		<comments>http://www.lifeblue.com/blogs/2010/07/16/schema-busters-%e2%80%93-part-3-tricks-tweaks/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 20:52:16 +0000</pubDate>
		<dc:creator>J.G. Free</dc:creator>
		
		<category><![CDATA[Nerd Matrix]]></category>

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

		<guid isPermaLink="false">http://www.lifeblue.com/blogs/2010/07/16/schema-busters-%e2%80%93-part-3-tricks-tweaks/</guid>
		<description><![CDATA[More minute methods to further improve your database performance
“Schema Busters” is a multipart technical overview of Database Design elements that you can implement when designing and accessing your database implementation.  In this third section we will discuss several tricks and tweaks to consider when constructing your database schema and queries.  While some of [...]]]></description>
			<content:encoded><![CDATA[<p><em>More minute methods to further improve your database performance</em></p>
<p>“Schema Busters” is a multipart technical overview of Database Design elements that you can implement when designing and accessing your database implementation.  In this third section we will discuss several tricks and tweaks to consider when constructing your database schema and queries.  While some of the proposed methods are fundamental and globally applicable, others are subject to a lot of debate since they are highly situational.  Take the application logic into careful consideration before utilizing these methods since some of the proposed methods can actually work to the detriment of your system.  The examples below are intended for a MySql implementation, but I am confident that similar issues can be resolved in a similar fashion for other database engines.  With that said let’s begin with an extremely MySql specific concern.</p>
<p><strong>MySql Storage Engines and the COUNT Function</strong><br />
While administering your database you may have noticed that MySql has two primary storage engines: MyISAM, which is good for read-heavy applications, and InnoDB, which is good for write-heavy applications.  In general the two have similar performances with the one exception being how they handle the COUNT function.  Before I begin discussing the benefits of using MyISAM’s meta-data collection, I would like to remind readers that InnoDB has considerable benefits when creating an insert/update heavy application which is common in several company intranet applications.  Since a large majority of lifeBLUE’s projects involve front-facing websites wrapped around a back-end management utility, we frequently utilize the MyISAM engine over InnoDB.</p>
<p>MyISAM keeps an internal cache of table meta-data whereas InnoDB keeps no such cache.  One of the values found in this table meta-data is the number of rows, which in turn means any COUNT(*) call has the potential of having minimal costs.  InnoDB, on the other hand, has to read every entry row present in a table to evaluate a COUNT(*) call (which is about as effective as calling SELECT(*) on the table).  The major drawback to utilizing MyISAM is the loss of InnoDB-specific functionality such as stored procedures.</p>
<p><strong>Subqueries vs. Joins</strong><br />
For those who are unfamiliar with the terminology, Subqueries involve the embedding of queries in another query, most commonly in the form of SELECT statements, while a JOIN operation creates a temporary table that holds results from two different tables linked by an identical value in both tables.  Two example queries with the same results are provided below:</p>
<ul>
<li>Subquery:<br />
SELECT d.Id, (SELECT alias FROM resources r WHERE r.Id = d.Id) AS alias FROM document d
</li>
<li>Join:<br />
SELECT d.Id, r.alias FROM resources r INNER JOIN document d ON (r.Id = d.Id) GROUP BY r.Id
</li>
</ul>
<p>A general rule of thumb is to replace correlated subqueries with joins.  A correlation occurs when the subquery references a table from the outer query.  In our example, the subquery can be considered correlated since it references the d.Id property from the document table which is contained in the outer query.  It is also important to point out that implied JOIN operations are not as efficient as explicit JOIN operations since the join condition is not specified immediately resulting in larger table reads.  Above we utilized an explicit JOIN operation and below we show an example of an implicit JOIN operation:</p>
<ul>
<li>SELECT d.Id, r.alias FROM resources r, document d WHERE r.Id = d.Id</li>
</ul>
<p>If you want to take it a step further, really crack down on the type of joins being utilized to reduce the size of returned datasets (types of JOIN operations explained <a href="http://msdn.microsoft.com/en-us/library/zt8wzxy4.aspx">here</a>).</p>
<p><strong>Table Partitioning</strong><br />
This practice requires a strong understanding of the application logic, and should be evaluated from both a usability and development standpoint.  There are two approaches to table partitioning: read-optimization and write-optimization.  Let’s start with read-optimization:<br />
The idea is to simply maintain a smaller dataset of frequently accessed data and another table to hold infrequently accessed data.  Imagine that you have an extremely generic content management system where each page contains an alias, description, url, and html body with the following table layout:</p>
<p>CONTENT</p>
<table>
<tr>
<td>
contentId
</td>
<td>
alias
</td>
<td>
description
</td>
<td>
url
</td>
<td>
HTML
</td>
</tr>
</table>
<p>The alias and description are simply to give a name and summary of the content and the url is obviously the page location.  The HTML body will most likely only be accessed when the page is called directly, whereas the alias, description, and url may be displayed in search results and recent item listings.  Our resultant tables would look like this:</p>
<p>CONTENT_FREQUENT</p>
<table>
<tr>
<td>
contentId
</td>
<td>
alias
</td>
<td>
description
</td>
<td>
url
</td>
</tr>
</table>
<p>CONTENT_INFREQUENT</p>
<table>
<tr>
<td>
contentId
</td>
<td>
HTML
</td>
</tr>
</table>
<p>For write-optimization we are implementing the same exact practice, just with the understanding that we are separating the frequently updated values of a table from the infrequently updated values.</p>
<p><strong>Data Types &#038; Size Constraints</strong><br />
There are several ways to tighten up your data usage by manipulating size constraints and data types.  I will provide a few examples and leave the rest to the imagination.  By now you should understand that VARCHARs maintain a variable length byte to keep track of how many characters are contained in the VARCHAR entry.  If we are handling data entries that have a known fixed size, such as zipcodes, it is beneficial to use the CHAR data type as opposed to a VARCHAR since we are eliminating the need of the length determining byte.  This may seem small at first, but after a thousand entries we are effectively eliminating a kilobyte of additional data.  The worst memory hits come in the form of redundant data entries.  It is important to implement proper database normalization to reduce redundant entries as well as other undesirable attributes.  See my first Schema Busters entry for more information on database normalization.</p>
<p><strong>Conclusion</strong><br />
If you have been following along from the first entry in this series you should now have enough information to crank out an extremely clean and efficient database design.  If there are areas that still remain grey, I highly recommend picking up a textbook on database systems such as the Fundamentals of Database Systems by Elmasri &#038; Navanthe.  Also be sure to check back for future entries on improving database and application efficiency.  From this point on we will be moving into application-level concepts to improve efficiency and promote usability.  Any additional related database entries can be expected in the form of an addendum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lifeblue.com/blogs/2010/07/16/schema-busters-%e2%80%93-part-3-tricks-tweaks/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Your website doesn’t have to look like a website… I promise.</title>
		<link>http://www.lifeblue.com/blogs/2010/07/06/your-website-doesn%e2%80%99t-have-to-look-like-a-website%e2%80%a6-i-promise/</link>
		<comments>http://www.lifeblue.com/blogs/2010/07/06/your-website-doesn%e2%80%99t-have-to-look-like-a-website%e2%80%a6-i-promise/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 14:13:08 +0000</pubDate>
		<dc:creator>ShaunaK</dc:creator>
		
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.lifeblue.com/blogs/2010/07/06/your-website-doesn%e2%80%99t-have-to-look-like-a-website%e2%80%a6-i-promise/</guid>
		<description><![CDATA[In our office, we have a constant debate about traditional “webby”  design vs. “conceptual” design. I would like to set the record straight, by saying  your website absolutely, positively, 100% guaranteed, does NOT have to look  like a website.
When you think of a website, what do you think of? Lines, boxes,  [...]]]></description>
			<content:encoded><![CDATA[<p>In our office, we have a constant debate about traditional “webby”  design vs. “conceptual” design. I would like to set the record straight, by saying  your website absolutely, positively, 100% guaranteed, does NOT have to look  like a website.</p>
<p>When you think of a website, what do you think of? Lines, boxes,  solid colors, horizontal navigation, and the occasional drop shadow? Structure,  structure, structure. Sounds fun and innovative, right? Not.</p>
<p>Your website is representing YOU. So don’t you want it to be  as awesome as you are? Are you square? Probably not. Are you boring? I hope  not. Are you a solid color? Doubt it. So why does your website have to be? Think of it more like a digital self portrait.</p>
<p>Take your website on a walk along the beach, back in time to  black and white TV, in the middle of a rock concert, on a deserted island, you  name it, we can do it.</p>
<p>Don’t be afraid to break the mold. Its 2010, lets scrap the  straight lines, symmetric text, and get with the times. We&#8217;re all sitting around  lifeBLUE dying to be the ones to take you to that next level, all you have to  do is give us the green flag!</p>
<p>We know the design lingo, but the chances of you visualizing in  your head, what we have in ours, is probably slim. <em>(warning, you probably  wouldn’t want to either)</em>. So let’s break it down in a visual way to help you  see what the possibilities are, from a few companies that turned the heat up a notch:</p>
<table width="100%" border="0" cellspacing="0" cellpadding="5">
<tr>
<td width="33%" align="center" height="195"><img src="http://www.lifeblue.com/blogs/images/concept/1.jpg" /></td>
<td width="34%" align="center"><img src="http://www.lifeblue.com/blogs/images/concept/2.jpg" /></td>
<td width="33%" align="center"><img src="http://www.lifeblue.com/blogs/images/concept/5.jpg" /></td>
</tr>
<tr>
<td align="center" height="195"><img src="http://www.lifeblue.com/blogs/images/concept/7.jpg" /></td>
<td align="center"><img src="http://www.lifeblue.com/blogs/images/concept/9.jpg" /></td>
<td align="center"><img src="http://www.lifeblue.com/blogs/images/concept/6.jpg" /></td>
</tr>
<tr>
<td align="center" height="195"><img src="http://www.lifeblue.com/blogs/images/concept/4.jpg" /></td>
<td align="center"><img src="http://www.lifeblue.com/blogs/images/concept/8.jpg" /></td>
<td align="center"><img src="http://www.lifeblue.com/blogs/images/concept/3.jpg" /></td>
</tr>
</table>
<p>So from our team to you&#8230; Please, challenge us. No really, I  dare ya.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lifeblue.com/blogs/2010/07/06/your-website-doesn%e2%80%99t-have-to-look-like-a-website%e2%80%a6-i-promise/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Are You A Web Designer?</title>
		<link>http://www.lifeblue.com/blogs/2010/06/25/are-you-a-web-designer/</link>
		<comments>http://www.lifeblue.com/blogs/2010/06/25/are-you-a-web-designer/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 20:54:14 +0000</pubDate>
		<dc:creator>trendsetter</dc:creator>
		
		<category><![CDATA[Web Business Basics 101]]></category>

		<guid isPermaLink="false">http://www.lifeblue.com/blogs/2010/06/25/are-you-a-web-designer/</guid>
		<description><![CDATA[Are You a Web Designer?   
It seems our industry is in the middle of a conundrum as to what one should call themselves when asked the pivotal question of “what does your company do?”  The easiest, most laymenesque answer is “web designer” and for 99% of the U.S. population you would get [...]]]></description>
			<content:encoded><![CDATA[<p>Are You a Web Designer?   </p>
<p>It seems our industry is in the middle of a conundrum as to what one should call themselves when asked the pivotal question of “what does your company do?”  The easiest, most laymenesque answer is “web designer” and for 99% of the U.S. population you would get a nod of understanding. Now to the more experienced audience this term seems very arbitrary.  Does that mean you design only? Do you program applications? Do you offer marketing? (Fill in Blank of any other website related profession/service) etc., etc., etc. If you sell cars, you are car dealer? If you sell landscaping services, you are a landscaping company. It just seems like it should be so simple. To the point of this blog lets just take a gander at the various names circling the industry and what they could possibly mean just for fun’s sake.</p>
<p><strong>Web Designer</strong/> - This term would typically reference an individual, perhaps a freelancer. In most cases this person wouldn’t just “design only”, rather possess some basic HTML skills so they could actually put together an entire basic website. Anyone that actually does only design would probably refer to themselves as a Graphic Designer.</p>
<p><strong>Webmaster</strong/> - This term is a bit outdated, but there still is a high demand for it. A Webmaster is simply the person you call to keep your website up to date, fix, etc. Basically a Webmaster is hired to let the world know that the entity behind the site is still breathing. In most cases the Webmaster is the Web Designer who built the site to begin with. Now do you see how this works?</p>
<p><strong>Web Developer(ment)</strong/> - This term would insinuate that the company/individual has some application programming abilities in the form of PHP, .NET, Java, or God forbid some other type of painful, archaic language. Skill can very extensively, but nonetheless you should at least get these guys to build you a “hello world” application.</p>
<p><strong>Interactive Agency</strong/> - An Interactive Agency (at least a real one) is typically going to be your high end, full-on, online marketing campaign company. They typically use various forms of media and promotional techniques to turn a website into a marketing juggernaut, of course, that is if they are good.</p>
<p><strong>Web Agency</strong/> - A Web Agency is a company that has progressed by truly combining the graphic design, web designer and web developer skill sets and can internally produce anything that can be done specifically for the web. While this type of company may specialize in other services such as Internet marketing, they have their roots in traditional web development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lifeblue.com/blogs/2010/06/25/are-you-a-web-designer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Multiple PHP Class Autoloaders</title>
		<link>http://www.lifeblue.com/blogs/2010/06/14/multiple-php-class-autoloaders/</link>
		<comments>http://www.lifeblue.com/blogs/2010/06/14/multiple-php-class-autoloaders/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 18:29:04 +0000</pubDate>
		<dc:creator>JMills</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.lifeblue.com/blogs/2010/06/14/multiple-php-class-autoloaders/</guid>
		<description><![CDATA[So you&#8217;re a l337 php coder.  So you&#8217;re using classes to make things awesome&#8230; and you are also tired of including every single file you need.  You don&#8217;t want to, but you end up loading every bit of your application with a huge list of includes, even if you don&#8217;t need all of [...]]]></description>
			<content:encoded><![CDATA[<p>So you&#8217;re a l337 php coder.  So you&#8217;re using classes to make things awesome&#8230; and you are also tired of including every single file you need.  You don&#8217;t want to, but you end up loading every bit of your application with a huge list of includes, even if you don&#8217;t need all of it.</p>
<p>In comes the PHP class autoloader magic function.</p>
<pre><code>
__autoload($className) {
    // Your awesome code here
    require_once($classPath);
}
</code></pre>
<p>As you might expect there are many ways to auto load classes.  lifeBLUE has their preferred method.  However, there are times that you want to have more than one class autoloader for different situations.  Our current application actually has several ways for loading classes in.  This presents a problem, as the autoloader can become a complicated mess.  Thankfully there is a nice little function PHP provides us that makes these problems go away.</p>
<pre><code>
// Awesome PHP autoloading register function
spl_autoload_register("FunctionNameOne");
// Calling a static class function
spl_autoload_register(array("ClassName", "FunctionNameTwo"));
</code></pre>
<p>Once you have registered your functions, you can write them to include your class in whatever method you choose.  For more reading check out the <a href="http://us.php.net/manual/en/function.spl-autoload-register.php">PHP site</a> for the documentation.</p>
<p>Using this allows you to have more than one autoloader present in your application.  It also allows you to have your own autoloader function co-exist nicely with autoload functions from libraries you get from third parties.</p>
<p>Happy including!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lifeblue.com/blogs/2010/06/14/multiple-php-class-autoloaders/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Schema Busters - Part 2: Indexing</title>
		<link>http://www.lifeblue.com/blogs/2010/06/03/schema-busters-part-2-indexing/</link>
		<comments>http://www.lifeblue.com/blogs/2010/06/03/schema-busters-part-2-indexing/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 19:31:59 +0000</pubDate>
		<dc:creator>J.G. Free</dc:creator>
		
		<category><![CDATA[Nerd Matrix]]></category>

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

		<guid isPermaLink="false">http://www.lifeblue.com/blogs/2010/06/03/schema-busters-part-2-indexing/</guid>
		<description><![CDATA[The importance of Database Indexing and its effects on efficiency.
	“Schema Busters” is a multipart technical overview of Database Design elements that you can implement when designing and accessing your database implementation.  In this second section we will discuss the importance of Indexing database columns to speed up data accesses.  We will discuss the [...]]]></description>
			<content:encoded><![CDATA[<p><em>The importance of Database Indexing and its effects on efficiency.</em></p>
<p>	“Schema Busters” is a multipart technical overview of Database Design elements that you can implement when designing and accessing your database implementation.  In this second section we will discuss the importance of Indexing database columns to speed up data accesses.  We will discuss the pros and cons of indexing, and describe the logic behind Indexes.</p>
<p><strong>What is an Index?</strong><br />
	Think of database indexes like you would an index in a library book.  When you go into the library and need to find a book of a particular genre, you usually head straight to the genre’s section.  This is similar to performing Select statements on non-indexed tables.  You might be looking at the right shelves but you don’t necessarily know where to start looking.  Indexes help to more quickly identify the location of a book, or in the case of databases a record.</p>
<p><strong>How do Indexes work?</strong><br />
	Take our library example from above.  What would be an efficient and simple solution to help speed up the time it takes to locate a particular book?  Sorting!  Let’s sort all of the books by their title, and now anybody who knows the title of their book can quickly slim their search down to a significantly smaller number of books.  Database indexes work in the same exact way.  Indexes keep track of a sorted set of values with an associated row number that allows them to point back to the original record containing the sought index value.</p>
<p><strong>Creating an Index</strong><br />
	You can create an index on a table column either at table creation or by using the CREATE INDEX syntax.  Listed below are examples of both of these approaches on the same table with the same results:</p>
<ul>
<li>
CREATE TABLE Settings<br />
(<br />
	settingId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,<br />
	settingName VARCHAR(128) NOT NULL,<br />
	settingDescription VARCHAR(512) NOT NULL,<br />
	settingGroup VARCHAR(256) NOT NULL,<br />
	settingValue VARCHAR(512) NOT NULL,<br />
	INDEX(settingName),<br />
	INDEX(settingGroup)<br />
);
</li>
<li>
CREATE TABLE Settings<br />
(<br />
	settingId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,<br />
	settingName VARCHAR(128) NOT NULL,<br />
	settingDescription VARCHAR(512) NOT NULL,<br />
	settingGroup VARCHAR(256) NOT NULL,<br />
	settingValue VARCHAR(512) NOT NULL,<br />
);<br />
CREATE INDEX indexSettingName ON Settings (settingName);<br />
CREATE INDEX indexSettingGroup ON Settings (settingGroup);
</li>
</ul>
<p><strong>Efficiency Comparisons</strong><br />
	Indexes manipulate the fact that they are looking through sorted records in order to refine their search scopes to specific regions by doing simple comparisons.  While the method that indexes refine their search scopes is dependent upon the DBMS and the type of Index being created, we can still show a generic example of efficiency improvements due to indexing based on the concept of binary searching.  Keep in mind that this is a rudimentary example of indexing logic and is simply an estimate of efficiency gains.  Again we will refer to our library example when determining efficiency gains.  Let’s assume that the number of books contained in this non-indexed library is N, where N is any real whole number greater than 0.</p>
<p>	Imagine that you are looking for a particular book in a non-indexed library.  Where do you start?  Best case scenario is you will pick up the book you want first, however in the worst case scenario you could end up looking at every single book before finding the one you want.  This yields a best case of 1 comparison versus a worst case of N comparisons.</p>
<p>	Now imagine that you are looking for the same book in an indexed library sorted by book title.  We can now logically eliminate half of the books to look through simply by comparing the middle book title with our sought after title.  In one row comparison we have halved our search time, and the greatest part is this process can be applied recursively!  This yields a best case of 1 comparison versus a worst case of log2(N) comparisons.  The logarithmic base of 2 comes from our division into two subsets equivalent in size.</p>
<p>	First let’s note that in the best case we gain nothing, however efficiency is better evaluated in the worst case or in an aggregate of the two.  In the worst case we considerably reduce the amount of books we will have to look through.  If you are familiar with Big-O Notation you will notice this difference immediately.  If you’re not familiar with Big-O Notation, try substituting 1,000 for N.  Our non-indexed library has a worst case of 1,000 searches whereas our indexed library has a worst case of approximately 10 searches.  It takes 1% of the time to find the book we want in the non-indexed library (if we’re considering the worst case scenario)!</p>
<p><strong>Side Note</strong><br />
	If you have been using databases for a decent amount of time you have probably already come across indexes but may not be immediately aware of it.  Primary Keys and Unique constraints are actually forms of indexing.  By default these indexes are clustered, but you can specify otherwise when creating the constraint.  This is important to note when deciding how to define primary keys for your tables.</p>
<p><strong>Index Issues To Consider</strong><br />
	Indexing is only beneficial to access queries, so before you go and add indexes to all of your tables on every column possible know that indexing can have a negative effect on your database performance.  Indexing columns will increase the time it takes to perform INSERT, UPDATE, and DELETE commands since the index will also need to be modified appropriately to reflect changes.  Always ask yourself “Will the majority of activity on this table be SELECT statements?” and “Where do I want to see stronger performance?” before adding indexes to a table.</p>
<p>	It is also necessary to consider which columns you wish to index.  Take our library example again: If we knew the author’s name but not the book title, then we would gain no benefit from an index on book titles.  We would need to add an index on the author attribute instead of the book title column.  In all reality you would probably benefit from an index on both attributes, but it is hard to understand multiple indexes with our library example since we cannot sort books by author and title separately due to physical limitations of the books.  Fortunately there are no physical limitations with database data so it is entirely plausible to have two separate and distinct indexes.  Choosing which columns to index is highly dependent upon project and client specifications.  If you are having trouble identifying where you need to insert indexes consider using a database analyzer that can track where you are experiencing the most transaction traffic and provide suggestions that may benefit your database design.</p>
<p><strong>Conclusion</strong><br />
	Almost every project you come across can benefit from indexing database tables.  Learning how to properly create indexes and utilize them to your advantage can further increase their usability, and the best part is they are relatively simple to understand and implement.  Indexing is one of the primary means of boosting application speed, especially with a database-heavy application.  For more information on indexing consider picking up <em>Fundamentals of Database Systems</em> by Elmasri &#038; Navanthe or another database schema textbook.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lifeblue.com/blogs/2010/06/03/schema-busters-part-2-indexing/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
