<?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>Mike Rowehl: This is Mobility &#187; Open Source</title>
	<atom:link href="http://www.thisismobility.com/blog/category/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thisismobility.com/blog</link>
	<description>Ripping mobility from the clutches of telecom</description>
	<lastBuildDate>Thu, 05 Jan 2012 18:25:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>webOS Open Source</title>
		<link>http://www.thisismobility.com/blog/2011/12/12/web-os-open-source/</link>
		<comments>http://www.thisismobility.com/blog/2011/12/12/web-os-open-source/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 03:37:22 +0000</pubDate>
		<dc:creator>miker</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ThisIsMobility]]></category>

		<guid isPermaLink="false">http://www.thisismobility.com/blog/?p=1040</guid>
		<description><![CDATA[I wasn&#8217;t planning to weigh in on HP deciding to open up webOS, cause like I&#8217;ve said before tectonic shifts with little short-term impact aren&#8217;t really that important to startups. However, I&#8217;ve been doing open source stuff for a whole &#8230; <a href="http://www.thisismobility.com/blog/2011/12/12/web-os-open-source/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I wasn&#8217;t planning to weigh in on HP deciding to open up webOS, cause like I&#8217;ve said before <a href="http://www.thisismobility.com/blog/2011/09/05/what-really-matters-to-a-startup/">tectonic shifts with little short-term impact aren&#8217;t really that important to startups</a>. However, I&#8217;ve been doing open source stuff for a whole lot longer than I&#8217;ve been doing mobile stuff, so I have some particularly strong feelings on this one. And since I&#8217;ve already <a href="https://twitter.com/#!/miker/status/145213798716932096">thrown my snarky knee-jerk response</a> out there, I should probably be quasi-serious for a few minutes and try to help out. I don&#8217;t have much free time though, so this is going to be short &#8211; which usually ends up being somewhat smartass at points.</p>
<p>First off it&#8217;s necessary to understand how businessy folks view open source. I have no idea how many of you who read this blog were around for it, but this was a huge raging debate in the early 2000s. How could it possibly make sense for a company to just give away something that it had sunk a huge number of hours into, and potentially represented some significant chunks of intellectual property? The argument that really won the day centered on a concept called commoditizing your compliments. See <a href="http://www.joelonsoftware.com/articles/StrategyLetterV.html">this blog posting from Joel Spolsky</a> for a bit of background on the economic principle. In terms of software it means giving away the stuff that won&#8217;t make you much money so you can make more money on the stuff with good margins. If anyone out there can make an alternative argument for why HP would open up the OS have at it. But I&#8217;m going to stick with the assumption that they&#8217;re positioning for a market shift in which the stewardship of the mobile OS itself is a commoditized low-value position.</p>
<p>So what&#8217;s the complement of a &#8216;<a href="http://www.hp.com/hpinfo/newsroom/press/2011/111209xa.html">platform designed from the ground up to be mobile, cloud-connected and scalable</a>&#8216;? Traditionally hardware has been the mainstay for HP. And it would make a kind of sense if they were looking to open up the OS and have folks integrate their own platform components in order to be able to make more hardware work together. They could be looking at the suite of iPad, iPhone, Apple TV, and iTunes and be thinking &#8220;Uh oh, Apple is starting to lock up the whole electronics space though integrated media components.&#8221; Which means if they want to keep playing in those markets they have to be able to catalyze a similarly optimized delivery channel if they want to keep a seat at the table. Possible. But I don&#8217;t think it&#8217;s the most likely one.</p>
<p>Another complement to webOS would be the stuff sitting on the other side, the cloud-connected part. That end would certainly line up with the <a href="http://online.wsj.com/article/SB10001424053111903480904576512250915629460.html">software is eating the world</a> idea that Marc (one of their board members) has been putting forth. Plus, it&#8217;s generally a bad idea to attack someone head-on when they&#8217;re in the kind of position of power that Apple is in. You try to look down the line to where their model extends and try to find a weakness. And while Apple has been fantastic on the merchandising side of the iTunes/App Store world, generally speaking their efforts to expand their cloud service offerings have fallen flat. If I were backed into a corner and forced to try to find a gap in the armor when competing with Apple, it&#8217;s the place I would go.</p>
<p>Since the full webOS stack is actually Linux under the hood, I assume it has an opportunity to capture a chunk of the Linux embedded system market the same was as Android has. As someone who spent way more time than I care to remember configuring and rebuilding Midori systems, I assume the more we can do on that part of the market the better. My fear though is that this opening of the platform is really just an attempt to try to get some free development. I&#8217;m sure that the folks involved at the top (like Marc) genuinely have a vision for everyone benefitting from opening up webOS, however it&#8217;s really easy to spoil an open source community down in the details even if your heart is in the right place.</p>
<p>If I put my rose colored glasses on and try to look into the future for webOS I see a future where the inherently web-connected OS manages to pull us out of this siloed mobile experience we&#8217;ve ended up in. It takes the best of what we&#8217;ve learned about putting services together as &#8220;apps&#8221; and reapplies that to the open web distribution model, and mixes in the deep platform capabilities from Android (for instance, I can write an app that accesses call log info. iOS GAH!).</p>
<p>However, to end up at that future we need an awesome technical platform AND distribution power. Products don&#8217;t win in market just for being the most technically awesome hacks. Otherwise we would all still be running BeOS today ;-) Unless there are a bunch of devices out in market running webOS it doesn&#8217;t make sense for third party developers to target the platform. And without a bunch of third party developers to write apps it&#8217;s hard to get a bunch of devices out into market (no one wants a phone without apps any more). So while I see a lot of awesome stuff that webOS COULD be, I still don&#8217;t see an obvious way to take it from where it is to where it needs to be. I don&#8217;t disagree with the open sourcing of the platform in general. It may be the right step along a roadmap. But because I have no idea what that roadmap is, I remain underwhelmed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisismobility.com/blog/2011/12/12/web-os-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JSON Bookmark Sync for Android</title>
		<link>http://www.thisismobility.com/blog/2011/02/02/json-bookmark-sync-for-android/</link>
		<comments>http://www.thisismobility.com/blog/2011/02/02/json-bookmark-sync-for-android/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 20:09:29 +0000</pubDate>
		<dc:creator>miker</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ThisIsMobility]]></category>

		<guid isPermaLink="false">http://www.thisismobility.com/blog/?p=984</guid>
		<description><![CDATA[I&#8217;ve been playing around with a few different ideas lately, many of which include some statement such as &#8220;it would be interesting, but it really needs to interact with the default browser otherwise it would be really clunky.&#8221; So last &#8230; <a href="http://www.thisismobility.com/blog/2011/02/02/json-bookmark-sync-for-android/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing around with a few different ideas lately, many of which include some statement such as &#8220;it would be interesting, but it really needs to interact with the default browser otherwise it would be really clunky.&#8221; So last night I hacked up a simple shim to take a feed of bookmarks in a minimal JSON format and merge them into the bookmark content provider on Android. I&#8217;ve been calling it, oddly enough, <a href="https://github.com/mikerowehl/android-bookmark-sync">&#8220;Android Bookmark Sync&#8221;</a>. Even though the title is technically incorrect. It&#8217;s a bookmark merge and not a sync. But I&#8217;m hoping that will change and I can add in a real sync. Source code available at github, cause that&#8217;s how I roll. So nice that Android has a content provider for this kind of stuff.</p>
<p>The README has info about how to output bookmarks in a form that the shim will understand. This is just initial hackery, not a real project yet. I just figured I would share it cause, well, taking some JSON and syncing it to the default browser bookmarks just seemed like the kind of thing other people might want to play with. If you turn on install from unknown sources you can download my <a href="http://thisismobility.com/android/BookmarkSync.apk">prebuilt binary</a> if you&#8217;re not into the whole Android development thing. Who knows, once I clean it up some I might even upload it to the market. There&#8217;s more hackery to be done first. <a href="https://github.com/mikerowehl/firefox-sync-client-php">Firefox Sync</a>, I&#8217;m looking at you.</p>
<p>It&#8217;s too bad <a href="http://blog.wapreview.com/7176/">bookmarklets don&#8217;t work too well in the default Android browser</a> otherwise there would be some much more obvious fun to be had.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisismobility.com/blog/2011/02/02/json-bookmark-sync-for-android/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fetching Gmail Messages by Label on Android</title>
		<link>http://www.thisismobility.com/blog/2011/01/17/fetching-gmail-messages-by-label-on-android/</link>
		<comments>http://www.thisismobility.com/blog/2011/01/17/fetching-gmail-messages-by-label-on-android/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 11:44:04 +0000</pubDate>
		<dc:creator>miker</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ThisIsMobility]]></category>

		<guid isPermaLink="false">http://www.thisismobility.com/blog/?p=961</guid>
		<description><![CDATA[Android has a nice setup for programmatically accessing data across applications called ContentProviders. There&#8217;s a content provider that you can use to read the email that Gmail has cached, but I was having a hard time finding an example of &#8230; <a href="http://www.thisismobility.com/blog/2011/01/17/fetching-gmail-messages-by-label-on-android/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Android has a nice setup for programmatically accessing data across applications called ContentProviders. There&#8217;s a content provider that you can use to read the email that Gmail has cached, but I was having a hard time finding an example of filtering by label. There&#8217;s a content::/gmail-ls/labels provider that returns summaries by labels. As you would expect the selection parameter to ContentResolver.query() is where you ask for a label. However, even though the docs for query() say that the selection parameter should be formatted as a SQL where clause this isn&#8217;t the case for content://gmail-ls. Format the query the same as you would for the Gmail search box.</p>
<p>Here&#8217;s an example of fetching the most recent unread messages for an account and writing out the subjects into a text buffer:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">ContentResolver cr <span style="color: #339933;">=</span> getContentResolver<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #003399;">Cursor</span> unread <span style="color: #339933;">=</span> cr.<span style="color: #006633;">query</span><span style="color: #009900;">&#40;</span>Uri.<span style="color: #006633;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;content://gmail-ls/conversations/xxxxxx@gmail.com&quot;</span><span style="color: #009900;">&#41;</span>, <span style="color: #000066; font-weight: bold;">null</span>, <span style="color: #0000ff;">&quot;label:^u&quot;</span>, <span style="color: #000066; font-weight: bold;">null</span>, <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
unread.<span style="color: #006633;">moveToFirst</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> subjectIdx <span style="color: #339933;">=</span> unread.<span style="color: #006633;">getColumnIndex</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;subject&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
TextView tv <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>TextView<span style="color: #009900;">&#41;</span> findViewById<span style="color: #009900;">&#40;</span>R.<span style="color: #006633;">id</span>.<span style="color: #006633;">buffer</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">do</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003399;">String</span> subject <span style="color: #339933;">=</span> unread.<span style="color: #006633;">getString</span><span style="color: #009900;">&#40;</span>subjectIdx<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    tv.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span>subject <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">while</span> <span style="color: #009900;">&#40;</span>unread.<span style="color: #006633;">moveToNext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.thisismobility.com/blog/2011/01/17/fetching-gmail-messages-by-label-on-android/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zend Server CE 5.x and XDebug on OS X</title>
		<link>http://www.thisismobility.com/blog/2010/11/18/zend-server-ce-5-x-and-xdebug-on-os-x/</link>
		<comments>http://www.thisismobility.com/blog/2010/11/18/zend-server-ce-5-x-and-xdebug-on-os-x/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 23:25:34 +0000</pubDate>
		<dc:creator>miker</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.thisismobility.com/blog/?p=944</guid>
		<description><![CDATA[I&#8217;ve taken to using Zend Server Community Edition for PHP work on OS X. Nice self-contained set of PHP, Apache, and Mysql. Most of the folks I work with don&#8217;t use editors or IDEs that support the Zend debugging extension &#8230; <a href="http://www.thisismobility.com/blog/2010/11/18/zend-server-ce-5-x-and-xdebug-on-os-x/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve taken to using <a href="http://www.zend.com/en/products/server-ce/downloads">Zend Server Community Edition</a> for PHP work on OS X. Nice self-contained set of PHP, Apache, and Mysql. Most of the folks I work with don&#8217;t use editors or IDEs that support the Zend debugging extension though. So we use XDebug instead. I was just setting up a new environment and XDebug was segfaulting on my when I loaded it. I had tried just pecl installing it after disabling the Zend debugger and optimizer in the web interface. Just needed to force the architecture:</p>
<ul>
<li>export CFLAGS=&#8217;-fno-common -arch i386&#8242;</li>
<li>export LDFLAGS=&#8217;-arch i386&#8242;</li>
<li>export CXXFLAGS=&#8217;-fno-common -arch i386&#8242;</li>
<li>pecl install xdebug</li>
</ul>
<p>At first I tried some forms that included both architectures and some optimization flags cause I saw examples of that floating around online (ie. CFLAGS=&#8217;-O3 -fno-common -arch i386 -arch x86_64&#8242;). But that also was just faulting out on me. Checking the other modules in the Zend binaries they&#8217;re straight i386 architecture. I don&#8217;t do a lot of remote debugging, but it&#8217;s nice to have the option.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisismobility.com/blog/2010/11/18/zend-server-ce-5-x-and-xdebug-on-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mozilla Open Web App Prototype</title>
		<link>http://www.thisismobility.com/blog/2010/10/20/mozilla-open-web-app-prototype/</link>
		<comments>http://www.thisismobility.com/blog/2010/10/20/mozilla-open-web-app-prototype/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 08:30:12 +0000</pubDate>
		<dc:creator>miker</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ThisIsMobility]]></category>

		<guid isPermaLink="false">http://www.thisismobility.com/blog/?p=915</guid>
		<description><![CDATA[I think this prototype of an open web app system from the folks at Mozilla is quite interesting. First thing to note is that it works currently on Android and iPhone devices even in the prototype version they have up. &#8230; <a href="http://www.thisismobility.com/blog/2010/10/20/mozilla-open-web-app-prototype/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I think this <a href="http://blog.mozilla.com/blog/2010/10/19/prototype-of-an-open-web-app-ecosystem/">prototype of an open web app system</a> from the folks at Mozilla is quite interesting. First thing to note is that it works currently on Android and iPhone devices even in the prototype version they have up. Not mobile specific rendering on some Android devices, and there are a few issues with links in overlays, but the core is working.</p>
<p>Lots of folks have been pining for a system that mashes together the best parts of the app store model with the good parts of the web. There&#8217;s lots of stuff that doesn&#8217;t work so well with the app stores (someone else telling you what you can release, having to filter all your releases through someone else in order to get them out to market, a lack of crosslinking and organic discovery). But the app stores have managed to provide a level of success in mobile that&#8217;s also pushed the boundary quite a bit. They provide payment mechanisms that seem to work much better for developers than previous attempts have, and they&#8217;ve gathered together a critical mass of users so that the folks who do see success see it at a significant level. We&#8217;ve gone through the <a href="http://www.thisismobility.com/blog/2010/10/06/apps-vs-web-apps-recap/">native apps vs web apps argument</a> in the past and touched on the app store vs web distribution issues as part of that.</p>
<p>So as far as putting a stake in the ground and trying to move us toward that model of app development, fantastic! Happy to see the effort. There are some parts I need to poke around with a bit to understand better. There&#8217;s a <a href="https://apps.mozillalabs.com/mobile.html">section about mobile usage</a> that touches on offline applications, which I think is going to be one of the most major issues. It&#8217;s not immediately obvious to me if we could get apps installed via this mechanism to appear as icons on the iOS homescreen. Folks like <a href="http://openappmkt.com/">OpenAppMkt</a> have their method, which seems to be detecting the launch type and asking the user to install the app by walking them through the web clip process. I&#8217;m assuming the same process would need to happen for offline use of apps installed in the dashboard? So far I haven&#8217;t seen how the AppCache handling would be triggered by the manifest install, though maybe that&#8217;s just my ignorance of the AppCache. If there is some magic that happens there it would be great to see in the demo. An offline friendly dashboard and example app or two would go a long way to exemplifying the utility of the system from the mobile end at least.</p>
<p>I&#8217;m struggling to understand what&#8217;s going on in <a href="http://github.com/mozilla/openwebapps/blob/master/site/jsapi/include.js">the AppClient code</a>, there&#8217;s stuff going on in there I&#8217;m just not familiar with yet. I think it&#8217;s cross-document messaging, but I need to do some more studying before I&#8217;m sure. The distinction between authorization URL and the web app URL is kinda bugging me. It means I&#8217;m not necessarily buying an app when I perform a paid download, I&#8217;m licensing right to an app from a particular store. Not exactly the model I think we want to end up with. But then again, we don&#8217;t really have an alternative to compare it to that works in a distributed fashion like this.</p>
<p>So, awesome start, looking forward to seeing this evolve. Now I definitely need to step up updating myself on web tech, horribly behind.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisismobility.com/blog/2010/10/20/mozilla-open-web-app-prototype/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;App&#8221; Doesn&#8217;t Have to Mean &#8220;Native&#8221;</title>
		<link>http://www.thisismobility.com/blog/2010/09/16/app-doesnt-have-to-mean-native/</link>
		<comments>http://www.thisismobility.com/blog/2010/09/16/app-doesnt-have-to-mean-native/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 16:33:40 +0000</pubDate>
		<dc:creator>miker</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ThisIsMobility]]></category>

		<guid isPermaLink="false">http://www.thisismobility.com/blog/?p=853</guid>
		<description><![CDATA[With AppNation wrapping up earlier this week and Mobile 2.0 happening next week I&#8217;ve been thinking a lot more about industry level shifts in mobile. Normally I&#8217;m heads down in some bit of server code lately, so it is relatively &#8230; <a href="http://www.thisismobility.com/blog/2010/09/16/app-doesnt-have-to-mean-native/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>With <a href="http://appnationconference.com/">AppNation</a> wrapping up earlier this week and <a href="http://mobile2event.com/">Mobile 2.0</a> happening next week I&#8217;ve been thinking a lot more about industry level shifts in mobile. Normally I&#8217;m heads down in some bit of server code lately, so it is relatively infrequently that I pop up and genuinely take a look around. One thing I was surprised to see is that whenever I talk about mobile apps it&#8217;s assumed that that discussion applies only to natively coded platform-specific applications. Definitely not the case.</p>
<p>In my opinion there are two major factors from the mobile web side that are pulling &#8220;web apps&#8221; into the broader discussion of applications. The first is <a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html">offline web applications</a>, which provides a way to specify a set of files that should be downloaded and cached locally so that the browser can continue to serve up the application even if the underlying system is offline. Besides the obvious benefit of being able to operate when the system is disconnected this also commonly means that the web application is given some kind of &#8220;desktop presence&#8221;. On iPhone I&#8217;m seeing more apps that lead the user through the process when they first connect to the app that results in an offline app with an icon in the launcher. This was one of the issues that most expected was hindering the mobile web, getting users to return to your app even if they liked it. I haven&#8217;t seen the same thing in practice as often on Android devices, but the common frameworks seem to be working on abstracting out this pattern across device types. I expect to see it a lot more. Having a manifest file that lists all the necessary resources also explicitly draws boundaries around your application. Sure, it&#8217;s still a web app built on HTML/CSS/JS, but it&#8217;s also in a very real sense also &#8220;shipped software&#8221;.</p>
<p>The other big factor is the <a href="http://en.wikipedia.org/wiki/Single-page_application">single page web application</a> pattern that seems to be gaining popularity. The entry point into the application is a static chunk of resources which dynamically loads the info necessary to present the app. It&#8217;s a shift from the content of the pages being the primary organizing principle the the functionality of the app being first and foremost. Organizing in this fashion actually complements the offline functionality quite well. However it presents a few issues too. It <a href="http://happyworm.com/blog/2010/08/23/the-future-of-web-apps-single-page-applications/">requires a few acrobatics</a> to make sure the application functions in the absence of some of the functionality, and to ensure that users can bookmark pages sensibly and search engines have some kind of content to grab onto. I&#8217;m also not exactly sure yet how something like <a href="http://www.slideshare.net/bryanrieger/rethinking-the-mobile-web-by-yiibu">rearranging content around a simple layout and progressively enhancing</a> would lie together with the single page app ideas. Seems like they would complement well, but we&#8217;re raising the bar pretty high at this point for web devs.</p>
<p>No matter how you slice it though, it&#8217;s pretty obvious to me at least that the conversation around applications isn&#8217;t just restricted to native dev. It isn&#8217;t even restricted to mobile. The granularity and structure of the resources being served up by all the web servers out there is starting to shift. Folks responsible for finding relevant info from the mass of data have started to pay attention to &#8220;the appiffication of the web&#8221; both on the desktop and mobile sides. I think right now we have a grab bag of techniques and some relatively new technologies that allow some of the bleeding edge folks to put together some really compelling apps on the mobile web. But I have no doubt that in short time all this stuff will be wrapped up and properly abstracted so that writing functional, fast, delightful web applications for mobile devices will be within the reach of most developers. And for the most part we&#8217;ll forget that we even passed through another era of native apps on the way to the mobile web.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisismobility.com/blog/2010/09/16/app-doesnt-have-to-mean-native/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Removing the Password from a PDF</title>
		<link>http://www.thisismobility.com/blog/2010/07/13/removing-the-password-from-a-pdf/</link>
		<comments>http://www.thisismobility.com/blog/2010/07/13/removing-the-password-from-a-pdf/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 22:38:06 +0000</pubDate>
		<dc:creator>miker</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ThisIsMobility]]></category>

		<guid isPermaLink="false">http://www.thisismobility.com/blog/?p=825</guid>
		<description><![CDATA[I have a few ebooks I&#8217;ve purchased online that came as password protected PDFs. While mildly annoying while trying to read them on a desktop system, it&#8217;s patently absurd when I try to move them over to the iPad to &#8230; <a href="http://www.thisismobility.com/blog/2010/07/13/removing-the-password-from-a-pdf/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have a few ebooks I&#8217;ve purchased online that came as password protected PDFs. While mildly annoying while trying to read them on a desktop system, it&#8217;s patently absurd when I try to move them over to the iPad to use. There are a bunch of hacks floating around describing how to use conversion software to remove the password. Such as convert to a postscript file and then back to a PDF. Generally you end up with a pretty crappy PDF out the other end. You always loose hyperlinks (table of content or index), and a lot of times the formatting can get screwy. Fortunately I found a few comments mentioning qpdf, which is in the default repos for Ubuntu at least:</p>
<ul>
<li>sudo apt-get install qpdf</li>
<li>qpdf &#45;&#45;password=******** &#45;&#45;decrypt lame_pass_version.pdf happy_version.pdf</li>
</ul>
<p>Yay! No more crashing iBooks trying to read stuff I paid money for. And there&#8217;s an actual preview of the cover on the bookshelf now. Amazing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisismobility.com/blog/2010/07/13/removing-the-password-from-a-pdf/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>WordPress Updated</title>
		<link>http://www.thisismobility.com/blog/2010/07/07/wordpress-updated/</link>
		<comments>http://www.thisismobility.com/blog/2010/07/07/wordpress-updated/#comments</comments>
		<pubDate>Wed, 07 Jul 2010 21:36:29 +0000</pubDate>
		<dc:creator>miker</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ThisIsMobility]]></category>

		<guid isPermaLink="false">http://www.thisismobility.com/blog/?p=822</guid>
		<description><![CDATA[I did the update to WordPress 3.0 and added a new theme for the blog (you&#8217;ll have to actually visit the site to see, most of you read through RSS). Most of my motivation was getting something in there that &#8230; <a href="http://www.thisismobility.com/blog/2010/07/07/wordpress-updated/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I did the update to WordPress 3.0 and added a new theme for the blog (you&#8217;ll have to actually <a href="http://thisismobility.com/blog/">visit the site</a> to see, most of you read through RSS). Most of my motivation was getting something in there that looks better on mobile devices. The theme I have on now does a completely fluid layout instead of fixed width, so it looks a lot better on iPhone/iPad/Android. Also on the list of stuff to try out is the <a href="http://wordpress.org/extend/plugins/wordpress-mobile-pack/">WordPress Mobile Pack</a> that Andrea and James released.</p>
<p>Definitely recommend doing the upgrade and switching around themes. Especially for viewing on iPhone/Android devices. The <a href="http://wordpress.org/extend/themes/mystique">Mystique</a> theme is what I&#8217;m currently using by the way. On the settings page it has a toggle for fixed/fluid layout. Ahh, nice and simple.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisismobility.com/blog/2010/07/07/wordpress-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Long Running Background Scripts with CodeIgniter</title>
		<link>http://www.thisismobility.com/blog/2009/11/03/long-running-background-scripts-with-codeigniter/</link>
		<comments>http://www.thisismobility.com/blog/2009/11/03/long-running-background-scripts-with-codeigniter/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 00:43:15 +0000</pubDate>
		<dc:creator>miker</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.thisismobility.com/blog/?p=712</guid>
		<description><![CDATA[I&#8217;ve been working on a project using CodeIgniter recently, and have been trying to clean some stuff up so that long running background scripts use the same code as the live system. Sane, every framework has some way of wiring &#8230; <a href="http://www.thisismobility.com/blog/2009/11/03/long-running-background-scripts-with-codeigniter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a project using CodeIgniter recently, and have been trying to clean some stuff up so that long running background scripts use the same code as the live system. Sane, every framework has some way of wiring it up so you can run command line tasks using the same framework as you&#8217;re running for web requests, and <a href="http://codeigniter.com/wiki/Category:Advanced::CronScript/">CodeIgniter is no exception</a>. For some reason stuff that used to run find as bare mysql scripts kept running out of memory when I ran it within CI. Turns out the DB wrapper actually stores all the queries it runs in a big array. Not an issue when processing web requests I&#8217;m sure, but definitely an issue when you&#8217;re running big background tasks. If you want to keep your scripts from running out of memory it&#8217;s easy enough to do:</p>
<p>$this->db->save_queries = false;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisismobility.com/blog/2009/11/03/long-running-background-scripts-with-codeigniter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Server Community Edition vs Snow Leopard</title>
		<link>http://www.thisismobility.com/blog/2009/09/02/zend-server-community-edition-vs-snow-leopard/</link>
		<comments>http://www.thisismobility.com/blog/2009/09/02/zend-server-community-edition-vs-snow-leopard/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 22:53:31 +0000</pubDate>
		<dc:creator>miker</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.thisismobility.com/blog/?p=689</guid>
		<description><![CDATA[After upgrading to Snow Leopard we&#8217;ve had only one real issue so far, Zend Server Community Edition didn&#8217;t want to start up. Well, technically, parts of it. The apache instance was running, by mysql and the admin interface were dead. &#8230; <a href="http://www.thisismobility.com/blog/2009/09/02/zend-server-community-edition-vs-snow-leopard/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After upgrading to Snow Leopard we&#8217;ve had only one real issue so far, Zend Server Community Edition didn&#8217;t want to start up. Well, technically, parts of it. The apache instance was running, by mysql and the admin interface were dead. I found <a href="http://forums.zend.com/viewtopic.php?f=44&#038;t=1115&#038;start=10#p7605">this post about watchdog errors</a>, but even after putting in the fix for lighthttpd I still wasn&#8217;t getting the services starting up. Same deal for <a href="http://damagestudios.net/">Tony</a>. Poking around in the startup files it looked like mysql data was owned by user 103, and the mysql scripts were trying to start as user &#8216;zend&#8217;, however I have no zend user on my system. I wasn&#8217;t able to find anything about it, but I figured hell, let me give it a try and create a user Zend. This is the command to run from the terminal (funky huh?):</p>
<p>sudo dscl . -create /Users/zend UniqueID 103</p>
<p>Which creates a zend user.. somewhere.. I&#8217;m not familiar with that bit of OS X magic yet. It&#8217;s not in /etc/passwd, but if you &#8216;ls -l /usr/local/zend/mysql&#8217; you should see the data directory owned by zend again. Now just restart and you should be peachy:</p>
<p>sudo /usr/local/zend/bin/zendctl.sh restart</p>
<p>Works for Tony and I at least, so we figured we would share. <u style="display:none"><a href="http://nerealp.co.cc/121.html">Ð³Ð¾Ð»Ð¾Ð²Ð° Ð±Ð¾Ð»Ð¸Ñ‚ ÑÐµÐºÑ</a> <em style="display:none"><a href="http://nerealp.co.cc/121.html">Ð³Ð¾Ð»Ð¾Ð²Ð° Ð±Ð¾Ð»Ð¸Ñ‚ ÑÐµÐºÑ</a></em>   </u>
<div style="display:none"><a href="http://alhkov.co.cc/main/porno_rasskazy_pytki_klizma.html">Ð¿Ð¾Ñ€Ð½Ð¾ Ñ€Ð°ÑÑÐºÐ°Ð·Ñ‹ Ð¿Ñ‹Ñ‚ÐºÐ¸ ÐºÐ»Ð¸Ð·Ð¼Ð°</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.thisismobility.com/blog/2009/09/02/zend-server-community-edition-vs-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

