<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	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/"
	>

<channel>
	<title>Nathan and his Open Ideals &#187; mobile</title>
	<atom:link href="http://openideals.org/tag/mobile/feed/" rel="self" type="application/rss+xml" />
	<link>http://openideals.org</link>
	<description>... and the trouble it often gets him in</description>
	<lastBuildDate>Mon, 17 Oct 2011 02:29:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Another small step for a Tibetan keyboard on Android</title>
		<link>http://openideals.org/2010/11/26/another-small-step-for-a-tibetan-keyboard-on-android/</link>
		<comments>http://openideals.org/2010/11/26/another-small-step-for-a-tibetan-keyboard-on-android/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 16:54:48 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Announcing...]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[tibet]]></category>

		<guid isPermaLink="false">http://openideals.org/?p=665</guid>
		<description><![CDATA[There has been a lot of excitement this week about the robust support for the Tibetan written language in Apple&#8217;s iOS 4.2 for iPhone and iPad. This is a fantastic achievement that many contributed to, and that Apple should be &#8230; <a href="http://openideals.org/2010/11/26/another-small-step-for-a-tibetan-keyboard-on-android/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There has been a lot of excitement this week about the robust support for the <a href="http://digitaltibetan.org/index.php/Tibetan_Input_Method_for_Apple_iOS_4.2_devices_(iPhone,_iPad,_iPod_touch)">Tibetan written language in Apple&#8217;s iOS 4.2 for iPhone and iPad</a>. This is a fantastic achievement that many contributed to, and that Apple should be loudly applauded for.</p>
<p>Unfortunately, the state of Tibetan on Android is still poor, but not hopeless. While <a href="http://tom.to/blog/">Tom Meyer</a> has provided a <a href="http://tom.to/blog/archives/117">great starting point for rendering text properly</a>, I still am not aware of any means for inputing Tibetan characters. With that in mind, I set out to investigate the ability to create a new Tibetan &#8220;Input Method&#8221; (as Google calls it) for Android, and quickly realized that one could just write a Language Pack add-on for the <a href="http://code.google.com/p/softkeyboard">open-source AnySoftKeyboard project</a>. This solution still requires you to <a href="http://openideals.com/2009/11/20/the-droids-dharma-supporting-the-tibetan-language-on-android/">root your phone and install the Dzongkha&#8221;རྫོང་ཁ font</a>, but is still a step in the right direction!</p>
<p>You can find the open-source code for my new project, the <a href="https://github.com/nathanfreitas/Tibetan-AnySoftKeyboard">Tibetan AnySoftKeyboard Language Pack on Github</a>. If you would like to try it out, you must have a <a href="http://tom.to/blog/archives/76">rooted device with the Dzongkha&#8221;རྫོང་ཁ font installed</a>, then install the &#8220;AnySoftKeyboard&#8221; from the Android Market, then you can install the first test <a href="https://github.com/nathanfreitas/Tibetan-AnySoftKeyboard/TibetanAnySoftKeyboard.apk/qr_code">Add-on APK</a> file, and the Tibetan option should come up in keyboard settings.</p>
<p>Below you can see a screenshot of the initial keyboard writing text into the <a href="http://www.openintents.org/en/notepad">OI Notepad</a> app. It appears to be properly stacking characters as well, but I may be wrong. Also the current implementation does not yet support the SHIFT key or other modifiers. I would love to have some help setting up the rest of the <a href="https://github.com/nathanfreitas/Tibetan-AnySoftKeyboard/blob/master/res/xml/tibetan_qwerty.xml">QWERTY mappings in this XML file</a>. Otherwise, any other comments, feedback, advice or pointers to other Android Tibetan keyboard work would be much appreciated!</p>
<p><a href="http://openideals.org/wp-content/uploads/2010/11/TibetanAnysoftKeyboard.png"><img class="alignnone size-medium wp-image-666" title="TibetanAnysoftKeyboard" src="http://openideals.org/wp-content/uploads/2010/11/TibetanAnysoftKeyboard-180x300.png" alt="" width="180" height="300" /></a> <a href="http://openideals.org/wp-content/uploads/2010/11/TibetanAnysoftKeyboardsettings.png"  rel="sexylightbox[665]"><img class="alignnone size-medium wp-image-667" title="TibetanAnysoftKeyboardsettings" src="http://openideals.org/wp-content/uploads/2010/11/TibetanAnysoftKeyboardsettings-180x300.png" alt="" width="180" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2010/11/26/another-small-step-for-a-tibetan-keyboard-on-android/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>Searching and Playing YouTube Videos using Appcelerator Titanium</title>
		<link>http://openideals.org/2010/09/30/searching-and-playing-youtube-videos-using-appcelerator-titanium/</link>
		<comments>http://openideals.org/2010/09/30/searching-and-playing-youtube-videos-using-appcelerator-titanium/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 05:30:46 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[appcelerator]]></category>
		<category><![CDATA[how to]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[titanium]]></category>

		<guid isPermaLink="false">http://openideals.org/?p=640</guid>
		<description><![CDATA[This tutorial is part of content I am developed for the NYU ITP course I am teaching this semester, &#8220;Social Activism using Mobile Technology&#8221;. You can find the original document posted here. This code comes from the open-source project (of which &#8230; <a href="http://openideals.org/2010/09/30/searching-and-playing-youtube-videos-using-appcelerator-titanium/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<style>
table
{
border:1px solid #333;
font-family:courier;
font-size:10pt;
}
</style>
<div>This tutorial is part of content I am developed for the <a href="http://itp.nyu.edu">NYU ITP</a> course I am teaching this semester, <a href="http://openideals.com/itp2800">&#8220;Social Activism using Mobile Technology&#8221;</a>. You can find the original document posted <a href="https://docs.google.com/document/pub?id=1-SBFGbnwLRSSG_oluaGsLw6FarO-QmnxzLxtgIap708">here</a>. This code comes from the open-source project (of which I am the lead developer) located here: <a href="http://github.com/nysenatecio/NYSenateMobileApp">http://github.com/nysenatecio/NYSenateMobileApp</a>. If you want to see this code &#8220;in action&#8221;, download the <a href="http://nysenate.gov/mobile">NYSenate Mobile app for iPhone, iPad or Android</a>.</div>
<div>This tutorial will demonstrate using the <a href="http://www.appcelerator.com/products/titanium-mobile-application-development/">Appcelerator Titanium Mobile API</a>, a Javascript-based cross-mobile-platform toolkit, how to accomplish the following feats in a mobile app:</div>
<div>
<ul>
<li>Search for video by channel name or keyword from the YouTube API</li>
<li>Use the Titanium HTTP client for async XML requests and response handling</li>
<li>Retrieve video results from YouTube and display thumbnail &amp; text in a table</li>
<li>Create a WebView window and use it to display YouTube video player</li>
<li>Hand-off YouTube video links to the OS for external playback</li>
</ul>
<p>All in all, following this tutorial, you should be able to perform the basic functions you would need to build an app that front-ended video content stored on YouTube.</p>
<p>First, we declare our variables:</p>
<table>
<tbody>
<tr>
<td>//this is the main app window</p>
<p>var win = Titanium.UI.currentWindow;<br />
//this creates a spinning widget we can display while the user waits</p>
<p>var toolActInd = Titanium.UI.createActivityIndicator();<br />
//this is the table we will load videos into</p>
<p>var tableview;<br />
//and the data array for the table</p>
<p>var data = [];<br />
//the window and webview for displaying youtube player (iOS only)</p>
<p>var webModal;</p>
<p>var webModalView;<br />
//stores the current link being displayed in the web view</p>
<p>var currentLink;<br />
//this is the network request object</p>
<p>var xhr = Ti.Network.createHTTPClient();</td>
</tr>
</tbody>
</table>
<p>Now you need to declare a function that knows how to play YouTube videos on iOS and Android. Every YouTube video has a GUID (globally unique id &#8211; or at least unique for YouTube) and a title. You pass those two values to this function and it will either launch the YouTube player directly (Android) or display a thumbnail with playbutton that the user can launch (iOS).</p>
<table>
<tbody>
<tr>
<td>function playYouTube (vtitle, vguid)<br />
{<br />
if (Titanium.Platform.name == &#8216;iPhone OS&#8217;)<br />
{<br />
var ytVideoSrc = &#8220;http://www.youtube.com/v/&#8221; + vguid;<br />
var thumbPlayer = &#8216;&lt;html&gt;&lt;head&gt;&lt;style type=&#8221;text/css&#8221;&gt; body { background-color: black;color: white;} &lt;/style&gt;&lt;/head&gt;&lt;body style=&#8221;margin:0&#8243;&gt;&lt;br/&gt;&lt;br/&gt;&lt;center&gt;&lt;embed id=&#8221;yt&#8221; src=&#8221;&#8216; + ytVideoSrc + &#8216;&#8221; type=&#8221;application/x-shockwave-flash&#8221; width=&#8221;100%&#8221; height=&#8221;75%&#8221;&gt;&lt;/embed&gt;&lt;/center&gt;&lt;/body&gt;&lt;/html&gt;&#8217;;</p>
<p>showHTMLContent(vtitle,&#8217;http://www.youtube.com/watch?v=&#8217; + vguid,thumbPlayer);<br />
}<br />
else //on android<br />
{<br />
//this call to openURL hands off the link to the operating<br />
//system, and starts any player that supports <a href="http://youtube.com/">youtube.com</a><br />
Titanium.Platform.openURL(&#8216;http://www.youtube.com/watch?v=&#8217; + vguid);<br />
}<br />
}</td>
</tr>
</tbody>
</table>
<p>The reason you show an embedded YouTube thumbnail player on iOS, is that it will allow the video to play inside of the app without leaving the context of the app. This was more a problem on the non-multitasking iOS 3.x, and is still an issue on the iPad until iOS 4.2.</p>
<p>In the function above, there is a showHTMLContent() function call. This function is not built-in, and is just a way to simplify the common need to show some bits of HTML markup within your app. The arguments for the function are a title of the page, an optional URL to the source content of the page, and the direct HTML markup content to display.</p>
<table>
<tbody>
<tr>
<td>function showHTMLContent(wTitle, wUrl, wHTMLContent)<br />
{</p>
<p>//store the link for later use<br />
currentLink = wUrl;</p>
<p>//create the window to hold the web view<br />
webModal = Ti.UI.createWindow({});</p>
<p>//set the orientation modes for basically any which way<br />
webModal.orientationModes = [<br />
Titanium.UI.PORTRAIT,<br />
Titanium.UI.LANDSCAPE_LEFT,<br />
Titanium.UI.LANDSCAPE_RIGHT<br />
];</p>
<p>//create the webview aka the embedded web browser (webkit/safari)<br />
webModalView = Ti.UI.createWebView();<br />
webModalView.scalesPageToFit = true;</p>
<p>//add the web video to the modal window<br />
webModal.add(webModalView);</p>
<p>//set the title of the window<br />
webModal.title = wTitle;</p>
<p>//if you are using a tab UI in the app, this will open the window<br />
Titanium.UI.currentTab.open(webModal,{animated:true});</p>
<p>//set the HTML to display to the markup passed into the function<br />
webModalView.html = wHTMLContent;</p>
<p>};</td>
</tr>
<tr>
<td></td>
</tr>
</tbody>
</table>
<p>Great, so now we have the ability to display a YouTube player within our app using an embedded WebView. Pretty awesome so far, and hopefully you see how might use components like WebView for other mashups of native and web content in your apps.</p>
<p>Now we need to demonstrate how to get the data from YouTube on what videos are available. For this, we create another function called “doYouTubeSearch()”. This function takes two parameters: you can specify the channel name to retrieve videos from, or you can specify a search term, and you can combine these as well, to search videos from a specific channel only.</p>
<table>
<tbody>
<tr>
<td>function doYouTubeSearch (channel, searchTerm)<br />
{</p>
<p>//first show a “loading” spinning indicator to the user<br />
toolActInd.message = &#8216;Loading videos&#8230;&#8217;;</p>
<p>win.setToolbar([toolActInd],{animated:true});</p>
<p>toolActInd.show();<br />
//create the YouTube API search URL from the function parameters<br />
var searchUrl = &#8216;http://gdata.youtube.com/feeds/api/videos?alt=rss&amp;author=&#8217; + escape(channel) + &#8216;&amp;q=&#8217; + escape(searchTerm) + &#8220;&amp;orderby=published&amp;max-results=25&amp;v=2&#8243;;</p>
<p>//use the xhr http client object to do an HTTP GET request to the URL<br />
xhr.open(&#8220;GET&#8221;,searchUrl);<br />
xhr.send();<br />
}</td>
</tr>
</tbody>
</table>
<p>That was all pretty straightforward, right? You build up a URL, and you make the request using it for data from YouTube. Now, how you receive the response to that request is our next step. To do this, you must define an “onload” function for the ‘xhr’ object.</p>
<p>It is in this function that you will receive the data back from YouTube (usually in JSON or XML format), and you can process it to display in your app.</p>
<table>
<tbody>
<tr>
<td>xhr.onload = function()<br />
{<br />
try<br />
{</p>
<p>//the doc object holds the response structure</p>
<p>var doc;</p>
<p>//check whether the data coming back is in XML format or not</p>
<p>if (!this.responseXML)<br />
{<br />
//if not XML you have to convert it to XML<br />
doc = Titanium.XML.parseString(this.responseText).documentElement;<br />
}<br />
else<br />
{<br />
//if it is XML, then just set the doc variable<br />
doc = this.responseXML.documentElement;<br />
}</p>
<p>//now we can easily get a list of items from teh results<br />
var items = doc.getElementsByTagName(&#8220;item&#8221;);</p>
<p>//some simple variables for tracking the loop<br />
var x = 0;<br />
var c;</p>
<p>//now just loop through the response array to see what videos we have</p>
<p>for (c=0;c&lt;items.length;c++)<br />
{<br />
//get the current item<br />
var item = items.item(c);</p>
<p>//get the text for the video title tag using standard DOM XML calls<br />
var title = item.getElementsByTagName(&#8220;title&#8221;).item(0).text;</p>
<p>//build up a summary string to display below the title<br />
var summary = &#8220;&#8221;;<br />
if (item.getElementsByTagName(&#8220;pubDate&#8221;))<br />
{<br />
summary = item.getElementsByTagName(&#8220;pubDate&#8221;).item(0).text;<br />
}</p>
<p>//get the link to the youtube video<br />
var link = &#8220;&#8221;;</p>
<p>if (item.getElementsByTagName(&#8220;link&#8221;))<br />
{<br />
link = item.getElementsByTagName(&#8220;link&#8221;).item(0).text;<br />
}</p>
<p>//now here is where we perform a trick<br />
//we find the GUID code from within the link b/c we know the link format<br />
var guid = link.substring(link.indexOf(&#8220;?v=&#8221;)+3);<br />
guid = guid.substring(0,guid.indexOf(&#8220;&amp;&#8221;));</p>
<p>//now we can use that guid to load up a thumbnail image<br />
var thumbnail = &#8220;http://i.ytimg.com/vi/&#8221; + guid + &#8220;/2.jpg&#8221;;</p>
<p>//okay we have all the data we need for that item<br />
//now we need to create a row to add to the table in order to display it</p>
<p>//create the row item and set the height to 80 pixels<br />
var row = Ti.UI.createTableViewRow({height:80});</p>
<p>//set parameters for the row so we can get the youtube data out later<br />
row.url = link;<br />
row.guid = guid;<br />
row.videotitle = title;</p>
<p>//create a label for displaying the title and add it to the row<br />
var labelTitle = Ti.UI.createLabel({<br />
text:title,<br />
left:105,<br />
top:10,<br />
height:40,<br />
font:{fontSize:16}<br />
});<br />
row.add(labelTitle);</p>
<p>//create a label for the summary and add it to the row<br />
var labelSummary = Ti.UI.createLabel({<br />
text:summary,<br />
left:105,<br />
top:45,<br />
font:{fontSize:12}<br />
});<br />
row.add(labelSummary);</p>
<p>//create an image from the thumbnail, and add it to the row<br />
var img = Ti.UI.createImageView({<br />
url:thumbnail,<br />
left:0,<br />
height:80,<br />
width:100<br />
});<br />
row.add(img);</p>
<p>//add the row to the data array<br />
data[x++] = row;</p>
<p>}</p>
<p>//if tableview has been created, reset the data on the table<br />
//you can update data on the table multiple times<br />
if (tableview)<br />
{<br />
tableview.setData(data);<br />
}<br />
else<br />
{</p>
<p>//if table has not been created, build it up with the data array<br />
tableview = Titanium.UI.createTableView({<br />
data:data<br />
});</p>
<p>//add the table to the current window for display<br />
Titanium.UI.currentWindow.add(tableview);</p>
<p>//add a ‘click’ listener so that when someone taps on a row<br />
//the video will be played using the function we defined earlier<br />
tableview.addEventListener(&#8216;click&#8217;,function(e)<br />
{<br />
playYouTube(e.row.videotitle,e.row.guid);<br />
});</p>
<p>}<br />
}<br />
catch(E)<br />
{<br />
//if anything bad happens, show the error to the user and log it<br />
Titanium.API.debug(E);<br />
Titanium.UI.createAlertDialog({title:&#8217;NY Senate&#8217;, message:&#8217;No videos were found for this search.&#8217;}).show();</p>
<p>}</p>
<p>//hide the spinning ‘loading’ widget<br />
toolActInd.hide();<br />
win.setToolbar(null,{animated:true});<br />
};</td>
</tr>
<tr>
<td></td>
</tr>
</tbody>
</table>
<p>Okay, so that was a lot I know, but go back through it a few times, and you will see it is not so hard. First, we get XML back from YouTube. Then, we turn that XML into an array of items. Them we loop through those items and build up an array of rows. Then, we set the table with that array, and display the table. Finally, we handle the ‘click’ or touch events on the row, and display the YouTube player in the embedded webview. Ta-da! You now have a customizable YouTube search and player app.</p>
<p><img src="https://docs.google.com/drawings/image?id=sAK2r0Nq6OULyan-_AFS4yA&amp;w=537&amp;h=362&amp;rev=1&amp;ac=1" alt="" width="537px;" height="362px;" /></p>
<p>Now here are three examples how you might kick off all this activity.</p>
<p>First, in this case, we are doing a search for any video in the ‘NYSenate’ YouTube channel.</p>
<table>
<tbody>
<tr>
<td>doYouTubeSearch(&#8216;NYSenate&#8217;,&#8221;);</td>
</tr>
</tbody>
</table>
<p>In this example, we are searching all of YouTube for a “skateboard dog”.</p>
<table>
<tbody>
<tr>
<td>doYouTubeSearch(&#8221;,&#8217;skateboard dog&#8217;);</td>
</tr>
</tbody>
</table>
<p>Finally, in this example, we are</p>
<table>
<tbody>
<tr>
<td>doYouTubeSearch(&#8216;NYSenate&#8217;,'Brooklyn&#8217;);</td>
</tr>
</tbody>
</table>
<p>In review, this lesson has showed you how to display HTML web content, how to create YouTube players embedded in that content, how to make HTTP requests to web services and APIs, how to parse the XML returned from those services, and how to display data in a Table format.</p>
<p>This example was built upon code that comes from the open-source project located here: <a href="http://github.com/nysenatecio/NYSenateMobileApp">http://github.com/nysenatecio/NYSenateMobileApp</a> so go grab the code there and use it as a basis of your own app!</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2010/09/30/searching-and-playing-youtube-videos-using-appcelerator-titanium/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Mobile Apps under Duress: User Interface Guidelines</title>
		<link>http://openideals.org/2009/11/13/mobile-apps-under-duress/</link>
		<comments>http://openideals.org/2009/11/13/mobile-apps-under-duress/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 19:42:06 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Guardian]]></category>
		<category><![CDATA[Mobile Mobile]]></category>
		<category><![CDATA[itp2800]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobileactive]]></category>
		<category><![CDATA[user experience]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://openideals.com/?p=464</guid>
		<description><![CDATA[One of my students at ITP is working on a mobile application for the Android platform that will be used under duress and in generally stressful conditions. These situations might include documenting children at a refugee camp, capturing medical information &#8230; <a href="http://openideals.org/2009/11/13/mobile-apps-under-duress/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One of my students at <a href="http://itp.nyu.edu">ITP</a> is working on a mobile application for the Android platform that will be used under duress and in generally stressful conditions. These situations might include documenting children at a refugee camp, capturing medical information in a remote clinic, or identifying victims after a national disaster.</p>
<p>I&#8217;d like to use this post to build up a list of useful guidelines for building mobile application user interfaces that can be effectively used during these situations. More specifically, with the capabilities of modern smartphones (large screen, capacitive/multi-touch touch, accelerometer, compass, camera and so on), what more can an application provide than just dumb entry forms and checkboxes.</p>
<p><strong>Here&#8217;s my start&#8230; please add your own in the comments!</strong></p>
<ol>
<li>Applications must be INSTANTLY responsive. Not only is there no time to lose in these situations, but the patience of the user will be at an all time low. Any data lookup should be cached, paged or otherwise optimized.</li>
<li>Common tasks should be &#8220;shortcutable&#8221;&#8230; perhaps the user should be allowed to define their own shortcuts.</li>
<li>Any queries or searches should be auto-magically remembered and available via dropdown so that the same text doesn&#8217;t have to be remembered multiple times.</li>
<li>All actionable buttons/icons should be large&#8230; at least 64&#215;64.</li>
<li>Lists of selectable, pre-populated options should always be used instead of freeform text entry to improve accuracy of data entry. If freeform is required, suggestions for existing matches of data should be provided.</li>
<li>Any network transmission of data or remote access should be done in the background without interrupting the work at hand. Again, remember the user should be expected to have ZERO patience.</li>
<li>All color palettes should be HIGH contrast &#8211; the lighting situations may not be good AND the device screen brightness will most likely be set to very low in order to maintain the best battery life</li>
<li>If the camera is expected to be used for image capture, remember that a 3 or 5 megapixel image can be quite large. Determine the need for resolution quality of the documented image and downsize that at capture time. Otherwise, loading, saving, and transmitting the captured photo could take up a lot of processor time and battery life.</li>
<li>Make sure your UI works in both portrait and landscape modes&#8230; you just want the app to work no matter which orientation the device is being held.</li>
<li>GPS &#8211; if you can use geolocation data to make the life of the user easier by prepopulating data or automatically geotagging items, then do it! However, they may need to turn off GPS in order to save battery life, so make sure to gracefully degrade.</li>
<li>Any persisted data should be stored on the external SDCard storage so that it can easily be removed, backed up, read on a PC, etc&#8230; the phone might die, but you should be able to pop out the card and put it into a SDCard reader for any device to read. This may mean that instead of using the SQLite database on the device, you instead use an XML, JSON or CSV format on the card.</li>
<li>If you need to record audio notes, a bluetooth or wired headset should be used. The built-in mics aren&#8217;t very good on most devices out today.</li>
<li>Swiping, multi-touch or other gestures can be very natural and intuitive UI control mechanisms if used properly. If your applications lends itself to these, make sure you work closely with users to make sure they work&#8230; they should be almost natural for a user to do (like swiping photos left and right in a photo gallery) as opposed to some complex secret handshake.</li>
</ol>
<p><em>Any more? Please add your ideas in the comments below&#8230;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2009/11/13/mobile-apps-under-duress/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>ITP2800 &#8211; Week 5 &#8211; Building Mobile Apps</title>
		<link>http://openideals.org/2009/10/10/itp2800-week5/</link>
		<comments>http://openideals.org/2009/10/10/itp2800-week5/#comments</comments>
		<pubDate>Sat, 10 Oct 2009 13:51:05 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Learn from This]]></category>
		<category><![CDATA[Mobile Mobile]]></category>
		<category><![CDATA[anarchogeek]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[imified]]></category>
		<category><![CDATA[itp2800]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobileactive]]></category>
		<category><![CDATA[rabble]]></category>

		<guid isPermaLink="false">http://openideals.com/?p=424</guid>
		<description><![CDATA[Homework for Week 5 Catch up on previous weeks&#8217; readings and homework that you haven&#8217;t turned in yet Continue to develop and plan your cause with a target on being able to concisely explain it for your midterm and the &#8230; <a href="http://openideals.org/2009/10/10/itp2800-week5/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><b>Homework for Week 5</p>
<ul style="border:1px;padding:3px;background:#eee;">
<li>Catch up on previous weeks&#8217; readings and homework that you haven&#8217;t turned in yet</li>
<li>Continue to develop and plan your cause with a target on being able to concisely explain it for your midterm and the next Speed Geek!</li>
<li>Review the content presented in class and decide on the approach (server vs client or mixed) and the tools which you will utilize.
<ul>
<li>All: develop the user stories and basic mockups of your service &#8211; &#8220;iterate with pencil&#8221; before moving into fancier renderings</li>
<li>Server Developers: setup an IMified account and review the developer documentation</li>
<li>Client Developers: setup the Android SDK, then download and build the gReporter source code</li>
</ul>
</li>
</ul>
<p></b><br />
Another exciting week at ITP. This week the classes was visited by Evan Henshaw-Plath aka <a href="http://twitter.com/rabble">Rabble</a>, who both spoke of his personal experiences with mobile technology and activism, and also provided critical feedback to students on their projects during our first <a href="http://en.wikipedia.org/wiki/Speed_geeking">Speed Geek</a>.</p>
<p>The second half of the class focused on preparing for the development of actual mobile applications and services. While students are free to choose any software or hardware approach they want, the two platforms that will be covered in class are <a href="http://imified.com">IMified</a> and <a href="http://android.com">Google Android</a>.</p>
<p>Here is the audio of the second hour of class as I walk through the links and slide presentations embedded below:</p>
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="100" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="opaque" /><param name="flashvars" value="song_label=converted-ITP2800October6_converted.mp3&amp;music_track=http://drop.io/download/public/9jywc3be8euih8nstojn/517c74d47b0d7f4ba1e7e508c04fa757e410b1c7/97bd7ee0-7f0e-012c-183f-f387d3975bd4/81ca5950-959e-012c-d185-f51800476f0c/v2/content&amp;autoplay=false" /><param name="src" value="http://s3.amazonaws.com/stlth/static/production/swf/audio_controller.swf" /><embed type="application/x-shockwave-flash" width="400" height="100" src="http://s3.amazonaws.com/stlth/static/production/swf/audio_controller.swf" flashvars="song_label=converted-ITP2800October6_converted.mp3&amp;music_track=http://drop.io/download/public/9jywc3be8euih8nstojn/517c74d47b0d7f4ba1e7e508c04fa757e410b1c7/97bd7ee0-7f0e-012c-183f-f387d3975bd4/81ca5950-959e-012c-d185-f51800476f0c/v2/content&amp;autoplay=false" wmode="opaque"></embed></object></div>
<p>Referenced links:</p>
<ul>
<li><a href="http://www.voiceingov.org/blog/?p=1005">Building an IM Bot for the NY Senate OpenLeg API</a></li>
<li><a href="http://github.com/mheadd/nys-bill-bot">NY Senate Bill Bot</a> source code for the IMified platform</li>
<li><a href="http://openideals.com/guardian/greporter">gReporter: Android application source code</a></li>
<li>Android Market app examples: <a href="http://code.google.com/p/votereport-android/">TwitterVoteReport</a> and <a href="http://openideals.com/2009/01/16/inauguration-report-ir09-for-android/">Inauguration Report</a></li>
</ul>
<p>This first presentation provides an overview on approaching the development of mobile applications considering all of the unique factors of using a small, portable device on the go:</p>
<div><script type="text/javascript" src='http://www.scribd.com/javascripts/view.js'></script>
<div id="mediaPlayer"></div>
<p><script type="text/javascript">  var scribd_doc = scribd.Document.getDoc(20754672, 'key-2a1feaqquv9osddo8rvb');  scribd_doc.addParam('height', 450);scribd_doc.addParam('width', 650);   scribd_doc.write('mediaPlayer');  </script></div>
<p>The second presentation uses the gReporter application to discuss the development of location and media-capture applications on the Google Android platform.</p>
<div><script type="text/javascript" src='http://www.scribd.com/javascripts/view.js'></script>
<div id="mediaPlayer2"></div>
<p><script type="text/javascript">  var scribd_doc = scribd.Document.getDoc(20754256, 'key-2ndassnfkeco83d8fvw8');  scribd_doc.addParam('height', 450);scribd_doc.addParam('width', 650);   scribd_doc.write('mediaPlayer2');  </script></div>
<p>Finally, for beginning to design and mockup applications, here&#8217;s a list of solutions for the iPhone (thanks to <a href="http://www.techjini.com/blog/2009/07/09/tools-for-iphone-ui-user-interface-design-mockups-wireframes-or-just-a-sketch/">TechJini blog</a>)  that can also apply to Android:</p>
<ol>
<li>Use Interface Builder or Dashcode (Mac only)</li>
<li>Use Balsamiq mockup tool (Mac, windows, linux) &#8211; <a href="http://www.balsamiq.com/">http://www.balsamiq.com</a> (<a href="http://www.balsamiq.com/blog/2009/03/01/iphone-controls-new-icons-and-much-more/">http://www.balsamiq.com/blog/2009/03/01/iphone-controls-new-icons-and-much-more/</a>)</li>
<li>Use Omnigraffle (Mac only) and import an iPhone stencil &#8211; (<a href="http://www.omnigroup.com/applications/omnigraffle/download/">http://www.omnigroup.com/applications/omnigraffle/download/</a> and <a href="http://www.graffletopia.com/search/iphone">http://www.graffletopia.com/search/iphone</a>)</li>
<li>Use paper and a stencil- <a href="http://www.designcommission.com/shop/iphone-stencil-kit/">http://www.designcommission.com/shop/iphone-stencil-kit/</a></li>
<li>Use a pre-printed sketch paper &#8211; <a href="http://labs.boulevart.be/index.php/2008/06/05/sketch-paper-for-the-mobile-designer/">http://labs.boulevart.be/index.php/2008/06/05/sketch-paper-for-the-mobile-designer/</a></li>
<li>Use photoshop and the iPhone PSD &#8211; <a href="http://www.teehanlax.com/blog/?p=1628">http://www.teehanlax.com/blog/?p=1628</a></li>
<li>Use Adobe Fireworks &#8211; <a href="http://blogs.adobe.com/fireworks/2008/08/iphone_gui_as_adobe_fireworks.html">http://blogs.adobe.com/fireworks/2008/08/iphone_gui_as_adobe_fireworks.html</a> and <a href="http://www.building43.com/videos/2009/06/23/mockup-iphone-app-adobe-fireworks/">http://www.building43.com/videos/2009/06/23/mockup-iphone-app-adobe-fireworks/</a></li>
<li>Although not there yet, you can try <a href="http://iphonemockup.lkmc.ch/">http://iphonemockup.lkmc.ch/</a></li>
<li>Use the stencil kit from Yahoo! which is available in a variety of formats &#8211; <a href="http://developer.yahoo.com/ypatterns/wireframes/">http://developer.yahoo.com/ypatterns/wireframes/</a></li>
<li>Use the sketchbook available at <a href="http://www.mobilesketchbook.com/">http://www.mobilesketchbook.com/</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2009/10/10/itp2800-week5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ITP2800 &#8211; Week 1 &#8211; Slides, Whiteboards, Audio</title>
		<link>http://openideals.org/2009/09/09/itp2800-week-1/</link>
		<comments>http://openideals.org/2009/09/09/itp2800-week-1/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 12:11:20 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Deep Thoughts]]></category>
		<category><![CDATA[Learn from This]]></category>
		<category><![CDATA[activism]]></category>
		<category><![CDATA[itp2800]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[mobileactive]]></category>
		<category><![CDATA[week1]]></category>

		<guid isPermaLink="false">http://openideals.com/?p=313</guid>
		<description><![CDATA[Here are the captured whiteboard brainstorms, audio (first hour only due to technical glitches) and my slides for the week 1 class of ITP2800. All of this content is hosted and available on http://drop.io/itp2800, with class bookmarks and homework reading &#8230; <a href="http://openideals.org/2009/09/09/itp2800-week-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here are the captured whiteboard brainstorms, audio (first hour only due to technical glitches) and my slides for the week 1 class of <a href="/itp2800">ITP2800</a>. All of this content is hosted and available on <a href="http://drop.io/itp2800">http://drop.io/itp2800</a>,  with class bookmarks and homework reading assignments posted at <a href="http://delicious.com/nathanialfreitas/itp2800+week1">http://delicious.com/nathanialfreitas/itp2800+week1</a>. Week 1 homework assignments are listed at the end of this post.</p>
<p>These images were created using the smart digital whiteboard in the classroom, which allows me to project powerpoint slides and then mark up on top of them. We collectively deconstructed the title of the course &#8220;Social Activism using Mobile Technology&#8221; with some great results.<br />
<em>Disclaimer: my penmanship is generally better than this, but this was a rapid fire brainstorm and the smartboard pens take a bit getting used to!</em></p>
<div>
<img src="http://drop.io/download/public/9jywc3be8euih8nstojn/0adf59eb80beb4bcde83ba22bb3d8721dabe38a5/97bd7ee0-7f0e-012c-183f-f387d3975bd4/9a862b00-7f0e-012c-55ec-f09ddefc2057/v2/thumbnail_large" alt="" width="540"  /></div>
<p>SOCIAL: People, Groups, Communicating/Community, Interaction, Casual Talking, Context+Culture, Hierarchy/Roles/Privileges, Social Justice, Shared Experiences, Socializing, Social Psychology</p>
<p>ACTIVISM: A Cause for ACtion, Change/Revolution, Movement/Moment, Activated, Mobilized, Organizing, Violient/Non-Violent, Action/Reaction, Strong Opinion, Resistance, Non-Passive, Participation, Protest, Direct Action, THE MAN, Leaders/Followers, Crowd Sourcing, Grassroots/Astroturfing</p>
<div>
<img src="http://drop.io/download/public/9jywc3be8euih8nstojn/d2c85302dd6a85d9aeb37b8c466c6d5f5f236a77/97bd7ee0-7f0e-012c-183f-f387d3975bd4/99865620-7f0e-012c-3a85-f18c88016e26/v2/thumbnail_large" alt="" width="540"  /></div>
<p>MOBILE: Portable, Gadget, Dispatchable, Anytime/Anywhere, Networked (People), The Network, On the Move, Personal, Social!, Remote Data, Telecommunications, Tele-vision, Tele-operation, Handy, action, Invisible, Magic, Cloud, Action!, Wireless</p>
<p>TECHNOLOGY: Not Nature, Not Naturally Evolved, Human Made, Stronger, Empowering, Security, FRUSTRATING, delicate, tool, unpredictable, elusive, disruptive, mediator, organically evolved, addictive, expensive->cheaper->smaller->faster, dangerous, privately owned vs. open-source, INFO, DATA, Sensors, Tricorder, Innovation, ROBOTS, SKYNET!</p>
<p>Here&#8217;s the raw audio of the first hour of class (syllabus review, grading, basic concepts&#8230; real exciting stuff!):</p>
<div>
<div style="text-align: left; color: #595653; font-size: 11px; font-family: Verdana, sans-serif; padding-top: 10px; padding-right: 5px;">Discover Simple, Private Sharing at <a href="http://drop.io">Drop.io</a></div>
<p><object width="400" height="100"><param name="movie" value="http://s3.amazonaws.com/stlth/static/production/swf/audio_controller.swf"></param><param name="wmode" value="opaque"></param><param name="flashvars" value="song_label=converted-class1-part1_converted.mp3&amp;music_track=http://drop.io/download/public/9jywc3be8euih8nstojn/67372308484a944012017d6de360aea3cb1d6f2a/97bd7ee0-7f0e-012c-183f-f387d3975bd4/196c4a00-7f65-012c-6341-fc4e8b9def92/v2/content&amp;autoplay=false"></param>  <embed src="http://s3.amazonaws.com/stlth/static/production/swf/audio_controller.swf" type="application/x-shockwave-flash" wmode="opaque" width="400" height="100"     flashvars="song_label=converted-class1-part1_converted.mp3&amp;music_track=http://drop.io/download/public/9jywc3be8euih8nstojn/67372308484a944012017d6de360aea3cb1d6f2a/97bd7ee0-7f0e-012c-183f-f387d3975bd4/196c4a00-7f65-012c-6341-fc4e8b9def92/v2/content&amp;autoplay=false"></embed></object></div>
<p>Here are the slides:</p>
<div>
<div style="text-align: left; color: #595653; font-size: 11px; font-family: Verdana, sans-serif; padding-top: 10px; padding-right: 5px;">Discover Simple, Private Sharing at <a href="http://drop.io">Drop.io</a></div>
<p><script type="text/javascript" src='http://www.scribd.com/javascripts/view.js'></script>
<div id="mediaPlayer"></div>
<p><script type="text/javascript">  var scribd_doc = scribd.Document.getDoc(19551222, 'key-2459jfy5uwycg1cygp21');  scribd_doc.addParam('height', 400);scribd_doc.addParam('width', 550);   scribd_doc.write('mediaPlayer');  </script></div>
<p><br/><br />
<b>Homework</b><br />
    * SMS Mailing List: text ITP2800 to 41411<br />
    * Get your own Textmarks.com keyword and make it do something<br />
    * Create a hashtag on Twitter and see how many mentions you can get<br />
    * Find a mobile app (iPhone, Android, Blackberry or other) that you think is a good representation of Social Activism and post a public review of it<br />
    * Research a cause to affiliate with</p>
<p><br/><br />
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/us/88x31.png" /></a><br /><span xmlns:dc="http://purl.org/dc/elements/1.1/" property="dc:title">Social Activism using Mobile Technology &#8211; ITP 2800 &#8211; Week 1</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://openideals.com/itp2800" property="cc:attributionName" rel="cc:attributionURL">Nathan Freitas</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License</a>.<br />Based on a work at <a xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://openideals.com/2009/09/09/itp2800-week-1" rel="dc:source">openideals.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2009/09/09/itp2800-week-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Six Reasons I Develop for Android</title>
		<link>http://openideals.org/2009/05/13/six-reasons-i-develop-for-android/</link>
		<comments>http://openideals.org/2009/05/13/six-reasons-i-develop-for-android/#comments</comments>
		<pubDate>Wed, 13 May 2009 15:57:34 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Deep Thoughts]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://openideals.com/?p=267</guid>
		<description><![CDATA[I wrote these up quickly for a friend who needed some bullet points for a proposal, and so I thought I&#8217;d just share them here, as well. Please comment with your own experiences with Android #WINs and #FAILs. Development SDK &#8230; <a href="http://openideals.org/2009/05/13/six-reasons-i-develop-for-android/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I wrote these up quickly for a friend who needed some bullet points for a proposal, and so I thought I&#8217;d just share them here, as well. Please comment with your own experiences with Android #WINs and #FAILs.</p>
<ul>
<li>Development SDK is free, open-source and officially supported for Windows, Linux and Mac OS (iPhone is Mac OS only basically)</li>
<li>Java is the foundation for Android development vs. Objective-C on iPhone: many more Java developers and more affordable; ALSO a number of existing open-source Java libraries can run on Android, specifically Apache Commons client library code</li>
<li>Android devices have removable batteries and SIM cards and can be unlocked for use on other networks w/o breaking the law</li>
<li>Android devices have Micro SD based storage that can be easily removed; good for both application data distribution and security reasons</li>
<li>Android hardware supports a true digital compass (your software knows which direction your user is facing, not just GPS lat/lon), as well as (at least with G1 device) auto-focus 3 megapixel camera capable of barcode, fingerprint and human iris scanning</li>
<li>Finally, custom version of the Android OS can be built that are purpose-built, stripped down and customized for certain applications</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2009/05/13/six-reasons-i-develop-for-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>gReporter for Android code is up&#8230;.</title>
		<link>http://openideals.org/2009/03/10/greporter/</link>
		<comments>http://openideals.org/2009/03/10/greporter/#comments</comments>
		<pubDate>Tue, 10 Mar 2009 04:35:00 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Announcing...]]></category>
		<category><![CDATA[Mobile Mobile]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[apache license]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://openideals.com/?p=225</guid>
		<description><![CDATA[Still some work to do, cleanup and some better javadocs, but if you are looking for Android code to help you record audio, take photos, get GPS location, upload via HTTP and more, then this is the project for you. &#8230; <a href="http://openideals.org/2009/03/10/greporter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Still some work to do, cleanup and some better javadocs, but if you are looking for Android code to help you record audio, take photos, get GPS location, upload via HTTP and more, then this is the project for you.</p>
<p>Git Code Repository (source access and zip/gzip download): <a href="http://github.com/natdefreitas/georeport-android">http://github.com/natdefreitas/georeport-android</a></p>
<p>Slide overview download: <a href="http://olivercoady.s3.amazonaws.com/AndroidAdvancedGReporter030909a.pdf">http://olivercoady.s3.amazonaws.com/AndroidAdvancedGReporter030909a.pdf</a></p>
<p>Here&#8217;s the slides I presented today at Columbia University on this topic&#8230;</p>
<div style="width:425px;text-align:left" id="__ss_1124514"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/natdefreitas/advanced-android-greporter?type=powerpoint" title="Advanced Android gReporter">Advanced Android gReporter</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=androidadvancedgreporter030909a-090309232916-phpapp01&#038;stripped_title=advanced-android-greporter" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=androidadvancedgreporter030909a-090309232916-phpapp01&#038;stripped_title=advanced-android-greporter" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/natdefreitas">natdefreitas</a>. (tags: <a style="text-decoration:underline;" href="http://slideshare.net/tag/android">android</a> <a style="text-decoration:underline;" href="http://slideshare.net/tag/mobile">mobile</a>)</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2009/03/10/greporter/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Peek and Xtify sponsor &quot;Cool Peek App&quot; contest!</title>
		<link>http://openideals.org/2009/02/17/peek-and-xtify/</link>
		<comments>http://openideals.org/2009/02/17/peek-and-xtify/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 15:35:16 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Announcing...]]></category>
		<category><![CDATA[Emerging Tech]]></category>
		<category><![CDATA[Mobile Mobile]]></category>
		<category><![CDATA[contest]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[peek]]></category>

		<guid isPermaLink="false">http://openideals.com/?p=211</guid>
		<description><![CDATA[In recent months, I&#8217;ve been carrying around a Peek email device, or what I call the &#8220;One Hundred Dollar Blackberry&#8221;. It is a great piece of hardware, made by an honest-to-goodness New York City hardware company (not many of those!). &#8230; <a href="http://openideals.org/2009/02/17/peek-and-xtify/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In recent months, I&#8217;ve been carrying around a <a href="http://getpeek.com">Peek email device</a>, or what I call the &#8220;One Hundred Dollar Blackberry&#8221;. It is a great piece of hardware, made by an honest-to-goodness New York City hardware company (not many of those!). I am also a big fan because I think their simple features and price point make this a great device for small business, non-profits and community/political/labor organizers&#8230;. all phenomenons of which I am a huge fan!</p>
<p><img src="http://www.dabbledoo.com/ee/images/uploads/gadgetell/peek.jpg"/></p>
<p>Peek has teamed up with Xtify to sponsor a contest, which should be a lot of fun&#8230; see the details below!</p>
<p><em>In full disclosure, I am doing some consulting for Peek right now, so I admit to a certain bias&#8230; but I&#8217;m definitely not getting paid to put this on my personal blog!</em></p>
<blockquote><p>Dear Contest Entrants,</p>
<p>Thank you so much for your emails about signing up, there is a lot of interest in the competition!!!  We have put up the official competition website here &#8211; <a href="http://contest.geekypeek.com">http://contest.geekypeek.com</a>.  You can sign up directly in the contest forums.</p>
<p>The prizes are cool &#8211; fame, fortune and opportunity!</p>
<p>We tried to make things as easy as possible in terms of development.  All you need is the Xtify APIs and whatever messaging/email API you want to use to send emails to the Peeks.  We&#8217;ll post a lot more details on the forums to help you build your app but this should get you started.</p>
<p>To get your minds motivated here is a sample app built around location, www.meetmoi.com.  Location-based dating!</p>
<p>All of us from Peek and Xtify will be available and monitoring the boards to help you guys build your apps.</p>
<p>Bon chance and I look forward to seeing what you all build!</p>
<p>Xtify &#038; Peek</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2009/02/17/peek-and-xtify/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Diagramorama: Sending Download Links to Mobiles</title>
		<link>http://openideals.org/2008/10/22/sending-download-links-to-mobile-phones/</link>
		<comments>http://openideals.org/2008/10/22/sending-download-links-to-mobile-phones/#comments</comments>
		<pubDate>Wed, 22 Oct 2008 12:35:41 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Diagramorama]]></category>
		<category><![CDATA[Emerging Tech]]></category>
		<category><![CDATA[Learn from This]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[sms]]></category>
		<category><![CDATA[smtp]]></category>

		<guid isPermaLink="false">http://openideals.com/2008/10/22/sending-download-links-to-mobile-phones/</guid>
		<description><![CDATA[Email to SMS Technique Originally uploaded by nathanialfreitas I recently had someone ask about sending video download links to mobile phones. Mux does this using the &#8220;your phone number&#8221;@&#8221;your mobile carrier&#8221;.com approach, otherwise known as the SMTP Email Gateways. Every &#8230; <a href="http://openideals.org/2008/10/22/sending-download-links-to-mobile-phones/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
<a href="http://www.flickr.com/photos/natty/46097109/" title="photo sharing"><img src="http://farm1.static.flickr.com/27/46097109_7d6321cdd5_m.jpg" alt="" style="border: solid 2px #000000;" /></a><br />
<br />
<span style="font-size: 0.9em; margin-top: 0px;"><br />
<a href="http://www.flickr.com/photos/natty/46097109/">Email to SMS Technique</a><br />
<br />
Originally uploaded by <a href="http://www.flickr.com/people/natty/">nathanialfreitas</a><br />
</span>
</div>
<p>I recently had someone ask about sending video download links to mobile phones. <a href="http://mux.am">Mux</a> does this using the &#8220;your phone number&#8221;@&#8221;your mobile carrier&#8221;.com approach, otherwise known as the SMTP Email Gateways.</p>
<p>Every carrier has a different way to do this, with different limitations, but it does essentially work, and as long as you aren&#8217;t spamming people, it is a good solution.</p>
<p>Here is a <a href="http://www.sms411.net/2006/07/how-to-send-email-to-phone.html">mostly complete list of the gateways from SMS411.net</a><br />
<br clear="all" /></p>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2008/10/22/sending-download-links-to-mobile-phones/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Droid Draw Android User Interface Builder</title>
		<link>http://openideals.org/2008/09/29/droid-draw-android-ui-builder-tool/</link>
		<comments>http://openideals.org/2008/09/29/droid-draw-android-ui-builder-tool/#comments</comments>
		<pubDate>Mon, 29 Sep 2008 05:25:09 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Make Things]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[user interface]]></category>

		<guid isPermaLink="false">http://openideals.com/2008/09/29/droid-draw-android-ui-builder-tool/</guid>
		<description><![CDATA[Droid Draw Android UI Builder Tool Originally uploaded by nathanialfreitas Droid Draw (available at www.droiddraw.org) is a great tool for rapid prototyping of Google Android user interfaces. While the XML schema that underlies the Android resource description is not *that* &#8230; <a href="http://openideals.org/2008/09/29/droid-draw-android-ui-builder-tool/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="float: right; margin-left: 10px; margin-bottom: 10px;">
<a href="http://www.flickr.com/photos/natty/2897223109/" title="photo sharing"><img src="http://farm4.static.flickr.com/3236/2897223109_9d3c9801f3_m.jpg" alt="" style="border: solid 2px #000000;" /></a><br />
<br />
<span style="font-size: 0.9em; margin-top: 0px;"><br />
<a href="http://www.flickr.com/photos/natty/2897223109/">Droid Draw Android UI Builder Tool</a><br />
<br />
Originally uploaded by <a href="http://www.flickr.com/people/natty/">nathanialfreitas</a><br />
</span>
</div>
<p>Droid Draw (available at <a href="http://droiddraw.org">www.droiddraw.org</a>) is a great tool for rapid prototyping of Google Android user interfaces. While the XML schema that underlies the Android resource description is not *that* complicated, it is good to see that fairly robust drag and drop UI tools are coming along so well.</p>
<p>The Droid Draw site also offers a number of handy reference pages. Keep up the great work folks!<br />
<br clear="all" /></p>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2008/09/29/droid-draw-android-ui-builder-tool/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
