<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Blog</title><link>http://www.delphicsage.com/home/blog.aspx</link><language>en-us</language><pubDate>Thu, 02 Jul 2009 12:00:00 EST</pubDate><docs>http://blogs.law.harvard.edu/tech/rss</docs><generator>Delphic Sage CMS</generator><managingEditor>info@delphicsage.com</managingEditor><webMaster>info@delphicsage.com</webMaster><geo:lat>40.026626</geo:lat><geo:long>-75.223118</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/delphicsage/blog" type="application/rss+xml" /><feedburner:emailServiceId>delphicsage/blog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>10 Ways to Know Correct SEO Advice </title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/JTCH0FrPPvI/blog.aspx</link><description>&lt;p&gt;Blogs are great, and great information comes from them. Matt Cutts' blog is essential for SEO strategy. However, the list of blogs that have accurate information is pretty slim.  My concern really centers on what types of advice people take, how they implement it, and what the source of the advice is.&lt;/p&gt;
&lt;p&gt;In order to give an idea of how to separate good SEO advice from bad SEO advice, I put together 10 ways to Know Correct SEO Advice:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The information should be recent. In 2000 or 2001, keyword density mattered. In 2000, you could join any directory and it would help. You could do cloaking and redirects and all kinds of things for ranking. Those things don't work anymore. As the search engines change, strategy has to change-stay with the times. My suggestion, never ever go back later than one year. And, if possible, stay within the last few months. Better yet, set up a handful or RSS feeds and spend one day a week keeping up to date.&lt;/li&gt;
&lt;li&gt;Google has guidelines. They matter. If the advice you read goes against them, it is terrible advice. There are a ton of examples ranging from hidden content to buying links. Learn the guidelines, say &lt;a href="http://www.google.com/support/webmasters/bin/answer.py?answer=35769&amp;amp;ctx=sibling" target="_blank" title="Google Guidelines"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;AdSense everywhere. Not good. In general, if the singular, transparent point of the information is to either make money via AdSense or sell you discount SEO services, something is up.&lt;/li&gt;
&lt;li&gt;Matt Cutts is always right. If his blog says it, do it. If his blog says it doesn't work, don't do it. And if you are uncertain about a tactic, run a search on his blog to make sure the advice hasn't been debunked. While the Google guidelines might be more clear cut sometimes, there is no more timely source of accurate information than Matt Cutts' blog.&lt;/li&gt;
&lt;li&gt;Do they cite sources (other than just another blog)? In general, much like Wikipedia, more references are a good thing.&lt;/li&gt;
&lt;li&gt;How much brimstone comes with the sermon? There is a direct correlation between how hard the source works to frighten you to how little you need to worry.&lt;/li&gt;
&lt;li&gt;Sites with private or hidden registration are not the voice of reason in a mad, mad world.&lt;/li&gt;
&lt;li&gt;Advice that comes with a methodology to check the advice or a case study from a disclosed, verifiable example tends to be good advice more often than not.&lt;/li&gt;
&lt;li&gt;Advice that directly links SEO and PPC is not good, for anything other than keyword purposes.&lt;/li&gt;
&lt;li&gt;If the advice is a lead in to an e-book. Nothing wrong with books, e or otherwise, but there is a difference between a sales letter and SEO best practices.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Hope that helps, happy seo work.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=JTCH0FrPPvI:1ldJ8GJt2OU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=JTCH0FrPPvI:1ldJ8GJt2OU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=JTCH0FrPPvI:1ldJ8GJt2OU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=JTCH0FrPPvI:1ldJ8GJt2OU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=JTCH0FrPPvI:1ldJ8GJt2OU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=JTCH0FrPPvI:1ldJ8GJt2OU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=JTCH0FrPPvI:1ldJ8GJt2OU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/JTCH0FrPPvI" height="1" width="1"/&gt;</description><author>info@delphicsage.com ()</author><pubDate>Thu, 02 Jul 2009 12:00:00 EST</pubDate><guid isPermaLink="false">283</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=599&amp;title=10_Ways_to_Know_Correct_SEO_Advice_</feedburner:origLink></item><item><title>SEO First Steps: Prioritizing SEO Tasks</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/XE8fvtS2ZzU/blog.aspx</link><description>&lt;p&gt;I love, love, and super love, when a company takes initiative and actually pays attention to SEO as part of their marketing mix (or in the current economic climate) their entire plan it seems. However, I feel like there are three things that really get things off on the wrong foot when it comes to beginning a SEO effort for your site:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Not setting goals. I don't understand why common sense doesn't render this suggestion useless, but start at the beginning-that means, set goals.  Even if we are talking about something as basic as, "What are you trying to accomplish?" Do you have one phrase? One hundred? Don't worry about doing keyword research or even stressing about search volume or divvying up time at first, just answer the simple question, "What are we trying to do?" After that question is answered, you can start to work on a plan to get there.&lt;/li&gt;
&lt;li&gt;Have a plan. In theory, after you answer the main question of "What are we trying to do?" you will hopefully begin to work on more tangible smaller goals, and put together some ideas of how to achieve it. There is no shame in having a goal of "get more people to read about my product" and then have part of your plan consist of "tell people it's good." While that won't get you where you want to go, it gets the ball rolling, and gets you ready to work the plan.&lt;/li&gt;
&lt;li&gt;Work the plan. When I hear "we started implementing some things" I think of that as code for, "we randomly did a bunch of stuff that was suggested on various blogs and we are having a lot of problems that we now need fixed really soon because no one can find our site."  Work the plan. Slow and steady, so you can see when something helps or tanks your rankings or traffic.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So, those suggestions are the same three you seem rehashed on every SEO project post. Well, let me add a bit more creativity to the post, say the equivalent of Jason's Mother being the killer in Friday the 13th and not just Jason. Let me tackle the most daunting piece of your planning: deciding what to do.&lt;br /&gt;If you have already decided to work on SEO for your website, and you make it past the goal setting portion of planning, the thing that causes the most stress, more than anyone saying "this will be a piece of cake" or "I need to go check out that strange noise" is deciding what tactics to prioritize. More often than not, that list is composed of an almost infinite number of suggestions gathered from various SEO blogs and webinars. If that is the case, there is often some great information, and some not so great information. However, what is often the hardest thing to do is to narrow your focus and put real tactics against abstract pieces of your plan. For example, check for in-bound links to moved pages or keyword research, which do you do first? Here is how you divide your tasks:&lt;br /&gt;SEO First Step should be the activities that deal with your site from a technical standpoint. To keep this simple, focus on 5 things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Is your site available? Look in your analytics package and make sure you don't see a lot of errors. Run a few versions of HTTP header checkers and make sure you have 200 respones (ok). If you see 500s, 400s, or 300s-dig in deeper. If those are 302s, change them to 301 or rewrite them. 302s won't help you for SEO.&lt;/li&gt;
&lt;li&gt;Is anything hidden? Keywords, phrases, content of any kind hidden in CSS or snuck behind flash will give you more headaches than you can imagine. And the worst part is trying to diagnose it as the problem. Remember, intent doesn't matter-that is, just because you are doing a show/hide for aesthetics doesn't make up for the fact that you have hidden content. Spammy or for aesthetics, don't hide content. Ever.&lt;/li&gt;
&lt;li&gt;Canonize it. Do you have more than one version of the same content on your site? Are you sure? Do you have two versions of the same page? For example, one with keywords used and one with category IDs? Or do you have the old format of your URL and the new format both live? Fix those items, you want one canonized version.&lt;/li&gt;
&lt;li&gt;The power of metatags...to bury your page. You know that title tag that has your page title? It not only needs to have a title, but one that incorporates your keywords. You know that keywords metatag? If you have more than 50, you just spammed it. If you have more than 12, you lost any help it might give you. And if you think it might help your Google rankings, it won't. Google doesn't give weight to that tag. On the flip side, if you spammed it, Google will taketh away. More importantly, if you overuse your H tags or use them for the wrong keywords, you will feel the pain. You might see a small bump from correct metatags (especially the uber important title tag) but you will certainly see a precipitous drop from having incorrect tags.&lt;/li&gt;
&lt;li&gt;Navigation. This is a large and winding item that could leads to 10 or 20 blog posts, but to summarize, run a number of spider tools on your pages over the course of a couple of weeks. How many pages will the spiders average? If it is single digits, that is bad news. For the purposes of SEO, you want a URL that has your keywords, you want a URL that has 15 or less parameters (preferably a lot less),  and you want navigation that prioritizes your most important pages. &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now that you have knocked out the first step, you can move on to the next steps in your SEO strategy. But that is the sequel blog post, which unfortunately will have less quality, but much more gore. That's the way these things work.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;em&gt;Epilogue&lt;/em&gt;: A good SEO second step is to ensure that you have analytics running and installed properly. Test it. For your SEO third step (and very time intensive) is to do your keyword research and map that to specific content or lack thereof for your site). A great SEO fourth step should be focusing on creating engaging content and putting together an editorial schedule. Your seemingly neverending SEO fifth step is to build your links. The SEO sixth step is to review your metrics, your goals, and build on what you have done.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=XE8fvtS2ZzU:IiKMIh_BIis:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=XE8fvtS2ZzU:IiKMIh_BIis:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=XE8fvtS2ZzU:IiKMIh_BIis:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=XE8fvtS2ZzU:IiKMIh_BIis:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=XE8fvtS2ZzU:IiKMIh_BIis:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=XE8fvtS2ZzU:IiKMIh_BIis:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=XE8fvtS2ZzU:IiKMIh_BIis:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/XE8fvtS2ZzU" height="1" width="1"/&gt;</description><author>info@delphicsage.com ()</author><pubDate>Mon, 29 Jun 2009 12:00:00 EST</pubDate><guid isPermaLink="false">282</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=598&amp;title=SEO_First_Steps_Prioritizing_SEO_Tasks</feedburner:origLink></item><item><title>Power of the Brand - $99 Apple iPhone</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/wFg7p3bTjU8/blog.aspx</link><description>&lt;p&gt;&lt;img style="float: left; margin-right: 10px; margin-bottom: 20px;" src="/Uploads/Gallery/blog/apple_ad.jpg" border="0" width="180" height="173" /&gt;Only 5% of mobile users in the U.S. currently us an iphone (&lt;a href="http://adage.com/digital/article?article_id=137165"&gt;Ad Age&lt;/a&gt;). But with Apple reducing the price to $99, the number of users and thus Apple's revenue should increase. Great news for the mobile marketing industry and the late bloomers to the smartphone market. Apple is also releasing the iphone 3G S so if you are the hard core tech saavy consumer, you can still get the latest and greatest Apple product. So, Apple has the top of their consumer chain covered with their most loyal users and is appealing to the bottom of the pyramid for those consumers that purchase based on price.&lt;/p&gt;
&lt;p&gt;But what effect is this going to have on all the consumers in the middle? The ones that are in between the early adapters and late comers, the consumers that buy Apple because its a good value but still cool. What effect is the price slashing and going mainstream going to have on the overall brand image? Will Apple be able to continually innovate and come up with the newest technology with the "coolest" design to keep people coming back to what attracted them in the first place? I'm not sure - but I think it's a valuable question for Apple to take a step back and make sure they are not selling out.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=wFg7p3bTjU8:wGqWr8G835c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=wFg7p3bTjU8:wGqWr8G835c:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=wFg7p3bTjU8:wGqWr8G835c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=wFg7p3bTjU8:wGqWr8G835c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=wFg7p3bTjU8:wGqWr8G835c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=wFg7p3bTjU8:wGqWr8G835c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=wFg7p3bTjU8:wGqWr8G835c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/wFg7p3bTjU8" height="1" width="1"/&gt;</description><author>info@delphicsage.com ()</author><pubDate>Thu, 11 Jun 2009 12:00:00 EST</pubDate><guid isPermaLink="false">280</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=594&amp;title=Power_of_the_Brand__99_Apple_iPhone</feedburner:origLink></item><item><title>A Quick Look at Bing! The new search engine from Microsoft.</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/q2vbnuswTQE/blog.aspx</link><description>&lt;h2&gt;It Has a Fancy UI&lt;/h2&gt;
&lt;p&gt;Yeah, so does ask jeeves....and that's no google killer either. It is a differentiator though, and that is what will be needed to challenge google. The welcome screen is flashy, and uses beautiful imagery in place of google's stark white screen. That's just eye candy though. The fit and finish of everything is good, live maps is well integrated, and the AJAXified interface is generally implemented tastefully. Assuming the Bing! development staff are no strangers to IE, I would also assume that the site degrades rather gracefully (ba-doom-ching).&lt;/p&gt;
&lt;h2&gt;Media Searches&lt;/h2&gt;
&lt;p&gt;This is the best part of Bing. I tested out it's video seach using the term "&lt;a href="http://www.bing.com/videos/search?q=devo&amp;amp;qpvt=devo&amp;amp;FORM=Z7FD7" target="_blank"&gt;Devo&lt;/a&gt;". The video results are pretty strong, culling videos from various sources (youtube, myspace, etc) and presenting them in a space efficient manner using thumbnails and filterable by length, screen size, resolution and source. On mouse-over of each result, it plays an excerpt of the video with sound. This is awesome! Microsoft, you win this round. While google's video search is effective, it's result presentation and inability to preview inline is pretty weak.&lt;/p&gt;
&lt;p&gt;Another thing that struck me as slick was the other types of DEVO related searches that were presented, including Images, Lyrics, Songs, Albums, Fan Clubs and Interviews. Not too shabby. I wouldn't mind seeing a product search tossed in there as well for the next time I need to find the best price on a new &lt;a href="http://www.devohat.com/" target="_blank"&gt;energy dome&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Farecast Integration&lt;/h2&gt;
&lt;p&gt;Since long before Microsoft purchased it, I have been a fan of the travel site &lt;a href="http://www.farecast.com" target="_blank"&gt;farecast&lt;/a&gt;. As far as buying plane tickets goes, farecast always finds the best price, IMHO. It also offers some cool statistical analysis tools that help you to predict the best time to buy your tickets. Farecast is a big asset and will surely help Bing! get exposure. On a small technical note, although seemlessly integrated, it appears that the original farecast code base (presumably done with Java STRUTS) is intact telling from the ".do" file extensions.&lt;/p&gt;
&lt;h2&gt;Technology&lt;/h2&gt;
&lt;p&gt;At Delphic Sage, we are big fans of the Lucene project. Search is a big, complicated ball of wax and we have long used the open source lucene project to offer our clients sophisticated search functionality without having to reinvent the wheel. Microsoft had the same idea, and built Bing! on Hadoop, which is part of the Lucene project dedicated to the processing of huge amounts of data on cheap hardware.&amp;nbsp; Microsoft also made large code contributions back to the project, which will surely help win over some hearts in the open source community.&lt;/p&gt;
&lt;h2&gt;Actual Search Results&lt;/h2&gt;
&lt;p&gt;I'll be honest...time will only tell on this one. I could write up a comparison of some sample searches between Bing and Google but most terms are so hit or miss and the sample size would be so small that it would be pointless. It's totally unscientific, but I base my google allegiance on a warm and fuzzy gut feeling that I have developed from using google successfully to solve problems day in and day out over many years.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I expected Bing! to be crap, but it seems pretty good, and it seems to be better than google at a few things (video, at least). Hopefully they keep improving, as a little competition in the search engine segment would surely be a good thing. How the tables do turn.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=q2vbnuswTQE:wDHSJlK66T8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=q2vbnuswTQE:wDHSJlK66T8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=q2vbnuswTQE:wDHSJlK66T8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=q2vbnuswTQE:wDHSJlK66T8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=q2vbnuswTQE:wDHSJlK66T8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=q2vbnuswTQE:wDHSJlK66T8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=q2vbnuswTQE:wDHSJlK66T8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/q2vbnuswTQE" height="1" width="1"/&gt;</description><author>info@delphicsage.com ()</author><pubDate>Mon, 01 Jun 2009 12:00:00 EST</pubDate><guid isPermaLink="false">279</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=592&amp;title=A_Quick_Look_at_Bing_The_new_search_engine_from_Microsoft</feedburner:origLink></item><item><title>Review for the G1's Shazam and ShopSavvy Applications </title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/6hugbf4Y6xo/blog.aspx</link><description>&lt;h2&gt;Shazam&lt;/h2&gt;
&lt;p&gt;&lt;img style="float: right; margin-left: 10px;" src="/Uploads/Gallery/blog/logo_shazam.gif" border="0" width="153" height="153" /&gt;Basically, you can hold the phone up to anything playing relatively clear music to let the phone analyze the music coming out of the speaker. After about 20 seconds, the phone will tell you who the artist is, the name of the song, what record the song is from... where you can purchase the music (&lt;a href="http://www.amazon.com"&gt;Amazon&lt;/a&gt;) and if available, the artist &lt;a href="http://www.myspace.com"&gt;MySpace&lt;/a&gt; page and &lt;a href="http://www.youtube.com"&gt;YouTube&lt;/a&gt; links. This search is saved/tagged and is able to be called upon later.&amp;nbsp; SHAZAM!&lt;/p&gt;
&lt;h3&gt;Is this such a good thing?&lt;/h3&gt;
&lt;p&gt;My thought is that owning music has become extremely easy and the days of searching through stacks of CD'S has come to an end.&amp;nbsp; One concern that comes to my mind is that the easier and more automated this act becomes, the less control we have, thus making music discovery a less personal experience. But hey, the quicker I can have access to an artist's information, the better for me and the artist (even if I have to sacrifice the thrill of the traditional hunt).&lt;/p&gt;
&lt;p&gt;After familiarizing myself with the app I decided to test the depth of its musical knowledge.&lt;/p&gt;
&lt;h3&gt;The Results&lt;/h3&gt;
&lt;p&gt;All major label releases, that I tested, were found... including: The Beatles, The Cars, Kanye West, Patti Smith...&lt;/p&gt;
&lt;p&gt;I went a level deeper and checked out some indie releases... Against Me!, At the Drive-In, Neutral Milk Hotel, Operation Ivy, Tokyo Police Club... All found!&lt;/p&gt;
&lt;p&gt;Music that I thought would be too obscure was found too. Including: Old defunct punk and thrash bands, crummy UK Twee bands I got from my coworker, and even some DJ Mixes (though the app would get confused and sometimes recognized the sample as the original track, or visa-versa).&lt;br /&gt;&lt;br /&gt;The only tracks not found were local bands, tour releases, live shows and demos. Surprising...? Not at all. I would have been a bit scared/confused if an application I downloaded onto my cell phone could recognize and ID the band I was in when I was 17.&lt;/p&gt;
&lt;p&gt;Great job Shazam! Even if this isn't applicable to your life, it sure is cool.&lt;/p&gt;
&lt;h2&gt;ShopSavvy&lt;/h2&gt;
&lt;p&gt;&lt;img style="float: right; margin-left: 15px; margin-bottom: 15px;" src="/Uploads/Gallery/blog/g1_pic.jpg" border="0" width="301" height="199" /&gt;What this application does is scan a barcode though the use of your built-in camera, finds the product just scanned, tells you the cheapest price on the internet, the closest place you can purchase this item and gives you directions to that place or provides a link to the online location (normally &lt;a href="http://www.ebay.com"&gt;Ebay&lt;/a&gt; or &lt;a href="http://www.amazon.com"&gt;Amazon&lt;/a&gt;) with pretty incredible speed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Idea is that you can connect yourself to a gigantic wealth of information while you're on the go. Access to information can make you a smarter and more efficient consumer.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Picture this: You are at the mall, you would like to purchase a new food processor but you're not too sure what to get. Well, what I would do is... find the closest appliance store, locate the food processor in my price range, scan it, read about it... see if I can get it cheaper somewhere else and continue scanning and looking till the proper bargain is found. If the reviews are bad... move along. This is where I feel like the application becomes powerful. Now we have the ability to ask an unbiased, non-salesperson the proper question about the product in real time... " What makes this one better then the one that's cheaper next-door?", "I just read that carrots really jam this thing up, what's the deal with that? " &lt;br /&gt;&lt;br /&gt;This app is quite useful. There haven't been many barcodes where the product comes up as "Unknown", so it has proved to be quite reliable. It is also fun to play "Price is Right" with it. &lt;br /&gt;&lt;br /&gt;Within the new realm of mobile application possibilities we are gaining a new level of connectivity with the rest of the world from anywhere we can get a cell signal. Ultimately, our phones are being recontextualized to be all-in-one tools of consumerism, entertainment, mapping and communication. With all these amazing technological phone advancements, I'm interested to see how a continually progressive tool will affect our future. Learn more about mobile technology and mobile marketing with our latest &lt;a href="/default.aspx?p=1701"&gt;whitepaper&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(These applications can be downloaded to an IPhone as well.)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=6hugbf4Y6xo:YnE-AKk0Cu0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=6hugbf4Y6xo:YnE-AKk0Cu0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=6hugbf4Y6xo:YnE-AKk0Cu0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=6hugbf4Y6xo:YnE-AKk0Cu0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=6hugbf4Y6xo:YnE-AKk0Cu0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=6hugbf4Y6xo:YnE-AKk0Cu0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=6hugbf4Y6xo:YnE-AKk0Cu0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/6hugbf4Y6xo" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Charlie)</author><pubDate>Thu, 21 May 2009 12:00:00 EST</pubDate><guid isPermaLink="false">145</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=582&amp;title=Review_for_the_G1s_Shazam_and_ShopSavvy_Applications_</feedburner:origLink></item><item><title>Customizing A Twitter Page Design</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/V2PxhlhGIqk/blog.aspx</link><description>&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/dstwitter_screenshot.jpg" border="0" width="530" height="374" /&gt;&lt;/p&gt;
&lt;p&gt;There are technical limitations to be mindful of though. Normally web designers and developers have the liberty to position the background image in a variety of ways (left, right, center, specifying coordinates of the position, opacity level, repeating or non-repeating, "x" or "y" repeat) but the only thing Twitter lets you do is repeat it or "no-repeat" it. And there's no positioning at all so it can only sit left aligned. The limitations are fine but it would be nice to have a little more flexibility on the behavior. Twitter folks, can we get some alignment styles or x-y-repeat happening? Thats pretty simple, no? So other than that, other things to be mindful of are screen resolutions. When designing, try to make sure your design looks ok in a smaller browser window. Ours doesnt hold up too well on the small screens, but we kinda pick our battles nowadays and we know most of our audience is viewing on larger monitors. So make sure you know who is following you!&lt;/p&gt;
&lt;p&gt;All this being said about our new look, we may find ourselves changing the look and feel often since its so easy to implement. Look out for frequent updates.&lt;/p&gt;
&lt;p&gt;Check it out and follow us! &lt;a href="http://twitter.com/DelphicSage"&gt;http://twitter.com/DelphicSage&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&amp;nbsp;&lt;/strong&gt; For the design direction we browsed the internet for some inspiration. There's not that many showcase galleries out there. Tons of sites just give away backgrounds as "twitter backgrounds" but none really feature the usage as nicely as this site. Some clever approaches here!:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitterbackgroundsgallery.com/" target="_blank"&gt;http://twitterbackgroundsgallery.com/&lt;/a&gt;&lt;/p&gt;
&lt;p class="small"&gt;&lt;em&gt;&lt;strong&gt;ALSO:&amp;nbsp;&lt;/strong&gt; No twitter bird was harmed in the creation of the graphic for this post. Only organic soy-based dyes were used to colorize the bird.&lt;/em&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=V2PxhlhGIqk:X2Fgi4u37BM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=V2PxhlhGIqk:X2Fgi4u37BM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=V2PxhlhGIqk:X2Fgi4u37BM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=V2PxhlhGIqk:X2Fgi4u37BM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=V2PxhlhGIqk:X2Fgi4u37BM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=V2PxhlhGIqk:X2Fgi4u37BM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=V2PxhlhGIqk:X2Fgi4u37BM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/V2PxhlhGIqk" height="1" width="1"/&gt;</description><author>info@delphicsage.com ()</author><pubDate>Wed, 20 May 2009 12:00:00 EST</pubDate><guid isPermaLink="false">276</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=581&amp;title=Customizing_A_Twitter_Page_Design</feedburner:origLink></item><item><title>KFC Fiasco measured by social media</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/byu1-m7RCc4/blog.aspx</link><description>&lt;p&gt;Ad Age measures the buzz around the promotion through social media, "According to Zeta Interactive, which monitors blog chatter, KFC generally popped up in about 538 blog posts daily, with 72% of mentions positive. During the promotion, that number soared to 1,319 mentions, 89% of which were positive. But cutting the cord on Thursday had a immediate negative effect, with 772 posts. Negative ratings shot up, to 33%". KFC begs to differ on the results. But positive or negative, Ad Age is running a story on May 11th about a promotion that started only a week before, May 4th, and already had real time results to back up their story. Zeta Interactive monitored blog response, but the same analytics can apply to &lt;a href="http://www.twitter.com"&gt;twitter&lt;/a&gt; updates and &lt;a href="http://www.facebook.com"&gt;facebook&lt;/a&gt; updates. As an experiment, I tried to use twitter's advanced &lt;a href="http://search.twitter.com"&gt;search&lt;/a&gt; tool, typed in keyword KFC, and analyzed the positive and negative responses from May 4th until today (May 14th). Twitter froze on me so I was unable to get past May 8th. So, the system is not perfect yet. However, the groudwork of obtaining real-time results on consumer opinions has been laid. For the small-mid size company that may not be able to hire a social monitoring company like Zeta Interactive, an in-house marketing person can monitor real time results too on a much smaller scale. Keep in mind, twitter users are a small segment of the population and are more likely to be a "creator" or&amp;nbsp; "opinion leader" and might not reflect the population as a whole. However, if you monitor the chatter, the general trending is definitely a great way to gauge how well a promotion, sponsorship, or any other marketing program is doing. Some will argue that generating buzz is always a good thing, negative or positive...I guess we'll find out how KFC does over the next few weeks.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=byu1-m7RCc4:hKNWHNpAQGE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=byu1-m7RCc4:hKNWHNpAQGE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=byu1-m7RCc4:hKNWHNpAQGE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=byu1-m7RCc4:hKNWHNpAQGE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=byu1-m7RCc4:hKNWHNpAQGE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=byu1-m7RCc4:hKNWHNpAQGE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=byu1-m7RCc4:hKNWHNpAQGE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/byu1-m7RCc4" height="1" width="1"/&gt;</description><author>info@delphicsage.com ()</author><pubDate>Thu, 14 May 2009 12:00:00 EST</pubDate><guid isPermaLink="false">273</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=564&amp;title=KFC_Fiasco_measured_by_social_media</feedburner:origLink></item><item><title>Senior Citizens Using Social Media</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/06oidida6jM/blog.aspx</link><description>&lt;p&gt;The article located &lt;a href="http://www.cnn.com/2009/TECH/04/13/social.network.older/index.html?iref=t2test_techmon" target="_blank" title="Seniors Use Social Media"&gt;here&lt;/a&gt; discussed seniors getting involved with Facebook specifically.&amp;nbsp; Those numbers are based on a Pew Internet &amp;amp; American Life Project's December 2008 survey.&lt;/p&gt;
&lt;p&gt;While that doesn't sound like a game-change, if you look at the last 6 months alone, it is phenomenal. More importantly, consider the last two weeks that saw Oprah begin tweeting (using Twitter.com).&amp;nbsp; That's fairly important when you consider that Oprah's largest demographic is...women that are 55 and older.&lt;/p&gt;
&lt;p&gt;In fact, an article from MSNBC about the upcoming elections stated, "...3.7 million people age 55 and older watch Oprah, and 2.7 million of these individuals are women. Eleven percent of all older black women watch Oprah, and 7% of all older white women watch the show everyday." I will be keeping my eye on Twitter, but given Oprah's endorsement and use targeting that demographic, I can't help but think we are going to see large strides.&lt;/p&gt;
&lt;p&gt;Needless to say, I won't be paying for the next lunch out. But I will be engaging seniors on behalf of clients. Will you?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=06oidida6jM:uGwf3yH6qZ4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=06oidida6jM:uGwf3yH6qZ4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=06oidida6jM:uGwf3yH6qZ4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=06oidida6jM:uGwf3yH6qZ4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=06oidida6jM:uGwf3yH6qZ4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=06oidida6jM:uGwf3yH6qZ4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=06oidida6jM:uGwf3yH6qZ4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/06oidida6jM" height="1" width="1"/&gt;</description><author>info@delphicsage.com ()</author><pubDate>Thu, 14 May 2009 12:00:00 EST</pubDate><guid isPermaLink="false">270</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=569&amp;title=Senior_Citizens_Using_Social_Media</feedburner:origLink></item><item><title>Social Media Presentation</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/OHksEHlwA0Q/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=OHksEHlwA0Q:g78KqV_Jz2M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=OHksEHlwA0Q:g78KqV_Jz2M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=OHksEHlwA0Q:g78KqV_Jz2M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=OHksEHlwA0Q:g78KqV_Jz2M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=OHksEHlwA0Q:g78KqV_Jz2M:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=OHksEHlwA0Q:g78KqV_Jz2M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=OHksEHlwA0Q:g78KqV_Jz2M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/OHksEHlwA0Q" height="1" width="1"/&gt;</description><author>info@delphicsage.com ()</author><pubDate>Wed, 13 May 2009 12:00:00 EST</pubDate><guid isPermaLink="false">266</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=560&amp;title=Social_Media_Presentation</feedburner:origLink></item><item><title>Site Launch: American Executive Centers</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/dR23movoOp0/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=dR23movoOp0:P7yIdmUlccs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=dR23movoOp0:P7yIdmUlccs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=dR23movoOp0:P7yIdmUlccs:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=dR23movoOp0:P7yIdmUlccs:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=dR23movoOp0:P7yIdmUlccs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=dR23movoOp0:P7yIdmUlccs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=dR23movoOp0:P7yIdmUlccs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/dR23movoOp0" height="1" width="1"/&gt;</description><author>info@delphicsage.com ()</author><pubDate>Thu, 07 May 2009 12:00:00 EST</pubDate><guid isPermaLink="false">254</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=559&amp;title=Site_Launch_American_Executive_Centers</feedburner:origLink></item><item><title>It's time for your web hosting to grow up - Virtual Private Servers</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/VZevECVWoOg/blog.aspx</link><description>&lt;h2&gt;User Interfaces&lt;/h2&gt;
&lt;p&gt;Shared hosting environments are plagued with horrible web interfaces. Either you can't find what your looking for or when you try to do something you're told it will be added shortly and that you will get an email when its done. Virtual Private Servers are like Dedicated Servers in terms of user interface. You simply use Remote Destop to get into them andyou'll have access to the Windows Desktop of the server - so it's like your standing right there in the server room. You'll also have Administrator level permissions, so you'll be able to install whatever software you fancy. If that's not friendly enough for you, many VPS providers offer &lt;a href="http://www.parallels.com/products/plesk/" target="_blank"&gt;Plesk&lt;/a&gt; which is made by &lt;a href="http://www.parallels.com/" target="_blank"&gt;Paralells&lt;/a&gt;, the same people who make &lt;a href="http://www.parallels.com/products/desktop/" target="_blank"&gt;Windows run on Mac OSX&lt;/a&gt;.&amp;nbsp; I could probably do a whole post on Plesk but it offers a ton of functionality from your web browser and its all instant. You don't have to wait for Administrators to install PHP, all you have to do is check a box and hit submit. Plesk can handle 90% of your standard setup and administrative tasks, everything from Email to DNS to Databases and it's &lt;em&gt;so &lt;/em&gt;much faster than having an administrator (or IT goon) do it for you.&lt;/p&gt;
&lt;h2&gt;Other Benefits&lt;/h2&gt;
&lt;p&gt;Many of the "Extra's" that shared hosting environments nickle and dime you for are now free. You can setup sub-domains and aliases, an addition $5-$10 per month on shared hosting, for free on VPS. Need to run your company's Website and Intranet? All you have to do is add another website in IIS or Plesk or Apache, no additional accounts or fees.&amp;nbsp;&amp;nbsp; Have you ever needed to run applications full trust in ASP.NET? I have, and let me tell you that if your shared host isn't set up for it, they aren't going to change for you. Need to install a hotfix from Microsoft so that your David Hasselhoff fan site can generate ASCII art? That's cool, you can install it yourself and you won't even need to call another hemisphere for support. Have you ever asked a shared host for event logs? You don't even need to ask anymore, VPS gives you the freedom to login and look at them.&lt;/p&gt;
&lt;h2&gt;Tips&lt;/h2&gt;
&lt;p&gt;If you need a version of Sql Server 2005 that isn't Express, your going to have to pay for it. Some hosts offer to host your databases on a shared database server but these are often slow and you still can't get all of the control that you could otherwise have with dedicated. So you think this might mean that you can't have Full-Text Indexes or Scheduled Tasks but I've got a few tricks up my sleeve.&amp;nbsp; The most important is &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=4C6BA9FD-319A-4887-BC75-3B02B5E48A40&amp;amp;displaylang=en" title="Microsoft SQL Server 2005 Express Edition with Advanced Services"&gt;Microsoft SQL Server 2005 Express Edition with Advanced Services&lt;/a&gt;. This FREE version of Sql Server 2005 even supports Full-Text Indexing so that you use advanced search algorithms and make use of relevance measures. The interface to work with them has been removed but it's not that bad to manage these catalogs using a script.&amp;nbsp; So, you might be wondering how your going to rebuild your indexes without the interface or schedule backups if you cant use Scheduled Tasks.&amp;nbsp; I like to create a batch script that runs a sql query to do these things.&lt;br /&gt;&lt;br /&gt;The sql script could be as simple as this:&lt;/p&gt;
&lt;div style="background-color: #dde7f0;"&gt;USE [DatabaseName] &lt;br /&gt;EXEC sp_fulltext_catalog 'Cat_Desc', 'start_full'; &lt;br /&gt;&lt;br /&gt;BACKUP DATABASE DatabaseName&lt;br /&gt;TO DISK = 'C:\Daily_DatabaseName.bak' &lt;br /&gt;WITH FORMAT;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;First the script is populating the 'Cat_Desc' full-text catalog, then its creating a backup of the database. If you save this to a file(SqlBatch.sql ), you can then write a batch to execute it.&lt;/p&gt;
&lt;p&gt;To create the batch, just open up notepad and save as a .bat&lt;/p&gt;
&lt;div style="background-color: #dde7f0;"&gt;osql -E -S localhost\sqlexpress -i SqlBatch.sql&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;The batch will look something like this, your sql server location [localhost\sqlexpress] and file location [SqlBatch.sql] may vary. Just save this into the same directory as the sql script (SqlBatch.sql) and you should be ready to test it. Just double click the batch to run it, then check to see if C:\Daily_DatabaseName.bak was updated. Assuming that everything is working fine, you just need to schedule this batch to run automatically. Go to Start &amp;gt;&amp;gt; Control Panel &amp;gt;&amp;gt; Scheduled Tasks &amp;gt;&amp;gt; Add Scheduled Task . Here you just need to select the batch file that you just created and create the schedule. &lt;br /&gt;&lt;br /&gt;So I hope this post has encouraged you to look at some options outside of Dedicated and Shared hosting. Just drop a comment if you have any questions.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=VZevECVWoOg:9GHFLUz8JCI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=VZevECVWoOg:9GHFLUz8JCI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=VZevECVWoOg:9GHFLUz8JCI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=VZevECVWoOg:9GHFLUz8JCI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=VZevECVWoOg:9GHFLUz8JCI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=VZevECVWoOg:9GHFLUz8JCI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=VZevECVWoOg:9GHFLUz8JCI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/VZevECVWoOg" height="1" width="1"/&gt;</description><author>info@delphicsage.com ()</author><pubDate>Wed, 06 May 2009 12:00:00 EST</pubDate><guid isPermaLink="false">255</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=557&amp;title=Its_time_for_your_web_hosting_to_grow_up__Virtual_Private_Servers</feedburner:origLink></item><item><title>Site Launch: Devencore NKF</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/CtMhnYl1sLo/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CtMhnYl1sLo:4o36azLA1Xo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CtMhnYl1sLo:4o36azLA1Xo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CtMhnYl1sLo:4o36azLA1Xo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=CtMhnYl1sLo:4o36azLA1Xo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CtMhnYl1sLo:4o36azLA1Xo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CtMhnYl1sLo:4o36azLA1Xo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=CtMhnYl1sLo:4o36azLA1Xo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/CtMhnYl1sLo" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Kevin)</author><pubDate>Fri, 24 Apr 2009 12:00:00 EST</pubDate><guid isPermaLink="false">231</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=525&amp;title=Site_Launch_Devencore_NKF</feedburner:origLink></item><item><title>Get Your Skate On</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/Cz0pTpFgCZA/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Cz0pTpFgCZA:yycUuX5ASQ0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Cz0pTpFgCZA:yycUuX5ASQ0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Cz0pTpFgCZA:yycUuX5ASQ0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=Cz0pTpFgCZA:yycUuX5ASQ0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Cz0pTpFgCZA:yycUuX5ASQ0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Cz0pTpFgCZA:yycUuX5ASQ0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=Cz0pTpFgCZA:yycUuX5ASQ0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/Cz0pTpFgCZA" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Cliff H)</author><pubDate>Tue, 14 Apr 2009 12:00:00 EST</pubDate><guid isPermaLink="false">219</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=522&amp;title=Get_Your_Skate_On</feedburner:origLink></item><item><title>A Quick Note on Blocking the Digg Bar</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/djVOMp9-9bk/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=djVOMp9-9bk:cRMWjsYxkio:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=djVOMp9-9bk:cRMWjsYxkio:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=djVOMp9-9bk:cRMWjsYxkio:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=djVOMp9-9bk:cRMWjsYxkio:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=djVOMp9-9bk:cRMWjsYxkio:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=djVOMp9-9bk:cRMWjsYxkio:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=djVOMp9-9bk:cRMWjsYxkio:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/djVOMp9-9bk" height="1" width="1"/&gt;</description><author>info@delphicsage.com (SMercer)</author><pubDate>Mon, 13 Apr 2009 12:00:00 EST</pubDate><guid isPermaLink="false">218</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=518&amp;title=A_Quick_Note_on_Blocking_the_Digg_Bar</feedburner:origLink></item><item><title>Delphic Sage Web Analytics White Paper</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/SE4VVizyoEc/blog.aspx</link><description>&lt;p&gt;&lt;a href="/default.aspx?p=1423"&gt;Read more about our analytics white paper.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Didn't receive an email notification about our white paper? &lt;a href="/default.aspx?p=1423"&gt;Sign up now. &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=SE4VVizyoEc:xXd21w750cc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=SE4VVizyoEc:xXd21w750cc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=SE4VVizyoEc:xXd21w750cc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=SE4VVizyoEc:xXd21w750cc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=SE4VVizyoEc:xXd21w750cc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=SE4VVizyoEc:xXd21w750cc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=SE4VVizyoEc:xXd21w750cc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/SE4VVizyoEc" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Tania R)</author><pubDate>Thu, 09 Apr 2009 12:00:00 EST</pubDate><guid isPermaLink="false">217</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=515&amp;title=Delphic_Sage_Web_Analytics_White_Paper</feedburner:origLink></item><item><title>Newsletters... Get your email Newsletters...</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/5VqD7b5Vyug/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=5VqD7b5Vyug:g89RGFliIf0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=5VqD7b5Vyug:g89RGFliIf0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=5VqD7b5Vyug:g89RGFliIf0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=5VqD7b5Vyug:g89RGFliIf0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=5VqD7b5Vyug:g89RGFliIf0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=5VqD7b5Vyug:g89RGFliIf0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=5VqD7b5Vyug:g89RGFliIf0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/5VqD7b5Vyug" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Cliff H)</author><pubDate>Wed, 08 Apr 2009 12:00:00 EST</pubDate><guid isPermaLink="false">214</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=513&amp;title=Newsletters_Get_your_email_Newsletters</feedburner:origLink></item><item><title>Augmented Reality - New Wave of Commercial Advertising?!</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/qwX8MccZ04Y/blog.aspx</link><description>&lt;p&gt;&lt;a href="http://www.vimeo.com/3927618" target="_blank"&gt;&lt;img src="/Uploads/Gallery/blog/GE_Augmented_Reality_Demo.png" border="0" width="505" height="379" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here are some quick and easy steps to try it yourself:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Print out the marker found &lt;a href="http://ge.ecomagination.com/smartgrid/ar/printme.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Turn on your webcam.&lt;/li&gt;
&lt;li&gt;Launch either Wind Turbine or Solar Energy Augment Reality on &lt;a href="http://ge.ecomagination.com/smartgrid/#/augmented_reality"&gt;GE's site.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Face marker at webcam and you're off and running.&lt;/li&gt;
&lt;li&gt;Move, twist, and turn the marker to achieve desired results. (Optional -&amp;nbsp; With the wind turnbine, you can blow into your computer's mic and change the speeds of the propellors.)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;There are definitely some positive and negatives that come to my mind when working with this type of ad. I compiled a list below:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Positive&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Engages the User to interact with the ad&lt;/li&gt;
&lt;li&gt;Promotes use of alternative energy&lt;/li&gt;
&lt;li&gt;Can and has been used for different realms of advertising             
&lt;ul&gt;
&lt;li&gt;Automotive - &lt;a href="http://www.youtube.com/watch?v=dBser6_gToA"&gt;Mini Cooper&lt;/a&gt; and &lt;a href="http://www.youtube.com/watch?v=C6Ayc5Tb9vI"&gt;Nissan Cube&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Gaming - &lt;a href="http://www.crunchgear.com/2008/12/22/watch-augmented-reality-figure-cyber-maid-alice-in-action-2-videos/"&gt;Geisha Entertainment Tokyo&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Mobile - &lt;a href="http://tonchidot.com/Sekai_Camera.html"&gt;Sekai Camera&lt;/a&gt; for IPhone&lt;/li&gt;
&lt;li&gt;Toy -&amp;nbsp; &lt;a href="http://www.crunchgear.com/2008/10/22/video-gallery-watch-the-augmented-reality-tuttuki-bako-box-in-action/"&gt;Bandai Japan Tuttuki Box&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Sports Collectibles - &lt;a href="http://www.viddler.com/explore/engadget/videos/319/"&gt;Topps Live 3D Baseball Card&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Marketed through YouTube to encapsulate larger audience&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;The Negative&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Forces you to print a piece of paper for a relatively "Green" ad&lt;/li&gt;
&lt;li&gt;Can't be displayed on older computers that do not have the appropriate software&lt;/li&gt;
&lt;li&gt;Need a pretty quick/reliable computer&lt;/li&gt;
&lt;li&gt;Took a long while to utilize a fairly old technology for commercial purposes&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Who knows where this will take us in the future, but all I know is there is boundless entertainment for the current augmented reality.&amp;nbsp; I would love to see it on a much larger scale some day, probably somewhere on twitter.&lt;/p&gt;
&lt;p&gt;Post was inspired by the following articles:&lt;br /&gt;&lt;a href="http://www.techcrunch.com/2009/03/20/ge-uses-digital-hologram-to-advertize-windmills/"&gt;http://www.techcrunch.com/2009/03/20/ge-uses-digital-hologram-to-advertize-windmills/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://thefutureofads.com/2009/02/27/ge-plugs-into-the-smart-grid-with-augmented-reality/"&gt;http://technology.todaysbigthing.com/2009/03/09?utm_source=newsletter&amp;amp;utm_me&lt;br /&gt;http://thefutureofads.com/2009/02/27/ge-plugs-into-the-smart-grid-with-augmented-reality/&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=qwX8MccZ04Y:UN9Bf3nwGGw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=qwX8MccZ04Y:UN9Bf3nwGGw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=qwX8MccZ04Y:UN9Bf3nwGGw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=qwX8MccZ04Y:UN9Bf3nwGGw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=qwX8MccZ04Y:UN9Bf3nwGGw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=qwX8MccZ04Y:UN9Bf3nwGGw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=qwX8MccZ04Y:UN9Bf3nwGGw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/qwX8MccZ04Y" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Kevin)</author><pubDate>Tue, 31 Mar 2009 12:00:00 EST</pubDate><guid isPermaLink="false">204</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=503&amp;title=Augmented_Reality__New_Wave_of_Commercial_Advertising</feedburner:origLink></item><item><title>How to Use Twitter for Business</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/CxauqyYOUF4/blog.aspx</link><description>&lt;h3&gt;&lt;a href="http://search.twitter.com/advanced"&gt;Twitter Advanced Search&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Twitter has an &lt;a href="http://search.twitter.com/advanced"&gt;advanced search&lt;/a&gt; function that lets you research what people are "tweeting" about in your area. You can search for your brand, your competitors brand, or even your business category withing x miles from your location. So if you are tweeting about your web development needs in the Philadelphia area, Delphic Sage may start following you! The great thing about twitter is that you can provide a business solution to a customer in need in real time. It's one of&amp;nbsp; the easiest targeted sales lead you can make online.&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.twilert.com/"&gt;Twilert&lt;/a&gt; / RSS Feeds&lt;/h3&gt;
&lt;p&gt;Similar to the Twitter Advanced Search, &lt;a href="http://www.twilert.com/"&gt;twilert&lt;/a&gt; allows you to set up email updates of tweets that include your brand name. For example, if you were a paper service company and Staples was a major competitor, you can set up a twilert for "Staples" within 25 miles of New York City. So anytime anyone mentions Staples, good or bad, you can follow up with them via twitter and gain a potential sales lead. On the flip side, if you are Staples customer service dept., then you can track to see what people are saying about Staples. It's reputation management real time by real customers. If you respond to those disgruntled customers, then you are taking customer service to the next level. Both Dell (&lt;a href="http://twitter.com/delloutlet"&gt;http://twitter.com/delloutlet&lt;/a&gt;) &amp;amp; Comcast (&lt;a href="http://twitter.com/comcastcares"&gt;http://twitter.com/comcastcares&lt;/a&gt;) have been using twitter to help monitor brand reputation and open up customer service channels. An alternative to a service like twilert is to set up RSS feeds of all your searches. Using the RSS function can help you determine useful content through your RSS feeder without having to do the same search all the time.&lt;/p&gt;
&lt;p&gt;For a more thorough exploration of how Delphic Sage can help you utilize social marketing tools, including twitter, please visit the contact us section. And follow our tweets: &lt;a href="http://twitter.com/delphicsage"&gt;http://twitter.com/delphicsage&lt;/a&gt; or &lt;a href="http://twitter.com/tradocaj"&gt;http://twitter.com/tradocaj&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This post is based on the following blogs/articles:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.forrester.com/groundswell/2009/03/twitter-is-a-5.html"&gt;http://blogs.forrester.com/groundswell/2009/03/twitter-is-a-5.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ducttapemarketing.com/blog/2009/03/25/mining-twitter-for-leads/"&gt;http://www.ducttapemarketing.com/blog/2009/03/25/mining-twitter-for-leads/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://twitter.com/comcastcares"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CxauqyYOUF4:oWE_sRIiN1I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CxauqyYOUF4:oWE_sRIiN1I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CxauqyYOUF4:oWE_sRIiN1I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=CxauqyYOUF4:oWE_sRIiN1I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CxauqyYOUF4:oWE_sRIiN1I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CxauqyYOUF4:oWE_sRIiN1I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=CxauqyYOUF4:oWE_sRIiN1I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/CxauqyYOUF4" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Tania R)</author><pubDate>Thu, 26 Mar 2009 12:00:00 EST</pubDate><guid isPermaLink="false">205</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=507&amp;title=How_to_Use_Twitter_for_Business</feedburner:origLink></item><item><title>Philadelphia Systems Integrators Top 25</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/hp97UyVUeRA/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=hp97UyVUeRA:MttA4lQE1lw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=hp97UyVUeRA:MttA4lQE1lw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=hp97UyVUeRA:MttA4lQE1lw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=hp97UyVUeRA:MttA4lQE1lw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=hp97UyVUeRA:MttA4lQE1lw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=hp97UyVUeRA:MttA4lQE1lw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=hp97UyVUeRA:MttA4lQE1lw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/hp97UyVUeRA" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Tue, 24 Mar 2009 12:00:00 EST</pubDate><guid isPermaLink="false">202</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=502&amp;title=Philadelphia_Systems_Integrators_Top_25</feedburner:origLink></item><item><title>Facebook Etiquette</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/l5eQxN37E3w/blog.aspx</link><description>&lt;p&gt;For example, take my high school friend...once I accepted the friend request, I perused her pictures and learned that she still lived in the city, was single, and has a cat. I loved finding out what she had been up to over the past 10 years. Other than that, there's not much else I want or need to know. So when she started emailing me and asking me out for drinks, I discovered Facebook's dirty little secret...what happens when you're "facebook friend" wants to become real-life friends? Do you ignore their requests? They see you online, they know you've just updated your profile picture, they just read your latest post that you are going out on Friday night...now what?! We used to be able to ignore people's phone calls or say "oops you're email must have gone in my junk folder" but now that your network of "friends" can see everything you do via Facebook, you have inadvertently opened yourself up to being socially available all of the time.&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/img_facebookchart2.gif" border="0" width="540" height="224" /&gt;&lt;/p&gt;
&lt;p&gt;How do we keep our friends in their neat little buckets - coworkers vs. neighbors vs. business colleagues vs. best friends? Thanks to Facebook, everyone is moshed together with the same classification of "friend". Don't even get me started on finding an ex on Facebook - it is like the modern equivalent of opening up pandora's box. Until Facebook lets us categorize our friends into the A-list or the B-list or the ex-list, I'm going to set my facebook post to say "Tania is unavailable..." and get back to work.&lt;/p&gt;
&lt;p&gt;Here are some articles that have inspired this post:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://adage.com/digitalnext/post?article_id=134673"&gt;http://adage.com/digitalnext/post?article_id=134673&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://experiencematters.criticalmass.com/2009/03/19/friendship-isnt-dead-the-strenghtening-of-loose-ties/#more-447"&gt;http://experiencematters.criticalmass.com/2009/03/19/friendship-isnt-dead-the-strenghtening-of-loose-ties/#more-447&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.realsimple.com/work-life/technology/communication-etiquette/facebook-friend-00000000010777/index.html"&gt;http://www.realsimple.com/work-life/technology/communication-etiquette/facebook-friend-00000000010777/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=l5eQxN37E3w:_qImJCSNQu4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=l5eQxN37E3w:_qImJCSNQu4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=l5eQxN37E3w:_qImJCSNQu4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=l5eQxN37E3w:_qImJCSNQu4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=l5eQxN37E3w:_qImJCSNQu4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=l5eQxN37E3w:_qImJCSNQu4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=l5eQxN37E3w:_qImJCSNQu4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/l5eQxN37E3w" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Tania R)</author><pubDate>Tue, 24 Mar 2009 12:00:00 EST</pubDate><guid isPermaLink="false">163</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=411&amp;title=Facebook_Etiquette</feedburner:origLink></item><item><title>Keyword Density for SEO | How important is it?</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/twBetDHaUB8/blog.aspx</link><description>&lt;p&gt;1.       While a specific keyword density won't help you, over reaching on keyword density will certainly hurt you. If you over optimize, you will be seen as having spammy content. It is a lot easier to remember to stay under a %, say 12%, than to "use your best judgment."&lt;/p&gt;
&lt;p&gt;2.       There's a ton of terrible corporate copywriting out there, which talks about benefits, but never actually mentions the product. Keyword density at least keeps the use of the topic recurring.&lt;/p&gt;
&lt;p&gt;3.       Keyword density at least reminds copywriters to keep their subject prominent. Amazingly, even when a topic is used often, it gets lost deep into paragraphs. If the subject matter is worth writing, than mention it.&lt;/p&gt;
&lt;h3&gt;Readability, Copy, Keyword Density for SEO&lt;/h3&gt;
&lt;p&gt;You can certainly be reductionist and argue the summary of my points are that my recommendation of keyword density is a way to protect against poor copywriting, and in some respects it is. In fact, no matter how often you say to use your keywords intelligently and as a reader would normally expect to see them in your content, they are underrepresented. So, while saying "write better copy" might suffice for some of the reasoning I talk about the benefit of keyword density providing, I think it is fairly helpful to have a definitive method of properly executing copy. Especially because the content is one of the three pillars of SEO, but that is a post for another time.&lt;/p&gt;
&lt;p&gt;For the reasoning listed above, that is why our SEO writing guide groups keyword density near readability, and why it is in a writing guide in the first place, rather than under a "get some rankings" guide.&lt;/p&gt;
&lt;p&gt;If you care to check your readability and keyword density, here are some choices:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.addedbytes.com/tools/readability-score/" target="_blank" title="Readability Tool"&gt;Readability Tool&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.keyworddensity.com" target="_blank" title="Keyword Density Tool"&gt;Keyword Density Tool&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Happy copywriting...er...SEOing.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=twBetDHaUB8:S6gktf3Q9KI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=twBetDHaUB8:S6gktf3Q9KI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=twBetDHaUB8:S6gktf3Q9KI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=twBetDHaUB8:S6gktf3Q9KI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=twBetDHaUB8:S6gktf3Q9KI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=twBetDHaUB8:S6gktf3Q9KI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=twBetDHaUB8:S6gktf3Q9KI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/twBetDHaUB8" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Gregg)</author><pubDate>Fri, 20 Mar 2009 12:00:00 EST</pubDate><guid isPermaLink="false">201</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=495&amp;title=Keyword_Density_for_SEO__How_important_is_it</feedburner:origLink></item><item><title>Reasons to Consider Wordpress as a CMS for Simple Sites</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/_hoJ94kinLo/blog.aspx</link><description>&lt;h3&gt;Reasons to Consider Wordpress as a CMS&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li&gt;Pages and Posts allow Wordpress to accommodate static and dynamic oriented content efficiently&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;Quick hit Themes that can be adjusted or developed from scratch into compelling visual designs&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;No heavy duty development required (usually). For us that means a small team that consists of Project Manager, Web Designer and Front-end Developer&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;Many plug-ins that make extending functionality insanely easy, especially for search engine optimization activities&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;Simple content management allows even novice Internet users to manage a site&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;Easy install, especially if you use a one-click install hosting provider&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;We love their rich text editor, &lt;a href="http://tinymce.moxiecode.com/" target="_blank" title="TinyMCE"&gt;TinyMCE&lt;/a&gt;&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;For whatever reason, Google seems to just love Wordpress sites&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;It's the engine for over million blogs and sites, so it's been around &lt;br /&gt; &lt;/li&gt;
&lt;li&gt;It has a vibrant Open Source community that actively contributes and participates&lt;/li&gt;
&lt;li&gt;Static web sites are a headache for client and agency alike&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;Other Articles of Interest on Wordpress as a CMS&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.devlounge.net/publishing/things-to-consider-when-using-wordpress-as-a-cms" target="_blank" title="Things To Consider When Using WordPress as a CMS"&gt;Things To Consider When Using WordPress as a CMS&lt;/a&gt; - thoughts and considerations&lt;br /&gt; &lt;a href="http://codex.wordpress.org/User:Lastnode/Wordpress_CMS" target="_blank" title="Wordpress Codex"&gt;Wordpress Codex&lt;/a&gt; - practical execution tips&lt;a href="http://www.graphicdesignblog.co.uk/wordpress-as-a-cms-content-management-system/" target="_blank" title="Wordpress as a CMS - Content Management System"&gt;&lt;br /&gt;Wordpress as a CMS - Content Management System&lt;/a&gt; - examples and links to other articles&lt;a href="http://www.onlamp.com/pub/a/onlamp/2006/04/20/from-weblog-to-cms.html" target="_blank" title="From Weblog to CMS with WordPress"&gt;&lt;br /&gt;From Weblog to CMS with WordPress&lt;/a&gt; - a few suggested hacks&lt;a href="http://www.idesignstudios.com/blog/web-design/wordpress-as-cms/" target="_blank" title="How To Use WordPress As A Truly Customized CMS (Multiple Headers, Footers, Sidebars And More!)"&gt;&lt;br /&gt;How To Use WordPress As A Truly Customized CMS (Multiple Headers, Footers, Sidebars And More!)&lt;/a&gt; - practical steps and suggestions&lt;a href="http://wordpressgarage.com/wordpress-as-cms/10-plugins-that-will-make-wordpress-into-a-cms/" target="_blank" title="13 plugins that will make WordPress into a CMS"&gt;&lt;br /&gt;13 plugins that will make WordPress into a CMS&lt;/a&gt; - title says it all&lt;a href="http://css-tricks.com/video-screencasts/41-wordpress-as-a-cms/" target="_blank" title="#41: WordPress as a CMS"&gt;&lt;br /&gt;#41: WordPress as a CMS&lt;/a&gt; - video, thanks to &lt;a href="http://twitter.com/CraigFifield" target="_blank" title="@CraigFiflied"&gt;@CraigFifield&lt;/a&gt; for this&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;This is usually a hot button topic for those out there who have tried it. Tell us about your experience via Comments section below. &lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=_hoJ94kinLo:tWzUnVFutkk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=_hoJ94kinLo:tWzUnVFutkk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=_hoJ94kinLo:tWzUnVFutkk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=_hoJ94kinLo:tWzUnVFutkk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=_hoJ94kinLo:tWzUnVFutkk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=_hoJ94kinLo:tWzUnVFutkk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=_hoJ94kinLo:tWzUnVFutkk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/_hoJ94kinLo" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Fri, 13 Mar 2009 12:00:00 EST</pubDate><guid isPermaLink="false">194</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=476&amp;title=Reasons_to_Consider_Wordpress_as_a_CMS_for_Simple_Sites</feedburner:origLink></item><item><title>Philadelphia SEO Firms - A Short List</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/827N_TbOQ88/blog.aspx</link><description>&lt;table id="f05g" class="zeroBorder" border="0" cellspacing="0" cellpadding="3" width="100%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="50%" align="left" valign="top"&gt;&lt;a href="http://www.87interactive.com/" target="_blank" title="87 Interactive"&gt;87 Interactive&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.advancewebdesign.com/" target="_blank" title="Advance Design Interactive"&gt;Advance Design Interactive&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.annodyne.com" title="Annodyne"&gt;Annodyne&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.archer-group.com/" target="_blank" title="Archer Group"&gt;Archer Group&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.backemarketing.com/" title="Backe Digital Brand Marketing"&gt;Backe Digital Brand Marketing&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.cadient.com/" title="Cadient"&gt;Cadient&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.ddii.com/" title="D&amp;amp;D Interactive"&gt;D&amp;amp;D Interactive&lt;/a&gt; &lt;br /&gt;&lt;a href="/default.aspx?p=1561" target="_blank" title="Top Philadelphia SEO Agency | delphic sage"&gt;Delphic Sage&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.digitashealth.com/#/home" title="Digitas Health"&gt;Digitas Health&lt;/a&gt; &lt;br /&gt;&lt;a href="http://blog.dinkuminteractive.com/" target="_blank" title="Dinkum Interactive"&gt;Dinkum Interactive&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.dmipartners.com/" target="_blank" title="DMi Partners"&gt;DMi Partners&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.goseopro.com" target="_blank" title="goSEOpro"&gt;goSEOpro&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.firstplacepositioning.com" target="_blank" title="First Place Positioning"&gt;First Place Positioning&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.linkateer.com" target="_blank" title="Linkateer"&gt;Linkateer&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;
&lt;td width="50%" align="left" valign="top"&gt;&lt;a href="http://www.milestechnologies.com/" target="_blank" title="Miles Technology"&gt;Miles Technology&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.morningstarmultimedia.com" target="_blank" title="Morningstar Multimedia"&gt;Morningstar Multimedia&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mostlyweb.com" target="_blank" title="MostlyWeb"&gt;MostlyWeb&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.netplusmarketing.com/" target="_blank" title="NetPlus Marketing"&gt;NetPlus Marketing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.unrealmarketing.com/" target="_blank" title="Unreal Marketing"&gt;Unreal Marketing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.razorfish.com/" target="_blank" title="Razorfish"&gt;Razorfish&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.thinkseer.com/" target="_blank" title="Seer Interactive"&gt;Seer Interactive&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.singularitydesign.com/" target="_blank" title="Singularity Design"&gt;Singularity Design&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.stargroup1.com/" title="Star Group"&gt;Star Group&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.tmxinteractive.com" target="_blank" title="TMX Interactive"&gt;TMX Interactive&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.voveo.com/" target="_blank" title="Voveo"&gt;Voveo Marketing Group&lt;/a&gt; &lt;br /&gt;&lt;a href="http://www.weblinc.com" target="_blank" title="Weblinc"&gt;Weblinc&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.whittmanhart.com" target="_blank" title="WhittmanHart Interactive"&gt;WhittmanHart Interactive&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;And yes, as anyone worth their weight will notice this page is slightly optimized for Philadelphia SEO. We tried not to go overboard, but it wouldn't do much good to make a list if organizations can't find it, now would it? And some of you even got a link from it.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;Also of interest, there are a lot of firms in the top organic rankings with no physical presence in the area.&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;h3&gt;If We Missed Your Firm&lt;/h3&gt;
&lt;p&gt;As an interactive agency, we're a bit more familiar with folks in and around our space, so we probably missed some firms outside our direct competition - like advertising agencies. If we missed you, drop us a line and we'll add you the list (if you meet the criteria listed above).&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=827N_TbOQ88:HgmcULaCaW0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=827N_TbOQ88:HgmcULaCaW0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=827N_TbOQ88:HgmcULaCaW0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=827N_TbOQ88:HgmcULaCaW0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=827N_TbOQ88:HgmcULaCaW0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=827N_TbOQ88:HgmcULaCaW0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=827N_TbOQ88:HgmcULaCaW0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/827N_TbOQ88" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Thu, 12 Mar 2009 12:00:00 EST</pubDate><guid isPermaLink="false">192</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=519&amp;title=Philadelphia_SEO_Firms__A_Short_List</feedburner:origLink></item><item><title>Site Launch: Gale International</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/ATgjMpsXdhY/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=ATgjMpsXdhY:tIZ7Io0K4vk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=ATgjMpsXdhY:tIZ7Io0K4vk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=ATgjMpsXdhY:tIZ7Io0K4vk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=ATgjMpsXdhY:tIZ7Io0K4vk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=ATgjMpsXdhY:tIZ7Io0K4vk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=ATgjMpsXdhY:tIZ7Io0K4vk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=ATgjMpsXdhY:tIZ7Io0K4vk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/ATgjMpsXdhY" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Wed, 11 Mar 2009 12:00:00 EST</pubDate><guid isPermaLink="false">190</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=433&amp;title=Site_Launch_Gale_International</feedburner:origLink></item><item><title>Interactive Agency yes, Restaurant - uh, don't think so</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/JNFzUepEDO0/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=JNFzUepEDO0:vS4IUAcMbWc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=JNFzUepEDO0:vS4IUAcMbWc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=JNFzUepEDO0:vS4IUAcMbWc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=JNFzUepEDO0:vS4IUAcMbWc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=JNFzUepEDO0:vS4IUAcMbWc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=JNFzUepEDO0:vS4IUAcMbWc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=JNFzUepEDO0:vS4IUAcMbWc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/JNFzUepEDO0" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Sat, 07 Mar 2009 12:00:00 EST</pubDate><guid isPermaLink="false">189</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=428&amp;title=Interactive_Agency_yes_Restaurant__uh_dont_think_so</feedburner:origLink></item><item><title>New Client: Discover Jersey Arts </title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/5qRUoniUHHc/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=5qRUoniUHHc:AcFb3n3VMMQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=5qRUoniUHHc:AcFb3n3VMMQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=5qRUoniUHHc:AcFb3n3VMMQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=5qRUoniUHHc:AcFb3n3VMMQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=5qRUoniUHHc:AcFb3n3VMMQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=5qRUoniUHHc:AcFb3n3VMMQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=5qRUoniUHHc:AcFb3n3VMMQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/5qRUoniUHHc" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Fri, 06 Mar 2009 12:00:00 EST</pubDate><guid isPermaLink="false">188</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=426&amp;title=New_Client_Discover_Jersey_Arts_</feedburner:origLink></item><item><title>Effectively Managing Social Media Status Updates</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/xgDLv8qy-2I/blog.aspx</link><description>&lt;h2&gt;Enter Tarpipe&lt;/h2&gt;
&lt;p&gt;Well, there are quite a few options out there. I've been playing around with &lt;a href="http://www.ping.fm"&gt;Ping.fm&lt;/a&gt; for example. What I've found with several of these however, is their lack of control down to the field level if you will. The one I've been playing around that affords much more control is &lt;a href="http://www.tarpipe.com"&gt;Tarpipe&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Tarpipe allows you to create workflows that route data across social media applications. Once workflows are established, data (e.g. updates or bookmarks) is pushed through the workflow to the API's of the social media sites. The push is usually triggered by sending an email (tarpipe creates a custom email address for each workflow) or via a bookmarklet.&lt;/p&gt;
&lt;h2&gt;Here's an Example Tarpipe Workflow&lt;/h2&gt;
&lt;p&gt;So here's how the example above works. When I find an article I think is particularly interesting on the web. I click on a bookmarklet I have saved in my bookmarks. It pulls a dialog box (shown below) where I can enter a title, tags and the url.&lt;/p&gt;
&lt;p&gt;&lt;img style="margin: 5px;" src="/Uploads/Gallery/blog/tarpipe bookmarklet.JPG" border="0" alt="Tarpipe Bookmarklet" title="Tarpipe Bookmarklet" width="513" height="183" /&gt;&lt;/p&gt;
&lt;p&gt;Upon submitting it routes the information to Twitter (compressing the URL) and to my del.icio.us account using relevant tags that are shared across Delphic Sage.&lt;/p&gt;
&lt;p&gt;I have other tarpipes that route personal info to Facebook, Twitter and &lt;a href="http://www.evernote.com"&gt;Evernote&lt;/a&gt; (my note taking) via email. Currently there is no pipe for LinkedIn, but I have to assume that is not very far off. All in all, pretty slick stuff.&lt;/p&gt;
&lt;p&gt;Feel free to use the comments box below to let me know what you've been using.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=xgDLv8qy-2I:2VoJjyivpME:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=xgDLv8qy-2I:2VoJjyivpME:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=xgDLv8qy-2I:2VoJjyivpME:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=xgDLv8qy-2I:2VoJjyivpME:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=xgDLv8qy-2I:2VoJjyivpME:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=xgDLv8qy-2I:2VoJjyivpME:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=xgDLv8qy-2I:2VoJjyivpME:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/xgDLv8qy-2I" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Tue, 24 Feb 2009 12:00:00 EST</pubDate><guid isPermaLink="false">161</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=533&amp;title=Effectively_Managing_Social_Media_Status_Updates</feedburner:origLink></item><item><title>20 push-ups an Hour</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/rIacUvhERJ0/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=rIacUvhERJ0:sKeypk4yoOI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=rIacUvhERJ0:sKeypk4yoOI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=rIacUvhERJ0:sKeypk4yoOI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=rIacUvhERJ0:sKeypk4yoOI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=rIacUvhERJ0:sKeypk4yoOI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=rIacUvhERJ0:sKeypk4yoOI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=rIacUvhERJ0:sKeypk4yoOI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/rIacUvhERJ0" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Charlie)</author><pubDate>Mon, 23 Feb 2009 12:00:00 EST</pubDate><guid isPermaLink="false">155</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=534&amp;title=20_pushups_an_Hour</feedburner:origLink></item><item><title>Follow Us On Twitter</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/NddRHdHq-xE/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=NddRHdHq-xE:pG7QShabFj0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=NddRHdHq-xE:pG7QShabFj0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=NddRHdHq-xE:pG7QShabFj0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=NddRHdHq-xE:pG7QShabFj0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=NddRHdHq-xE:pG7QShabFj0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=NddRHdHq-xE:pG7QShabFj0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=NddRHdHq-xE:pG7QShabFj0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/NddRHdHq-xE" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Fri, 20 Feb 2009 12:00:00 EST</pubDate><guid isPermaLink="false">160</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=415&amp;title=Follow_Us_On_Twitter</feedburner:origLink></item><item><title>Google Chrome:  The Only Web Browser for Mom</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/tO5lG8cq5eo/blog.aspx</link><description>&lt;h2&gt;Mom gets on the Internet&lt;/h2&gt;
&lt;p&gt;So, while I was figuring out when I would have time to set this laptop up for her, I had thought about which browser to install.  To know why I chose Chrome, one only needs to watch my Mom on the computer for 2 minutes.  There's no way to explain it.  She has six sons, so much of her life was raising us troublemakers.  She has no interest in the Internet, whatsoever, she's just getting on because I've told her numerous times, "The pictures of your Grandchildren are up on flickr.com".  Instead she insists on print-outs, and although they work quite well - paper doesn't grow on trees....well....you get what I'm saying.&lt;/p&gt;
&lt;p&gt;Just the other day, she wanted to find out where in the body the spleen was located, because my brother has been having pains.  She wasn't sleeping well because of it, and she had learned of WebMD over the radio or TV or something.  So the advertising worked.   She quickly became frustrated as she pointed to a drawing of an interactive body, trying to tell it where the pain in my brother was.  She kept clicking "It's right there!"  Nothing happened.  Right then was her first lesson in Google and Wikipedia.  After one minute, we found out it's not the spleen, instead it's probably the liver.  Big surprise.  Actually, he hurt himself snowboarding, it's just cracked ribs.&lt;/p&gt;
&lt;h2&gt;So why is Chrome the best choice for Mom?  Simplicity.&lt;/h2&gt;
&lt;p&gt;The most obvious evidence of this is that there is only one bar to enter text into.  Web pages can be difficult enough to navigate for someone with little to no browsing experience, she doesn't need a difficult browser to navigate as well.  My tutorial on this part was "Enter what you're looking for here, and if you happen to know the address, type it in." It just doesn't get simpler than that.&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/jtc/chrome/chrome2.jpg" border="0" width="416" height="38" /&gt;&lt;/p&gt;
&lt;p&gt;The other huge factor in the simplicity realm is the "Create Application Shortcuts..." button.  Another of my  brothers had just set her up with an email address from Comcast.  I went to the site, entered in her credentials and signed in, making sure to click "Remember Me", and allowing Chrome to remember the username and password.  I then created an application shortcut with a link on her desktop titled "Comcast Email".&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/jtc/chrome/chrome1.jpg" border="0" width="237" height="82" /&gt;&lt;/p&gt;
&lt;p&gt;Looking at Firefox, just the toolbar alone is enough to discourage newcomers.&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/jtc/chrome/firefox1.jpg" border="0" width="289" height="92" /&gt;&lt;/p&gt;
&lt;p&gt;When Chrome opens the new window, there's that page with her most visited sites and recent bookmarks.  I think she will become very accustomed to this and find it very easy to use.&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/jtc/chrome/chrome8.jpg" border="0" width="440" height="359" /&gt;&lt;/p&gt;
&lt;p&gt;I feel that Chrome follows that timeless saying, "Perfection is achieved not when there is nothing left to add, but when there is nothing left to take away" - Antoine de Saint-Exupery.&lt;/p&gt;
&lt;p&gt;I feel that no confusion about the web browser will make Mom's browsing and emailing experiences very pleasant.  Now we just have to get certain relatives to stop forwarding those Bill Gates emails promising thousands of dollars!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=W562XSDs"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=r0vZZVET"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=SdpKlIlB"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=SdpKlIlB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=X86XDNEo"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=SjUual0W"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=SjUual0W" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/tO5lG8cq5eo" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Jason)</author><pubDate>Thu, 12 Feb 2009 12:00:00 EST</pubDate><guid isPermaLink="false">156</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=380&amp;title=Google_Chrome__The_Only_Web_Browser_for_Mom</feedburner:origLink></item><item><title>Top 5 Web Marketing Metrics</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/NAtPJaElAW8/blog.aspx</link><description>&lt;p&gt;Answer those questions and you'll have a better organized, user friendly, and content rich website that your customers will value.&lt;/p&gt;
&lt;p&gt;Another popular comment I hear often is we should have blogs, RSS feeds, utilize &lt;a href="http://www.facebook.com"&gt;facebook&lt;/a&gt;, &lt;a href="http://www.twitter.com"&gt;twitter&lt;/a&gt;, etc. because everyone else is doing it. But then if I asked why they want a blog, many times the answer is unclear.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Do you have a following of regular customers that may want to find out updates to your site?&lt;/strong&gt; Then maybe an RSS feed would work better for your product. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Are you considered an expert in your field?&lt;/strong&gt; Then a blog would probably be better suited to keep your customers engaged with your company and perhaps even gain some new readers. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do you have a community of people that swear by your product and are spreading the news to their friends?&lt;/strong&gt; Great!&amp;nbsp; Welcome to word-of-mouth marketing! A natural fit would be social marketing tools like a forum or &lt;a href="http://www.facebook.com"&gt;facebook&lt;/a&gt; or even creating a user generated section of your site, e.g. testimonials.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Online marketing is a great and important way to reach out to your customers but there are lots of different methods depending on your customer segment and your industry as well as your budget. &lt;span class="callout"&gt;Make sure that you are thinking through the best marketing strategy for your product before jumping on the bandwagon.&lt;/span&gt; An experienced online marketing company, such as Delphic Sage, can research your business and customers and help you set up an ongoing online marketing plan (wink, wink).&lt;/p&gt;
&lt;p&gt;If you implement some sort of measurement tool, you will more likely be able to get buy-in from the powers to be because you can quantify the ROI for your spending. There are many free analytics and marketing tools (&lt;a href="http://www.google.com/analytics"&gt;Google Analytics&lt;/a&gt;) out there that can help you measure your online marketing efforts. The number one mistake I see companies making is not tying their online efforts into tangible sales whether online or offline. You should track that customer from their initial click, throughout their visit and monitor their purchase behavior. If there is an online order form, great! If there isn't, there are many 3rd party metrics tools that can help you track a user from online to an offline phone call for purchase. And if you are losing your customers somewhere along the way, these tracking tools will help you find the drop-off point!&lt;/p&gt;
&lt;h2&gt;5 things each company should measure:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Web Traffic (sources and quantity)&lt;/li&gt;
&lt;li&gt;Bounce Rates (especially on landing pages)&lt;/li&gt;
&lt;li&gt;Top Keywords (search engines and internal search logs)&lt;/li&gt;
&lt;li&gt;Click thru rate&lt;/li&gt;
&lt;li&gt;Conversion Rate&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Bonus: &lt;/em&gt;Measure User Engagement&lt;/li&gt;
&lt;/ol&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=v9isb4Io"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=gxMb4cpr"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=kQ1eTSLG"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=kQ1eTSLG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=SPgP9cAF"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=xnwzT5Jr"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=xnwzT5Jr" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/NAtPJaElAW8" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Tania R)</author><pubDate>Fri, 06 Feb 2009 12:00:00 EST</pubDate><guid isPermaLink="false">154</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=376&amp;title=Top_5_Web_Marketing_Metrics</feedburner:origLink></item><item><title>Get Your Free White Paper on Squeeze Pages</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/yfic93hI04I/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=sGzauzW5"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=qbQvun4Q"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=SsoOrdLx"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=SsoOrdLx" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=VMmADLJe"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=nkti7oBh"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=nkti7oBh" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/yfic93hI04I" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Mon, 02 Feb 2009 12:00:00 EST</pubDate><guid isPermaLink="false">153</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=363&amp;title=Get_Your_Free_White_Paper_on_Squeeze_Pages</feedburner:origLink></item><item><title>10 Development Tools That We Wouldn't Want to Live Without</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/WrDMkFNgolw/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=80RwVE9h"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=t4Jxqch6"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=iPavPJ8B"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=iPavPJ8B" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=a3HQhPVn"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=um1xJA9D"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=um1xJA9D" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/WrDMkFNgolw" height="1" width="1"/&gt;</description><author>info@delphicsage.com (SMercer)</author><pubDate>Tue, 20 Jan 2009 12:00:00 EST</pubDate><guid isPermaLink="false">151</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=355&amp;title=10_Development_Tools_That_We_Wouldnt_Want_to_Live_Without</feedburner:origLink></item><item><title>Facebook and the Shoemakers Children</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/vuG-K1_PFys/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=vuG-K1_PFys:VsR_kNojEpY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=vuG-K1_PFys:VsR_kNojEpY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=vuG-K1_PFys:VsR_kNojEpY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=vuG-K1_PFys:VsR_kNojEpY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=vuG-K1_PFys:VsR_kNojEpY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=vuG-K1_PFys:VsR_kNojEpY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=vuG-K1_PFys:VsR_kNojEpY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/vuG-K1_PFys" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Fri, 16 Jan 2009 12:00:00 EST</pubDate><guid isPermaLink="false">150</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=535&amp;title=Facebook_and_the_Shoemakers_Children</feedburner:origLink></item><item><title>Happy New Year </title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/p8EHYGEdKd0/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=9F8aYGF7"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=lsWow1d0"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=7m6BUDpP"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=7m6BUDpP" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=KxJ3Uasm"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=o5pLpnSL"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=o5pLpnSL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/p8EHYGEdKd0" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Wed, 31 Dec 2008 12:00:00 EST</pubDate><guid isPermaLink="false">147</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=345&amp;title=Happy_New_Year_</feedburner:origLink></item><item><title>Delphic Sage Adopts-A-Family for the Holidays!</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/T-SUyMb2etg/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=ME4P8baX"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=7hlsCrBH"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=2AMOYzCD"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=2AMOYzCD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=aqYi3rA8"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=chxdWuB8"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=chxdWuB8" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/T-SUyMb2etg" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Tania R)</author><pubDate>Tue, 23 Dec 2008 12:00:00 EST</pubDate><guid isPermaLink="false">146</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=339&amp;title=Delphic_Sage_AdoptsAFamily_for_the_Holidays</feedburner:origLink></item><item><title>Social Media Conversation Prism</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/2AShSFd0XCg/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=2AShSFd0XCg:MddakqdP5cg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=2AShSFd0XCg:MddakqdP5cg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=2AShSFd0XCg:MddakqdP5cg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=2AShSFd0XCg:MddakqdP5cg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=2AShSFd0XCg:MddakqdP5cg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=2AShSFd0XCg:MddakqdP5cg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=2AShSFd0XCg:MddakqdP5cg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/2AShSFd0XCg" height="1" width="1"/&gt;</description><author>info@delphicsage.com (T.R.)</author><pubDate>Mon, 01 Dec 2008 12:00:00 EST</pubDate><guid isPermaLink="false">143</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=537&amp;title=Social_Media_Conversation_Prism</feedburner:origLink></item><item><title>I almost missed a flight because of a Mac OSX BSOD!!!</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/4Vj7AwCnhyI/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=4Vj7AwCnhyI:faEBbKOqFJA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=4Vj7AwCnhyI:faEBbKOqFJA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=4Vj7AwCnhyI:faEBbKOqFJA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=4Vj7AwCnhyI:faEBbKOqFJA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=4Vj7AwCnhyI:faEBbKOqFJA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=4Vj7AwCnhyI:faEBbKOqFJA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=4Vj7AwCnhyI:faEBbKOqFJA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/4Vj7AwCnhyI" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Scott)</author><pubDate>Tue, 11 Nov 2008 12:00:00 EST</pubDate><guid isPermaLink="false">142</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=536&amp;title=I_almost_missed_a_flight_because_of_a_Mac_OSX_BSOD</feedburner:origLink></item><item><title>Facelift for Three for All-Fill</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/GD28123mYiE/blog.aspx</link><description>&lt;p&gt;&lt;a href="http://www.alphacheckweighers.com" target="_blank" title="Alpha Checkweighers"&gt;&lt;img src="/Uploads/Gallery/blog/alpha checkweighers redesign by delphic sage.JPG" border="0" alt="Alpha Checkweighers Web Redesign" title="Alpha Checkweighers Web Site Redesign" width="540" height="393" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.augerfab.com" target="_blank" title="AugerFab"&gt;&lt;img src="/Uploads/Gallery/blog/augerfab redesign by delphic sage.JPG" border="0" alt="AugerFab Web Redesign" title="AugerFab Web Site Redesign" width="540" height="348" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Delphic Sage is a &lt;a href="/default.aspx?p=1156"&gt;Philadelphia web design&lt;/a&gt; and development agency.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=GD28123mYiE:4Q9kB9PI3EU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=GD28123mYiE:4Q9kB9PI3EU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=GD28123mYiE:4Q9kB9PI3EU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=GD28123mYiE:4Q9kB9PI3EU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=GD28123mYiE:4Q9kB9PI3EU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=GD28123mYiE:4Q9kB9PI3EU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=GD28123mYiE:4Q9kB9PI3EU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/GD28123mYiE" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Mon, 10 Nov 2008 12:00:00 EST</pubDate><guid isPermaLink="false">141</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=538&amp;title=Facelift_for_Three_for_AllFill</feedburner:origLink></item><item><title>Start Your Engines!!!</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/Mr0ynYth4TQ/blog.aspx</link><description>&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/pics_gocarts11.jpg" border="0" alt="Delphic Sage Go-Carting" title="Delphic Sage Go-Carting" width="540" height="386" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/pics_gocarts8.jpg" border="0" alt="Delphic Sage Go-Carting" title="Delphic Sage Go-Carting" width="540" height="723" /&gt;&lt;br /&gt; &lt;em&gt;Ready for war&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/pics_gocarts2.jpg" border="0" alt="Delphic Sage Go-Carting" title="Delphic Sage Go-Carting" width="540" height="723" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/pics_gocarts10.jpg" border="0" alt="Delphic Sage Go-Carting" title="Delphic Sage Go-Carting" width="540" height="386" /&gt;&lt;br /&gt;&lt;em&gt;A battle for pole position&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/pics_gocarts3.jpg" border="0" alt="Delphic Sage Go-Carting" title="Delphic Sage Go-Carting" width="540" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/pics_gocarts12.jpg" border="0" alt="Delphic Sage Go-Carting" title="Delphic Sage Go-Carting" width="540" height="386" /&gt;&lt;br /&gt;&lt;em&gt;I really hope she's not flipping me off&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/pics_gocarts6.jpg" border="0" alt="Delphic Sage Go-Carting" title="Delphic Sage Go-Carting" width="540" height="723" /&gt;&lt;br /&gt;&lt;em&gt;Kevin's new friends. Introduced to him by Mark&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/pics_gocarts5.jpg" border="0" alt="Delphic Sage Go-Carting" title="Delphic Sage Go-Carting" width="540" height="723" /&gt;&lt;br /&gt;&lt;em&gt;Losing the race means facing the velociraptor.&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/pics_gocarts9.jpg" border="0" alt="Delphic Sage Go-Carting" title="Delphic Sage Go-Carting" width="540" height="723" /&gt;&lt;br /&gt;&lt;em&gt;Our Chef&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/pics_gocarts4.jpg" border="0" alt="Delphic Sage Go-Carting" title="Delphic Sage Go-Carting" width="540" height="723" /&gt;&lt;br /&gt;&lt;em&gt;Neon lights and all&lt;/em&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Mr0ynYth4TQ:nKulMiXdkZ8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Mr0ynYth4TQ:nKulMiXdkZ8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Mr0ynYth4TQ:nKulMiXdkZ8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=Mr0ynYth4TQ:nKulMiXdkZ8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Mr0ynYth4TQ:nKulMiXdkZ8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Mr0ynYth4TQ:nKulMiXdkZ8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=Mr0ynYth4TQ:nKulMiXdkZ8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/Mr0ynYth4TQ" height="1" width="1"/&gt;</description><author>info@delphicsage.com (CH)</author><pubDate>Wed, 05 Nov 2008 12:00:00 EST</pubDate><guid isPermaLink="false">139</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=539&amp;title=Start_Your_Engines</feedburner:origLink></item><item><title>YouTube Now Second-largest Search Site</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/wkenPpe_Nvs/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=DKDWXbjN"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=zpZk2USI"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=OP16T1JV"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=OP16T1JV" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=5CMS7J5c"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=TXXAdWAn"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=TXXAdWAn" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/wkenPpe_Nvs" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Tania R.)</author><pubDate>Mon, 27 Oct 2008 12:00:00 EST</pubDate><guid isPermaLink="false">138</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=310&amp;title=YouTube_Now_Secondlargest_Search_Site</feedburner:origLink></item><item><title>Good Looking Bike Rides - Manayunk to South Philly</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/Etbnb_AjmOI/blog.aspx</link><description>&lt;p&gt;&lt;img src="/Uploads/Gallery/four.jpg" border="0" width="540" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/two.jpg" border="0" width="540" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/DSCN1202.jpg" border="0" width="540" height="720" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Etbnb_AjmOI:YMrRnJWlCsA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Etbnb_AjmOI:YMrRnJWlCsA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Etbnb_AjmOI:YMrRnJWlCsA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=Etbnb_AjmOI:YMrRnJWlCsA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Etbnb_AjmOI:YMrRnJWlCsA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=Etbnb_AjmOI:YMrRnJWlCsA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=Etbnb_AjmOI:YMrRnJWlCsA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/Etbnb_AjmOI" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Charlie)</author><pubDate>Wed, 15 Oct 2008 12:00:00 EST</pubDate><guid isPermaLink="false">135</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=541&amp;title=Good_Looking_Bike_Rides__Manayunk_to_South_Philly</feedburner:origLink></item><item><title>Advertiser vs. Consumer - Longing for a Two Way Dialogue</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/IEXhK3Uk9C8/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=IEXhK3Uk9C8:Ai88bX3uk7w:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=IEXhK3Uk9C8:Ai88bX3uk7w:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=IEXhK3Uk9C8:Ai88bX3uk7w:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=IEXhK3Uk9C8:Ai88bX3uk7w:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=IEXhK3Uk9C8:Ai88bX3uk7w:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=IEXhK3Uk9C8:Ai88bX3uk7w:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=IEXhK3Uk9C8:Ai88bX3uk7w:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/IEXhK3Uk9C8" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Wed, 15 Oct 2008 12:00:00 EST</pubDate><guid isPermaLink="false">136</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=508&amp;title=Advertiser_vs_Consumer__Longing_for_a_Two_Way_Dialogue</feedburner:origLink></item><item><title>An Easier Way to Modify the XHTML Output of ASP.NET Controls</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/_m8I9bRQdjQ/blog.aspx</link><description>&lt;h2&gt;How to Make Small Modifications to the XHtml Generated from Controls Using a StringWriter and XmlDocument&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;Say you're writing a control or a control adapter and you want to just simply include one extra attribute, or maybe an extra nested element (e.g. a div or a span with a css class on it), ideally there would be something analogous to virtual methods and inheritance where you can say, "do the base method, except here, where I'll override what is normally done, etc."&lt;/p&gt;
&lt;p&gt;The scenario of inheriting from a Control gives you some flexibility because .net exposes some of the modular methods for rendering out the control to be overridden, such as RenderBeginTag, RenderChildren.  ControlAdapters are a lot more sparse, you mostly just have a base call to render out how the control would be rendered out if the base control adapter was being used to render out the control (with the base action frequently being to render out the control as if no control adapter was being applied).&lt;/p&gt;
&lt;p&gt;On possible solution to all of this is to just create a temporary HtmlTextWriter wrapping a StringWriter and do a base call to Render passing that writer in.  You can now get what the original xhtml would have been by calling .ToString() on the inner StringWriter.&lt;/p&gt;
&lt;p&gt;To work with the generated html, while there isn't an HtmlTextReader, keep in mind that since the controls should be generating xhtml, that should mean the text will be well-formed xml, so you can XmlDocument (or an XmlTextReader) to navigate through the xhtml generated and mindlessly rewrite it to the original HtmlTextWriter with the 'except'  cases written in.&lt;/p&gt;
&lt;p&gt;One possible exception to the generated text being xml that I could imagine is if there is a control that have an enclosing element.  In that case you would want your adapter to just prepend and append custom opening and closing tags around the base xhtml and then, when doing the re-writing of the original xhtml, just don't write the outermost element.&lt;/p&gt;
&lt;p&gt;Below is an illustrative example where I write a control adapter for drop down lists that for each option in the list, encloses the text with a span element that has a class attribute of "my-span".&lt;/p&gt;
&lt;p&gt;&lt;a href="/Uploads/FileManager/ExtendingControlRender.zip"&gt;Download the SourceCode&lt;/a&gt;&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.Adapters;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xml;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; DelphicSage.TestAdapters&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; DropDownListAdapter : ControlAdapter&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Render(HtmlTextWriter writer)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            StringWriter baseStringWriter = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringWriter();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            HtmlTextWriter baseWriter = &lt;span class="kwrd"&gt;new&lt;/span&gt; HtmlTextWriter(baseStringWriter);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            baseWriter.NewLine = writer.NewLine;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            baseWriter.Indent = writer.Indent;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            &lt;span class="rem"&gt;// baseWriter.FormatProvider = writer.FormatProvider;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="rem"&gt;// baseWriter.Encoding = writer.Encoding;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            &lt;span class="kwrd"&gt;base&lt;/span&gt;.Render(baseWriter);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            baseWriter.Flush();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            baseWriter.Close();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; baseHtml = baseStringWriter.ToString();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(baseHtml))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                XmlDocument originalXhtml = &lt;span class="kwrd"&gt;new&lt;/span&gt; XmlDocument();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                originalXhtml.PreserveWhitespace = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;                originalXhtml.LoadXml(baseHtml);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;                &lt;span class="kwrd"&gt;this&lt;/span&gt;.WriteNode(writer, originalXhtml);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WriteNode(HtmlTextWriter writer, XmlNode xhtmlNode)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            &lt;span class="kwrd"&gt;switch&lt;/span&gt; (xhtmlNode.NodeType)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                &lt;span class="kwrd"&gt;case&lt;/span&gt; XmlNodeType.Text:&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                    WriteTextNode(writer, xhtmlNode);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                &lt;span class="kwrd"&gt;case&lt;/span&gt; XmlNodeType.Whitespace:&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;                    WriteWhitespaceNode(writer, xhtmlNode);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;                &lt;span class="kwrd"&gt;case&lt;/span&gt; XmlNodeType.Element:&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;                    WriteElementNode(writer, xhtmlNode);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;                &lt;span class="kwrd"&gt;default&lt;/span&gt;:&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;                    WriteUnknownNode(writer, xhtmlNode);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;            &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WriteUnknownNode(HtmlTextWriter writer, XmlNode xhtmlNode)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;            WriteChildNodes(writer, xhtmlNode);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WriteTextNode(HtmlTextWriter writer, XmlNode xhtmlNode)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;            writer.Write(xhtmlNode.Value);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WriteWhitespaceNode(HtmlTextWriter writer, XmlNode xhtmlNode)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;            writer.Write(xhtmlNode.Value);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;            WriteChildNodes(writer, xhtmlNode);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WriteChildNodes(HtmlTextWriter writer, XmlNode xhtmlNode)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (xhtmlNode.HasChildNodes)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (XmlNode childNode &lt;span class="kwrd"&gt;in&lt;/span&gt; xhtmlNode.ChildNodes)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;                {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;                    WriteNode(writer, childNode);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;                }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WriteElementNode(HtmlTextWriter writer, XmlNode xhtmlNode)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;            writer.WriteBeginTag(xhtmlNode.Name);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;            WriteAttributes(writer, xhtmlNode);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (xhtmlNode.Name.ToLower() == &lt;span class="str"&gt;"option"&lt;/span&gt;)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;                writer.Write(&lt;span class="str"&gt;"&amp;gt;"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;                writer.WriteBeginTag(&lt;span class="str"&gt;"span"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;                writer.WriteAttribute(&lt;span class="str"&gt;"class"&lt;/span&gt;, &lt;span class="str"&gt;"my-span"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;                writer.Write(&lt;span class="str"&gt;"&amp;gt;"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;                writer.Write(xhtmlNode.InnerXml);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;                writer.WriteEndTag(&lt;span class="str"&gt;"span"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  97:  &lt;/span&gt;                writer.WriteEndTag(&lt;span class="str"&gt;"option"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  98:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  99:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 100:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 101:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (xhtmlNode.HasChildNodes)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 102:  &lt;/span&gt;                {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 103:  &lt;/span&gt;                    writer.Write(&lt;span class="str"&gt;"&amp;gt;"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 104:  &lt;/span&gt;                    WriteChildNodes(writer, xhtmlNode);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 105:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 106:  &lt;/span&gt;                    writer.WriteEndTag(xhtmlNode.Name);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 107:  &lt;/span&gt;                }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 108:  &lt;/span&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 109:  &lt;/span&gt;                {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 110:  &lt;/span&gt;                    writer.Write(&lt;span class="str"&gt;" /&amp;gt;"&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 111:  &lt;/span&gt;                }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 112:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 113:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 114:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 115:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WriteAttributes(HtmlTextWriter writer, XmlNode xhtmlNode)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 116:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 117:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (xhtmlNode.Attributes != &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 118:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 119:  &lt;/span&gt;                &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (XmlAttribute attribute &lt;span class="kwrd"&gt;in&lt;/span&gt; xhtmlNode.Attributes)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 120:  &lt;/span&gt;                {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 121:  &lt;/span&gt;                    &lt;span class="rem"&gt;// the base xHtml seems to generate Attributes as&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 122:  &lt;/span&gt;                    &lt;span class="rem"&gt;// attribute_name='foo("bar");'&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 123:  &lt;/span&gt;                    &lt;span class="rem"&gt;// but the HtmlTextWriter.WriterAttribute spits out attribute_name="foo"&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 124:  &lt;/span&gt;                    &lt;span class="rem"&gt;// so we'll switch the double-quotes (") in the attribute's original value to &lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 125:  &lt;/span&gt;                    &lt;span class="rem"&gt;// to a single quote ('), to get something more like&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 126:  &lt;/span&gt;                    &lt;span class="rem"&gt;// attribute_name="foo('bar');"&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 127:  &lt;/span&gt;                    writer.WriteAttribute(attribute.Name, attribute.Value.Replace(&lt;span class="str"&gt;"\""&lt;/span&gt;, &lt;span class="str"&gt;"'"&lt;/span&gt;));&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 128:  &lt;/span&gt;                }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 129:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 130:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 131:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt; 132:  &lt;/span&gt;}&lt;br /&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;As you can see, it is much easier to parse and manipulate an XMLDocument object than to mess around with a string.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=lMVY7tDN"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=HHdXHmST"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=DzxzGX94"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=DzxzGX94" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=CCmg8P0f"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=QEdKayyk"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=QEdKayyk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/_m8I9bRQdjQ" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Mark S.)</author><pubDate>Tue, 14 Oct 2008 12:00:00 EST</pubDate><guid isPermaLink="false">134</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=280&amp;title=An_Easier_Way_to_Modify_the_XHTML_Output_of_ASPNET_Controls</feedburner:origLink></item><item><title>jQuery Style ASP.NET Form Validators - Part Deux: Let&amp;#039;s Get Animated</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/8z5evgGYySA/blog.aspx</link><description>&lt;p&gt;If you&amp;#039;ll look closely at&amp;nbsp;lines 14 and 16, all I have done is comment out the old microsoft code that&amp;nbsp;toggles the display and replaced them with the jQuery Show and Hide functions. If you want to glitz it up even more, you could use the extensive jQuery animation library to blink, fade, slide, earthquake&amp;nbsp;and pulsate your validation messages so that&amp;nbsp;they&amp;#039;re impossible for your users to ignore....especially when their browser crashes and their machine catches fire. You can also use the same tactic to animate your validation summary show/hide. &amp;nbsp;Anyway, use&amp;nbsp;this knowledge&amp;nbsp;in good taste....and enjoy.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=zTPGRjRk"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=zix6jfFE"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=xifP4284"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=xifP4284" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=QRgFkjOF"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=CguwQeSb"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=CguwQeSb" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/8z5evgGYySA" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Scott)</author><pubDate>Tue, 07 Oct 2008 12:00:00 EST</pubDate><guid isPermaLink="false">131</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=273&amp;title=jQuery_Style_ASPNET_Form_Validators__Part_Deux_Let039s_Get_Animated</feedburner:origLink></item><item><title>GMail Goggles?</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/1VVCDUy7Ox8/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=myN4IzeV"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=QUlHXaGG"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=63wNlxpC"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=63wNlxpC" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=rmWTj1SD"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=IKfCdwns"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=IKfCdwns" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/1VVCDUy7Ox8" height="1" width="1"/&gt;</description><author>info@delphicsage.com (b-ri)</author><pubDate>Tue, 07 Oct 2008 12:00:00 EST</pubDate><guid isPermaLink="false">132</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=274&amp;title=GMail_Goggles</feedburner:origLink></item><item><title>Chrome - The new guy.</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/eK1shKDov6M/blog.aspx</link><description>&lt;h2&gt;Bugs:&lt;/h2&gt;
&lt;p&gt;My first bug came out at YouTube. I got a JavaScript message saying I needed to "Download the most recent version of Flash player" or "Enable Javascript".&amp;nbsp; After I downloaded the most recent Flash player and restarted Chrome I still wasn't able to view the flash content... and was still getting the same message. I searched for "Chrome flash player download" and came across &lt;a href="http://www.thewwwblog.com/install-flash-player-google-chrome-browser.html"&gt;The WWW Blog&lt;/a&gt; and a post they wrote about the problem that I was having. Apparently, Chrome is have difficulty with required authentication and sites that require flash to display content. &lt;br /&gt;&lt;br /&gt;The fix was quick and rather painless but none the less, felt a bit patchy and sort-of felt like I was putting a band-aid on pretty bigger problem. From there I noticed that there wasn't an easy way for me to navigate to Chrome's plug-ins. The non-existant toolbar made me feel a bit helpless and the "Control/Customize" drop-downs didn't lead me into a specific direction.&lt;/p&gt;
&lt;h2&gt;The Developer tool:&lt;/h2&gt;
&lt;p&gt;I thought that the Developer tool was sort-of nice because I was able to highlight code the same way I do while using &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843"&gt;Firebug&lt;/a&gt; but wasn't able to momentarily augment code (ex: change an element's CSS display from "inline" to "block"),&amp;nbsp; thus making the tool more neat then useful. Initially, I was pleased to see such a developer friendly tool as a default in the browser. Seeing as Firebug has become one of the most powerful tools a developer can get his or her hands on, I would have been happy to thank google for the ability to fix the inevitable platform bugs a new browsers presents. But Chrome's inspector fell short of what, I thought, it's intended use was. The "Javascript Debug" dialogue occurred with out context to the rest of the code, making the tool feel useless. When I put Chrome's JS debugger against Firebug's, the Chrome tools felt like a gadget and NOT a developer tool.&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog_chrome2.jpg" border="0" width="350" height="219" /&gt;&lt;/p&gt;
&lt;h2&gt;Complaints:&lt;/h2&gt;
&lt;p&gt;Where I would expect to find the "Open a new page"&amp;nbsp; link, I found nothing! I figured I was in the wrong drop down but was disappointed to find that it wasn't in either of the drop-down lists. I reverted back to the "control-o" command and was relieved that it worked but felt that the non keyboard shortcut route should at least be an option. This isn't much of a bug and will, in the end, make for a more efficient user but, I feel took the leap pre-emptivly and will cause confusion with the general public who is finally grasping the concept of using tabs.&lt;br /&gt;&lt;br /&gt;Also, by calling this version of Chrome a "Beta", Google is releasing themselves of accountability of crummy browsing, security holes and general mess-ups. Though it's may be a great idea to release a beta to the general public, it seems a little wishy-washy in the same way that Gmail beta has been around for three years. &lt;br /&gt;&lt;br /&gt;Download &lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=JSZjxqOX"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=NDdepsXm"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=0H44KAc4"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=0H44KAc4" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=5hfo0u8j"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=QAg6v0nC"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=QAg6v0nC" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/eK1shKDov6M" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Charlie)</author><pubDate>Tue, 09 Sep 2008 12:00:00 EST</pubDate><guid isPermaLink="false">130</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=269&amp;title=Chrome__The_new_guy</feedburner:origLink></item><item><title>Taking Google Chrome for a Test Drive: First Impressions</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/Z3IrtDcqGKs/blog.aspx</link><description>&lt;p&gt;So a few quick comments of what I've observed so far.&lt;/p&gt;
&lt;p&gt;What I've liked:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It seems pretty zippy on Javascript heavy pages (which I use a lot)&lt;/li&gt;
&lt;li&gt;It's crashed once in several days of heavy use (Firefox 3 still crashes on me quite a few times a day)&lt;/li&gt;
&lt;li&gt;The minimalist approach in a browser is appreciated&lt;/li&gt;
&lt;li&gt;I like the tabs at the top&lt;/li&gt;
&lt;li&gt;Google Gears works well (surprise)&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What still needs work:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plug-ins - though I'm not a huge plug-in guy, there are some critical ones I'd like to see (on the way)&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;I don't really like the blue - though I understand there are themes out already&lt;/li&gt;
&lt;li&gt;Most sites hold up ok, but some more complex will need some work (&lt;a href="http://www.evernote.com" target="_blank" title="Evernote"&gt;Evernote&lt;/a&gt; was a tough one for me)&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Text editors are a disaster (not surprisingly)&lt;/li&gt;
&lt;li&gt;Initially it wasn't being identified in Google Analytics, but that has been remedied I understand&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It would seem that Google is trying build Chrome into a solid base for web-based applications. This is a welcome addition from our perspective. And the competition is always good for all of us.&lt;/p&gt;
&lt;p&gt;Drop us a comment and let us know your impressions so far, esepcially as it relates to web design and development.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=nceeZdjJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=5AUuAZy0"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=5mgKI73J"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=5mgKI73J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=1pHHQN2Q"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=A8S7Rm8r"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=A8S7Rm8r" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/Z3IrtDcqGKs" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Fri, 05 Sep 2008 12:00:00 EST</pubDate><guid isPermaLink="false">129</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=252&amp;title=Taking_Google_Chrome_for_a_Test_Drive_First_Impressions</feedburner:origLink></item><item><title>Convert Your ASP:Button Controls to Sliding Doors Styled Button Elements </title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/Zus4s8Eab3U/blog.aspx</link><description>&lt;p&gt;First thing that we need to do is create a class that derives from the &lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.adapters.controladapter.aspx" target="_blank"&gt;System.Web.UI.Adapters.ControlAdapter&lt;/a&gt;&amp;nbsp;class.&amp;nbsp;&amp;nbsp; So we'll create the ButtonAdapter.cs and add it to a folder called ControlAdapters in the App_Code folder of our website.&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;ButtonAdapter.cs&amp;nbsp;&amp;nbsp;&lt;/h3&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI.WebControls;

