<?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>Basil Salad Software</title>
	
	<link>http://basil-salad.com/wp</link>
	<description />
	<lastBuildDate>Wed, 25 Jan 2012 17:24:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/BasilSaladSoftware" /><feedburner:info uri="basilsaladsoftware" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>How to Create a Time Machine Backup to a Network Drive in Lion</title>
		<link>http://feedproxy.google.com/~r/BasilSaladSoftware/~3/E7eYxCiVkR8/</link>
		<comments>http://basil-salad.com/wp/how-to/create-time-machine-backup-network-drive-lion/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 16:54:43 +0000</pubDate>
		<dc:creator>Sasmito Adibowo</dc:creator>
				<category><![CDATA[How To]]></category>
		<category><![CDATA[AFP]]></category>
		<category><![CDATA[AirPort]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Backup software]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Destination Folder]]></category>
		<category><![CDATA[Disk Image]]></category>
		<category><![CDATA[Disk Space]]></category>
		<category><![CDATA[Disk Utility]]></category>
		<category><![CDATA[External Storage]]></category>
		<category><![CDATA[File system]]></category>
		<category><![CDATA[Filesystem in Userspace]]></category>
		<category><![CDATA[Finder]]></category>
		<category><![CDATA[Firewire]]></category>
		<category><![CDATA[Hard disk drive]]></category>
		<category><![CDATA[HFS Plus]]></category>
		<category><![CDATA[Image File]]></category>
		<category><![CDATA[Mac Developer]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mac Share]]></category>
		<category><![CDATA[Microsoft Windows]]></category>
		<category><![CDATA[Network Area Storage]]></category>
		<category><![CDATA[Network Drive]]></category>
		<category><![CDATA[Network Folder]]></category>
		<category><![CDATA[Network Router]]></category>
		<category><![CDATA[New Image]]></category>
		<category><![CDATA[Novice Users]]></category>
		<category><![CDATA[NTBackup]]></category>
		<category><![CDATA[NTFS]]></category>
		<category><![CDATA[Old Windows]]></category>
		<category><![CDATA[Open Time]]></category>
		<category><![CDATA[shared folder]]></category>
		<category><![CDATA[SMB]]></category>
		<category><![CDATA[Sparse image]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[Three Steps]]></category>
		<category><![CDATA[Time Capsule]]></category>
		<category><![CDATA[Time Machine]]></category>
		<category><![CDATA[Windows Machine]]></category>
		<category><![CDATA[Workaround]]></category>

		<guid isPermaLink="false">http://basil-salad.com/wp/?p=1045</guid>
		<description><![CDATA[Let&#8217;s say you have a home NAS (Network Area Storage), a router with a hard drive, or even an old Windows machine with a lot of disk space lying around. You want to make use of this disk space to store your Time Machine backups. You open Time Machine Preferences and the only way you [...]


Related posts:<ol><li><a href='http://basil-salad.com/wp/kitchen/sandboxing-pubsub-framework/' rel='bookmark' title='Permanent Link: Sandboxing the PubSub framework'>Sandboxing the PubSub framework</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s say you have a home NAS (Network Area Storage), a router with a hard drive, or even an old Windows machine with a lot of disk space lying around. You want to make use of this disk space to store your Time Machine backups. You open Time Machine Preferences and the only way you can add a non-local disk is via a Time Capsule or AirPort-connected storage. Now what? If this is your problem and you have upgraded to Mac OS X Lion, there is a workaround&#8230; Keep reading.</p>
<p><span id="more-1045"></span></p>
<p>The reason why Time Machine Preference Pane doesn&#8217;t show network drive is likely the Mac Developer&#8217;s mantra: <em>keep simple things simple and complex things possible</em>. Novice users, by definition, are inexperienced &#8212; they&#8217;re likely haven&#8217;t gone through the pain of losing data and discounted the value of backups. Thus to not complicate things more and make it easy for most users (especially novices) Time Machine&#8217;s preferences only cater for the two common cases:</p>
<ul>
<li>Directly-attached external storage (via USB, Firewire, or Thunderbolt).</li>
<li>Time Capsule or Airport Base Station attached storage.</li>
</ul>
<p>But with Mac OS X 10.7, Apple have now made more advanced cases possible. As with most advanced stuff, you will need to open up Terminal to do it. The secret? The new <code>tmutil</code> command.</p>
<p>Back to the HOWTO. In order to create a Time Machine backup on a network folder  you need to follow these three steps:</p>
<ol>
<li style="list-style-type: decimal;">Create a HFS+ disk image, preferably sparse disk image, and place the disk image file into its destination folder/server where it will live. It shouldn&#8217;t matter whether it is SMB (Windows) or AFP (Mac) shared folder as long as your Mac can write to it.</li>
<li style="list-style-type: decimal;">Mount the disk image and use the <code>tmutil</code> command to tell where is it.</li>
<li style="list-style-type: decimal;">Tell Time Machine to start the backup process to make sure it works.</li>
</ol>
<p>Still not clear? Here comes the walkthrough</p>
<h2>Creating the Disk Image</h2>
<ol>
<li style="list-style-type: decimal;">Open Disk Utility</li>
<li style="list-style-type: decimal;">Click on New Image</li>
<li style="list-style-type: decimal;">Set a large enough size for the disk image. Ensure that the <span style="font-family: 'Lucida Grande', sans-serif;">Format</span> is &#8220;<strong>Mac OS X Extended (Journaled)&#8221;</strong> (in other words, this will be HFS+, the  Mac&#8217;s native filesystem) and the <span style="font-family: 'Lucida Grande', sans-serif;">Image Format</span> is &#8220;<strong>sparse bundle disk image</strong>&#8220;.
<p><div id="attachment_1046" class="wp-caption alignright" style="width: 506px"><a href="http://basil-salad.com/wp/wp-content/uploads/2012/01/TimeMachineBackup-1.png" rel="prettyPhoto[g1045]"><img class="size-full wp-image-1046" title="Time Machine Disk Image Settings" src="http://basil-salad.com/wp/wp-content/uploads/2012/01/TimeMachineBackup-1.png" alt="" width="496" height="184" /></a><p class="wp-caption-text">Time Machine Disk Image Settings</p></div></li>
<li style="list-style-type: decimal;">You can set <span style="font-family: 'Lucida Grande', sans-serif;">Encryption</span> if you want but not necessary. On the other hand, <em>encrypting the disk image is a good idea</em> since you&#8217;re going to put it on a network that can potentially be accessed by others.</li>
<li style="list-style-type: decimal;">Save the disk image to the shared folder. Alternatively you can save the image locally and then move it to the destination folder on a server.</li>
</ol>
<h2>Tell Time Machine to use the Disk Image</h2>
<ol>
<li style="list-style-type: decimal;">Open Finder</li>
<li style="list-style-type: decimal;">Navigate to the shared folder which you put the new disk image.</li>
<li style="list-style-type: decimal;">Double-click on the disk image to mount it. You should see the new volume in the Finder&#8217;s sidebar</li>
<li style="list-style-type: decimal;">Open Terminal and enter the following command :<br />
<code>sudo tmutil setdestination /Volumes/{mounted-disk-image}</code><br />
Be sure to replace <code>{mounted-disk-image}</code> with the appropriate name for your new disk image. You will be prompted for your password, this is normal.</li>
</ol>
<h2>Do a Test Backup</h2>
<ol>
<li style="list-style-type: decimal;">Click the Time Machine icon in the Menu Extras area (that&#8217;s the upper-right side of the screen) and select &#8220;Back Up Now&#8221;.</li>
<li style="list-style-type: decimal;">Wait for 10 minutes or so for Time Machine to do its thing</li>
<li style="list-style-type: decimal;">Open Finder, navigate to the mounted disk image, and ensure that Time Machine have created the &#8220;Backups.backupdb&#8221; folder and there is a folder inside it with the same name as your computer.</li>
</ol>
<p>So that&#8217;s just about it. You can also use this method to save backups to a non-Mac drives, like NTFS drives, if you have the appropriate drivers installed to write to those filesystems (hint: MacFUSE+NTFS-3g or Tuxera&#8217;s NTFS driver). For more information on the <code>tmutil</code> command, type <code>man tmutil</code> at the Terminal.</p>
<p>Till next time, you take care.</p>


<p>Related posts:<ol><li><a href='http://basil-salad.com/wp/kitchen/sandboxing-pubsub-framework/' rel='bookmark' title='Permanent Link: Sandboxing the PubSub framework'>Sandboxing the PubSub framework</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/BasilSaladSoftware/~4/E7eYxCiVkR8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://basil-salad.com/wp/how-to/create-time-machine-backup-network-drive-lion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://basil-salad.com/wp/how-to/create-time-machine-backup-network-drive-lion/</feedburner:origLink></item>
		<item>
		<title>Resonate Update – Episode Two</title>
		<link>http://feedproxy.google.com/~r/BasilSaladSoftware/~3/B7k2U4-X9fU/</link>
		<comments>http://basil-salad.com/wp/labs/resonate-update-episode-2/#comments</comments>
		<pubDate>Sun, 08 Jan 2012 16:13:09 +0000</pubDate>
		<dc:creator>Sasmito Adibowo</dc:creator>
				<category><![CDATA[Labs]]></category>
		<category><![CDATA[Backchannel]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Entertainment/Culture]]></category>
		<category><![CDATA[HDMI]]></category>
		<category><![CDATA[Heading]]></category>
		<category><![CDATA[International Society for Technology in Education]]></category>
		<category><![CDATA[Ipad]]></category>
		<category><![CDATA[Lcd Projector]]></category>
		<category><![CDATA[Monica]]></category>
		<category><![CDATA[Monica Rankin]]></category>
		<category><![CDATA[Overhead Projection]]></category>
		<category><![CDATA[Overhead Projector]]></category>
		<category><![CDATA[Overhead Screen]]></category>
		<category><![CDATA[Projection]]></category>
		<category><![CDATA[Projection Screen]]></category>
		<category><![CDATA[Projectors]]></category>
		<category><![CDATA[Rankin]]></category>
		<category><![CDATA[Real-time web]]></category>
		<category><![CDATA[Resonate]]></category>
		<category><![CDATA[saved search]]></category>
		<category><![CDATA[Search Result]]></category>
		<category><![CDATA[Subheading]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[Television]]></category>
		<category><![CDATA[Timeline]]></category>
		<category><![CDATA[Tweets]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Twitter Experiment]]></category>
		<category><![CDATA[University Of Texas]]></category>
		<category><![CDATA[University Of Texas At Dallas]]></category>
		<category><![CDATA[Vga]]></category>

		<guid isPermaLink="false">http://basil-salad.com/wp/?p=1026</guid>
		<description><![CDATA[This update shows Resonate&#8217;s tweet projection feature. When the iPad&#8217;s video-out cable is connected (in other words, VGA or HDMI output), it will display a special screen just for projecting tweets and separate from what the operator see on the iPad&#8217;s built-in display. The external display shows either the main timeline or a timeline of [...]


Related posts:<ol><li><a href='http://basil-salad.com/wp/labs/resonate-overhead-projection/' rel='bookmark' title='Permanent Link: Resonate Overhead Projection'>Resonate Overhead Projection</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-update-episode/' rel='bookmark' title='Permanent Link: Resonate Update &#8211; Episode One'>Resonate Update &#8211; Episode One</a></li>
<li><a href='http://basil-salad.com/wp/kitchen/resonate-marketing-site-20/' rel='bookmark' title='Permanent Link: Resonate marketing site 2.0'>Resonate marketing site 2.0</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>This update shows <a href="http://resonateapp.com">Resonate&#8217;s</a> tweet projection feature. When the iPad&#8217;s video-out cable is connected (in other words, VGA or HDMI output), it will display a special screen just for projecting tweets and separate from what the operator see on the iPad&#8217;s built-in display. The external display shows either the main timeline or a timeline of a Twitter list, a saved search, or a custom (ad-hoc) search. In addition you can set a heading and subheading to show at the top of the projector&#8217;s screen.</p>
<p><span id="more-1026"></span></p>
<p>The feature was inspired by <a href="http://www.utdallas.edu/~mrankin/usweb/twitterconclusions.htm">Monica Rankin&#8217;s Twitter Experiment</a> in the University of Texas at Dallas. She found that projecting a Twitter hashtag search result on-screen and letting students tweet that hashtag improves student&#8217;s engagement in the discussion. This helped her facilitate a healthy weekly class discussion of a relatively large class (about 90 students).</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/cvxQg_i6NHE?rel=0" frameborder="0"></iframe></p>
<p>The following text is the transcript of the video.</p>
<p style="padding-left: 30px;">➠<br />
<em>Hi, I&#8217;m Sasmito and you will see a second preview of Resonate, our new Twitter client for educators.</em></p>
<p style="padding-left: 30px;"><em>In this preview you can see how Resonate can help you bring out the backchannel by projecting tweets on an overhead projector.</em></p>
<p style="padding-left: 30px;"><em>The idea of projecting tweets to assist class discussion was pioneered by Monica Rankin of University of Texas at Dallas. She found that by encouraging students to tweet about the topic being discussed and displaying them on-screen for everyone to see makes students more engaged and makes the discussion more lively, especially in a large class.</em></p>
<p style="padding-left: 30px;"><em>Resonate has a special tweet projection mode that allows you to display a twitter timeline or search result on a large screen. Let&#8217;s see how to do this. </em></p>
<p style="padding-left: 30px;"><em>➠(show projection screen)</em></p>
<p style="padding-left: 30px;"><em>Imagine that this window is your overhead projection. When you connect your iPad to an LCD projector or a television using the appropriate cable, Resonate will display this content on your overhead screen or TV.</em></p>
<p style="padding-left: 30px;"><em>➠(switch to iPad)</em></p>
<p style="padding-left: 30px;"><em>Now, this is what you will see on your iPad&#8217;s screen. From here, you can setup what the projector will show. You can write the headline text and subtitle text to set the overall topic of the discussion. </em></p>
<p style="padding-left: 30px;"><em>I&#8217;m changing the headings now and you can see that the projection is updated immediately.</em></p>
<p style="padding-left: 30px;"><em>You can show any one of your timelines or saved searches. In addition, you can also display a search result in your projection. You can search for a hashtag and let your students tweet the hashtag to get their messages on the screen.</em></p>
<p style="padding-left: 30px;"><em>Let&#8217;s say that I want the class to discuss about #edchat &#8211; I&#8217;ll enter the hashtag and let&#8217;s see what tweets comes out.</em></p>
<p style="padding-left: 30px;"><em>The projection screen is updated real-time, so you don&#8217;t need to keep manually refreshing it to display the latest tweets.</em></p>
<p style="padding-left: 30px;"><em>You have just seen Resonate&#8217;s tweet projection feature. Projecting tweets is pretty handy to augment class discussion when the class has many students.</em></p>
<p style="padding-left: 30px;"><em>Resonate is currently in development. If you want to be the first to know when Resonate is ready, just go to ResonateApp.com and enter your e-mail address. Also if you want to be a beta tester and get a free copy, just go to resonateapp.com and remember to tick the beta tester box when you register.</em></p>
<p style="padding-left: 30px;"><em>Resonate, the twitter app for educators. Find out more in resonateapp.com</em></p>
<p>Thanks for watching. Until next time.</p>


<p>Related posts:<ol><li><a href='http://basil-salad.com/wp/labs/resonate-overhead-projection/' rel='bookmark' title='Permanent Link: Resonate Overhead Projection'>Resonate Overhead Projection</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-update-episode/' rel='bookmark' title='Permanent Link: Resonate Update &#8211; Episode One'>Resonate Update &#8211; Episode One</a></li>
<li><a href='http://basil-salad.com/wp/kitchen/resonate-marketing-site-20/' rel='bookmark' title='Permanent Link: Resonate marketing site 2.0'>Resonate marketing site 2.0</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/BasilSaladSoftware/~4/B7k2U4-X9fU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://basil-salad.com/wp/labs/resonate-update-episode-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://basil-salad.com/wp/labs/resonate-update-episode-2/</feedburner:origLink></item>
		<item>
		<title>Fund Watch received a takedown notice</title>
		<link>http://feedproxy.google.com/~r/BasilSaladSoftware/~3/Lgw5JKlXBG0/</link>
		<comments>http://basil-salad.com/wp/kitchen/fund-watch-received-takedown-notice/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 09:31:54 +0000</pubDate>
		<dc:creator>Sasmito Adibowo</dc:creator>
				<category><![CDATA[From the Kitchen]]></category>
		<category><![CDATA[App Store]]></category>
		<category><![CDATA[Apple Inc.]]></category>
		<category><![CDATA[Business/Finance]]></category>
		<category><![CDATA[Dashboard]]></category>
		<category><![CDATA[Fund Watch]]></category>
		<category><![CDATA[Fundsupermart]]></category>
		<category><![CDATA[Fundsupermart Singapore]]></category>
		<category><![CDATA[Ifast]]></category>
		<category><![CDATA[Ifast Financial Pte Ltd]]></category>
		<category><![CDATA[Ios]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone App Store]]></category>
		<category><![CDATA[ITunes]]></category>
		<category><![CDATA[ITunes Store]]></category>
		<category><![CDATA[Kian]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mac User]]></category>
		<category><![CDATA[Maintenance Shutdown]]></category>
		<category><![CDATA[Monitors]]></category>
		<category><![CDATA[Os X]]></category>
		<category><![CDATA[Os X User]]></category>
		<category><![CDATA[takedown]]></category>
		<category><![CDATA[Takedown Notice]]></category>
		<category><![CDATA[Widget]]></category>
		<category><![CDATA[Year End]]></category>

		<guid isPermaLink="false">http://basil-salad.com/wp/?p=1012</guid>
		<description><![CDATA[We have just received notice from Ma Qian Cheng from iFast Financials to remove Fund Watch from the App Store. Because of this notice, we have no choice but to comply and remove Fund Watch from sale. If you already own a copy, there is no need to worry because Fund Watch will continue to [...]


Related posts:<ol><li><a href='http://basil-salad.com/wp/press-release/fund-watch-fundsupermart-india/' rel='bookmark' title='Permanent Link: Fund Watch for iPhone now supports Fundsupermart India'>Fund Watch for iPhone now supports Fundsupermart India</a></li>
<li><a href='http://basil-salad.com/wp/how-to/downloading-fundsupermart-daily-price-history/' rel='bookmark' title='Permanent Link: Downloading Fundsupermart daily price history'>Downloading Fundsupermart daily price history</a></li>
<li><a href='http://basil-salad.com/wp/kitchen/fund-watch-for-android/' rel='bookmark' title='Permanent Link: Fund Watch for Android'>Fund Watch for Android</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>We have just received notice from Ma Qian Cheng from iFast Financials to remove <a href="http://basil-salad.com/wp/iphone/fund-watch/">Fund Watch</a> from the App Store. Because of this notice, we have no choice but to comply and remove Fund Watch from sale. <span id="more-1012"></span></p>
<p>If you already own a copy, there is no need to worry because Fund Watch will continue to work as it is, at least until <a href="http://fundsupermart.com">Fundsupermart</a> changes how they list out fund prices. Be sure to <strong>keep a backup of your copy</strong> since you may not be able to re-download it once it&#8217;s taken off the store.</p>
<p><a href="http://basil-salad.com/wp/wp-content/uploads/2011/12/Inbox-—-support@BasilSalad-1237-messages.png"><img class="aligncenter size-full wp-image-1013" title="Fundsupermart takedown notice" src="http://basil-salad.com/wp/wp-content/uploads/2011/12/Inbox-—-support@BasilSalad-1237-messages.png" alt="" width="528" height="283" /></a></p>
<p>We plan to take Fund Watch off-sale early next year, primarily because iTunes Connect is still not available due to the holiday  maintenance shutdown and we have some holiday plans for the year-end. It is <a href="http://itunes.apple.com/sg/app/fund-watch/id291920269?mt=8">still available now at the iPhone App Store</a> if you want a copy.</p>
<p>Note that if you&#8217;re a Mac user, <a title="Fundsupermart Widget" href="http://basil-salad.com/wp/mac-os/fundsupermart-widget/">Fundsupermart Widget</a> is still available (and still free). You can use the widget to monitor Fundsupermart Singapore fund prices from your <a href="http://en.wikipedia.org/wiki/Dashboard_(Mac_OS)">Mac OS X Dashboard</a>.</p>
<p>Thanks and take care.</p>


<p>Related posts:<ol><li><a href='http://basil-salad.com/wp/press-release/fund-watch-fundsupermart-india/' rel='bookmark' title='Permanent Link: Fund Watch for iPhone now supports Fundsupermart India'>Fund Watch for iPhone now supports Fundsupermart India</a></li>
<li><a href='http://basil-salad.com/wp/how-to/downloading-fundsupermart-daily-price-history/' rel='bookmark' title='Permanent Link: Downloading Fundsupermart daily price history'>Downloading Fundsupermart daily price history</a></li>
<li><a href='http://basil-salad.com/wp/kitchen/fund-watch-for-android/' rel='bookmark' title='Permanent Link: Fund Watch for Android'>Fund Watch for Android</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/BasilSaladSoftware/~4/Lgw5JKlXBG0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://basil-salad.com/wp/kitchen/fund-watch-received-takedown-notice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://basil-salad.com/wp/kitchen/fund-watch-received-takedown-notice/</feedburner:origLink></item>
		<item>
		<title>Sandboxing the PubSub framework</title>
		<link>http://feedproxy.google.com/~r/BasilSaladSoftware/~3/BuGkHKV_bTs/</link>
		<comments>http://basil-salad.com/wp/kitchen/sandboxing-pubsub-framework/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 09:22:53 +0000</pubDate>
		<dc:creator>Sasmito Adibowo</dc:creator>
				<category><![CDATA[From the Kitchen]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[Bringing News]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Community News]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[Cross-platform software]]></category>
		<category><![CDATA[Daniel Jalkut]]></category>
		<category><![CDATA[Developer Community]]></category>
		<category><![CDATA[Download Mac]]></category>
		<category><![CDATA[Dts]]></category>
		<category><![CDATA[Environment]]></category>
		<category><![CDATA[File system permissions]]></category>
		<category><![CDATA[Find]]></category>
		<category><![CDATA[Inter Process Communication]]></category>
		<category><![CDATA[Library Directory]]></category>
		<category><![CDATA[Lion]]></category>
		<category><![CDATA[Mac App Store]]></category>
		<category><![CDATA[Mac Application]]></category>
		<category><![CDATA[Mac Developer]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mac Store]]></category>
		<category><![CDATA[Met]]></category>
		<category><![CDATA[News Anchor]]></category>
		<category><![CDATA[News Feed]]></category>
		<category><![CDATA[News Reader]]></category>
		<category><![CDATA[Path]]></category>
		<category><![CDATA[Ports]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Publication Subscription]]></category>
		<category><![CDATA[PubSub]]></category>
		<category><![CDATA[Quota]]></category>
		<category><![CDATA[Right Off The Bat]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Rss Reader]]></category>
		<category><![CDATA[Sandbox]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[Technology/Internet]]></category>

		<guid isPermaLink="false">http://basil-salad.com/wp/?p=1002</guid>
		<description><![CDATA[Lion&#8217;s sandboxing deadline may have been pushed back, but News Anchor came through and met the original date. Bringing News Anchor into the sandbox cost me one of the two precious DTS tickets in my quota, due to the difficulties in getting the PubSub framework to function in the environment. I&#8217;d figured I ought to [...]


Related posts:<ol><li><a href='http://basil-salad.com/wp/kitchen/story-behind-news-anchor/' rel='bookmark' title='Permanent Link: The story behind News Anchor'>The story behind News Anchor</a></li>
<li><a href='http://basil-salad.com/wp/press-release/news-anchor-2-0-release/' rel='bookmark' title='Permanent Link: News Anchor 2.0 &#8211; Enjoy News Feeds with your breakfast'>News Anchor 2.0 &#8211; Enjoy News Feeds with your breakfast</a></li>
<li><a href='http://basil-salad.com/wp/press-release/news-anchor-1-0-release/' rel='bookmark' title='Permanent Link: News Anchor 1.0 for Mac OS X Release'>News Anchor 1.0 for Mac OS X Release</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://arstechnica.com/apple/news/2011/11/apple-pushes-back-sandboxing-deadline-as-devs-struggle-with-tradeoffs.ars">Lion&#8217;s sandboxing deadline may have been pushed back</a>, but News Anchor came through and met the original date. Bringing News Anchor into the sandbox cost me one of the two precious DTS tickets in my quota, due to the difficulties in getting the PubSub framework to function in the environment.  I&#8217;d figured I ought to write this out to contribute back to the Mac Developer community.</p>
<p><span id="more-1002"></span><br />
<a href="http://newsanchormac.com"><img class="alignright" title="News Anchor Icon" src="http://newsanchormac.com/wp/wp-content/uploads/2011/06/News-Anchor-2-Icon-128x128.png" alt="" width="128" height="128" /></a><a href="http://newsanchormac.com">News Anchor</a> is our news reader for the Mac. As a news feed reader, it relies heavily on Apple&#8217;s <a href="http://developer.apple.com/library/mac/#documentation/InternetWeb/Conceptual/PubSub/Introduction/Introduction.html">PubSub (Publication Subscription) framework</a> to parse the various news feed formats that are available (mostly RSS or ATOM, but since the standards are a bit lax, various websites tend to provide their content in ever-so-slightly different formats). The application is available both at the Mac App Store and direct-download from us. The Mac App Store version has been <a href="http://newsanchormac.com/wp/release-notes/news-anchor-244-release-notes/">sandboxed since release 2.4.4</a> and its corresponding direct-download version was released at the same time to support the changes in the MAS version. This is so that MAS customers can also use the direct-download version, achieved via a <a href="http://www.red-sweater.com/blog/1678/this-app-is-your-app">clever licensing scheme first described by Daniel Jalkut</a>.</p>
<p>The challenge around sandboxing an app that uses the PubSub framework primarily stems from the way it uses a shared database file that is shared among all applications. Fortunately, it is not system-wide — every user has her own instance of the file placed in the <code>~/Library</code> directory. Another issue is that the framework uses some mach ports for inter-process communication, but this was pretty straightforward to solve since it shows immediately as sandbox violation messages in the system log.</p>
<h2>File access issues</h2>
<p>When you sandbox a Mac application that uses the PubSub framework right off the bat, chances are PubSub framework couldn&#8217;t parse any RSS feed that you throw at it. Furthermore you&#8217;re likely to see these errors in your console log:</p>
<pre><textarea style="font-family: monospace; white-space: nowrap; overflow: auto;" cols="70" rows="5" readonly="readonly">[WARNING] SQL Error: SQLITE_CANTOPEN[14.0]: Database file not found
[WARNING] ***** SQL error opening database: SQLITE_CANTOPEN[14.0]: Database file not found
[WARNING] SQL Error: SQLITE_CANTOPEN[14.0]: Database file not found
[WARNING] SQLite::Exception "SQLITE_CANTOPEN[14.0]: Database file not found" caught in static void PubSub::ClientCore::openClientSession()
[WARNING] std::exception "std::exception" caught in objc_object* -[PSFeed initWithData:URL:](PSFeed*, objc_selector*, NSData*, NSURL*)</textarea></pre>
<p>These warning messages sounds like the PubSub framework couldn&#8217;t find the path to its shared database directory. Why? Because by being in a sandbox, the application gets its own home directory that is several levels down from the user&#8217;s own directory. Since the home folder have moved (at least from the application&#8217;s point of view) the PubSub Framework then couldn&#8217;t locate its database that is normally found in <code>~/Library/PubSub</code> and simply fail without throwing any exception on to the Objective-C side.</p>
<p>To regain access to the PubSub database, you will need to add read/write access entitlements to your application and add a symbolic link so that the PubSub framework can access it from within your application&#8217;s home directory. Adding an entitlement alone is not enough since the application&#8217;s view of the home directory have changed and some Unix-trickery is required to locate the file.</p>
<h2>File entitlements</h2>
<p>Add these read/write entitlements to your application do that it can access PubSub&#8217;s database</p>
<pre><textarea style="font-family: monospace; white-space: nowrap; overflow: auto;" cols="70" rows="5" readonly="readonly">&lt;key&gt;com.apple.security.temporary-exception.files.home-relative-path.read-write&lt;/key&gt;
&lt;array&gt;
    &lt;string&gt;/Library/PubSub/&lt;/string&gt;
    &lt;string&gt;/Library/PubSub/Database/&lt;/string&gt;
&lt;/array&gt;</textarea></pre>
<h2>Symbolic Link</h2>
<p>Adding file access entitlements only gives your application the ablility to read/write those files, but doesn&#8217;t help much on finding those files. Remember that a sandboxed application has its own home directory that is separated from the user&#8217;s normal home directory. Then how the sandboxed application can access shared files? By providing symbolic links from the sandbox to the files real positions.</p>
<p>Apple themselves also do this. When a sandbox directory is initialized, its Library directory is pre-populated with symbolic links of a number of important subdirectories that points to their respective true locations inside the user&#8217;s library folder. Take a look at the following sample Library folder in a sandbox:</p>
<pre><textarea style="font-family: monospace; white-space: pre; overflow: auto;" cols="70" rows="31" readonly="readonly">athena:Library adib$ pwd
/Users/adib/Library/Containers/com.basilsalad.newsanchor/Data/Library
athena:Library adib$ ls -lah
total 176
drwx------  27 adib  adib   918B Nov 12 11:58 .
drwx------  11 adib  adib   374B Nov 12 11:57 ..
-rw-r--r--@  1 adib  adib    12K Nov 12 11:57 .DS_Store
drwx------   5 adib  adib   170B Nov 20 23:31 Application Support
lrwxr-xr-x   1 adib  adib    17B Nov 12 11:57 Audio -&gt; ../../../../Audio
drwx------@  3 adib  adib   102B Nov 12 11:57 Caches
lrwxr-xr-x   1 adib  adib    21B Nov 12 11:57 Calendars -&gt; ../../../../Calendars
lrwxr-xr-x   1 adib  adib    24B Nov 12 11:57 ColorPickers -&gt; ../../../../ColorPickers
lrwxr-xr-x   1 adib  adib    21B Nov 12 11:57 ColorSync -&gt; ../../../../ColorSync
lrwxr-xr-x   1 adib  adib    18B Nov 12 11:57 Colors -&gt; ../../../../Colors
lrwxr-xr-x   1 adib  adib    22B Nov 12 11:57 Components -&gt; ../../../../Components
lrwxr-xr-x   1 adib  adib    24B Nov 12 11:57 Compositions -&gt; ../../../../Compositions
drwxr-xr-x   3 adib  adib   102B Nov 20 23:48 Cookies
lrwxr-xr-x   1 adib  adib    21B Nov 12 11:57 Favorites -&gt; ../../../../Favorites
lrwxr-xr-x   1 adib  adib    27B Nov 12 11:57 FontCollections -&gt; ../../../../FontCollections
lrwxr-xr-x   1 adib  adib    17B Nov 12 11:57 Fonts -&gt; ../../../../Fonts
lrwxr-xr-x   1 adib  adib    25B Nov 12 11:57 Input Methods -&gt; ../../../../Input Methods
lrwxr-xr-x   1 adib  adib    23B Nov 12 11:57 KeyBindings -&gt; ../../../../KeyBindings
lrwxr-xr-x   1 adib  adib    28B Nov 12 11:57 Keyboard Layouts -&gt; ../../../../Keyboard Layouts
lrwxr-xr-x   1 adib  adib    21B Nov 12 11:57 Keychains -&gt; ../../../../Keychains
drwx------   2 adib  adib    68B Nov 12 11:57 Logs
drwx------  24 adib  adib   816B Nov 20 23:35 Preferences
lrwxr-xr-x   1 adib  adib    21B Nov 12 11:57 QuickLook -&gt; ../../../../QuickLook
drwx------   2 adib  adib    68B Nov 20 23:48 Saved Application State
lrwxr-xr-x   1 adib  adib    18B Nov 12 11:57 Sounds -&gt; ../../../../Sounds
lrwxr-xr-x   1 adib  adib    20B Nov 12 11:57 Spelling -&gt; ../../../../Spelling
athena:Library adib$
</textarea></pre>
<p>From the above example, you can see for yourself that these subdirectories are links to their real ones in <code>~/Library</code> four levels up. Unfortunately adding a directory entitlements for additional subdirectories inside ~/Library does not imply that the necesssary symbolic links will be created for you, at least not as of Mac OS X 10.7.2. You&#8217;ll need to create those links yourself via the <code>symlink()</code> function call.</p>
<p>Fortunately for linking to PubSub&#8217;s database folder you can use this function that I&#8217;ve written originally for News Anchor:</p>
<pre><textarea style="font-family: monospace; white-space: pre; overflow: scroll; overflow-x: scroll;" cols="70" rows="20" readonly="readonly">bool BSCreatePubSubSymlink()
{
    NSString* libraryDirectory = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) lastObject];
    NSString* pubSubDirectory = [libraryDirectory stringByAppendingPathComponent:@"PubSub"];
    NSString* pubSubTarget = @"../../../../PubSub";
    NSFileManager* fileManager = [NSFileManager defaultManager];

    BOOL isDirectory  = NO;
    NSString* realPubSubDirectory = [libraryDirectory stringByAppendingPathComponent:pubSubTarget];
    if ([fileManager fileExistsAtPath:realPubSubDirectory isDirectory:&amp;isDirectory]) {
        if (isDirectory) {
            int success = symlink([pubSubTarget UTF8String], [pubSubDirectory UTF8String]);
            if (success != 0) {
                if (errno != EEXIST) {
                    return NO;
                }
            }
        }
    }
    return YES;
}</textarea></pre>
<p>You should find it easy to adapt the function above to create symbolic links for accessing other shared files inside <code>~/Library</code>.</p>
<h2>Mach Ports</h2>
<p>Last but not least you should add IPC exceptions needed by the PubSub framework. You probably saw these sandbox violation messages in the console log the moment you enable sandboxing for your app:</p>
<pre>    sandboxd: deny mach-lookup com.apple.pubsub.notification</pre>
<p>To solve this, simply add these two exceptions to your application&#8217;s entitlements:</p>
<pre><textarea style="font-family: monospace; white-space: nowrap; overflow: auto;" cols="70" rows="9" readonly="readonly">&lt;key&gt;com.apple.security.temporary-exception.mach-lookup.local-name&lt;/key&gt;
&lt;array&gt;
    &lt;string&gt;com.apple.pubsub.notification&lt;/string&gt;
