
<rss version="2.0">
	<channel>
		<title>KeyLimeTie RSS Feed</title>
		<link>http://www.newvisionusa.com</link>
		<description>KeyLimeTie RSS Feed</description>
		<language>en-us     </language>
		<image id="_image">
			<title>KeyLimeTie</title>    
			<link>http://www.keylimetie.com/Blog/</link>
			<url>http://www.keylimetie.com/Common/Images/custom/KLT-Logo.gif</url>
			<width>220</width>
			<height>80</height>
		</image>
		
				<item>
					<title>Google Voice Actions adds to Android experience, frames future of mobile use</title> 
					<link>http://www.newvisionusa.com/blog/2010/8/17/google-voice-actions-adds-to-android-experience-frames-future-of-mobile-use/</link> 
					<description><![CDATA[
Last week, Google announced Voice Actions for Android, a robust set of voice commands that allow you to do anything from write a text message, begin navigating to a map location, retrieve directory listings or send an email.  For the phone platform known for feature-richness, this is a leap forward for users.


Watch Google's video on Voice Actions:





How well does it work?

This third-party test drive praises the complexity of the appliation but notes it's still lacking in the field.  The test of usefulness here is the speed and convenience to complete the desired (often routine) task.  If it ends up taking less time to manually complete the task, or if you have to switch to manual to choose between search options, the practicality of the feature diminishes.

It's cool, but when will it catch on?

Google prides itself at releasing features the iPhone doesn't yet have.  It's no surprise Voice Actions has more commands than Voice Control on the iPhone, a feature I use almost daily to place calls.  Like the Android test drive link above, the iPhone feature has some humorous inaccuracies, however for dialing, voice activation is accurate for 80-90% of the people I call.  However, just this weekend I get the sense voice commands haven't yet caught traction.  The other day I was driving a car full of techies on the bleeding edge who chuckled when they heard me talking to my phone to make a call.


Have you used this feature on the Android phone yet?  If so, tell us about it!

]]></description> 
					<pubDate>Tue, 17 Aug 2010 20:43:01 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/8/17/google-voice-actions-adds-to-android-experience-frames-future-of-mobile-use/</guid>
				</item>
			
				<item>
					<title>KeyLimeTie runs the MC 200 Relay for second year in a row</title> 
					<link>http://www.newvisionusa.com/blog/2010/8/17/keylimetie-runs-the-mc-200-relay-for-second-year-in-a-row/</link> 
					<description><![CDATA[




This year, KeyLimeTie ran the MC 200 relay from Madison, Wisconsin to Lake Michigan in Chicago for the second year in a row.  For us, it's been a real team building and an opportunity to bond outside of the office.  Plus, the event proceeds go to benefit the Special Olympics of Wisconsin and Illinois.



This is the second year we have participated.  This year we focused a lot more on training and getting our times up.  And, it paid off!  We shaved two hours off our 2009 time of 35:21:13, running the 200 miles this year in 33:26:32.



Check out photos of Team KeyLimeTie on Flickr.


The KeyLimeTie team included:



Yep, we ran all this way.



Anthony Avallone
Brian Pautsch
Brian West
Butch Zemar
Chris Grove
Chris Pautsch
Dan Strabbing
Dean Giorgetti
Geoff Skyles
Joe Giorgetti
Michael Wick
Peter Morano
Sam Dekin



We can't wait to do it again next year!
]]></description> 
					<pubDate>Tue, 17 Aug 2010 18:16:16 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/8/17/keylimetie-runs-the-mc-200-relay-for-second-year-in-a-row/</guid>
				</item>
			
				<item>
					<title>KeyLimeTie at SocialDevCamp Chicago This Weekend: Adding to the Hackathon prize pool!</title> 
					<link>http://www.newvisionusa.com/blog/2010/8/9/keylimetie-at-socialdevcamp-chicago-this-weekend-adding-to-the-hackathon-prize-pool/</link> 
					<description><![CDATA[





KeyLimeTie is thrilled to be a sponsor and contributor for the second year in a row to SocialDevCamp Chicago, a weekend conference for people developing software and growing businesses on the social web.  The event is being held this Saturday and Sunday August 14-15 at the Illinois Institute of Technology in Chicago, with the pre-launch party on Friday night at the Illinois Technology Association.  We hope you'll join us there.  Check out the full schedule for more details and be sure to register before tickets sell out.

$2,400 in KeyLimeTie Services to Hackathon Winner

We're most excited to see the developer Hackathon contest that our very own Peter Morano started last year at SocialDevCamp gain so much more momentum this year.  Since the grand prize winner will receive a demo table at midVenturesLAUNCH at the end of September ($750 value), KeyLimeTie is throwing in 16 hours of graphic design and innovation consulting services ($2,400 value) to help them prepare their app for the limelight.  We can't wait to see what the teams come up with.

We're Contributing as Staff, Speakers and Judges

This year we're more involved than ever.  In addition to Director of Marketing Tim Courtney (@timcourtney) as conference co-chair and CIO Peter Morano as Hackathon chair, our COO Brian Pautsch (@bpautsch) is participating as a Hackathon judge, Pete (@petermorano) is talking about the catalytic nature of Hackathons at 1:30 on the panel "Using Hackathons & Code Sprints for Innovation and Social Change," and I'll be a panelist during the 10:00am Saturday session "Killer Social Apps: 5 Trends Shaping the Future of Brand Engagement".


We're excited to have the opportunity to share both our passion and our expertise to the lively, energetic, creative and talented people who make it a priority to attend SocialDevCamp each year.


Please join us at SocialDevCamp, and if you come, please say hello!







]]></description> 
					<pubDate>Mon, 09 Aug 2010 17:50:59 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/8/9/keylimetie-at-socialdevcamp-chicago-this-weekend-adding-to-the-hackathon-prize-pool/</guid>
				</item>
			
				<item>
					<title>Crain&amp;quot;s article on mobile covers client Lava Lite and KeyLimeTie</title> 
					<link>http://www.newvisionusa.com/blog/2010/7/19/crains-article-on-mobile-covers-client-lava-lite-and-keylimetie/</link> 
					<description><![CDATA[KeyLimeTie and our client Lava Lite were featured in the article "Is your biz app-appropriate?" in this week's Crain's Chicago Business. Crain’s author, Steve Hendershot, reached out to KeyLimeTie for a perspective on the mobile app industry, allowing us the opportunity to share our experiences and observations through some of the work we’ve done for our clients. 
The entire article can be found on Crain's Website. 
Besides being a gripping and entertaining app, we’re truly excited about the potential influence user-generated Lava Lamp concepts may have on future product design and development. We’re also anxious to see how well the integration with Social Media for sharing lamp designs on Facebook and Twitter will increase brand awareness with the iconic company. 
Social Media
We're also working with Lava Lite on social media campaigns for their signature Lava Lamp product. You can follow @LavaLamp on Twitter and become a fan on Facebook. 
Let's Work Together
If you're looking to dive deeper into mobile for your company, give us a call. We'd be happy to talk through your goals and devise a plan that uses apps, mobile web, or both to help you connect with your customers on mobile. 
Get Updates from KeyLimeTie
Please follow @KeyLimeTie on Twitter or "Like" us on Facebook. We do our best to share useful information about the web, enterprise software, mobile technologies and how you can practically use social media for business. 
]]></description> 
					<pubDate>Wed, 21 Jul 2010 22:54:00 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/7/19/crains-article-on-mobile-covers-client-lava-lite-and-keylimetie/</guid>
				</item>
			
				<item>
					<title>Naperville Running Company app &quot;NRC Runner&quot; now in iTunes Store</title> 
					<link>http://www.newvisionusa.com/blog/2010/7/20/naperville-running-company-app-in-itunes-store/</link> 
					<description><![CDATA[




We're happy to announce the release of our latest iPhone app, a pace calculator and customer engagement app for the Naperville Running Company called 'NRC Runner'.


You can download the app today on iTunes.  Here's what the app can do:




	Pace Calculator that lets you either tell the app your desired distance and anticipated time to calculate a pace, or key in a desired distance and pace to determine how long your run will take.
	
	Events Calendar that keeps you up to date on the events Naperville Running Company sponsors and participates in throughout the year, so you can join the fun.
	
	Special offers, store news and sale information so you can stay up to date with your favorite running store.




Here at KeyLimeTie, we take our running competitions seriously&mdash;so seriously that we just completed the MC 200 Madison to Chicago 200-mile relay a few weeks ago.  Naperville Running Company is our one-stop shop for all the gear we need, and we're thrilled to work with them on the app.



Let us know what you think!


Need your own app or mobile website?


If you're looking to get into mobile and like what you see, give us a shout.  You can contact us via email or phone at 630.598.9000.
]]></description> 
					<pubDate>Tue, 20 Jul 2010 23:10:46 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/7/20/naperville-running-company-app-in-itunes-store/</guid>
				</item>
			
				<item>
					<title>KeyLimeTie sponsors Hope to Give Golf Outing to benefit Childrens Memorial Hospital</title> 
					<link>http://www.newvisionusa.com/blog/2010/7/13/keylimetie-sponsors-hope-to-give-golf-outing-to-benefit-childrens-memorial-hospital/</link> 
					<description><![CDATA[

KeyLimeTie's hole at the Hope to Give Golf Outing.




KeyLimeTie sponsored a hole at the Hope to Give Golf Outing last week that raised over $6,000 to benefit Childrens Memorial Hospital.  The outing was held at Stonewall Orchard Golf Club in Grayslake, IL.



Hope to Give produces fund raising events that raise money for children, families of children and organizations specifically created to help children living with life altering medical conditions.  They strive to bring hope, money, and support to those that need it most through various fund raising activities and events.



Check out the video of the outing below, and the list of outing sponsors on the Hope to Give website.




]]></description> 
					<pubDate>Tue, 13 Jul 2010 15:47:24 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/7/13/keylimetie-sponsors-hope-to-give-golf-outing-to-benefit-childrens-memorial-hospital/</guid>
				</item>
			
				<item>
					<title>KeyLimeTie Recognized as one of Chicago&amp;quot;s 101 Best and Brightest Companies to Work For for 2010</title> 
					<link>http://www.newvisionusa.com/blog/2010/6/28/keylimetie-selected-as-one-of-chicagos-101-best-and-brightest-companies-to-work-for-for-2010/</link> 
					<description><![CDATA[




Thanks to our employees, I'm pleased to announce we were just named as one of “Chicago’s 101 Best and Brightest Companies to Work For” by the National Association for Business Resources (NABR).  Here's a link to the press release we just issued about the honor as well.


In a nutshell, we're thrilled and thankful.  It reflects the effort and consideration we’ve put into developing a constructive, relaxed work environment that has enabled us to attract and retain some of Chicago's most talented individuals. 

What's great about this honor is we were selected thanks to our employees' responses to surveys the NABR distributed to our employees.  They expressed their enjoyment of working at KeyLimeTie in such a way that ranked us in the top 101 companies in the area.


So, to that we say thanks.  Thanks to everyone who each day makes KeyLimeTie what we are.  We're honored to be on this list.
]]></description> 
					<pubDate>Mon, 28 Jun 2010 21:55:14 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/6/28/keylimetie-selected-as-one-of-chicagos-101-best-and-brightest-companies-to-work-for-for-2010/</guid>
				</item>
			
				<item>
					<title>Google Caffeine Changes Search - What You Need to Know</title> 
					<link>http://www.newvisionusa.com/blog/2010/6/22/google-caffeine-changes-search-what-you-need-to-know/</link> 
					<description><![CDATA[



Google recently announced the release of Google Caffeine, the latest version of their search engine.



To help you get ready, back in September we wrote about three things to prepare for Google Caffeine.  Have you implemented those steps?



Now that Caffeine is live, here is what you can expect:



	Search results that contain more relevant content including more recent blog posts versus aging items.  While people expect businesses' rankings to be affected, marketers don't yet know exactly how.
	Content will now be searchable within seconds after it is crawled.  This is because Google is processing content immediately instead of in batches like before.
	You won't see a change in the ranking system, because Caffeine's big changes are in the indexing architecture.  If rankings are impacted, it will be as an indirect result and only visible at a later date.
	

What can you do?


According to Google, there isn't much content creators can do to take advantage of Caffeine, but it will benefit publishers indirectly.  However, with properly configured social media profiles, people are starting to see their fresh content indexed within a few hours of posting a link to the content via their social accounts.

	
Why these changes?


According to Google, 'People's expectations for search are higher than they used to be. Searchers want to find the latest relevant content and publishers expect to be found the instant they publish.'


Looking to dig deeper?


Read these articles on Google Caffeine to learn more.



	PCWorld: Google's Caffeine Gives the Search Engine a Boost
	Search Engine Land: Google’s New Indexing Infrastructure 'Caffeine' Now Live
	Video of Google's Matt Cutts talking about Caffeine (starts at 1:15)


Get Updates from KeyLimeTie

Please follow @KeyLimeTie on Twitter or "Like" us on Facebook.  We do our best to share useful information about the web, enterprise software, mobile technologies and how you can practically use social media for business.
]]></description> 
					<pubDate>Wed, 23 Jun 2010 00:05:32 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/6/22/google-caffeine-changes-search-what-you-need-to-know/</guid>
				</item>
			
				<item>
					<title>Keep from losing control of your brand on Facebook&amp;quot;s new Community Pages</title> 
					<link>http://www.newvisionusa.com/blog/2010/5/27/keep-from-losing-control-of-your-brand-on-facebooks-new-community-pages/</link> 
					<description><![CDATA[

Community Pages show up in search results alongside fan pages, such as these for BP on Facebook.


Facebook "Community Pages" have added new ways for people to connect around interests, but at the same time they pose a potential threat to your company and your brand.  How so?  They create public pages (that nobody owns) around any common interest people have added to their profiles (for example, music artists, movies and products).  If you manage a popular brand, don't be surprised if you find pages on Facebook with your product or company name on them, displaying content you didn't write and can't edit to your liking.


Like it or not, the days of completely owning your own message are gone.  You can't hide behind press releases or your own claims anymore, especially if your company and your products get a lot of attention.  Networked customers and stakeholders who have an opinion about you—positive, negative and all shades inbetween"will find each other.  Today, your brand has evolved into the sum total of your customers' and stakeholders' thoughts about you, as shared on the web.

How do Community Pages work?

Facebook says they aim to make each Community Page "the best collection of shared knowledge on [this topic]".  They do this by bringing in the topic's Wikipedia article along with recent posts mentioning the subject.  This means whatever people are saying about the area of interest—good or bad—has the potential to get aggregated.  Read Facebook's blog post on the topic for a full understanding of how this works.

Read About What is at Stake

If you represent your company's image or if you are involved in corporate communications of any kind, take the time to fully understand this trend.  John Bell says Facebook Community Pages are no big deal once you accept what they are.  Invest the time to read his article for an analytical perspective.  Once you've read that, study Jeremiah Owyang's matrix on how Facebook Community Pages impact brands and consider the advice he brings as a seasoned analyst.

Example: BP on Facebook & Boycott BP Pages

Take BP for example.  When you search for BP on Facebook, you'll see a list similar to the one on the right.  The first result, "Boycott BP," is a Fan Page, or a page that a user created and owns.  The fourth one, an Organization page, is a Community Page.  It shows the Wikipedia summary for BP and aggregated user posts on the company—all negative, given the recent oil spill in the Gulf of Mexico.

Your Words and Actions Matter

While you never can insure against a coordinated social media attack, you can take action and do a few things consistently that earn respect and loyalty from your customers:


    Deserve the trust you seek by being honest.  Transparency doesn't mean showing all your cards, but it does mean telling the truth about the claims you make.
    Demonstrate expertise.  Build trust by showing your competency through how you interact socially on the web and through the content you produce about your product and industry.
    Demonstrate your commitment to your customers.  Follow through on the promises you make both privately and publicly.  By doing so, you'll give them every reason to speak well of you, and no reason to speak ill.
    Empathize with them.  Even when people have bad experiences with your product or service, a little empathy goes a long way.  See the problem from their perspective as you resolve it by doing the first three things.


The Best Defense is a Good Offense

You can pre-empt bad PR by creating your own advocacy program of engaged customers who promote you online.  Jeremiah Owyang outlines how with this handy checklist.

Get Updates from KeyLimeTie

Please follow @KeyLimeTie on Twitter or "Like" us on Facebook.  We do our best to share useful information about the web, enterprise software, mobile technologies and how you can practically use social media for business.

]]></description> 
					<pubDate>Thu, 27 May 2010 21:39:38 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/5/27/keep-from-losing-control-of-your-brand-on-facebooks-new-community-pages/</guid>
				</item>
			
				<item>
					<title>.CO Domains: Your chance to get a cool domain name all over again.</title> 
					<link>http://www.newvisionusa.com/blog/2010/5/25/co-domains-your-chance-to-get-a-cool-domain-name-all-over-again/</link> 
					<description><![CDATA[



Just when you thought all the good domain names were taken, there's now a new opportunity to snap up a memorable domain—or even your brand name if your .com is taken.  If you have a registered trademark, you can apply register yourname.co via the .CO Registrars today.  If you don't have a trademark, you'll be able to get it as early as June 21.


What's this all about?  Just like .biz, .info and .name, .co is the latest of what the industry refers to as "top-level domains" to be offered for domain name registration.  The unique thing about .CO is it already carries similar credibility as .com around the world (think .co.uk, .co.au etc.) and that this is the first time .CO domains are being offered as top-level.  If you're interested in background information, check out this Wired Magazine article on .CO domains.

Is it worth grabbing?

Yes and No.  If you want your domain now, during the Global Trademark Holder phase, it will set you back $300.  At that price, it’s not worth it for small businesses.



Once this becomes available at the $30 price, then it’s probably worth it.  'Dot-co' rolls off the tongue.  It connotes "company" and carries the familiarity of "dot-com."  Plus, you have the opportunity to grab your first choice domain name if your dot-com is taken.

Register Your Own .CO

Here are our recommendations for getting your own .CO domain:


    Brand Managers: If you have a registered trademark and a high-value brand, register your .CO domain now before registration opens to the public.  Only do this if your name is high-value as it will set you back $300 per domain.
    Small Businesses: Wait until the Standard Pre-Registration phase that starts July 20.  Then the price will be a reasonable $30, and at that point we recommend you grab the .co domain.
    
    Everyone: Before the Standard Pre-Registration phase starts on July 20, think of opportunities to register just a couple generic domains relevant to your business that will have high search engine optimization (SEO) value (e.g. chicago-pizza.co).  If high traffic either globally or from a specific region is valuable to you, you have another shot at creating a site that naturally ranks high for a generic search term.


Get Updates from KeyLimeTie

Please follow @KeyLimeTie on Twitter or "Like" us on Facebook.  We do our best to share useful information about the web, enterprise software, mobile technologies and how you can practically use social media for business.

]]></description> 
					<pubDate>Tue, 25 May 2010 23:32:21 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/5/25/co-domains-your-chance-to-get-a-cool-domain-name-all-over-again/</guid>
				</item>
			
				<item>
					<title>While Mobile OSes Fragment, the Mobile Web is Converging</title> 
					<link>http://www.newvisionusa.com/blog/2010/5/19/while-mobile-oses-fragment-the-mobile-web-is-converging/</link> 
					<description><![CDATA[
In an O'Reilly Radar report, mobile evangelist Jason Grigsby (@grigs) captures two mobile trends that might be surprising.  Much unlike the desktop market, which has long been dominated by Windows with MacOS running a distant second, mobile devices are seeing increased fragmentation in operating systems.  At the same time, web standards are bringing mobile web browsers closer together in similarity.


What does this mean to you?


Assuming you're either an enterprise IT manager, mobile marketer or small business owner looking at opportunities to communicate and connect via mobile, what does this mean for you?  It will be increasingly difficult to reach a majority of your audience by building a native application (mobile app) for just one operating system.  You'll have a much better time making content widely available if you embrace the mobile web.  However, if you require an app for whatever reason, you'll be smart to target your platforms based on your most loyal and most profitable audience(s).  There are smart ways to go about building apps and successes to be had if you give the process careful thought.


Just the Facts


Here are a few highlights from the article to give further detail.  However, I encourage you to read the full article with many more facts and figures.



Grigsby compiled mobile OS stats since 2006, noting that 'In 2006, two mobile operating systems controlled 81 percent of the market. This year there are 10 different smartphone operating systems'.  Further observations include the facts that:



	No single mobile OS has greater than 50% marketshare.
	Samsung will be releasing its own OS and HTC is considering producing its own.  Grigsby cites reasons to take these OSes seriously based on the manufacturers' marketshare.
	Android OS has been fragmented across handset manufacturers as several have overlayed their own user interfaces (MotoBlur and Sense UI.



While operating systems diverge, the report continues to outline how the mobile web is converging on HTML5 and WebKit.  The only mobile browser that won't support HTML5 and WebKit for now is Internet Explorer, though indications show that future versions of the mobile IE will also support it.







For complete analysis, read Jason Grigsby's article at O'Reilly Radar.


Get Updates from KeyLimeTie


Please follow @KeyLimeTie on Twitter or 'Like' us on Facebook. We do our best to share useful information about the web, enterprise software, mobile technologies and how you can practically use social media for business.
]]></description> 
					<pubDate>Wed, 19 May 2010 16:06:14 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/5/19/while-mobile-oses-fragment-the-mobile-web-is-converging/</guid>
				</item>
			
				<item>
					<title>Fix your Facebook privacy settings with this handy tool</title> 
					<link>http://www.newvisionusa.com/blog/2010/5/17/fix-your-facebook-privacy-settings-with-this-handy-tool/</link> 
					<description><![CDATA[

Reclaim Privacy's tool shows Green for secure privacy settings and Red for insecure ones.


Facebook has taken a lot of heat in the last couple weeks on privacy issues.  New defaults mean a lot of the information you share is public.  While you can control all of this, the control panel is complex and confusing.


Are you concerned about your own privacy on Facebook?  We recommend you use this handy tool provided by ReclaimPrivacy.org to check how secure or insecure your profile is based on your privacy settings.  When your settings are insecure, it even links you right to the relevant privacy settings page so you can make the changes right away.

Do This Now


    Visit ReclaimPrivacy.org and follow their simple instructions for checking your Facebook privacy settings.  I did this and it took me just a minute or two to read the steps, install the bookmarklet, visit Facebook and see what I was leaving exposed.  My profile was pretty locked down already, but I did leave one thing open.
    Share it with your friends.  The Facebook privacy settings are confusing, even if you're computer-savvy.  This tool helped me, and it will help many others understand what they are and aren't sharing.




Get Updates from KeyLimeTie
Please follow @KeyLimeTie on Twitter or 'Like' us on Facebook.  We do our best to share useful information about the web, enterprise software, mobile technologies and how you can practically use social media for business.
]]></description> 
					<pubDate>Mon, 17 May 2010 20:54:12 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/5/17/fix-your-facebook-privacy-settings-with-this-handy-tool/</guid>
				</item>
			
				<item>
					<title>Roundup of Useful Mobile Marketing Stats</title> 
					<link>http://www.newvisionusa.com/blog/2010/5/17/roundup-of-useful-mobile-marketing-stats/</link> 
					<description><![CDATA[
Blog We Are Organized Chaos published a great roundup of recent mobile marketing stats.  You'll want to save this post for reference and go through them at your leisure.


Full Roundup: What's New in Mobile Marketing




So what's the big deal?
The first link boldly states that 82% of brands plan to boost mobile budgets over the next 12 months.  In 2009, marketing & ad budgets started shifting from traditional to social media.  This year, we're seeing mobile rapidly take over the social experience.  With the ability to target your message and communicate 1:1, you can engage with your most loyal customers and build that loyalty even further.


Just realize that mobile is one channel—albeit one rapidly increasing in importance—in your marketing mix.  For some perspective, check this Mobile Marketer article; Why brands must have a 360-degree mobile Web strategy.
]]></description> 
					<pubDate>Mon, 17 May 2010 20:24:27 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/5/17/roundup-of-useful-mobile-marketing-stats/</guid>
				</item>
			
				<item>
					<title>The Right Way to make your Social Media Mea Culpa</title> 
					<link>http://www.newvisionusa.com/blog/2010/5/12/the-right-way-to-make-your-social-media-mea-culpa/</link> 
					<description><![CDATA[
Afraid of screwing up with your customers online?  If the technical side of the web wasn't daunting enough, it gets more so when you add people.  We've all seen and read the stories of communications gaffes that have resulted in an online firestorm for the company.  Some mistakes are innocent, while others are arguably a result of poor customer service, PR people not getting it, or even dishonesty that finds the company out.  Here are a few examples:



	Motrin Moms ad campaign
	United Breaks Guitars
	Greenpeace and Nestl&eacute; duke it out on Facebook
	Wal-Marting Across America Astroturfing



So what about when it happens to you?  What if a customer or constituent gets upset by something you do and they decide to take it to the web?


Read this Advertising Age Article: The Right Way to Make Your Social-Media Mea Culpa


Have you had an experience like this?  Maybe yours wasn't on as broad of a scale, but if you've had something like this happen, please take a minute to share what happened and what you did to make it right below in the comments.

]]></description> 
					<pubDate>Wed, 12 May 2010 16:02:26 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/5/12/the-right-way-to-make-your-social-media-mea-culpa/</guid>
				</item>
			
				<item>
					<title>Mobile marketing does not stand alone: a report from Mobile University</title> 
					<link>http://www.newvisionusa.com/blog/2010/5/4/mobile-marketing-does-not-stand-alone-a-report-from-mobile-university/</link> 
					<description><![CDATA[

The mobile marketing & advertising ecosystem.



The degree of success you have marketing via mobile is directly related to the degree of seriousness with which you treat it as a channel.  Your mobile efforts, whether using the web, apps, or other means of communicating with a person on their phone should never be treated as a standalone medium.



These are just two of the core insights outlined at the Mobile University conference that brought together agency and brand representatives to talk about what works in mobile marketing and where the medium is going.  The conference served to both reinforce and enhance the approach KeyLimeTie takes with our clients.



When you isolate your mobile efforts to one-off campaigns, you risk throwing away a lot of work; as if you launched a website only to wind it down weeks later.  Instead, think in terms of 12-month cycles for your marketing objectives instead of a 'quick-win' 8-week campaign.



Whether you develop your mobile solution in-house or contract to an agency or development team like KeyLimeTie, realize the real value lies when you build a long-term program for engagement, complete with multiple campaigns integrated with your overall marketing strategy for the year.  Your mobile marketing efforts should result in a channel through which you communicate on an ongoing basis.  



The key is to first understand mobile devices for what they are.  What are your consumers already doing on their phones, and how can you enable those behaviors?



&ldquo;Mobile is the
snack food
of your day.&rdquo;



People use mobile devices on breaks, pauses, for short bursts and in moments of periodic downtime.  They also use it when they need information to make a quick decision.  Consumers are a lot smarter than us&mdash;the marketers, brand managers and developers directly involved in marketing a product or service&mdash;so don't just do something for the sake of doing it, make it make sense with them and their habits.


Mobile Campaign Tips:


	For every $1 you spend developing and executing a mobile marketing campaign, be prepared to spend another $2 promoting it.
	Allow your customer to treat their phone as a 'mobile mouse.' QR codes let you "click" on things in the real world, taking them from real world experiences to digital ones they see on their phones.  This can provide entertainment, information, connection and other kinds of value.
	Know how people use apps. After a user has 5 or more apps installed, there's a significant drop off in app usage on a monthly basis.  Build in weekly interactions with your users to stay on their radar.  Push Alerts on the iPhone and Android are one way of accomplishing this.
	


Looking to build your mobile strategy?  Talk to KeyLimeTie and we'll walk you through how.
]]></description> 
					<pubDate>Tue, 04 May 2010 19:55:10 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/5/4/mobile-marketing-does-not-stand-alone-a-report-from-mobile-university/</guid>
				</item>
			
				<item>
					<title>KeyLimeTie&amp;quot;s First Internal Hackathon Contest: Our Experience</title> 
					<link>http://www.newvisionusa.com/blog/2010/4/27/keylimeties-first-internal-hackathon-contest-our-experience/</link> 
					<description><![CDATA[

Scene from the KeyLimeTie Hackathon


On April 23, 2010, KeyLimeTie employees came together to present their entries from the first KeyLimeTie Hackathon, our first ever internal development and innovation contest.  Most Hackathons span a short period of time—from 24 to 48 hours from start to finish.  We gave each of the three KeyLimeTie teams several weeks to design, develop and deliver their projects. Teams were handpicked based on role and skill level, and we intentionally placed people who seldom interact on projects on the same teams.

The Rules

The contest was simple; teams were to pick at least two APIs from Programmable Web and create something interesting.  To keep things original, teams could not use the same APIs as competing teams.





For some of the employees, this was a rare chance to be creative and go beyond their normal roles and responsibilities.  The experience yielded market-ready products and tools, and some great laughs and memories.

Personal Reflections

I have organized and participated in several developer Hackathons and can easily attest to their role as a catalyst for innovation, creative problem solving and community building.  The KeyLimeTie Hackathon was no different.  We gave a talented group of people some raw materials and a little encouragement and were blown away with the results.  You can do the same. 


Incidentally, you will see the applications built during the Hackathon integrated into the KeyLimeTie Content Management System (CMS), as well as available for integration into your own websites.  You can stay tuned for updates by following us on Twitter or Facebook.

]]></description> 
					<pubDate>Tue, 27 Apr 2010 21:53:40 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/4/27/keylimeties-first-internal-hackathon-contest-our-experience/</guid>
				</item>
			
				<item>
					<title>Chicago Tribune Column &quot;Minding Your Business&quot; Features KeyLimeTie</title> 
					<link>http://www.newvisionusa.com/blog/2010/4/26/chicago-tribune-colunn-minding-your-business-features-keylimetie/</link> 
					<description><![CDATA[


Chicago Tribune column featuring KeyLimeTie




Last week, Chris Pautsch and Peter Morano were interviewed by the Chicago Tribune about the things KeyLimeTie is doing on the mobile web and with mobile applications.  Some of our comments made it into today's Minding Your Business column by Ann Meyer.  Read the entire Chicago Tribune article here: Startups use mobile space to innovate, grow.



To underscore the article, remember these key points when looking to jump into mobile for your own company:


Strategy Before Tactics


Everyone wants to develop a mobile app because they're seen as sexy.  Be careful though to examine what your goals are, who your target audience is, and the best way to reach them with timely, personal information.  It may not be an app.  SMS campaigns and response mechanisms like QR codes that point to a mobile web site may yield greater results depending on who you are reaching and what you're trying to accomplish.


Focus on the Mobile Web


Aside from social networking and email, search (especially finding directions, including potentially to your location) is a leading activity on the mobile phone.  Give your customers the best mobile web experience you can.  Anticipate their needs and help them achieve them seamlessly and they'll love you for it.


Be Real and Make it Relevant


People consider their mobile phones to be very personal.  When people load your app or opt-in to mobile communications from you, they're demonstrating a high degree of trust.  Note not to communicate excessively via SMS messages or based on a person's location as this can be seen as very intrusive.  Use these techniques infrequently and with your most loyal customers who have expressed interest in receiving these types of messages (this also includes Push Notifications sent to smartphone apps).


Relevant KeyLimeTie Mobile Links


	Day of Mobile Hackathon
	SocialDevCamp Chicago Hackathon
	iLime - iPhone Push Notification Service
	The Secret Daily Teachings iPhone App
	Sloan Water Savings Calculator iPhone App
]]></description> 
					<pubDate>Mon, 26 Apr 2010 21:17:08 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/4/26/chicago-tribune-colunn-minding-your-business-features-keylimetie/</guid>
				</item>
			
				<item>
					<title>CIO Peter Morano to speak at IIT on Developing a Successful Mobile Strategy</title> 
					<link>http://www.newvisionusa.com/blog/2010/4/16/cio-peter-morano-to-speak-at-iit-on-developing-a-successful-mobile-strategy/</link> 
					<description><![CDATA[

Peter Morano



Are you curious about mobile, but don't know where to start?  Our CIO, Peter Morano, will speak Thursday April 22 from 6:00-8:00 P.M. at the Illinois Institute of Technology Knapp Center on Developing a Successful Mobile Strategy.



Come learn how why reaching your customers and your market must be your central goal, and why this doesn't necessarily mean you need to develop an app.  Peter will talk about:



	Methods for connecting with a mobile audience
	Engaging your audience effectively
	The differences between various mobile platforms
	How these factors affect market reach



Register today to see Pete speak at the Knapp Center on the 22nd.  The event is free to attend, but RSVP is required.
]]></description> 
					<pubDate>Fri, 16 Apr 2010 23:13:10 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/4/16/cio-peter-morano-to-speak-at-iit-on-developing-a-successful-mobile-strategy/</guid>
				</item>
			
				<item>
					<title>Naperville Running Company &quot;Goes Green&quot; with a site from KeyLimeTie</title> 
					<link>http://www.newvisionusa.com/blog/2010/4/9/naperville-running-company-goes-green-with-a-site-from-keylimetie/</link> 
					<description><![CDATA[





We're happy to announce the launch of a new web site for our friends at the Naperville Running Company.  They're a great running shop in downtown Naperville and they've made quite a name for themselves.  Not only do they sell a wide range of running supplies, they host regional races and have even been selected as the #1 running store in the country by Formula4Media, hosts of the 2009 Running Event trade show.


This isn't just any other client for us, though.  Here's the backstory:



Tracy and me during the MC200.


Last summer I was in a pinch to find the right shoes to run 20 of the 200 miles in the MC200 relay from Madison to Chicago.  KeyLimeTie had a team and I had just bitten the racing bug.  Their store was the only store to take the time to get to know me, my running history and my goals when they sold me a pair of shoes.


This year, Naperville Running Company turned to us to build them a new web site.  We're quite happy with the results, and are glad they are too (especially because Team KeyLimeTie will be needing a lot of running gear for this year's MC200 race)!  Also, be on the lookout for the Naperville Running Company iPhone application in the iTunes store at the beginning of June.

]]></description> 
					<pubDate>Fri, 09 Apr 2010 20:18:00 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/4/9/naperville-running-company-goes-green-with-a-site-from-keylimetie/</guid>
				</item>
			
				<item>
					<title>Tim Courtney nominated for ITA CityLIGHTS Award for work with SocialDevCamp</title> 
					<link>http://www.newvisionusa.com/blog/2010/4/8/tim-courtney-nominated-for-ita-citylights-award-for-work-with-socialdevcamp/</link> 
					<description><![CDATA[





It gives me great pleasure to announce to our clients and to the industry as a whole that KeyLimeTie's Tim Courtney was recently selected alongside Andy Angelos as finalists for the Illinois Technology Association's annual CityLIGHTS awards for their work producing the SocialDevCamp Chicago conference.


The SocialDevCamp team joins other area leaders as nominees in the annual award that highlights the outstanding contributions of both individuals and companies in the Illinois technology industry.  The ITA will announce the award recipient at the annual CityLIGHTS award gala on April 29 at Union Station.  Please join me in wishing Tim and Andy well.


KeyLimeTie had the privilege of sponsoring SocialDevCamp Chicago 2009 last November, an event that attracted over 200 developers, entrepreneurs and social application enthusiasts to learn about and create social applications.  Keynote speakers included Facebook and Google senior developers who shared strategies behind their respective companies work building the infrastructure of the social web.


To learn more about SocialDevCamp, see Tim and Andy discuss the conference in this highlight video:







]]></description> 
					<pubDate>Thu, 08 Apr 2010 22:24:05 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/4/8/tim-courtney-nominated-for-ita-citylights-award-for-work-with-socialdevcamp/</guid>
				</item>
			
				<item>
					<title>iPad, the tablet shift, and what this means for the laptop</title> 
					<link>http://www.newvisionusa.com/blog/2010/4/2/ipad-the-tablet-shift-and-what-this-means-for-the-laptop/</link> 
					<description><![CDATA[
Of all of the bold statements made surrounding the iPad, one of the most notable came from Shervin Pishevar at SXSW Interactive.  'The laptop is the rotary phone of our generation,' he quipped.  This quote has been resonating with me over the last couple days as I've been thinking through what tablet computers and tablet apps mean for how we will use computers in the short months and years to come.










On the eve of securing my own iPad, I've been thinking through the types of apps I'll want to load on it for both fun and productivity.  Presumably, I'll carry the iPad around more than my three year old MacBook Pro, even though that machine has my most used applications (including Microsoft Office, iWork and Adobe Creative Suite in addition to handy programs like TextWrangler and Omni Outliner).  However, the iPad will fill a fundamentally different space.  I imagine I'll still use the laptop for the heavy-duty work like long-form writing and building presentations, where I'll mostly use the iPad for things like email, note-taking, social networking, and perhaps video editing.









OmniGraphSketcher for the iPad


But this is a fundamental shift, so my expectations now could end up being very wrong.  Given the sophistication of some of the apps I've seen (for example, the Omni Group's productivity apps), the iPad may well become a primary productivity tool when I'm on the go.  In fact, with the proven ingenuity of the iPhone developer community throwing all of its collective creativity at a larger screen, it most likely will.



In essence, the app paradigm scaled up from a phone to a tablet takes the 'computer' out of the picture.  Purpose-built touch-based apps for iPhone OS, Android and other emerging platforms make both fun and producivity more accessible to the mass market of people who don't consider themselves particularly good with computers&mdash;so much so that popular tech pundit David Pogue wrote a comprehensive iPad review from both the perspective of 'techies' and non-techies.  Pogue says;



'The iPad is so fast and light, the multitouch screen so bright and responsive, the software so easy to navigate, that it really does qualify as a new category of gadget. Some have suggested that it might make a good goof-proof computer for technophobes, the aged and the young; they’re absolutely right.'



	&mdash;David Pogue



The new touch interface, app paradigm, and end-to-end user experience that results creates a new generation of computer users who won't even realize that's what they are.  Some day soon we may see the word 'computer' disassociated with portable devices; people will still refer to Desktops as computers, but an iPad?  'Oh, that's my tablet.' The laptop may eventually fade into memory.



So now my question is this; two years from now when I had planned to replace my laptop, will I even want one?
]]></description> 
					<pubDate>Fri, 02 Apr 2010 21:39:40 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/4/2/ipad-the-tablet-shift-and-what-this-means-for-the-laptop/</guid>
				</item>
			
				<item>
					<title>SXSW Report: Why Contexts Matter to Your Customers</title> 
					<link>http://www.newvisionusa.com/blog/2010/3/22/sxsw-report-why-context-matters-to-your-customers/</link> 
					<description><![CDATA[
Human interactions with computers are shifting rapidly away from the desktop.  Thanks to mobile devices and social media channels, the traditional web site, the cornerstone sales and marketing tool of B2B and B2C companies for the last fifteen years, is diminishing in relative importance as the primary way customers gain information about you.  Experts used to predict the convergence of media to a single device, however today we're seeing media (content) delivered to and consumed via many distinct types of devices&mdash;the most notable being the mobile phone (and soon the tablet, thanks to the innovation being spurred by the iPad).



In 2009, mobile web usage more than doubled.  Today, Google is encouraging local search through initiatives like its Favorite Places program and by beefing up its mobile web interface.  Businesses, especially local ones, are looking to both mobile web and mobile apps to connect with customers on their terms.  Companies looking to stay connected with their customers must address the fact that more and more people are accessing the web via the mobile phone.



At SXSW Interactive, Adobe Systems' platform evangelist Kevin Hoyt (@parkerhoyt) delivered a thoughtful talk to these developers entitled 'Best Practices for Contextual Applications.'  Hoyt's central point was that people are consuming more content through more screens than ever before, and content creators must deliver that content through a consistent, integrated, and seamless user experience.



Expectations are High, Regardless of Context


The interactive industry refers to the process of developing for these various devices as contexts.  As people increase their exposure to web content, the interactions are fragmenting across devices.  To the customer, your brand is your brand, no matter through what context they are interacting with you.  Your job is to deliver a consistent, high-quality experience across contexts, strengthening your relationship with your customers on their terms and on the device of their choice.



Thinking of your user as 'just an iPhone user' or 'just a browser user' is limiting.  The people who comprise your market will move between contexts.  Further, these people will take their data with them from context to context.  Whether they are out for a run, at their desktop, or on the go with their phones, they will expect to be able to access their information wherever they are and regardless of the type of data.




People will demand the same quality experience across contexts, but the ways they interact and the information they need will differ based on context.



Contexts in Action


The New York Times adapts their context based on how people are consuming the information.  Even their 'freemium' pricing model varies from context to context, based on how people use the information they provide within each.  As an organization, they are laser-focused on unlocking new revenue potential among the various contexts, providing content on the web, mobile web, natively on the desktop via the Times Reader, and even on devices like the Chumby.  They realize that people will use the data differently depending on context, and present and price differently in kind.



You interact with multiple contexts each and every day.  These contexts include:



Desktop/Laptop Computer software applications, e.g. Microsoft Word
Web Browser, e.g. web sites
Desktop or Dashboard Widgets
Mobile Phones, including mobile web and native applications for iPhone or Android devices
Tablet Computer, e.g. iPad
Automobile dashboard or heads-up screens
Nike+ and other input devices
Video game consoles such as Xbox, Nintendo Wii and PS3
Home appliances
Ambient consumer electronics devices such as the Chumby



Requirements for Contextual Applications


To succeed at reaching your audience across contexts, you must address the requirements needed to deliver a consistent, high quality experience.



Ubiquity - Your content needs to be everywhere your users are consuming information from, regardless of the context.  Know the contexts your users use, and prioritize development of interfaces for those contexts in alignment with your sales process and strategic priorities.
Workflow - Before you design for multiple contexts, build the workflow of how users interact on&mdash;and between&mdash; each.  With a proper workflow you can put together a good experience across devices.
Cloud Servers - By using a cloud-based server infrastructure like Amazon EC2, Rackspace, or Salesforce.com, you allow your applications to share common databases and to scale seamlessly.  If you are serving video to an international user base, consider a content delivery network to handle the heavy lifting of video with minimal lag time no matter where your users are in the world.
Social Media Services - Gain users and add features by using the APIs on popular social networks, including Facebook, Twitter, LinkedIn, YouTube, MySpace, etc.  Also, you can integrate content with more focused social sites like SlideShare for presentations and Delicious for bookmarks.



KeyLimeTie Can Help


Looking to extend beyond your corporate web site and meet users on their phones, on the social web, or on their tablets and iPads?  KeyLimeTie has a team of seasoned, versatile cross-platform developers with digital strategy and design capabilities to provide you a full solution.  To explore further, give us a call at 630.598.9000.  
]]></description> 
					<pubDate>Mon, 22 Mar 2010 18:41:02 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/3/22/sxsw-report-why-context-matters-to-your-customers/</guid>
				</item>
			
				<item>
					<title>SXSW Report: Facebook and Digg on &quot;Designing the First 15 Minutes&quot;</title> 
					<link>http://www.newvisionusa.com/blog/2010/3/16/sxsw-facebook-digg-on-designing-the-first-15-minutes/</link> 
					<description><![CDATA[
Small changes in the way people first encounter your web site can make a big difference in the results you get.  Careful attention to the initial pages on your site&mdash;before and after a user registers&mdash;can make the difference between a successful site and an unsuccessful one.  So, what works and what doesn't, and how do you measure this?  Clearly defining your goals, learning from the experience of successful sites, and being open to make small changes will allow you top maximize the number of people who say 'yes' to the value proposition you offer.




Daniel Burka and Rob Goodlatte at SXSW Interactive.



At SXSW, former Digg Creative Director Daniel Burka (@dburka, now of game developer Tiny Speck), and Rob Goodlatte of Facebook gave an excellent presentation on this topic, sharing insights from successfully winning  over millions of attention-deficient and critical users who visit some of the most popular web sites online.  Here we'll share what we learned about the emergence of game mechanics in design, the 'Aha Moment!' and the power of and rewarding users while doing.



Burka began the talk by telling the story of how getting a dog in downtown San Francisco caused him to need to buy a car, outlining the new car buying experience and the exact steps the salesperson used to hook him and his girlfriend on wanting to buy the car they were test driving.



What does this have to do with optimizing a site for user interactions?  Designers build in similar 'tricks' to attract users to convert or do some desirable action like enter their personal information, sign up for a newsletter or fan page, or even make a purchase.  (You can read the entire story in the notes from the talk).



Goodlatte led his remarks by saying that 'Often we can't see the problems in our own products, because we're too focused on how we use them every day.'  As a designer or as a marketer hiring a design team, you can't always revisit your own product with fresh eyes.  This is why it is important critical to put yourself in the shoes of someone encountering your product for the first time.  As designers, we cannot be be afraid to be proven wrong, especially when designing with new users in mind.






Geni.com Homepage lets you start creating your family tree before creating an account.



In Tiny Speck's upcoming game 'Glitch,' the site first leads visitors to create a game character and give it a name, then displays the character created alongside its name.  Only then will the site ask for personal details, because now the visitor is invested in the character they have created and are more likely to convert.  This principle can be applied outside the world of gaming when working toward the goal of driving user signups.  An ideal example of this, Burka says, is the geneology site Geni.com, which allows you to start building your family tree before signing up.



The principle goes a little as follows:



Allow users to first create something of value and make incremental progress toward what your site offers, building in rewards (such as a game character or a family tree).
As quickly as possible, convince the person that whatever comes after sharing their details is worthwhile.
After the person is already invested, capture their personal information or ask for the commitment.
As the presentation slides say, 'Help people make something they'd hate to lose.'


Facebook's 'Aha! Moment'


Facebook calls the point where the user wants to commit the 'Aha! Moment.'  This is the point in time where the user understands the biggest incentive your product or service has.  By focusing user signup tests on this, Facebook saw a 5% topline increase in new user registrations (a significant number when you have 300 million users).  They learned that for Facebook, this moment is the instant they see faces and names of their friends already using the site.  As a result, one of the most successful web sites in the world is now totally redesigning their account creation process to eliminate every single distraction before new people reach that Aha Moment.


Learn from Games that have Feedback Cycles


An emerging trend in interaction design is to use game theory when designing software and online interactions.  Games have long been written to teach players more difficult manuvers as they gain more practice, rewarding them along the way.  In the same way, interaction designers can unlock complexity and funcionality as users complete more and more actions within your site.  Rewarding the mastery of features and processes keeps the users interested, challenged, and engaged.


Some examples of this in both games and on the web include:



Spore: New users are given a simple task with simple controls.  After successfully performing an action with the game character, the user is rewarded with a character that evolves, along with more sophisticated controls.
Mint.com has built instant feedback loops into their signup screen for when users enter a valid username, email address, and matching passwords.  If you enter incorrect information, a red X displays next to the field alerting the user of their mistake without going through the frustration of loading the error page.


Lead Users, Teach While Doing, and Focus on One Thing


'If you tell your users to &#39;Go do anything,&#39;' Burka says, 'the user will respond in kind with &#39;What kind of anything should I do?&#39;  By creating 'quests' as game designers call them, you can lead users down a path toward a goal, teaching them along the way.  If you're naming your quest, give it something in context; for example, in a business application, you might refer to a quest as a 'to-do list.'






Tumblr walks you through creating your first post as you are signing up.



Don't think of educating users as a side part of the experience (such as documentation or help pages), rather, make it a core part of the user experience.  For example, the LEGO&reg; Universe multiplayer online game teaches users how to perform moves as they are actually discovering new things while playing.  The designers specifically do not interrupt the process of playing to teach.  Blog service Tumblr walks new users through the process of creating a blog and a first post within 60 seconds, creating an investment in the service on the part of the user and teaching them core features.



Sometimes competing interests and objectives can confuse users, preventing them from accomplishing your desired outcome.  Like a zig-zagging checkout queue, bursting with diversions of candy and must-have impulse buys, well-meaning individuals can cannibalize the goal.  What's the answer?  'Focus on one specific thing [and do it well].  Ask &#39;what is important for this step?&#39;' says Goodlatte.  'Do a few things less well, because [on the web] you can't do everything at once.'  Define your end goal, come up with a measurement for success, and design everything on the page to optimize for the desired outcome.



Living the Process


When designing a site, discover your Aha Moment & get to it ASAP. It will communicate more than any marketing material can.  To convince management or clients of a needed change, Goodlatte suggests showing a a video of a user frustrated with your system.  This evidence says far more than any theory-based argument about a site's usability.



If you are looking to improve user interactions on your site, increase signups, or increase sales, please talk to KeyLimeTie about how the design team here can help you reach your goals.



To see Burka and Goodlatte's presentation slides, visit Designing the First 15 Minutes on Slideshare.  For extensive notes of the presentation itself, see the notes on the Facebook design blog.



]]></description> 
					<pubDate>Tue, 16 Mar 2010 20:40:42 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/3/16/sxsw-facebook-digg-on-designing-the-first-15-minutes/</guid>
				</item>
			
				<item>
					<title>SXSW Report: Reach Customers in New Ways via the iPad</title> 
					<link>http://www.newvisionusa.com/blog/2010/3/15/sxsw-reach-customers-in-new-ways-via-the-ipad/</link> 
					<description><![CDATA[
The release of the much-anticipated iPad is fast approaching.  Do you know it will explode the possibilities for ways you can interact with your customers and audience?


Now that we as an industry have seen the iPad and developers have had the opportunity to write applications for the new device, thoughts are crystalizing around just how many new ways content creators, publishers, brands, companies and organizations will have to reach, enage and serve their respective audiences.

Discussion at SXSW

On Saturday, March 13 at the South by Southwest (SXSW) Interactive conference, developers, gaming and media executives gathered on a panel to discuss these very opportunities.  The thoughts that emerge will enlighten you to the scope of the opportunity ahead.  The panel, entitled "iPad: New Opportunities for Content Creators," validated and enhanced many thoughts KeyLimeTie has been having about the device's potential.





Moderator Raven Zachary (@ravenme) set the stage by telling the audience that the pre-launch demand for the iPad is higher than it was for the original iPhone.  On the first day of pre-order sales, Apple sold 51,000 iPads within the first two hours, and 90,000 units within six hours (source).


Why such a high demand?  Today approximately 75 million people use the iPhone OS (between iPhone and iPod Touch owners) and are familiar with the multi-touch screen interface as well as the App Store.  Many of these people will enthusiastically purchase iPads and in the process bypass the learning curve because they're already familiar with how to operate it.



The Panel Discussion

The panelists each gave a perspective on the iPad based on their respective industries.  Bill Jensen (@BillyJensen), Director of New Media for The Village Voice talked about the power of the iPad to deliver well-formatted niche content.  As one of the few print weeklies that continues to see growth thanks to its local focus, Jensen seemed keen to leverage this lower cost barrier digital format to deliver more niche content.


Jensen made an illustration of the variety of content available through the largest digital medium—the web—and through print distribution channels.  A typical city street may have 10 newspaper boxes and the largest of bookstores could carry up to 1,000 magazines while the Internet boasts an almost unfathomable 109.5 million web sites.  Being a digital medium, the iPad will bring back the experience of reading elegantly typeset books fused with interactive media, while offering a selection that will dwarf bookstores.


76% of Top 5 grossing apps in the iTunes Store are games.  By 2013, panelist Shervin Peshavar (@Shervin) from the Social Gaming Network (creators of best-selling iPhone games) asserted the app market will have an estimated value of $30 billion with approximately 20 million iPads sold.  Peshavar disussed the ways the iPad's size and features will change the way people both experience and produce content.


Accoring to Peshavar, the iPad's unique value lies in four distinct factors:


    Screen real estate
    Processing power
    The immersive experience it affords
    Convenient size


"The iPad enables new usage occasions, pushes creative frontier and boosts engagement" says Peshavar. "Greater engagement leads to higher ARPU," or average revenue per user.  "The iPhone is more for media consumption, where the iPad will be for media creation," said panelist Jason Grigsby (@grigs).  Peshavar even speculated about a radical shift in human-computer interactions, musing that we may now see real-time collaboration between two people using the same device simultaneously.



Photo credit: Wired Magazine.


Katherine Tasheff (@tasheffka) of Hyperion Books said "The iPad mimics the experience of reading a book like nothing else does."  Hyperion, she says, is seeing print book sales decine thanks to e-readers.  "[The iPad and e-readers are] the first step toward the virtually paperless society we will be in about twenty years," added Jensen.  Underscoring the iPad's potential for ubiquity, Tasheff added "This is the first device both my father and I are excited about.  And I am tech support for the man, I know what's involved."

Other Observations

    The potential for two people to collaborate or play a game on the same device instead of two networked devices.
    The iPad will be used fundamentally differently than the iPhone.  The panelists are questioning the need for things like camera and GPS because people will treat the device more like a computer than a phone.
    The iPad and similar devices will likely signal the end of vertical scrolling (like on computers) as this is an artifact non-touch screen interface.  Now that we are touching the screen, we won't need to scroll.  Instead, designers and content creators will be free to build content that pages more naturally.

Looking Ahead

We've only seen the beginning of the possibilities on the iPad.  As the iPad launches, think through ways you can better serve your customers by producing an app or re-formatting the content you create for the device.  Its popularity virtually ensures someone who does what you do will be competing for peoples' attention on this new screen.  This is an opportunity and also a call to action to lead the way for your industry for providing quality interactions via the digital device where many of your customers, users, fans, and audiences will be conducting their day-to-day business, communication, and pleasure activities.




If you have questions about how your company can build an iPad application, or if you are looking for a technology partner with whom to explore this frontier, please call KeyLimeTie at 630.598.9000.

]]></description> 
					<pubDate>Mon, 15 Mar 2010 21:32:57 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/3/15/sxsw-reach-customers-in-new-ways-via-the-ipad/</guid>
				</item>
			
				<item>
					<title>KeyLimeTie at SXSW Interactive This Weekend</title> 
					<link>http://www.newvisionusa.com/blog/2010/3/12/keylimetie-at-sxsw-interactive-this-weekend/</link> 
					<description><![CDATA[
This weekend, Chris Pautsch and I are attending SXSW Interactive in Austin, TX.  We're here to promote our abilities, network with notables in the industry, and learn as much as we can while at the conference for interactive software, design, usability, and business strategy.


We'll be posting observations and knowledge that has direct applicability to our customers' businesses, and we'll also be taking what we learn back into the organization to stay cutting edge with the services we provide.


If you want to interact with us directly while at the conference, feel free to talk to us on Twitter.  Make sure you follow @KeyLimeTie, but also follow @ChrisPautsch and @TimCourtney directly.  Finally, if you want the full volume of my personal live-tweets, I've set up @TimCourtneySXSW so as not to annoy people who follow me and aren't interested in the conference.


Here are some of the things we're focusing on at the event:


    Changing user interfaces.  We're actively looking at what people are saying about the iPad, tablet PCs, mobile phones, and even purpose-built devices.  As these new devices are becoming more mainstream, new ways of interacting with customers are emerging.  We see the iPad as much more than a personal productivity and entertainment tool; it's a platform that will provide better ways to meet customers' needs where they are and when they need service.
    New Technology: Augmented Reality  These applications have been talked about for some time and are just now coming into the mainstream.  They can be as simple as a heads-up display on a fighter jet or a car to a mobile application that displays a virutal object superimposed over a video of the area directly in front of you.  Companies can use augmented reality for advertisements, navigation, complex task support, and in industrial or architectural settings to name a few (source: Wikipedia).  For an example, see ReadWriteWeb's writeup on Chevy's Augmented Reality iPhone app at SXSW.
    Making Sense of it All.  Because we live on the web every day, we know there's no shortage of information being passed about new technologies, especially regarding hot topics like social media.  But what does it all mean?  How does it apply to you, whether you're a business unit within a large enterprise or a small-midsize company?  Depending on what you do and who your customers are, you can adjust your focus on the tools that will garner the most impact.  We'll listen keenly on how some these hot tools are proving useful for different types of people, and for whom they're not useful.
    
    If you're a KeyLimeTie customer reading this, we believe in being a go-to resource on interactive web technology at the same time as being your preferred web and software developer.  We're focusing our time at SXSW to equip us to do that even better.
    

]]></description> 
					<pubDate>Sat, 13 Mar 2010 00:44:42 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/3/12/keylimetie-at-sxsw-interactive-this-weekend/</guid>
				</item>
			
				<item>
					<title>KeyLimeTie visits the Illinois Institute of Technology KnappLab</title> 
					<link>http://www.newvisionusa.com/blog/2010/3/9/keylimetie-visits-the-illinois-institute-of-technology-knapplab/</link> 
					<description><![CDATA[
On February 5, Peter Morano, Chris Grove and I attended the launch reception for the KnappLab at the Illinois Institute of Technology.  The Knapp Center, headed by Nik Rokop, has built out a mobile development lab to teach students how to develop real-world mobile applications.  The lab practices what it preaches; even the Lab's web site is a mobile site. 



At the KnappLab, students have access to two Macs and one Windows machine fully equipped with development environments for iPhone, Android, Blackberry, and Windows Mobile.  They have the chance to work on student projects or projects entrepreneurs bring to them.



We're excited to see a leading university make such an investment in young mobile app developers.  These students certainly have an open door at KeyLimeTie when they're looking for internships or full-time positions doing the work they love.



Here's a video we took giving a quick tour of the KnappLab:




]]></description> 
					<pubDate>Tue, 09 Mar 2010 21:56:07 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/3/9/keylimetie-visits-the-illinois-institute-of-technology-knapplab/</guid>
				</item>
			
				<item>
					<title>Day of Mobile Hackathon Winners</title> 
					<link>http://www.newvisionusa.com/blog/2010/3/9/day-of-mobile-hackathon-winners/</link> 
					<description><![CDATA[
On March 6th, I had the pleasure of organizing the Hackathon Contest for the Day of Mobile conference held at IIT.  Developer hackathons are contests where people compete to code the best application that meets certain criteria and win prizes and regognition for their efforts.


KeyLimeTie was the Hackathon sponsor and I served as Hackathon coordinator.  The judging panel included me and an impressive subset of the event’s speakers: Jay Freeman, David Whatley, Mark Murphy and John Haney.


The contest itself featured eleven teams who presented applications they built on the Android, iPhone and Blackberry platforms.  Seven teams walked away with cash and prizes that totaled more than $3,500, including $1,500 in cash a Netbook provided by Chicago Micro, a Nokia N900 from Earth Combers, Threadless gift certificates, $500 in books from O’Rielly Publishing and 2 Droid phones from Google.


The winning teams were:


    Best Overall App: Novarra Team
    Best Overall Runner Up: Runner up: Ravi Singh (@code4ever)
    Best Open Source App - Mike Laurence (@mikelaurence)
    Best Student App - Knapp Lab Team (IIT)
    Best iPhone App - Pek Pongpaet (@pekpongpaet) and Chad Paulson (@chadpaulson)
    Best Android App – Android Technical
    Best Blackberry App - Vibhor Goyal (@vbgoz)
    Best Design: Jon Jenkins


Congratulations, everyone!


If you’re interested in competing in the next Hackathon contest, please send me an email or DM me at @petermorano and I’ll keep you informed of the next event.

]]></description> 
					<pubDate>Tue, 09 Mar 2010 17:56:35 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/3/9/day-of-mobile-hackathon-winners/</guid>
				</item>
			
				<item>
					<title>SocialDevCamp Chicago Video Highlights</title> 
					<link>http://www.newvisionusa.com/blog/2010/3/7/socialdevcamp-chicago-video-highlights/</link> 
					<description><![CDATA[
In November of last year, KeyLimeTie sponsored the second annual SocialDevCamp conference in Chicago, co-produced by our very own Tim Courtney.  The event covers both  technical and business, strategic and cultural elements of developing social applications on the Internet, a significant part of KeyLimeTie's business.



The conference attracted notable speakers including David Recordon and Luke Shepard of Facebook, Harper Reed, Chris McAvoy, Blagica Bottigliero, Daliah Saper, and John R. Dallas, Jr.



KeyLimeTie CIO Peter Morano also led the developer Hackathon component of SocialDevCamp, a contest offering $2,000 in prizes to developers competing to build the best social applications over the course of the weekend.



Enjoy these video highlights from SocialDevCamp 2009.  We're happy to have had the opportunity to partcipate in the event.




]]></description> 
					<pubDate>Sun, 07 Mar 2010 22:19:55 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/3/7/socialdevcamp-chicago-video-highlights/</guid>
				</item>
			
				<item>
					<title>Pop&amp;quot;s Italian Beef &amp;amp; Sausage is fresh on the web with a side of KeyLimeTie</title> 
					<link>http://www.newvisionusa.com/blog/2010/3/5/pops-italian-beef-sausage-fresh-with-side-of-keylimetie/</link> 
					<description><![CDATA[






Legendary Chicago and suburban sandwich shop Pop's Italian Beef & Sausage came to KeyLimeTie when the company needed a new web site.  They wanted a site that visually communicated the BIG taste of their adored sandwiches, and KeyLimeTie served up just what they ordered.



The new Pop's Italian Beef site proudly displays their classic features bold visuals with their featured items and provides an updated motif around their classic logo, bringing Frank Radochonski's vision up-to-date on the web.  As fans of Pop's Italian Beef ourselves, we're thrilled with the opportunity to give them a fresh look online.
]]></description> 
					<pubDate>Fri, 05 Mar 2010 21:46:15 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/3/5/pops-italian-beef-sausage-fresh-with-side-of-keylimetie/</guid>
				</item>
			
				<item>
					<title>Three Tech Events Next Week: SocialDevCamp Party, MobileX Chicago, and Day of Mobile</title> 
					<link>http://www.newvisionusa.com/blog/2010/2/24/socialdevcamp-party-mobilex-chicago-and-day-of-mobile/</link> 
					<description><![CDATA[
KeyLimeTie is sponsoring both the SocialDevCamp TechThursday Mashup Party and the Day of Mobile conference next week.  We also recently learned of a second Mobile event for entrepreneurs and developers; MobileX Chicago. If you're in the area and interested in social applications and mobile development, you'll want to add these events to your calendar.

SocialDevCamp TechThursday Mashup Party
Thursday March 4, 6-9pm, OfficePort CHI






Organizers of the annual SocialDevCamp Conference (including KeyLimeTie's Tim Courtney and Peter Morano) are hosting an after-hours party for attendees to mingle, re-connect, see video highlights and hear from Hackathon teams who have continued developing the applications they built at the 2009 conference into something bigger.


KeyLimeTie is sponsoring the party.  Food and drinks will be provided, and a $5.00 cover charge will be donated to the YWCA TechGYRLS program, an innovative, after-school programs are designed to broaden girls' knowledge and interest in science, technology, engineering, and mathematics fields.



RSVP for the SocialDevCamp TechThursday Mashup Party Here.


MobileX Chicago
Friday March 5, 9:00am - 6:00pm, Doubletree Hotel






MobileX Chicago is a one-day conference aimed at entrepreneurs, developers, investors, industry professionals, and mobile enthusiasts.  It features four tracks of breakout sessions for the target audiences and topics of  “Mobile Developers”, “Entrepreneurs/Investors/Enthusiasts”, and “Mobile Marketing," along with an introductory iPhone development track.


Learn more and register to attend on the MobileX Chicago web site.

Day of Mobile
Saturday March 6, 8:00am - 6:00pm, Illinois Institute of Technology






Day of Mobile will focus on iPhone, Android, Blackberry, and Windows Mobile development.  Jay Freeman, creator of the Cydia Store will keynote, and KeyLimeTie's Chris Grove will present on "Strategies for multi-platform applications."  KeyLimeTie's Peter Morano is heading the Developer Hackathon, and the company is sponsoring Day of Mobile.


Learn more and register to attend on the Day of Mobile web site.

]]></description> 
					<pubDate>Wed, 24 Feb 2010 17:30:06 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/2/24/socialdevcamp-party-mobilex-chicago-and-day-of-mobile/</guid>
				</item>
			
				<item>
					<title>ScaleWell Grant Offers New Way to Look at Investing in Your Business</title> 
					<link>http://www.newvisionusa.com/blog/2010/2/10/scalewell-grant/</link> 
					<description><![CDATA[






Are budgets tight at your company?  Many places they are.  Whether you're a Fortune company or a bootstrapped entrepreneur, chances are you have a list of things that you need and are holding off on purchasing something you need to grow your business.



ScaleWell, a new quarterly grant given by entrepreneurs for entrepreneurs, aims to change the way companies look at what it takes to gain traction for one's business.  By giving away $1000 per quarter (no strings attached) to one company, ScaleWell is encouraging companies to look at ways to grow by funding their experience.  According to the ScaleWell web site, it's a way to enable the recipient to answer questions like 'How many customers I acquire for $1000?' or 'How much closer to profitability can I get by investing this small amount?'



Moreover, the buzz ScaleWell is generating in the Chicago business community, the region KeyLimeTie calls home, can serve to inspire you no matter your role--whether you are a solo entrepreneur or an executive at a large company.  Take a fresh look at the how you can grow or improve by investing a small, finite amount of money to fund an action or make a purchase that will gain you traction.  Once you're done, measure the results.  Whether this particular experiment succeeds or fails, you're learning along the way and taking positive steps forward.



ScaleWell was founded by Andy Angelos, Ziad Hussain, and Sean Corbett--each entrepreneurs looking to scale their own businesses while helping others do the same.  ScaleWell is funded by Trustees; Trustees each donate $100 and volunteer to advise the grant recipient.  Trustees decide on the award recipient from applications received each quarter.



KeyLimeTie came to support ScaleWell through CIO Peter Morano.  Internally, Pete has been instrumental in applying similar ideas through the KeyLimeTie Labs innovation group, and saw this as an opportunity to lend support to another business in the larger community.



How could you scale your business by investing $1000?  You don't have to be a ScaleWell recipient to do this.  The budget constraint makes it realistic to think and act this way.  With $1000, here are some of the things you could do to scale:



Video camera to take videos and share online to attract more customers.
Purchase costly software or hardware that would enable you to do more, or increase efficiency.
Invest in a graphic design for your company or product that improves your presentation and allows you to sell more.
Build enhancements to your web site, or purchase hosting for a new web site for a year.
Hire a C-Level consultant to work with you on strategic alignment within your company or group.
Sponsor an event that will gain you exposure and put you on the map in a market or a community.



How will you scale your business well?  KeyLimeTie wants to know.  Leave a comment below!




Update: The first ScaleWell grant was given to Michael Una for his business, Unatronics, that sells handmade electronic musical instruments.  He will use the grant money to develop additional products he can sell.
]]></description> 
					<pubDate>Wed, 10 Feb 2010 16:45:50 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/2/10/scalewell-grant/</guid>
				</item>
			
				<item>
					<title>Apple&amp;quot;s iPad Opens Opportunities for New Applications and Interactions</title> 
					<link>http://www.newvisionusa.com/blog/2010/1/29/apple-ipad-opens-opportunities/</link> 
					<description><![CDATA[




Wednesday's much anticipated iPad tablet device appears to be, at first glance, a scaled-up version of the iPhone.  By releasing the iPad, Apple is carving out a new category of device, and a new way people will interact with computers.  Over the past ten years, there have been many unsuccessful attempts at building a widely-adopted tablet PC, so of course there is skepticism.



It would be easy to dismiss this device as nothing special, before considering how the App Store made the iPhone and the iPod Touch into the outstandingly popular devices they are today.  At this point, we've just seen what Apple (and a select group from the developer community) have done with the iPad.  The real applications are yet to come, thanks to the limitless creativity of the iPhone&mdash;and now iPad&mdash;developer community, including companies like KeyLimeTie.



Further, industry reporters like TechCrunch's MG Seigler explain why the iPad will succeed; its target audience is the 75 million iPhone and iPod Touch users.  These people will know how to use the iPad right out of the gate.



Those people will also grow more and more accustomed to a web you can touch, with full web pages now practical on the iPad screen and people used to pinching and swiping their way around your site, making purchases, downloading documents, playing games, writing comments.  The web as we know it will evolve, interaction design will shift, as the iPad and other tablets capture our share of screen time.



Many people will opt to leave the laptop at home and use the iPad for communications, eBook reading, entertainment, and even productivity when larger screens and computing power aren't required.  But, imagine for a moment a restaurant menu displayed on an iPad, or iPads being used to process transactions in a retail store.  That, of course, is just the start.



Here are some others' thoughts on the iPad's viability:



TechCrunch: Top 10 Reasons The Apple iPad Will Put Amazon’s Kindle Out of Business
Arun Shroff: Top 10 Reasons Why the iPad will NOT Kill the Kindle
TechCrunch: The iPad Is Like Holding The Future. But Only Because I Graduated From iPhone School
TechCrunch: Pictures: The iPad Being Manhandled



Like what we have to say?  Follow @KeyLimeTie on Twitter or join our Facebook fan page for continued updates.
]]></description> 
					<pubDate>Fri, 29 Jan 2010 17:16:02 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/1/29/apple-ipad-opens-opportunities/</guid>
				</item>
			
				<item>
					<title>How to &quot;Pull a Groupon&quot; and make more of your existing business</title> 
					<link>http://www.newvisionusa.com/blog/2010/1/25/how-to-pull-a-groupon/</link> 
					<description><![CDATA[




This past weekend I attended a lunch presentation by Andrew Mason of Groupon, which he gave to participants in the Chicago Urban League's NextONE Program.  I was invited by great friend John (JR) Dallas and welcomed by the Urban League staff.



Groupon, if you are not familiar, is widely regarded as Chicago's biggest tech success story of 2009.  The web site allows people to buy one steeply discounted offer each day, provided enough other people also buy the offer so the retailer has a critical mass of new customers.  They achieved profitability in the spring of 09 and closed on $25mm of funding late last year, when they admittedly didn't need the money.  Now they're on target for $100mm in revenues in 2010.



It would be too easy to romanticize the above.  Mason and team came up with an idea, coded it in a month, and it became a runaway success.  But just looking at their history as Groupon would be denying some important lessons about innovation and persistence.




ThePoint.com: Groupon's predecessor.



Before Groupon was (and still is) a web site called The Point, which Mason started in 2006.  The Point was built to allow people to achieve critical mass on a political or social issue before taking action, to ensure the action they take (a donation, a protest, a mass action, etc) had an impact.  The site itself didn't take off to the founders' expectations because of a lack of focus; they were providing a platform for an undefined audience to take action on any potential issue.



The software and concept that powered The Point now powers Groupon.  In late 2008, the team worked for a month to get the product off the ground, with very limited features and simple e-commerce capabilities, and the new, focused idea stuck.



Among many others, I was able to pull these lessons from Andrew's talk and knowing the Groupon story:



They weren't afraid to act, try something different, and risk failure.  Groupon was a 30-day diversion from working on The Point.  If it failed, they wouldn't be out a lot of time, money, or emotional investment.
They took an existing asset, the software engine powering The Point, and applied it in a different way.  They learned that this new application had considerably more monetary value than the original.
Mason and the team continually improve Groupon by creating a product they themselves want to use, and add features and improvements based upon problems they themselves have.  Their philosophy, 'If I have this problem, chances are someone else does, too.'



Take a look inside your business as we take a look inside ours.  Do you have the opportunity to 'Pull a Groupon?'  Perhaps you have software systems that are built for one purpose that you could refactor for a different one, or maybe you could deliver your services to a completely new audience.  Chances are you are creating a product or service right now that could either make better use of by-products created or could be applied in a completely different way.



If this article strikes a chord with you, please let us know in the comments.  If you see successes from 'pulling a Groupon,' please let us know (and Groupon too, I'm sure they'd appreciate it)!  Finally, if there is an opportunity for KeyLimeTie to assist developing the software needed for you to accomplish your goals, please drop us a line.
]]></description> 
					<pubDate>Mon, 25 Jan 2010 16:28:14 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/1/25/how-to-pull-a-groupon/</guid>
				</item>
			
				<item>
					<title>How the Haiti SMS fundraiser became a tipping point for text campaigns</title> 
					<link>http://www.newvisionusa.com/blog/2010/1/22/how-the-haiti-sms-fundraiser-became-a-tipping-point-for-text-campaigns/</link> 
					<description><![CDATA[




In the aftermath of the Haiti earthquake last week, amidst the rescue effort headlines, is a robust discussion in the digital marketing industry around the power of text message campaigns to quickly mobilize people while creating an audience.  At one week after the earthquake, the American Red Cross's text message (SMS) campaign alone has raised over $24 million dollars for the relief effort.



The simple campaign asks people to text the word 'Haiti' to short code 90999.  Once the user answers the confirmation message, a $10 charge is added to their mobile bill that month.  After you confirm, you're again prompted; this time, asking if you would like to receive Red Cross alerts straight to your mobile phone.



That's right.  The Red Cross raised $24 million dollars in one week from 2.4 million individual $10 donations by people with mobile phones.  Why did it work?  The message got out when the disaster was getting the most coverage and offered donors instant gratification in donating via an unprecedentedly simple method.



The campaign itself is viral because it's short, timely, memorable, and actionable.  You can easily tell someone 'Text 'Haiti' to 90999 to donate $10 to the relief effort' in a text message, tweet, status update, a phone call, or an email.  Using text and social networking technology, the message has potential to spread exponentially, and this one did.  As a result, expect to see more charities and relief agencies using SMS for fundraisers when time is of the essence.



The larger lesson for businesses amidst the tragedy that prompted the campaign is great.  Text messaging campaigns have taken the 'impulse buy' and freed it from the four walls of a retail store.  Now people can respond to an ad campaign, make a quick purchase, or make a quick donation right where they are, with the same convenience of chatting with a friend.



Further, you can build opt-in lists and notify people of promotions, sales, or send news alerts that will reach them instantly in the future.  Many short code providers have CRM systems so you can manage customer relationships and even integrate their text profiles with their online profiles in your main e-commerce or CRM system.



While SMS short codes have been around for years, the tragedy in Haiti is being marked by the industry as an event that has now proven the critical mass--and the effectiveness--of SMS response campaigns.  If you are curious about ways your business can utilize short codes and integrate them with the rest of your digital strategy, talk to KeyLimeTie.  Or, if you'd like to read up on short codes, see this informative article on GigaOM.
]]></description> 
					<pubDate>Sat, 23 Jan 2010 00:01:41 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/1/22/how-the-haiti-sms-fundraiser-became-a-tipping-point-for-text-campaigns/</guid>
				</item>
			
				<item>
					<title>What Google&amp;quot;s Local &amp;amp; Mobile Search Push Means to Your Small Business</title> 
					<link>http://www.newvisionusa.com/blog/2010/1/20/what-googles-local-mobile-search-push-means-to-your-small-business/</link> 
					<description><![CDATA[




Last week I found this decal on a store front while in San Francisco.  After searching the web to learn about the program, I learned Google is focusing more and more on local business and location-based search as a new revenue stream, and improving how companies advertise their businesses.



Google launched a pilot program where they sent out 100,000 of these window decals to the most popular local businesses listed on their web site.  The stickers contain a QR code (short for 'Quick Response') so passersby can snap a quick photo of the code and visit the Google Local listing for that company.  There they can find business information and aggregated reviews.



This helps people learn more about the businesses they walk by every day.  They might find a copy shop or a caf&eacute;, and be able to see what others think about the place before they buy.  Or, they could save information about a location for later, or share with a friend, by sharing the local search link that comes up in their phone's browser.




Google Local result for QR code.



What does this mean for small businesses?  It means people will be looking up your company more and more on their phones.  Here are two excellent ways to ensure they get the best information they can about you:



Sign up for and update your Google Local Business Center listings to add custom information to your local search listings, including local coupons.  Use this also to analyze who is searching for your business and where they are located, to aid in your marketing efforts.

Make sure your web site is mobile-optimized.  The best way to do this is to have your web development firm build a mobile stylesheet for your web site.  With a mobile stylesheet, people visiting your site via their phone's browser will see all of the text and images optimized for the small browser.  Mobile web sites are specifically designed to present relevant, location- and time-sensitive information to people seeking you via their phones.



If you would like KeyLimeTie to optimize your web presence for mobile, or if you have questions about Google's Local Business Center, give me a call or reach out to @KeyLimeTie on Twitter.  We'll be happy to help.
]]></description> 
					<pubDate>Wed, 20 Jan 2010 18:11:00 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/1/20/what-googles-local-mobile-search-push-means-to-your-small-business/</guid>
				</item>
			
				<item>
					<title>KeyLimeTie Sponsoring, Presenting at Day of Mobile Conference on Mobile Application Development</title> 
					<link>http://www.newvisionusa.com/blog/2010/1/18/keylimetie-sponsoring-presenting-at-day-of-mobile-conference/</link> 
					<description><![CDATA[

We’re excited to play a part in Tech in the Middle’s upcoming Day of Mobile conference, to be held at IIT on Saturday, March 6th.  The conference will feature 100 and 300 level talks running concurrently covering four development platforms; Android, iPhone, Windows Mobile, and Blackberry, along with hands-on workshops by subject matter experts.




KeyLimeTie CIO Peter Morano is coordinating Day of Mobile’s Hackathon contest, with over $3,500 in prizes that will be awarded to people who develop the best mobile apps leading up to the event.  Presentations and judging will take place following the keynote speech in the afternoon.




Also, KeyLimeTie’s Chris Grove, CTO and senior mobile application developer, will give a talk entitled “Strategies for Developing Multi-Platform Apps.”  He’ll explain how careful planning can overcome differences in frameworks, operating systems, and languages, while sharing proven strategies for cross-platform mobile development that will guide your design process and maximize your ROI.



If you’re looking to accelerate your mobile development knowledge, visit the Day of Mobile site and register for the conference.  See you there!
]]></description> 
					<pubDate>Mon, 18 Jan 2010 17:35:36 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/1/18/keylimetie-sponsoring-presenting-at-day-of-mobile-conference/</guid>
				</item>
			
				<item>
					<title>Google Releases NexusOne, Adds Momentum and Focus for App Developers</title> 
					<link>http://www.newvisionusa.com/blog/2010/1/6/google-releases-nexusone-adds-momentum-and-focus-for-app-developers/</link> 
					<description><![CDATA[
Yesterday, Google boldly released the Google-branded NexusOne phone (manufactured by HTC), the closest device to date to compete with the iPhone in terms of features and flexibility.  For those looking to enter the mobile application marketplace, this adds some serious momentum to Android OS's expansion into the smartphone market.



2010 will no doubt be a year of aggressive innovation as we start to see the power shift in the mobile market from the carriers like AT&T, Verizon, and T-Mobile to carriers and manufacturers like Apple, Google, Motorola, and HTC.


While the iPhone paved the way for consumers choose a handset first before a carrier, AT&T's exclusivity in the US limited choice.  The Motorola Droid created similar demand, and remains tethered to Verizon.  Now, Google has taken the next step by making the NexusOne available either subsidized (with a 2-year T-Mobile contract) or unlocked for any network (with the expectation of adding other networks in the future).


What does this mean for companies and brands looking to get into the app market?  Greater focus on Android and iPhone as the platforms of choice.  The Android Market's 20,000 apps, along with the iPhone's 90,000+ apps far overshadow both BlackBerry's and Palm's 4,000 and 1,000 apps, respectively (source: BlackBerry App World and BillShrink).  For companies and developers looking to build apps, focus on Android and iPhone.

]]></description> 
					<pubDate>Wed, 06 Jan 2010 17:35:10 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/1/6/google-releases-nexusone-adds-momentum-and-focus-for-app-developers/</guid>
				</item>
			
				<item>
					<title>New iPod Touch Users &amp;amp; Android Growth Represent Opportunities for Brands</title> 
					<link>http://www.newvisionusa.com/blog/2010/1/4/new-ipod-touch-users-android-growth-represent-opportunities-for-brands/</link> 
					<description><![CDATA[

AdMob, the mobile analytics firm acquired by Google last year for $750 million, today reported that ad requests from iPod Touch users were up 96% on December 26.  This means that a lot of new people received iPod touches this year, increasing the potential user base for iPhone and iPod Touch applications by a significant amount.



At the same time, AdMob data indicates momentum is building around Android phones as they continue to penetrate the market.  While the iPhone remains wildly more popular, growth has slowed in the US while Android trends upward.  



If you’re looking to build an application that drives engagement and revenue, the iPhone and iPod Touch will continue to represent significant opportunities for a long time to come.  However, keep an eye on Android as we are sure to see significant competition in 2010.



Interested in either iPhone or Android applications?  Give us a call at KeyLimeTie to discuss your plans.  630.598.9000.
]]></description> 
					<pubDate>Mon, 04 Jan 2010 16:57:01 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/1/4/new-ipod-touch-users-android-growth-represent-opportunities-for-brands/</guid>
				</item>
			
				<item>
					<title>Sloan Valve receives press for Water Savings Calculator iPhone Application by KeyLimeTie</title> 
					<link>http://www.newvisionusa.com/blog/2010/1/4/sloan-valve-receives-press-for-water-savings-calculator-iphone-application-by-keylimetie/</link> 
					<description><![CDATA[
Last week, client Sloan Valve received press in CONTRACTORmag.com for the new Water Savings Calculator iPhone application (iTunes Link), developed by KeyLimeTie.  The article discusses ways the manufacturer is allowing facilities managers, architects, engineers, plumbers, and others to immediately estimate water usage in a building and calculate potential savings they would incur by using Sloan products.



Sloan is using the app as a part of their continued effort to position the brand as a green manufacturer, concerned with ensuring customers and end users are making the most efficient use of water resources possible.



Read the CONTRACTORmag.com article here.
]]></description> 
					<pubDate>Mon, 04 Jan 2010 15:28:34 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2010/1/4/sloan-valve-receives-press-for-water-savings-calculator-iphone-application-by-keylimetie/</guid>
				</item>
			
				<item>
					<title>Sloan Valve releases Water Savings Calculator iPhone App</title> 
					<link>http://www.newvisionusa.com/blog/2009/11/10/sloan-valve-releases-water-savings-calculator-iphone-app/</link> 
					<description><![CDATA[

In support of their continued focus on green initiatives, Sloan Valve contracted KeyLimeTie to design and develop a Water Savings Calculator for the iPhone platform.  We’re pleased to announce the app is now available through the iTunes App Store as the team at Sloan heads to Phoenix, AZ to exhibit at the GreenBuild Conference & Expo, where former Vice President Al Gore will be delivering the keynote address.



Sloan shared with us their desire to bring this unique utility app to the iPhone so that architects, engineers, and contractors who select plumbing fixtures will be informed of the water savings—both financial and volume—that Sloan products provide over industry benchmarks.  KeyLimeTie used this information to develop a simple iPhone application that allows users to enter criteria about a building and its occupants, along with preferred Sloan fixtures.  The app then generates statistical information regarding the amount of water and money that can be saved by utilizing the selected Sloan products.



This unique mobile application makes this information easily accessible in the field, and reinforces Sloan’s position as a leader in ecological building practices.



Sloan will be exhibiting the iPhone app this week at the GreenBuild Conference & Expo.  Congratulations, Sloan, on the release.  KeyLimeTie is honored to have been a part of this project.



Click here to download the free Water Savings Calculator on iTunes.
]]></description> 
					<pubDate>Tue, 10 Nov 2009 22:24:43 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2009/11/10/sloan-valve-releases-water-savings-calculator-iphone-app/</guid>
				</item>
			
				<item>
					<title>The Secret&amp;amp;trade; Daily Teachings App selected as &amp;amp;quot;New and Noteworthy&amp;amp;quot; on the App Store</title> 
					<link>http://www.newvisionusa.com/blog/2009/11/4/the-secret-trade-daily-teachings-app-selected-as-quot-new-and-noteworthy-quot-on-the-app-store/</link> 
					<description><![CDATA[

We’ve enjoyed watching the continued success of an iPhone app we built, 'The Secret&trade; Daily Teachings,' in the iTunes store.  Yesterday the app was selected as 'New and Noteworthy' and now appears on the App Store homepage in iTunes.



This builds upon last week's success; within 48 hours of the app's release, it rose to the #1 app within the Lifestyle section.  Now a week after release, it still rests as the #2 app in the category.  



Congratulations again to the  team at The Secret and Prime Time Productions!  We're honored to be a part of this project and looking forward to a continued partnership.
]]></description> 
					<pubDate>Thu, 05 Nov 2009 05:26:23 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2009/11/4/the-secret-trade-daily-teachings-app-selected-as-quot-new-and-noteworthy-quot-on-the-app-store/</guid>
				</item>
			
				<item>
					<title>KeyLimeTie sponsors and jumps in feet-first to SocialDevCamp Chicago 2009</title> 
					<link>http://www.newvisionusa.com/blog/2009/11/2/keylimetie-sponsors-and-jumps-in-feet-first-to-socialdevcamp-chicago-2009/</link> 
					<description><![CDATA[

This weekend, KeyLimeTie has the distinct honor of sponsoring SocialDevCamp Chicago, an unconference being held at the Illinois Institute of Technology on November 7 & 8 for developers and marketers passionate about the software that powers social networking technology.  Having built web sites for the likes of Illinois gubernatorial candidate Adam Andrzejewski, E! News anchor Giuliana Rancic, and even niche social network GimmePleez, we have a definite interest in seeing these technologies play out so we can stay on the forefront of enabling social media on the web.


Our very own Tim Courtney started SocialDevCamp Chicago last year, and is co-chairing the event with Andy Angelos of Get Talked About.  It’s been great getting an inside peek at watching the event come together.  Peter Morano, our CTO, stepped up and has been coordinating the Hackathon developer contest running at SocialDevCamp as well (There’s even rumor of a KeyLimeTie team entering the competition, so watch out!).


The event has an impressive lineup of speakers.  Facebook’s senior open programs manager, David Recordon, is delivering the Saturday morning keynote, and Google is giving a Wave demo on Sunday morning.  Area leaders including Harper Reed, Chris McAvoy, Alex Bratton, and John R. Dallas, Jr. are covering both the technical and the business side of social applications in the afternoon sessions, and attendees who want to present will be able to self-organize and talk in the Unconference track both days as well.


If you’re a developer or a social marketer, you should attend SocialDevCamp this weekend.  There’s a lot packed into the two days, especially for a free event.  However, registration is almost full, so make sure you register if you want to attend.  Visit the SocialDevCamp Chicago web site for complete information and to register.

]]></description> 
					<pubDate>Mon, 02 Nov 2009 22:58:29 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2009/11/2/keylimetie-sponsors-and-jumps-in-feet-first-to-socialdevcamp-chicago-2009/</guid>
				</item>
			
				<item>
					<title>Early Success for KeyLimeTie iPhone application client; The Secret&amp;amp;trade; Daily Teachings</title> 
					<link>http://www.newvisionusa.com/blog/2009/10/29/early-success-for-keylimetie-iphone-application-client-the-secret-trade-daily-teachings/</link> 
					<description><![CDATA[

We are thrilled to congratulate KeyLimeTie client Prime Time Productions, owners of the popular book and film The Secret&trade; on their early success with their new Daily Teachings iPhone application (App Store Link).  Within 48 hours of its release on October 27, the app skyrocketed to the #1 paid app in the Lifestyle category, and #49 overall!  Congrats!



KeyLimeTie was contracted to build the application, which allows users to read a daily affirmation or teaching from The Secret, highlight favorites, and share with friends.  The app also allows people to set daily alerts on their phones, reminding them to read their daily teaching.



One of our favorite features on the app is its use of the iPhone’s Push Notification service, which Apple released earlier this year through the iPhone OS 3.0.  Push notifications allow app authors to send content to users (in this case a daily reminder), which results in more engaged app users over the long term.  With brands and developers seeking ways to keep users engaged, whether to increase impressions or generate additional revenue, Push Notifications has been a welcome feature.



To power the alerts, we used our iLime service, a publicly available service for iPhone developers that enables them to easily deliver Push Notifications and In App Purchase content to their users.  For us, it ended up being the perfect synergy between our service and product businesses, an  example of what we do best.



You can purchase The Secret™ Daily Teachings on the iTunes App store at http://appsto.re/dailyteachings. 
]]></description> 
					<pubDate>Thu, 29 Oct 2009 20:49:28 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2009/10/29/early-success-for-keylimetie-iphone-application-client-the-secret-trade-daily-teachings/</guid>
				</item>
			
				<item>
					<title>Three things to prepare for Google Caffeine</title> 
					<link>http://www.newvisionusa.com/blog/2009/9/1/three-things-to-prepare-for-google-caffeine/</link> 
					<description><![CDATA[
Google recently announced the latest version of its search engine, called “Caffeine” (a Googler friend recently told me of how they name software versions creative names, “Cupcake” is the code name for a new Android version).



For all of the buzz about Bing, Microsoft’s new search engine slowed its marketshare gains in August, growing only 0.23% from July to an August search market share of 9.65% (according to this release by StatCounter.com).  Google gained 0.29% to a total share of 77.83%.  Clearly, Google will remain the dominant force in search for a long time to come.  Stay focused on growing your rankings on Google while keeping a casual eye on Bing and Yahoo with their new search partnership.



The primary differences between the current search engine and Google Caffeine?  Speed and real-time search results, according to Andy Beal's Marketing Pilgrim article.  Now that aTwitter Search is becoming known for delivering real-time results about conversations happening right now, Google's new results will begin prioritizing current results as well.  The search giant has thrown more horses behind your search, too, with search results now coming to you up to twice as fast, according to speed tests.



Here’s what to do about Google Caffeine:



Compare your old rankings with your new ones using this comparison site ( http://www.comparecaffeine.com/search-com.php).
Read what the experts have to say about making sure your rankings stay high:


360i: 6 Things to Expect if Google Decaf Gets a “Caffeine” Boost
Mashable: Google Caffeine: A Detailed Test of the New Google
PCWorld: Google Caffeine FAQ: Your Questions Answered


Work with your SEO vendor to be sure your sites are up to date.  Even if you don’t engage them on a full project, consider hiring them for an hour to review changes you’ve made and allow them to communicate their consolidated knowledge on the topic (they read this stuff all day and use it in the field).
If you’re already a KeyLimeTie client, or if you don’t yet work with a dedicated SEO team, give us a call and ask about staying optimized for Caffeine.



Extra Credit: If you wish, you can also help Google test the new search engine by following the steps in Google’s own blog post.
]]></description> 
					<pubDate>Tue, 01 Sep 2009 16:38:55 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2009/9/1/three-things-to-prepare-for-google-caffeine/</guid>
				</item>
			
				<item>
					<title>Twitterizer Simplifies .NET Integration with Twitter</title> 
					<link>http://www.newvisionusa.com/blog/2009/5/1/twitterizer-simplifies-net-integration-with-twitter/</link> 
					<description><![CDATA[As Twitter continues to grow in popularity, integrating your applications will become an essential step in effectively reaching a community. Fortunately, connecting your .NET applications with Twitter can be a trivial task if you use the Twitterizer Framework, a .NET 2.0 library that provides an easy to use, object-oriented interface to twitter's online API. This article and sample application will show you how to take advantage of this interface. Sample ApplicationGetting Started There are several steps required to get started:1. Register your application with Twitter: http://twitter.com/oauth_clients/new. You can skip this step, but any status posts your application makes to Twitter will appear as coming from Twitterizer. 2. Download the Twitterizer Framework:  http://code.google.com/p/twitterizer/ and add a reference in your project.Taking Control of TwitterThe Twitter API allows programmatic access to updating, searching and deleting a user’s status, adding and removing friends and followers, and direct messaging other others. The following examples show some of these operations.Establish a ConnectionTo establish a connection, you instantiate the Twitter object as shown below (If you skip step one above, you do not need to supply the Source parameter).
	function ToggleSourceCodeRegion(regionNumber)
	{
		var divRegion = document.getElementById('region' + regionNumber);
		var divRegionBlock = document.getElementById('regionBlock' + regionNumber);

		if (divRegion.style.display == 'inline')
		{
			divRegion.style.display = 'none';
			divRegionBlock.style.display = 'inline';
		}
		else
		{
			divRegion.style.display = 'inline';
			divRegionBlock.style.display = 'none';
		}
	}
                Twitter twit = null;
                twit = new Twitter("twitteruser", "twitterpwd", "app_source");Updating Your Status
	function ToggleSourceCodeRegion(regionNumber)
	{
		var divRegion = document.getElementById('region' + regionNumber);
		var divRegionBlock = document.getElementById('regionBlock' + regionNumber);

		if (divRegion.style.display == 'inline')
		{
			divRegion.style.display = 'none';
			divRegionBlock.style.display = 'inline';
		}
		else
		{
			divRegion.style.display = 'inline';
			divRegionBlock.style.display = 'none';
		}
	}
                TwitterStatus ts = twit.Status.Update("My Message");Search and Destroy
	function ToggleSourceCodeRegion(regionNumber)
	{
		var divRegion = document.getElementById('region' + regionNumber);
		var divRegionBlock = document.getElementById('regionBlock' + regionNumber);

		if (divRegion.style.display == 'inline')
		{
			divRegion.style.display = 'none';
			divRegionBlock.style.display = 'inline';
		}
		else
		{
			divRegion.style.display = 'inline';
			divRegionBlock.style.display = 'none';
		}
	}
                TwitterStatusCollection myStatus = twit.Status.UserTimeline();
                Console.WriteLine("My Status");
                foreach (TwitterStatus status in myStatus)
                {
                    Console.WriteLine(status.Text);

                    if (status.Text == "My Message")
                        twit.Status.Destroy(status.ID);
                }
                Console.WriteLine();Search for Another User’s StatusTo get the status entries for another user, you can use the TwitterParameters object, setting optional parameter values.
	function ToggleSourceCodeRegion(regionNumber)
	{
		var divRegion = document.getElementById('region' + regionNumber);
		var divRegionBlock = document.getElementById('regionBlock' + regionNumber);

		if (divRegion.style.display == 'inline')
		{
			divRegion.style.display = 'none';
			divRegionBlock.style.display = 'inline';
		}
		else
		{
			divRegion.style.display = 'inline';
			divRegionBlock.style.display = 'none';
		}
	}
                TwitterParameters paras = new TwitterParameters();
                paras.Add(TwitterParameterNames.ID, UsersID);
                paras.Add(TwitterParameterNames.Since,
                     Convert.ToDateTime("1/1/2009"));
                paras.Add(TwitterParameterNames.Page, 1);
                paras.Add(TwitterParameterNames.Count, 5);
                paras.Add(TwitterParameterNames.SinceID, 1);

                TwitterStatusCollection usersStatus =
                      twit.Status.UserTimeline(paras);

                Console.WriteLine("Status For Other User");
                foreach (TwitterStatus status in usersStatus)
                {
                    Console.WriteLine(string.Format("Status For User {0}: {1}", 
                          status.TwitterUser.ScreenName, status.Text));
                }
                Console.WriteLine();Finding Out About Your Friends (and ditching one)
	function ToggleSourceCodeRegion(regionNumber)
	{
		var divRegion = document.getElementById('region' + regionNumber);
		var divRegionBlock = document.getElementById('regionBlock' + regionNumber);

		if (divRegion.style.display == 'inline')
		{
			divRegion.style.display = 'none';
			divRegionBlock.style.display = 'inline';
		}
		else
		{
			divRegion.style.display = 'inline';
			divRegionBlock.style.display = 'none';
		}
	}
                TwitterUserCollection friends = twit.User.Friends();
                foreach (TwitterUser friend in friends)
                {
                    Console.WriteLine(friend.ScreenName.ToString());
                    Console.WriteLine(friend.Status.Text.ToString());
                    Console.WriteLine(friend.NumberOfFollowers.ToString());

                    //Remove a friend
                    friends.Remove(friend);
                }Getting Your Friend’s Status
	function ToggleSourceCodeRegion(regionNumber)
	{
		var divRegion = document.getElementById('region' + regionNumber);
		var divRegionBlock = document.getElementById('regionBlock' + regionNumber);

		if (divRegion.style.display == 'inline')
		{
			divRegion.style.display = 'none';
			divRegionBlock.style.display = 'inline';
		}
		else
		{
			divRegion.style.display = 'inline';
			divRegionBlock.style.display = 'none';
		}
	}
                paras = new TwitterParameters();
                paras.Add(TwitterParameterNames.ID, 36867666);

                TwitterStatusCollection friendsPosts =
                     twit.Status.FriendsTimeline(paras);

                Console.WriteLine("Status For Friends");
                foreach (TwitterStatus status in friendsPosts)
                {
                    if (status.TwitterUser.ScreenName != "petermorano")
                        Console.WriteLine(string.Format("Status For Friend {0}: {1}",
                              status.TwitterUser.ScreenName, status.Text));
                }Following Someone
	function ToggleSourceCodeRegion(regionNumber)
	{
		var divRegion = document.getElementById('region' + regionNumber);
		var divRegionBlock = document.getElementById('regionBlock' + regionNumber);

		if (divRegion.style.display == 'inline')
		{
			divRegion.style.display = 'none';
			divRegionBlock.style.display = 'inline';
		}
		else
		{
			divRegion.style.display = 'inline';
			divRegionBlock.style.display = 'none';
		}
	}
                TwitterUser user = new TwitterUser();
                user.ScreenName = "aplusk";
                twit.User.FollowUser(user);Locating Followers
	function ToggleSourceCodeRegion(regionNumber)
	{
		var divRegion = document.getElementById('region' + regionNumber);
		var divRegionBlock = document.getElementById('regionBlock' + regionNumber);

		if (divRegion.style.display == 'inline')
		{
			divRegion.style.display = 'none';
			divRegionBlock.style.display = 'inline';
		}
		else
		{
			divRegion.style.display = 'inline';
			divRegionBlock.style.display = 'none';
		}
	}
                TwitterUserCollection followers = twit.User.Followers();
                foreach (TwitterUser follower in followers)
                {
                    Console.WriteLine(follower.ScreenName.ToString());
                    Console.WriteLine(follower.Status.Text.ToString());
                    Console.WriteLine(follower.NumberOfFollowers.ToString());
                }Handling ErrorsThe framework also includes a TwitterizerException object that returns exception and request data from the Twitter API. Exceptions can be thrown for a number of reasons, including failure to authenticate, trying to add a friend that is already a friend, and trying to alter someone else's status. The object contains a RequestData child object that contains the details of the original request.

	function ToggleSourceCodeRegion(regionNumber)
	{
		var divRegion = document.getElementById('region' + regionNumber);
		var divRegionBlock = document.getElementById('regionBlock' + regionNumber);

		if (divRegion.style.display == 'inline')
		{
			divRegion.style.display = 'none';
			divRegionBlock.style.display = 'inline';
		}
		else
		{
			divRegion.style.display = 'inline';
			divRegionBlock.style.display = 'none';
		}
	}
            catch (TwitterizerException tex)
            {
                string message = string.Format("Exception: {0}",
                     tex.Message.ToString());
                Console.WriteLine(message);
            }Conclusion and UsesThere are a number of ways that an application can leverage the power of Twitter, such as broadcasting changes in a product's price, letting others know that you have posted a new blog, or letting a group of users know that a task is complete. And because statuses can also be read, applications can be find out when another user or application updates their status.]]></description> 
					<pubDate>Fri, 01 May 2009 13:56:26 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2009/5/1/twitterizer-simplifies-net-integration-with-twitter/</guid>
				</item>
			
				<item>
					<title>Using Firebug To Debug Web Pages</title> 
					<link>http://www.newvisionusa.com/blog/2009/4/27/using-firebug-to-debug-web-pages/</link> 
					<description><![CDATA[Mozilla Firefox has a very powerful add-on tool called Firebug. Firebug allows web developers to inspect web pages to do such things as identify CSS styles being applied to sections of a page, easily inspect sections of a page, and to tweak style values to properly determine values for padding, font sizes, margins, and the like. Firebug is also extremely useful in tracking down and debugging layout issues on a page, especially trying to determine what style is actually being applied to a section of a page. Also, you can step-wise debug Javascript code being run by the browser.

To get started, first install Mozilla Firefox, if not already installed (http://www.mozilla.com/en-US/firefox/ie.html).  Then go to https://addons.mozilla.org/en-US/firefox/addon/1843 (using Firefox) to download and install Firebug. When done, you'll see the Firebug option in Mozilla's Tools menu. Selecting Tools -> Firebug -> Open Firebug will display the Firebug panes at the bottom of the browser:




Click on the Inspect button. Now you can mouse around the page and see the defined sections of the page (surrounded by blue border):




The lower pane will display the relevant section of the page being moused over. You can also click on the moused-over area, which selects the area (and takes you out of inspect mode). The right pane will show what styles are in effect for the selected area, and you can also mouse over the HTML section to highlight the section on the page, and can click on the HTML pane lines to see the relevant styles, including the hierarchy/cascade effect of a given style.

When an HTML line is selected, you can view and tweak the associate styles. This is very useful when debugging the page to determine both what style is (or isn't) being applied, and to determine correct values so the page is displayed as desired.




You can also disable a style setting to see its effect, by clicking to the left of the setting in the right pane (marked by a red 'do not' symbol):




Using combinations of these tweaking mechanisms and you can both easily see why a page displays and what the correct settings should be. You can also add new setting values in the right page.

Lastly, Firebug can be used to debug Javascript. You can set breakpoints, watch values, and step lines of Javascript in real-time:




In conclusion, Firebug helps to take out the guesswork in page layout and very easily shows what styles are being applied to sections of a page, as well as the page layout itself. For any serious web developer it is an essential tool. This blog is by no means a comprehensive explanation of all of Firebug's functionality, but rather a basic introduction of its core features. As of this writing, there is no equivalent tool for Internet Explorer. And, of course, IE and Mozilla don't always display a page the same way, typically because of the way the two browsers interpret styles.
]]></description> 
					<pubDate>Mon, 27 Apr 2009 19:56:53 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2009/4/27/using-firebug-to-debug-web-pages/</guid>
				</item>
			
				<item>
					<title>A Password Reset Solution for Windows SharePoint Services</title> 
					<link>http://www.newvisionusa.com/blog/2009/4/8/a-password-reset-solution-for-windows-sharepoint-services/</link> 
					<description><![CDATA[
If you need a solution that allows users to quickly change their NT account passwords on a web server that resides outside of their domain, you can use the DirectoryServices namespace. One example of when this might be necessary is in the case of a Windows SharePoint Service site that is exposed to an external set of users. The code below and attached solution shows how to do this. You begin by adding a reference to the System.DirectoryServices.dll assembly. Next, create a web form with 2 Labels, 2 Textboxes and a Button control, like the one shown below: In the code behind, add the following: string userName = string.Empty;

    protectedvoid Page_Load(object sender, EventArgs e)
    {

        userName = HttpContext.Current.User.Identity.Name.ToString();
        lblLoggedInUser.Text = userName.Split('\\')[1];
        lblMessage.Text = string.Empty;
        lblMessage.ForeColor = System.Drawing.Color.Red;
    }The first 2 lines of code in the Page_Load event get the current user’s domain and user name and writes the user name portion to the label control. Putting the user name in a label control versus a text box prevents users from changing the passwords of users. Next, add the following code and wire this event to the Button’s Click event: protected void btnResetPassword_Click(object sender, EventArgs e)
    {
        try
        {
                            
            string user = userName.Split('\\')[1];
            DirectoryEntry AD = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer");
            DirectoryEntry NewUser = AD.Children.Find(user);

            NewUser.Invoke("SetPassword", newobject[] {txtConfirmPassword.Text});
            NewUser.CommitChanges();

            lblMessage.Text = "Password change successful.";
            lblMessage.ForeColor = System.Drawing.Color.Green;
        }
        catch (Exception err)
        {
            // set the error message
            Response.Write(err.Message);
        }
    }
}The first three lines in the code above create an instance of the DirectoryEntry class based on the name of the computer and then query that computer for the specific user. Once the directory entry for that user is located, the Invoke method is called on the directory entry, passing in the command argument for setting the new password. This is followed by a call to the CommitChanges method. Lastly, in order to run this code on the web server, the web.config file needs to be modified so that the solution impersonates a user with privileges to update security settings: identity impersonate="true" userName="user" password="pwd"/>Once the page is made available on the server, you can integrate it with SharePoint by adding a link to the SharePoint site, or by linking to it through a Page Viewer web part.]]></description> 
					<pubDate>Wed, 08 Apr 2009 15:13:30 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2009/4/8/a-password-reset-solution-for-windows-sharepoint-services/</guid>
				</item>
			
				<item>
					<title>SQL Server 2005 Script to Generate INSERT statements</title> 
					<link>http://www.newvisionusa.com/blog/2009/3/24/sql-server-2005-script-to-generate-insert-statements/</link> 
					<description><![CDATA[When it comes time to migrate code and database changes for a project, you often need to create new rows in the various environments (i.e. QA, Staging, Production). Some migrations involve creating rows for list tables, including states, countries, status codes, etc. One option is to write the INSERT statements one at a time, but that is too time consuming and is prone to errors. Instead, you can use the SQL script listed below. 

When you run the script against a table, you'll notice 2 things:
1. All data values are converted to HEX so you don't need to worry about escaping quotes.
2. If the table has an identity column, the script will generate the IDENTITY_INSERT commands as well. 

Download SQL script

/* EXAMPLES--Entire tableCreateInserts 'Webpages'--Entries WHERE WebpageID > 100CreateInserts 'Webpages', 'WebpageID > 100'--Entries WHERE WebpageID > 100 ORDER BY TitleCreateInserts 'Webpages', 'WebpageID > 100', 'Title'*/--If stored procedure already exists, drop it
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = 
OBJECT_ID(N'[dbo].[CreateInserts]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[CreateInserts]
GO

--Create the stored procedure
CREATE PROC CreateInserts

@tableName nvarchar(100),
@whereClause nvarchar(MAX) = '',
@orderByClause nvarchar(MAX) = ''

AS

--Declare variables
DECLARE @tableHasIdentity bit
DECLARE @sql nvarchar(MAX)
DECLARE @cols nvarchar(MAX)
DECLARE @vals nvarchar(MAX)
SET @cols = ''
SET @vals = ''

--Determine if table has an identity column
SELECT @tableHasIdentity = 
OBJECTPROPERTY(OBJECT_ID(TABLE_NAME), 'TableHasIdentity')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @tableName

--Do we need 'SET IDENTITY_INSERT tableName ON' statement?
IF @tableHasIdentity = 1
	BEGIN
		SET @sql = 'SELECT TOP 1 ''SET IDENTITY_INSERT ' + 
@tableName + ' ON '' FROM ' + @tableName
		EXEC sp_executesql @sql
	END

--Build list of columns and values
SELECT @cols = @cols + ',' + '[' + column_name + ']', @vals = @vals + 
	'+'',''+ISNULL(master.dbo.fn_varbintohexstr(cast([' + 
column_name + '] as varbinary(max))),''NULL'')' 
FROM INFORMATION_SCHEMA.columns 
WHERE TABLE_NAME = @tableName and DATA_TYPE != 'timestamp'

--Build SQL string
SET @sql = 'SELECT ''INSERT INTO [' + @tableName + '] (' + 
SUBSTRING(@cols,2,LEN(@cols)) + ') ' + 
			'VALUES (''+' + SUBSTRING(@vals, 6, 
LEN(@vals)) + '+'')'' FROM ' + @tableName
--Adjust @whereClause and @orderByClause
IF LEN(@whereClause) > 0
	SET @sql = @sql + ' WHERE ' + @whereClause
IF LEN(@orderByClause) > 0
	SET @sql= @sql + ' ORDER BY ' + @orderByClause

--Execute SQL string
exec sp_executesql @sql

--Do we need 'SET IDENTITY_INSERT tableName OFF' statement?
IF @tableHasIdentity = 1
	BEGIN
		SET @sql = 'SELECT TOP 1 ''SET IDENTITY_INSERT ' + 
@tableName + ' OFF '' FROM ' + @tableName
		EXEC sp_executesql @sql
	END

GO
]]></description> 
					<pubDate>Wed, 25 Mar 2009 02:53:27 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2009/3/24/sql-server-2005-script-to-generate-insert-statements/</guid>
				</item>
			
				<item>
					<title>Why GWT?</title> 
					<link>http://www.newvisionusa.com/blog/2009/3/11/why-choose-gwt/</link> 
					<description><![CDATA[
		
		The last song on the radio, as I was parking my car today, was Turning Japanese (bonus points if you can name the artist without using Google). This is not the ideal song to have running through your head on a workday, or pretty much any other time. So in an effort to dispel the demons of eighties novelty pop music from my tortured brain, I thought today was as good a time as any to write about the Google Web Toolkit (GWT). 
		GWT is a framework for writing AJAX interactive web applications. Take a look at the GWT home page for lots of great information about GWT. I'm going to look at this from the point of view of answering the key question - "Why GWT"? In other words, out of all the AJAX frameworks out there, what compelling reasons are there to choose GWT? 
		Write Java code, not JavaScript
		One of the most unique features of GWT is that you code in Java. While in development, you can run your Java code in a special "hosted mode" browser with all of the mature, sophisticated Java debugging tools you always have available. For deployment, this Java code is run through a compiler which translates this Java code to cross-browser JavaScript. 
		Although this is significant, especially in shops with a lot of Java experience, I don't believe this is a truly killer feature of GWT. The important thing is that the developer is shielded from the complexities of writing JavaScript code that works in all browsers. Other AJAX frameworks provide a layer of JavaScript that provides this abstraction. GWT does this by translating standard Java code, but how this is abstracted is less important than the simple fact that it is abstracted. 
		Simple RPC mechanism
		GWT has its own mechanism for remote procedure calls between the browser and the server. This works a lot like vanilla Java RMI - define interfaces and implementations for your server functions, and code will be generated to allow your client code to call them as if they were simple local methods. This blows away all the work of defining XML or JSON data formats for requests and responses. Just code the function for the server, call the function (still in Java) from the client code, and all of the marshalling, unmarshalling, network communication, etc. is done for you. 
		GWT also supports other RPC methods, such as XML or JSON over HTTP. You can write server code as standard SOAP or REST web services and GWT will be able to use them directly. This will take longer to code than the GWT RPC mechanism, but allows you to use legacy web services or services intended to also be used by non-GWT clients. A good middle-ground approach may be to prototype using GWT RPC, and re-implement as web services later. 
		
		Optimized cross-browser JavaScript
		One of the key reasons to use any AJAX framework is to write code that will produce identical results on all browsers, which is fiendishly difficult in raw JavaScript. Why roll your own code to handle all of those quirks, when a bunch of framework authors have already done it for you? GWT handles this, just like any good framework. As a bonus, the generated JavaScript is automatically compressed and obfuscated, decreasing download size and making reverse engineering more difficult. 
		Download sizes are kept even smaller by a unique GWT feature, namely... 
		Deferred binding
		Writing code that works on any browser is great. But there is a cost - the framework has to include code for every browser. You may be viewing the page in IE, but you also downloaded code specific to Firefox, Safari, and Opera, which will never be executed. Deferred binding is the GWT solution to this dilemma. 
		The first step in deferred binding happens during compilation. The GWT compiler creates a different JavaScript file for each browser type, containing all of your application code optimized for just that one browser. A very small bootstrap script is also generated, which examines the execution environment and determines which browser-specific application script to load. The bootstrap script is included in a standard HTML page, and when the page loads the script will resolve, download, and run the correct application script. 
		There is also provision for taking advantage of caching. The bootstrap file is intended to never be cached (and is helpfully suffixed with "nocache.js" as a reminder). The implementation scripts are intended to be cached, and have file names that are a hash code of their contents. This means that if you re-compile, but there are no changes in a particular file, it will have the same name and will allow the browser to use the already cached version. If the file changes, it's filename will change and therefore force a reload when it is next requested. All of this is done without any developer help (the generated bootstrap script deals with the filenames automatically). Pretty neat, huh? 
		I've only talked about deferring binding based on browser type so far, but this is a general mechanism and you can define other context-dependent variances as well. The most common use of this is... 
		
		Localization
		Localizing a GWT application is very straightforward and very similar to how it is done in standard Java applications. In the simple case, just create properties files with locale suffixes, access them by key through a GWT interface, and the locale-specific string will be used. The cool part is that GWT uses the deferred binding mechanism to make sure that only those properties for the current user's locale are ever downloaded. 
		As with browser-specific code, this starts at compile time. For each combination of browser AND locale, an application script is generated. So, if you have, say, 4 browsers and 3 different locales, you will have 12 files generated - such as FireFox in English, FireFox in French, IE in English, etc. The bootstrap file will examine the client environment and load the application file specific to the detected browser and locale. 
		Image bundles
		It should be obvious by now that the Google team put a lot of effort into ensuring the highest possible performance. Image bundles are yet another performance-boosting feature of GWT. Defining an image bundle allows the GWT compiler to package a number of images into a single file which is accessed through a Java object. This reduces the number of network round trips by getting all images for your application in a single file download. The packaging is done by the GWT compiler; all the developer has to do is define an annotated interface with a function to access each image. 
		
		Embeds well in existing sites
		Some frameworks work best only if they are in charge of the whole page. GWT "plays well with others", in that it can generate entire pages or elements within a page equally well. The GWT scripts work by creating HTML elements inside a specified element on a page during the onLoad() event. To embed a GWT application in an existing page, you therefore only need to include the script file and add an id to the element you want to contain the application (which can be a div, a td, the body, anything). Couldn't be easier. 
		Conclusion
		That's a lot of good reasons to choose GWT, and that's just scratching the surface. There are many other features that make GWT a compelling choice. These include interoperation with native JavaScript, intelligent support for back button navigation within an application, accessibility support, programming delayed logic, support for JUnit testing, availability of third-party widget libraries, and more. GWT is also under continuous development, with the upcoming 1.6 version to include improvements like a faster hosted mode server, faster string handling, better compiler performance, and easier deployment to standard JEE WAR files. The Google team has done a very good job of providing a no-compromise framework that provides a fast, rich, and consistent user experience while keeping the developer focused on the application rather than the technology. It's definitely worth taking for a test drive. 
		Now, if I could just get that song out of my head... 
]]></description> 
					<pubDate>Wed, 11 Mar 2009 14:01:47 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2009/3/11/why-choose-gwt/</guid>
				</item>
			
				<item>
					<title>ASP.NET DataView - Always Create a New Instance!</title> 
					<link>http://www.newvisionusa.com/blog/2009/1/12/aspnet-dataview-always-create-a-new-instance/</link> 
					<description><![CDATA[
We recently built website software for a client that had a requirement to handle 1,000 concurrent users for 3 minutes. During the initial stress testing, the software performed perfectly up to 250 users. Once it hit 250 users, we started to receive exceptions and page content wasn't being displayed properly. After some investigation, KeyLimeTie senior developer, Michael Wick, determined the problem was around our use of the DataView class. He believed the code was not thread safe and causing threads to overwrite each other.


We went to MSDN to see if the class is thread safe and according to Microsoft, "This type is safe for multithreaded read operations. You must synchronize any write operations." What's the definition of "write operations"? In our case, the DataTable the DataView consumed was being written to once (when the website started up), but was being filtered many times in a static class. We felt the way we were using the class constituted as multiple "write operations". To confirm this, we created a test application.


Download Application only
Download Source Code


Code

In the code below, the DataView is initialized two completely different ways:

Line 4: A new instance of the DataView class is created (good)

Line 6: Uses a shared view of the DataTable (bad)



1//Create DataView
2DataView dv = null;
3if (useNew)
4    dv = new DataView(dt);
5else
6    dv = dt.DefaultView;
7
8//Apply filter
9dv.RowFilter = "RandomNumber = " + randomNumber.ToString();
10
11//Return num rows found
12return dv.Count;


With low usage, Line 4's code will work just fine. Once your software starts to pick up more usage, it will begin to error. Please run the test application we have provided to see for yourself. The screenshot below illustrates what happens when a new instance of the DataView class isn't created every time it's used. The feedback in the application shows the thread numbers and their operations. Notice the DataView code has been executed over each other's thread causing unexpected results. Next, check the "Use new keyword" checkbox and you'll see the expected results are always met (no errors reported).]]></description> 
					<pubDate>Mon, 12 Jan 2009 17:55:14 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2009/1/12/aspnet-dataview-always-create-a-new-instance/</guid>
				</item>
			
				<item>
					<title>Writing Database Objects In Managed Code</title> 
					<link>http://www.newvisionusa.com/blog/2008/12/10/writing-database-objects-in-managed-code/</link> 
					<description><![CDATA[With SQL Server 2005, you can use .NET Framework languages to create database objects and retrieve and update data. You can create stored procedures, triggers, aggregates, user-defined functions, and user-defined types, using any one of the CLR-compliant languages. In this article, I will cover the steps involved in creating and debugging a stored procedure in C#.
To begin, it's worth noting that there are several advantages to using managed code over T-SQL: 


Enhanced programming model 
  .NET Framework languages offer constructs and capabilities previously unavailable to SQL developers. Visual Basic, Visual C#, and Visual C++ provide capabilities that are not available in Transact-SQL, such as arrays, sophisticated exception handling, and reusability of code. 


Reusability of Code
   A library of managed assemblies can be created and distributed more easily than a Transact-SQL script can be distributed.  


Leverage Existing Skills
   You can use and enhance your skills in the languages and development environment in which you are already experienced to create database objects. 


Richer developer experience
   When you develop database objects using the SQL Server project template, you have complete integration with the project system, including building, debugging, and deployment to multiple servers. 


Security
   When you use database objects created using Visual Basic, Visual C#, or Visual C++, the code-access security of those languages is combined with the user-based permissions in SQL Server. 



Creating the Database Project


The first step in creating a stored procedure (or any database object) is to create a SQL Server project in Visual Studio: 
1. From the File menu, create a new project. 
2. In the New Project Dialog, select and expand a language node in the Project Types area. 
3. Select the Database node. 
4. Select the SQL Server Project template. 
5. Click OK. 




Next, you will prompted for the database connection you are using. Unless this database has had CLR-integration enabled previously, you will need to run the following in SQL Server:
sp_configure 'clr enabled', 1 
GO 
RECONFIGURE 
GO 


Creating the Stored Procedure


At this point, you are ready to start creating database objects. To create a new stored procedure, do the following steps:
1. Open an existing SQL Server Project, or create a new one.  From the Project menu, select Add New Item. 
2. Select Stored Procedure. 
3. Type a Name for the new stored procedure. 
4. Add code to run when the stored procedure is executed. 
5. In the sample code below, I have created a stored procedure that accepts one parameter and queries the Product table of the Adventure Works database. The code should look very familiar, utilizing Connection, Command and Parameter objects. One object that may not be familiar is the SQLPipe. This allows managed stored procedures running in-process on a SQL Server database to return results back to the caller. 
    [Microsoft.SqlServer.Server.SqlProcedure]    publicstaticvoid SelectProductByProductID(int productID)    {        using (SqlConnection conn = new SqlConnection("context connection=true"))        {            try
            {
                SqlPipe pipe = null;                SqlCommand SelectProductCommand = new SqlCommand();                SqlParameter productIDParam = new SqlParameter("@ProductID", SqlDbType.Int);                productIDParam.Value = productID;                SelectProductCommand.Parameters.Add(productIDParam);                SelectProductCommand.CommandText = 
"Select * from Production.Product where AProductID = @ProductID";                conn.Open();                SelectProductCommand.Connection = conn;                pipe = SqlContext.Pipe;                pipe.ExecuteAndSend(SelectProductCommand);            }            catch (SqlException sqlEx)            {                //code to handle or log the sql exception here 
                Console.WriteLine(sqlEx);
            }
            catch (Exception ex)            {                Console.WriteLine(ex);            }        }    }
Once the code is ready, you can build and deploy the stored procedure to the database by pressing 'F5'. To test the deployment, there is a file in your project called test.sql. In this file, you can add script calls to the obects you just created. For example, to call the stored procedure created above, enter:
EXEC [dbo].[SelectProductByProductID] 4


That's it. If the stored procedure was written correctly, you will now see this item in list of stored procedures in Enterprise Manager. However, you'll see the object has a lock icon next to it, as shown below. This is because the object is not editable outside of the Visual Studio project.





Conclusion
At this point, you might be asking 'so where are the benefits?'. Let's look at a few:


Exception Handling: if the stored procedure returns an error, say a constraint violation for example, this error gets converted into a SqlException that you can then handle in your managed code. To try this, change the column in the stored procedure text above to AProduct and hit 'F5'. You'll see that the catch block is entered. This gives a lot of flexibility in how you handle errors that don't readily exist in T-SQL.


Deployment:
If you need to deploy the objects you created to another server, you simply change the database connection in the project properties and hit 'F5'. No more creating and managing scripted stored procedures.


]]></description> 
					<pubDate>Wed, 10 Dec 2008 23:07:13 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/12/10/writing-database-objects-in-managed-code/</guid>
				</item>
			
				<item>
					<title>Migrating ASP.NET Applications to IIS 7.0 Integrated Mode </title> 
					<link>http://www.newvisionusa.com/blog/2008/11/14/migrating-aspnet-applications-to-iis-70-integrated-mode/</link> 
					<description><![CDATA[Upgrading an ASP.NET application from IIS 6.0 and lower (Classic ASP.NET Integration Mode) to IIS 7.0 (Integrated Mode) can be a lot of work. To help, Microsoft provides an application that does the work for you.


IIS 7.0 takes care of migrating the application by using the APPCMD.EXE command line tool to perform the migration. The migration error message contains the command that is executed in command line window (which you must run--right click the Programs\Accessories\Command Prompt icon, and choose "Run as administrator") in order to instantly migrate your application to Integrated mode. 


The basic format of the migration command is the following: 


%windir%\system32\inetsrv\APPCMD.EXE migrate config 


where  is the virtual path of the application containing the site name, such as "Default Web Site/app1". 


When migration is complete, your application runs in both Integrated and Classic modes without a problem. 


Note: If you change the configuration after migration, the server will not prompt you to migrate again. After initial migration, you must make sure that your configuration remains in sync between the two modes – manually migrate the application again using the APPCMD.EXE command line tool. 


Source: http://learn.iis.net/page.aspx/243/aspnet-integration-with-iis7/]]></description> 
					<pubDate>Fri, 14 Nov 2008 20:10:22 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/11/14/migrating-aspnet-applications-to-iis-70-integrated-mode/</guid>
				</item>
			
				<item>
					<title>Prevent ASP.NET Pages From Caching</title> 
					<link>http://www.newvisionusa.com/blog/2008/10/17/prevent-aspnet-pages-from-caching/</link> 
					<description><![CDATA[We recently came across a scenario where an ASP.NET page was caching on the user's browser and causing issues. ASP.NET pages are dynamic and their content should never cache. To force the browser to not cache the page, add the following code:


Code-behind

1Response.AppendHeader("Cache-Control", "no-cache; private; no-store; must-revalidate; max-stale=0; post-check=0; pre-check=0; max-age=0");
2Response.AppendHeader("Pragma", "no-cache");
3Response.AppendHeader("Keep-Alive", "timeout=3, max=993");
4Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); 
//Some random old date


HTML META tags

1
2
3
]]></description> 
					<pubDate>Fri, 17 Oct 2008 16:02:49 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/10/17/prevent-aspnet-pages-from-caching/</guid>
				</item>
			
				<item>
					<title>How to safely escape invalid XML characters</title> 
					<link>http://www.newvisionusa.com/blog/2008/9/25/how-to-safely-escape-invalid-xml-characters/</link> 
					<description><![CDATA[When saving strings to XML, it important to escape invalid characters. The following table shows the invalid XML characters and their escaped equivalents.




Invalid XML Character


Replaced With









>


>




'


'




&apos;


&apos;





&


&amp;




Rather than write code to do a bunch of replaces, use this one line of code:


1string escapedText = System.Security.SecurityElement.Escape(input);

By using this built-in .NET method, you ensure your strings are properly escaped.


To learn more about this method and see developer's feedback (some people have concerns), go to

http://msdn.microsoft.com/en-us/library/system.security.securityelement.escape(VS.80).aspx
]]></description> 
					<pubDate>Thu, 25 Sep 2008 19:32:49 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/9/25/how-to-safely-escape-invalid-xml-characters/</guid>
				</item>
			
				<item>
					<title>How to validate strings for XML</title> 
					<link>http://www.newvisionusa.com/blog/2008/9/2/how-to-validate-strings-for-xml/</link> 
					<description><![CDATA[Back on 3/28/2008, we published a blog titled How to check for hexidecimal characters. I used this code as a basis to write a method to ensure only valid UTF-8 characters are in a string. If invalid characters are in an XML document, the document cannot be consumed by an application and can cause a complete website outage (depending on how it's used). The following method looks for invalid XML characters.



1private static bool IsValidString(string input)
2{
3    try
4    {
5        //Trim input string
6        input = input.Trim();
7
8        //If blank, no need to validate
9        if (input.Length == 0)
10            return true;
11
12        //Loop through characters
13        foreach (char currentChar in input)
14        {
15            if (currentChar == 0x9 || // \t = 9
16                currentChar == 0xA || //   = 10
17                currentChar == 0xD || //   = 13
18                (currentChar >= 0x20 && currentChar 19                (currentChar >= 0xE000 && currentChar 20                (currentChar >= 0x10000 && currentChar 21            {
22                //Valid character
23            }
24            else
25                return false;
26        }
27    }
28    catch
29    {
30        return false;
31    }
32    return true;
33}
34]]></description> 
					<pubDate>Tue, 02 Sep 2008 15:22:38 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/9/2/how-to-validate-strings-for-xml/</guid>
				</item>
			
				<item>
					<title>Use CSS to AutoSize a DIV</title> 
					<link>http://www.newvisionusa.com/blog/2008/8/11/use-css-to-autosize-a-div/</link> 
					<description><![CDATA[There are often cases where you want to display content in a div, but a fixed height won't work. It the height is too little, content is cut off or you need a vertical scrollbar (by setting the overflow value). If the height is too much, you'll have a lot of whitespace. The example below shows you how to easily create a div that autosizes based on the content.

1//HTML:
2"outerDiv" class="autosize">
3    "innerDiv" runat="server" style="display: block">
4        //Content...
5    
6
7
8//CSS:
9#outerDiv
10{
11    min-height: 200px; 
12}
13
14div.autosize { display: table; width: 1px; }
15div.autosize > div { display: table-cell; }]]></description> 
					<pubDate>Mon, 11 Aug 2008 14:21:55 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/8/11/use-css-to-autosize-a-div/</guid>
				</item>
			
				<item>
					<title>Using Visual Studio 2005 Add-ins in Visual Studio 2008</title> 
					<link>http://www.newvisionusa.com/blog/2008/11/10/using-visual-studio-2005-add-ins-in-visual-studio-2008/</link> 
					<description><![CDATA[
		
				As your organization makes the move from Visual Studio 2005 to Visual Studio 2008, you're going to need to move all of the Add-ins you have come to rely on over as well. Unless the Add-in you have in mind uses some Visual Studio version-specific API, the method for porting an Add-in to the new release should be seamless.
				There are 2 steps you need to follow to get the Add-in over to Visual Studio 2008:
				
						1. Move the Add-in's Dll and associated files to the Addins folder under Visual Studio 2008.
				You will find the Add-in Dll and associated files in the Addins folder under Visual Studio 2005. The path is likely
				
						C:\Documents and Settings\User\My Documents\Visual Studio 2005\Addins  
				
				Copy the files for the Add-in you wish to migrate, and paste them into the Addins folder under Visual Studio 2008. The path for 2008 is similar, and if you do not find an Addins folder, you can create one manually.
				
						C:\Documents and Settings\User\My Documents\Visual Studio 2008\Addins
				
				Be sure to grab the .dll, .dll.config the .Addin files, as shown below.
				
						 
				
						2. Once the files have been copied to the new Addins folder, you will need to update the .Addin file to increment the Host Application's (Visual Studio) version number. You can do this by opening the file in any text editor, finding the nodes labelled version, and changing it from 8.0 to 9.0.I have bolded the version node below  \par ??\par ??\tab \par ??\tab \tab \cf0 Microsoft Visual Studio Macros\cf1 \par ??\tab \tab \cf0 8.0\cf1 \par ??\tab \par ??\tab \par ??\tab \tab \cf0 Microsoft Visual Studio\cf1 \par ??\tab \tab \cf0 8.0\cf1 \par ??\tab \par ??\tab \par ??\tab \tab \cf0 Some2005Addin\cf1 \par ??\tab \tab \cf0 The Add-in to end all Add-ins.\cf1 \par ??\tab \tab \cf0 Some2005Addin.dll\cf1 \par ??\tab \tab \cf0 Addin.SomeAddin.For2005\cf1 \par ??\tab \tab \cf0 1\cf1 \par ??\tab \tab \cf0 0\cf1 \par ??\tab \tab \cf0 0\cf1 \par ??\tab \par ??}
-->
				
						
								
										
										xml
										
										
										version
										="1.0"encoding="UTF-16"standalone="no"?>
						
						
								
										
										Extensibility
										
										
										xmlns
										="http://schemas.microsoft.com/AutomationExtensibility">
						
						
								
										  
										HostApplication
										>
								
						
						
								
										    
										Name
										>Microsoft Visual Studio MacrosName>
						
						
								
										
												    
												Version
												>8.0Version>
								
						
						
								
										  
										HostApplication
										>
								
						
						
								
										  
										HostApplication
										>
								
						
						
								
										    
										Name
										>Microsoft Visual StudioName>
						
						
								
										
												    
												Version
												>8.0Version>
								
						
						
								
										  
										HostApplication
										>
								
						
						
								
										  
										Addin
										>
								
						
						
								
										    
										FriendlyName
										>Some2005AddinFriendlyName>
						
						
								
										    
										Description
										>The Add-in to end all Add-ins.Description>
						
						
								
										    
										Assembly
										>Some2005Addin.dllAssembly>
						
						
								
										    
										FullClassName
										>Addin.SomeAddin.For2005FullClassName>
						
						
								
										    
										LoadBehavior
										>1LoadBehavior>
						
						
								
										    
										CommandPreload
										>0CommandPreload>
						
						
								
										    
										CommandLineSafe
										>0CommandLineSafe>
						
						
								
										  
										Addin
										>
								
						
						
								
										
										Extensibility
										>
								
						
				
				
				Once this value has been changed to 9.0, save the file, and open the Add-in Manager dialog in Visual Studio 2008 (TOOLS MENU-->ADD-IN MANAGER...)
				You will now see the Add-in appear in the dialog. Select the Add-in you have just migrated and you are ready to go.
				
						 
		
]]></description> 
					<pubDate>Tue, 01 Jul 2008 23:56:30 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/11/10/using-visual-studio-2005-add-ins-in-visual-studio-2008/</guid>
				</item>
			
				<item>
					<title>Access ScriptManager in a Master Page from Content Page</title> 
					<link>http://www.newvisionusa.com/blog/2008/6/12/access-scriptmanager-in-a-master-page-from-content-page/</link> 
					<description><![CDATA[
		I recently had to access the ScriptManager in a Master Page from one of the Content Pages.I first tried to perform a FindControl(), but there's a much easier way.There is a static method in the ScriptManager class called "GetCurrent()" which provides access to the current instance of the ScriptManager.
		
				//Extend script manager timeout to 10 minutes
		ScriptManager.GetCurrent(this).AsyncPostBackTimeout = 600;
]]></description> 
					<pubDate>Thu, 12 Jun 2008 17:45:40 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/6/12/access-scriptmanager-in-a-master-page-from-content-page/</guid>
				</item>
			
				<item>
					<title>How to enable HTTP Compression on Windows Server 2003</title> 
					<link>http://www.newvisionusa.com/blog/2008/5/20/how-to-enable-http-compression-on-windows-server-2003/</link> 
					<description><![CDATA[
		If your server and website are not using HTTP Compression, you're not taking advantage of one of the easiest website performance features to implement. This blog tells you how to enable HTTP Compression in less than 10 minutes and reduce traffic by as much as 85%! The instructions below are a combination of articles I've read online and in print. We have implemented this on at least a dozen servers which host hundreds of websites with only one issue (mentioned below; issue with PDFs).Create Compression Folder- Create a folder where the compressed file will be cached. You can give it any name or leave the default: "%windir%\IIS Temporary Compressed Files".- Grant write permissions to IUSR_{machinename} for the folder.Enable Compression in IIS- In IIS, right-click on the "Web Sites" node and click "Properties".- Select the "Service" tab.- Check "Compress application files". (we have seen issues where PDFs are compressed and cannot be opened)- Check "Compress static files".- Change "Temporary directory" (if you created your own folder).- Set the "Maximum temporary directory size" to something that the hard drive can handle (i.e. 1024).- Save and close the "Web Site" Properties.Create a Web Service Extension (WSE)- In IIS, select "Web Service Extensions".- Add a new web service extension.- Name it "HTTP Compression".- Point it to "c:\windows\system32\inetsrv\gzip.dll".- Check the "Set extension status to Allowed" to enable it.Edit IIS Metabase- In IIS, right-click on the server node (top level) and click "Properties".- Check "Enable Direct Metabase Edit".- In Notepad, open the metabase: C:\Windows\system32\inetsrv\metabase.xml- Search for "- There will be two of them, one for deflate and one for gzip.- In "HcScriptFileExtensions", add aspx, asmx and any other extension that you need to the list already there. Do this for both deflate and gzip and format the format.- Change "HcDynamicCompressionLevel" to 9.  Do this for both deflate and gzip.- Restart IIS
]]></description> 
					<pubDate>Wed, 21 May 2008 01:19:41 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/5/20/how-to-enable-http-compression-on-windows-server-2003/</guid>
				</item>
			
				<item>
					<title>Disable PDB File Generation in Release Mode</title> 
					<link>http://www.newvisionusa.com/blog/2008/4/15/disable-pdb-file-generation-in-release-mode/</link> 
					<description><![CDATA[		Migrating code to a Production environment is not a difficult task, but I have seen developers do some weird stuff. I have seen developers migrated code compiled for debug and then wonder why the site doesn't run very fast...not common, but really does happen. I have seen developers migrate the entire source code for a project to the Production environment. They call it their "back up" location. Ever hear of VSS? These are bad practices that should be avoided.Have you ever noticed that code you build for Release or Publish still generates a PDB file? Up until recently I really didn't think much of it, but one day I got curious. I did a little research and found a great blog on compiling options and the implications. In short, you can disable generation of the PDB file (see image below), but it's not recommended. Read this article for more details:
		
				http://blog.vuscode.com/malovicn/archive/2007/08/05/releasing-the-build.aspx
				
				
				
		
]]></description> 
					<pubDate>Wed, 16 Apr 2008 01:52:06 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/4/15/disable-pdb-file-generation-in-release-mode/</guid>
				</item>
			
				<item>
					<title>How to check for hexidecimal characters</title> 
					<link>http://www.newvisionusa.com/blog/2008/3/28/how-to-check-for-hexidecimal-characters/</link> 
					<description><![CDATA[If you haven't come across it yet, hexidecimal characters are not allowed in XML documents and cause problems when trying to display or work with them. When working with 3rd party data in XML (not received via a web service), it's always a good idea to validate the data. If you see an error like "hexidecimal value 0x04, is an invalid character, Line 1 Position 20154755", your problem is the data in the XML document. We recently came across this issue and created a simple method to check for valid characters:

Be sure to check out related blog: How to validate strings for XML


1private bool IsValidString(string input)
2{
3    try
4    {
5        char[] values = input.ToCharArray();
6        foreach (char c in values)
7        {
8            //Get the integral value of the character
9            int value = Convert.ToInt32(c);
10            //Valid character (space -> tilde) see: http://www.asciitable.com
11            if (value  126)
12                return false;
13        }
14    }
15    catch
16    {
17        return false;
18    }
19    return true;
20}
]]></description> 
					<pubDate>Sat, 29 Mar 2008 01:45:19 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/3/28/how-to-check-for-hexidecimal-characters/</guid>
				</item>
			
				<item>
					<title>KeyLimeTie Log Cleaner (file pruning application) - FREE!</title> 
					<link>http://www.newvisionusa.com/blog/2008/3/16/keylimetie-log-cleaner-free/</link> 
					<description><![CDATA[
    With all of the applications running on a server, it is important to keep their
    output pruned. Even with a basic server running a few websites, you can expect to
    have:
    - IIS logs
    - SQL Server database backups
    - Application-specific logging
    
    Over time, these files can consume a lot of disk space and potentially disable a
    server. Over the past 5 years, I have worked on-site with nine clients. Of these
    nine clients, seven of them have encountered this problem. In fact, my most recent
    client had this problem last week! It happens so often that when someone said the
    server was was running slow and throwing errors to the web browser, the first thing
    I said was "I bet the hard drive is full"...and it was.
    
    Why does it happen so often? There are many reasons, but the main reason is because
    nobody is monitoring the disk space (or monitoring tools are not installed) and
    the files aren't being properly pruned or archived. To resolve this issue, I created
    the KeyLimeTie Log Cleaner application free for anyone to download and use. I purposely
    made it very simple to configure and install; there are plenty of features and options
    we could add.
    
    To get it running:
    1. Download Application
    2. Unzip the files to a folder on your hard drive.
    3. Open the "profiles.xml" file and edit it for your needs.
    
    xml version="1.0" standalone="yes"?>
Profiles>
	Profile>
		!-- Keep this application's logs pruned to 15 days -->
		Description>KeyLimeTie Log CleanerDescription>
		FolderPath>D:\Projects\KeyLimeTie\KeyLimeTie.LogCleaner\Logs\FolderPath>
		Extension>txtExtension>
		DelOlderThanDays>15DelOlderThanDays>
		Recursive>falseRecursive>
	Profile>
	Profile>
		!-- Example: Keep IIS Logs pruned to 15 days -->
		!-- Setting Recursive true prunes all ftp and website logs -->
		!-- As new websites are added, no need to update profiles -->
		Description>All IIS LogsDescription>
		FolderPath>C:\Windows\system32\LogFiles\FolderPath>
		Extension>logExtension>
		DelOlderThanDays>15DelOlderThanDays>
		Recursive>trueRecursive>
	Profile>
	Profile>
		!-- Example: Keep SQL Server backups pruned to 1 week -->
		!-- Setting Recursive true prunes all database backups -->
		!-- As new databases are added, no need to update profiles -->
		Description>All Database BackupsDescription>
		FolderPath>D:\Databases\Backups\FolderPath>
		Extension>bakExtension>
		DelOlderThanDays>7DelOlderThanDays>
		Recursive>trueRecursive>
	Profile>
Profiles>


    Fields:
    
    - Description: Profile description
    - Folder Path: Location of files to be deleted
    - Extension: Extension of files to be deleted
    - DelOlderThanDays: Number of days to delete files older than today
    - Recursive: Tells application to look for files in subdirectories
    
    Schedule Application:
    I installed the software on a few servers and simply created a Scheduled Task through
    Windows. I have it set to run every day at 4am (after the SQL Server backups are
    run).
    
    Some ideas...
    - Change "Extension" option to be "MatchPattern". Right now, the code searches for
    all files by the extension. You can put "*" in there and it'll prune all files,
    but it could be made to be more powerful.
    - Create as Windows Service. I have created similar applications as Windows Services...and
    it's very easy to change this to a Windows Service. But I wanted this first version
    to be very simple and simple to install. I have seen people have issues with installing
    Windows Services.
    - Create an interface to manage the profiles. It's so easy to update this really
    isn't necessary.

]]></description> 
					<pubDate>Sun, 16 Mar 2008 18:54:19 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/3/16/keylimetie-log-cleaner-free/</guid>
				</item>
			
				<item>
					<title>Internet Explorer 8 Has Arrived!</title> 
					<link>http://www.newvisionusa.com/blog/2008/3/6/internet-explorer-8-has-arrived/</link> 
					<description><![CDATA[
		From "ReadWriteWeb"...Microsoft's next-generation web browser, Internet Explorer 8, has arrived. In a surprising move, after the demo of IE8 and its new features at today's session of the MIX08 conference, the startling announcement was made: "It's available for download now". The new browser showcases many new features and improvements, like Facebook and eBay integration, standards compliance, and the ability to work with AJAX web pages. What's most notable about IE8, though, is more than a sum of its parts. If anything, this launch shows that Microsoft is not taking Firefox's creep into browser market share lightly.IE8 New Features Shown At MIX08Standards ComplianceThere were hints that IE8 would be a remarkable offering on the IE Blog as they released tidbits about the browser's capabilities. For example, the announcement of IE8's passing of the Acid2 test (a test for standards compliance) marked a milestone in IE8's development. The standards mode was originally going to be turned off by default letting web developers code for it by including a "meta" tag to make use of IE8's new standards compliant mode. Later, Microsoft came to their senses and made the default the standards-compliant mode. Meanwhile, Firefox also claims to have passed the Acid 2 test, but an open bug on bugzilla.mozilla.org seems to say otherwise. One commenter on the thread notes, "So, we essentially do pass the test. However, in some situations, it might still fail, that's why this bug is open."Facebook IntegrationWith a Flock-like feature as an unexpected surprise, Microsoft capitalized on their partnership with the popular social networking site, Facebook, to allow IE8 users the ability to get status updates from Facebook right from their browser toolbar.eBay IntegrationLike Facebook, this feature also uses IE8's new technology, called "WebSlices", which introduces a new way to get updates from other sites via the browser itself, without having to visit the web site. With WebSlices, IE8 beta users can subscribe to portions of a page that update dynamically, in order to receive updates from that page as contentchanges. eBay will offer webslices, too, letting you track your auctions from the browser toolbar. Basically, WebSlices look like Favorites on your Links toolbar but they have a little arrow next to them - clicking on this arrow will show you a small window of live web content. Live Maps IntegrationAnother WebSlice was integration with Live Maps. It appeared that you could even highlight text on a page, like an address, and then right-click and choose Live Maps from the context menu to get a WebSlice preview of that location on a map in a small pop-up window.Integration with Me.diumMe.dium integration will be supported in IE8 via WebSlices. Me.dium will now help web surfers discover and view WebSlices directly from the sidebar. The Me.dium sidebar will alert users to the presence of WebSlices on any page – and even allows users to read each WebSlice, without leaving the Sidebar. In addition, Me.dium will make real-time recommendations for other WebSlices on other relevant web pages and provides direct links to them based on the real time activity of other Me.dium users.Working with AJAX PagesIE8 will offer better functionality when it comes to AJAX web pages. The example showed a page where you could zoom in using AJAX technology. Previously, hit the IE "Back" button would take you back to the last page you were on. Now, "Back" will zoom you out.We can now find out what other features IE8 has to offer, since the beta is now publicly available for download. To get IE8, you can download it from here:http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/Install.htm.
		 
]]></description> 
					<pubDate>Fri, 07 Mar 2008 01:23:50 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/3/6/internet-explorer-8-has-arrived/</guid>
				</item>
			
				<item>
					<title>Safely restart an ASP.NET remotely</title> 
					<link>http://www.newvisionusa.com/blog/2008/2/12/safely-restart-an-aspnet-remotely/</link> 
					<description><![CDATA[
Every once in awhile, an ASP.NET website may need to be restarted. There are a few ways to do this: kill the worker process (too forceful), restart IIS (restarts all websites) or modify the web.config (best choice). Instead of FTP'ing the web.config down and back up or logging onto the server to update the web.config, why not create a web page that allows you to easily update the "last write date" on the file. The .NET Framework monitors website files and when the web.config write date changes, it automatically restarts that website. Here's code you can drop into an ASP.NET web page to accomplish this:




	function ToggleSourceCodeRegion(regionNumber)
	{
		var divRegion = document.getElementById('region' + regionNumber);
		var divRegionBlock = document.getElementById('regionBlock' + regionNumber);

		if (divRegion.style.display == 'inline')
		{
			divRegion.style.display = 'none';
			divRegionBlock.style.display = 'inline';
		}
		else
		{
			divRegion.style.display = 'inline';
			divRegionBlock.style.display = 'none';
		}
	}
1"C#" %>
2
3"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5"server">
6    protected void Page_Load(object sender, EventArgs e)
7    {
8        lblMessage.Text = "";
9    }
10
11    protected void btnRestart_Click(object sender, EventArgs e)
12    {
13        if (txtPassword.Text.Trim().ToUpper() ==
14            System.Configuration.ConfigurationManager.AppSettings["ResetSitePassword"].ToString().Trim().ToUpper())
15        {
16            string webConfigPath = Server.MapPath("Web.config");
17            System.IO.File.SetLastWriteTime(webConfigPath, DateTime.Now);
18            Session.Abandon();
19            Response.Redirect("/");
20        }
21        else
22            lblMessage.Text = "Invalid password";
23    }
24
25
26"http://www.w3.org/1999/xhtml">
27"server">
28    Restart Website
29
30
31    "aspnetForm" runat="server">
32        Password:
33        "txtPassword" runat="server" TextMode="Password">
34        "btnRestart" runat="server" Text="Restart" OnClick="btnRestart_Click">
35        
36        "lblMessage" runat="server" ForeColor="Red">
37    
38
39]]></description> 
					<pubDate>Tue, 12 Feb 2008 21:15:04 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/2/12/safely-restart-an-aspnet-remotely/</guid>
				</item>
			
				<item>
					<title>Don&amp;quot;t Search For Domain Names on Network Solutions!</title> 
					<link>http://www.newvisionusa.com/blog/2008/2/9/dont-search-for-domain-names-on-network-solutions/</link> 
					<description><![CDATA[		If you check for a domain name on Network Solutions, you will have to buy it there or risk losing it forever!
		When you check for a domain name on Network Solutions, they immediately lock that domain for 4 days. If you want the domain, you must buy it through them for $35. If you don't and the 4 days pass, it becomes public to domain name snipers and may be unavailable forever! Don;t believe me, try it your self:1. Go to Network Solutions (http://www.netsol.com) and search for a domain name. I tried keylimetierocks.com2. It's available, but I don't buy it.3. Immediately go to GoDaddy (http://www.godaddy.com) and search for the same domain name.4. It's not available!]]></description> 
					<pubDate>Sun, 10 Feb 2008 05:06:51 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/2/9/dont-search-for-domain-names-on-network-solutions/</guid>
				</item>
			
				<item>
					<title>How to use Visual Studio 2003 in Windows Vista</title> 
					<link>http://www.newvisionusa.com/blog/2008/1/17/using-vs7-in-vista/</link> 
					<description><![CDATA[
		
				This blog entry is intended to illustrate the steps necessary to set up a Windows Vista machine to use Visual Studio 2003 (.NET 1.1).  Most of the information was obtained from the following blogs: 
		
		
				
						http://citruslime.blogspot.com/2007/04/visual-studio-2003-web-debugging-on.html
				
		
		
				
						http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/how-to-setup-asp-net-v1-1-visual-studio-net-2003-projects-on-iis7-vista.aspx
				
		
		
				
				
						 
				
		
		
				
						
								
										
												Steps
										
								
						
				
		
		
				
						
								
										1.
										       
								
						
						
								Setup your user account as a local admin on the Vista machine and switch off the "user account control”.
						
				
		
		
				
						
								
										a.
										       
								
						
						
								Open Control Panel -> User Accounts.
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Select “Change your account type”.
						
				
		
		
				
						
								
										c.
										       
								
						
						Select “Administrator” (if not already Administrator).
				
		
		
				
						
						
								
								
								
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
								
								
								
								
								
						
				
		
		
				
						
								
										d.
										      
								
						
						Press “Change Account Type”.
				
		
		
				
						
								
										e.
										      
								
						
						Select “Turn User Account Control on or off”.
				
		
		
				
						
								
										f.
										        
								
						
						Uncheck “Use User Account Control (UAC) to help protect your computer”.
				
		
		
				
				
		
		
				
						
								
										g.
										       
								
						
						Press “OK”.
				
		
		
				
						
								
										2.
										       
								
						
						
								Ensure your user account is included in the Debugger User group.
						
				
		
		
				
						
								
										a.
										       
								
						
				
				
						
								Note: It appears this is not possible in certain versions of Vista, such as Home Premium.  Click the following link for more information:  
						
						
								http://windowshelp.microsoft.com/Windows/en-US/Help/0faddcfc-e2a9-4297-a429-3f7e83fe6e361033.mspx
						
						.
				
		
		
				
						
								
										3.
										       
								
						
						
								Ensure that .NET 1.1 **SP1** is properly installed.
						
				
		
		
				
						
								
										·
										         
								
						
						
								Vista does not include .NET v1.1 by default.
						
				
		
		
				
						
								
										·
										         
								
						
						
								Because .NET 1.1 is not included by default, .NET v1.1 *SP1* is also not included.
						
				
		
		
				
						
								
										·
										         
								
						
						
								Without SP1, W3WP.exe will crash when running an appPool under v1.1 due to DEP
						
				
		
		
				
						
								
										·
										         
								
						
						
								To check this, make sure that "c:\Windows\Microsoft.NET\Framework\v1.1.4322\mscorsvr.dll" is version "1.1.4322.2032" or higher.
						
				
		
		
				
				
		
		
				
						
								
										·
										         
								
						
						
								Unless you are 100% sure that SP1 for .NET is installed, you *really* should double-check this.
						
				
		
		
				
						
								
										·
										         
								
						
				
				
						If you need to install .NET 1.1 SP1, you can download the upgrade here: 
						
								http://www.microsoft.com/downloads/details.aspx?familyid=A8F5654F-088E-40B2-BBDB-A83353618B38&displaylang=en.
						
				
		
		
				
						
								
										4.
										       
								
						
						Enable IIS 6.0 compatiblity.
				
		
		
				
						
								
										a.
										       
								
						
						
								Open "Control Panel".
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Double-click "Programs and Features".
						
				
		
		
				
						
								
										c.
										       
								
						
						
								Expand "Internet Information Services".
						
				
		
		
				
						
								
										d.
										      
								
						
						
								Click on “Turn Windows Features On and Off”.
						
				
		
		
				
						
								
										e.
										      
								
						
						
								Expand "Web Management Tools".
						
				
		
		
				
						
								
										f.
										        
								
						
						
								Check “IIS 6 Management Compatibility”.
						
				
		
		
				
				
		
		
				
						
								
										5.
										       
								
						
						
								Enable ASP.NET Application Development Features, if not already done so.
						
				
		
		
				
						
								
										a.
										       
								
						
						
								Open "Control Panel".
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Double-click "Programs and Features".
						
				
		
		
				
						
								
										c.
										       
								
						
						
								Expand "Internet Information Services".
						
				
		
		
				
						
								
										d.
										      
								
						
						
								Click on “Turn Windows Features On and Off”.
						
				
		
		
				
						
								
										e.
										      
								
						
						Expand “World Wide Web Services”.
				
		
		
				
						
								
										f.
										        
								
						
						Expand “Application Development Features”.
				
		
		
				
						
								
										g.
										       
								
						
						Check “ASP.NET”.
				
		
		
				
						
								
										                                                 
										Note: 
										 
								
						
						“.NET Extensibility”, “ISAPI Extensions”, and “ISAPI Filters” are dependencies, so they become automatically checked.
				
		
		
				
						
								
										6.
										       
								
						
						
								Register v1.1 with IIS.
						
				
		
		
				
						
								
										a.
										       
								
						
						
								Open a CMD prompt.
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Change your directory to c:\Windows\MIcrosoft.net\Framework\v1.1.4322.
						
				
		
		
				
						
								
										c.
										       
								
						
						
								Run "aspnet_regiis -ir -enable".
						
				
		
		
				
						
								
										·
										   
								
						
						
								"ir" registers v1.1 with IIS but doesn't change any existing script mappings.
						
				
		
		
				
						
								
										·
										   
								
						
						
								"enable" marks aspnet_isapi.dll as "Allowed" under "ISAPI and CGI Restrictions".
						
				
		
		
				
						
								
										·
										   
								
						
						
								aspnet_regiis should also create a new AppPool under "Application Pools" called "ASP.NET 1.1" that is configured with the "Classic" pipline, and "Enable32BitAppOnWin64" set to true if a 64-bit OS.
						
				
		
		
				
				
		
		
				
						
								
										7.
										       
								
						
						
								Make the new "ASP.NET 1.1" appPool the default.
						
				
		
		
				
						
								
										a.
										       
								
						
						
								Open the IIS manager.
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Select the "Web Sites" folder.
						
				
		
		
				
						
								
										c.
										       
								
						
						
								Under "Actions" on the upper right, click "Set Web Site Defaults...".
						
				
		
		
				
				
		
		
				
						
								
										d.
										      
								
						
						
								Change the "Application Pool" setting to "ASP.NET 1.1".
						
				
		
		
				
				
		
		
				
						
								
										8.
										       
								
						
						
								**Alternative step to 7** - Change the AppPool to "ASP.NET 1.1" after creating the ASP.NET project instead of making it the default
						
				
		
		
				
						
								
										a.
										       
								
						
						
								Create the v1.1 ASP.NET project via Visual Studio. Attempting to run the project at this point will fail if the 1.1 appPool is not the default.
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Open the IIS manager.
						
				
		
		
				
						
								
										c.
										       
								
						
						
								Right-click the newly create application directory and choose "Advanced Settings".
						
				
		
		
				
						
								
										d.
										      
								
						
						
								Change the "Application Pool" to "ASP.NET 1.1".
						
				
		
		
				
						
								
										e.
										      
								
						
						
								Go back to Visual Studio and attempt to run/debug project.
						
				
		
		
				
						
								
										9.
										       
								
						
				
				
						Adjust ISAPI and CGI restrictions in IIS.
				
		
		
				
						
								
										a.
										       
								
						
						
								
										Go into IIS
								
						
				
				
						7.0 manager and select your server.
				
		
		
				
						
								
										b.
										      
								
						
				
				
						Select ISAPI and CGI restrictions.
				
		
		
				
				
		
		
				
						
								
										c.
										       
								
						
				
				
						Ensure ASP v1.1 has the restriction set to Allowed.
				
		
		
				
				
		
		
				
						
								
										10.
										   
								
						
						
								Launch Visual Studio 2003 as Administrator.
						
				
		
		
				
						
								
										11.
										   
								
						
						
								Create a simple web application with some event handling to test debugging (a button that displays text in a label control is what I used to test).
						
				
		
		
				
						
								
										12.
										   
								
						
						Attach to the w3wp.exe process.
				
		
		 
		
				
						
								
										13.
										   
								
						
						Set breakpoints where appropriate.
				
		
		
				
						
								
										14.
										   
								
						
						Launch the website in a browser (eg. 
				
				
						http://localhost/YourWebApp/YourPage.aspx
				
				).
		
		
				
						
								
										15.
										   
								
						
						Ensure your breakpoints are being hit.
				
		
		
				
						
								
										16.
										   
								
						
						
								That’s it!  
								Happy coding.
						
				
		
		 
]]></description> 
					<pubDate>Thu, 17 Jan 2008 23:14:48 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/1/17/using-vs7-in-vista/</guid>
				</item>
			
				<item>
					<title>KeyLimeTie Mass Emailer - Free!</title> 
					<link>http://www.newvisionusa.com/blog/2008/1/2/keylimetie-mass-emailer-free/</link> 
					<description><![CDATA[Over the years, we have built a number of Mass Emailing applications for customers (some web, some windows apps).I took a recent version I created and added more to it and am now making it available to anyone.Download ApplicationFeatures - Use email list with custom fields from database or cut-and-paste in an email list. - Validate email addresses and view invalid email addresses. - Specify all fields of an email including From, Reply To, CC, BCC, Subject and Body. Attachments coming soon! - Allows for custom fields in the title and body. - Send test email to verify formatting accuracy.]]></description> 
					<pubDate>Thu, 03 Jan 2008 02:42:02 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2008/1/2/keylimetie-mass-emailer-free/</guid>
				</item>
			
				<item>
					<title>How to Communicate between ASP.NET and Flash</title> 
					<link>http://www.newvisionusa.com/blog/2007/12/18/how-to-communicate-between-aspnet-and-flash/</link> 
					<description><![CDATA[Ever wonder how to send data back and forth between ASP.NET and Flash?About a year ago, we designed and built the DIY Floor Plan website (http://www.diyfloorplan.com). We needed the ability to send data between the Flash Floor Plan Designer and the ASP.NET web pages that saved the data to the database. We wanted the floor plan designer to be as "dumb" as possible...simply design the floor plan and allow the ASP.NET application manage the data. Here's some quick code snippets that will show you how to do it very easily.ViewFloorPlan.aspxThis page displays the public, non-editable version of the floor plan. The important thing here is that we put the Floor Plan GUID in a Flash Parameter. We use a GUID to prevent users from seeing floor plans that are not publicly available by the floor plan administrator. The Flash application uses the GUID as the key to communicate with the ASP.NET application.1"text/javascript">
2    var so = new SWFObject("/flash/map_client.swf", "map_client", "775", "650", "6", "#ececec");
3    so.addParam("menu", "false");
4    so.addParam("quality", "high");
5    so.addParam("wmode", "transparent");
6    so.addParam("allowScriptAccess", "sameDomain");
7    so.addParam("movie", "/flash/map_client.swf");
8    so.addParam("bgcolor", "#ffffff");
9    so.addParam("FlashVars", "FloorPlanGUID=");
10    so.write("flashcontent1");
11FlashGetData.aspxThis page is used by the Flash application to get data. The ASPX portion of this web page has no HTML or controls. When processing the Flash application's request, we output the data it needs in the HTML in a name-value pair. A little explanation...this page is called for the floor plan XML or an individual booth's details (name, address, etc.). After calling the database to get the data, it's written to the output HTML as field=value.1public partial class FlashGetData : System.Web.UI.Page
2{
3protected void Page_Load(object sender, EventArgs e)
4    {
5       if (Request.QueryString["Mode"] != null)
6        {
7            try8            {
9                //Extract mode10                Enums.ModeEnum mode =                            (Enums.ModeEnum)int.Parse(Request.QueryString["Mode"].ToString());
1112                //Process based on mode13                DataSet ds = null;
14                DataRow row;
15                if (mode == Enums.ModeEnum.RequestFloorPlan)
16                {
17                    //Extract Querystring parameters18                    string floorPlanGUID = Request.QueryString["FloorPlanGUID"].ToString();
1920                    //Get the data21                    ds = FloorPlans_BLL.SelectFloorPlansByFloorPlanGUID(new Guid(floorPlanGUID));
22                    row = ds.Tables[0].Rows[0];
23                    Response.Write("FloorPlanXML=" + row["FloorPlanXML"].ToString());
24                }
25                else if (mode == Enums.ModeEnum.RequestCompanyDetails)
26                {
27                    //Extract Querystring parameters28                    string floorPlanGUID = Request.QueryString["FloorPlanGUID"].ToString();
29                    string boothID = Request.QueryString["BoothID"].ToString();
3031                    //Get the data32                    ds = Companies_BLL.SelectCompaniesByFloorPlanIDBoothID(                               new Guid(floorPlanGUID), boothID);
33                    Response.Write("CompanyDetails=" + BuildCompanyDetails(boothID, ds));
34                }
35            }
36            catch (Exception ex)
37            {
38                Helpers.ProcessException(ex);
39            }
40        }
41    }
42}FlashSaveData.aspxThis page is used in the administration area. Again, the ASPX portion of this web page has no HTML or controls.The Flash movie executes a command like: xmlDoc.sendAndLoad("FlashSaveData.aspx?FloorPlanGUID=xxx-xxx-xxx-xxx", returnXML, "POST");The important point of this code is Line 19. The Flash application posts data in the Request stream.1public partial class FlashSaveData : System.Web.UI.Page
2{
3protected void Page_Load(object sender, EventArgs e)
4    {
5        //The Flash movie executes a command like:6        //xmlDoc.sendAndLoad("FlashSaveData.aspx?FloorPlanGUID=xxx-xxx-xxx-xxx",                    returnXML, "POST");78         XmlDocument doc = null;
9         FloorPlans floorplans = null;
10        FloorPlanCompanies fpc = null;
11        DataSet ds = null;
12        try13        {
14            if (Request.QueryString["FloorPlanGUID"] != null)
15            {
16                //Extract GUID and XML17                string floorPlanGUID = Request.QueryString["FloorPlanGUID"].ToString();
18                doc = new XmlDocument();
19                doc.Load(Request.InputStream);
2021                //Get the FloorPlan row22                ds = FloorPlans_BLL.SelectFloorPlansByFloorPlanGUID(new Guid(floorPlanGUID));
23                DataRow row = ds.Tables[0].Rows[0];
2425                //Build FloorPlans object26                floorplans = new FloorPlans();
27                floorplans.FloorPlanID = Int32.Parse(row["FloorPlanID"].ToString());
28                floorplans.FloorPlanGUID = new Guid(row["FloorPlanGUID"].ToString());
29                floorplans.UserID = Int32.Parse(row["UserID"].ToString());
30                floorplans.Title = row["Title"].ToString();
31                floorplans.URL = row["URL"].ToString();
32                floorplans.FloorPlanXML = doc.InnerXml;
33                floorplans.Active = (bool)row["Active"];
34                floorplans.RewriterID = Int32.Parse(row["RewriterID"].ToString());
3536                //Make sure all booths are now in the database37                XmlNodeList objNodes = doc.SelectNodes("./floorplan/booths/boothtxt");
38                foreach (XmlNode objNode in objNodes)
39                {
40                    fpc = new FloorPlanCompanies();
41                    fpc.FloorPlanID = Int32.Parse(row["FloorPlanID"].ToString());
42                    fpc.BoothID = objNode.InnerXml;
43                    fpc.CompanyID = 0;
44                    FloorPlanCompanies_BLL.SaveFloorPlanCompanies(fpc, false, null);
45                }
4647                //Save to database48                FloorPlans_BLL.UpdateFloorPlans(floorplans);
49            }
50            else51                throw new Exception("FloorPlanGUID missing");
52        }
53        catch (Exception ex)
54        {
55            Helpers.ProcessException(ex);
56        }
57        finally58        {
59            if (ds != null)
60            {
61                ds.Dispose();
62                ds = null;
63            }
64            fpc = null;
65            floorplans = null;
66            doc = null;
67        }
68    }
69}]]></description> 
					<pubDate>Wed, 19 Dec 2007 05:29:46 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/12/18/how-to-communicate-between-aspnet-and-flash/</guid>
				</item>
			
				<item>
					<title>How to make an AJAX Postback with JavaScript</title> 
					<link>http://www.newvisionusa.com/blog/2007/12/3/how-to-make-an-ajax-postback-with-javascript/</link> 
					<description><![CDATA[Recently, we were working on a project that required us to make an AJAX postback with a table cell (TD) onclick event. We were "forced" to do this because the webpage designer wanted the search results displayed in a table and the TD's had onmouseover, onmouseout and onmouseclick events. The way he designed it was very nice and we didn't want to change it because AJAX for .NET didn't natively support the TD click event.We quickly searched the web for an answer and couldn't find anything. Over the past few months many others asked how to do it too, but nobody could provide an answer. It's really not that difficult...you just need to be a little creative and think how AJAX works in ASP.NET.In our project, we were binding location search results to a Repeater. In the onclick event, we added code to make a call to JavaScript function "makeAJAXPostback" and passed the ID. Originally, we tried to make a call to __doPostBack, but that forces a full page postback:1"rptSearchResults" runat="server">
2    
3        "100%" border="0" cellpadding="0" cellspacing="4">
4            
5                
6                    class="agentbox" onmouseover="style.backgroundColor='#e0e8f3';"                              onmouseout="style.backgroundColor='#f1f1f1';"7                        onclick="makeAJAXPostback('ID")%>')">
8                        "DisplayName")%>
9                        
10                        "Address1")%>
11                        
12                        "City")%>
13                        
14                        "StateIDCode")%>
15                        "Zip")%>
16                        
17                        "Phone")%>
18                    
19                
20        
21    
22
23At the bottom of the page, we added a the "makeAJAXPostback" function.We also added a hidden field and a hidden HTML submit button:1            "submit" id="btnTDClicked" name="btnTDClicked" style="display: none" />
2            "hidden" id="hidTDClickID" name="hidTDClickID" />
3        
4    
5    "text/javascript">
6        function makeAJAXPostback(TDClickID)
7        {
8            document.forms[0].hidTDClickID.value = TDClickID;
9            document.forms[0].btnTDClicked.click();
10        }
11    
12
13When the TD cell is clicked, the "makeAJAXPostback" function is called, the ID is put in the hidden field and the hidden button is clicked. Because the AJAX Toolkit handles all form postbacks, the button click is automatically made via AJAX.All that's left is to handle the postback on the server. In Page_Load, we simply check if the hidden field is populated and process accordingly:1//Handle TD Clicked Event when user clicks search results2if (Request.Form["hidTDClickID"] != null &&
3    Request.Form["hidTDClickID"].ToString() != "")
4    TDClicked(int.Parse(Request.Form["hidTDClickID"].ToString()));]]></description> 
					<pubDate>Mon, 03 Dec 2007 22:00:21 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/12/3/how-to-make-an-ajax-postback-with-javascript/</guid>
				</item>
			
				<item>
					<title>Convert Plain Text to MD5 Hash</title> 
					<link>http://www.newvisionusa.com/blog/2007/11/20/convert-plain-text-to-md5-hash/</link> 
					<description><![CDATA[		Nothing groundbreaking here, but if you need to know how to convert plain text to an MD5 Hash, here you go:
		1using System;
2using System.Security.Cryptography;
3using System.Text;
45public static string ConvertToMD5(string plainText)
6{
7    byte[] input = Encoding.UTF8.GetBytes(plainText);
8    byte[] output = MD5.Create().ComputeHash(input);
9    return Convert.ToBase64String(output).Trim();
10}
		/html>]]></description> 
					<pubDate>Wed, 21 Nov 2007 04:08:32 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/11/20/convert-plain-text-to-md5-hash/</guid>
				</item>
			
				<item>
					<title>Enable File Upload on an AJAX Webpage</title> 
					<link>http://www.newvisionusa.com/blog/2007/11/8/enable-file-upload-on-an-ajax-webpage/</link> 
					<description><![CDATA[File uploads do not work when doing async postbacks due to security restrictions. Because of this, we have to add a PostBackTrigger. PostbackTriggers enable controls inside an UpdatePanel to cause a postback instead of performing an asynchronous postback. Here's a code snippet that shows how to accomplish this.                                                                                             By adding the PostbackTrigger, you can mix controls that make AJAX calls with controls that require the postback and maintain the good user experience. ]]></description> 
					<pubDate>Fri, 09 Nov 2007 03:51:35 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/11/8/enable-file-upload-on-an-ajax-webpage/</guid>
				</item>
			
				<item>
					<title>Speed Up Your Site! 8 ASP.NET Performance Tips</title> 
					<link>http://www.newvisionusa.com/blog/2007/10/11/speed-up-your-site-8-aspnet-performance-tips/</link> 
					<description><![CDATA[
		I see these "Top 10 Ways..." articles all the time, but this one was the first in a while that didn't restate what all of the other ones talk about.Website: http://www.sitepoint.com/article/aspnet-performance-tips1. Determine what to optimizeDiscusses quick, simple techniques such as tracing.2. Decrease the size of the view stateThis one really got my attention. ViewState is so powerful, but can kill your website too. With AJAX gaining so much momentum, ViewState compression is a must. The article even gives you the C# class! Storing ViewState on the server can also be a great technique.3. Decrease the bandwidth that my site usesHTTP Compression has been around for several years. With IIS 6.0, it requires no 3rd party controls or custom code. Why wouldn't you enable it today?4. Improve the speed of my siteOutput caching can improve site speed very quickly and easily. Nothing new here.5. Refresh cache when the data changesDepending on how you bind data to objects or store cache, this tip may or may not apply to you. But definitely worth reading.6. Gain more control over the ASP.NET cacheUsing the Cache class/object is a great technique, but only when it makes sense...do not overuse it.7. Speed up database queriesWe have helped many clients speed up their website throughout the years. Evaluating and optimizing the database is one of the easiest and best bang for your buck approaches. Just run down the list: Indexes, Stored Procs, Views, locking, etc.8. Troubleshoot slow queriesA quick guide to understanding execution plans.
]]></description> 
					<pubDate>Thu, 11 Oct 2007 17:17:50 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/10/11/speed-up-your-site-8-aspnet-performance-tips/</guid>
				</item>
			
				<item>
					<title>PayPal Payment Data Transfer (PDT) WebControls Fix</title> 
					<link>http://www.newvisionusa.com/blog/2007/9/4/paypal-payment-data-transfer-pdt-webcontrols-fix/</link> 
					<description><![CDATA[Over the past several years, we have implemented PayPal into our websites and many
of our customer websites. Since PayPal created their 
    Developer Program, the methods to access PayPal shopping carts and checkout
has continued to grow. There are easy a half dozen ways to do it today 
    [Learn More]. One popular method is the 
        Payment Data Transfer (PDT) program. Back on 1/28/2006, I blogged about
how to easily implement PDT into your website.


Problem: Throughout the life of the PDF program, several versions
of the PayPal WebControls have been released. The most recent version is v1.0.22.19341.
But there's a problem with the release that PayPal never resolved. When using the
DLLs and .NET Web Controls to test in the Sandbox environment, the UseSandbox property
is always ignored and the Postaction is always set to the Production environment.
This makes it impossible to test in their Sandbox environment.


Solution
We created a very simple class to override the PostAction property. See code below.

Download code


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using PayPal.Web.Controls;

namespace PayPalCustom
{
    public class CustomUploadCompleteCartButton : UploadCompleteCartButton
    {
        public override string PostAction
        {
            get
            {
                return
this.UseSandbox ?
                    "https://www.sandbox.paypal.com/cgi-bin/webscr"
:
                    "https://www.paypal.com/cgi-bin/webscr";
            }
        }
    }
}

To implement into your website:
1. Add PayPalCustom.dll as a Reference in your application.
2. Change the "Register" tag at the top of your page to:

3. Change the UploadCompleteCartButton WebControl tag to



]]></description> 
					<pubDate>Tue, 04 Sep 2007 17:16:52 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/9/4/paypal-payment-data-transfer-pdt-webcontrols-fix/</guid>
				</item>
			
				<item>
					<title>PayPal PDT Sandbox Setup</title> 
					<link>http://www.newvisionusa.com/blog/2007/8/1/paypal-pdt-sandbox-setup/</link> 
					<description><![CDATA[I recently implemented a PayPal checkout solution using Payment Data Transfer (PDT) to retrieve the transaction details. 
Testing the transaction process required using PayPal Sandbox, which I have used before and for which I already had my acccount 
set up. But when my customer wanted to do some testing, I had them set up their own Sandbox account, and was 
reminded that the initial setup is not simple. Eventually, I had to provide step by step instructions to get them up and
running correctly.

Here are those instructions for anyone needing to go through this for the first time:
1. Go to https://developer.paypal.com/ and create a new PayPal Developer 
account. After confirming the account, log in and you will see:
        - Tab for Test Accounts – this is where you create Buyer and Seller accounts. A Seller account 
    provides you with a fake online store, and a Buyer account allows you to make fake purchases from that store.
        - Tab for Test Email – this is where all the order/payment emails are sent during test purchases. 
    The emails are contained within the Sandbox environment, not sent to external email accounts.
        - Tab for API Credentials – for a PDT application, ignore this tab completely. There is an Identity 
    Token here, but it is not the one needed for the "PayPalPDTID” in the web.config. There is also a seller password here, 
    but it is not the one you will use during testing.
2. In the upper right corner, click “Enter Sandbox”.
        - Log in to Sandbox using the Seller Test Account credentials. For PDT to work, go to “Profile” 
    tab, then “Selling Preferences”, then “Website Payment Preferences” and confirm you have the following settings:
            “Auto Return for Website Payments” is on, return URL is set to 
        http://www.yoursite.com/PDTHandler.aspx (or whatever page you use to process the transaction details.
            “Payment Data Transfer” is on. Note that this is where you get the Identity Token that 
        should be used in the web.config.

Back in the project, you need to open the web.config and check these settings:

appSettings>
	add key="RootURL" value="http://localhost:xxxxx/ProjectName/"/>
		   
	!-- Sandbox Settings -->
	add key="PayPalServer" value="https://www.sandbox.paypal.com/cgi-bin/webscr"/>
	add key="UseSandbox" value="true"/>
	add key="PayPalEmailAddress" value="Seller email address used to login to Sandbox"/>
	add key="PayPalPDTID" value="Identity Token from the Website Payment Preferences"/>		
appSettings>

You are finally ready to run the project and make a purchase. When it redirects to PayPal, make sure it goes to 
https://www.sandbox.paypal.com/cgi-bin/webscr and login 
using the Buyer Test Account credentials. Complete the purchase and wait for it to redirect back to the project. You should 
have a message page advising that the transaction failed or was completed.

Finally, you can go back to https://developer.paypal.com/, enter Sandbox, 
login using the Seller credentials, and under My Account - History, see a report of all the transactions posted.]]></description> 
					<pubDate>Wed, 01 Aug 2007 23:16:08 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/8/1/paypal-pdt-sandbox-setup/</guid>
				</item>
			
				<item>
					<title>Some Design Principles To Consider</title> 
					<link>http://www.newvisionusa.com/blog/2007/7/24/some-design-principles-to-consider/</link> 
					<description><![CDATA[
		I came across an interesting set of principles that you might want to keep in mind the next time you set out to design an application, a website, or even improve your daily life. They are The Laws of Simplicity and were conceived by John Maeda, an artist and noted computer scientist from the MIT Media Lab. He compiled them in a short, 100-page book (and posted them on his website as well). I found them in a back issue of Wired magazine, in an article that applied them in a critique some new gadget. I have since found that they increasingly influence my own analysis of UIs and websites, and occassionally use them as the basis for discussions with clients to keep a design session on track.
		The Laws are:
		
				 1. Reduce - The simplest way to achieve simplicity is through thoughtful reduction of functionality.
				 2. Organize - Organization makes a system of many appear fewer.
				 3. Time - Savings in time feel like simplicity.
				 4. Learn - Knowledge makes everything simpler.
				 5. Differences - Simplicity and complexity need each other.
				 6. Context - What lies in the periphery of simplicity is de?nitely not peripheral.
				 7. Emotion - More emotions are better than less.
				 8. Trust - In simplicity we trust.
				 9. Failure - Some things can never be made simple.
				10. The One - Simplicity is about subtracting the obvious, and adding the meaningful.
		
		You can find a more detailed explanation of each law on his site
		 
		
				www.petermorano.com
		
		 
		 
]]></description> 
					<pubDate>Tue, 24 Jul 2007 17:17:11 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/7/24/some-design-principles-to-consider/</guid>
				</item>
			
				<item>
					<title>Build an iPhone friendly webpage</title> 
					<link>http://www.newvisionusa.com/blog/2007/7/14/build-an-iphone-friendly-webpage/</link> 
					<description><![CDATA[
digg_url = "http://digg.com/apple/Build_an_iPhone_friendly_webpage_Sample_code_included";



		

I just got the new iPhone and it's amazing. What you see it doing in the commercials is accurate...and it does a lot more! So right away, I want to know how to implement my own software. Maybe start developing some 3rd party applications. I researched a little and found out no iPhone Software Development Kit (SDK) is available. It seems like Apple is instead telling people to develop applications as webpages. But then you cannot actually interact with the iPhone...and you cannot access the iPhone database (Contacts, Favorites, etc.).I searched a bit more and found the following sample webpage released by Apple:http://developer.apple.com/samplecode/Puzzler/View webpage with your iPhone:http://www.iarchitect.net/Uploads/126/index.htmlNote: When trying to view the webpage in a standard browser (IE, Firefox), it doesn't display much. The weird thing is that if you click "Print Preview", you'll see the game.Description"Puzzler" is a fun and interactive game that illustrates the use of web standards and JavaScript for the iPhone. This application makes advanced usage of mouse-handlers for user-input.To play the game simply double-click or double-tap on any set of 2 or more balls of the same color that are touching. The balls will disappear and any balls above or to the left of the balls you just eliminated will shift into new positions. The goal is to clear all the balls from the screen.ScreenshotsClick any image to see a larger version



  Navigate to iArchitect.net
  Click into this Blog
  Start Game

 



  Tap circles with finger
  All cleared. You win!
]]></description> 
					<pubDate>Sat, 14 Jul 2007 23:21:06 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/7/14/build-an-iphone-friendly-webpage/</guid>
				</item>
			
				<item>
					<title>I Forgot The sa Account Password!</title> 
					<link>http://www.newvisionusa.com/blog/2007/7/12/i-forgot-the-sa-account-password/</link> 
					<description><![CDATA[
		At one time or another, we will all find ourselves trying to remember the sa password. Now, thanks to Rodney Landrum's article and the sp_help_revlogin stored procedure, there is an easy way to deal with this.
		You can find his article here
		 
		
				www.petermorano.com
		
]]></description> 
					<pubDate>Thu, 12 Jul 2007 16:47:12 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/7/12/i-forgot-the-sa-account-password/</guid>
				</item>
			
				<item>
					<title>Use Dynamic Connection Strings MDAAB</title> 
					<link>http://www.newvisionusa.com/blog/2007/7/4/dynamic-connection-strings-microsoft-daab/</link> 
					<description><![CDATA[I recently came across a situation where I needed to pass the Microsoft Data Access Application Blocks a dynamic connection string. Out of the box, the DAAB does not support this. Solution: Create a simple method that accepts a connection string and return a Database object. Code Before:Database db = DatabaseFactory.CreateDatabase();Code After:Database db = CustomDatabaseFactory.CreateDatabase(connstring);Class Code:1using System;
2using System.Collections.Generic;
3using System.Data.Common;
4using System.Text;
5using Microsoft.Practices.EnterpriseLibrary.Data;
6namespace Satisfyd.DataAccessLayer
7{
8//This class is used to dynamically set the connection string9//while using the Microsoft Data Application Blocks10publicstaticclass CustomDatabaseFactory
11    {
12staticreadonly DbProviderFactory dbProviderFactory =
13            DbProviderFactories.GetFactory("System.Data.SqlClient");
1415publicstatic Database CreateDatabase(string connectionString)
16        {
17returnnew GenericDatabase(connectionString, dbProviderFactory);
18        }
19    }
20}]]></description> 
					<pubDate>Wed, 04 Jul 2007 16:00:24 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/7/4/dynamic-connection-strings-microsoft-daab/</guid>
				</item>
			
				<item>
					<title>Re-Enable A Disabled SQL Server 2005 Service Broker</title> 
					<link>http://www.newvisionusa.com/blog/2007/6/27/re-enable-a-disabled-sql-server-2005-service-broker/</link> 
					<description><![CDATA[
		If you are caching data using SQL Cache Dependency with the SqlCacheDependency parameter set to "CommandNotification", and then restore or detach/attach your database (say, during a deployment), you will likely see this error: 
		
				
						"The SQL Server Service Broker for the current database is not enabled, and as a result query notifications are not supported. Please enable the Service Broker for this database if you wish to use notifications." 
				
		
		This is caused by the fact that the service broker is disabled automatically during these operations. To re-enable it, you need to run the following:
		
		
		
				   ALTER DATABASE 
				YOUR_DATABASE 
				SET ENABLE_BROKER
		
		 
		 
		
				www.petermorano.com
		
]]></description> 
					<pubDate>Wed, 27 Jun 2007 23:56:53 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/6/27/re-enable-a-disabled-sql-server-2005-service-broker/</guid>
				</item>
			
				<item>
					<title>Acropolis: The Future Of Windows Client Development</title> 
					<link>http://www.newvisionusa.com/blog/2007/6/21/acropolis-the-future-of-windows-client-development/</link> 
					<description><![CDATA[
		Microsoft has released the Acropolis CTP, a set of tools and components that help developers quickly assemble applications from loosely-coupled parts and services. With Acropolis you will be able to:
		
				
						
								
										
												Quickly create WPF enabled user experiences for your client applications. 
										
										
												Build client applications from reusable, connectable, modules that allow you to easily create complex, business-focused applications in less time. 
										
										
												Integrate and host your modules in applications such as Microsoft Office, or quickly build stand-alone client interfaces. 
										
										
												Change the look and feel of your application quickly using built-in themes, or custom designs using XAML. 
										
										
												Add features such as workflow navigation and user-specific views with minimal coding. 
										
										
												Manage, update, and deploy your application modules quickly and easily.
										
								
								
										David Hill has put together a short video walkthrough of using Acropolis: 
								
								
										
												
														
																
																		Acropolis Video
																
														
												
										
								
								
										You can download the CTP here:
								
								
										
												
														
																
																		Acropolis CTP Download
																
														
												
										
								
								
										
										
										 
								
						
				
		
]]></description> 
					<pubDate>Thu, 21 Jun 2007 20:21:36 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/6/21/acropolis-the-future-of-windows-client-development/</guid>
				</item>
			
				<item>
					<title>How to Add a Digg Link to Your Website</title> 
					<link>http://www.newvisionusa.com/blog/2007/6/3/how-to-add-a-digg-link-to-your-website/</link> 
					<description><![CDATA[If you're not familiar with Digg.com, you might want to check it out.What is Digg?"Digg is a user driven social content website. Ok, so what the heck does that mean? Well, everything on Digg is submitted by our community (that would be you). After you submit content, other people read your submission and Digg what they like best. If your story rocks and receives enough Diggs, it is promoted to the front page for the millions of visitors to see.
What can you do as a Digg user? Lots. Every person can digg (help promote), bury (help remove spam), and comment on stories... you can even Digg and bury comments you like or dislike. Digg also allows you to track your friends' activity throughout the site — want to share a video or news story with a friend? Digg it!" 
I have been visiting Digg at least 2-3 times per week to read the quick posts. I usually jump directly to "Top in 24 Hours" page. This page usually has some really interesting links: http://www.digg.com/news/popular/24hoursIf you decide to post a link, be sure your server can handle the hits. Everyday, sites crash due to too many hits too fast from Digg users. Or if your hosting provider has limits on bandwidth, you might lose your account all together. Fortunately, we have our own servers and can handle this type of traffic.Back to the topic of this blog...if you decide to post a link on Digg, here's the snippet of code you need to add to your website to add the Digg Link to your website:    digg_url = "digg url to your link";http://digg.com/tools/diggthis.js" type="text/javascript">For example:    digg_url = "http://digg.com/software/20_Promo_Code_SGMAY07_good_for_1_week";http://digg.com/tools/diggthis.js" type="text/javascript">results in this:

digg_url = "http://digg.com/software/20_Promo_Code_SGMAY07_good_for_1_week";



]]></description> 
					<pubDate>Sun, 03 Jun 2007 19:56:56 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/6/3/how-to-add-a-digg-link-to-your-website/</guid>
				</item>
			
				<item>
					<title>Google Street View</title> 
					<link>http://www.newvisionusa.com/blog/2007/5/28/google-street-view/</link> 
					<description><![CDATA[Within the past few days, Google has released a new feature to its Google Maps website. This new feature, Street View, is only available in a few cities like New York, Miami, Denver, San Francisco and Las Vegas. Not sure how it can be useful, but it is kind of cool. Just zoom into the street level and click on the blue outlined street. You will then see a photo view taken from a car.

View Las Vegas Street View

Screenshot:
]]></description> 
					<pubDate>Mon, 28 May 2007 06:00:00 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/5/28/google-street-view/</guid>
				</item>
			
				<item>
					<title>unescape() in Code Behind</title> 
					<link>http://www.newvisionusa.com/blog/2007/5/22/unescape-code-behind/</link> 
					<description><![CDATA[Ever have the need to unescape a string in your code-behind?
 Here's how:
value = Microsoft.JScript.GlobalObject.unescape(value);

Just remember to add a reference to Microsoft.JScript in your project.
You now have access to all javascript functions in your code-behind.]]></description> 
					<pubDate>Tue, 22 May 2007 06:00:00 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/5/22/unescape-code-behind/</guid>
				</item>
			
				<item>
					<title>Some cool websites we&amp;quot;ve recently found...</title> 
					<link>http://www.newvisionusa.com/blog/2007/5/17/cool-websites/</link> 
					<description><![CDATA[Some cool websites we've recently found...

kuler
http://kuler.adobe.com
"Explore, create and share color themes. Use it online or download themes to use
    with Adobe CS2 and 3."
Basically, it's an interactive color theme designer. Download any of the 1,000+
themes which are rated by visitors, or creeate your own.


Simply Google
http://lloydi.com/blog/simplygoogleoriginal.htm
The owner of this website basically put most (if not all) Google features and websites
into one easy to use page.


SitePoint Contests
http://www.sitepoint.com/contests/
Over the past 10 years, we have tried all kinds of approaches to web design. Some
worked out, but most do not. Here's the pros and cons of what we have tried and
some comments on each approach:

    Professional designers
        Pros: Original work. Direct communication with designer.
        Cons: Expensive. Only get ideas from one designer, not a pool or designers. Depending
        on the person, their availability might be limited.
        Comments: Unless the customer specifically requires it, we will not use a designer
        unless we know the person very well and he/she has consistently developed excellent
        work and is good to work with. This means he/she needs to stick to the project schedule,
        be available during core business hours and keep us up to date with progress.
        
    
    Template websites
        Pros: Very cheap ($50-$70 for Flash, PSD, HTML & CSS). 1,000 of designs to choose
        from. A lot of the designs are very professional.
        Cons: Your website design will not be unique.
        Comments: For customers who have a decent budget and need a unique design, this
        is not an option. Templates work very well for businesses where the budget is tight
        and the website design doesn't have to be unique. And realistically, what's the
        chances of you seeing your website somewhere else...maybe 1 in a million? Also you
        do get the PSD, so you can easily modify parts of it. We still use templates all
        the time. When we choose a template, we buy it for the overall look-and-feel. Most,
        if not all, of the images are swapped out with our own. And of course the logo is
        replaced with ours.
        
    
    Crowdsourcing websites
        Pros: Affordable (Price amount + $25 flat fee or 10%). Unique designs. Designers
        fight over prize money.
        Cons: There's a chance only a few designers may participate in your contest and
        you won't have anything good to choose from.
        Comments: We have been using 
            Design Outpost for a few months now (posted 6 projects). For the most part,
        it has worked out well until my most recent project received only one entry the
        day before the project was supposed to end. We had to cancel it. Then we found SitePoint. So
        far, it's been great, but we have only posted two projects...a logo project that
        has received over 60 entries so far (ends tonight) and a template project that has
        received only 2 entries (but doesn't end for 3 for days).
    
]]></description> 
					<pubDate>Thu, 17 May 2007 06:00:00 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/5/17/cool-websites/</guid>
				</item>
			
				<item>
					<title>Cool Business Card Designs</title> 
					<link>http://www.newvisionusa.com/blog/2007/5/8/cool-business-card-designs/</link> 
					<description><![CDATA[A few months ago, I renamed my company from New Vision to iArchitect. With any business name change comes the need for a new logo, new stationary, a new website and new business cards. Fortunately, I have been doing this long enough to create great relationships with excellent designers and also found great resources for one off jobs here and there. Today, I came across a great blog on "Cool Business Card Designs":http://creativebits.org/cool_business_card_designsI am not a very creative person, but the people who designed these business cards sure are.I thought I might share it with those of you who have businesses or are planning to start a new business. These kinds of touches can make a nice first impression.]]></description> 
					<pubDate>Tue, 08 May 2007 06:00:00 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/5/8/cool-business-card-designs/</guid>
				</item>
			
				<item>
					<title>AJAX Animated GIF</title> 
					<link>http://www.newvisionusa.com/blog/2007/4/29/ajax-animated-gif/</link> 
					<description><![CDATA[

I have been doing a lot of work with the Microsoft AJAX Toolkit lately.
Most recently, I have implemented it on a major insurance website I am always adding features to.
I am also updating the iArchitect CMS to be 100% AJAX-enabled. Very soon, you will see it on this website.


If you're not familiar with AJAX, here's the Wikipedia definition.
Basically, it's the process of updating small portions of a webpage instead of refreshing the entire page. For example,
when you leave a comment to a blog on this website, instead of refreshing the entire page, I can now just refresh the comments area.
This presents a much more enjoyable user experience and speeds up the website.


When a portion of a webpage is being updated, you will see an animated image indicating so.
While working on these websites, I found the need to create custom animated images.
These are not easy to create...until now.
Visit the following link and you can create your own animated AJAX image in seconds!
http://www.ajaxload.info
]]></description> 
					<pubDate>Mon, 30 Apr 2007 04:12:00 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/4/29/ajax-animated-gif/</guid>
				</item>
			
				<item>
					<title>Google PageRank</title> 
					<link>http://www.newvisionusa.com/blog/2007/4/26/google-page-rank/</link> 
					<description><![CDATA[A very interesting article on Google PageRank:http://searchengineland.com/070426-011828.php]]></description> 
					<pubDate>Fri, 27 Apr 2007 04:12:00 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/4/26/google-page-rank/</guid>
				</item>
			
				<item>
					<title>Simple XML Validator</title> 
					<link>http://www.newvisionusa.com/blog/2007/3/24/simple-xml-validator/</link> 
					<description><![CDATA[I recently had the need to validate an XML document against its schema, so I quickly threw together this application.It includes the XSD document (schema) for the Google Sitemaps program.To use:1. Download the application2. Unzip the two files to a folder on your computer.3. Run the application and change the XSD location to where the "sitemap.xsd" file is located.4. Enter in the path of the XML document and click "Validate".The application will return with a success message or a list of error messages.]]></description> 
					<pubDate>Sat, 24 Mar 2007 17:19:00 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/3/24/simple-xml-validator/</guid>
				</item>
			
				<item>
					<title>20 Things To Remember For Good Web Copy</title> 
					<link>http://www.newvisionusa.com/blog/2007/3/14/good-web-copy/</link> 
					<description><![CDATA[1. Tight writing. That doesn't mean bad or easy writing.2. Copy of about 600-800 words is better for SEO and catching the long tail of search.3. Title – Subject – Support, in that order, like subject, verb, object.4. Titles should be snappy and informative – clickable, but clear.5. Leads (first sentence or paragraph) should get to the point. Tell the reader what the article's about first thing.6. No fancy, wordy intros where it's not clear what you're talking about.7. Information beats fluff every time. Pretty is for books and newspapers (and only sometimes).8. Information does not beat style every time. Style keeps people awake.9. Sans serif fonts are easier and faster to read on computer screens.10. White space is awesome – even better than big, pretty pictures.11. Content should be scannable.12. Think in bullets and subtitles.13. People like lists.14. Pictures should be specific and informative, not generic, decorative and ad-like.15. Photos should be relevant to content.16. People in pictures should look friendly and approachable (and have their whole head).17. Photos should be full body if possible.18. Spell stuff right. It makes you look smarter.19. Grammar IS important. Unless you're not really a professional.20. Online press releases should be even tighter than Web copy.Source: WebProNews]]></description> 
					<pubDate>Thu, 15 Mar 2007 05:03:45 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/3/14/good-web-copy/</guid>
				</item>
			
				<item>
					<title>Sitemap Generator v4.1.1 Beta Available</title> 
					<link>http://www.newvisionusa.com/blog/2007/3/13/sitemap-generator-v411-released/</link> 
					<description><![CDATA[Version 4.1.1 is now available with some bug fixes: - Scheduling Service may run multiple times if spidering process takes over 1 hour. - FTP cannot communicate with server in some rare scenarios. - Edit Results vertical scrollbar sometimes becomes disabled. - Spidering error message "Object reference not set" occurs when spidering stopped before completing.This is a beta release and has been tested.New users: I recommend all visitors who have not installed my Google software to install this beta version.Existing users: Please uninstall the current version and install this version. All websites and preferences will remain.Download Sitemap Generator v4.1.1]]></description> 
					<pubDate>Tue, 13 Mar 2007 06:45:09 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/3/13/sitemap-generator-v411-released/</guid>
				</item>
			
				<item>
					<title>Sitemap Generator v4.1 Released!!!</title> 
					<link>http://www.newvisionusa.com/blog/2007/3/4/sitemap-generator-v41-released/</link> 
					<description><![CDATA[Version 4.1 Released with all of the features you asked for and much more!				Generate Google, Yahoo and HTML Sitemaps....and now RSS Feeds!Version 4.0 was released only one and a half weeks ago, but I've received a lot of great response.Because of all of the great feature requests, I decided to jump on them right away and get them out in a v4.1.Download it today and check it out.Download - Try it today for FREE!Download Sitemap Generator v4.1New Features in v4.1:- Preferences: Ability to specify the spider start directory.- Preferences: Ability to disable advertising- Preferences: Last Modified Date has been overhauled! Instead of just specifying a default date, your options are:"Use server's modified date" - While spidering, the application will read the webpage headers to get the last modified date (if available). This is the best option."Use today's date" - Especially useful when your server doesn't supply the last modified date and you want to schedule your updates."Let me specify the date" - Some people might still want to specify a default date.- Ability to export to RSS: Another format to publish your website! RSS is very popular and getting more attention everyday.]]></description> 
					<pubDate>Mon, 05 Mar 2007 04:39:51 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/3/4/sitemap-generator-v41-released/</guid>
				</item>
			
				<item>
					<title>Automating Database Maintenance in SQL Server 2005 Express</title> 
					<link>http://www.newvisionusa.com/blog/2007/2/21/sql-2005-express-maintenance/</link> 
					<description><![CDATA[When building highly scalable applications, you need a powerful database. My database of choice right now is SQL Server 2005. Since a full SQL Server license costs a few thousand dollars per processor, I use SQL Server Express. Why not...it's free! It's basically the same thing as the full blown SQL Server 2005, except there are some limitations on memory, database capacity and other things I will not hit with the websites I build on the side. It also doesn't allow you Import/Export data which is a vey useful feature. That's OK, we can script our database updates. And finally, it doesn't include scheduled maintenance. This is not good. All websites and databases MUST be backed up daily in case of a disaster.So how do we implement this?I did a quick search on Google and found the following webpage:http://www.sqldbatips.com/showarticle.asp?ID=27Download SQL scriptBasically, it's a SQL script that does the maintenance tasks for you. Simply specify the parameters based on your needs and schedule it to run with Windows Task Scheduler. That's it!Example execute callThis call executes a Full Database Backup of all user databases to c:\backups.It also verifies the backups and reports to c: eports.It keeps the backups for 2 weeks and reports for 1 week  exec expressmaint      @database      = 'ALL_USER',       @optype         = 'DB',      @backupfldr    = 'c:\backups',      @reportfldr      = 'c: eports',      @verify          = 2,      @dbretainunit  = 'weeks',      @dbretainval   = 1,      @rptretainunit  = 'weeks',      @rptretainval   = 1,      @report          = 1Example Scheduled TaskOn my server, I have it scheduled with the following parameters. It's set to run everyday at 3am.Run: "C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S.\SQLExpress -i"D:\DBBackups\UserFullBackup.sql"
		
				
						Start in: "C:\Program Files\Microsoft SQL Server\90\Tools\Binn"Additional comments1. When I ran the script for the first time, I received the following error:
				
						SQL Server blocked access to procedure 'sys.sp_OACreate' of component 'Ole Automation Procedures' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ole Automation Procedures' by using sp_configure. For more information about enabling 'Ole Automation Procedures', see "Surface Area Configuration" in SQL Server Books Online. 
						
						To resolve it, run the following SQL commands:USE masterGOsp_configure 'show advanced options', 1;GORECONFIGURE;GOsp_configure 'Ole Automation Procedures', 1;GORECONFIGURE;GO2. I then received error:
				SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', see "Surface Area Configuration" in SQL Server Books Online. 
				
				To resolve it, run the following SQL commands:USE masterGOEXEC sp_configure 'show advanced options', 1GORECONFIGURE WITH OVERRIDEGOEXEC sp_configure 'xp_cmdshell', 1GORECONFIGURE WITH OVERRIDEGOEXEC sp_configure 'show advanced options', 0GO]]></description> 
					<pubDate>Thu, 22 Feb 2007 03:14:24 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/2/21/sql-2005-express-maintenance/</guid>
				</item>
			
				<item>
					<title>Sitemap Generator v4.0 Released!!!!</title> 
					<link>http://www.newvisionusa.com/blog/2007/2/21/sitemap-generator-v4-released/</link> 
					<description><![CDATA[
				Version 4.1 is now available! 
				
						
								Click here for more details!
						
				
		
		
		
		
		(You will automatically be redirected to the new version in 5 seconds). 
]]></description> 
					<pubDate>Wed, 21 Feb 2007 08:47:34 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/2/21/sitemap-generator-v4-released/</guid>
				</item>
			
				<item>
					<title>Sitemap Generator v4.0 Pre-Release</title> 
					<link>http://www.newvisionusa.com/blog/2007/2/19/sitemap-generator-4-pre-release/</link> 
					<description><![CDATA[
				
				I have tested the main application and it's solid. It runs very fast and all of the new features run great. The scheduling part appears to be running great, but I still want to test it out on a couple more operating systems (it's very complicated code and I want to make sure it runs perfectly). I have finished testing it on Windows XP and Windows 2003, but still want to test it on Windows 2000. I plan to complete this tomorrow and release ALL of version 4.0. But if you want to get a jump start with the new features, the download link is below. When I publish the final v4 tomorrow, it will be an installation package. And if you don't care about the scheduling feature, then the download link below will be perfect for you.You'll notice the entire application is now branded with my company name, iArchitect. This is a decision I recently made to push the product under my company name with other products I will be releasing soon. One product coming soon, Web Analyzer, will be free for all licensed Sitemap Generator users! I'll let you know when it's available.]]></description> 
					<pubDate>Tue, 20 Feb 2007 05:39:42 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/2/19/sitemap-generator-4-pre-release/</guid>
				</item>
			
				<item>
					<title>Sitemap Generator v4.0 being released tonight!</title> 
					<link>http://www.newvisionusa.com/blog/2007/2/19/sitemap-generator-4/</link> 
					<description><![CDATA[After a long, long wait, I finally have version 4.0 ready! A few licensed users have been using it for the past week and have identified only a couple minor glitches. I am confident the code is solid and ready to be released. I am finishing up some installation package items and will be releasing the new version Monday night (tonight). Thank you everyone for the wait. It will be well worth it! In case you're curious, here are the features that have been added:
		
				
						
								
										
												
														When creating a new website profile, you can now copy the preferences from another profile
												
												
														Ability to specify Google sitemap file name
												
												
														HTML title is now extracted while spidering and displayed on the HTML sitemaps
												
												
														When spidering websites, the software now sets the "User Agent" property to "iArchitect Sitemap Generator v4.0"
												
												
														When spidering websites, the software now handles "302 Redirect" response codes
												
												
														When spidering is completed, all found webpage paths are sorted
												
												
														Updated XML header element per Google's update
												
												
														Customize your HTML sitemaps with header and footer templates
												
												
														Ability to export to RSS format
												
												
														Ability to copy sitemaps to a local path (useful when running software on web server)
												
												
														Ability to schedule application to run automatically
												
												
														Help tab added which displays online forums website
												
												
														Small advertising image area added in header of software; Licensed users can disable it
												
												
														Rebranded software; instead of seeing Brian Pautsch, you will now see iArchitect (my company name)
												
												
														Bug: When deleting a website profile, not all files were deleted
												
												
														Bug: For very large sites, the google sitemap index file had "/google/" in the paths 
												
										
								
						
				
		]]></description> 
					<pubDate>Mon, 19 Feb 2007 06:57:33 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/2/19/sitemap-generator-4/</guid>
				</item>
			
				<item>
					<title>Windows 2003 Server does not stream FLV videos</title> 
					<link>http://www.newvisionusa.com/blog/2007/1/16/windows-2003-flv-videos/</link> 
					<description><![CDATA[A friend of mine came across a problem trying to stream a FLV video on his customer's website. Before deploying it to their web server, he tested it successfully on his local machine and on a UNIX test server...no problems. Once he migrated the code and FLV file to the Production Windows 2003 Server, it didn't work anymore. He figured out the problem and told me about it.IssueWhen Flash Player movie files that stream external FLV files (Flash videos) are placed on a Microsoft Windows 2003 server and then viewed in a browser, the SWF file plays correctly, but the FLV video does not stream. These files work correctly if tested on other operating systems. The issue affects all FLV files played via Windows 2003 server, including files made with the Flash Video Kit for Dreamweaver MX 2004.
		This TechNote describes the steps necessary to allow Windows 2003 to stream Flash Video files.
		Note: These instructions are provided as a courtesy for customers and address the issue in Microsoft Internet Information Services (IIS) 6.0 rather than Flash.
		
				Reason
				With IIS 6.0, Microsoft changed the way streaming media is handled. Previous versions of IIS did not require any modification to stream Flash Video. Microsoft IIS 6.0, the default web server that ships with Windows 2003, requires a MIME type to recognize that FLV files are streamed media.
		
				Solution
				Please be aware that these steps do not resolve any issue with Flash, but are a configuration step for Microsoft Windows 2003 and Microsoft IIS Server 6.0. Any difficulties in executing these instructions or any errors that may arise from modifying your system settings should be addressed to Microsoft. For more details, please refer to your IIS documentation.
		1. On the Windows 2003 server, open the Internet Information Services Manager. 2. Expand the Local Computer Server. 3. Right-click the local computer server and select Properties. 4. Select the MIME Types tab. 5. Click New and enter the following information:     Associated Extension box: .FLV     MIME Type box:flv-application/octet-stream 6. Click OK. 7. Restart the World Wide Web Publishing service. Sourcehttp://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_19439]]></description> 
					<pubDate>Wed, 17 Jan 2007 02:58:10 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/1/16/windows-2003-flv-videos/</guid>
				</item>
			
				<item>
					<title>Microsoft Enterprise Library - Hosting in &quot;Medium Trust&quot; Environment</title> 
					<link>http://www.newvisionusa.com/blog/2007/1/4/enterprise-library/</link> 
					<description><![CDATA[I have been using the Microsoft Enterprise Library for many years now. For the first time, I had serious problems deploying them to a production environment today. After about an hour of searching online, I found out that a lot of people were having this problem and only a few people had figured out how to resolve it. Here's what I did....very easy, very fast. Problem:Deployed web application with any Microsoft Enterprise Library component and received the follow error: Server Error in '/' ApplicationRequired permissions cannot be acquired.Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.Exception Details: System.Security.Policy.PolicyException: Required permissions cannot be acquired.Source Error:An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.Stack Trace:[PolicyException: Required permissions cannot be acquired.]System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Boolean checkExecutionPermission) +2736869System.Security.SecurityManager.ResolvePolicy(Evidence evidence, PermissionSet reqdPset, PermissionSet optPset, PermissionSet denyPset, PermissionSet& denied, Int32& securitySpecialFlags, Boolean checkExecutionPermission) +57blah blah blah... Explanation:Simply put, the Microsoft Enterprise Library is trying to perform operations that it is not allowed based on the trust level set on that server.I have never received this error before since I host all of my code on my own dedicated servers (where I have a "Full" trust set).Recently, I have been opening accounts for customers at WebHost4Life.com (I'm sort of trying to get out of the hosting business due to the liabilities). WebHost4Life must also have the trust level set to "Full" since I've never had problems there. Just today, I deployed code to a new hosting provider. I believe they have their trust level set to "Medium" and this is why I'm getting the error. Resolution:1. A few months ago, Microsoft released updated code to resolve this issue. Click here to download the code updates2. For any application block to read information from configuration files, it is necessary to grant the application ConfigurationPermission (which is not provided by default in medium trust). You can add the requirePermission="false" attribute to the application's configuration section definitions. For example: xml version="1.0"?>  configuration>    configSections>    section name="dataConfiguration" requirePermission="false"       type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings,             Microsoft.Practices.EnterpriseLibrary.Data"/>    configSections>
	.
	.
	.
configuration>That's it...pretty easy and fast.]]></description> 
					<pubDate>Fri, 05 Jan 2007 04:12:55 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2007/1/4/enterprise-library/</guid>
				</item>
			
				<item>
					<title>SQL Server 2005 - Generate INSERT statements for easy migrations</title> 
					<link>http://www.newvisionusa.com/blog/2006/12/12/generate-insert/</link> 
					<description><![CDATA[I often work in a local environment and later need to migrate data to a remote database server. If the ports are open on the remote server, I can just export the data. Often this is not the case. In the past, I have either- Export the data, FTP it to the other location and import the data (what a pain!)- Used code I wrote to export the data to INSERT statements, copy/paste text to other location and execute scripts (not too bad)I was looking for an easier approach and came across Narayana Vyas Kondreddi's website. He has written a ton of code (VB and SQL) to do a lot of the everyday things we do.Here's a link to a "Procedure to script your data (to generate INSERT statements from the existing data)":http://vyaskn.tripod.com/code.htm#insertsIt's great. It installs in the master database and is available to all users for all databases.It even has options to filter results, omit certain data types, get only n rows, and much more.Be sure to check it out for yourself.In case the site ever shuts down, here's a link to the SQL 2005 script.]]></description> 
					<pubDate>Wed, 13 Dec 2006 05:01:19 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2006/12/12/generate-insert/</guid>
				</item>
			
				<item>
					<title>Google Checkout Processing Free Now through 2007!!!</title> 
					<link>http://www.newvisionusa.com/blog/2006/12/6/free-google-checkout/</link> 
					<description><![CDATA[Announced this morning on Google.com...To celebrate the holidays, Google is processing your Checkout sales for freeAs you may know, for every $1 you spend on AdWords, you can process $10 of Google Checkout sales for free. Just in time for the holidays, we're giving you even more by processing your Google Checkout sales for free through the end of 2007! Here's how it works:- From November 8, 2006 through December 31, 2007, we'll process your Checkout transactions for free, even if you aren't an AdWords advertiser. If you're already an AdWords advertiser, we'll process your Checkout transactions for free regardless of what you spend on AdWords.* - Valid Checkout orders you receive during the promotion will automatically qualify. - You can take full advantage of this promotion by encouraging your buyers to use Google Checkout on your site. - Other applicable fees (e.g. chargeback fees) may apply. This promotion is subject to the Google Checkout Terms of Service. Google may revoke the promotion for accounts that do not comply with these terms.On January 1, 2008, the standard transaction fee will apply again. Also, if applicable, your regular free transaction processing (based on your December, 2007 AdWords spend) will resume.Using Google Checkout to increase sales and lower costs during this busy holiday season has never been easier. If we can do anything else to help, feel free to drop us a line. Happy holidays from Google Checkout!* AdWords advertisers: Because this promotion begins on 11/8/06, the free transaction processing based on your AdWords spend will still apply to your Checkout sales from 11/1/06 through 11/7/06. Any Checkout orders you receive and process from 11/8/06 through 12/31/07 will then be eligible for free processing under this promotion.]]></description> 
					<pubDate>Wed, 06 Dec 2006 14:18:51 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2006/12/6/free-google-checkout/</guid>
				</item>
			
				<item>
					<title>How To Get Around Having To Click Flash Movies</title> 
					<link>http://www.newvisionusa.com/blog/2006/11/29/click-flash-movies/</link> 
					<description><![CDATA[If you use Internet Explorer, I’m sure you’re just as annoyed as me with the need to click a Flash movie once just to activate it. Not sure what I’m talking about? Check out this website I built: http://www.coyledevelopment.com
		
		Notice the Flash object is disabled (it runs, but you can’t interact with it) and your cursor has a little message that states “Click to activate and use this control”. Once you click it, it becomes “unlocked” and you can use it. What a pain, right? If the Flash object does any kind of posting back to the webpage and re-renders itself, you’ll have to click it again…meaning, your choice to activate it isn’t “saved” during your session.
		Why must we deal with this? It’s because of a dispute between Microsoft and Eolas. Eolas owns the patent to the technology for rendering plug-ins in web browsers. Microsoft must license the technology in order to use it in IE. They don’t want to so they added this annoyance to better their case. Read more at: http://en.wikipedia.org/wiki/Eolas
		So how can I get around it? It’s easy now thanks to deconcept and SWFObject.1. Download the SWFObject Javascript file2. Include the swfobject.js Javascript file and write a small amount of Javascript on your page to embed your Flash movie. Here is an example showing the minimum amount of code needed to embed a Flash movie:    This text is replaced by the Flash movie.   var so = new SWFObject("movie.swf", "mymovie", "200", "100", "7", "#336699");   so.write("flashcontent");This is just the basic explanation. You might want to know more about required parameters versus optional parameters or how to pass variables into the movie. For this information, visit their website to learn more.]]></description> 
					<pubDate>Thu, 30 Nov 2006 05:43:53 GMT</pubDate>
					<guid isPermaLink="false">http://www.newvisionusa.com/blog/2006/11/29/click-flash-movies/</guid>
				</item>
			
	</channel>
</rss>