&lt;span class="kwrd"&gt;namespace&lt;/span&gt; App_Code.ControlAdapters
{
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ButtonAdapter : System.Web.UI.Adapters.ControlAdapter
    {
        &lt;span class="rem"&gt;// Return a strongly-typed reference&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Button Control
        {
            get
            {
                &lt;span class="kwrd"&gt;return&lt;/span&gt; (Button)&lt;span class="kwrd"&gt;base&lt;/span&gt;.Control;
            }
        }

        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Render(HtmlTextWriter writer)
        {
            Button button = &lt;span class="kwrd"&gt;this&lt;/span&gt;.Control;

            writer.WriteBeginTag(&lt;span class="str"&gt;"button"&lt;/span&gt;); &lt;span class="rem"&gt;// &amp;lt;button &lt;/span&gt;

            writer.WriteAttribute(&lt;span class="str"&gt;"value"&lt;/span&gt;, &lt;span class="str"&gt;"submit"&lt;/span&gt;); &lt;span class="rem"&gt;// &amp;lt;button value="submit" &lt;/span&gt;

            writer.WriteAttribute(&lt;span class="str"&gt;"id"&lt;/span&gt;, button.ClientID); &lt;span class="rem"&gt;// &amp;lt;button value="submit" id="btnButton"&lt;/span&gt;

            PostBackOptions myPostBackOptions = &lt;span class="kwrd"&gt;new&lt;/span&gt; PostBackOptions(button);
            &lt;span class="rem"&gt;//Add the Postback event&lt;/span&gt;
            &lt;span class="kwrd"&gt;if&lt;/span&gt; (button.Page.ClientScript.GetPostBackEventReference(myPostBackOptions).Length &amp;gt; 0)
            {
                &lt;span class="rem"&gt;//Turn on Validation if it needs to be on...&lt;/span&gt;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (button.CausesValidation)
                    myPostBackOptions.PerformValidation = &lt;span class="kwrd"&gt;true&lt;/span&gt;;

                &lt;span class="rem"&gt;//Need to replace double quotes with single quotes for javascript to work.&lt;/span&gt;
                writer.WriteAttribute(&lt;span class="str"&gt;"onclick"&lt;/span&gt;, button.Page.ClientScript.GetPostBackEventReference(myPostBackOptions).Replace(&lt;span class="str"&gt;"\""&lt;/span&gt;, &lt;span class="str"&gt;"'"&lt;/span&gt;)); &lt;span class="rem"&gt;// &amp;lt;button value="submit" &lt;/span&gt;

                &lt;span class="rem"&gt;//Register the Event&lt;/span&gt;
                button.Page.ClientScript.RegisterForEventValidation(myPostBackOptions);
            } &lt;span class="rem"&gt;// &amp;lt;button value="submit" id="btnButton" onclick="__doPostBack('btnButton','')"&lt;/span&gt;

            &lt;span class="kwrd"&gt;if&lt;/span&gt; (button.CssClass.Length &amp;gt; 0)
                writer.WriteAttribute(&lt;span class="str"&gt;"class"&lt;/span&gt;, button.CssClass); &lt;span class="rem"&gt;// &amp;lt;button value="submit" id="btnButton" onclick="__doPostBack('btnButton','')" class="large-button"&lt;/span&gt;

            writer.Write(HtmlTextWriter.TagRightChar); &lt;span class="rem"&gt;// &amp;lt;button value="submit" id="btnButton" onclick="__doPostBack('btnButton','')" class="large-button"&amp;gt;&lt;/span&gt;
            writer.WriteFullBeginTag(&lt;span class="str"&gt;"span"&lt;/span&gt;);
            writer.Write(button.Text);
            writer.WriteEndTag(&lt;span class="str"&gt;"span"&lt;/span&gt;); &lt;span class="rem"&gt;// &amp;lt;button value="submit" id="btnButton" onclick="__doPostBack('btnButton','')" class="large-button"&amp;gt;&amp;lt;span&amp;gt;testButton&amp;lt;/span&amp;gt;&lt;/span&gt;
            writer.WriteEndTag(&lt;span class="str"&gt;"button"&lt;/span&gt;); &lt;span class="rem"&gt;// &amp;lt;button value="submit" id="btnButton" onclick="__doPostBack('btnButton','')" class="large-button"&amp;gt;&amp;lt;span&amp;gt;testButton&amp;lt;/span&amp;gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
        }
    }
}&lt;/pre&gt;
&lt;p&gt;Notice that&amp;nbsp;the adapter&amp;nbsp;derives from System.Web.UI.Adapters.ControlAdapter and that we are overriding the rendering method. I've added comments on most of the lines&amp;nbsp;to give you an idea of what has been rendered at each point. The trickiest part about getting this to work was the Postback event, first we had to get the PostbackOptions for the Button, then we needed to turn on Validation if it was set on the button. Next we used GetPostBackEventReference to&amp;nbsp;retrieve and set the onclick event. We needed&amp;nbsp;to replace&amp;nbsp;double quotes with single quotes on GetPostBackEventReference because it was&amp;nbsp;causing javascript errors. Finally we needed to register the postback event with RegisterForEventValidation so that we wouldnt get&amp;nbsp;those annoying "Invalid Callback Or Postback Argument" errors.&amp;nbsp; If you have any questions you can always put them in the comments below.&lt;/p&gt;
&lt;h3&gt;Adapters.Browser&lt;/h3&gt;
&lt;p&gt;The next task is to create the browser file that tells the adapter to rule all of your buttons.&amp;nbsp; So we'll create the&amp;nbsp;Adapers.browser and add it to the App_Browsers folder of our website. You could create different adapters for each browser and set them up here but we just need one adapter for all of our browsers.&amp;nbsp; Just set the adapter location and the control type that we want to override and we're almost done. &amp;nbsp; Here is the code for&amp;nbsp;&amp;nbsp;Adapters.Browser:&lt;/p&gt;
&lt;pre class="csharpcode medium-box"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;browsers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;browser&lt;/span&gt; &lt;span class="attr"&gt;refID&lt;/span&gt;&lt;span class="kwrd"&gt;="Default"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;controlAdapters&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;adapter&lt;/span&gt; &lt;span class="attr"&gt;controlType&lt;/span&gt;&lt;span class="kwrd"&gt;="System.Web.UI.WebControls.Button"&lt;/span&gt; &lt;span class="attr"&gt;adapterType&lt;/span&gt;&lt;span class="kwrd"&gt;="App_Code.ControlAdapters.ButtonAdapter"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;controlAdapters&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;browser&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;browsers&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Now your asp:buttons should be rendering as button elements instead of inputs.&amp;nbsp; If they aren't, you did something wrong or maybe I did, leave a comment and we can try to help you out.&lt;/p&gt;
&lt;pre class="csharpcode short-box"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="btnSubmit"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="submitBtn"&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;="WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('btnSubmit', '', true, '', '', false, true))"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="submit"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Submit&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;We still need to set up the CSS to make the sliding doors work but that has already been covered by the folks at &lt;a href="http://www.filamentgroup.com/lab/styling_the_button_element_with_sliding_doors/  " target="_blank"&gt;filament group&lt;/a&gt;.&amp;nbsp; Check out the &lt;a href="/buttonadapterdemo/" target="_blank"&gt;live demo&lt;/a&gt;&amp;nbsp;to see it in action,&amp;nbsp;I used the filament group's css as a starting point so it should be easy to figure out.&amp;nbsp; &lt;a href="/Uploads/FileManager/ButtonAdapterDemo.zip"&gt;Here is the source code in&amp;nbsp;a ASP.NET 3.5&amp;nbsp;solution&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=Tg30WeOP"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=GjTsgI7o"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=2YBgwMit"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=2YBgwMit" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=pgyCMviZ"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=PZQrNqpq"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=PZQrNqpq" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/Zus4s8Eab3U" height="1" width="1"/&gt;</description><author>info@delphicsage.com (B-ri)</author><pubDate>Mon, 18 Aug 2008 12:00:00 EST</pubDate><guid isPermaLink="false">124</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=239&amp;title=Convert_Your_ASPButton_Controls_to_Sliding_Doors_Styled_Button_Elements_</feedburner:origLink></item><item><title>Life In The Cloud: A Journey Into the Ethereal </title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/TXeQDXfF8Xo/blog.aspx</link><description>&lt;h2&gt;My Online Life&lt;/h2&gt;
&lt;p&gt;So what tools do I use regularly? The following represents the core of my online life.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.basecamphq.com" target="_blank" title="Basecamp"&gt;Basecamp&lt;/a&gt; - our client Extranet&lt;br id="l0n1" /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.evernote.com" title="Evernote"&gt;Evernote&lt;/a&gt; - notes, personal and professional&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.facebook.com" target="_blank" title="Facebook"&gt;Facebook&lt;/a&gt; - personal networking&lt;/li&gt;
&lt;li&gt;Gmail via Google Apps for business&lt;/li&gt;
&lt;li&gt;Gmail (personal)&lt;/li&gt;
&lt;li&gt;Google Docs&lt;/li&gt;
&lt;li&gt;Google Calendar &lt;/li&gt;
&lt;li&gt;Google Reader&lt;/li&gt;
&lt;li&gt;Google Sites - the Delphic Sage Wiki&lt;br id="l0n12" /&gt;&lt;/li&gt;
&lt;li&gt;Google Talk - Instant Messenger&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.linkedin.com" target="_blank" title="LinkedIn"&gt;LinkedIn&lt;/a&gt; - professional networking&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mozy.com" target="_blank" title="Mozy"&gt;Mozy&lt;/a&gt; - home backup&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.napster.com" target="_blank" title="Napster"&gt;Napster &lt;/a&gt;- music as a subscription via web&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.rememberthemilk.com" target="_blank" title="Remember the Milk"&gt;Remember the Milk &lt;/a&gt;- ToDos&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.salesforce.com" target="_blank" title="Salesforce.com"&gt;Salesforce.com&lt;/a&gt; - CRM app&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Software Hold Outs&lt;/h2&gt;
&lt;p&gt;So, what's left from my old software-centric life? Not much really. &lt;br id="rjaj" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Word docs - at least complicated ones. Proposals from work especially, but they are on my list to convert to Google Docs. This blog post was drafted in Google Docs for example.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;One really complicated Excel spreadsheet that acts as an executive dashboard - there's no way Google Docs will handle this anytime soon. Though I expect to port aspects of it into custom web application that shares more of it with Delphic Sage team.&lt;/li&gt;
&lt;li&gt;Windows Photo Gallery - I use this simple free app (with Vista) to organize photos at home. I'm frankly a bit afraid to use anything that will not be around a LONG time as getting it set up is tedious. Sure, I have a &lt;a href="http://www.flickr.com" target="_blank" title="Flickr"&gt;flickr&lt;/a&gt; account, but I just can't quite make the leap online. And the file volume is huge (about 10K pictures). &lt;br id="qyh90" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Observations from the Cloud &lt;br id="fr2d2" /&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I'm a little uncomfortable that I rely on Google so much. Not just for privacy issues, but at some level I feel like I have traded one monopoly (Microsoft) for another. But what can I say - they build good stuff.&lt;/li&gt;
&lt;li&gt;I've grown increasingly indignant about software that needs to be installed.&amp;nbsp; &lt;br id="lssx2" /&gt;&lt;/li&gt;
&lt;li&gt;Once an ardent Microsoft Windows supporter, I find myself increasingly caring less and less about what operating system I use. It simply doesn't matter much anymore.&lt;/li&gt;
&lt;li&gt;I love being able to get to virtually anything from anywhere on any device. This is especially true for mobile access via my phone (AT&amp;amp;T 8525). &lt;/li&gt;
&lt;li&gt;Speaking of mobile - this is still a bit of a challenge. But I'm thinking of moving to an iPhone, which should solve most of my issues.&lt;br id="btab" /&gt;&lt;/li&gt;
&lt;li&gt;Though I thought I would - I really don't miss Microsoft Outlook. Years of files made it soooooo slow. And it crashed -- often.&amp;nbsp;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;I also don't really care about browsers. I use Safari, Firefox and Internet Explorer interchangeably, though the plug-ins for Firefox are hard to beat (if v3 would stop crashing on me so much).&amp;nbsp; &lt;br id="ai920" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br id="sb4o1" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=DIbfVgC9"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=DhBxIZcP"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=AWjWFO5X"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=AWjWFO5X" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=INokhyuD"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=0y8rQwad"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=0y8rQwad" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/TXeQDXfF8Xo" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Sat, 02 Aug 2008 12:00:00 EST</pubDate><guid isPermaLink="false">123</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=222&amp;title=Life_In_The_Cloud_A_Journey_Into_the_Ethereal_</feedburner:origLink></item><item><title>Tools of the Trade: Using EditPlus 2 to Generate Code</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/mYiHrJK9sGQ/blog.aspx</link><description>&lt;p&gt;An alternative way to do this would be to open these files in Microsoft Excel and import those to a temporary table (in the sense that it will be deleted later, not a SQL Server "#" temporary table), run a bunch of select statements to find the corresponding ID of the item in the local database, or insert it if it doesn't exist, etc. These have to be done for thousands of records and at least 5 tables. The way that I ultimately opt for each time is to use EditPlus2. This doesn't have many benefits over importing to a table and using a cursor to loop over the items, however, either way has to be a one off solution since we're not going to write a generic CSV importer that can handle foreign key lookups or insertions... yet.&lt;/p&gt;
&lt;h2&gt;The Steps to Using Regex Replace in EditPlus&lt;/h2&gt;
&lt;p&gt;The first step to solving this problem is to examine the data to determine a good regular expression that can be used to parse it thoroughly the first time. This is what I came up with:&lt;/p&gt;
&lt;p&gt;^[0-9]*,([0-9]*),"([A-Z0-9]*)","([A-Za-z ,&amp;amp;0-9/\(\)\-]*)",(-?[0-9]*),(-?[0-9]*),(-?[0-9]*),([0|1]),([0|1])$&lt;br /&gt;Yes, it's a mess. Yes, it works. Better yet, since EditPlus (or your text editor) recognizes your matched groups, it makes it simple to extract these values and plug them into SQL statements. I always keep track of what the groups stand for in comments somewhere to make easy reference when I'm writing the SQL statements. Let's plug it into EditPlus:&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/jtc/snap2.jpg" border="0" width="467" height="384" /&gt;&lt;/p&gt;
&lt;p&gt;And run the replace to see what we get with this test replace&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/jtc/snap3.jpg" border="0" width="329" height="244" /&gt;&lt;/p&gt;
&lt;p&gt;Now we can write the SQL. Simply "Undo" the previous replace. EditPlus can undo an enormous amount.&amp;nbsp; The resulting file has close to 4000 lines, and it puts the entire replace into a single state, so pressing "CTRL-Z" once undoes the whole replace.&amp;nbsp; Fill in your SQL replace text.&amp;nbsp; It may take some experimentation and brute force, but one undo and you're back to the original file and can try again.&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/jtc/snap7.jpg" border="0" width="465" height="383" /&gt;&lt;/p&gt;
&lt;p&gt;Run the SQL replace and your SQL should be fully populated and syntactically correct.&amp;nbsp; If you miss a few things, you can just undo once and try again.&amp;nbsp; This SQL has a "set @jobCode" statement to lead off, and it's not declared anywhere, so you need to declare any variables at the top of all the replaced text, not &lt;em&gt;in &lt;/em&gt;the replace regular expression.&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/jtc/snap4.jpg" border="0" width="428" height="262" /&gt;&lt;/p&gt;
&lt;p&gt;This produces 185,561 lines of SQL from the 1,913 lines of comma separated values that I received.&lt;/p&gt;
&lt;h2&gt;Another Practical Use: Generating Public Properties from your Private Member Fields&lt;/h2&gt;
&lt;p&gt;One other use I will go over, and use it whenever I have to create a class with an inordinate amount of private fields, is to automatically generate public properties. Visual Studio does this but it can only do one at a time, and if you have many projects in your solution, you will notice that it has to "prepare files for refactoring" for about 5 minutes. Eclipse is instant, but I won't go into IDE differences. Here is a sample class that I will be "refactoring".&lt;/p&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/jtc/snap5.jpg" border="0" width="285" height="156" /&gt;&lt;/p&gt;
&lt;p&gt;Here's a good regular expression to read the lines that contain the private members&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ^\tprivate ([a-zA-Z]+) _([a-zA-Z0-9]+);$&lt;br /&gt;It's important to not include the underscore in the second group. Here is the replace text&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \0 // the whole match contains the ending semicolon so there is no need to add it here&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \tpublic \1 \2 {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \t\tget { return this._\2; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \t\tset { this._\2 = value; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \t}&lt;/p&gt;
&lt;h3&gt;The result&lt;/h3&gt;
&lt;p&gt;&lt;img src="/Uploads/Gallery/blog/jtc/snap6.jpg" border="0" width="450" height="648" /&gt;&lt;/p&gt;
&lt;p&gt;If you're like me and like to keep all your private/protected members in one spot and all properties in another, you can just copy the list of private/protected members, exclude the "\0" from the replace regular expression, and paste the resulting text where you want it in the class file. Get creative with some comments too!&amp;nbsp; Also, if you're like me, you use lowercase private members, instead of the underscore as I have here.&amp;nbsp; So just don't forget to replace your getters and setters with the correct variable name after you run the replace, lest you get infinite loops.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This type of problem may come up infrequently, but there may be other problems where writing a whole one-off program to read the file, parse it, maybe even write directly to the database instead of generating SQL, that may just be infeasible, and you may never use it again. It is a valuable skill to be able to choose the right tool for the job.&lt;br /&gt;Stay tuned for the next part in this series.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=IO0qCwBO"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=L9ogwYK3"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=8CGxkts5"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=8CGxkts5" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=hrxrjhcR"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=DgdvHdk9"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=DgdvHdk9" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/mYiHrJK9sGQ" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Jason)</author><pubDate>Fri, 01 Aug 2008 12:00:00 EST</pubDate><guid isPermaLink="false">122</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=212&amp;title=Tools_of_the_Trade_Using_EditPlus_2_to_Generate_Code</feedburner:origLink></item><item><title>jQuery Style ASP.NET Form Validators</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/CNJGBmQQ8ZA/blog.aspx</link><description>&lt;h2&gt;Making it Happen&lt;/h2&gt;
&lt;p&gt;The first thing I did was use &lt;a href="http://www.getfirebug.com" target="_blank"&gt;firebug &lt;/a&gt;to dissect the ASP.NET validation code that is included in all pages and identify the events and function that I needed to hijack. Then, I cooked up a few new javascript functions to handle the field highlights and focus change. The way I overrided the default&amp;nbsp;ASP.NET functionality without traditional inheritance was using the "last one wins" rule, where I essentially just redefined the ASP.NET javascript validation functions after they were instantiated in the resource.axd includes.&amp;nbsp;Because&amp;nbsp;my version of the ASP.NET functions is&amp;nbsp;written later in the HTML output stream, my code takes precedence and overrides the default behaviors.&amp;nbsp;To guarantee that my scripts are rendered&amp;nbsp;last, I had to&amp;nbsp;register the&amp;nbsp;include&amp;nbsp;in the Render() event handler of the page lifecycle, which I accessed through a shared,&amp;nbsp;base master page so that it would be global throughout our applications.&lt;/p&gt;
&lt;h2&gt;Long story short, here are the steps to jQuery Style&amp;nbsp;validation for ASP.NET:&lt;/h2&gt;
&lt;h3&gt;1. Create a CSS Class that allows you to highlight invalid inputs and display messages in a pretty way&lt;/h3&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;input.error  { background: #fed; border: 1px solid red; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;select.error { background: #fed; border: 1px solid red; }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;label.error, .form-side-labels label.error, .form-top-labels label.error&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt; 	display: block;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt; 	margin: 0 0 0 5px;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt; 	padding: 3px;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt; 	width: auto;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt; 	font-weight: bold;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt; 	color: #fff;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt; 	background: red;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;}&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;.form-top-labels label.error&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt; 	margin: 3px 0 0;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt; 	width: 416px;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;}&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;.form-top-labels .side-by-side label.error, .form-top-labels .side-by-side-last label.error { width: 200px; }&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;2. Override the Render event handler of your Page or MasterPage class to insert a reference to&amp;nbsp;your re-written event validation scripts&lt;/h3&gt;
&lt;div&gt;First, create an include file to contain the new javascripts. I called it validators.js. Here are the contents from that file:&lt;/div&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;ValidatorCommonOnSubmit = function() {                    &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    ClearValidatorCallouts();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    var result = SetValidatorCallouts();                                                                                           &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; result;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;}&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;ValidatorValidate = function(val, validationGroup, &lt;span class="kwrd"&gt;event&lt;/span&gt;) {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    val.isvalid = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; ((&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(val.enabled) == &lt;span class="str"&gt;'undefined'&lt;/span&gt; || val.enabled != &lt;span class="kwrd"&gt;false&lt;/span&gt;) &amp;amp;&amp;amp; IsValidationGroupMatch(val, validationGroup)) {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;typeof&lt;/span&gt;(val.evaluationfunction) == &lt;span class="str"&gt;'function'&lt;/span&gt;) {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            val.isvalid = val.evaluationfunction(val);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!val.isvalid &amp;amp;&amp;amp; Page_InvalidControlToBeFocused == &lt;span class="kwrd"&gt;null&lt;/span&gt; &amp;amp;&amp;amp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(val.focusOnError) == &lt;span class="str"&gt;'string'&lt;/span&gt; &amp;amp;&amp;amp; val.focusOnError == &lt;span class="str"&gt;'t'&lt;/span&gt;) {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;                ValidatorSetFocus(val, &lt;span class="kwrd"&gt;event&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    ClearValidatorCallouts();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    SetValidatorCallouts(); &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    ValidatorUpdateDisplay(val);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;}&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;SetValidatorCallouts = function()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;    var i;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;    var pageValid = &lt;span class="kwrd"&gt;true&lt;/span&gt;;                    &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt; (i = 0; i &amp;lt; Page_Validators.length; i++) {         &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        var inputControl = document.getElementById(Page_Validators[i].controltovalidate);               &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (!Page_Validators[i].isvalid) {                                                        &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(pageValid)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;                inputControl.focus();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;            WebForm_AppendToClassName(inputControl, &lt;span class="str"&gt;'error'&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            pageValid = &lt;span class="kwrd"&gt;false&lt;/span&gt;;                                                     &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        }                        &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;    }                    &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; pageValid;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;}&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;ClearValidatorCallouts = function()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;    var i;                    &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;    var invalidConrols = [];&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;    &lt;span class="kwrd"&gt;for&lt;/span&gt; (i = 0; i &amp;lt; Page_Validators.length; i++) {         &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;        var inputControl = document.getElementById(Page_Validators[i].controltovalidate);               &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;        WebForm_RemoveClassName(inputControl, &lt;span class="str"&gt;'error'&lt;/span&gt;);                                                  &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;    }                                        &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;} &lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Next, we'll register this file as a javascript include at the latest point possible in the asp.net page lifecycle, which is Render(). This timing is what allows us to redefine the built ASP.NET functions.&lt;/p&gt;
&lt;div style="height: 200px;" class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Render(HtmlTextWriter writer)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; validatorOverrideScripts = &lt;span class="str"&gt;"&amp;lt;script src=\"/js/validators.js\" type=\"text/javascript\"&amp;gt;&amp;lt;/script&amp;gt;"&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;this&lt;/span&gt;.Page.ClientScript.RegisterStartupScript(&lt;span class="kwrd"&gt;this&lt;/span&gt;.GetType(), &lt;span class="str"&gt;"ValidatorOverrideScripts"&lt;/span&gt;, validatorOverrideScripts, &lt;span class="kwrd"&gt;false&lt;/span&gt;); &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="kwrd"&gt;base&lt;/span&gt;.Render(writer);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;h3&gt;3. Lastly, Add some validators to a web form and see it in action&lt;/h3&gt;
&lt;div class="csharpcode"&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;fieldset&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;legend&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Login Information&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;legend&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="row"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="required"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            Email Address&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="subtle"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:TextBox&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="txtEmail1"&lt;/span&gt; &lt;span class="attr"&gt;CssClass&lt;/span&gt;&lt;span class="kwrd"&gt;="large required email"&lt;/span&gt;  &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:TextBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;                            &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:RequiredFieldValidator&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="valEmail"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;Display&lt;/span&gt;&lt;span class="kwrd"&gt;="Dynamic"&lt;/span&gt; &lt;span class="attr"&gt;ControlToValidate&lt;/span&gt;&lt;span class="kwrd"&gt;="txtEmail1"&lt;/span&gt; &lt;span class="attr"&gt;ErrorMessage&lt;/span&gt;&lt;span class="kwrd"&gt;="Email Address is required."&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;span class="error"&amp;gt;Email Address is required.&amp;lt;/span&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:RequiredFieldValidator&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:RegularExpressionValidator&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="valEmailAdd"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;Display&lt;/span&gt;&lt;span class="kwrd"&gt;="Dynamic"&lt;/span&gt; &lt;span class="attr"&gt;ControlToValidate&lt;/span&gt;&lt;span class="kwrd"&gt;="txtEmail1"&lt;/span&gt; &lt;span class="attr"&gt;ValidationExpression&lt;/span&gt;&lt;span class="kwrd"&gt;=".*@.{2,}\..{2,}"&lt;/span&gt; &lt;span class="attr"&gt;ErrorMessage&lt;/span&gt;&lt;span class="kwrd"&gt;="Email Address should be in name@domain.com format."&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;span class="error"&gt;&amp;lt;span class="error"&amp;gt;Email Address should be in name@domain.com format.&amp;lt;/span&amp;gt;&amp;lt;/&lt;span class="html"&gt;asp:RegularExpressionValidator&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="clear"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="row"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="required"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Password&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Textbox&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="txtPassword"&lt;/span&gt; &lt;span class="attr"&gt;CssClass&lt;/span&gt;&lt;span class="kwrd"&gt;="large required"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:Textbox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="clear"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="row"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="required"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Confirm Password&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;label&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:TextBox&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="txtConPassword"&lt;/span&gt; &lt;span class="attr"&gt;CssClass&lt;/span&gt;&lt;span class="kwrd"&gt;="large required"&lt;/span&gt;  &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:TextBox&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="clear"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;fieldset&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;There you have it, all the utility of ASP.NET validation controls without the antiquated user experience. Feel free to &lt;a href="/Uploads/FileManager/ValidationDemo/ValidatorDemo.zip"&gt;download the source code&lt;/a&gt; and share the love!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CNJGBmQQ8ZA:SkAaMir3Vmg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CNJGBmQQ8ZA:SkAaMir3Vmg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CNJGBmQQ8ZA:SkAaMir3Vmg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=CNJGBmQQ8ZA:SkAaMir3Vmg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CNJGBmQQ8ZA:SkAaMir3Vmg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=CNJGBmQQ8ZA:SkAaMir3Vmg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=CNJGBmQQ8ZA:SkAaMir3Vmg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/CNJGBmQQ8ZA" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Scott)</author><pubDate>Mon, 14 Jul 2008 12:00:00 EST</pubDate><guid isPermaLink="false">114</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=545&amp;title=jQuery_Style_ASPNET_Form_Validators</feedburner:origLink></item><item><title>Flash &amp; SEO - Is a Web Design Renaissance Looming?</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/64bDt-QPtTY/blog.aspx</link><description>&lt;h2&gt;Yes, Bring on the&amp;nbsp;Flash&amp;nbsp;Intros!&lt;/h2&gt;
&lt;p&gt;Certainly there will be an increase in the use of Flash in web sites - in components definitely and whole sites more moderately. Flash opens a whole new range of design options that are more difficult to accomplish in XHTML. It adds sex appeal plain and simple. It has also been slowly, but increasingly been used in Rich Internet Applications (RIA) where user interface is plays an important role to the experience. Sites that have business requirements (retail, consumer goods especially) requiring a high level of design will most certainly be the early adopters (to the extent they aren't already building in Flash).&amp;nbsp; &lt;br id="l.9w1" /&gt;&lt;/p&gt;
&lt;h2&gt;No, no Flash Intro's&amp;nbsp;Please!&amp;nbsp;&amp;nbsp;&lt;/h2&gt;
&lt;p&gt;Yet, I do not think we will see the wide spread use so common in the beginning of the century. Flash is more expensive to develop and more difficult to maintain. And technologies like AJAX, have to some extent chipped away at the RIA side of things. I also think we have come a long way in creating web sites that are more user friendly. So many Flash sites are developed with cool in mind (or crafting a unique experience) and not the users. Except in the extreme reaches of the design community - I don't expect to see a repeat of that trend.&amp;nbsp; &amp;nbsp; &lt;br id="wzrh0" /&gt;&lt;/p&gt;
&lt;h2&gt;Several other questions to ponder:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;How good will it be in indexing Flash &lt;em id="ks3-"&gt;(I'm sure it will improve over time)&lt;/em&gt;&lt;br id="n6.b" /&gt;&lt;/li&gt;
&lt;li&gt;Will the other search engines follow suit? &lt;em id="ks3-0"&gt;(Yes)&lt;/em&gt;&lt;br id="uqwf" /&gt;&lt;/li&gt;
&lt;li&gt;Will indexing eventually include Microsoft's Flash competitor Silverlight &lt;em id="ks3-1"&gt;(Hmmm, not sure)&lt;/em&gt;&lt;br id="uqwf0" /&gt;&lt;/li&gt;
&lt;li&gt;Will Flash intros start to appear once again &lt;em id="ks3-2"&gt;(I think not - the web community has gotten much better a user based design)&lt;/em&gt;&lt;br id="iym:0" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cizt1"&gt;More info on Google indexing Flash for SEO&lt;br id="pelh0" /&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://googleblog.blogspot.com/2008/06/google-learns-to-crawl-flash.html" target="_blank" title="Google Learns to Crawl Flash (SEO)"&gt;Google Learns to Crawl Flash&lt;/a&gt; &lt;br id="hal00" /&gt;&lt;a href="http://googlewebmastercentral.blogspot.com/2008/06/improved-flash-indexing.html" target="_blank" title="Flash and SEO for Google"&gt;Improved Flash Indexing&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=iS8W1UKq"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=m5rBJHmI"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=STyhQBaK"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=STyhQBaK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=qYAOtuQ7"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=xvWbcZ37"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=xvWbcZ37" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/64bDt-QPtTY" height="1" width="1"/&gt;</description><author>info@delphicsage.com (MP)</author><pubDate>Wed, 02 Jul 2008 12:00:00 EST</pubDate><guid isPermaLink="false">113</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=175&amp;title=Flash__SEO__Is_a_Web_Design_Renaissance_Looming</feedburner:origLink></item><item><title>Taking it Online - Moving From Client Based to Web Based Applications</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/FUQ_n8Ial6o/blog.aspx</link><description>&lt;p&gt;Ok, so not that many....well maybe in internet years. Now, we have a beautiful set of web standards brought to us by our friends at the &lt;a href="http://www.w3.org/" target="_blank"&gt;W3C&lt;/a&gt; that developers have finally started taking seriously.&amp;nbsp; The browsers are still terribly inconsistent and buggy, but they are starting to finally make some progress. All this, coupled with a few breakthrough ajax development frameworks (&lt;a href="http://jquery.com/" target="_blank"&gt;jquery&lt;/a&gt;, &lt;a href="http://mootools.net/" target="_blank"&gt;mootools&lt;/a&gt;, &lt;a href="http://developer.yahoo.com/yui/" target="_blank"&gt;YUI&lt;/a&gt;) and we now find ourselves in a renaissance for web application development. Above, I gave some examples of major breakthroughs that have taken traditional applications and moved them into the cloud. The thing is, the examples that I have provided are only the tip of the iceberg, the big obvoius examples. Every day, everyday companies are converting old client server, access and excel apps into web applications that can actually reproduce the rich user interface of a desktop application by using modern web development practices. Just think about it, no more corrupted office files, no more files locked for editing....true collaboration from anywhere at any time.&lt;/p&gt;
&lt;p&gt;I think the next step in this process will be the adoption of application development environments provided by the likes of &lt;a href="http://www.google.com/ig" target="_blank"&gt;Google &lt;/a&gt;and &lt;a href="/default.aspx?p=634" target="_blank"&gt;Facebook&lt;/a&gt; (among others). I can certainly see first hand that this will certainly take off because most businesses just don't have the infrastructure or manpower to create the type of environment that Google can provide for free. As an example, just look at the number of facebook apps that are out there already.&amp;nbsp;The real test for enterprise adoption will be whether or not larger&amp;nbsp;companies are willing trust Google or another provider to house their critical data.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=UAm0EmJ9"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=VpG5F3Fh"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=x79R9R2e"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=x79R9R2e" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=VPuMpclQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=k4v40Pqw"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=k4v40Pqw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/FUQ_n8Ial6o" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Scott)</author><pubDate>Tue, 24 Jun 2008 12:00:00 EST</pubDate><guid isPermaLink="false">106</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=166&amp;title=Taking_it_Online__Moving_From_Client_Based_to_Web_Based_Applications</feedburner:origLink></item><item><title>The Business Value of Web Redesign</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/q-OAxEi9bXU/blog.aspx</link><description>&lt;h1&gt;Visual Aesthetics in a Web Redesign Project &lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;The visual look of a web site says A LOT. The first impression is always vital and more often than none, it will stick with the visitor for as long as they hear your name. Think about brands you know and what comes to mind. Imagery? Color? Pepsi=Blue. Coke=Red. Colors act as an identifier but we need to take it to the next level. Choosing the right colors for the right feeling is important as well as keeping in line with the brand itself. Overall creating the right aesthetic alignment is vital to representing the company in their market and for their audience. Overall, resonating with them to generate a memorable experience is key. All that being said, when we think about a redesign, we have a chance to make another significant impression. It will still be a first impression for some, but it will be the second for others and thats a great opportunity to renew their understanding of who you are or further impress them. Interesting how that works huh? Welcome to the ever-changing world of the web.&lt;br /&gt;&lt;br /&gt;We should also address trends and modernism in design. Its not always great to jump on the bandwagon in design since most of the time trends eventually feel dated, but since the web changes so fast we can often pull it off. I would never recommend creating a look that someone else has or just adopting the styles that every other designer does. I believe in delivering unique solutions to clients. But there is always stylistic treatments that communicate awareness of modern design to an audience. Everything from the choice of typeface, to color palette, to the use of a grid. So modernizing your site so its in tune with the latest styles of design can be important for your image. It will ultimately help with positioning your company or brand as being progressive.&lt;/p&gt;
&lt;table style="background-color: #dde7f0;" border="0" cellspacing="15" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;h2&gt;&lt;strong&gt;The Potential Business Value&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Presents your progressiveness as a company&lt;/li&gt;
&lt;li&gt;Refreshes your identity or position in your market&lt;/li&gt;
&lt;li&gt;Re-inforces emotional impact of your brand&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1&gt;&lt;br /&gt;&lt;/h1&gt;
&lt;h1&gt;Usability - Navigation &amp;amp; Architecture in Web Redesign&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;One of the most important considerations for any site is usability. Allowing visitors to get where they need to in the fastest way possible is vital. This does not mean putting links everywhere on everypage with large flashing buttons. What it does mean is that you should design with intuition. Make sensible decisions about the organization and use the aesthetic to create hierarchy and pace to the visit. This is where visual design and navigation should be woven seemlessly together. Be aware that information overload is frustrating and scary for visitors. You have about 5 seconds before you lose them if they are new visitors so navigation should be found easily and understood easily. The most effective navigation is always a mix of both what vistors are used to and what makes sense in your design.&lt;br /&gt;&lt;br /&gt;Redesign is an opportunity to improve this area. These things can almost always be improved. As you get to know your business more, or if your business changes, the structure of the site architecture can change. You should also take the time to assess the traffic and statistics for your site to see which pages were most visited or the paths chosen to get to a certain page and take that into consideration when re-evaluating your information architecture.&lt;/p&gt;
&lt;table style="background-color: #dde7f0;" border="0" cellspacing="15" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;h2&gt;&lt;strong&gt;The Potential Business Value&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Makes your site easier to use&lt;/li&gt;
&lt;li&gt;Serves visitors the information clearly&lt;/li&gt;
&lt;li&gt;Prioritizes desired actions&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1&gt;&lt;br /&gt;&lt;/h1&gt;
&lt;h1&gt;Functionality &amp;amp; Web Redesign&amp;nbsp; Projects&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;Functionality, while often relative to the type of project, can be crucial in a redesign. This is the chance to make your site a tool for your business. Obviously there are many ways to improve functionality, but the first step is to asses what you really need your site to do for you. (thats a whole other discussion for another day... coming soon!) Social networking and other forms of social media may be on the agenda for your company but for the sake of touching on something that we think everyone can benefit from we will talk about the step toward content management and applications. &lt;br /&gt;&lt;br /&gt;Using a CMS (content management system) to manage content has become common practice for many. Whether its a custom system with bells and whistles created specifically to handle exactly what you need, if its a basic system sold out of the box, or a free open source publication tool like Wordpress or Moveable Type with a CMS plugin, just about everyone can benefit from a CMS. With the options that exist right now, you can find a system thats most appropriate and/or cost effective for your company. A discussion about what your site needs to do for your business will get you started in choosing the right type of system. &lt;br /&gt;&lt;br /&gt;Applications are another consideration for your site. Do you need users to interact with your site? Does there need to be an exchange of information? Do you need to process information that you collect from visitors or even your own employees? These are questions that require very specific answers with specific solutions. Technology has advanced to a point where many previously offline processes can be managed over the web and taking advantage of those changes can be incredibly beneficial. Things we couldn't do yesteryear are now possible.... All your dreams will come true now. Where have you been? ; )&lt;/p&gt;
&lt;table style="background-color: #dde7f0;" border="0" cellspacing="15" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;h2&gt;&lt;strong&gt;The Potential Values&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Improves user experience&lt;/li&gt;
&lt;li&gt;Creates interaction with visitors&lt;/li&gt;
&lt;li&gt;Empowers your company to strategically manage your content&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h1&gt;&lt;br /&gt;&lt;/h1&gt;
&lt;h1&gt;Content's Impact on Redesign Projects &lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;The last value offered in a redesign is the opportunity to revise site wide content. Most likely your business has changed over the last few years. A redesign is an opportunity to refresh your identity, and assess whether or not the content you are providing is important and worthwhile to your audience. Make sure your content is speaking in the tone that reflects who you are. You could change this anytime you like but it has more of an impact if its done in conjunction with a visual change. But its not just about identity and perception on the web, its also writing your content with SEO (search engine optimization) in mind. This is a strategic process that should be given attention on an ongoing basis.&lt;/p&gt;
&lt;table style="background-color: #dde7f0;" border="0" cellspacing="15" width="500"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;h2&gt;&lt;strong&gt;The Potential Business Value&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Content alignment with a refreshed identity&lt;/li&gt;
&lt;li&gt;Development of SEO rich content&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;&lt;br /&gt;&lt;/h2&gt;
&lt;h2&gt;Conclusions About the Business Value of a Web Redesign Project&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;A redesign can impact your business in whatever way you choose.&amp;nbsp; It can be with a refreshed professional look, manageable content, enhanced functionality... or idealistically, all of the above together. It can also be used to motivate and unify your employees, strengthening your brand internally as well as externally. The beauty of the web is that its ever-changing.&amp;nbsp; Take advantage of the latest technologies to better empower your business. Audiences are becoming more accessible everyday as we depend more and more on the internet in today's world. A redesign is an opportunity to make your site a more powerful means of communication with your audience. You should always be evaluating your site's role in reaching your business goals. The question to always ask yourself is:&amp;nbsp; Am I effectively using my site to connect with my audience in ways that will contribute to the growth of my business?&lt;/p&gt;
&lt;ul&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=50PpHQdx"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=Zog2KSAh"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=ZnP5nnlO"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=ZnP5nnlO" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=9BrPisay"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=8JPv6jWr"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=8JPv6jWr" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/q-OAxEi9bXU" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Cliff)</author><pubDate>Thu, 05 Jun 2008 12:00:00 EST</pubDate><guid isPermaLink="false">105</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=162&amp;title=The_Business_Value_of_Web_Redesign</feedburner:origLink></item><item><title>An Actual Conversation. Happening Right Now.</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/OHe-VYJlvFU/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=xlDpg0bj"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=0xbgPWEs"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=j81UFXGX"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=j81UFXGX" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=dAZBcWGN"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=UjEtuK6s"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=UjEtuK6s" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/OHe-VYJlvFU" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Jessica)</author><pubDate>Thu, 05 Jun 2008 12:00:00 EST</pubDate><guid isPermaLink="false">100</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=163&amp;title=An_Actual_Conversation_Happening_Right_Now</feedburner:origLink></item><item><title>Links for 2008-06-03 [del.icio.us]</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/75HoJMvc8bE/delphicsage</link><pubDate>Wed, 04 Jun 2008 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/delphicsage#2008-06-03</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://worldcadaccess.typepad.com/blog/2008/05/speculation-autodesk-to-buy-bentley-systems.html"&gt;WorldCAD Access: Speculation: Autodesk to Buy Bentley Systems?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/75HoJMvc8bE" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/delphicsage#2008-06-03</feedburner:origLink></item><item><title>Using .Net 3.x Lambda Expressions to Write More Concise Code</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/44IObv-gRnM/blog.aspx</link><description>&lt;div style="background-color: #dde7f0; padding: 7px; margin-top: 7px; margin-bottom: 7px; font-size: 11px;"&gt;public class MyClass&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string FilePath1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string FilePath2;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Save()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.LastSaved = DateTime.Now;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // saves it somewhere, such as a database.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DateTime LastSaved;&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;public class BusinessLogicClass&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private bool deleteProperty1 = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private bool deleteProperty2 = true;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string DoSomething(string PropertyValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* does something*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return PropertyValue + PropertyValue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void BindDataObject(MyClass MyInstance)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // binds the instance of MyClass to, let's say the display fields on the page.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // and let's say it to be called whenever MyInstance gets Saved because it &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // displays the LastSavedDate.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void MainCode(MyClass MyInstance)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MyInstance.Property1 = "hello.xls";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MyInstance.Property2 = "world.xls";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.deleteProperty1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #0000ff;"&gt;string oldFilePath = MyInstance.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;FilePath1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;;&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (File.Exists(MyInstance.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;FilePath1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;))&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File.Delete(MyInstance.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;FilePath1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;);&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;FilePath1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt; = "";&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.Save();&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.BindDataObject(MyInstance);&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ShowDeletedFeedbackMessage(MyInstance, oldFilePath);&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;FilePath1&lt;/span&gt;&lt;span style="color: #0000ff;"&gt; = "";&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.Save();&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.BindDataObject(MyInstance);&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ShowFileDoesNotExistFeedbackMessage(MyInstance, oldFilePath);&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.deleteProperty2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000ff;"&gt; string oldFilePath = MyInstance.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;FilePath2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;;&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (File.Exists(MyInstance.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;FilePath2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;))&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File.Delete(MyInstance.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;FilePath2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;);&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;FilePath2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt; = "";&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.Save();&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.BindDataObject(MyInstance);&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ShowDeletedFeedbackMessage(MyInstance, oldFilePath);&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.&lt;/span&gt;&lt;span style="color: #ff0000;"&gt;FilePath2&lt;/span&gt;&lt;span style="color: #0000ff;"&gt; = "";&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.Save();&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.BindDataObject(MyInstance);&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ShowFileDoesNotExistFeedbackMessage(MyInstance, oldFilePath);&lt;/span&gt;&lt;br style="color: #0000FF;" /&gt;&lt;span style="color: #0000ff;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/div&gt;
&lt;p&gt;And let's say, for argument's sake, that one can't think of good way around the difference other than some mechanism to pass in some type of wrapper to the property as argument for their method.&amp;nbsp; In .Net 1.x, this was already available via the PropertyInfo object, and the code probably would have gone something like this:&lt;/p&gt;
&lt;div style="background-color: #dde7f0; padding: 7px; margin-top: 7px; margin-bottom: 7px; font-size: 11px;"&gt;public void MainCode (MyClass MyInstance)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MyInstance.Property1 = "hello.xls";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MyInstance.Property2 = "world.xls";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.deleteProperty1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this. DeleteFile(MyInstance, "FilePath1");&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.deleteProperty2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this. DeleteFile(MyInstance, "FilePath2");&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;protected void DeleteFile(MyClass MyInstance, string PropertyName)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PropertyInfo fileProperty = MyInstance.GetType().GetProperty(PropertyName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string oldFilePath = (string) fileProperty.GetValue(MyInstance, null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (File.Exists(oldFilePath))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File.Delete(oldFilePath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fileProperty.SetValue(MyInstance, "", null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.Save();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.BindDataObject(MyInstance);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ShowDeletedFeedbackMessage(MyInstance, oldFilePath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fileProperty.SetValue(MyInstance, "", null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.Save();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.BindDataObject(MyInstance);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ShowFileDoesNotExistFeedbackMessage(MyInstance, oldFilePath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/div&gt;
&lt;p&gt;Not a bad improvement.&amp;nbsp; All we had to do was pass in a string of the name of the property we were concerned about.&amp;nbsp; However, we lost the type-checking on the class, the property, and a compile-time check if the class even had a property of the string we passed in.&amp;nbsp; The last one being very problematic when it comes to typos or if we decide to later change the property name.&lt;br /&gt;Now if we pause to think about it, in the case above, getting a property is very much like a method with the signature string GetFilePath(MyClass MyInstance) and setting a property very much like a method with a signature void SetFilePath(MyClass MyInstance, string FilePath).&amp;nbsp; So maybe we can use delegates instead of the PropertyInfo for passing in the information.&amp;nbsp; Unfortunately passing in anonymous delegates were somewhat clunky in terms of syntax in .Net 2.0.&amp;nbsp; Now with .Net 3.5, we should hopefully be able to do so more easily with lambda expressions.&amp;nbsp; Instead of having to create what might start to feel like superfluous delegate types, we'll use the .Net built in delegate types Func&amp;lt; MyClass, string &amp;gt; (available now in .Net 3.x) for the Get and Action&amp;lt;MyClass, string&amp;gt; (available since .Net 2.0) for the Set.&lt;/p&gt;
&lt;div style="background-color: #dde7f0; padding: 7px; margin-top: 7px; margin-bottom: 7px; font-size: 11px;"&gt;public void MainCodeRewrite (MyClass MyInstance)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MyInstance.Property1 = "hello.xls";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MyInstance.Property2 = "world.xls";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.deleteProperty1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.DeleteFile ( MyInstance,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myClass =&amp;gt; myClass.FilePath1,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (myClass, filePath) =&amp;gt; myClass.FilePath1 = filePath);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.deleteProperty2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.DeleteFile ( MyInstance,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myClass =&amp;gt; myClass.FilePath2,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (myClass, filePath) =&amp;gt; myClass.FilePath2 = filePath);&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;protected void DeleteFile (MyClass MyInstance,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Func&amp;lt;MyClass, string&amp;gt; GetProperty,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Action&amp;lt;MyClass, string&amp;gt; SetProperty)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string oldFilePath = GetProperty(MyInstance);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (File.Exists(oldFilePath))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File.Delete(oldFilePath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetProperty(MyInstance, "");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.Save();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.BindDataObject(MyInstance);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ShowDeletedFeedbackMessage(MyInstance, oldFilePath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SetProperty(MyInstance, "");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.Save();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.BindDataObject(MyInstance);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ShowFileDoesNotExistFeedbackMessage(MyInstance, oldFilePath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/div&gt;
&lt;p&gt;Hmmm... Well, using lambda expressions did turn out less clunky than the old .Net 2.0 syntax (see below), but still more clunky than passing a simple, single string of the property name.&lt;/p&gt;
&lt;div style="background-color: #dde7f0; padding: 7px; margin-top: 7px; margin-bottom: 7px; font-size: 11px;"&gt;// .Net 2.0 version of passing in anonymous delegates&lt;br /&gt;this.DeleteFile (MyInstance,&lt;br /&gt;delegate(MyClass myClass) { return myClass.FilePath1; },&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delegate(MyClass myClass, string FilePath) { myClass.FilePath1 = FilePath; });&lt;/div&gt;
&lt;p&gt;So we'll count the extra clunkiness as a con.&amp;nbsp; However, we got back compile-time type-checking and checking that the class actually has said property.&amp;nbsp; On the downside, and this might be due to not wanting to create new delegate types, but we're now passing in two delegates that are logically coupled and have a more specific abstract meaning than just what their signatures would indicate (Func&amp;lt;MyClass, string&amp;gt; could be intended to be a lot of things, not just a property wrapper).&amp;nbsp; While the called method signature might hint that those arguments are meant to be simple wrappers to the same property (and the method documentation could also explicitly say so), the person eye-balling just MainCodeRewrite won't immediately or necessarily see that and could be scratching their heads at what these nameless lambda expressions are supposed to be and not be one hundred percent confident that they're related to each other.&amp;nbsp; This would also get exasperated if there are more than one properties in a scenario (though, I off the top of my head, I would have to imagine if your method has more than two properties as parameters, my gut feeling would be to re-examine if it's getting too complicated).&lt;br /&gt;So as a possible solution to this ambiguity issue, we could introduce a class.&amp;nbsp; For the sake of properties, we're really only concerned with it having a Get and a Set method (I'll just call them Get and Set, rather than mimic PropertyInfo's convention of GetValue and SetValue since those are the only two methods/properties I'm putting on the object.).&lt;/p&gt;
&lt;div style="background-color: #dde7f0; padding: 7px; margin-top: 7px; margin-bottom: 7px; font-size: 11px;"&gt;public class PropertyWrapper&amp;lt;TClass, TProperty&amp;gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public PropertyWrapper() { }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public PropertyWrapper(&amp;nbsp;&amp;nbsp; Func&amp;lt;TClass, TProperty&amp;gt; GetMethod, Action&amp;lt;TClass, TProperty&amp;gt; SetMethod)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Initialize(GetMethod, SetMethod);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Initialize(&amp;nbsp;&amp;nbsp; Func&amp;lt;TClass, TProperty&amp;gt; GetMethod, &amp;nbsp;Action&amp;lt;TClass, TProperty&amp;gt; SetMethod)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.getMethod = GetMethod;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.setMethod = SetMethod;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public virtual TProperty Get(TClass Instance)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return this.getMethod(Instance);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public virtual void Set(TClass Instance, TProperty PropertyValue)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.setMethod(Instance, PropertyValue);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private Func&amp;lt;TClass, TProperty&amp;gt; getMethod;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private Action&amp;lt;TClass, TProperty&amp;gt; setMethod;&lt;br /&gt;}&lt;br /&gt;This is roughly how it would go using that class.&lt;br /&gt;public void MainCode (MyClass MyInstance)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MyInstance.Property1 = "hello.xls";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MyInstance.Property2 = "world.xls";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.deleteProperty1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PropertyWrapper&amp;lt;MyClass, string&amp;gt; filePath1Property = new PropertyWrapper&amp;lt;MyClass, string&amp;gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myClass =&amp;gt; myClass.FilePath1,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (myClass, filePath) =&amp;gt; myClass.FilePath1 = filePath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.DeleteFile (MyInstance, filePath1Property);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.deleteProperty2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PropertyWrapper&amp;lt;MyClass, string&amp;gt; filePath2Property = new PropertyWrapper&amp;lt;MyClass, string&amp;gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myClass =&amp;gt; myClass.FilePath2,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (myClass, filePath) =&amp;gt; myClass.FilePath2 = filePath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.DeleteFile (MyInstance, filePath2Property);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;protected void DeleteFile (MyClass MyInstance,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPropertyWrapper&amp;lt;MyClass, string&amp;gt; FilePathProperty)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string oldFilePath = FilePathProperty.Get(MyInstance);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (File.Exists(oldFilePath))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; File.Delete(oldFilePath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FilePathProperty.Set(MyInstance, "");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.Save();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.BindDataObject(MyInstance);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ShowDeletedFeedbackMessage(MyInstance, oldFilePath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FilePathProperty.Set(MyInstance, "");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyInstance.Save();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.BindDataObject(MyInstance);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.ShowFileDoesNotExistFeedbackMessage(MyInstance, oldFilePath);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/div&gt;
&lt;p&gt;So... the new class introduces some more clunkiness, but the calling code is now more intuitively readable.&amp;nbsp; The gains seem less obvious than the jump from PropertyInfo to delegates, but is more of my preference after giving both a test run. I also originally used an interface so my ability to wrap properties wouldn't be tied to this delegate strategy, along with a few other things that I won't go into, to help give me flexibility on which strategies seemed most useful given a situation.&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=nMUNk8fv"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=ffnPPDu6"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=ROjlHdGM"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=ROjlHdGM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=sCeKwkCm"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=LhoAi7yn"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=LhoAi7yn" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/44IObv-gRnM" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Mark S.)</author><pubDate>Fri, 30 May 2008 12:00:00 EST</pubDate><guid isPermaLink="false">97</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=131&amp;title=Using_Net_3x_Lambda_Expressions_to_Write_More_Concise_Code</feedburner:origLink></item><item><title>Brown Bag Lunch: Agile Development for Non-Developers</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/g6zEgtvIbSA/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=g6zEgtvIbSA:X4DgGowbFnY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=g6zEgtvIbSA:X4DgGowbFnY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=g6zEgtvIbSA:X4DgGowbFnY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=g6zEgtvIbSA:X4DgGowbFnY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=g6zEgtvIbSA:X4DgGowbFnY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=g6zEgtvIbSA:X4DgGowbFnY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=g6zEgtvIbSA:X4DgGowbFnY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/g6zEgtvIbSA" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Scott)</author><pubDate>Tue, 27 May 2008 12:00:00 EST</pubDate><guid isPermaLink="false">99</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=509&amp;title=Brown_Bag_Lunch_Agile_Development_for_NonDevelopers</feedburner:origLink></item><item><title>Links for 2008-05-22 [del.icio.us]</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/dMi2rca2Y8w/delphicsage</link><pubDate>Fri, 23 May 2008 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/delphicsage#2008-05-22</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.aarash.info/2008/05/20/50-designers-to-follow-on-twitter/"&gt;50+ Designers to Follow on Twitter | Arash Blog&lt;/a&gt;&lt;br/&gt;
Twitter seems to be gaining popularity almost every day. As a new user I decided it would be helpful to do some research to find designers who would be worth following. This list is not intended to be all-inclusive (so please add a link to your profile in&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/dMi2rca2Y8w" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/delphicsage#2008-05-22</feedburner:origLink></item><item><title>Links for 2008-05-20 [del.icio.us]</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/Cig_KDWLTNw/delphicsage</link><pubDate>Wed, 21 May 2008 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/delphicsage#2008-05-20</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.contractmagazine.com/contract/content_display/design/features/corporate-design/e3i2de8cf597fee69e4764449c7a206b205"&gt;Contract Magazine&lt;/a&gt;&lt;br/&gt;
Click and link, click and link, click and link. The process of using a computer to gather information is such an entrenched part of daily life that why not make it part of the design process as well? That is exactly what Chicago-based Torchia Associates d&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/Cig_KDWLTNw" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/delphicsage#2008-05-20</feedburner:origLink></item><item><title>How to Create a DHTML Gantt Chart Control</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/qsUxEWou2Ds/blog.aspx</link><description>&lt;div&gt;&lt;a name="2"&gt;&lt;/a&gt;
&lt;h2&gt;How do I create a Gantt Chart?&lt;/h2&gt;
&lt;p&gt;There are two things you need to create a chart: the task information and a place on the webpage for the chart. The first bit is just like the example above. You need to know what tasks there are, how long each one takes, what prerequisite relationships exist, and when the project will start. The control also needs a place on the webpage, so you need a reference to an HTML element on the page.&lt;/p&gt;
&lt;p&gt;Here is an example of how to create the chart seen above.&lt;/p&gt;
&lt;pre style="line-height: 1.4; font-size: 10pt; width: 100%; background-color: #DDE7F0; padding: 8px;"&gt;&lt;tt&gt;&amp;lt;html&amp;gt;&lt;br /&gt;  &amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;div id="chart1"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;    &amp;lt;script&amp;gt;&lt;br /&gt;      // The constructor takes one parameter which is either the&lt;br /&gt;      // ID of the HTML element or a reference to the element&lt;br /&gt;      // that will contain the Gantt Chart.&lt;br /&gt;      var chart = new DS.GanttChart("chart1");&lt;br /&gt;      chart.start_date = new Date(Date.parse("May 15, 2008"));&lt;br /&gt;      &lt;br /&gt;      // The task's constructor takes the task's name and duration.&lt;br /&gt;      var design = new DS.GanttTask("Design Control", 2);&lt;br /&gt;      var code = new DS.GanttTask("Write Code", 3);&lt;br /&gt;      var describe = new DS.GanttTask("Describe Purpose", 1);&lt;br /&gt;      var clean_up = new DS.GanttTask("Code Clean-up", 1);&lt;br /&gt;      var documentation = new DS.GanttTask("Documentation", 2);&lt;br /&gt;      var blog_post = new DS.GanttTask("Blog Post", 1);&lt;br /&gt;      &lt;br /&gt;      code.requires(design);&lt;br /&gt;      describe.requires(design);&lt;br /&gt;      clean_up.requires(code);&lt;br /&gt;      documentation.requires(code);&lt;br /&gt;      blog_post.requires(documentation);&lt;br /&gt;      blog_post.requires(describe);&lt;br /&gt;      &lt;br /&gt;      chart.add_task(design);&lt;br /&gt;      chart.add_task(code);&lt;br /&gt;      chart.add_task(documentation);&lt;br /&gt;      chart.add_task(clean_up);&lt;br /&gt;      chart.add_task(describe);&lt;br /&gt;      chart.add_task(blog_post);&lt;br /&gt;      &lt;br /&gt;      chart.schedule();&lt;br /&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;  &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/tt&gt;&lt;/pre&gt;
&lt;p&gt;The code is about as simple as the facts listed in the first example. One difference is that once all of the tasks are added you must call &lt;tt&gt;chart.schedule()&lt;/tt&gt;. The &lt;tt&gt;schedule&lt;/tt&gt; method figures out when each task can be done and renders the graphical content of the chart control.&lt;/p&gt;
&lt;p&gt;The chart doesn't know how many tasks you're going to add and it doesn't try to guess. It makes no sense to re-render the control each time a task is added. So, you have to tell the chart control that you're done adding tasks.&lt;/p&gt;
&lt;a name="3"&gt;&lt;/a&gt;
&lt;h2&gt;What options does the chart control have?&lt;/h2&gt;
&lt;table border="0" width="100%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th style="color: #000; text-align: center; background-color: #bdf; padding: 8px;"&gt;Option &lt;/th&gt;&lt;th style="color: #000; text-align: center; background-color: #bdf; padding: 8px;"&gt;Description &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;chart.width&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;Sets the width, in pixels, of the chart display area. The total width of the control is the width of the task list plus this width.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;chart.show_tooltips&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;A boolean value that determines whether or not tooltips are shown when the user mouses over a task bar on the graph.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;chart.allow_tooltip_copy&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;A boolean value that determines whether or not the contents of the tooltips can be copied by pressing Ctrl + C.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
The Gantt Chart Control also has publicly accessible methods and properties.    
&lt;table border="0" width="100%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th style="color: #000; text-align: center; background-color: #bdf; padding: 8px;"&gt;Method/Property &lt;/th&gt;&lt;th style="color: #000; text-align: center; background-color: #bdf; padding: 8px;"&gt;Description &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;chart.schedule()&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;Schedules each task and renders the graphical content of the chart.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;chart.add_task(task)&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;Adds a task to the chart. This does &lt;strong&gt;not&lt;/strong&gt; automatically call schedule() to refresh the chart.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;chart.remove_task(task)&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;Removes the specified task from the chart. This does &lt;strong&gt;not&lt;/strong&gt; automatically call schedule() to refresh the chart.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;chart.start_date&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;This property stores the starting date of the project.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;chart.end_date&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;This property stores the ending date of the project. The value of &lt;tt&gt;end_date&lt;/tt&gt; is set when &lt;tt&gt;schedule()&lt;/tt&gt; is called.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
The Gantt Task object has the following methods and properties:    
&lt;table border="0" width="100%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th style="color: #000; text-align: center; background-color: #bdf; padding: 8px;"&gt;Method/Property &lt;/th&gt;&lt;th style="color: #000; text-align: center; background-color: #bdf; padding: 8px;"&gt;Description &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;task(name, duration)&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;The constructor takes the task's name and duration.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;task.requires(t)&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;Appends task &lt;tt&gt;t&lt;/tt&gt; to the task's list of prerequisites.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;task.name&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;The name of the task.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;task.duration&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;The duration (in days) of the task.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;task.actual_start_date&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;The date when work on the task will begin. This is set when &lt;tt&gt;schedule()&lt;/tt&gt; is called.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;task.actual_end_date&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;The date when work on the task will end. This is set when &lt;tt&gt;schedule()&lt;/tt&gt; is called.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;&lt;tt&gt;task.bar_div&lt;/tt&gt;&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;The div that is the graphical representation of the task on the project timeline.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;a name="4"&gt;&lt;/a&gt;
&lt;h2&gt;What files are needed to use the Gantt Chart control?&lt;/h2&gt;
&lt;table border="0" width="100%"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th style="color: #000; text-align: center; background-color: #bdf; padding: 8px;"&gt;File &lt;/th&gt;&lt;th style="color: #000; text-align: center; background-color: #bdf; padding: 8px;"&gt;Description &lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;date.js&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;Adds the &lt;tt&gt;format()&lt;/tt&gt; method to JavaScript's Date object. Used in formatting titles in the chart's grid and for formatting the tooltip's caption.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;gantt.js&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;Contains all code for the GanttChart and GanttTask objects.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;main.js&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;Includes helper functions used by gantt.js and tooltip.js.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;tooltip.js&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;Library for drawing tooltips on the Gantt Chart. If this file is not included, the Gantt Charts will not show tooltips but all other functionality will remain.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;wz_jsgraphics.js&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;Walter Zorn's JavaScript Vector Graphics Library (&lt;a href="http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm"&gt;link&lt;/a&gt;). This is used to draw the lines that connect bars on the chart with their prerequisites.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;gantt.css&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;This file is not required, but the CSS classes it contains must be defined for the Gantt Chart to display properly.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;task-bar.png and&lt;br /&gt;task-bar-light.png&lt;/td&gt;
&lt;td style="line-height: 1.4; background-color: #eee; padding: 8px;"&gt;These are the default images (as defined in gantt.css) used for the bars on the Gantt Chart. Any images will do as long as the CSS is set correctly.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;a name="5"&gt;&lt;/a&gt;
&lt;h2&gt;Notes for Developers&lt;/h2&gt;
&lt;p&gt;The chart control contains many more publicly accessible members than those listed above. There are references to many of the HTML elements used and the structure of the elements is documented in gantt.js. This is done so event handlers can be added and other modifications can easily be made to extend the functionality of the chart control.&lt;/p&gt;
&lt;p&gt;The Gantt chart control has been tested in IE6, Safari 3.1 (on Windows XP), Firefox 2.0, and Opera 9.5 Beta. There's a minor display issue with tooltips in IE6, but other than that everything works.&lt;/p&gt;
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=qsUxEWou2Ds:VPZJo7SoqsU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=qsUxEWou2Ds:VPZJo7SoqsU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=qsUxEWou2Ds:VPZJo7SoqsU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=qsUxEWou2Ds:VPZJo7SoqsU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=qsUxEWou2Ds:VPZJo7SoqsU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=qsUxEWou2Ds:VPZJo7SoqsU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=qsUxEWou2Ds:VPZJo7SoqsU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/qsUxEWou2Ds" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Robert)</author><pubDate>Tue, 20 May 2008 12:00:00 EST</pubDate><guid isPermaLink="false">95</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=542&amp;title=How_to_Create_a_DHTML_Gantt_Chart_Control</feedburner:origLink></item><item><title>Links for 2008-05-15 [del.icio.us]</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/agGsd-x6liQ/delphicsage</link><pubDate>Fri, 16 May 2008 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/delphicsage#2008-05-15</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.phillyadclub.com/news_article.php?id=1438"&gt;Philadelphia Ad Club: Avenue A | Razorfish Philadelphia Redesigns Philly.com&lt;/a&gt;&lt;br/&gt;
The Philadelphia office of Avenue A | Razorfish™, one of the largest interactive services firms in the world, and Philly.com, Philadelphia’s leading source for news and information, has announced the launch of the redesigned Philly.com site, now a mor&lt;/li&gt;
&lt;li&gt;&lt;a href="http://training.seobook.com/google-ranking-value/"&gt;What is a Top Google Ranking Worth?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/agGsd-x6liQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/delphicsage#2008-05-15</feedburner:origLink></item><item><title>Links for 2008-05-13 [del.icio.us]</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/KQfmZCYXWMQ/delphicsage</link><pubDate>Wed, 14 May 2008 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/delphicsage#2008-05-13</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ex-libris.ca/?p=539"&gt;ex libris &amp;raquo; wordpress security+rant&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/KQfmZCYXWMQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/delphicsage#2008-05-13</feedburner:origLink></item><item><title>Choosing a Content Management System: 11 Factors for Buy vs. Build</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/1sF3Txy-s-U/blog.aspx</link><description>&lt;h1&gt;To Buy&amp;nbsp;or Build a CMS?&lt;/h1&gt;
&lt;p&gt;Below is a list of the&amp;nbsp;key questions to ask when considering whether to buy or build a Content Management System.&lt;/p&gt;
&lt;p&gt;1. What sort of release schedule exists - minor and major&lt;/p&gt;
&lt;p&gt;2. Will I need access to the source code now or in the future&lt;/p&gt;
&lt;p&gt;3. If I need to get out, what would that scenario entail&lt;/p&gt;
&lt;p&gt;4. The stability of the vendor - especially SaaS&lt;/p&gt;
&lt;p&gt;5. What support options are available&lt;/p&gt;
&lt;p&gt;6. How big is the install base&lt;/p&gt;
&lt;p&gt;7. How vibrant is the supporting community&lt;/p&gt;
&lt;p&gt;8. How widely adopted is the CMS&lt;/p&gt;
&lt;p&gt;9. How much can I bend it to fit my requirements if needed&lt;/p&gt;
&lt;p&gt;10. What language and database are utilized? Are they in-sync with the skills you have in-house&lt;/p&gt;
&lt;p&gt;11. Implement vs. customize - these are two different thing&lt;/p&gt;
&lt;h1&gt;Our Approach to Content Management Systems&lt;/h1&gt;
&lt;p&gt;At Delphic Sage we've consider ourselves a consulting company more so than a traditional digital agency. This stems from our focus on listening and understanding a client's business goals and objectives first. We then assess how to best use &lt;a href="/home/solutions/web-design.aspx" title="web design"&gt;web design&lt;/a&gt;, &lt;a href="/home/solutions/web-development.aspx" title="Web Development"&gt;web development&lt;/a&gt; and &lt;a href="/home/solutions/digital-marketing.aspx" title="digital marketing"&gt;digital marketing&lt;/a&gt; to achieve those goals. When it comes to selection of a &lt;a href="/home/solutions/our-skills/content-management-system.aspx" title="Content Management System (CMS)"&gt;Content Management System (CMS)&lt;/a&gt; the same approach applies. Whether to buy or build depends on your short and long term business requirements. We use a mixed approach of custom (developed from our code base) and &lt;a href="http://www.sitecore.com/" target="_blank" title="Sitecore"&gt;Sitecore&lt;/a&gt;, a leading CMS for middle market to enterprise size organizations. The approach we choose depends on each client's requirements.&lt;br /&gt;&lt;br /&gt;If you're just beginning to look at the various CMS offerings, I recommend checking out &lt;a href="http://www.cmswire.com/" target="_blank" title="CMS Wire"&gt;CMS Wire&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=P7MJIem7"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=gWDedRlN"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=9UtnXV56"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=9UtnXV56" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=2bgSp2bl"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=TtycnVNh"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=TtycnVNh" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/1sF3Txy-s-U" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Mark P.)</author><pubDate>Tue, 13 May 2008 12:00:00 EST</pubDate><guid isPermaLink="false">87</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=119&amp;title=Choosing_a_Content_Management_System_11_Factors_for_Buy_vs_Build</feedburner:origLink></item><item><title>Links for 2008-05-05 [del.icio.us]</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/1-h5LOZRL_8/delphicsage</link><pubDate>Tue, 06 May 2008 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/delphicsage#2008-05-05</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.ecommercetimes.com/story/The-Shopping-Cart-Experience-Some-E-Tailers-Just-Dont-Get-It-62839.html"&gt;E-Commerce News: E-Commerce: The Shopping Cart Experience: Some E-Tailers Just Don't Get It&lt;/a&gt;&lt;br/&gt;
As the creative director at WhittmanHart Interactive, I also design online shopping platforms for some of the world&amp;#039;s best-known brands.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.bizjournals.com/philadelphia/stories/2008/05/05/story12.html"&gt;Two South Jersey law firms beefing up Phila. presence - Philadelphia Business Journal:&lt;/a&gt;&lt;br/&gt;
While not as noteworthy as George Washington&amp;#039;s famous crossing of the Delaware in 1776, two of South Jersey&amp;#039;s largest law firms that have paddled in the other direction hope to make a big splash in Center City legal circles.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/1-h5LOZRL_8" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/delphicsage#2008-05-05</feedburner:origLink></item><item><title>Choosing an Interactive Agency: Thoughts From the Agency Side</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/oS5i5WZdjOE/blog.aspx</link><description>&lt;h1&gt;What Kind of Skills Do I Need?&lt;/h1&gt;
&lt;p&gt;Once you have made a check list of your project requirements, prioritize which are most important. Typical skills you will need from an interactive agency for the initial web design and development project and on an ongoing basis include:&lt;br id="i1m60" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Interactive strategy&lt;br id="sha:0" /&gt;&lt;/li&gt;
&lt;li&gt;Web design and rich media&lt;br id="in-.0" /&gt;&lt;/li&gt;
&lt;li&gt;Web and application development&lt;/li&gt;
&lt;li&gt;Systems integration&lt;/li&gt;
&lt;li&gt;Business Analysis&lt;br id="mfq20" /&gt;&lt;/li&gt;
&lt;li&gt;Information architecture (UI and usability)&lt;br id="sha:1" /&gt;&lt;/li&gt;
&lt;li&gt;Search engine optimization&lt;/li&gt;
&lt;li&gt;Digital marketing campaigns - email, viral, community building&lt;/li&gt;
&lt;li&gt;Content Management System (CMS)&lt;/li&gt;
&lt;li&gt;Web analytics&lt;br id="zmlb0" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Where to Start When Choosing an Interactive Agency?&lt;/h1&gt;
&lt;p&gt;There are so many variations of what people look for in an interactive agency today - web and graphic design firms, web development and systems integration, packaged software vendors, advertising agencies, digital marketing shops and so on, can all fill aspects of your requirements. Certainly all of them will have strengths and weaknesses. So where to start?&lt;br id="utdd0" /&gt;&lt;br id="utdd1" /&gt;If you are an enterprise-size company, you will have existing providers and preferred vendor programs, not to mention the likelihood of many firms actively knocking on your door. If you are searching in this scenario, I would hazard a guess that your existing firms are getting stale and you are looking for fresh ideas. Middle market and smaller companies typically have a harder time starting. Here are a few ideas:&lt;br id="c5sc1" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ask your colleagues - nothing beats a referral&lt;/li&gt;
&lt;li&gt;Use your professional network - phone and email, as well as tools like &lt;a href="http://www.linkedin.com/" target="_blank" title="LinkedIn"&gt;LinkedIn&lt;/a&gt; &lt;br id="r9mo0" /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.google.com" target="_blank" title="Google"&gt;Google&lt;/a&gt; and other search engines - check organic and cost per click results&lt;/li&gt;
&lt;li&gt;Directories - professional and trade organizations (including your own industry)&lt;br id="ssfz0" /&gt;&lt;/li&gt;
&lt;li&gt;When all else fails - surf the web and look for sites you like (sometimes "View Page Source" will provide a site credit)&lt;br id="ssfz1" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Narrowing the Field of Interactive Agencies&lt;/h1&gt;
&lt;p&gt;Now you have a big broad list of probably too many interactive agencies. Here are a few ideas to begin the narrowing process: &lt;br id="z0ga1" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Budget - what can you afford? Expect to find pricing all over the map, driven primarily by size and skill of the interactive agency&lt;br id="q6m90" /&gt;&lt;/li&gt;
&lt;li&gt;Size - are you looking for a boutique, specialty firm or a large full-service agency&lt;/li&gt;
&lt;li&gt;Experience - how long have they been in business, how many engagements &amp;amp; ongoing clients&lt;/li&gt;
&lt;li&gt;Skills - which ones are most important to you - strategy, technical, design or marketing&lt;br id="mfq21" /&gt;&lt;/li&gt;
&lt;li&gt;Geography - this matters less and less these days, but certainly you want the ability to have some face time through the project&lt;br id="cg:v0" /&gt;&lt;/li&gt;
&lt;li&gt;Industry - do you need the firm to have industry expertise (healthcare, big pharma, financial services are prime examples)&lt;br id="qlk40" /&gt;&lt;/li&gt;
&lt;li&gt;Niche - other niche players often focus around special services such as community web sites, technical platforms, Flash&lt;br id="lz-b0" /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;What Value Will They Bring to the Table?&lt;/h1&gt;
&lt;p&gt;At Delphic Sage, we place a great emphasis on our ability to bring value to the process. Beware of interactive agencies that position themselves as experts and you as a necessary evil. Be equally concerned with firms that will get the deer in headlights look when the going gets tough.&amp;nbsp; &lt;br id="w3vj0" /&gt;&lt;br id="w3vj1" /&gt;From the very beginning, your interactive agency should want to learn and understand your business - web site project aside. By doing so, at each stage of the game they will be able to provide tangible business value on an ongoing basis. When the relationship is considered by both parties to be a partnership rather than vendor, both sides will benefit.&lt;/p&gt;
&lt;h1&gt;Process&lt;/h1&gt;
&lt;p&gt;So, how do you go about the selection process? It depends on how well you know the candidate firms, as well as how experienced you are in choosing an interactive agency. &lt;br id="sfn40" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Request for Information (RFI) - if you still have a lot of firms, this typical exploratory approach gives you a chance to ask questions and narrow the field to a select few&lt;br id="sfn43" /&gt;&lt;/li&gt;
&lt;li&gt;Request for Proposal (RFP) - getting down to brass tacks, this structured approach allows you to compare apples to apples (not usually an easy thing to do) &lt;br id="w1h70" /&gt;&lt;/li&gt;
&lt;li&gt;Free Form Proposals - allow the interactive agency to provide a proposal in their format&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Keep in mind that RFP's, especially when they come out of the blue and there is no chance for the agency to even meet you, will typically be met with a level of skepticism. Especially if you make it overly onerous. So, make sure you spend some time in considering your requirements. It's amazing how many are poorly crafted.&lt;br id="x_jz0" /&gt;&lt;/p&gt;
&lt;h1&gt;Assessing the Proposal&lt;/h1&gt;
&lt;p&gt;Now you have a series of proposals to review. What are the key elements to look for in the review?&lt;br id="aw:v0" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scope - do they understand what you are trying to accomplish with this project&lt;br id="ib:s0" /&gt;&lt;/li&gt;
&lt;li&gt;Process - is the framework solid, but flexible enough to meet your requirements&lt;/li&gt;
&lt;li&gt;Skill - do they have the right skill sets for your project &lt;br id="k8xh0" /&gt;&lt;/li&gt;
&lt;li&gt;Price - are the costs clearly outlined, including scope change order process&lt;/li&gt;
&lt;li&gt;Timeline - how long will it take to deliver (beware the overly aggressive timelines)&lt;br id="eurs0" /&gt;&lt;/li&gt;
&lt;li&gt;Personnel - who will work on the project&lt;br id="z_ho0" /&gt;&lt;/li&gt;
&lt;li&gt;Trust - make sure to get at least three referrals &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be sure that your team has agreed on the criteria for decision making. This can be a formal worksheet or an informal bulleted list with weights. &lt;br id="m9bh0" /&gt;&lt;/p&gt;
&lt;h1&gt;Personal Connection &amp;amp; Trust&lt;/h1&gt;
&lt;p&gt;At the end of the day, when buying professional services, you are buying people. Do NOT short change this aspect of the decision. If you are uncomfortable with the people from the beginning, it's only going to get worse. Choose people with whom you feel you can have a comfortable, professional relationship. You do not want a new best friend, but chemistry is critical.&lt;br id="dqt50" /&gt;&lt;br id="dqt51" /&gt;So, be sure to spend some quality time with the prospective candidate firms. This includes not only preliminary sales meetings, but also a visit to their office. This will give you a chance to meet the extended team (especially the Project and/or Account Managers), as well as get a feel for their culture. Does it fit with your team and company culture? Do they need to interact with an extended team, such as your CMS software vendor or your advertising agency? Keep all these items in mind. &lt;br id="s0ea1" /&gt;&lt;/p&gt;
&lt;h1&gt;Other Resources to Help in Choosing an Interactive Agency&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.hansoninc.com/AboutUs/ChoosingAgency.aspx" target="_blank" title="Choosing and Interactive Agency"&gt;Choosing an Interactive Agency&lt;br id="m1bu0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.imediaconnection.com/content/11127.asp" target="_blank" title="How to Choose an Interactive Agency"&gt;How to Choose an Interactive Agency&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.clickz.com/showPage.html?page=838251" target="_blank" title="How to Hire an Interactive Agency"&gt;How to Hire an Interactive Agency&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.embarcgroup.com/content/expertise/expert-forum/detail/q/id/10" target="_blank" title="Choosing the Right Interactive Firm"&gt;Choosing the Right Interactive Firm&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://my.advisor.com/articles.nsf/aid/09068" target="_blank" title="Choose the Right Web Development Firm for You"&gt;Choose the Right Web Development Firm for You&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br id="wppj4" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=yec3518K"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=oQq0yF2B"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=Bqz2n6CB"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=Bqz2n6CB" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=mJ0zKoBu"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=ckJv1dL7"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=ckJv1dL7" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/oS5i5WZdjOE" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Mark P.)</author><pubDate>Sun, 04 May 2008 12:00:00 EST</pubDate><guid isPermaLink="false">78</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=118&amp;title=Choosing_an_Interactive_Agency_Thoughts_From_the_Agency_Side</feedburner:origLink></item><item><title>Links for 2008-04-22 [del.icio.us]</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/H61QN9TwAls/delphicsage</link><pubDate>Wed, 23 Apr 2008 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/delphicsage#2008-04-22</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blueacacia.spaces.live.com/"&gt;Driving Innovation on the Street and on the Web&lt;/a&gt;&lt;br/&gt;
Honda Motorcycle France wanted a site that reflected their passion for quality and innovation. Blue Acacia, a Paris-based web development and interactive marketing services firm, knew how to help. Using .Net with XML and AJAX, Blue Acacia created a site f&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.delphicsage.com/home/blog.aspx?d=34"&gt;CMS Content Migration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/H61QN9TwAls" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/delphicsage#2008-04-22</feedburner:origLink></item><item><title>New CMS and Content Migration</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/DnMHZxjdj5g/blog.aspx</link><description>&lt;p&gt;So, what's a web team to do? Well, some better tips from the article include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Do a full content inventory &lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Identify process efficienies &lt;br /&gt;&lt;/li&gt;
&lt;li&gt;Be wary of hyperlink and bookmarking&lt;/li&gt;
&lt;li&gt;Quality Assurance is critical&lt;/li&gt;
&lt;li&gt;Assess the cost / value proposition for automation vs. manual entry&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The last bullet is the one that is often least understood. Sure, many times a script can be written to get content from one database to another. A lot depends on the database strcutures, but the bigger issue has more to do with how the content is used in the new CMS. Normally, features and content that are critical to the enhancemnts in the new site are not in the old structure (or at least not easily re-purposed). So, even if you do get the content over smoothly, you still need to go back over in order to build an effective new web site.&lt;/p&gt;
&lt;p&gt;Whatever you decide, form a plan early to tackle the issue.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=Ooz0FNr5"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=sr8rENkS"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=vAOwDYFD"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=vAOwDYFD" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=za7Jsi4O"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=66TjqzX0"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=66TjqzX0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/DnMHZxjdj5g" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Mark P.)</author><pubDate>Tue, 22 Apr 2008 12:00:00 EST</pubDate><guid isPermaLink="false">71</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=117&amp;title=New_CMS_and_Content_Migration</feedburner:origLink></item><item><title>Open Source and the Design Community</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/O92Xcn3W6iQ/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=aiAkaOl1"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=4ZxyJ5Vz"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=El1esw0t"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=El1esw0t" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=QmxKp68G"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=F2FbBZBB"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=F2FbBZBB" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/O92Xcn3W6iQ" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Mark P.)</author><pubDate>Mon, 07 Apr 2008 12:00:00 EST</pubDate><guid isPermaLink="false">20</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=116&amp;title=Open_Source_and_the_Design_Community</feedburner:origLink></item><item><title>Top Social Sites Every Business Should Know About</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/ecO6y95kvjU/blog.aspx</link><description>&lt;h1&gt;Promotion and Social Bookmarking&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://digg.com/" target="_blank"&gt;Digg &lt;/a&gt;- Allows users to submit and browse content, including news, videos/images and articles, by category with potential for mass promotion &lt;/li&gt;
&lt;li&gt;&lt;a href="http://del.icio.us/" target="_blank"&gt;Del.icio.us&lt;/a&gt; - Promote and tag items to this social bookmarking site with potential for extensive exposure.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://reddit.com/" target="_blank"&gt;Reddit&lt;/a&gt; - Submit and search articles by category to drive traffic to your site. Earn points for quality submissions and gain more exposure by filtering to the top of the "hot" list.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.squidoo.com/" target="_blank"&gt;Squidoo&lt;/a&gt; - Great for driving traffic, the site allows you to create a lens on a specific topic, network with other experts and link back to your site or blog.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.frappr.com/" target="_blank"&gt;Frappr&lt;/a&gt; - Community mapper and guest book establishes interactivity for users, while recording visitor stats. Embed pages with maps and allow users to pinpoint their location in real time.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.furl.net/" target="_blank"&gt;Furl&lt;/a&gt; - Drive traffic to your site and promote urls with this social bookmarker that allows users tag and share favorite urls; includes commenting and recommendation feature.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=7TLibz2c"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=rvWYCI0m"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=49VzwwWG"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=49VzwwWG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=9wUYX2KF"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=LvuJ4z1P"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=LvuJ4z1P" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/ecO6y95kvjU" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Sonal)</author><pubDate>Mon, 17 Mar 2008 12:00:00 EST</pubDate><guid isPermaLink="false">19</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=115&amp;title=Top_Social_Sites_Every_Business_Should_Know_About</feedburner:origLink></item><item><title>What To Read?</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/ZvqxDDrB12g/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=ZvqxDDrB12g:ZBGzcTRvB6s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=ZvqxDDrB12g:ZBGzcTRvB6s:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=ZvqxDDrB12g:ZBGzcTRvB6s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=ZvqxDDrB12g:ZBGzcTRvB6s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=ZvqxDDrB12g:ZBGzcTRvB6s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/delphicsage/blog?a=ZvqxDDrB12g:ZBGzcTRvB6s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/delphicsage/blog?i=ZvqxDDrB12g:ZBGzcTRvB6s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/ZvqxDDrB12g" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Scott)</author><pubDate>Fri, 07 Mar 2008 12:00:00 EST</pubDate><guid isPermaLink="false">21</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=548&amp;title=What_To_Read</feedburner:origLink></item><item><title>Google AdSense Changes</title><link>http://feedproxy.google.com/~r/delphicsage/blog/~3/3QTN3IN7KJA/blog.aspx</link><description>&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=o4iFGCEG"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=dxmmuUzX"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=50" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=7pOK74KN"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=7pOK74KN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=skAmeMjc"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/delphicsage/blog?a=b2NtFbUu"&gt;&lt;img src="http://feeds.feedburner.com/~f/delphicsage/blog?i=b2NtFbUu" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/delphicsage/blog/~4/3QTN3IN7KJA" height="1" width="1"/&gt;</description><author>info@delphicsage.com (Sonal)</author><pubDate>Tue, 04 Mar 2008 12:00:00 EST</pubDate><guid isPermaLink="false">18</guid><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><feedburner:origLink>http://www.delphicsage.com/home/blog.aspx?d=113&amp;title=Google_AdSense_Changes</feedburner:origLink></item></channel></rss>