&lt;/array&gt;

&lt;key&gt;com.apple.security.temporary-exception.mach-lookup.global-name&lt;/key&gt;
&lt;array&gt;
    &lt;string&gt;com.apple.pubsub.ipc&lt;/string&gt;
&lt;/array&gt;</textarea></pre>
<p>The first entitlement I found out myself whereas the second security exception for com.apple.pubsub.ipc came from the DTS ticket resolution. Since it came from Apple, it&#8217;s probably wise to just include the exception.</p>
<h2>Sample Project</h2>
<p>You can <a title="Download sample project for PubSub sandboxing" href="http://dl.dropbox.com/u/36924625/BlogPosts/2011/12/PubSubTest.zip">download the sample project here</a>. This contains the <code>BSCreatePubSubSymlink()</code> function as well as all the entitlements needed to get PubSub ready to parse your news feeds.</p>
<p>So thats about it. Apple may be too rushing to enforce sandboxing to the Mac App Store, with brings up issues such as this one and probably many more that others have experienced. But as Mac devs, especially indie devs, we should band together and do our best for everyone involved in the ecosystem, users and devs alike.</p>
<p>Thanks for reading and until next time&#8230;</p>


<p>Related posts:<ol><li><a href='http://basil-salad.com/wp/kitchen/story-behind-news-anchor/' rel='bookmark' title='Permanent Link: The story behind News Anchor'>The story behind News Anchor</a></li>
<li><a href='http://basil-salad.com/wp/press-release/news-anchor-2-0-release/' rel='bookmark' title='Permanent Link: News Anchor 2.0 &#8211; Enjoy News Feeds with your breakfast'>News Anchor 2.0 &#8211; Enjoy News Feeds with your breakfast</a></li>
<li><a href='http://basil-salad.com/wp/press-release/news-anchor-1-0-release/' rel='bookmark' title='Permanent Link: News Anchor 1.0 for Mac OS X Release'>News Anchor 1.0 for Mac OS X Release</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/BasilSaladSoftware/~4/BuGkHKV_bTs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://basil-salad.com/wp/kitchen/sandboxing-pubsub-framework/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://basil-salad.com/wp/kitchen/sandboxing-pubsub-framework/</feedburner:origLink></item>
		<item>
		<title>Kudos on Tweet Marker’s Eddy</title>
		<link>http://feedproxy.google.com/~r/BasilSaladSoftware/~3/0Cmqqmx3p5w/</link>
		<comments>http://basil-salad.com/wp/kitchen/kudos-on-tweet-markers-eddy/#comments</comments>
		<pubDate>Fri, 23 Dec 2011 02:29:44 +0000</pubDate>
		<dc:creator>Sasmito Adibowo</dc:creator>
				<category><![CDATA[From the Kitchen]]></category>
		<category><![CDATA[401 K]]></category>
		<category><![CDATA[Apis]]></category>
		<category><![CDATA[Business Models]]></category>
		<category><![CDATA[Client Developers]]></category>
		<category><![CDATA[Course Option]]></category>
		<category><![CDATA[Eddy]]></category>
		<category><![CDATA[Full Time Job]]></category>
		<category><![CDATA[Gap]]></category>
		<category><![CDATA[Growing Pains]]></category>
		<category><![CDATA[Indie Venture]]></category>
		<category><![CDATA[Intuition]]></category>
		<category><![CDATA[Kudos]]></category>
		<category><![CDATA[Lump Sum]]></category>
		<category><![CDATA[MacWorld]]></category>
		<category><![CDATA[Marker]]></category>
		<category><![CDATA[Nbsp]]></category>
		<category><![CDATA[Rapid Adoption]]></category>
		<category><![CDATA[Saas]]></category>
		<category><![CDATA[Server Capacity]]></category>
		<category><![CDATA[Service Offerings That]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Stop Gap]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://basil-salad.com/wp/kitchen/kudos-on-tweet-markers-eddy/</guid>
		<description><![CDATA[Congratulations to Manton Reece having won a Macworld Eddy for Tweet Marker, his tweet last-read service. Indeed Tweet Marker is essentially a stop gap of what Twitter should include in the API. But it looks like they choose not to provide this and Manton have stepped up for the challenge. Being a free service does [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>Congratulations to Manton Reece having <a href="http://www.manton.org/2011/12/tweet_marker.html" target="_self" title="">won a Macworld Eddy for Tweet Marker</a>, his tweet last-read service. Indeed Tweet Marker is essentially a stop gap of what Twitter should include in the API. But it looks like they choose not to provide this and Manton have stepped up for the challenge.<span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "></span><br />
<span id="more-993"></span><br />
<span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Being a free service does help its rapid adoption, but frankly I&#8217;m concerned of Tweet Marker&#8217;s growing pains. That is, as Tweet Marker&#8217;s user base grows, <a href="http://www.manton.org/2011/10/redisonly_migration.html" target="_self" title="">Heroku&#8217;s entry-level service offerings that power Tweet Marker</a></span><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "> can no longer keep up with its increasing load. Hence it may be financially prohibitive for Manton to keep increasing the server capacity.</span> </span></p>
<div class="separator" style="clear: both; text-align: center;"><a href="http://www.macworld.com/article/163951/2011/12/the_27th_annual_editors_choice_awards.html" target="_blank" style="margin-bottom: 1em; margin-right: 1em;"><img src="http://images.macworld.com/images/opinion/graphics/131153-eddy-statue.png" id="blogsy-1324608135468.0618" class="aligncenter" alt="MacWold Eddy" width="287" height="300"></a><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">    &nbsp;<br />
</span><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "> &nbsp;<br />
</span></span>&nbsp;</p>
<div class="separator" style="clear: both; text-align: right;">
<div style="text-align: left;"><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">From what I know from listening to the <a href="http://www.coreint.org/" target="_self" title="">Core Intuition podcast</a>, Manton still has a dayjob apart from running Riverfold Software, his indie venture. In other words: it is quite likely that his indie operation is yet to support his own financial needs, much less the expenses of scaling up a free SaaS like Tweet Marker. Heck, he may even lose money as Tweet Marker&#8217;s user base grows.</span> <span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Then comes to the problem: <a href="http://www.manton.org/2011/08/tweet_marker_bootstrap.html" target="_self" title="">who should ultimately pay for Tweet Marker</a>? </span></span>&nbsp;</p>
<div class="separator" style="text-align: left;clear: both; ">
<div class="separator" style="text-align: left;clear: both; "><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); "><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">At this point there are several possible business models that could be pursued:</span> </span></span>
<div class="separator" style="text-align: left;clear: both; ">
<div class="separator" style="text-align: left;clear: both; ">  &nbsp;</p>
<ol>
<li style="text-align: left;"><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">The users themselves can pay a monthly fee to use Tweet Marker.</span> </li>
<li style="text-align: left;"><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Keep subsidizing Tweet Marker from the ongoing sales of Tweet Library.</span> </li>
<li style="text-align: left;"><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Other Twitter client developers can pay to use Tweet Marker.</span> </li>
<li style="text-align: left;"><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Twitter themselves can offer a direct buyout of Tweet Marker, perhaps offering Manton a big enough lump sum to his 401(k) so that he can skip the dayjob and focus on Riverfold Software.</span> </li>
</ol>
<div class="separator" style="text-align: left; clear: both; "><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469);">From these alternatives of course option (D) looks like the best one. But really, it can only happen when the VCs controlling Twitter feels really generous to Manton. Because Twitter can implement this feature directly on their own APIs without much effort by using the software engineering talent that they already have.</span> &nbsp;</p>
<div class="separator" style="clear: both; text-align: right;">
<div class="separator" style="text-align: left;clear: both; "><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">The other alternatives have their own drawbacks. Options A) and C) are hindered by the nature of  Tweet Marker being essentially a nice-to-have service. Users may not want to pay, say $1, monthly fee to just to make sure that they see every tweet that goes into their timelines. Developers of non-SaaS Twitter apps that only get paid once per user would probably not keen on paying a recurring fee to gain access to Tweet Marker. Not to mention with iCloud it&#8217;s relatively simple to have a Tweet Marker like capability for a suite of apps belonging to a single vendor (sure, this applies only to Mac/iOS apps, but Android devs probably have a similar way to store a 64-bit integer value somewhere inside the user&#8217;s Google account).</span> </span>  &nbsp;</p>
<div class="separator" style="clear: both; text-align: right;">
<div class="separator" style="text-align: left;clear: both; "><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Last but not least is option B). Which essentially charges Tweet Marker&#8217;s upkeep to Tweet Library&#8217;s marketing budget. Problem is, how much non-technical users are aware of Tweet Marker itself? Will awareness of Tweet Marker entice the user to buy Tweet Library? How to measure its conversion rate? </span>
<div class="separator" style="clear: both; text-align: right;">
<div class="separator" style="text-align: left;clear: both; "><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">Yes, Tweet Marker is a useful service in itself and deserves to win that Eddy. However, unless it can apply a sustaining business model, the service&#8217;s longevity looks doubtful. I hope that Manton can find a way soon enough.</span>
<div class="separator" style="clear: both; text-align: right;">
<div class="separator" style="clear: both; text-align: right;"><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">   &nbsp;<br />
</span>  &nbsp;</p>
<div class="separator" style="clear: both; text-align: right;"><span class="Apple-style-span" style="-webkit-tap-highlight-color: rgba(26, 26, 26, 0.292969); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); ">   &nbsp;<br />
</span>  &nbsp;</p>
<div class="separator" style="clear: both; text-align: right;">


