<?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>KenKinder.com &#187; Gadgets</title>
	<atom:link href="http://kenkinder.com/category/gadgets/feed/" rel="self" type="application/rss+xml" />
	<link>http://kenkinder.com</link>
	<description>Ken Kinder&#039;s personal website</description>
	<lastBuildDate>Mon, 14 Jun 2010 22:27:25 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Thoughts on Steve Jobs&#8217; Thoughts on Flash</title>
		<link>http://kenkinder.com/2010/04/29/thoughts-on-steve-jobs-thoughts-on-flash/</link>
		<comments>http://kenkinder.com/2010/04/29/thoughts-on-steve-jobs-thoughts-on-flash/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 00:55:56 +0000</pubDate>
		<dc:creator>Ken Kinder</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://kenkinder.com/?p=314</guid>
		<description><![CDATA[It&#8217;s cute how Mac and Windows users hate Flash. They don&#8217;t know how good they have it. The Linux implementation of Flash is worse. It&#8217;s like a blink-tag plugin for your browser that crashes everything it touches and pegs your CPU to 100% only to deliver choppy, unsynchronized video. It just really blows. A lot. [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s cute how Mac and Windows users hate Flash. They don&#8217;t know how good they have it. The Linux implementation of Flash is worse. It&#8217;s like a blink-tag plugin for your browser that crashes everything it touches and pegs your CPU to 100% only to deliver choppy, unsynchronized video. It just really blows. A lot. I hate Flash. A lot. It&#8217;s not just that I think it&#8217;s bad technology, it&#8217;s weirdly personal. And yet, as much as I hate Flash, I was a little annoyed by Steve Jobs&#8217; <a href="http://www.apple.com/hotnews/thoughts-on-flash/">pithy defense of Apple keeping Flash off the iPhone</a>. Here&#8217;s why:</p>
<p><span id="more-314"></span></p>
<p>I&#8217;ll start, as a lonely developer with no real following, by saying that I agree with Steve Jobs about Flash. I wouldn&#8217;t <em>package</em> it on the iPhone either and I haven&#8217;t installed it on my Nexus One, nor do I plan to. But having said that, there&#8217;s still a certain elitism and entitlement that Jobs needs to be called out on, and I hope I&#8217;m not alone in thinking this. Jobs starts by mentioning that Flash is proprietary, and while Apple releases proprietary things too (you think?), they, according to Jobs, prefer open standards:</p>
<blockquote><p>Apple even creates open standards for the web. For example, Apple began  with a small open source project and created WebKit, a complete  open-source HTML5 rendering engine that is the heart of the Safari web  browser used in all our products. WebKit has been widely adopted. Google  uses it for Android’s browser, Palm uses it, Nokia uses it, and RIM  (Blackberry) has announced they will use it too. Almost every smartphone  web browser other than Microsoft’s uses WebKit. By making its WebKit  technology open, Apple has set the standard for mobile web browsers.</p></blockquote>
<p>Except, here&#8217;s the thing. Apple did not create WebKit. They based it on <a href="http://en.wikipedia.org/wiki/KHTML">KHTML</a> which is LGPL. They were <em>required by law</em> to keep it Open Source. More importantly, Jobs praises the HTML5 standard as the future for bringing video to the web. I look forward to that day myself, but I&#8217;m troubled that the biggest threat to HTML5 isn&#8217;t Adobe, but Apple. Steve writes,</p>
<blockquote><p>To achieve long battery life when playing video, mobile devices must  decode the video in hardware; decoding it in software uses too much  power. Many of the chips used in modern mobile devices contain a decoder  called H.264 – an industry standard that is used in every Blu-ray DVD  player and has been adopted by Apple, Google (YouTube), Vimeo, Netflix  and many other companies.</p></blockquote>
<p>That&#8217;s great and all but H.264 is a closed codec and Apple&#8217;s the <em>only</em> browser house that has committed to <em>only</em> implement H.264, not the standardsy alternative, Ogg Theora. That is to say, not only is Apple supporting the closed codec, but they&#8217;ve refused to support an open one, even though doing so would cost them almost nothing in terms of development time. Apple is a member of the MPEG group, which collects royalties on H.264, so that might explain their motivation. Google, by contrast, acquired VP8 to help bridge the divide.</p>
<p>Regarding developers, Steve continues,</p>
<blockquote><p>We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform. If developers grow dependent on third party development libraries and tools, they can only take advantage of platform enhancements if and when the third party chooses to adopt the new features. We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers.</p></blockquote>
<p>It&#8217;s certainly true that natively developed apps are usually better. Most cross-platform technologies are themselves meta-platforms that are, at best, inconsistent with the rest of the environment (Java&#8217;s GUI toolkit comes to mind). But barring third party developers from using cross-platform tools because those tools might not implement all of Apple&#8217;s new features is nonsensical. Even using Apple&#8217;s own SDK, developers might take their time in updating their applications, or they may not use Apple&#8217;s new APIs <em>at all</em>. Will Apple ban all apps that aren&#8217;t using enough new API calls?</p>
<p>Apple isn&#8217;t defending its right to innovate, but rather, it&#8217;s quashing everyone else&#8217;s right to innovate on the iPhone platform. There will be fewer non-native apps on the Apple Store, but that just means there will be fewer apps <em>period</em>. Hardly a win for users.</p>
<p>Finally, Steve writes,</p>
<blockquote><p>Flash was designed for PCs using mice, not for touch screens using  fingers. For example, many Flash websites rely on “rollovers”, which pop  up menus or other elements when the mouse arrow hovers over a specific  spot. Apple’s revolutionary multi-touch interface doesn’t use a mouse,  and there is no concept of a rollover. Most Flash websites will need to  be rewritten to support touch-based devices. If developers need to  rewrite their Flash websites, why not use modern technologies like  HTML5, CSS and JavaScript?</p></blockquote>
<p>So are web sites that use <em>onmouseover</em> not allowed on the iPhone?</p>
<p>Flash is a bad piece of software. It&#8217;s proprietary, slow, buggy, and just plain bad. But users have a right to install it if they want. I&#8217;m most troubled by sentences like this:</p>
<blockquote><p>We don’t want to reduce the reliability and security of <strong>our</strong> iPhones,  iPods and iPads by adding Flash.</p></blockquote>
<p>But they aren&#8217;t <em>your</em> iPhones, iPods, and iPads. They&#8217;re bought, not leased, and they belong to the users who paid for them. And if you own a device, you should have the right to decide what software it runs without having to &#8220;jailbreak&#8221; it.</p>
<p>That&#8217;s why I bought a Nexus One. If I want to install apps that aren&#8217;t available on the Android Market, I can do that with one touch. If I want to install a third party ROM, I&#8217;m simply warned that doing so will void my warranty (Google made no attempts to prevent you from doing this). I feel like I own the device. And I do. iPhone users should enjoy the same privilege of controlling their computing own destinies.</p>
]]></content:encoded>
			<wfw:commentRss>http://kenkinder.com/2010/04/29/thoughts-on-steve-jobs-thoughts-on-flash/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>In search of the perfect HTC Dream/G1 Android ROM</title>
		<link>http://kenkinder.com/2010/04/17/in-search-of-the-perfect-htc-dreamg1-android-rom/</link>
		<comments>http://kenkinder.com/2010/04/17/in-search-of-the-perfect-htc-dreamg1-android-rom/#comments</comments>
		<pubDate>Sat, 17 Apr 2010 17:02:59 +0000</pubDate>
		<dc:creator>Ken Kinder</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://kenkinder.com/?p=307</guid>
		<description><![CDATA[I&#8217;m in search of the perfect ROM for my phone. A ROM not for hackers, but also not for people who don&#8217;t know what a ROM is. A ROM that doesn&#8217;t expand on the stock ROM besides adding what should have been there anyway, like root and tethering. Users like me don&#8217;t need third party [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in search of the perfect ROM for my phone. A ROM not for hackers, but also not for people who don&#8217;t know what a ROM is. A ROM that doesn&#8217;t expand on the stock ROM besides adding what should have been there anyway, like root and tethering. Users like me don&#8217;t need third party multi-touch modules, support for extra filesystems, or ipv6 before the stock ROM has those features. But we do prefer to own our phones with root, instead of &#8220;borrowing&#8221; phones from the manufacturer. (If you don&#8217;t have root, you don&#8217;t really own the device.)</p>
<p>Most of the ROMs on <a href="http://forum.xda-developers.com">xda-developers</a> are one-off builds from hackers who are experimenting. I don&#8217;t want to experiment &#8212; I&#8217;m looking for less Slackware, more Ubuntu on my phone. Over a year ago, I installed <a href="http://www.cyanogenmod.com/">CyanogenMod</a>, as it seemed like the most consumer-friendly ROM out there. For one, instead of a poorly formatted posting on xda-developers, it has an actual website. It also boasts an automatic updater, lots of nice features like tethering and a caller blacklist, and even a stable-v-unstable build schedule.</p>
<p>Unfortunately, CyanogenMod has become increasingly unstable for me. That&#8217;s probably due to a combination of things, including Cyanogen&#8217;s unfortunate proclivity to bloat-up the stock firmware with features and experimental kernel improvements. Another cause for the problem is likely attributable to Google&#8217;s position of only <a href="http://gizmodo.com/5367420/google-threatens-cyanogen-android-hacker-with-cease+and+desist">half open sourcing</a> Android.</p>
<p>What I&#8217;m looking for is something like the stock ROM, with root, tethering, auto-update, and not much else. I don&#8217;t think it&#8217;s out there. Maybe I should figure out how hard it is to do it myself.</p>
]]></content:encoded>
			<wfw:commentRss>http://kenkinder.com/2010/04/17/in-search-of-the-perfect-htc-dreamg1-android-rom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android, Google Maps, Navigation, and Open Source&#8230;</title>
		<link>http://kenkinder.com/2009/11/16/android-google-maps-navigation-and-open-source/</link>
		<comments>http://kenkinder.com/2009/11/16/android-google-maps-navigation-and-open-source/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 18:03:18 +0000</pubDate>
		<dc:creator>Ken Kinder</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://kenkinder.com/?p=246</guid>
		<description><![CDATA[UPDATE: The details of this article are now moot, as the latest Google Maps application on the Android Market includes navigation on the G1.
OF COURSE when I saw that someone on the Interwebz managed to get the new Google Maps with navigation running on a G1, I almost wet myself with excitement. Normally this app [...]]]></description>
			<content:encoded><![CDATA[<p style="padding-left: 30px;"><strong>UPDATE: The details of this article are now moot, as the latest Google Maps application on the Android Market includes navigation on the G1.</strong></p>
<p>OF COURSE when I saw that <a href="http://forum.xda-developers.com/showthread.php?t=582656&amp;page=8">someone on the Interwebz</a> managed to get the new Google Maps with navigation running on a G1, I almost wet myself with excitement. Normally this app only runs on the new Android 2.0 phones (namely, Droid from Verizon) and even rooted G1 are still only running Android 1.6. The <a href="http://forum.xda-developers.com/showpost.php?p=4920480&amp;postcount=75">instructions</a> call for basically replacing the entire build properties on your phone with the Droid ones.</p>
<p><span id="more-246"></span></p>
<p>I&#8217;m not going to write any explicit instructions, since those are already on the forums and easily accessible with a Google search. But here&#8217;s basically what I did, which temporarily enabled navigation. To build.prop, I made the following changes:</p>

<div class="wp_syntax"><div class="code"><pre class="diff" style="font-family:monospace;">kkinder@kkinder-laptop ~/Desktop&amp;gt; diff -u bp2 build.prop
<span style="color: #888822;">--- build.prop.org	<span style="">2009</span>-<span style="">11</span>-<span style="">16</span> <span style="">11</span>:<span style="">40</span>:<span style="">34.000000000</span> -0700</span>
<span style="color: #888822;">+++ build.prop	<span style="">2009</span>-<span style="">11</span>-<span style="">10</span> <span style="">19</span>:<span style="">13</span>:<span style="">18.000000000</span> -0700</span>
<span style="color: #440088;">@@ -<span style="">1</span>,<span style="">6</span> +<span style="">1</span>,<span style="">6</span> @@</span>
 # begin build properties
<span style="color: #991111;">-ro.build.version.sdk=4</span>
<span style="color: #991111;">-ro.build.version.release=1.6</span>
<span style="color: #00b000;">+ro.build.version.sdk=&lt;strong&gt;<span style="">5</span>&lt;/strong&gt;</span>
<span style="color: #00b000;">+ro.build.version.release=&lt;strong&gt;<span style="">2.0</span>&lt;/strong&gt;</span>
 ro.build.version.codename=REL
 ro.build.type=user
 ro.build.user=shade
<span style="color: #440088;">@@ -<span style="">15</span>,<span style="">7</span> +<span style="">15</span>,<span style="">7</span> @@</span>
 ro.com.android.wifi-watchlist=GoogleGuest
 ro.com.android.dateformat=MM-dd-yyyy
 ro.com.android.dataroaming=true
<span style="color: #991111;">-ro.com.google.clientidbase=android-tmobile</span>
<span style="color: #00b000;">+ro.com.google.clientidbase=&lt;strong&gt;android-verizon&lt;/strong&gt;</span>
 ro.setupwizard.mode=OPTIONAL
 ro.url.legal=http://www.google.com/intl/%s/mobile/android/android-dev-phone-legal.html
 ro.url.legal.android_privacy=http://www.google.com/intl/%s/mobile/android/android-dev-phone-privacy.html</pre></div></div>

<p>At this point, after using the unix <tt>find</tt> command in my phone&#8217;s terminal emulator to delete old maps data files and application files, I was able to reboot and install the maps app with all its new features &#8212; all its new features, except for navigation. So, I continued with the *real* instructions and applied changes to build.trout.prop</p>

<div class="wp_syntax"><div class="code"><pre class="diff" style="font-family:monospace;">--- build.trout.prop.orig	<span style="">2009</span>-<span style="">11</span>-<span style="">16</span> <span style="">11</span>:<span style="">40</span>:<span style="">56.000000000</span> -0700
<span style="color: #888822;">+++ build.trout.prop	<span style="">2009</span>-<span style="">11</span>-<span style="">10</span> <span style="">19</span>:<span style="">13</span>:<span style="">18.000000000</span> -0700</span>
<span style="color: #440088;">@@ -<span style="">1</span>,<span style="">25</span> +<span style="">1</span>,<span style="">25</span> @@</span>
 # begin build properties
 # autogenerated by buildinfo.sh
<span style="color: #991111;">-ro.build.id=DRC83</span>
<span style="color: #991111;">-ro.build.display.id=DRC83</span>
<span style="color: #991111;">-ro.build.version.incremental=14721</span>
<span style="color: #00b000;">+ro.build.id=ESD20</span>
<span style="color: #00b000;">+ro.build.display.id=ESD20</span>
<span style="color: #00b000;">+ro.build.version.incremental=17572</span>
 ro.build.date=Mon Sep <span style="">21</span> <span style="">16</span>:<span style="">16</span>:<span style="">12</span> PDT <span style="">2009</span>
 ro.build.date.utc=<span style="">1253574972</span>
<span style="color: #991111;">-ro.product.model=T-Mobile G1</span>
<span style="color: #991111;">-ro.product.brand=tmobile</span>
<span style="color: #00b000;">+ro.product.model=Droid</span>
<span style="color: #00b000;">+ro.product.brand=verizon</span>
 ro.product.name=kila
<span style="color: #991111;">-ro.product.device=dream</span>
<span style="color: #991111;">-ro.product.board=trout</span>
<span style="color: #00b000;">+ro.product.device=sholes</span>
<span style="color: #00b000;">+ro.product.board=sholes</span>
 ro.product.cpu.abi=armeabi
<span style="color: #991111;">-ro.product.manufacturer=HTC</span>
<span style="color: #00b000;">+ro.product.manufacturer=Motorola</span>
 ro.product.locale.language=en
 ro.product.locale.region=US
 ro.board.platform=msm7k
 # ro.build.product is obsolete; use ro.product.device
 ro.build.product=dream
 # Do not try to parse ro.build.description or .fingerprint
<span style="color: #991111;">-ro.build.description=kila-user <span style="">1.6</span> DRC83 <span style="">14721</span> ota-rel-keys,release-keys</span>
<span style="color: #991111;">-ro.build.fingerprint=tmobile/kila/dream/trout:<span style="">1.6</span>/DRC83/<span style="">14721</span>:user/ota-rel-keys,release-keys</span>
<span style="color: #00b000;">+ro.build.description=voles-user <span style="">2.0</span> ESD20 <span style="">17572</span> ota-rel-keys,release-keys</span>
<span style="color: #00b000;">+ro.build.fingerprint=verizon/voles/sholes/sholes:<span style="">2.0</span>/ESD20/<span style="">17572</span>:user/ota-rel-keys,release-keys</span>
 # end build properties
 #
 # system.prop for dream</pre></div></div>

<p>I don&#8217;t really like the idea of editing these files, because when the system lies about its version numbers, it could break other apps. But I made backups and did it anyway, with no dice on having a working navigation system. Some reading on a thread that grew to 50 posts within hours and I noticed some users reported that uninstalling and reinstalling Google Voice got navigation working on the (presumably unrelated) maps app, which it did.</p>
<p>But here&#8217;s the frustrating part: After driving around and enjoying your new navigation system, you go to restore your build*props files. If you revert version numbers, the app continues to work. However once you change your phone&#8217;s model information back (ie, you switch Verizon back to T-Mobile), your navigation disappears in the GUI. In other words, the map app is checking to make sure you&#8217;re running on Verizon&#8217;s network, and only allows you navigation then. That&#8217;s kind of slimey, but <strong>update:</strong> the updated Android 1.6 app includes navigation, so I guess my initial conspiracy theories are irrelevant.</p>
]]></content:encoded>
			<wfw:commentRss>http://kenkinder.com/2009/11/16/android-google-maps-navigation-and-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
