<?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</title>
	<atom:link href="http://openideals.org/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>My raw thoughts on Google&#8217;s acquisition of Motorola Mobility</title>
		<link>http://openideals.org/2011/08/16/my-raw-thoughts-on-googles-acquisition-of-motorola-mobility/</link>
		<comments>http://openideals.org/2011/08/16/my-raw-thoughts-on-googles-acquisition-of-motorola-mobility/#comments</comments>
		<pubDate>Tue, 16 Aug 2011 00:59:54 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Mobile Mobile]]></category>
		<category><![CDATA[Soapbox]]></category>
		<category><![CDATA[Strategy]]></category>

		<guid isPermaLink="false">http://openideals.org/?p=711</guid>
		<description><![CDATA[Overall, I am positive on the acquisition, with my main concern being that Google is clear and decisive about how they plan to proceed with the integration and operational side, and that they don&#8217;t unintentionally create confusion and concern in &#8230; <a href="http://openideals.org/2011/08/16/my-raw-thoughts-on-googles-acquisition-of-motorola-mobility/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Overall, I am positive on the acquisition, with my main concern being that Google is clear and decisive about how they plan to proceed with the integration and operational side, and that they don&#8217;t unintentionally create confusion and concern in the consumer market.</p>
<p><strong>ARMING UP FOR THE PATENT WAR</strong><br />
Obviously this acquisition is related to the ongoing patent wars between Apple and Google (with their hardware partners HTC and Samsung as the primary proxies for litigation). Motorola has a deep, broad collection of intellectual property. Not only did they invent the cellular telephone and have years of creating popular consumer mobile hardware (StarTAC!), but they also have created their own Linux+Java mobile OSes in the past, which could provide support for Google in the case vs. Oracle.</p>
<p><strong>GOOD FOR DEVELOPERS FOR NOW</strong><br />
I don&#8217;t think this will change much for developers in the next few years, as Android has great momentum that won&#8217;t end anytime soon. It may be a boon ultimately, as Google must work harder to maintain the image of Android being open now. The more transparency and code they release, the better for all.  I would also hope Google uses this to support and/or indemnify its app developers from worrying about being sued by patent trolls like LodSys.</p>
<p><strong>PUTTING THE NAIL IN THE RIM COFFIN<br />
</strong>Motorola has a &#8220;Pro&#8221; category of devices, with enhanced security in the OS to meet enterprise and gov requirements, as well as Blackberry style keyboards. This device could be a &#8220;Nexus Pro&#8221; sold bundled with Google Enterprise services to take on RIM directly as complete business tack. Google is having a lot more success in this space than people realize, taking on IBM, Microsoft and RIM all in one swoop. This is an area that Apple cannot compete in.</p>
<p><strong>COMPETING WITH YOUR PARTNERS</strong><br />
It will be a tricky task to manage Android and Motorola business units of Google. While not entirely comparable, there are some good lessons to learn from Palm and Apple&#8217;s own failed attempts at licensing an OS while producing their own competitive hardware. I was at Palm when we had the PalmOne (Hardware) and PalmSource (OS) divisions, when there were still Palm licensees such as Handspring and Sony, and it was a really difficult mess. PalmSource had to treat us like a separate company, in order to appease partners, but at the same time, we didn&#8217;t have the freedom those partners would have to implement their solutions because we had to maintain unity with the Palm vision. Eventually, all the licensing ended, Palm bought Handspring, and the whole company unified again, and then ultimately failed, and was acquired by HP.</p>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2011/08/16/my-raw-thoughts-on-googles-acquisition-of-motorola-mobility/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Redesigning the Camera Phone to Protect Privacy</title>
		<link>http://openideals.org/2011/06/28/redesigning-the-camera-phone-to-protect-privacy/</link>
		<comments>http://openideals.org/2011/06/28/redesigning-the-camera-phone-to-protect-privacy/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 04:49:54 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Announcing...]]></category>
		<category><![CDATA[Awareness]]></category>
		<category><![CDATA[Mobile Mobile]]></category>
		<category><![CDATA[Spotlight]]></category>
		<category><![CDATA[guardianproject]]></category>
		<category><![CDATA[visualprivacy]]></category>
		<category><![CDATA[witness]]></category>

		<guid isPermaLink="false">http://openideals.org/?p=702</guid>
		<description><![CDATA[Have you ever wanted to post a photo to Facebook from your mobile phone, but weren&#8217;t sure if someone in that photo would mind their face going online? Did you take a great picture of your kid at the playground &#8230; <a href="http://openideals.org/2011/06/28/redesigning-the-camera-phone-to-protect-privacy/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Have you ever wanted to post a photo to Facebook from your mobile phone, but weren&#8217;t sure if someone in that photo would mind their face going online? Did you take a great picture of your kid at the playground that you want to tweet out to the world, but caught some other kid in the shot, and are worried about their parent freaking out about online predators? Maybe you are worried about all the data that is being logged in your photos, like the exact GPS coordinates of where you took the picture, and don&#8217;t know how to disable that feature. If any of these thoughts have ever crossed your mind, and you have an Android phone, then you should try out a new app my team at the <a href="https://guardianproject.info">Guardian Project</a> just launched called <a href="https://guardianproject.info/apps/securecam/">ObscuraCam</a>.</p>
<p>In short, the app integrates with your camera and gallery, to allow you to remove, pixelize or disguise faces of people in your photos, before you upload them to Facebook, Twitter or elsewhere. It also cleans out all the secret, hidden extra data that gets stored in your photos, like your GPS location, the make and model of the camera phone and sometimes even a unique serial number identifying your phone. While our original goal was to build an app that supported human rights activists in places like Iran and China, we really do think this app has broader relevance to everyday people (like YOU!) who want to have a bit more power of controlling what gets revealed, analyzed and indexed when they share their photos online.</p>
<p>Read the <a href="https://guardianproject.info/2011/06/23/announcing-obscuracam-v1-enhance-your-visual-privacy/">post on the Guardian Project blog</a>, to get a more in-depth idea about what we&#8217;ve done, and where we are going with this project. This &#8220;v1&#8243; release is just for still photos, but we are quickly moving on to support video, as well as additional obscura filters too!</p>
<p>ObscuraCam is pretty powerful, in that it can automatically detect multiple faces in a photo, and then allow you to selectively choose how to filter those faces. You can also filter out t-shirts, signs, sensitive documents on a desk or just about anything you don&#8217;t want a human or machine to be able to see.</p>
<p><img class="alignnone" src="https://guardianproject.info/wp-content/uploads/2011/06/02_autodetect.png" alt="" width="480" height="288" /></p>
<p>You can even have some fun putting on a silly disguise, which may still allow a human to recognize the person in the photo, but would most likely stop Facebook or Google&#8217;s current recognition software from figuring out who you are.</p>
<p><a href="http://openideals.org/wp-content/uploads/2011/06/snowbunnyobscuraface.jpg"  rel="sexylightbox[702]"><img class="alignnone size-full wp-image-705" title="snowbunnyobscuraface" src="http://openideals.org/wp-content/uploads/2011/06/snowbunnyobscuraface.jpg" alt="" width="242" height="432" /></a></p>
<p>So, please &#8211; try it out, have some fun, and post some pictures.</p>
<p>Just search for &#8220;Obscura&#8221; in the Android Market or <a href="https://market.android.com/details?id=org.witness.sscphase1">install it directly from the web</a>.</p>
<p><a href="https://market.android.com/details?id=org.witness.sscphase1&amp;feature=search_result"><img class="alignnone size-full wp-image-703" title="obscuracamINSTALL" src="http://openideals.org/wp-content/uploads/2011/06/obscuracamINSTALL.png" alt="" width="306" height="193" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2011/06/28/redesigning-the-camera-phone-to-protect-privacy/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Amazing GPS Tracking Map from my Android phone!</title>
		<link>http://openideals.org/2011/04/26/amazing-gps-tracking-map-from-my-android-phone/</link>
		<comments>http://openideals.org/2011/04/26/amazing-gps-tracking-map-from-my-android-phone/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 02:44:54 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Bloginess]]></category>
		<category><![CDATA[Soapbox]]></category>

		<guid isPermaLink="false">http://openideals.org/?p=694</guid>
		<description><![CDATA[I sure have an interesting life, well at least that is what the location data recorded on my phone tells me!]]></description>
			<content:encoded><![CDATA[<p>I sure have an interesting life, well at least that is what the <a href="http://radar.oreilly.com/2011/04/apple-location-tracking.html">location data recorded on my phone</a> tells me!</p>
<p><a href="http://openideals.org/wp-content/uploads/2011/04/nathanAndroidAbstractMap.jpg"  rel="sexylightbox[694]"><img class="alignnone size-full wp-image-693" title="nathanAndroidAbstractMap" src="http://openideals.org/wp-content/uploads/2011/04/nathanAndroidAbstractMap.jpg" alt="" width="901" height="473" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2011/04/26/amazing-gps-tracking-map-from-my-android-phone/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>My Quick Guide to a Less Risky Dropbox</title>
		<link>http://openideals.org/2011/04/20/my-quick-guide-to-a-less-risky-dropbox/</link>
		<comments>http://openideals.org/2011/04/20/my-quick-guide-to-a-less-risky-dropbox/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 15:54:00 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Learn from This]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[privacy]]></category>

		<guid isPermaLink="false">http://openideals.org/?p=679</guid>
		<description><![CDATA[While there are definitely many security-related holes and privacy concerns to be had about the free (but not open-source) Dropbox file sharing service, it has taken the world by storm, including many activist and human rights groups, mostly due to &#8230; <a href="http://openideals.org/2011/04/20/my-quick-guide-to-a-less-risky-dropbox/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>While there are definitely many <a href="http://www.tuaw.com/2011/04/19/dropbox-under-fire-for-security-concerns/">security-related holes and privacy concerns</a> to be had about the free (but not open-source) <a href="http://dropbox.com">Dropbox</a> file sharing service, it has taken the world by storm, including many activist and human rights groups, mostly due to the simplicity and effectiveness of its user experience. As we have seen many times before, software and services that &#8220;just work&#8221;, will always win out over more secure options with the majority of the population. This post is a quick attempt to share some simple steps you can take to ensure your use of Dropbox, or any similar cloud-based file storage and sharing system, is more properly protected, obscured or otherwise mitigated as a direct threat to the security of your information.</p>
<p>1. Use Dropbox over <a href="https://torproject.org">Tor</a> to stop local network monitors from knowing you are using Dropbox to begin with. This also is a good configuration to use with people who live in places where Dropbox might be blocked, but Tor is not.</p>
<blockquote><p>Install Tor and use Vidalia (the GUI controller) to connect to the Tor network.</p>
<p>Set Dropbox-&gt;Preferences-&gt;Network-&gt;Proxy Settings to use Tor&#8217;s secure SOCKS proxy on localhost, port 9050</p>
<p><a href="http://openideals.org/wp-content/uploads/2011/04/dropbox1proxy.png"  rel="sexylightbox[679]"><img class="alignnone size-full wp-image-688" title="dropbox1proxy" src="http://openideals.org/wp-content/uploads/2011/04/dropbox1proxy.png" alt="" width="475" height="279" /></a></p></blockquote>
<p>2. Set Bandwidth Usage to a low value to avoid creating large spikes in network traffic. This will reduce the likelihood your particular use will be singled out if you are syncing large media files or other transfers.</p>
<blockquote><p>Set Dropbox-&gt;Preferences-&gt;Network-&gt;Bandwidth Usage to a low value such as 50KB/s for upload and download</p>
<p><a href="http://openideals.org/wp-content/uploads/2011/04/dropbox1bw.png"  rel="sexylightbox[679]"><img class="alignnone size-full wp-image-689" title="dropbox1bw" src="http://openideals.org/wp-content/uploads/2011/04/dropbox1bw.png" alt="" width="484" height="240" /></a></p></blockquote>
<p>3. Use Truecrypt to create encrypted disk volume files inside of Dropbox, and then store your files inside of that. This can still be shared by multiple users, if you use a password based volume.</p>
<blockquote><p>Download, install and configure the free, open-source TrueCrypt software: <a href="http://www.truecrypt.org/">http://www.truecrypt.org/</a></p>
<p>Create a new TrueCrypt volume, stored within a Dropbox folder</p>
<p><a href="http://openideals.org/wp-content/uploads/2011/04/truecrypt11.png"  rel="sexylightbox[679]"><img class="alignnone size-full wp-image-691" title="truecrypt1" src="http://openideals.org/wp-content/uploads/2011/04/truecrypt11.png" alt="" width="636" height="544" /></a></p></blockquote>
<p>All in all, there are more secure ways to share sensitive information, such as using <a href="http://www.gnupg.org/">GPG file encryption</a> or another OpenPGP solution, but if you absolutely must use Dropbox, and you are under any sort of threat at all to having the information you store on it used against you, then please follow this advice I have shared.</p>
<p>If you have additional tips, warnings or configurations along these lines, please add them to the comments below.</p>
<ul></ul>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2011/04/20/my-quick-guide-to-a-less-risky-dropbox/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<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>Technologists Wanted: Join the New York State Senate Developers Network</title>
		<link>http://openideals.org/2010/11/01/technologists-wanted-join-the-new-york-state-senate-developers-network/</link>
		<comments>http://openideals.org/2010/11/01/technologists-wanted-join-the-new-york-state-senate-developers-network/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 13:45:03 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Awareness]]></category>
		<category><![CDATA[gov20]]></category>
		<category><![CDATA[nysenate]]></category>
		<category><![CDATA[opengov]]></category>

		<guid isPermaLink="false">http://openideals.org/?p=662</guid>
		<description><![CDATA[Reposted from here: http://www.nysenate.gov/blogs/2010/oct/27/technologists-wanted-join-new-york-state-senate-developers-network Over the past year and a half, the Office of the Chief Information Officer at the New York State Senate has worked to promote openness and transparency through the use of technology. Our goal is both &#8230; <a href="http://openideals.org/2010/11/01/technologists-wanted-join-the-new-york-state-senate-developers-network/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Reposted from here: </em><a href="http://www.nysenate.gov/blogs/2010/oct/27/technologists-wanted-join-new-york-state-senate-developers-network"><em>http://www.nysenate.gov/blogs/2010/oct/27/technologists-wanted-join-new-york-state-senate-developers-network</em></a></p>
<p>Over the past year and a half, the Office of the Chief Information Officer at the New York State Senate has worked to promote openness and transparency through the use of technology. Our goal is both to serve the needs of the Senate as an institution and also develop examples that other government bodies in New York and around the country can use, adapt and implement to further open up our government. Today, we’re taking the next step that effort by introducing the New York State Senate Developers Network.</p>
<p>The purpose of the network is to help any technologist interested in how technology is used in the Senate to easily find what they’re looking for, and to be able to interact directly with Senate technology staff.  We hope that such a network of developers will leverage the work that the Senate is already doing, both to serve their own needs and also to create more public benefit, at no additional cost to taxpayers.  We have created a Google Group Mailing List as well as an Internet Really Chat (IRC) at irc.freenode.net #NYSSDev to help and facilitate the discussion between our staff and all that are interested in talking with us.</p>
<p>In addition to the mailing lists and IRC room, we are also proud to announce the alpha release of our NYSenate.gov Application Programing Interface (API).  We hope that by providing a developer API to the treasure trove of information we have available on our website that technologists throughout New York State and the country will be able to create new and interesting tools for the public.</p>
<p>Along with our discussion groups and API, the New York State Senate Developers Network also provides a listing of RSS feeds available on our website as well as links to the Source Code that we have made available for our various projects, along with as our existing Open Legislation API.</p>
<p><a href="http://www.nysenate.gov/developers">Click Here to go to the New York State Senate Developers Network.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2010/11/01/technologists-wanted-join-the-new-york-state-senate-developers-network/feed/</wfw:commentRss>
		<slash:comments>1</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>Another Excellent Event: Open Video Conference, This Week in NYC</title>
		<link>http://openideals.org/2010/09/30/another-excellent-event-open-video-conference-this-week-in-nyc/</link>
		<comments>http://openideals.org/2010/09/30/another-excellent-event-open-video-conference-this-week-in-nyc/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 03:52:52 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Announcing...]]></category>
		<category><![CDATA[Deep Thoughts]]></category>
		<category><![CDATA[Guardian]]></category>
		<category><![CDATA[Soapbox]]></category>

		<guid isPermaLink="false">http://openideals.org/?p=635</guid>
		<description><![CDATA[News from my work on The Guardian Project: Nathan Freitas will be on a panel at the 2nd annual Open Video Conference in New York this Friday and Saturday. He will be on the panel entitled “Cameras Everywhere” led by our &#8230; <a href="http://openideals.org/2010/09/30/another-excellent-event-open-video-conference-this-week-in-nyc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>News from my work on <a href="https://guardianproject.info">The Guardian Project</a>:</p>
<blockquote><p>Nathan Freitas will be on a panel at the 2nd annual <a href="http://www.openvideoconference.org/">Open Video Conference</a> in New York this Friday and Saturday. He will be on the panel entitled “Cameras Everywhere” led by our partners at <a href="http://witness.org/">Witness</a>, on Saturday at 3pm.</p>
<p><a href="http://openvideoconference.org/"><img class="alignleft" style="padding: 3px;" src="http://openvideoconference.org/i/ovcbadge1.png" alt="" width="250" height="272" /></a></p>
<blockquote><p><strong>Summary</strong>: Cameras Everywhere: Human Rights and Web Video - (<em>2:45 PM – 3:30 PM</em>)</p>
<p><strong>Description</strong>: Once upon a time, video cameras were rare. Now they are ubiquitous—as are the opportunities to share, use, and re-use video. What are the limits and possibilities of an ethics of openness when it comes to human rights footage?</p>
<p>Videos (particularly mobile and online video) make it possible to document and publicize human rights struggles – from monks marching for freedom in Rangoon and Lhasa, and the election protestors in Tehran, to individual voices speaking out against injustice on YouTube and other online spaces. But despite the growing circulation of images of human rights violations, of victims and survivors, there is limited discussion of crucial safety, consent and ethical concerns – particularly for people who are filmed.</p>
<p>Issues around consent, representation and re-victimization and retaliation have emerged even more clearly in an open and networked online environment, as have concerns about intentionality and authenticity. Video is being reworked, remixed and recirculated by many more people. New possibilities for action by a global citizenry have arisen, but these carry with them substantial challenges, opportunities and dangers.</p>
<p>Presenters:<br />
Sam Gregory — WITNESS<br />
Gabriella Coleman — NYU<br />
Nathan Freitas — The Guardian Project<br />
Steve Grove – News and Politics, YouTube</p></blockquote>
<p>Following the panel, there will be an open workshop, to continue the discussion and brainstorm new approaches and tools to address the issues raised. This feedback will be gathered and fed into the <a href="http://www.openvideoconference.org/hacklabs/">OVC Hackday</a>, held at <a href="http://itp.nyu.edu/">NYU ITP</a> on Sunday. Team Guardian will join in with whoever shows up at the hackday, take the ideas from the previous day, and build prototyped mobile video solutions in response to them.</p>
<p>You can get more information and register for the hackday here: <a href="http://www.openvideoconference.org/hacklabs/">http://www.openvideoconference.org/hacklabs/</a></p>
<blockquote><p>OVC hack labs: Sunday, October 3</p>
<p>Join us at NYU’s Interactive Telecommunications Program for an all-day open space gathering for innovators of all stripes. Meet and collaborate with conference attendees, HTML5 developers, transmedia storytelling experts, and more. Among the planned activities:</p>
<p>Make interactive HTML5 video using WebMadeMovies technology like popcorn.js<br />
Map out a transmedia strategy for your content<br />
Build a custom HTML5 player for your site<br />
Create robust video sites using the free+open source Kaltura CE 2.0 self-hosted software stack<br />
or just grab a room and hack on your project!</p>
<p>OVC hack labs are free and open to the public.</p></blockquote>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2010/09/30/another-excellent-event-open-video-conference-this-week-in-nyc/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>I&#8217;m on a Panel&#8230; October 6: the &#8220;(NY)TimesOpen 2.0: Open Government Event&#8221;</title>
		<link>http://openideals.org/2010/09/24/im-on-a-panel-october-6-the-nytimesopen-2-0-open-government-event/</link>
		<comments>http://openideals.org/2010/09/24/im-on-a-panel-october-6-the-nytimesopen-2-0-open-government-event/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 16:45:23 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://openideals.org/?p=623</guid>
		<description><![CDATA[Personal note: It has been a little while since I&#8217;ve updated this blog, mostly because I seem to spend my blogging energy updating my beautiful 4-month old daughter&#8217;s blog (yay!). Now back to business&#8230; I am excited to be a &#8230; <a href="http://openideals.org/2010/09/24/im-on-a-panel-october-6-the-nytimesopen-2-0-open-government-event/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Personal note: It has been a little while since I&#8217;ve updated this blog, mostly because I seem to spend my blogging energy updating my b</em><a href="http://eliza.freitas.net"><em>eautiful 4-month old daughter&#8217;s blog</em></a><em> (yay!). Now back to business&#8230;</em></p>
<p>I am excited to be a participating in this series of &#8220;Times Open&#8221; events hosted by the New York Times. I was invited to join by <a href="http://blog.thescoop.org/">Derek Willis</a>, The Times’s government API guru, who I met through my work as part of the <a href="http://twitter.com/nysenatecio">New York Senate&#8217;s CIO Team</a> and our <a href="http://nysenate.gov/open">Open Senate</a> effort. Derek is doing brilliant work there, turning the venerable news organization into a true data platform, and helping them redefine what it means to &#8220;cover a story&#8221;.</p>
<blockquote><p><em><img class="alignleft" style="padding: 3px;" src="http://misc-logs.s3.amazonaws.com/button.png" alt="Open Government" width="137" height="136" /></em></p>
<p>Next up in our <a href="http://www.nytimes.com/marketing/timesopen/index.html">TimesOpen 2.0</a> series is <a href="http://timesopengov.eventbrite.com/">an evening about Open Government</a>. Open Government allows for great governmental efficiency, transparency and citizen participation.</p>
<p>We’ve pulled together a lineup that will showcase government data from multiple angles — from the people who are opening up the data, to the developers who are putting the data to use, to how the data is being used in the Times newsroom.</p>
<p>TO2.0: Open Gov will be held Wednesday, October 6 from6:30–10 p.m. at The New York Times.<a href="http://timesopengov.eventbrite.com/">Registration is now open</a>.</p></blockquote>
<p><br/><br/><br/><br />
Read the full post here: <a href="http://open.blogs.nytimes.com/2010/09/24/timesopen-2-0-open-government-event/?emc=eta1">http://open.blogs.nytimes.com/2010/09/24/timesopen-2-0-open-government-event/?emc=eta1</a></p>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2010/09/24/im-on-a-panel-october-6-the-nytimesopen-2-0-open-government-event/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The &#8220;Took&#8221;: Tibetan-enabled Nook eReader</title>
		<link>http://openideals.org/2010/08/07/the-took-tibetan-enabled-nook-ereader/</link>
		<comments>http://openideals.org/2010/08/07/the-took-tibetan-enabled-nook-ereader/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 05:01:54 +0000</pubDate>
		<dc:creator>nathan</dc:creator>
				<category><![CDATA[Emerging Tech]]></category>
		<category><![CDATA[Guardian]]></category>
		<category><![CDATA[New Idea]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[open-source]]></category>
		<category><![CDATA[tibet]]></category>
		<category><![CDATA[typeface]]></category>

		<guid isPermaLink="false">http://openideals.org/?p=590</guid>
		<description><![CDATA[Thanks to amazing work by Tibetan font experts Tom Meyer and Chris Fynn, as well as the Barnes and Noble Nook eInk reader device hackers at NookDevs.com, I have modified my $199 Nook  ($149 if you get the wifi only &#8230; <a href="http://openideals.org/2010/08/07/the-took-tibetan-enabled-nook-ereader/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Thanks to amazing work by Tibetan font experts <a href="http://tom.to/blog/archives/117">Tom Meyer</a> and <a href="http://sites.google.com/site/chrisfynn2/">Chris Fynn</a>, as well as the Barnes and Noble Nook eInk reader device hackers at <a href="http://nookdevs.com">NookDevs.com</a>, I have modified my $199 Nook  ($149 if you get the wifi only model!)  to support proper rendering of Tibetan characters. This is dynamic rendering of Unicode text, and not just static pre-rendered images.</p>
<p><a href="http://openideals.org/wp-content/uploads/2010/08/IMG_20100807_000637.jpg"><img class="alignnone size-medium wp-image-591" title="IMG_20100807_000637" src="http://openideals.org/wp-content/uploads/2010/08/IMG_20100807_000637-225x300.jpg" alt="" width="225" height="300" /></a> <a href="http://openideals.org/wp-content/uploads/2010/08/IMG_20100807_005100.jpg"  rel="sexylightbox[590]"><img class="alignnone size-medium wp-image-596" title="IMG_20100807_005100" src="http://openideals.org/wp-content/uploads/2010/08/IMG_20100807_005100-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>You might have seen an <a href="http://openideals.com/2009/11/20/the-droids-dharma-supporting-the-tibetan-language-on-android/">earlier post I wrote about this here</a>,  and I&#8217;ve essentially done the same thing this time, but with an  important  addition of code from Tom that properly stacks the characters (a  critical feature often not available in an OS font library), and a new  Tibetan  font (actually Bhutanese) from Chris which is small, lightweight and  efficient enough to be  used on Android. All together this provides support for reading Tibetan  text on web pages, and within full  application user interfaces, eBooks and more.</p>
<p>With up to 32gb of  storage possible via the tiny micro SD Card, this one device could  probably store and serve up the majority of Tibetan Buddhist texts, not to mention literary, poetic and historic works, that  exist, all in a lightweight, energy-efficient device. Since the device is also networked, you can use it to pull down the latest Tibetan language <a href="http://www1.voanews.com/tibetan/news/">online news</a> and <a href="http://yarlungraging.blogspot.com/2010/07/blog-post.html">blogs</a>.</p>
<p>And yes, this is all possible because the Nook is based on the free, open-source Android operating system. <em>Yay for freedom in all forms!</em></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow: hidden;">This is support for both web pages, as well as full applications on the device.</div>
]]></content:encoded>
			<wfw:commentRss>http://openideals.org/2010/08/07/the-took-tibetan-enabled-nook-ereader/feed/</wfw:commentRss>
		<slash:comments>18</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! -->