<p>No related posts.</p><img src="http://feeds.feedburner.com/~r/BasilSaladSoftware/~4/0Cmqqmx3p5w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://basil-salad.com/wp/kitchen/kudos-on-tweet-markers-eddy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://basil-salad.com/wp/kitchen/kudos-on-tweet-markers-eddy/</feedburner:origLink></item>
		<item>
		<title>Resonate Update – Episode One</title>
		<link>http://feedproxy.google.com/~r/BasilSaladSoftware/~3/0t9_MMxOqvc/</link>
		<comments>http://basil-salad.com/wp/labs/resonate-update-episode/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 11:58:40 +0000</pubDate>
		<dc:creator>Sasmito Adibowo</dc:creator>
				<category><![CDATA[Labs]]></category>
		<category><![CDATA[Beta Tester]]></category>
		<category><![CDATA[Clouds]]></category>
		<category><![CDATA[Conversations]]></category>
		<category><![CDATA[E Mail Address]]></category>
		<category><![CDATA[Mail Support]]></category>
		<category><![CDATA[Resonate]]></category>
		<category><![CDATA[ResonateApp]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[Thanks In Advance]]></category>
		<category><![CDATA[Tweets]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Twitter Inc.]]></category>
		<category><![CDATA[World Wide Web]]></category>

		<guid isPermaLink="false">http://basil-salad.com/wp/?p=990</guid>
		<description><![CDATA[An update of Resonate &#8211; our upcoming Twitter client in development. This one shows how Resonate will aggregate tweets inside word clouds so that you can easily see trending topics in your world and jump in to interesting conversations. If you&#8217;re interested and would be the first to know when Resonate is launched, enter your [...]


Related posts:<ol><li><a href='http://basil-salad.com/wp/labs/resonate-update-episode-2/' rel='bookmark' title='Permanent Link: Resonate Update &#8211; Episode Two'>Resonate Update &#8211; Episode Two</a></li>
<li><a href='http://basil-salad.com/wp/kitchen/resonate-marketing-site-20/' rel='bookmark' title='Permanent Link: Resonate marketing site 2.0'>Resonate marketing site 2.0</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-overhead-projection/' rel='bookmark' title='Permanent Link: Resonate Overhead Projection'>Resonate Overhead Projection</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>An update of Resonate &#8211; our upcoming Twitter client in development. This one shows how Resonate will aggregate tweets inside word clouds so that you can easily see trending topics in your world and jump in to interesting conversations.<br />
<span id="more-990"></span></p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/AazO6GXcLRw?rel=0" frameborder="0"></iframe></p>
<p>If you&#8217;re interested and would be the first to know when Resonate is launched, enter your e-mail address in the box below:</p>
<p><!-- Begin MailChimp Signup Form --></p>
<form id="mc-embedded-subscribe-form" class="validate" action="http://resonateapp.us2.list-manage.com/subscribe/post?u=1b903bb57fb067c61d9451b29&amp;id=43da956186" method="post">
<div style="font-size: 11pt; line-height: 1.4em; vertical-align: top;">
<input id="mce-EMAIL" class="required email" name="EMAIL" size="60" type="email" />
<input id="mc-embedded-subscribe" class="button" name="subscribe" type="submit" value="Get Notified" />
<p><span style="font-size: 65%;"><br />
<input id="mce-group[5905]-5905-0" name="group[5905][1]" type="checkbox" value="1" /> <label for="mce-group[5905]-5905-0">Include me in the beta tester list.</label></span></div>
<p><span style="font-size: 50%; line-height: 1.2em;">Questions? Call us at +65-81358937 or e-mail <a href="mailto:support@resonateapp.com">support@resonateapp.com</a> </span></p>
</form>
<p><!--End mc_embed_signup--></p>
<p>Thanks in advance!</p>


<p>Related posts:<ol><li><a href='http://basil-salad.com/wp/labs/resonate-update-episode-2/' rel='bookmark' title='Permanent Link: Resonate Update &#8211; Episode Two'>Resonate Update &#8211; Episode Two</a></li>
<li><a href='http://basil-salad.com/wp/kitchen/resonate-marketing-site-20/' rel='bookmark' title='Permanent Link: Resonate marketing site 2.0'>Resonate marketing site 2.0</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-overhead-projection/' rel='bookmark' title='Permanent Link: Resonate Overhead Projection'>Resonate Overhead Projection</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/BasilSaladSoftware/~4/0t9_MMxOqvc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://basil-salad.com/wp/labs/resonate-update-episode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://basil-salad.com/wp/labs/resonate-update-episode/</feedburner:origLink></item>
		<item>
		<title>Resonate marketing site 2.0</title>
		<link>http://feedproxy.google.com/~r/BasilSaladSoftware/~3/ELDA7Udplyk/</link>
		<comments>http://basil-salad.com/wp/kitchen/resonate-marketing-site-20/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 08:09:42 +0000</pubDate>
		<dc:creator>Sasmito Adibowo</dc:creator>
				<category><![CDATA[From the Kitchen]]></category>
		<category><![CDATA[Labs]]></category>
		<category><![CDATA[Academia]]></category>
		<category><![CDATA[Audiences]]></category>
		<category><![CDATA[Beta Tester]]></category>
		<category><![CDATA[College Professors]]></category>
		<category><![CDATA[Diploma Level]]></category>
		<category><![CDATA[edchat]]></category>
		<category><![CDATA[edtech]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[elementary school]]></category>
		<category><![CDATA[Evangelists]]></category>
		<category><![CDATA[Formal Education]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Master Degrees]]></category>
		<category><![CDATA[Professor]]></category>
		<category><![CDATA[Researches]]></category>
		<category><![CDATA[Resonate]]></category>
		<category><![CDATA[Teaching Assistants]]></category>
		<category><![CDATA[Technology Advocates]]></category>
		<category><![CDATA[Technology/Internet]]></category>
		<category><![CDATA[Tribes]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Undergraduate]]></category>
		<category><![CDATA[Underserved]]></category>

		<guid isPermaLink="false">http://basil-salad.com/wp/?p=984</guid>
		<description><![CDATA[We&#8217;ve just revised Resonate&#8217;s marketing site. After a number of researching, pivoting, and contemplating, we&#8217;ve settled to design Resonate as a Twitter client for use primarily by educators. As shown in the landing page, the primary users of Resonate will be: K-12 teachers – instructors of non-degree formal education, which covers elementary school up to [...]


Related posts:<ol><li><a href='http://basil-salad.com/wp/labs/resonate-update-episode-2/' rel='bookmark' title='Permanent Link: Resonate Update &#8211; Episode Two'>Resonate Update &#8211; Episode Two</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-update-episode/' rel='bookmark' title='Permanent Link: Resonate Update &#8211; Episode One'>Resonate Update &#8211; Episode One</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-overhead-projection/' rel='bookmark' title='Permanent Link: Resonate Overhead Projection'>Resonate Overhead Projection</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve just revised <a href="http://resonateapp.com">Resonate&#8217;s marketing site</a>. After a number of researching, pivoting, and contemplating, we&#8217;ve settled to design Resonate as a Twitter client for use primarily by educators.<span id="more-984"></span></p>
<p>As shown in the landing page, the primary users of Resonate will be:</p>
<ul>
<li><strong>K-12 teachers</strong> – instructors of non-degree formal education, which covers elementary school up to but not including diploma-level schools.</li>
<li><strong>College professors</strong> and their teaching assistants – instructors for diploma, undergraduate, and master degrees.</li>
<li><strong>Product evangelists</strong> –  or technology advocates in some company that speaks to educate the market about products or services that the company provides.</li>
</ul>
<p>Why education? Because <em>educators are thought leaders</em> of small tribes: their students. Furthermore a number of researches and experiments have shown that proper use of Twitter can benefit both instructors and students, but it looks like this market is largely underserved.</p>
<p><a rel="prettyPhoto" href="http://basil-salad.com/wp/wp-content/uploads/2011/11/http___resonateapp.com_-1.png" rel="prettyPhoto[g984]"><img class="aligncenter size-medium wp-image-986" title="Resonate landing page 2.0" src="http://basil-salad.com/wp/wp-content/uploads/2011/11/http___resonateapp.com_-1-300x290.png" alt="Resonate landing page 2.0" width="300" height="290" /></a></p>
<p>Please have a look at the site: <a title="Resonate - The Twitter app for educators" href="http://resonateapp.com">http://resonateapp.com</a> – and sign up there if you like to be a beta tester.</p>
<p>Thanks and take care.</p>


<p>Related posts:<ol><li><a href='http://basil-salad.com/wp/labs/resonate-update-episode-2/' rel='bookmark' title='Permanent Link: Resonate Update &#8211; Episode Two'>Resonate Update &#8211; Episode Two</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-update-episode/' rel='bookmark' title='Permanent Link: Resonate Update &#8211; Episode One'>Resonate Update &#8211; Episode One</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-overhead-projection/' rel='bookmark' title='Permanent Link: Resonate Overhead Projection'>Resonate Overhead Projection</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/BasilSaladSoftware/~4/ELDA7Udplyk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://basil-salad.com/wp/kitchen/resonate-marketing-site-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://basil-salad.com/wp/kitchen/resonate-marketing-site-20/</feedburner:origLink></item>
		<item>
		<title>Fund Watch for Android</title>
		<link>http://feedproxy.google.com/~r/BasilSaladSoftware/~3/GuN2z7GLfZA/</link>
		<comments>http://basil-salad.com/wp/kitchen/fund-watch-for-android/#comments</comments>
		<pubDate>Sat, 19 Nov 2011 13:27:47 +0000</pubDate>
		<dc:creator>Aireen Deviani</dc:creator>
				<category><![CDATA[From the Kitchen]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[Basil]]></category>
		<category><![CDATA[Framework Design]]></category>
		<category><![CDATA[Functionalities]]></category>
		<category><![CDATA[Guess]]></category>
		<category><![CDATA[High Time]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Market Share]]></category>
		<category><![CDATA[Stuffs]]></category>
		<category><![CDATA[Ui]]></category>

		<guid isPermaLink="false">http://basil-salad.com/wp/chop/fund-watch-for-android/</guid>
		<description><![CDATA[Today I am announcing what have been my work for several months, which is making the Fund Watch application for Android devices. Why would you say? Its not that we’re slowly abandoning the iPhone. We’ve been monitoring the market share of Android devices is growing, and it’s high time I guess for us to release [...]


Related posts:<ol><li><a href='http://basil-salad.com/wp/press-release/fund-watch-fundsupermart-india/' rel='bookmark' title='Permanent Link: Fund Watch for iPhone now supports Fundsupermart India'>Fund Watch for iPhone now supports Fundsupermart India</a></li>
<li><a href='http://basil-salad.com/wp/kitchen/fund-watch-received-takedown-notice/' rel='bookmark' title='Permanent Link: Fund Watch received a takedown notice'>Fund Watch received a takedown notice</a></li>
<li><a href='http://basil-salad.com/wp/how-to/fund-watch-moments-invest-asia-fund/' rel='bookmark' title='Permanent Link: Use Fund Watch for iPhone to Determine What Are The Best Moments to Invest in Asian Mutual Funds'>Use Fund Watch for iPhone to Determine What Are The Best Moments to Invest in Asian Mutual Funds</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left">Today I am announcing what have been my work for several months, which is making the Fund Watch application for Android devices. Why would you say? Its not that we’re slowly abandoning the iPhone. We’ve been monitoring the market share of Android devices is growing, and it’s high time I guess for us to release our applications to the Android users as well.</p>
<p style="text-align: left">The Fund Watch app for Android will basically have the same functionalities as the iPhone/iPad version as described in this link <a href="http://basil-salad.com/wp/iphone/fund-watch/">http://basil-salad.com/wp/iphone/fund-watch/</a>  but due to Android’s different UI and framework design you will see the interface is slightly different. Don’t worry, all the good stuffs are there <img src='http://basil-salad.com/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p style="text-align: left">Right now I am still in the stage of familiarizing myself with the Android framework. The application will be written for Android 2.2 and Android 2.3. I think I will make one for Android 3.0 when the market share is bigger. What do you think?  </p>


<p>Related posts:<ol><li><a href='http://basil-salad.com/wp/press-release/fund-watch-fundsupermart-india/' rel='bookmark' title='Permanent Link: Fund Watch for iPhone now supports Fundsupermart India'>Fund Watch for iPhone now supports Fundsupermart India</a></li>
<li><a href='http://basil-salad.com/wp/kitchen/fund-watch-received-takedown-notice/' rel='bookmark' title='Permanent Link: Fund Watch received a takedown notice'>Fund Watch received a takedown notice</a></li>
<li><a href='http://basil-salad.com/wp/how-to/fund-watch-moments-invest-asia-fund/' rel='bookmark' title='Permanent Link: Use Fund Watch for iPhone to Determine What Are The Best Moments to Invest in Asian Mutual Funds'>Use Fund Watch for iPhone to Determine What Are The Best Moments to Invest in Asian Mutual Funds</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/BasilSaladSoftware/~4/GuN2z7GLfZA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://basil-salad.com/wp/kitchen/fund-watch-for-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://basil-salad.com/wp/kitchen/fund-watch-for-android/</feedburner:origLink></item>
		<item>
		<title>Resonate’s First Prototype</title>
		<link>http://feedproxy.google.com/~r/BasilSaladSoftware/~3/-_aHPijO2XA/</link>
		<comments>http://basil-salad.com/wp/kitchen/resonates-prototype/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 02:48:55 +0000</pubDate>
		<dc:creator>Sasmito Adibowo</dc:creator>
				<category><![CDATA[From the Kitchen]]></category>
		<category><![CDATA[Labs]]></category>
		<category><![CDATA[Beta Tester]]></category>
		<category><![CDATA[Bugs]]></category>
		<category><![CDATA[Clouds]]></category>
		<category><![CDATA[E Mail Address]]></category>
		<category><![CDATA[First Name Last Name]]></category>
		<category><![CDATA[Founders]]></category>
		<category><![CDATA[Goals]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Ipod Touch]]></category>
		<category><![CDATA[Laptop]]></category>
		<category><![CDATA[Launch]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Online social networking]]></category>
		<category><![CDATA[Os X]]></category>
		<category><![CDATA[Platform Mac]]></category>
		<category><![CDATA[Polite Man]]></category>
		<category><![CDATA[Preferred Platform]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Resonate]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[Tag cloud]]></category>
		<category><![CDATA[Thought Leaders]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Windows Desktop]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://basil-salad.com/wp/?p=961</guid>
		<description><![CDATA[You will now see the first prototype of Resonate, the Twitter client for thought leaders. One of Resonate&#8217;s goals is to help you to analyze a Twitter timeline. Our solution to this is to build word clouds from a tweet stream. When applied to your main timeline (or alternatively to any of your Twitter lists), [...]


Related posts:<ol><li><a href='http://basil-salad.com/wp/labs/resonate-overhead-projection/' rel='bookmark' title='Permanent Link: Resonate Overhead Projection'>Resonate Overhead Projection</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-mockups/' rel='bookmark' title='Permanent Link: Resonate Mockups'>Resonate Mockups</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-the-twitter-client-for-thought-leaders/' rel='bookmark' title='Permanent Link: Resonate &#8211; the twitter client for thought leaders'>Resonate &#8211; the twitter client for thought leaders</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>You will now see the first prototype of Resonate, the Twitter client for thought leaders. One of Resonate&#8217;s goals is to help you to analyze a Twitter timeline. Our solution to this is to build word clouds from a tweet stream. When applied to your main timeline (or alternatively to any of your Twitter lists), the word cloud shows what&#8217;s trending in your world. Alternatively when applied to a person&#8217;s tweets, it shows that she is all about and makes it easier for you to decide whether to follow her or not.</p>
<p><a rel="prettyPhoto" href="http://basil-salad.com/wp/wp-content/uploads/2011/11/iOS-Simulator-Screen-shot-Nov-2-2011-5.51.40.png" rel="prettyPhoto[g961]"><img class="aligncenter size-medium wp-image-964" title="iOS Simulator Screen shot Nov 2, 2011  5.51.40" src="http://basil-salad.com/wp/wp-content/uploads/2011/11/iOS-Simulator-Screen-shot-Nov-2-2011-5.51.40-225x300.png" alt="" width="225" height="300" /></a></p>
<p>For example, the screenshot above shows a word cloud of <a href="http://twitter.com/#!/AndrewWarner" target="_blank">@AndrewWarner</a>&#8216;s tweets. You can see from the big &#8220;thanks&#8221; in the middle that he is a very polite man. Furthermore he also talks a lot about entrepreneurship, business, and interviews. This makes sense since he interviews startup founders and post them on his Mixergy website.</p>
<p>Unlike <a href="http://www.wordle.net/" target="_blank">Wordle</a>&#8216;s word clouds, you can select a word in Resonate&#8217;s word cloud and see the tweets in the timeline which contains that word. This way, you can quickly find the interesting tweets for you to reply, retweet, or bookmark.</p>
<p>If you&#8217;re interested, you can signup to be a beta tester or simply get notified when we launch Resonate. Please enter your e-mail address in the form below to get notified when we launch.</p>
<p><!-- Begin MailChimp Signup Form --><br />
<!--[if IE]></p>
<p><mce:style type="text/css" media="screen"><!  	#mc_embed_signup fieldset {position: relative;} 	#mc_embed_signup legend {position: absolute; top: -1em; left: .2em;} --><!--[endif] --><br />
<!--[if IE 7]></p>
<p><mce:style type="text/css" media="screen"><!  	.mc-field-group {overflow:visible;} --></p>
<p><!--[endif] --></p>
<div id="mc_embed_signup">
<form id="mc-embedded-subscribe-form" class="validate" style="font: normal 100% Arial, sans-serif; font-size: 10px;" action="http://basil-salad.us2.list-manage.com/subscribe/post?u=e3ad3b89fdd6593cb2d6dc79c&amp;id=698229d220" method="post">
<fieldset style="border-radius: 4px; border: 1px solid #ccc; padding-top: 1.5em; margin: .5em 0; background-color: #fff; color: #000; text-align: left;">
<legend style="white-space: normal; text-transform: capitalize; font-weight: bold; color: #000; background: #fff; padding: .5em 1em; border: 1px solid #ccc; border-radius: 4px; font-size: 1.2em;"><span>join our mailing list</span></legend>
<div class="indicate-required" style="text-align: right; font-style: italic; overflow: hidden; color: #000; margin: 0 9% 0 0;">* indicates required</div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;"><label style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;" for="mce-EMAIL">Email Address <strong class="note-required">*</strong><br />
</label>&nbsp;</p>
<input id="mce-EMAIL" class="required email" style="margin-right: 1.5em; padding: .2em .3em; width: 90%; float: left; z-index: 999;" name="EMAIL" type="text" /></div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;">
<p><label style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;" for="mce-FNAME">First Name </label></p>
<input id="mce-FNAME" style="margin-right: 1.5em; padding: .2em .3em; width: 90%; float: left; z-index: 999;" name="FNAME" type="text" /></div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;">
<p><label style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;" for="mce-LNAME">Last Name </label></p>
<input id="mce-LNAME" style="margin-right: 1.5em; padding: .2em .3em; width: 90%; float: left; z-index: 999;" name="LNAME" type="text" /></div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;">
<p><label style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;" for="mce-IDEA">Tell us your big idea </label></p>
<input id="mce-IDEA" style="margin-right: 1.5em; padding: .2em .3em; width: 90%; float: left; z-index: 999;" name="IDEA" type="text" /></div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;">
<p><label class="input-group-label" style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;">Preferred Platform </label></p>
<div class="input-group" style="padding: .7em .7em .7em 0; font-size: .9em; margin: 0 0 1em 0;">
<ul style="margin: 0; padding: 0;">
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-0" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Mac OS X" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-0">Mac OS X</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-1" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="iPad" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-1">iPad</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-2" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="iPhone / iPod touch" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-2">iPhone / iPod touch</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-3" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Android tablet" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-3">Android tablet</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-4" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Android phone" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-4">Android phone</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-5" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Windows phone" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-5">Windows phone</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-6" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Windows desktop/laptop" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-6">Windows desktop/laptop</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-7" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Web-based" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-7">Web-based</label></li>
</ul>
</div>
</div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;">
<p><label class="input-group-label" style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;">Beta tester? </label></p>
<div class="input-group" style="padding: .7em .7em .7em 0; font-size: .9em; margin: 0 0 1em 0;">
<ul style="margin: 0; padding: 0;">
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-group[641]-641-0" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="group[641][1]" type="checkbox" value="1" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-group[641]-641-0">Yes, I would like to test Resonate before it is released (and I am not afraid of bugs)</label></li>
</ul>
</div>
</div>
<div id="mce-responses" style="float: left; top: -1.4em; padding: 0em .5em 0em .5em; overflow: hidden; width: 90%; margin: 0 5%; clear: both;">
<p>&nbsp;</p>
</div>
<div>
<input id="mc-embedded-subscribe" class="btn" style="clear: both; width: auto; display: block; margin: 1em 0 1em 5%;" name="subscribe" type="submit" value="Subscribe" /></div>
</fieldset>
<p><a id="mc_embed_close" class="mc_embed_close" style="display: none;" href="#">Close</a></p>
</form>
</div>
<p><script type="text/javascript">// <![CDATA[
    var fnames = new Array();var ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[3]='IDEA';ftypes[3]='text';fnames[4]='MMERGE4';ftypes[4]='radio'; try {     var jqueryLoaded=jQuery;     jqueryLoaded=true; } catch(err) {     var jqueryLoaded=false; } var head= document.getElementsByTagName('head')[0]; if (!jqueryLoaded) {     var script = document.createElement('script');     script.type = 'text/javascript';     script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js';     head.appendChild(script);     if (script.readyState &#038;&#038; script.onload!==null){         script.onreadystatechange= function () {               if (this.readyState == 'complete') mce_preload_check();         }         } } var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'http://downloads.mailchimp.com/js/jquery.form-n-validate.js'; head.appendChild(script); var err_style = ''; try{     err_style = mc_custom_error_style; } catch(e){     err_style = 'margin: 1em 0 0 0; padding: 1em 0.5em 0.5em 0.5em; background: ERROR_BGCOLOR none repeat scroll 0% 0%; font-weight: bold; float: left; z-index: 1; width: 80%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: ERROR_COLOR;'; } var head= document.getElementsByTagName('head')[0]; var style= document.createElement('style'); style.type= 'text/css'; if (style.styleSheet) {   style.styleSheet.cssText = '.mce_inline_error {' + err_style + '}'; } else {   style.appendChild(document.createTextNode('.mce_inline_error {' + err_style + '}')); } head.appendChild(style); setTimeout('mce_preload_check();', 250); var mce_preload_checks = 0; function mce_preload_check(){     if (mce_preload_checks>40) return;
    mce_preload_checks++;
    try {
        var jqueryLoaded=jQuery;
    } catch(err) {
        setTimeout('mce_preload_check();', 250);
        return;
    }
    try {
        var validatorLoaded=jQuery("#fake-form").validate({});
    } catch(err) {
        setTimeout('mce_preload_check();', 250);
        return;
    }
    mce_init_form();
}
function mce_init_form(){
    jQuery(document).ready( function($) {
      var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function(){}, onfocusout:function(){}, onblur:function(){}  };
      var mce_validator = $("#mc-embedded-subscribe-form").validate(options);
      $("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator
      options = { url: 'http://basil-salad.us2.list-manage1.com/subscribe/post-json?u=e3ad3b89fdd6593cb2d6dc79c&#038;id=698229d220&#038;c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8",
                    beforeSubmit: function(){
                        $('#mce_tmp_error_msg').remove();
                        $('.datefield','#mc_embed_signup').each(
                            function(){
                                var txt = 'filled';
                                var fields = new Array();
                                var i = 0;
                                $(':text', this).each(
                                    function(){
                                        fields[i] = this;
                                        i++;
                                    });
                                $(':hidden', this).each(
                                    function(){
                                        var bday = false;
                                        if (fields.length == 2){
                                            bday = true;
                                            fields[2] = {'value':1970};//trick birthdays into having years
                                        }
                                    	if ( fields[0].value=='MM' &#038;&#038; fields[1].value=='DD' &#038;&#038; (fields[2].value=='YYYY' || (bday &#038;&#038; fields[2].value==1970) ) ){
                                    		this.value = '';
									    } else if ( fields[0].value=='' &#038;&#038; fields[1].value=='' &#038;&#038; (fields[2].value=='' || (bday &#038;&#038; fields[2].value==1970) ) ){
                                    		this.value = '';
									    } else {
	                                        this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value;
	                                    }
                                    });
                            });
                        return mce_validator.form();
                    }, 
                    success: mce_success_cb
                };
      $('#mc-embedded-subscribe-form').ajaxForm(options);      </p>
<p>    });
}
function mce_success_cb(resp){
    $('#mce-success-response').hide();
    $('#mce-error-response').hide();
    if (resp.result=="success"){
        $('#mce-'+resp.result+'-response').show();
        $('#mce-'+resp.result+'-response').html(resp.msg);
        $('#mc-embedded-subscribe-form').each(function(){
            this.reset();
    	});
    } else {
        var index = -1;
        var msg;
        try {
            var parts = resp.msg.split(' - ',2);
            if (parts[1]==undefined){
                msg = resp.msg;
            } else {
                i = parseInt(parts[0]);
                if (i.toString() == parts[0]){
                    index = parts[0];
                    msg = parts[1];
                } else {
                    index = -1;
                    msg = resp.msg;
                }
            }
        } catch(e){
            index = -1;
            msg = resp.msg;
        }
        try{
            if (index== -1){
                $('#mce-'+resp.result+'-response').show();
                $('#mce-'+resp.result+'-response').html(msg);            
            } else {
                err_id = 'mce_tmp_error_msg';
                html = '</p>
<div id="'+err_id+'" style="'+err_style+'"> '+msg+'</div>
<p>';</p>
<p>                var input_id = '#mc_embed_signup';
                var f = $(input_id);
                if (ftypes[index]=='address'){
                    input_id = '#mce-'+fnames[index]+'-addr1';
                    f = $(input_id).parent().parent().get(0);
                } else if (ftypes[index]=='date'){
                    input_id = '#mce-'+fnames[index]+'-month';
                    f = $(input_id).parent().parent().get(0);
                } else {
                    input_id = '#mce-'+fnames[index];
                    f = $().parent(input_id).get(0);
                }
                if (f){
                    $(f).append(html);
                    $(input_id).focus();
                } else {
                    $('#mce-'+resp.result+'-response').show();
                    $('#mce-'+resp.result+'-response').html(msg);
                }
            }
        } catch(e){
            $('#mce-'+resp.result+'-response').show();
            $('#mce-'+resp.result+'-response').html(msg);
        }
    }
}
// ]]&gt;</script><br />
<!--End mc_embed_signup--></p>


<p>Related posts:<ol><li><a href='http://basil-salad.com/wp/labs/resonate-overhead-projection/' rel='bookmark' title='Permanent Link: Resonate Overhead Projection'>Resonate Overhead Projection</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-mockups/' rel='bookmark' title='Permanent Link: Resonate Mockups'>Resonate Mockups</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-the-twitter-client-for-thought-leaders/' rel='bookmark' title='Permanent Link: Resonate &#8211; the twitter client for thought leaders'>Resonate &#8211; the twitter client for thought leaders</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/BasilSaladSoftware/~4/-_aHPijO2XA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://basil-salad.com/wp/kitchen/resonates-prototype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://basil-salad.com/wp/kitchen/resonates-prototype/</feedburner:origLink></item>
		<item>
		<title>Resonate Overhead Projection</title>
		<link>http://feedproxy.google.com/~r/BasilSaladSoftware/~3/Qts-pu9qBpg/</link>
		<comments>http://basil-salad.com/wp/labs/resonate-overhead-projection/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 03:46:19 +0000</pubDate>
		<dc:creator>Sasmito Adibowo</dc:creator>
				<category><![CDATA[Labs]]></category>
		<category><![CDATA[Adue]]></category>
		<category><![CDATA[Amp]]></category>
		<category><![CDATA[Backchannel]]></category>
		<category><![CDATA[Center Stage]]></category>
		<category><![CDATA[E Mail Address]]></category>
		<category><![CDATA[Education]]></category>
		<category><![CDATA[Heading]]></category>
		<category><![CDATA[Inspiration]]></category>
		<category><![CDATA[Ipad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Ipod Touch]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Mockup]]></category>
		<category><![CDATA[Monica Rankin]]></category>
		<category><![CDATA[Overhead Projection]]></category>
		<category><![CDATA[Platform Mac]]></category>
		<category><![CDATA[Preferred Platform]]></category>
		<category><![CDATA[Projection]]></category>
		<category><![CDATA[Rankin]]></category>
		<category><![CDATA[Real Time]]></category>
		<category><![CDATA[Reference Material]]></category>
		<category><![CDATA[Resonate]]></category>
		<category><![CDATA[Search Result]]></category>
		<category><![CDATA[Social media]]></category>
		<category><![CDATA[Time Presentation]]></category>
		<category><![CDATA[Tweets]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Vga]]></category>
		<category><![CDATA[Windows Desktop]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://basil-salad.com/wp/?p=943</guid>
		<description><![CDATA[You&#8217;re going to see Resonate&#8217;s first mockup of its overhead projection support. Yes, a Twitter client that natively supports the iPad&#8217;s VGA (and HDMI) output, and its not just simple display mirroring but geared for on-line real-time presentation of tweets. Probably going to be a first among Twitter clients. The inspiration comes from Monica Rankin&#8217;s [...]


Related posts:<ol><li><a href='http://basil-salad.com/wp/kitchen/resonates-prototype/' rel='bookmark' title='Permanent Link: Resonate&#8217;s First Prototype'>Resonate&#8217;s First Prototype</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-update-episode-2/' rel='bookmark' title='Permanent Link: Resonate Update &#8211; Episode Two'>Resonate Update &#8211; Episode Two</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-mockups/' rel='bookmark' title='Permanent Link: Resonate Mockups'>Resonate Mockups</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>You&#8217;re going to see Resonate&#8217;s first mockup of its overhead projection support. Yes, a Twitter client that natively supports the iPad&#8217;s VGA (and HDMI) output, and its not just simple display mirroring but geared for on-line real-time presentation of tweets. Probably going to be a first among Twitter clients.<span id="more-943"></span></p>
<p>The inspiration comes from <a href="http://www.utdallas.edu/~mrankin/usweb/twitterconclusions.htm" target="_blank">Monica Rankin&#8217;s Twitter experiment at UT Dallas</a>. She used Twitter to facilitate class discussion in a large class if about 90 students. During the discussion, she put up a hashtag search result on the class&#8217; overhead projection and let her students tweet the hashtag to get their search result on-screen. The search result was auto-refreshed every 12 seconds and thus it shows the class backchannel real-time on the center stage.</p>
<p>Without further adue, here is a mockup that shows how Resonate would look like when connected to an overhead projection.</p>
<p><a rel="prettyPhoto" href="http://basil-salad.com/wp/wp-content/uploads/2011/09/Resonate-Projection.png" rel="prettyPhoto[g943]"></a><a href="http://basil-salad.com/wp/wp-content/uploads/2011/09/Resonate-Projection.png" rel="prettyPhoto[g943]"><img class="size-medium wp-image-949 alignnone" title="Resonate Projection" src="http://basil-salad.com/wp/wp-content/uploads/2011/09/Resonate-Projection-300x225.png" alt="" width="300" height="225" /></a></p>
<p>There are three components in the projected display:</p>
<ol>
<li>Heading &amp; Subheading &#8211; Set by the operator (the person who is operating the iPad) to show the topic of the discussion</li>
<li>Search Results &#8211; A reverse-chronological (latest on top) result of a Twitter search.</li>
<li>Search Term &#8211; Indicates what is the keyword (or hashtag) use to drive the search results.</li>
</ol>
<p>In addition, the search results that make up the discussion session can be saved. The instructor can export the session and publish it so that the class for use by the class as a reference material.</p>
<hr />
<table border="0" width="100%">
<tbody>
<tr>
<td>We&#8217;re building a Twitter client for teachers, professors, and other educators. Type in your e-mail address in the box below to get notified when we launch.</td>
</tr>
<tr valign="top">
<td><!-- Begin MailChimp Signup Form --><br />
<!--[if IE]></p>
<p><mce:style type="text/css" media="screen"><!  	#mc_embed_signup fieldset {position: relative;} 	#mc_embed_signup legend {position: absolute; top: -1em; left: .2em;} --><!--[endif] --><br />
<!--[if IE 7]></p>
<p><mce:style type="text/css" media="screen"><!  	.mc-field-group {overflow:visible;} -->&nbsp;</p>
<p><!--[endif] --></p>
<div id="mc_embed_signup">
<form id="mc-embedded-subscribe-form" class="validate" style="font: normal 100% Arial, sans-serif; font-size: 10px;" action="http://basil-salad.us2.list-manage.com/subscribe/post?u=e3ad3b89fdd6593cb2d6dc79c&amp;id=698229d220" method="post">
<fieldset style="border-radius: 4px; border: 1px solid #ccc; padding-top: 1.5em; margin: .5em 0; background-color: #fff; color: #000; text-align: left;">
<legend style="white-space: normal; text-transform: capitalize; font-weight: bold; color: #000; background: #fff; padding: .5em 1em; border: 1px solid #ccc; border-radius: 4px; font-size: 1.2em;"><span>join our mailing list</span></legend>
<div class="indicate-required" style="text-align: right; font-style: italic; overflow: hidden; color: #000; margin: 0 9% 0 0;">* indicates required</div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;"><label style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;" for="mce-EMAIL">Email Address <strong class="note-required">*</strong><br />
</label>&nbsp;</p>
<input id="mce-EMAIL" class="required email" style="margin-right: 1.5em; padding: .2em .3em; width: 90%; float: left; z-index: 999;" name="EMAIL" type="text" /></div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;">
<p><label style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;" for="mce-FNAME">First Name </label></p>
<input id="mce-FNAME" style="margin-right: 1.5em; padding: .2em .3em; width: 90%; float: left; z-index: 999;" name="FNAME" type="text" /></div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;">
<p><label style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;" for="mce-LNAME">Last Name </label></p>
<input id="mce-LNAME" style="margin-right: 1.5em; padding: .2em .3em; width: 90%; float: left; z-index: 999;" name="LNAME" type="text" /></div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;">
<p><label style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;" for="mce-IDEA">Tell us your big idea </label></p>
<input id="mce-IDEA" style="margin-right: 1.5em; padding: .2em .3em; width: 90%; float: left; z-index: 999;" name="IDEA" type="text" /></div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;">
<p><label class="input-group-label" style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;">Preferred Platform </label></p>
<div class="input-group" style="padding: .7em .7em .7em 0; font-size: .9em; margin: 0 0 1em 0;">
<ul style="margin: 0; padding: 0;">
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-0" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Mac OS X" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-0">Mac OS X</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-1" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="iPad" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-1">iPad</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-2" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="iPhone / iPod touch" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-2">iPhone / iPod touch</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-3" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Android tablet" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-3">Android tablet</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-4" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Android phone" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-4">Android phone</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-5" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Windows phone" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-5">Windows phone</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-6" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Windows desktop/laptop" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-6">Windows desktop/laptop</label></li>
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-MMERGE4-7" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="MMERGE4" type="radio" value="Web-based" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-MMERGE4-7">Web-based</label></li>
</ul>
</div>
</div>
<div class="mc-field-group" style="margin: 1.3em 5%; clear: both; overflow: hidden;">
<p><label class="input-group-label" style="display: block; margin: .3em 0; line-height: 1em; font-weight: bold;">Beta tester? </label></p>
<div class="input-group" style="padding: .7em .7em .7em 0; font-size: .9em; margin: 0 0 1em 0;">
<ul style="margin: 0; padding: 0;">
<li style="list-style: none; overflow: hidden; padding: .2em 0; clear: left; display: block; margin: 0;">
<input id="mce-group[641]-641-0" style="margin-right: 2%; padding: .2em .3em; width: auto; float: left; z-index: 999;" name="group[641][1]" type="checkbox" value="1" /><label style="display: block; margin: .4em 0 0 0; line-height: 1em; font-weight: bold; width: auto; float: left; text-align: left !important;" for="mce-group[641]-641-0">Yes, I would like to test Resonate before it is released (and I am not afraid of bugs)</label></li>
</ul>
</div>
</div>
<div id="mce-responses" style="float: left; top: -1.4em; padding: 0em .5em 0em .5em; overflow: hidden; width: 90%; margin: 0 5%; clear: both;">
<p>&nbsp;</p>
</div>
<div>
<input id="mc-embedded-subscribe" class="btn" style="clear: both; width: auto; display: block; margin: 1em 0 1em 5%;" name="subscribe" type="submit" value="Subscribe" /></div>
</fieldset>
<p><a id="mc_embed_close" class="mc_embed_close" style="display: none;" href="#">Close</a></p>
</form>
</div>
<p><script type="text/javascript">// <![CDATA[
 var fnames = new Array();var ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[3]='IDEA';ftypes[3]='text';fnames[4]='MMERGE4';ftypes[4]='radio'; try {     var jqueryLoaded=jQuery;     jqueryLoaded=true; } catch(err) {     var jqueryLoaded=false; } var head= document.getElementsByTagName('head')[0]; if (!jqueryLoaded) {     var script = document.createElement('script');     script.type = 'text/javascript';     script.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js';     head.appendChild(script);     if (script.readyState &#038;&#038; script.onload!==null){         script.onreadystatechange= function () {               if (this.readyState == 'complete') mce_preload_check();         }         } } var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'http://downloads.mailchimp.com/js/jquery.form-n-validate.js'; head.appendChild(script); var err_style = ''; try{     err_style = mc_custom_error_style; } catch(e){     err_style = 'margin: 1em 0 0 0; padding: 1em 0.5em 0.5em 0.5em; background: ERROR_BGCOLOR none repeat scroll 0% 0%; font-weight: bold; float: left; z-index: 1; width: 80%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: ERROR_COLOR;'; } var head= document.getElementsByTagName('head')[0]; var style= document.createElement('style'); style.type= 'text/css'; if (style.styleSheet) {   style.styleSheet.cssText = '.mce_inline_error {' + err_style + '}'; } else {   style.appendChild(document.createTextNode('.mce_inline_error {' + err_style + '}')); } head.appendChild(style); setTimeout('mce_preload_check();', 250); var mce_preload_checks = 0; function mce_preload_check(){     if (mce_preload_checks>40) return;
    mce_preload_checks++;
    try {
        var jqueryLoaded=jQuery;
    } catch(err) {
        setTimeout('mce_preload_check();', 250);
        return;
    }
    try {
        var validatorLoaded=jQuery("#fake-form").validate({});
    } catch(err) {
        setTimeout('mce_preload_check();', 250);
        return;
    }
    mce_init_form();
}
function mce_init_form(){
    jQuery(document).ready( function($) {
      var options = { errorClass: 'mce_inline_error', errorElement: 'div', onkeyup: function(){}, onfocusout:function(){}, onblur:function(){}  };
      var mce_validator = $("#mc-embedded-subscribe-form").validate(options);
      $("#mc-embedded-subscribe-form").unbind('submit');//remove the validator so we can get into beforeSubmit on the ajaxform, which then calls the validator
      options = { url: 'http://basil-salad.us2.list-manage1.com/subscribe/post-json?u=e3ad3b89fdd6593cb2d6dc79c&#038;id=698229d220&#038;c=?', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8",
                    beforeSubmit: function(){
                        $('#mce_tmp_error_msg').remove();
                        $('.datefield','#mc_embed_signup').each(
                            function(){
                                var txt = 'filled';
                                var fields = new Array();
                                var i = 0;
                                $(':text', this).each(
                                    function(){
                                        fields[i] = this;
                                        i++;
                                    });
                                $(':hidden', this).each(
                                    function(){
                                        var bday = false;
                                        if (fields.length == 2){
                                            bday = true;
                                            fields[2] = {'value':1970};//trick birthdays into having years
                                        }
                                    	if ( fields[0].value=='MM' &#038;&#038; fields[1].value=='DD' &#038;&#038; (fields[2].value=='YYYY' || (bday &#038;&#038; fields[2].value==1970) ) ){
                                    		this.value = '';
									    } else if ( fields[0].value=='' &#038;&#038; fields[1].value=='' &#038;&#038; (fields[2].value=='' || (bday &#038;&#038; fields[2].value==1970) ) ){
                                    		this.value = '';
									    } else {
	                                        this.value = fields[0].value+'/'+fields[1].value+'/'+fields[2].value;
	                                    }
                                    });
                            });
                        return mce_validator.form();
                    }, 
                    success: mce_success_cb
                };
      $('#mc-embedded-subscribe-form').ajaxForm(options);      </p>
<p>    });
}
function mce_success_cb(resp){
    $('#mce-success-response').hide();
    $('#mce-error-response').hide();
    if (resp.result=="success"){
        $('#mce-'+resp.result+'-response').show();
        $('#mce-'+resp.result+'-response').html(resp.msg);
        $('#mc-embedded-subscribe-form').each(function(){
            this.reset();
    	});
    } else {
        var index = -1;
        var msg;
        try {
            var parts = resp.msg.split(' - ',2);
            if (parts[1]==undefined){
                msg = resp.msg;
            } else {
                i = parseInt(parts[0]);
                if (i.toString() == parts[0]){
                    index = parts[0];
                    msg = parts[1];
                } else {
                    index = -1;
                    msg = resp.msg;
                }
            }
        } catch(e){
            index = -1;
            msg = resp.msg;
        }
        try{
            if (index== -1){
                $('#mce-'+resp.result+'-response').show();
                $('#mce-'+resp.result+'-response').html(msg);            
            } else {
                err_id = 'mce_tmp_error_msg';
                html = '</p>
<div id="'+err_id+'" style="'+err_style+'"> '+msg+'</div>
<p>';</p>
<p>                var input_id = '#mc_embed_signup';
                var f = $(input_id);
                if (ftypes[index]=='address'){
                    input_id = '#mce-'+fnames[index]+'-addr1';
                    f = $(input_id).parent().parent().get(0);
                } else if (ftypes[index]=='date'){
                    input_id = '#mce-'+fnames[index]+'-month';
                    f = $(input_id).parent().parent().get(0);
                } else {
                    input_id = '#mce-'+fnames[index];
                    f = $().parent(input_id).get(0);
                }
                if (f){
                    $(f).append(html);
                    $(input_id).focus();
                } else {
                    $('#mce-'+resp.result+'-response').show();
                    $('#mce-'+resp.result+'-response').html(msg);
                }
            }
        } catch(e){
            $('#mce-'+resp.result+'-response').show();
            $('#mce-'+resp.result+'-response').html(msg);
        }
    }
}
// ]]&gt;</script><br />
<!--End mc_embed_signup--></td>
</tr>
</tbody>
</table>


<p>Related posts:<ol><li><a href='http://basil-salad.com/wp/kitchen/resonates-prototype/' rel='bookmark' title='Permanent Link: Resonate&#8217;s First Prototype'>Resonate&#8217;s First Prototype</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-update-episode-2/' rel='bookmark' title='Permanent Link: Resonate Update &#8211; Episode Two'>Resonate Update &#8211; Episode Two</a></li>
<li><a href='http://basil-salad.com/wp/labs/resonate-mockups/' rel='bookmark' title='Permanent Link: Resonate Mockups'>Resonate Mockups</a></li>
</ol></p><img src="http://feeds.feedburner.com/~r/BasilSaladSoftware/~4/Qts-pu9qBpg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://basil-salad.com/wp/labs/resonate-overhead-projection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://basil-salad.com/wp/labs/resonate-overhead-projection/</feedburner:origLink></item>
	</channel>
</rss><!-- Served from: basil-salad.com @ 2012-02-09 00:39:27 by W3 Total Cache -->

