<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Steve Reynolds Blog</title>
	
	<link>http://www.reynoldsftw.com</link>
	<description>Being Generalist.</description>
	<lastBuildDate>Mon, 01 Mar 2010 13:29:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/reynoldsftw" /><feedburner:info uri="reynoldsftw" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Using xAuth, an alternate OAuth from Twitter</title>
		<link>http://feedproxy.google.com/~r/reynoldsftw/~3/_ty44Do76Gc/</link>
		<comments>http://www.reynoldsftw.com/2010/03/using-xauth-an-alternate-oauth-from-twitter/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 13:00:22 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Chirpie]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Social-Web]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Basic Authentication]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[xAuth]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1662</guid>
		<description><![CDATA[In the last week Twitter did something interesting in order to quell the increasing noise from mobile and desktop app developers, that was &#8211; introducing xAuth to the wider web. Back in early February the Twitter API team announced the new xAuth authentication mechanism. Twitter hope it will fill the void of terrible user experiences [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F03%2Fusing-xauth-an-alternate-oauth-from-twitter%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F03%2Fusing-xauth-an-alternate-oauth-from-twitter%2F" height="61" width="51" /></a></div><p>In the last week <strong>Twitter </strong>did something interesting in order to quell the increasing noise from mobile and desktop app developers, that was &#8211; introducing <strong>xAuth</strong> to the wider web. Back in early February the Twitter API team announced the new xAuth authentication mechanism. Twitter hope it will fill the void of terrible user experiences mixed with web contexts into desktop and mobile apps experienced when using current authentication preference, <strong>OAuth</strong>.</p>
<h3>Basic Authentication</h3>
<p>Back when Twitter first launched it&#8217;s API they had what&#8217;s called Basic Authentication. A user of the API had to make all API calls directly with their username and password. iPhone apps such as Tweetie, Twitterrific and Birdfeed all use basic authentication. I myself used basic auth in <a href="http://chirpieapp.com" target="_blank">Chirpie</a> when I launched it 1 week ago.</p>
<p>From a dev perspective, basic auth is really simple &#8211; just make sure you store the username and password for an account, and re-use on every API call. However, Twitter deemed that from a security perspective, it wasn&#8217;t a great idea to be using the user&#8217;s credentials every single time they interacted with the API, they therefore decided to use <strong>OAuth</strong>. In addition, it&#8217;s required for any application that uses basic auth to store the username and password for re-use between sessions. Another no no apparently&#8230;</p>
<h3>OAuth</h3>
<p>I won&#8217;t go into the deep details of OAuth, but the basic premise is this, an application gets a request token, and sends the user off to the source website (in this case Twitter) for a set of authorized tokens which it gives back to the application, and subsequently uses to exchange with the API instead of the user:pass :</p>
<div id="attachment_1668" class="wp-caption aligncenter" style="width: 462px"><img class="size-full wp-image-1668" title="OAuth Process" src="http://www.reynoldsftw.com/wp-content/uploads/2010/02/Screen-shot-2010-02-28-at-08.52.08.png" alt="OAuth Process" width="452" height="124" /><p class="wp-caption-text">OAuth Process</p></div>
<p>The problem with this is the <strong><em>&#8220;via web&#8221;</em></strong> part. For mobile and desktop apps, you have to leave the comfort of your application, and into a web interface in order to authorize the request. In addition to this, Twitter penalised anyone using basic authentication by stopping them from publishing their application name unless using OAuth (hence the developer outcry for some months). Example:</p>
<div id="attachment_1665" class="wp-caption aligncenter" style="width: 243px"><a href="http://chirpieapp.com"><img class="size-full wp-image-1665  " title="Twitter Basic Auth Vs OAuth/xAuth" src="http://www.reynoldsftw.com/wp-content/uploads/2010/02/HelloWorldExample.png" alt="Twitter Basic Auth Vs OAuth" width="233" height="80" /></a><p class="wp-caption-text">Twitter Basic Auth Vs OAuth/xAuth</p></div>
<p>It&#8217;s worth noting here, that in the old days basic auth apps could publish tweets using &#8220;via <em>application name</em>&#8220;, however early in 2009 Twitter stopped accepting registrations for basic auth applications, which is why some basic auth apps still come from their app name, like Tweetie, where more recent ones come from &#8220;web&#8221;.</p>
<p>On iPhone, leaving the comfort of a native app into a web interface (which was until recently not optimized for mobile) was a huge loss &#8211; therefore most iPhone devs from recent times opted for basic auth in order to keep a good user experience.</p>
<h3>Enter xAuth</h3>
<p>So xAuth is here to save the day&#8230; xAuth takes some fundamentals from OAuth in the sense that you still use your authorised tokens to interact with the API, however it&#8217;s the process of getting that set of authorised tokens that has changed. Basic auth developers can now exchange the username and password of their users for an authorised token set in one API call. No web interface required. Essentially:</p>
<div id="attachment_1664" class="wp-caption aligncenter" style="width: 209px"><img class="size-full wp-image-1664" title="xAuth Process" src="http://www.reynoldsftw.com/wp-content/uploads/2010/02/Screen-shot-2010-02-28-at-08.20.28.png" alt="xAuth Process" width="199" height="113" /><p class="wp-caption-text">xAuth Process</p></div>
<p style="text-align: left;">This stumps alot of people at first, there&#8217;s no process involved to get a request token, that&#8217;s all out of the door &#8211; it&#8217;s simply get the user&#8217;s credentials, make an API call, receive authorised tokens in return.</p>
<p style="text-align: left;">The downside of this is that the application is interacting directly with the username and password (in the same way basic auth did), so in essence is losing a large chunk of the security effect of OAuth (OAuth apps never see the username and password of the user directly, only the tokens).</p>
<p style="text-align: left;">There are alot of arguments around the web on the effectiveness of xAuth &#8211; to me it seems like its just basic authentication with a bit of extra security because each API call isn&#8217;t using the user:pass every time &#8211; in fact, to even associate it with OAuth for me is a little bit crazy.</p>
<p style="text-align: left;">That said, <strong><span style="text-decoration: underline;">I am extremely happy</span></strong>. As a recent iPhone app developer, I was gutted to find that I could no longer register <a href="http://chirpieapp.com" target="_blank">Chirpie</a> as a basic auth app with Twitter, and subsequently couldn&#8217;t promote the use of it within Twitter unless I used OAuth.</p>
<h3>Using xAuth</h3>
<p style="text-align: left;">Using xAuth couldn&#8217;t be simpler actually. First off though, you need to send an email to api@twitter.com and ask them to register your OAuth application to use xAuth. Once approved (you&#8217;ll get an email at time of writing) you make a call to the API method <strong>&#8220;</strong><em><strong>https://api.twitter.com/oauth/access_token&#8221;</strong></em> and simply send it 3 parameters:</p>
<ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2em; font-weight: inherit; font-style: inherit; font-size: 13px; font-family: inherit; vertical-align: baseline; padding: 0px; border: 0px initial initial;">
<li style="font-weight: inherit; font-style: inherit; font-size: 13px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 13px; font-family: 'Courier New'; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;">x_auth_username</span> -  The username of the user.</li>
<li style="font-weight: inherit; font-style: inherit; font-size: 13px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 13px; font-family: 'Courier New'; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;">x_auth_password</span> &#8211; The password of the user</li>
<li style="font-weight: inherit; font-style: inherit; font-size: 13px; font-family: inherit; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;"><span style="font-weight: inherit; font-style: inherit; font-size: 13px; font-family: 'Courier New'; vertical-align: baseline; padding: 0px; margin: 0px; border: 0px initial initial;">x_auth_mode</span> &#8211; Set this value to &#8220;client_auth&#8221; (without the quotes).</li>
</ul>
<p>This one method then returns you the authorised access tokens in the same way the same method does for OAuth. You should store the tokens as they do not expire, and reuse the tokens for any subsequent API calls. The password can effectively be forgotten after the authorised access tokens are received (unless you need them for third party sites such as TwitPic etc..).</p>
<p>It really is that simple, just one step. As long as you remember this key point (that it&#8217;s one API call, no request tokens needed etc), you will be setup really quickly. The Twitter documents aren&#8217;t so clear on this, and hopefully they will clarify a bit better shortly.</p>
<p>I managed to get xAuth implemented into <a href="http://chirpieapp.com" target="_blank">Chirpie</a> in about an hour, and submitted to the App Store. Such a small change, which I hope will make a huge difference to the effectiveness of <a href="http://chirpieapp.com" target="_blank">Chirpie</a> in Twitter.</p>
<h3>Update &#8211; xAuthTwitterEngine</h3>
<p>For those hoping to get xAuth working on an iPhone, Aral Balkan <a href="http://aralbalkan.com/3133" target="_blank">has just launched xAuthTwitterEngine</a>, which is an update to the excellent <a href="http://mattgemmell.com/2008/02/22/mgtwitterengine-twitter-from-cocoa" target="_blank">MGTwitterEngine</a> from Matt Gemmell, via an <a href="http://github.com/bengottlieb/Twitter-OAuth-iPhone" target="_blank">OAuth implementation</a> of that by Ben Gottlieb.</p>
<p>I haven&#8217;t used xAuthTwitterEngine in <a href="http://chirpieapp.com" target="_blank">Chirpie</a>, however my implementation was exactly the same, a re use of Ben&#8217;s OAuth code, removing the web authentication interface and replacing with a user:pass API call. I just wasn&#8217;t brave enough to release it to the world as I&#8217;m still learning! Anyway, have fun!</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F03%2Fusing-xauth-an-alternate-oauth-from-twitter%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F03%2Fusing-xauth-an-alternate-oauth-from-twitter%2F" height="61" width="51" /></a></div>
<p><a href="http://feedads.g.doubleclick.net/~a/SdpwvAKxr81xnveNvk3ldNNKGbc/0/da"><img src="http://feedads.g.doubleclick.net/~a/SdpwvAKxr81xnveNvk3ldNNKGbc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/SdpwvAKxr81xnveNvk3ldNNKGbc/1/da"><img src="http://feedads.g.doubleclick.net/~a/SdpwvAKxr81xnveNvk3ldNNKGbc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=_ty44Do76Gc:XXAsORALWY8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=_ty44Do76Gc:XXAsORALWY8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=_ty44Do76Gc:XXAsORALWY8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=_ty44Do76Gc:XXAsORALWY8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=_ty44Do76Gc:XXAsORALWY8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=_ty44Do76Gc:XXAsORALWY8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reynoldsftw/~4/_ty44Do76Gc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2010/03/using-xauth-an-alternate-oauth-from-twitter/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://www.reynoldsftw.com/2010/03/using-xauth-an-alternate-oauth-from-twitter/</feedburner:origLink></item>
		<item>
		<title>Chirpie 1.1 Available in the App Store</title>
		<link>http://feedproxy.google.com/~r/reynoldsftw/~3/biXNyBBncHY/</link>
		<comments>http://www.reynoldsftw.com/2010/02/chirpie-1-1-available-in-the-app-store/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 23:58:49 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Chirpie]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[1.1]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1657</guid>
		<description><![CDATA[Yes folks, one week after the launch of Chirpie 1.0, version 1.1 is now in the App Store to download. This update brings a few nice features and fixes:

New clean and awesome Tweetview UI
Added new control to switch status updates to Twitter, Facebook or Both.
Application now remembers if you enabled/disabled twitter in tweet view.
Added ability [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F02%2Fchirpie-1-1-available-in-the-app-store%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F02%2Fchirpie-1-1-available-in-the-app-store%2F" height="61" width="51" /></a></div><p>Yes folks, one week after the launch of <strong>Chirpie 1.0</strong>, version 1.1 is now in the App Store to download. This update brings a few nice features and fixes:</p>
<ul>
<li>New clean and awesome Tweetview UI</li>
<li>Added new control to switch status updates to Twitter, Facebook or Both.</li>
<li>Application now remembers if you enabled/disabled twitter in tweet view.</li>
<li>Added ability to paste an image and upload from the clipboard</li>
<li>Added direct link to Chirpie Pro in the App Store from Chirpie (free) version.</li>
<li>Added ability to follow <a href="http://twitter.com/ChirpieApp" target="_blank">@ChirpieApp</a> from the about page.</li>
<li>Fixed bug with mis-placed facebook button in turbo mode.</li>
<li>Fixed memory bug when exiting out of camera would sometimes break tweet view.</li>
</ul>
<h3>New Interface</h3>
<div id="attachment_36" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-36" title="Chirpie Interface" src="http://blog.chirpieapp.com/wp-content/uploads/2010/02/screen1blog-300x229.png" alt="" width="300" height="229" /><p class="wp-caption-text">Chirpie 1.1 Interface</p></div>
<p><strong>Chirpie </strong>has been updated with a really nice, clean interface with the help of <strong>Nicolas Thomsen. </strong>Nicolas runs <a href="http://apporacle.com/" target="_blank">apporacle.com</a>, check out the site for some great examples of Nicolas&#8217;s work.</p>
<p>As part of the redesign, the bottom buttons have been given a brand new glassy look, with the scrolling avatars sitting nicely on top. We&#8217;ve also added a new central section with a brand new control, <strong>the service switch</strong>.</p>
<p>The service switch was an idea from <a href="http://twitter.com/jonguntrip" target="_blank">@jonguntrip</a>, allowing users to send to <em>Twitter, Facebook</em> or both. The app now remember where you left the toggle, except if you left it on <em>Facebook</em> only. This will always default back to both.</p>
<h3>Paste Images form Clipboard</h3>
<p>Also another brand new feature with <strong>Chirpie 1.1</strong> is the ability to paste images from the clipboard. Either by setting the app to auto paste on launch, or by selecting the Photo button, you are now able to paste any <em>PNG</em> or <em>JPEG</em> image that is on the clipboard.</p>
<p>This means you can effectively copy any image from any application, and paste it into Chirpie. Once pasted, the app automatically uploads it to <em>YFrog</em> or <em>TwitPic</em> (depending on your prefs). All seamless, nothing for you to worry about!</p>
<h3>Pimp Chirpie</h3>
<p>Thanks to everyone for the support on <strong>Chirpie</strong> so far &#8211; and letting your friends know how awesome it is! We&#8217;ve had well over 1000 downloads already in the past 7 days &#8211; it&#8217;s been excellent to work with you all. As always, get in contact with us via <a href="http://twitter.com/ChirpieApp" target="_blank">@ChirpieApp</a> on twitter for the latest news on <strong>Chirpie</strong>, and to let us know about features and feedback.</p>
<p><strong>Chirpie 1.1</strong> (free version) is available from <a href="http://itunes.apple.com/app/id354049672" target="_blank">the App Store here</a>.</p>
<p><strong>Chirpie Pro 1.1</strong> is also available from <a href="http://itunes.apple.com/app/id354052557" target="_blank">the App Store here</a>.</p>
<p>Cheers! &#8211; <em><strong>Chirpie Team</strong></em></p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F02%2Fchirpie-1-1-available-in-the-app-store%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F02%2Fchirpie-1-1-available-in-the-app-store%2F" height="61" width="51" /></a></div>
<p><a href="http://feedads.g.doubleclick.net/~a/TVwkFyyy9sanO0v2HWOhe2aFJak/0/da"><img src="http://feedads.g.doubleclick.net/~a/TVwkFyyy9sanO0v2HWOhe2aFJak/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/TVwkFyyy9sanO0v2HWOhe2aFJak/1/da"><img src="http://feedads.g.doubleclick.net/~a/TVwkFyyy9sanO0v2HWOhe2aFJak/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=biXNyBBncHY:x7LpUdxK09k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=biXNyBBncHY:x7LpUdxK09k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=biXNyBBncHY:x7LpUdxK09k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=biXNyBBncHY:x7LpUdxK09k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=biXNyBBncHY:x7LpUdxK09k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=biXNyBBncHY:x7LpUdxK09k:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reynoldsftw/~4/biXNyBBncHY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2010/02/chirpie-1-1-available-in-the-app-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.reynoldsftw.com/2010/02/chirpie-1-1-available-in-the-app-store/</feedburner:origLink></item>
		<item>
		<title>Chirpie for iPhone Released to the App Store</title>
		<link>http://feedproxy.google.com/~r/reynoldsftw/~3/m83RsQInMtk/</link>
		<comments>http://www.reynoldsftw.com/2010/02/chirpie-for-iphone-released-to-the-app-store/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 23:10:45 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Chirpie]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1651</guid>
		<description><![CDATA[This is it folks, the day we&#8217;ve all been waiting for, the day Chirpie for iPhone makes it to the App Store!
Chirpie 1.0 comes in two versions, a free app simply called &#8220;Chirpie&#8220; which is feature complete, but limited to 1 Twitteraccount and 1 Facebook account. The second version is called &#8220;Chirpie Pro&#8220; which is exactly the same, however you can [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F02%2Fchirpie-for-iphone-released-to-the-app-store%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F02%2Fchirpie-for-iphone-released-to-the-app-store%2F" height="61" width="51" /></a></div><p>This is it folks, the day we&#8217;ve all been waiting for, the day <strong>Chirpie for iPhone</strong> makes it to the <em>App Store</em>!</p>
<p><strong>Chirpie 1.0</strong> comes in two versions, <a href="http://itunes.apple.com/app/id354049672" target="_blank">a free app</a> simply called <strong><em>&#8220;<a href="http://itunes.apple.com/app/id354049672" target="_blank">Chirpie</a></em><em>&#8220;</em></strong> which is feature complete, but limited to 1 <em>Twitter</em>account and 1 <em>Facebook</em> account. The second version is called <strong><em>&#8220;<a href="http://itunes.apple.com/app/id354052557" target="_blank">Chirpie Pro</a></em><em>&#8220;</em></strong> which is exactly the same, however you can add as many <em>Twitter</em> accounts as you wish. <strong><em>Chirpie Pro</em></strong> is priced at $0.99/59p.</p>
<div id="attachment_24" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-24" title="chirpieInterface" src="http://blog.chirpieapp.com/wp-content/uploads/2010/12/chirpieInterface-300x195.jpg" alt="" width="300" height="195" /><p class="wp-caption-text">The Chirpie Interface</p></div>
<p><strong>Chirpie for iPhone</strong> lets you dual update, meaning you can send a status update to both a <em>Twitter</em> and <em>Facebook</em> account at one time, or just <em>Twitter</em> if you&#8217;re that way inclined.</p>
<p>To coincide with the launch of the application, we&#8217;ve also launched a refreshed <a href="http://chirpieapp.com" target="_self">chirpieapp.com</a> which features everything you need to know about <strong>Chirpie</strong> &#8211; including screenshots, feature list and <a href="http://chirpieapp.com/faq.html" target="_self">FAQs</a>.</p>
<p><strong>Chirpie</strong> (free version) is available from <a href="http://itunes.apple.com/app/id354049672" target="_blank">the App Store here</a>.</p>
<p><strong>Chirpie Pro</strong> is also available from <a href="http://itunes.apple.com/app/id354052557" target="_blank">the App Store here</a>.</p>
<p>Any problems, please contact us on support[at] chirpieapp.com or via our twitter account <a href="http://twitter.com/ChirpieApp" target="_blank">@ChirpieApp</a>.</p>
<p><strong>Chirpie 1.1</strong> is currently in the works, with version 1.0.1 about to hit Apple sometime in the next day or so.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F02%2Fchirpie-for-iphone-released-to-the-app-store%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F02%2Fchirpie-for-iphone-released-to-the-app-store%2F" height="61" width="51" /></a></div>
<p><a href="http://feedads.g.doubleclick.net/~a/cHzknv8SiIDVkKFif9gNJJyqC8Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/cHzknv8SiIDVkKFif9gNJJyqC8Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/cHzknv8SiIDVkKFif9gNJJyqC8Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/cHzknv8SiIDVkKFif9gNJJyqC8Q/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=m83RsQInMtk:rz0UnlNM3EI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=m83RsQInMtk:rz0UnlNM3EI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=m83RsQInMtk:rz0UnlNM3EI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=m83RsQInMtk:rz0UnlNM3EI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=m83RsQInMtk:rz0UnlNM3EI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=m83RsQInMtk:rz0UnlNM3EI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reynoldsftw/~4/m83RsQInMtk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2010/02/chirpie-for-iphone-released-to-the-app-store/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.reynoldsftw.com/2010/02/chirpie-for-iphone-released-to-the-app-store/</feedburner:origLink></item>
		<item>
		<title>Introducing Chirpie for iPhone</title>
		<link>http://feedproxy.google.com/~r/reynoldsftw/~3/H7QnIWxDsg8/</link>
		<comments>http://www.reynoldsftw.com/2010/01/introducing-chirpie-for-iphone/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 17:00:48 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Chirpie]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1628</guid>
		<description><![CDATA[Followers of my Twitter feed will have yesterday seen that I am very close to launching a new Twitter client for iPhone, called Chirpie (see chirpieapp.com). So what is Chirpie? Will it beat the skitch out of Twitterrific, Tweetie or Echofon? The short answer is not just yet, the longer answer is this:

Chirpie has been [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F01%2Fintroducing-chirpie-for-iphone%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F01%2Fintroducing-chirpie-for-iphone%2F" height="61" width="51" /></a></div><p>Followers of my Twitter feed will have yesterday seen that I am very close to launching a new Twitter client for iPhone, called <strong>Chirpie (see <a href="http://chirpieapp.com" target="_blank">chirpieapp.com</a></strong><strong>)</strong>. So what is <strong>Chirpie</strong>? Will it beat the skitch out of <em>Twitterrific, Tweetie </em>or<em> Echofon</em>? The short answer is not just yet, the longer answer is this:</p>
<p><a href="http://chirpieapp.com"><img class="aligncenter size-full wp-image-1632" style="border: 0px solid white;" title="Chirpie for iPhone" src="http://www.reynoldsftw.com/wp-content/uploads/2010/01/egg.png" alt="Chirpie for iPhone" width="100" height="125" /></a></p>
<p><strong>Chirpie</strong> has been developed with one simply idea in mind:</p>
<p style="text-align: center;"><strong><em>Empower the user to tweet quickly, do it simply, let it have flexibility.</em></strong></p>
<p>With this simple notion as the backbone of the app, I&#8217;ve developed something which I find a bit of a gem. An app that lets me tweet pretty much instantly. No heavy waiting sessions whilst you wait for a Twitter timeline to load, no navigating through views to get to the tweet window.</p>
<p>Sounds simple right? Well, it kind of is, but it has some nice twists:</p>
<ul>
<li>An intuitive way to reply to friends, and handle new friends.</li>
<li>Quick access to common functions such as the Camera, URL shortening, Geo Tweet etc</li>
<li>Tweet Persistence, when switching accounts, and when leaving the app</li>
<li>Pasteboard functionality to speed up your flow</li>
<li>Advanced app settings, one being switching <strong>Chirpie</strong> into <em>Turbo-Mode</em></li>
</ul>
<p><a href="http://chirpieapp.com"><img class="aligncenter size-full wp-image-1633" title="Chirpie for iPhone" src="http://www.reynoldsftw.com/wp-content/uploads/2010/01/chirpieTitle.png" style="border: 0px solid white;" alt="Chirpie for iPhone" width="176" height="61" /></a></p>
<p>You&#8217;ll be able to tweet straight off the bat, send, done. Or, you can take some time, play with the toolkit, send or just save for later.</p>
<p><strong>Chirpie</strong> has a simple, clean interface when tweeting, no buttons all over the place for all the different functionality with icons that make no sense, just one simple way to reveal what you need.</p>
<p>But this is just the start, I want <strong>Chirpie</strong> break free of it&#8217;s little egg &#8211; build on these foundations to bring a Twitter client with a difference. Let&#8217;s see how we go.</p>
<h3>Beta Testers Required</h3>
<p>So when can you get your hands on it? Well my friends, very, very soon. We&#8217;re currently looking for Beta testers, so head on over and friend us up on twitter<strong> (</strong><a href="http://twitter.com/ChirpieApp" target="_blank"><strong>@ChirpieApp</strong></a><strong>)</strong>, or keep an eye on our teaser site <a href="http://chirpieapp.com" target="_blank"><strong>http://chirpieapp.com</strong></a> for more. Spread the word about <strong>Chirpie</strong> and you may find your way up that list</p>
<h3>And the sweet spot?</h3>
<p><strong>Chirpie</strong> will be a free download to all. Coming Soon!</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F01%2Fintroducing-chirpie-for-iphone%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2010%2F01%2Fintroducing-chirpie-for-iphone%2F" height="61" width="51" /></a></div>
<p><a href="http://feedads.g.doubleclick.net/~a/gsTcagVVwPBWOCIt7QIQzEgwdW0/0/da"><img src="http://feedads.g.doubleclick.net/~a/gsTcagVVwPBWOCIt7QIQzEgwdW0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/gsTcagVVwPBWOCIt7QIQzEgwdW0/1/da"><img src="http://feedads.g.doubleclick.net/~a/gsTcagVVwPBWOCIt7QIQzEgwdW0/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=H7QnIWxDsg8:dTO_Bf54HqM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=H7QnIWxDsg8:dTO_Bf54HqM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=H7QnIWxDsg8:dTO_Bf54HqM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=H7QnIWxDsg8:dTO_Bf54HqM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=H7QnIWxDsg8:dTO_Bf54HqM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=H7QnIWxDsg8:dTO_Bf54HqM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reynoldsftw/~4/H7QnIWxDsg8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2010/01/introducing-chirpie-for-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.reynoldsftw.com/2010/01/introducing-chirpie-for-iphone/</feedburner:origLink></item>
		<item>
		<title>Twitter API calls in the browser with JSON and jQuery</title>
		<link>http://feedproxy.google.com/~r/reynoldsftw/~3/vbRmkJ3a9cU/</link>
		<comments>http://www.reynoldsftw.com/2009/12/twitter-api-calls-in-the-browser-with-json-and-jquery/#comments</comments>
		<pubDate>Mon, 07 Dec 2009 13:00:43 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[JSONP]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1617</guid>
		<description><![CDATA[Ajax is a wonderful technology that is heavily used in many places nowdays. Ajax is run in the browser using javascript to call a URL, and usually receive data back. One of the key restrictions of using Ajax to get data from a remote URL is that you cannot make cross-domain calls. This meaning, you [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F12%2Ftwitter-api-calls-in-the-browser-with-json-and-jquery%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F12%2Ftwitter-api-calls-in-the-browser-with-json-and-jquery%2F" height="61" width="51" /></a></div><p>Ajax is a wonderful technology that is heavily used in many places nowdays. Ajax is run in the browser using javascript to call a URL, and usually receive data back. One of the key restrictions of using Ajax to get data from a remote URL is that you cannot make cross-domain calls. This meaning, you cannot make an ajax call to domain1.com from domain2.com because of browser security restrictions. The workaround, is to make the cross domain ajax calls from your web server rather than the browser, and all is fine!</p>
<p>That was, until the introduction of JSON, and more importantly JSONP which allows you to make ajax calls to 3rd party domains from within the browser itself. What this means for you is that you can get data from JSONP supported APIs from within the browser itself, rather than telling your web server to do it for you.</p>
<p><span id="more-1617"></span><img class="aligncenter size-full wp-image-953" title="twitter" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/twitter.jpg" alt="twitter" width="374" height="100" /></p>
<p>This is also important for <strong>Twitter API</strong> usage. One of the key restrictions with the Twitter API is that any client IP address can only make x number of API calls per hour. If you&#8217;re making these API calls from your web server (which obviously only a static IP address), you could quickly use up your hourly allocation on a busy site. Twitter does allow you to &#8220;whitelist&#8221; your web application to give you a better hourly rate, but here&#8217;s a better way:</p>
<p>Use the clients, ie your users, to make the API calls from their browsers.</p>
<p>Admittedly, my example below is for any API calls that do not require authentication, however what it does enable you to do is to empower your user to make Twitter API calls in the browser using jQuery. So without further ado, here&#8217;s the code snippet:</p>
<pre class="brush: jscript;">$.getJSON(&quot;http://twitter.com/statuses/user_timeline.json?screen_name=SteveReynolds&amp;callback=?&quot;,

function(data){

$.each(data, function(i,item){
$(&quot;#tweets&quot;).append(item.text + &quot;&lt;BR/&gt;&quot;);

});

});
</pre>
<p>What the code above assumes is that you have a &lt;div id=&#8221;tweets&#8221;&gt; or something where you can append the results, in this case the object in the JSON response &#8220;item.text&#8221; which is the tweet itself. You could for example, get &#8220;item.user.name&#8221; which would return the username for each tweet (which is useless as you know it&#8217;s all my tweets <img src='http://www.reynoldsftw.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) &#8211; but you get the idea. You also need to make sure you have previously called the jQuery library.</p>
<p></p>
<p>The other important factor of the code above is the URL we are using to call Twitter. We have appended &#8220;&amp;callback=?&#8221; onto the end of it. This is to allow the jQuery call to pass the returned data to a callback function, which in this case is simply called &#8220;data&#8221; for the returned data, and &#8220;function()&#8221; for the callback.</p>
<p><a href="http://www.reynoldsftw.com/wp-content/uploads/2009/12/twitter.html.zip" target="_self">Download the code here</a>.</p>
<p>So, that&#8217;s it. It really is that simple. In my next tutorial I will show you how to do the above, but ajax it back to your server and save it to your database &#8211; in effect getting your users to do a lot of the hard work for you in the browser, and simply sending back the relevant results to your database.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F12%2Ftwitter-api-calls-in-the-browser-with-json-and-jquery%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F12%2Ftwitter-api-calls-in-the-browser-with-json-and-jquery%2F" height="61" width="51" /></a></div>
<p><a href="http://feedads.g.doubleclick.net/~a/eQqY9SecDQZPP8fYClaN74ktEG4/0/da"><img src="http://feedads.g.doubleclick.net/~a/eQqY9SecDQZPP8fYClaN74ktEG4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/eQqY9SecDQZPP8fYClaN74ktEG4/1/da"><img src="http://feedads.g.doubleclick.net/~a/eQqY9SecDQZPP8fYClaN74ktEG4/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=vbRmkJ3a9cU:U-EIWXMUjZ0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=vbRmkJ3a9cU:U-EIWXMUjZ0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=vbRmkJ3a9cU:U-EIWXMUjZ0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=vbRmkJ3a9cU:U-EIWXMUjZ0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=vbRmkJ3a9cU:U-EIWXMUjZ0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=vbRmkJ3a9cU:U-EIWXMUjZ0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reynoldsftw/~4/vbRmkJ3a9cU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/12/twitter-api-calls-in-the-browser-with-json-and-jquery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.reynoldsftw.com/2009/12/twitter-api-calls-in-the-browser-with-json-and-jquery/</feedburner:origLink></item>
		<item>
		<title>A Closer Look at BuildABrand’s Closed Beta</title>
		<link>http://feedproxy.google.com/~r/reynoldsftw/~3/sfcK_gBRthE/</link>
		<comments>http://www.reynoldsftw.com/2009/12/a-closer-look-at-buildabrands-closed-beta/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 14:00:10 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Application Launch]]></category>
		<category><![CDATA[Brand]]></category>
		<category><![CDATA[BuildABrand]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1598</guid>
		<description><![CDATA[BuildABrand.com is a new online service available shortly which will empower you to create and develop your brand, be it for yourself, your company, or whatever. The basic premise is, you give the app a bunch of details about the brand, such as the industries it relates, plus other related info, and the app will [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F12%2Fa-closer-look-at-buildabrands-closed-beta%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F12%2Fa-closer-look-at-buildabrands-closed-beta%2F" height="61" width="51" /></a></div><p><a href="http://buildabrand.com" target="_blank">BuildABrand.com</a> is a new online service available shortly which will empower you to create and develop your brand, be it for yourself, your company, or whatever. The basic premise is, you give the app a bunch of details about the brand, such as the industries it relates, plus other related info, and the app will quickly generate some brand designs (ie a logo and font design) for use anywhere you want, as well as some pre canned options which we&#8217;ll discuss later.</p>
<p><strong>BuildABrand</strong> say that the ease and speed of creating a new brand is as fast and simple as registering a domain name. I&#8217;m gonna test that, so here&#8217;s how it works:</p>
<h3>Step 1 &#8211; Related Industries</h3>
<p><img class="aligncenter size-full wp-image-1600" title="BuildABrand - Step 1 - Related Industries" src="http://www.reynoldsftw.com/wp-content/uploads/2009/12/BuildABrand-Step-1-tb.jpg" alt="BuildABrand - Step 1 - Related Industries" width="480" height="267" /></p>
<p>The first thing you have to give <strong>BuildABrand</strong> is some idea of what industries your brand relates to (that is, after you&#8217;ve told the app the name of your brand). The app uses a simple horizontal scroll navigation for you to cycle through the industry sectors. When clicking on a specific sector you are given various options within it to select.</p>
<p>The navigation is smooth and sleek, the icons have been well chosen, giving clarity to what you&#8217;re looking at.</p>
<p>I think one area I&#8217;d love to see modified slightly would be to allow you to see all the sectors you can choose from, rather than blindly scrolling through them, not knowing what&#8217;s coming next, and if it&#8217;s relevant. A minor tweak though <img src='http://www.reynoldsftw.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h3><span id="more-1598"></span>Step 2 &#8211; Some more detail about your brand</h3>
<p><img class="aligncenter size-full wp-image-1603" title="BuildABrand - Step 2" src="http://www.reynoldsftw.com/wp-content/uploads/2009/12/BuildABrand-Step-2-tb.jpg" alt="BuildABrand - Step 2" width="480" height="303" /></p>
<p>So next up is giving the app some more pointers around your brand, such as <em>Tone, Style, Outlook</em> etc. You select an image from each category which most relates to your brand, with additional helpful keywords explaining your choice to make sure it&#8217;s relevant. Very easy, and very quick.</p>
<p>Again, I think one minor tweak that could be made would be to label the images up with their names from the start (perhaps underneath, or as part of the image), so you can instantly see which images are more relevant to you in the gallery. Otherwise though, this is a pretty intuitive way to make your selections, no horrible forms to fill in, no drop downs etc &#8211; all easy to press buttons.</p>
<h3>Step 3 &#8211; Choose a symbol</h3>
<p><img class="aligncenter size-full wp-image-1604" title="BuildABrand - Step 3 - Choose a symbol" src="http://www.reynoldsftw.com/wp-content/uploads/2009/12/BuildABrand-Step-3.jpg" alt="BuildABrand - Step 3 - Choose a symbol" width="480" height="274" /></p>
<p>Now I get to choose a symbol out of a vast gallery presented to me. These symbols are recommendations from <strong>BuildABrand</strong> based on the decisions I had made in steps 1 &amp; 2. As you can see in the screenshot above, I have 21 pages of 15 symbols, so the choice is quite large. That said, the designs are really good, the team at <strong>BuildABrand</strong> have worked with some talented folk to get some really interesting designs.</p>
<p>The navigation here works seemlessly with some lovely ajax goodness. It uses a similar effect to that of Panic&#8217;s <a href="http://www.panic.com/coda/" target="_blank">Coda website</a>. Horizontal scrolling is all the rage right now, and <strong>BuildABrand</strong> have implemented it well.</p>
<p>I am told that the gallery of symbols above is not limited, meaning that designers will be adding to the pool of symbols over time, so it should grow with more and more relevant results. The key for the development team will be to try and give the users enough choice over symbols, but not kill them with too much choice.</p>
<p>So anyway, you select a symbol, and move on. At this point you should ignore the colour scheme presented to you, that is coming up next <img src='http://www.reynoldsftw.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p></p>
<h3>Step 4 &#8211; Select Colour and Font</h3>
<p><img class="aligncenter size-full wp-image-1605" title="BuildABrand - Step 4" src="http://www.reynoldsftw.com/wp-content/uploads/2009/12/BuildABrand-Step-4.jpg" alt="BuildABrand - Step 4" width="480" height="334" /></p>
<p>The final piece to the puzzle is the font and colour scheme selections. Again, the selections and options presented to you are recommendations from <strong>BuildABrand</strong> which are most relevant to your brand and symbol you have previously chosen. You can spend 30 seconds here, 30 minutes, or hours depending on how picky you are about it &#8211; either way, you&#8217;ll have a preview in the middle of what your brand could look like instantly.</p>
<p>That&#8217;s it. It&#8217;s that simple. As long as you are clear in your mind what you want out of your brand, and what it is, using these 4 steps should give you something very sweet in a really small amount of time.</p>
<h3>Brand Created.</h3>
<p>What happens next is excellent, you get to see your brand in situ in various ways around the site, inspiring you with different ways you can use it. Banner ads on the site use your new logo and font &#8211; for example &#8211; one for creating business cards which is 100% relevant to you.</p>
<p><img class="aligncenter size-full wp-image-1606" title="BuildABrand - Brand Preview" src="http://www.reynoldsftw.com/wp-content/uploads/2009/12/BuildABrand-Brand-Preview.jpg" alt="BuildABrand - Brand Preview" width="480" height="165" />In addition to this, <strong>BuildABrand</strong> will soon offer WordPress templates pre-built for you with your brand and colour scheme, or you can simply go ahead and download your logo and use it wherever you want. With each download you use up credits, which is the way <strong>BuildABrand</strong> are monetizing the website.</p>
<h3>Business Card Creator</h3>
<p>As I said above, the stand out feature for me <em>(well at this stage of the first beta anyway! There is much more to come!!)</em>, is the business card creator. The live previews of your business cards are brilliant, as you swap out designs for front and back, as well as adding information such as telephone numbers etc to the card &#8211; it&#8217;s all there for you to preview instantly.</p>
<p><img class="aligncenter size-full wp-image-1607" title="BuildABrand - Business Card Creator" src="http://www.reynoldsftw.com/wp-content/uploads/2009/12/BuildABrand-Business-Card-Creator.jpg" alt="BuildABrand - Business Card Creator" width="255" height="167" /></p>
<p>I don&#8217;t think I can say much more about how cool this actually is, other than I seriously considered getting personal business cards at one point &#8211; they had me!! I think the only way I could possibly foresee an improvement here is for the ability to edit the information on the card inline, rather than through a web form.</p>
<h3>Conclusion</h3>
<p>At the start of this article I said I would test <strong>BuildABrand&#8217;s</strong> theory that creating a brand should be as quick and easy as registering a domain. My verdict? <em>Domain registration</em> should be this fun! The app met all expectations in this area, the 4 simple steps really were simple.</p>
<p>What&#8217;s really exciting about <strong>BuildABrand</strong> is the simple fact that this is just the start. Having the ability to build a brand, design business cards, build a wordpress blog template, all from one place is instantly an exciting prospect &#8211; and you did it all yourself. I can&#8217;t wait to see what the guys come up with next for the app.</p>
<p>If you haven&#8217;t already, sign up to get on the beta if you can &#8211; otherwise the site will be launching soon.</p>
<p>Follow <a href="http://twitter.com/buildabrand" target="_blank">@buildabrand</a> on Twitter for more or check them out at <a href="http://buildabrand.com" target="_blank">http://buildabrand.com</a>.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F12%2Fa-closer-look-at-buildabrands-closed-beta%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F12%2Fa-closer-look-at-buildabrands-closed-beta%2F" height="61" width="51" /></a></div>
<p><a href="http://feedads.g.doubleclick.net/~a/S0ENOL3q4uX3IzTznrxWVfzWk2Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/S0ENOL3q4uX3IzTznrxWVfzWk2Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/S0ENOL3q4uX3IzTznrxWVfzWk2Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/S0ENOL3q4uX3IzTznrxWVfzWk2Q/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=sfcK_gBRthE:nLvYjLonVHU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=sfcK_gBRthE:nLvYjLonVHU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=sfcK_gBRthE:nLvYjLonVHU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=sfcK_gBRthE:nLvYjLonVHU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=sfcK_gBRthE:nLvYjLonVHU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=sfcK_gBRthE:nLvYjLonVHU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reynoldsftw/~4/sfcK_gBRthE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/12/a-closer-look-at-buildabrands-closed-beta/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.reynoldsftw.com/2009/12/a-closer-look-at-buildabrands-closed-beta/</feedburner:origLink></item>
		<item>
		<title>Tweetie 2 Features You May Not Know</title>
		<link>http://feedproxy.google.com/~r/reynoldsftw/~3/EAaaEzaMSgs/</link>
		<comments>http://www.reynoldsftw.com/2009/10/tweetie-2-now-available-on-itunes-new-features/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 20:25:43 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Social-Web]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Tweetie 2]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1592</guid>
		<description><![CDATA[In the last few minutes Tweetie 2 has been released on the App store. It&#8217;s an immense update, some tweaks you may not read about:

Edit your profile &#8211; Yes that&#8217;s right &#8211; you can actually edit your Twitter profile from within the app itself &#8211; this includes your profile pic!
Search &#8211; This will bring in [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Ftweetie-2-now-available-on-itunes-new-features%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Ftweetie-2-now-available-on-itunes-new-features%2F" height="61" width="51" /></a></div><p>In the last few minutes Tweetie 2 has been released on the <a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=333903271&amp;mt=8">App store</a>. It&#8217;s an immense update, some tweaks you may not read about:</p>
<ul>
<li>Edit your profile &#8211; Yes that&#8217;s right &#8211; you can actually edit your Twitter profile from within the app itself &#8211; this includes your profile pic!</li>
<li>Search &#8211; This will bring in and sync your saved searches from twitter.com &#8211; excellent!</li>
<li>Shortcut: Swipe a tweet from left to right for numerous options</li>
<li>To refresh the timeline, goto the top of the feed, drag it down until a message appears and release:</li>
</ul>
<div id="attachment_1593" class="wp-caption aligncenter" style="width: 330px"><img class="size-full wp-image-1593" title="tweetie-2-refresh" src="http://www.reynoldsftw.com/wp-content/uploads/2009/10/tweetie-2-refresh.jpg" alt="Tweetie 2 Refresh Mechanism" width="320" height="141" /><p class="wp-caption-text">Tweetie 2 Refresh Mechanism</p></div>
<ul>
<li>When adding a new tweet, click the character count for loads of options:</li>
</ul>
<div id="attachment_1594" class="wp-caption aligncenter" style="width: 330px"><img class="size-full wp-image-1594" title="tweetie-new-tweet" src="http://www.reynoldsftw.com/wp-content/uploads/2009/10/tweetie-new-tweet.jpg" alt="New Tweet Options" width="320" height="259" /><p class="wp-caption-text">New Tweet Options</p></div>
<ul>
<li>You can search your entire feed spotlight style at the top of the feed:</li>
</ul>
<div id="attachment_1595" class="wp-caption aligncenter" style="width: 330px"><img class="size-full wp-image-1595" title="tweetie-spotlight" src="http://www.reynoldsftw.com/wp-content/uploads/2009/10/tweetie-spotlight.jpg" alt="Tweetie 2 Spotlight Feed Search" width="320" height="178" /><p class="wp-caption-text">Tweetie 2 Spotlight Feed Search</p></div>
<p><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=333903271&amp;mt=8">Download Tweetie 2</a> here from the Apple iTunes App Store.</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Ftweetie-2-now-available-on-itunes-new-features%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Ftweetie-2-now-available-on-itunes-new-features%2F" height="61" width="51" /></a></div>
<p><a href="http://feedads.g.doubleclick.net/~a/33oFn64vtAZmaeEq5HyqkHBZGsc/0/da"><img src="http://feedads.g.doubleclick.net/~a/33oFn64vtAZmaeEq5HyqkHBZGsc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/33oFn64vtAZmaeEq5HyqkHBZGsc/1/da"><img src="http://feedads.g.doubleclick.net/~a/33oFn64vtAZmaeEq5HyqkHBZGsc/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=EAaaEzaMSgs:kJ3Z-a4XSN0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=EAaaEzaMSgs:kJ3Z-a4XSN0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=EAaaEzaMSgs:kJ3Z-a4XSN0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=EAaaEzaMSgs:kJ3Z-a4XSN0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=EAaaEzaMSgs:kJ3Z-a4XSN0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=EAaaEzaMSgs:kJ3Z-a4XSN0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reynoldsftw/~4/EAaaEzaMSgs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/10/tweetie-2-now-available-on-itunes-new-features/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.reynoldsftw.com/2009/10/tweetie-2-now-available-on-itunes-new-features/</feedburner:origLink></item>
		<item>
		<title>iPhone 3.1.2 Released – Features &amp; Changes</title>
		<link>http://feedproxy.google.com/~r/reynoldsftw/~3/WENwyUhqb94/</link>
		<comments>http://www.reynoldsftw.com/2009/10/iphone-3-1-2-released-features/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 18:38:01 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[3.1.2]]></category>
		<category><![CDATA[OS]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1577</guid>
		<description><![CDATA[Apple has today released the iPhone 3.1.2 version of their OS.

Details of the release included:
- Resolves sporadic issue that may cause iPhone to not wake from sleep
- Resolves intermittent issue that may interrupt cellular network services until restart
- Fixes bug that could cause occasional crash during video streaming
In addition to this there is also a [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Fiphone-3-1-2-released-features%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Fiphone-3-1-2-released-features%2F" height="61" width="51" /></a></div><p>Apple has today released the iPhone 3.1.2 version of their OS.</p>
<p style="text-align: left;"><img style="border: 0px solid white;" class="size-full wp-image-1579 aligncenter" title="iphone-3-1-2" src="http://www.reynoldsftw.com/wp-content/uploads/2009/10/iphone-3-1-21.png" alt="iphone-3-1-2" width="430" height="313" /></p>
<p>Details of the release included:</p>
<p><em>- Resolves sporadic issue that may cause iPhone to not wake from sleep<br />
- Resolves intermittent issue that may interrupt cellular network services until restart<br />
- Fixes bug that could cause occasional crash during video streaming</em></p>
<p>In addition to this there is also a AT&amp;T carrier update file.</p>
<p>I&#8217;ve just installed it, there doesn&#8217;t seem to be much difference to anything else &#8211; maybe it&#8217;s snappier <img src='http://www.reynoldsftw.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Fiphone-3-1-2-released-features%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Fiphone-3-1-2-released-features%2F" height="61" width="51" /></a></div>
<p><a href="http://feedads.g.doubleclick.net/~a/GwoGkZ58CsMHBwNxFsSAWMWWc8A/0/da"><img src="http://feedads.g.doubleclick.net/~a/GwoGkZ58CsMHBwNxFsSAWMWWc8A/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/GwoGkZ58CsMHBwNxFsSAWMWWc8A/1/da"><img src="http://feedads.g.doubleclick.net/~a/GwoGkZ58CsMHBwNxFsSAWMWWc8A/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=WENwyUhqb94:mUjQc9uADZ8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=WENwyUhqb94:mUjQc9uADZ8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=WENwyUhqb94:mUjQc9uADZ8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=WENwyUhqb94:mUjQc9uADZ8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=WENwyUhqb94:mUjQc9uADZ8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=WENwyUhqb94:mUjQc9uADZ8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reynoldsftw/~4/WENwyUhqb94" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/10/iphone-3-1-2-released-features/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.reynoldsftw.com/2009/10/iphone-3-1-2-released-features/</feedburner:origLink></item>
		<item>
		<title>Twitter to replace RSS?</title>
		<link>http://feedproxy.google.com/~r/reynoldsftw/~3/VtW5H6hAekM/</link>
		<comments>http://www.reynoldsftw.com/2009/10/twitter-to-replace-rss/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 09:55:03 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[RSS]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1572</guid>
		<description><![CDATA[Today I am kick starting a new experiment, replacing my RSS subscriptions with Twitter follows. Over the past few months I&#8217;ve begun following various interesting people, my Twitter feed getting more and more rich with content that I am interested in. Really using it as a source of what&#8217;s going on in the technology industry [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Ftwitter-to-replace-rss%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Ftwitter-to-replace-rss%2F" height="61" width="51" /></a></div><p>Today I am kick starting a new experiment, replacing my RSS subscriptions with Twitter follows. Over the past few months I&#8217;ve begun following various interesting people, my Twitter feed getting more and more rich with content that I am interested in. Really using it as a source of what&#8217;s going on in the technology industry rather than a way to communicate, but anyway&#8230;.</p>
<p>When running through my RSS feed subscriptions I found that around 80% of them are on Twitter in one shape or another, as well as publishing said RSS content in their own Twitter feeds. With that, I&#8217;m now effectively duplicating my subscriptions in Google Reader, and also on Twitter.</p>
<p><img class="alignright size-full wp-image-1574" title="rss-reader" src="http://www.reynoldsftw.com/wp-content/uploads/2009/10/rss-reader.png" alt="rss-reader" width="90" height="90" />The difference though is Twitter is two way. Whilst some Twitter accounts are purely setup as one way publishing, most engage back with their user base which is something you just don&#8217;t get with RSS. Also, the viral power of Twitter feeds is huge compared to RSS &#8211; the sharing (retweeting) ability has an instant impact. I&#8217;m getting to the point now that I think using Twitter has a much richer experience for the user, and without a doubt far more engaging.</p>
<p>Therefore, I&#8217;m currently replacing all my rss feeds with Twitter follows. There are still gaps, some people still don&#8217;t use Twitter, or don&#8217;t publish their content via Twitter. You also lose the ability to read entire articles via twitter without clicking a link, but most of my subscriptions are only a preview anyway. It&#8217;ll be interesting, but hopefully a great time saver.</p>
<p>Very interested if anyone else is doing this?</p>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Ftwitter-to-replace-rss%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F10%2Ftwitter-to-replace-rss%2F" height="61" width="51" /></a></div>
<p><a href="http://feedads.g.doubleclick.net/~a/i0Lq-s7jLbZnMiWvlasJGkSKMhg/0/da"><img src="http://feedads.g.doubleclick.net/~a/i0Lq-s7jLbZnMiWvlasJGkSKMhg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/i0Lq-s7jLbZnMiWvlasJGkSKMhg/1/da"><img src="http://feedads.g.doubleclick.net/~a/i0Lq-s7jLbZnMiWvlasJGkSKMhg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=VtW5H6hAekM:u01cNEmIfqg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=VtW5H6hAekM:u01cNEmIfqg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=VtW5H6hAekM:u01cNEmIfqg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=VtW5H6hAekM:u01cNEmIfqg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=VtW5H6hAekM:u01cNEmIfqg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=VtW5H6hAekM:u01cNEmIfqg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reynoldsftw/~4/VtW5H6hAekM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/10/twitter-to-replace-rss/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.reynoldsftw.com/2009/10/twitter-to-replace-rss/</feedburner:origLink></item>
		<item>
		<title>From MySQL to jQuery, via PHP, XML &amp; Ajax</title>
		<link>http://feedproxy.google.com/~r/reynoldsftw/~3/UaTLSsaeZGw/</link>
		<comments>http://www.reynoldsftw.com/2009/09/from-mysql-to-jquery-via-php-xml-ajax/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 15:53:49 +0000</pubDate>
		<dc:creator>Steve Reynolds</dc:creator>
				<category><![CDATA[Back to Basics]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.reynoldsftw.com/?p=1566</guid>
		<description><![CDATA[Back in the early part of this year I posted an article around how to get MySQL data out of the database and into a web page via jQuery and Ajax. The tutorial was okay, but I made some rookie mistakes &#8211; specifically around the creation of XML data with PHP &#8211; This time, I [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F09%2Ffrom-mysql-to-jquery-via-php-xml-ajax%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F09%2Ffrom-mysql-to-jquery-via-php-xml-ajax%2F" height="61" width="51" /></a></div><p>Back in the early part of this year I posted an article around how to get MySQL data out of the database and into a web page via jQuery and Ajax. The tutorial was okay, but I made some rookie mistakes &#8211; specifically around the creation of XML data with PHP &#8211; This time, I hope to rectify that!</p>
<p>So this article will focus on getting data from a database using PHP, converting that to an XML document, and reading that XML in through jQuery via Ajax calls. Seems complex, but is in fact, very easy.</p>
<h3>Database Design</h3>
<p>This tutorial assumes you know how to connect to your database. It also assumes that you have a table setup called &#8220;people&#8221; with 3 columns: &#8220;title&#8221;, &#8220;firstname&#8221; and &#8220;surname&#8221;. Please enter some data into this table as it will be required.</p>
<h3>The XML structure</h3>
<p>So, the point of this tutorial is to read some XML with an Ajax call from jQuery, therefore we need to structure our data correctly. Here is an example of the structure our XML document will generate:</p>
<p><span id="more-1566"></span></p>
<pre class="brush: xml;">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
&lt;people&gt;
&lt;person&gt;
&lt;firstname title=&quot;Mr&quot;&gt;Steve&lt;/firstname&gt;
&lt;surname&gt;Reynolds&lt;/surname&gt;
&lt;/person&gt;
&lt;person&gt;
&lt;firstname title=&quot;Mr&quot;&gt;David&lt;/firstname&gt;
&lt;surname&gt;Grohl&lt;/surname&gt;
&lt;/person&gt;
&lt;/people&gt;</pre>
<p>I won&#8217;t go into anymore details other than that is what our PHP script will generate for us for each row entry in the database.</p>
<h3>The PHP</h3>
<p><img class="aligncenter size-full wp-image-960" title="php-xml" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/php-xml.png" alt="php-xml" width="301" height="79" /></p>
<p>First up, we&#8217;ll get the data from the database, and then iterate through each row result to generate the XML for that particular entry. We&#8217;ll do that by using the PHP function DOMDocument() which creates an XML document for us, and also allows us to add nodes and children to the XML on the fly.</p>
<pre class="brush: php;">$query = &quot;SELECT title,firstname,surname FROM people&quot;;
$result = mysql_query($query);

$doc = new DomDocument('1.0');

// create root node
$root = $doc-&gt;createElement('people');
$root = $doc-&gt;appendChild($root);

while($array = mysql_fetch_array($result)) {

	// add node for each row
	$occ = $doc-&gt;createElement('person');
	$occ = $root-&gt;appendChild($occ);

	$child = $doc-&gt;createElement('firstname');
	$child = $occ-&gt;appendChild($child);
	$child-&gt;setAttribute('title', $array['title']);
	$value = $doc-&gt;createTextNode($array['firstname']);
	$value = $child-&gt;appendChild($value);

	$child = $doc-&gt;createElement('surname');
	$child = $occ-&gt;appendChild($child);
	$value = $doc-&gt;createTextNode($array['surname']);
	$value = $child-&gt;appendChild($value);

}</pre>
<p>Next up we need to form that into an XML file. The way we do this is tell the PHP file to save the XML document with the saveXML() function, get the PHP script to respond with an XML type header, therefore anything that is echoed out will be interpreted by the browser as XML. So after the code above, add this:</p>
<pre class="brush: php;">$xml_string = $doc-&gt;saveXML();

header('Content-Type: application/xml; charset=ISO-8859-1');

echo $xml_string;</pre>
<p>So, the header part tells the browser that this is an XML content type, and the rest is simply echoing out the XML data structure as mentioned previously.</p>
<p>Hopefully now, when you run that PHP script you should return a valid XML document&#8230;</p>
<p></p>
<h3>Ajax with jQuery</h3>
<p><img class="aligncenter size-full wp-image-961" title="xml-ajax" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/xml-ajax.png" alt="xml-ajax" width="312" height="73" /></p>
<p>The last piece to this puzzle is getting that XML data into an HTML page using jQuery and ajax. Again, it&#8217;s pretty easy to do, here is the basic HTML structure I am using for this tutorial:</p>
<pre class="brush: xml;">&lt;html&gt;
&lt;head&gt;
&lt;title&gt;The HTML&lt;/title&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery-1.3.1.min.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;thejs.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;container&quot;&gt;&lt;/div&gt;
&lt;input type=&quot;submit&quot; id=&quot;getData&quot; name=&quot;getData&quot; value=&quot;Get Data!&quot; /&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>You need to obviously include the jQuery library, I am also including an external javascript file for our jQuery code. So go ahead and create a javascript file called thejs.js and put the code below into it:</p>
<pre class="brush: jscript;">$(document).ready(function() {
$(&quot;#getData&quot;).click(function(){
var data = &quot;&quot;;
$.get(&quot;thephp.php&quot;, function(theXML){
$('person',theXML).each(function(i){

var title = $(this).find(&quot;firstname&quot;).attr(&quot;title&quot;);
var firstname = $(this).find(&quot;firstname&quot;).text();
var surname = $(this).find(&quot;surname&quot;).text();

data = data + title + &quot; &quot; + firstname + &quot; &quot; + surname + &quot;&lt;br&gt;&quot;;
});
$(&quot;#container&quot;).html(data);
});
});
});</pre>
<p>So this code is firstly wiring up a click event on a button, and then making a GET Ajax call to the PHP script we made earlier. Once it receives some XML data it iterates through each &#8220;person&#8221; node.</p>
<p>Notice, I am returning two different data sources from the XML, the data in between the &lt;firstname&gt; and &lt;surname&gt; tags, as well as also returning the data for an XML node attribute, in this case &#8220;title&#8221;. This doesn&#8217;t really make much sense in this context, but what it does show you is how you can access attribute information with the function.</p>
<h3>Download</h3>
<div id="attachment_86" class="wp-caption alignleft" style="width: 70px"><a href="http://www.reynoldsftw.com/wp-content/uploads/2009/09/php-xml-jquery-ajax.zip"><img class="size-full wp-image-86" title="Download Icon" src="http://www.reynoldsftw.com/wp-content/uploads/2009/01/drop-box-icon.png" alt="Download" width="60" height="60" /></a><p class="wp-caption-text">Download</p></div>
<p>So that&#8217;s it! You can see a <a href="http://demos.reynoldsftw.com/php-xml-jquery-ajax/theHTML.html" target="_blank">working demo of this here</a>. Download all the sourcecode by clicking the box icon on the left hand side. The code is fully working, you just need to add your database connection code to the PHP script. Feel free to leave feedback and comments in the section below!</p>
<h3>Tools to help you learn&#8230;</h3>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<thead></thead>
<tbody>
<tr>
<td width="33%" align="center" valign="top">
<div id="attachment_613" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847196705?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847196705"><img class="size-full wp-image-613" title="jquery13" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery13.jpg" alt="Learning jQuery 1.3" width="101" height="132" /></a><p class="wp-caption-text">Learning jQuery 1.3</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847196705" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_966" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/0672329166?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0672329166"><img class="size-full wp-image-966" title="phpmysql" src="http://www.reynoldsftw.com/wp-content/uploads/2009/03/phpmysql.jpeg" alt="PHP MySQL Development" width="101" height="132" /></a><p class="wp-caption-text">PHP MySQL Development</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=0672329166" border="0" alt="" width="1" height="1" /></td>
<td width="33%" align="center" valign="top">
<div id="attachment_612" class="wp-caption aligncenter" style="width: 111px"><a href="http://www.amazon.com/gp/product/1847195121?ie=UTF8&amp;tag=stereyblo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1847195121"><img class="size-full wp-image-612" title="jquery-ui" src="http://www.reynoldsftw.com/wp-content/uploads/2009/02/jquery-ui.jpg" alt="jQuery UI 1.6" width="101" height="132" /></a><p class="wp-caption-text">jQuery UI 1.6</p></div>
<p><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.com/e/ir?t=stereyblo-20&amp;l=as2&amp;o=1&amp;a=1847195121" border="0" alt="" width="1" height="1" /></td>
</tr>
</tbody>
</table>
<div class="tweetmeme_button" style="float: right; margin-left: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F09%2Ffrom-mysql-to-jquery-via-php-xml-ajax%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.reynoldsftw.com%2F2009%2F09%2Ffrom-mysql-to-jquery-via-php-xml-ajax%2F" height="61" width="51" /></a></div>
<p><a href="http://feedads.g.doubleclick.net/~a/AUDXWEr3CJbZtuKs9-LF6twUDmQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/AUDXWEr3CJbZtuKs9-LF6twUDmQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AUDXWEr3CJbZtuKs9-LF6twUDmQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/AUDXWEr3CJbZtuKs9-LF6twUDmQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=UaTLSsaeZGw:6CztWmRlWjc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=UaTLSsaeZGw:6CztWmRlWjc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=UaTLSsaeZGw:6CztWmRlWjc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=UaTLSsaeZGw:6CztWmRlWjc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?i=UaTLSsaeZGw:6CztWmRlWjc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/reynoldsftw?a=UaTLSsaeZGw:6CztWmRlWjc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/reynoldsftw?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/reynoldsftw/~4/UaTLSsaeZGw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.reynoldsftw.com/2009/09/from-mysql-to-jquery-via-php-xml-ajax/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		<feedburner:origLink>http://www.reynoldsftw.com/2009/09/from-mysql-to-jquery-via-php-xml-ajax/</feedburner:origLink></item>
	</channel>
</rss>
