<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C08AR38zeCp7ImA9WhRUEEk.&quot;"><id>tag:blogger.com,1999:blog-11218519</id><updated>2012-01-19T22:44:06.180-08:00</updated><category term="http://www.blogger.com/img/gl.link.gif" /><title>Adamac Attack!</title><subtitle type="html">Adam MacBeth</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://adamac.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/AdamacAttack" /><feedburner:info uri="adamacattack" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;AkECQXcycCp7ImA9WxBRGUs.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-5923276918814118186</id><published>2010-01-08T08:19:00.001-08:00</published><updated>2010-01-08T08:37:40.998-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-08T08:37:40.998-08:00</app:edited><title>Websocket Client for Java</title><content type="html">A few weeks ago I published an implementation of a Websocket client written in Java &lt;a href="http://github.com/adamac/Java-WebSocket-client"&gt;here&lt;/a&gt;. If you're not already familiar with it, I'll point you to &lt;a href="http://markmaunder.com/2009/web-sockets-protocol/"&gt;Mark's post&lt;/a&gt;, which is a great explanation of the practical benefits of this protocol. The main reason I wrote this in Java was for compatibility with Android, so if you have trouble using it in other situations, it would be great to get feedback or patches.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-5923276918814118186?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/WewS89-3wso" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/5923276918814118186/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=5923276918814118186" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/5923276918814118186?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/5923276918814118186?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/WewS89-3wso/websocket-client-for-java.html" title="Websocket Client for Java" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2010/01/websocket-client-for-java.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEAQHc_fSp7ImA9WxBSEEQ.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-2504381029289234392</id><published>2009-12-17T15:44:00.000-08:00</published><updated>2009-12-17T16:04:01.945-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-17T16:04:01.945-08:00</app:edited><title>PartyCamera for Android</title><content type="html">I just released a new application on the Android Market called PartyCamera. If you're on Android, you can follow this &lt;a href="http://market.android.com/search?q=pname:com.sixfire.partycamera"&gt;link&lt;/a&gt; to get it. Here's the description on the Market:&lt;div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;i&gt;Ever wanted to pass your phone around at a party, but were worried about people looking at private information on your phone? PartyCamera locks your phone into camera mode - preventing other uses! &lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Once activated, press the HOME button to enter your password and exit PartyCamera.&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I'm eager to get feedback from users, especially with regards to how it works across different devices.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-2504381029289234392?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/zFAHb9vmLR8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/2504381029289234392/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=2504381029289234392" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/2504381029289234392?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/2504381029289234392?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/zFAHb9vmLR8/partycamera-for-android.html" title="PartyCamera for Android" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2009/12/partycamera-for-android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQNRH85fyp7ImA9WxNaFkk.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-8152602052288261362</id><published>2009-11-25T07:52:00.000-08:00</published><updated>2009-11-30T21:13:15.127-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-30T21:13:15.127-08:00</app:edited><title>Android Doesn't</title><content type="html">Android has been promoted as exposing many more phone features to user-installable applications than the typical "open" mobile OS. Here is the "All applications are created equal" bullet from the &lt;a href="http://www.android.com/about/"&gt;Android About page&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Android does not differentiate between the phone's core applications and third-party applications. They can all be built to have equal access to a phone's capabilities providing users with a broad spectrum of applications and services. With devices built on the Android Platform, users are able to fully tailor the phone to their interests. They can swap out the phone's homescreen, the style of the dialer, or any of the applications.&lt;/i&gt;&lt;/blockquote&gt;&lt;div&gt;This may be Google's goal, but at present this statement is patently false. Yes, you can swap out the homescreen, but it's impossible to build a suite of applications that can achieve the same level of functionality as the core applications.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most of Android is open source so it's easy to look at how the system works. The core applications have special permissions or access internal APIs which are not exposed in the SDK used by third-party applications. This means it is not possible to recreate the full experience of the core applications entirely using user-installed applications.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Getting the same level of access as the core applications entails modifying the Android source, which means you should really be building your own device or have a very technically savvy audience who is willing to replace their system software with your own (and that assumes they have a device with root access). Downloadable applications available through the Android Market or other channels cannot perform these functions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Many developers had expected Android to provide a new level of accessibility not previously found on platforms like J2ME or even Windows Mobile and Symbian, but it appears there are still many things that just aren't possible. Here are some of the features I have found missing from application capabilities:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Replace the in-call screen.&lt;/div&gt;&lt;div&gt;&lt;div&gt;- Dial numbers in the background (without an in-call screen; useful for call forwarding, etc.)&lt;/div&gt;&lt;/div&gt;&lt;div&gt;- Dial emergency numbers (Ok, not really necessary :).&lt;/div&gt;&lt;div&gt;- Access call audio streams (e.g. for call recording)&lt;/div&gt;&lt;div&gt;- Suppress notifications from other applications (toasts)&lt;/div&gt;&lt;div&gt;- Incoming call control (filter/block/redirect)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These are the features that I've personally been stymied on; I'm sure there are other common scenarios that aren't supported. What have you found?&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-8152602052288261362?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/y3iSFVBCylw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/8152602052288261362/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=8152602052288261362" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/8152602052288261362?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/8152602052288261362?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/y3iSFVBCylw/android-dont.html" title="Android Doesn't" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2009/11/android-dont.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQHR3g9eyp7ImA9WxNbF04.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-5559934582931807185</id><published>2009-11-19T13:13:00.000-08:00</published><updated>2009-11-20T08:58:56.663-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-20T08:58:56.663-08:00</app:edited><title>The Revenue Singularity (Google Drinks Your Milkshake)</title><content type="html">I've heard a number of people recently say something like "Google is a one-trick pony. They've never made a dime off anything but search." While this is mostly true on its face, it ignores the bigger picture of what Google is doing: converting all tech revenue into advertising revenue, where Google owns the majority of market share.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As I've stated &lt;a href="http://adamac.blogspot.com/2007/11/google-and-commoditization-of-software.html"&gt;before&lt;/a&gt;, Google's endgame, explicit or not, is to commoditize all software to the point that no one can make money directly off software. This means no more software royalty streams, no more software subscriptions, no more software IP sales. By open-sourcing so many types of software (and this software is mostly at the top of its class, if not the very best), Google is making all types of advanced software free. Of course, Google's core infrastructure and advertising software is NOT open source. In this world, Google's operational efficiency and huge search advertising market share are their competitive advantage.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By making software free (or &lt;a href="I've heard a number of people recently say something like &amp;quot;Google is a one-trick pony. They've never made a dime off anything but search.&amp;quot; While this is mostly true on its face, it ignores the bigger picture of what Google is doing: converting all tech revenue into advertising revenue, where Google owns the majority of market share. As I've stated before, Google's endgame, explicit or not, is to commoditize all software to the point that no one can make money directly off software. This means no more software royalty streams, no more software subscriptions, no more software IP sales. By open-sourcing so many types of software (and this software is mostly at the top of its class, if not the very best), Google is making all types of advanced software free. Of course, Google's core infrastructure and advertising software is NOT open source. In this world, Google's operational efficiency and huge search advertising market share are their competitive advantage. By making software free, Google is knee-capping any company that tries to sell software. Android is destroying revenues for mobile OS vendors. ChromeOS will have the same effect on PC OS vendors. Shares of navigation software makers dropped by nearly 20% after it was announced that Google would give a revenue share to OEMs installing its Google Navigation product. The list goes on. This has two effects: to cripple its competition and to establish a baseline price which drives software developers into Google's arms. By building best in class web applications, Google has established that no sane person would pay for any web application. With free now the de facto price for software, the only way for anyone to make money is through advertising, where Google will reap the majority share. It may be true that Google does not make money DIRECTLY off many of its non-search products. But the conversion of software to a &amp;quot;less than free&amp;quot; commodity means Google is destroying value in many other areas and siphoning some of that off as search revenue."&gt;less than free&lt;/a&gt;), Google is knee-capping any company that tries to sell software. Android is destroying revenues for mobile OS vendors. ChromeOS will have the same effect on PC OS vendors. Shares of navigation software makers &lt;a href="http://abovethecrowd.com/2009/10/29/google-redefines-disruption-the-%E2%80%9Cless-than-free%E2%80%9D-business-model/"&gt;dropped &lt;/a&gt;by nearly 20% after it was announced that Google would give a revenue share to OEMs installing its Google Navigation product. The list goes on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This has two effects: to cripple its competition and to establish a baseline price which drives software developers into Google's arms. By building best in class web applications, Google has established that no sane person would pay for any web application. With free now the de facto price for software, the only way for anyone to make money is through advertising, where Google will reap the majority share.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It may be true that Google does not make money DIRECTLY off many of its non-search products. But the conversion of software to a "less than free" commodity means Google is destroying value in many other areas and siphoning some of that off as search revenue.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-5559934582931807185?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/YSzmNNKSKoQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/5559934582931807185/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=5559934582931807185" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/5559934582931807185?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/5559934582931807185?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/YSzmNNKSKoQ/revenue-singularity-google-drinks-your.html" title="The Revenue Singularity (Google Drinks Your Milkshake)" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2009/11/revenue-singularity-google-drinks-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcFQ3o_eCp7ImA9WxNUF0Q.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-3202955031820388282</id><published>2009-11-09T10:28:00.000-08:00</published><updated>2009-11-09T10:40:12.440-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-09T10:40:12.440-08:00</app:edited><title>wmaloader for Windows</title><content type="html">&lt;div&gt;I'm still using an ancient &lt;a href="http://www.linksysbycisco.com/US/en/support/WMA11B"&gt;Linksys WMA11B Media Adapter&lt;/a&gt; to stream audio to my stereo. The original UPnP-based software it came with was really buggy, so I use some alternative firmware to connect it to my &lt;a href="http://www.mysqueezebox.com/download"&gt;Squeezebox Server&lt;/a&gt; (nee SlimServer).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The firmware is downloaded by the device everytime it boots up, so it's easy to send it a new brain. The Linksys server software was also a pig though and only worked on windows, so someone was kind enough to put together an open source package called &lt;a href="http://jcsu.jesus.cam.ac.uk/~acw43/projects/wma11b/wmaloader.html"&gt;wmaloader&lt;/a&gt; as an alternative that runs on most OSes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've been using the wmaloader on Windows for a while, but it was a pain to setup and didn't work out of the box as a service. I've built an installer that bundles up the necessary binaries, installs the service, and opens up the firewall as needed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;The installer binary is &lt;a href="http://amacbeth.googlepages.com/wmaloaderinstaller.exe"&gt;here&lt;/a&gt;, and the source is on &lt;a href="http://github.com/adamac/wmaloader-for-Windows"&gt;github&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-3202955031820388282?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/PqEi5OhrLkc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/3202955031820388282/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=3202955031820388282" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/3202955031820388282?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/3202955031820388282?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/PqEi5OhrLkc/wmaloader-for-windows.html" title="wmaloader for Windows" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2009/11/wmaloader-for-windows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYMRHo_eSp7ImA9WxNXEUo.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-1419501437684710275</id><published>2009-09-28T13:27:00.000-07:00</published><updated>2009-09-28T13:36:25.441-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-28T13:36:25.441-07:00</app:edited><title>PubSubHubbub Subscriber for Python</title><content type="html">I built a little &lt;a href="http://code.google.com/p/pubsubhubbub/"&gt;PubSubHubbub&lt;/a&gt; subscriber library in Python that I just put on Github &lt;a href="http://github.com/adamac/PuSH-Subscriber"&gt;here&lt;/a&gt;. I'm using it for real-time sharing from Google Reader to Twitter, but there are a lot of other interesting applications coming along.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-1419501437684710275?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/9ty1_ZTwU7c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/1419501437684710275/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=1419501437684710275" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/1419501437684710275?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/1419501437684710275?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/9ty1_ZTwU7c/pubsubhubbub-subscriber-for-python.html" title="PubSubHubbub Subscriber for Python" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://adamac.blogspot.com/2009/09/pubsubhubbub-subscriber-for-python.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08CSXs8fCp7ImA9WxVaF04.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-498194063702098184</id><published>2009-04-07T13:50:00.000-07:00</published><updated>2009-04-14T13:11:08.574-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-14T13:11:08.574-07:00</app:edited><title>10 Startup Red Flags</title><content type="html">I've worked on a number of startups: from seed-stage through IPO, as a founder, employee, advisor, and consultant, as well as evaluating a bunch from the outside, so I've seen my share of screw-ups. There are some obvious warning signs, but sometimes these are hard to recognize except in hindsight or without prior startup experience. If you're considering working for a startup, hopefully this will give you some tips on what to look out for.&lt;br /&gt;&lt;br /&gt;Of course, everyone should trust their gut, so if you feel something's not right, it's probably not a good fit. I'm not going to go over everything you should be looking for in an employer or even in a startup, just some warning signs that might make you think twice about what might otherwise sound like a good opportunity. On the other hand, if you're running a startup maybe these are some things to avoid. If anyone has any strong objections to these or good stories, I'd love to hear them.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;1. Wacky Titles&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Startups that have too many VP and C-level titles floating around are just asking for the smack-down. Who's going to do the work if everyone thinks they're an executive? Titles like SVP and EVP are silly at a startup, and a giveaway that there's been some serious shuffling or some really big egos are involved.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;It's generally wrong for people to have multiple titles too. Ever met a CTO/VP Engineering or CEO/CTO? Yeah me neither. At least, I've never met someone who needed to have both of these titles. This is generally a sign of some wildly narcissitic personalities.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you're the CEO, just be the CEO! If you're highly technical and drive the technology vision of the company, people will get it without you tacking on the CTO title.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;2. A Billion Outstanding Shares&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Most startups should have fewer than 50 million shares outstanding. If you get an option grant for a million shares and you're employee 25, something is funky. Maybe the CEO got his cousin from Omaha to be their lawyer or there's been some serious messing around with the cap table. Either way, it's a sign that something is amiss.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3. Lack of Technical Leadership&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In my definition, to call a company a tech startup, there must be some significant technology that gives you an advantage. Just using technology isn't enough (who doesn't have a website these days?) This means there MUST be a technical founder in a startup. If you're outsourcing the all the technical work, your company probably isn't a tech startup. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It follows that an "idea guy" who "just needs to hire a few engineers" probably isn't running a tech startup. If you're the first technical employee at a startup, you're either a founder or you're a sucker.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;4. A Large Number of Ex-Employees&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;With social networks like LinkedIn, it's easy to get a rough idea of how many people work at a given company. Of course, not everyone in the company is going to be on LinkedIn, but if a large number of people are &lt;span style="font-style: italic;"&gt;former&lt;/span&gt; employees this is a really bad sign for a startup as there probably aren't that many employees to begin with. Maybe there were layoffs, which isn't a great sign, but it probably indicates a serious retention (i.e. leadership) problem.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;5. An HR Department&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;After a certain point, all companies need someone in charge of hiring just to deal with screening, scheduling, and general process, but most startups don't fall into this bag. If the company in question is a 5 person shop and they have someone outside the core team calling you, there's something wrong. The founders or at least the hiring manager should be doing the bulk of the hiring early on - including phone screens. I think this applies up to about 50 people.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Recruiters are generally non-technical and aside from process-pushing offer little aside from their network of contacts. If you're just looking to have resumes keyword-scanned then maybe you should consider a basic mail filter. When budgets are tight this is one area you shouldn't feel bad about skimping on. Hiring is one of the main things a startup must get right, but contract recruiters aren't the way.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;I actually once had a very non-technical recruiter try to give me a technical interview (including coding) over the phone. That's a REALLY bad sign.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;6. Too Much Big Company Blood&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's an old joke about General Managers from a certain very large software company who think they've "built" a billion-dollar business who then fail spectacularly at starting a company when they no longer have that big company business card. Well, it's not a joke.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Startups require resourcefulness and a rolodex of enterprise customers isn't enough. People who are too far removed from doing actual work and haven't worn more than one hat are unlikely to be successful in an environment where this is a serious prerequisite.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm not saying that no one at a big company can succeed in a small company, but in my experience success is rarely transferrable between the two.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;7. Zero Transparency&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The interview is a try-out. It sets the stage for how things might work on a day-to-day basis. If your questions about funding, outstanding shares (save this for after the interview), and the general details about the company's plan go unanswered ("It's not our policy to disclose that" is the usual response), is there going to be any openness when you work there?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This one is pretty generally applicable to all hiring, but given the small size of a startup there can't be a lot of secrets and if the atmosphere is secretive to start with, how much worse will it be when the company is bigger? &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If it's your company, bear this strongly in mind. "Stealth-mode" is generally unecessary and more likely harmful to your startup (and calling it stealth-mode calls you out as a noob). You may not be ready to go &lt;a href="http://venturehacks.com/articles/opening-board-meetings"&gt;as far as some&lt;/a&gt; in how open your startup is, but consider what radical transparency can do for you.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;8. Marketing Stunts&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Startups need to be cash conscious. The ones that are spending money on large booths at conferences, television ads, or huge launch parties might be fun to work at, but they likely won't be around in 6 months too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;9. Too Much Money&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of the biggest threats to a startup is running out of money. But too much money can kill just as easily. VC-backed startups can find themselves in a position where there investors are trying to drive growth by pumping money into the company. Unfortunately this usually backfires.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The first thing that happens with too much money is too much hiring. You start hiring a lot of people in sales and marketing to drive revenue, and while you may still be hiring people to do real work, the weight from the top starts to push down on everything else. The focus on hiring can take away from the drive to get actual work done which means your company is going nowhere fast.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's easy to start losing discipline when the money is flowing around, so while that $50 million looked like a lot of money when you were 20 people, when you're 100 it's nothing. Consultants, free lunches, massages, and junkets expand to use it up.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;10. Lack of Focus&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When the CEO says "We're going to be bigger than Google!" and you can tell he really believes it, you should:&lt;/div&gt;&lt;div&gt;1. Kindly thank him for taking the time to speak with you.&lt;/div&gt;&lt;div&gt;2. Leave the building.&lt;/div&gt;&lt;div&gt;3. Never speak of this again.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's great to have a big vision and try to get others excited about it, but a startup really needs focus (What's the &lt;a href="http://startuplessonslearned.blogspot.com/2009/03/minimum-viable-product.html"&gt;minimum viable product&lt;/a&gt;?). You can't take over the world without building a few forts first. If company management won't even engage you in a realistic discussion of the challenges the company will face, it's going to be an uphill battle.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-498194063702098184?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/sCvY5spekqU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/498194063702098184/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=498194063702098184" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/498194063702098184?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/498194063702098184?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/sCvY5spekqU/10-startup-red-flags.html" title="10 Startup Red Flags" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/10/10-startup-red-flags.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIFQXc-eSp7ImA9WxVVEU4.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-6973807526640187542</id><published>2009-03-03T18:32:00.001-08:00</published><updated>2009-03-03T18:41:50.951-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-03T18:41:50.951-08:00</app:edited><title>Building Android from Source on a Mac</title><content type="html">I found this whole process to be pretty straightforward just following the instructions on the &lt;a href="http://source.android.com/download"&gt;Android source page&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The one problem I ran into was that I had installed a newer version of bison (2.4.1) using the &lt;a href="http://www.macports.org/"&gt;MacPorts&lt;/a&gt; &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;port&lt;/span&gt; command. This version of bison has &lt;a href="http://www.mail-archive.com/bug-bison%40gnu.org/msg01266.html"&gt;known problems&lt;/a&gt; building webkit, which is part of Android. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To work around this, I removed this version of bison (&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;port uninstall bison&lt;/span&gt;) and re-installed version 2.3 from source by downloading from the &lt;a href="http://ftp.gnu.org/gnu/bison/"&gt;bison ftp site&lt;/a&gt; (MacPorts doesn't support anything but the latest version of a port).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;With this change, everything worked just fine.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-6973807526640187542?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/H9nvUA1njSI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/6973807526640187542/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=6973807526640187542" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/6973807526640187542?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/6973807526640187542?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/H9nvUA1njSI/building-android-from-source-on-mac.html" title="Building Android from Source on a Mac" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2009/03/building-android-from-source-on-mac.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIMQX07eSp7ImA9WxVWFEw.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-2865234012170823998</id><published>2009-02-18T17:40:00.000-08:00</published><updated>2009-02-23T11:49:40.301-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-23T11:49:40.301-08:00</app:edited><title>Configuration Management Best Practices</title><content type="html">I've recently read a number of pieces (including this &lt;a href="http://www.conifersystems.com/?page=1"&gt;blog&lt;/a&gt;) that have reminded me how strongly I believe in the power of the right configuration management process to improve the efficiency and effectiveness of a software development team. I thought I would summarize some best practices that I think every development team should have in place.&lt;br /&gt;&lt;br /&gt;Configuration management is a pretty nebulous term and conjures up visions of gargantuan "enterprise-class" systems with their own team of administrators (ClearCase, anyone?). In my mind, configuration management is simply those tools and processes you use to build, distribute, and manage your code, including version control and continuous integration.&lt;br /&gt;&lt;br /&gt;What follows is my list of top best practices in this space. I'll leave further discussion for another time. These pretty much assume you already adhere to &lt;a href="http://www.joelonsoftware.com/articles/fog0000000043.html"&gt;The Joel Test&lt;/a&gt;, so this list can be seen as a more rigorous set of standards (a one-step build is a definite prerequisite). Some of these seem really obvious when written down, but I'm amazed how many teams don't do these things.&lt;br /&gt;&lt;br /&gt;1. Use an IDE-independent build tool (e.g. &lt;a href="http://www.scons.org/"&gt;SCons&lt;/a&gt;, &lt;a href="http://code.google.com/p/swtoolkit/"&gt;swtoolkit&lt;/a&gt;, but please not &lt;span style="font-style: italic;"&gt;make&lt;/span&gt;), unless you will never build on more than one platform.&lt;br /&gt;2. Consider building on more than one platform (compiler, architecture, OS) to improve code quality.&lt;br /&gt;3. Run continuous integration (build and test) on every commit.&lt;br /&gt;4. Keep build products and test results for every commit and make them easily accessible (indexed by revision number).&lt;br /&gt;5. Commit early, commit often.&lt;br /&gt;6. Limit commits to one functional change. (Don't fix multiple bugs unless they have the same fix.)&lt;br /&gt;7. Make it easy for developers to run cross-platform tests in advance of committing.&lt;br /&gt;8. Never commit untested code. (Shoot users of "git add --p" in the head.)&lt;br /&gt;9. Make fixing build breaks your second highest priority (behind fixing production breaks).&lt;br /&gt;10. For consistent builds across machines, keep all tools in your source repository (or at least make fetching them part of your build).&lt;br /&gt;&lt;br /&gt;What other practices do you stick to?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-2865234012170823998?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/PtXXj6GA278" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/2865234012170823998/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=2865234012170823998" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/2865234012170823998?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/2865234012170823998?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/PtXXj6GA278/configuration-management-best-practices.html" title="Configuration Management Best Practices" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://adamac.blogspot.com/2009/02/configuration-management-best-practices.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEBRn86eip7ImA9WxVQF00.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-1913574422152819758</id><published>2009-02-03T15:18:00.000-08:00</published><updated>2009-02-03T16:50:57.112-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-03T16:50:57.112-08:00</app:edited><title>Evolution Revolution</title><content type="html">The iPhone is a revolutionary mobile device - not because of the features it provides (other smartphones provided these many years earlier), but because of the level of seamless integration of these features into the first truly personal mobile computer. The experience provided by the iPhone is causing a revolution in user behavior, allowing them to consume information in new ways in new places.&lt;br /&gt;&lt;br /&gt;When the &lt;a href="http://www.palm.com/us/products/phones/pre/"&gt;Palm Pre&lt;/a&gt; was announced at CES, there was some excitement, but on its face, the Pre is really just another company's take on the iPhone. Physical differences aside, the biggest difference between the Pre and the iPhone is the programming model. While the iPhone sticks to the Mac's native application roots, the Pre's webOS will be programmed entirely using Javascript and CSS. The webOS SDK has not been released to the public yet, but a few features that will be exposed are HTML5 local storage and a JSON-based message bus.&lt;br /&gt;&lt;br /&gt;Javascript has been gaining more and more momentum across a wide range of application tiers from the web browser to the &lt;a href="http://www.mozilla.org/rhino/"&gt;server-side&lt;/a&gt; and now to the mobile device. This probably isn't because it's the best language in the world, but it is flexible and the existing platforms support easy interaction with webservices and the DOM. Though it's not clear that there are more Javascript developers than Objective-C developers, the barrier is lower for developing on this type of platform. The tools are readily available and concepts like pointers and memory management are nowhere to be found.&lt;br /&gt;&lt;br /&gt;Given the increasing number of platforms supporting Javascript + HTTP + HTML5, it's not inconceivable that "write-once, run anywhere" might come closer to fruition with this combo than Java ever achieved.&lt;br /&gt;&lt;br /&gt;Here's how this architecture plays out in my mind. Javascript is the core programming language. Using a HTTP transport and JSON data format, components in different processes can perform RPCs to one another. HTML5 features like local storage and the application cache allow for an offline story (the &lt;a href="http://ajaxian.com/archives/html5-features-in-latest-iphone-application-cache-and-database"&gt;latest build of Safari on iPhone&lt;/a&gt; supports this). And of course, HTML + CSS allows for a common UI platform.&lt;br /&gt;&lt;br /&gt;HTTP as a universal calling convention is pretty interesting. We already have tons of web services in the cloud using HTTP to communicate with one another - why not extend this to include local code talking with other components. The iPhone already supports a form of this &lt;a href="http://www.mobileorchard.com/apple-approved-iphone-inter-process-communication/"&gt;IPC using the URL handlers&lt;/a&gt;, basically turning your application into a web server.&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;a href="http://www.buglabs.net/"&gt;BugLabs&lt;/a&gt; exposes interfaces to its various embedded device modules through web services. It has even been suggested in the literature that &lt;a href="http://www.cs.washington.edu/education/courses/590n/00au/sullivan-saxena.pdf"&gt;every object could embed a web server&lt;/a&gt;. Why not use this mechanism for calling that object's methods?&lt;br /&gt;&lt;br /&gt;The benefits for such a system are great in terms of portability, dynamism, and interoperability. While there is certainly an overhead to it (a web server in every object???), performance is looking far less important than connectedness in today's web ecosystem. Sure, people aren't writing device drivers and high-performance games in Javascript, but most everything else is being attempted with good success.&lt;br /&gt;&lt;br /&gt;Javascript (count HTML and CSS if you like) is the only mobile code platform that has succeeded on a large scale. The ubiquity of such a de facto software platform could lead to the true component software revolution that has been talked about for years. It's already evolving on the web, but the next stop is the desktop and your mobile device.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-1913574422152819758?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/FQfdf5YUa6k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/1913574422152819758/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=1913574422152819758" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/1913574422152819758?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/1913574422152819758?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/FQfdf5YUa6k/evolution-revolution.html" title="Evolution Revolution" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2009/02/evolution-revolution.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEICRHg5eyp7ImA9WxVREks.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-1490217978636204526</id><published>2009-01-17T22:50:00.001-08:00</published><updated>2009-01-17T23:09:25.623-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-17T23:09:25.623-08:00</app:edited><title>Learning Objective-C</title><content type="html">Over the past year I've been working with the iPhone SDK on and off. It's a nice SDK which I won't get into the details of here, but for a good summary, check out this &lt;a href="http://www.urbanspoon.com/blog/34/iPhone-SDK-The-Review.html"&gt;post&lt;/a&gt;. The APIs and iPhone runtime are pretty straightforward, so one of the biggest hurdles for an experienced (non-Mac) programmer is learning Objective-C.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you first look at the language it appears to be some sort of "human-animal hybrid" formed from the mating of C++, Ruby and Perl. If you're a C++ programmer all of your experience applies, but the syntax is annoying and unnecessary (like Perl) and there's a sprinkling of Ruby-like dynamism. Once you get past these fundamental differences, it's a pretty enjoyable language to use.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are the resources I've found most useful for learning Objective-C.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://cocoadevcentral.com/d/learn_objectivec/"&gt;Cocoa Dev Central Tutorial&lt;/a&gt;. This is a good way to get started quickly and hits the important parts of Objective-C without burying you in detail.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://ktd.club.fr/programmation/fichiers/cpp-objc-en.pdf"&gt;From C++ to Objective-C&lt;/a&gt;. As the title suggests, this is great for real C++ programmers who want to understand Objective-C constructs in more depth with comparisons to C++.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/chapter_1_section_1.html"&gt;Introduction to The Objective-C Programming Language&lt;/a&gt;. Apple's Objective-C reference is more detailed and useful for understanding language arcana.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-1490217978636204526?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/JKsAIMhf27E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/1490217978636204526/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=1490217978636204526" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/1490217978636204526?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/1490217978636204526?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/JKsAIMhf27E/learning-objective-c.html" title="Learning Objective-C" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2009/01/learning-objective-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UMRH0-eCp7ImA9WxRSEEs.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-7030659576822749762</id><published>2008-09-08T21:15:00.000-07:00</published><updated>2008-09-10T09:48:05.350-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-09-10T09:48:05.350-07:00</app:edited><title>Chrome Goodies: SCons, Buildbot, and Skia</title><content type="html">&lt;div&gt;With a quick look I noticed that Google's new &lt;a href="http://www.google.com/chrome"&gt;Chrome&lt;/a&gt; browser uses &lt;a href="http://www.scons.org/"&gt;SCons&lt;/a&gt; as its build tool. This is great news! I've been a fan of SCons for quite a while and have used it on a number of projects. In my experience it's especially good for building native code in multiple configurations. I won't go into all of the benefits of SCons, but the fact that it's written in Python means scripting your build system is a breeze.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While SCons has been used by a number of open source projects out there and is supposedly used by some large software companies (VMWare, id Software) this is the most significant open source project using it. I've seen some Google engineers been lightly involved in the project in the past, so hopefully this will push further adoption. SCons is not without its issues, but it's head and shoulders above any other build tool I've used. Will this be one of the last nails in GNU make's coffin? I hope so.&lt;/div&gt;&lt;br /&gt;Chrome also uses &lt;a href="http://buildbot.net/"&gt;Buildbot&lt;/a&gt; (also written in Python) for its continuous integration system. Buildbot is another open source tool that I've used in the past and loved its easy configurability and extensibility.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also interesting to note is that Chrome's source code includes the &lt;a href="http://src.chromium.org/viewvc/chrome/trunk/src/skia/"&gt;Skia&lt;/a&gt; graphics engine. Skia was a company acquired by Google in 2005 and its SGL (Scalable Graphics Library, nee Skia Graphics Library) engine serves as the core of &lt;a href="http://code.google.com/android"&gt;Android&lt;/a&gt;'s rendering system. This is pretty exciting given that there isn't a great vector graphics toolkit out there that is open source and is suitable for embedded. Mike Reed, the founder of Skia, has built something like 4 graphics toolkit companies and sold them, so the code should be quality. At present, the Skia code looks to be built only for use in Chrome, but I imagine it will be released standalone at some point. Look for Skia to appear in more Google products such as Google TV in the near future.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-7030659576822749762?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/0KAlhnd41Ak" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/7030659576822749762/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=7030659576822749762" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/7030659576822749762?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/7030659576822749762?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/0KAlhnd41Ak/chrome-goodies-scons-buildbot-and-skia.html" title="Chrome Goodies: SCons, Buildbot, and Skia" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/09/chrome-goodies-scons-buildbot-and-skia.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQDQ3Y-eip7ImA9WxdaE0o.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-1481672157644674390</id><published>2008-07-23T12:57:00.000-07:00</published><updated>2008-08-21T19:32:52.852-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-21T19:32:52.852-07:00</app:edited><title>AtomDB - Oracle's response to Gears Mobile</title><content type="html">I just read about &lt;a href="http://weblog.cenriqueortiz.com/mobility/2008/07/23/atomdb-relational-data-management-system-for-mobile-web-applications/"&gt;AtomDB&lt;/a&gt;. This really sounds a lot like my &lt;a href="http://adamac.blogspot.com/2008/01/google-gears-feedsync-gearsync.html"&gt;GearSync&lt;/a&gt; proposal, but using Atom instead of Microsoft's FeedSync protocol (which I still haven't seen anyone using). The big difference from Gears appears to be the transparent model of data access.&lt;br /&gt;&lt;br /&gt;There's a detailed paper &lt;a href="http://csse.usc.edu/%7Emehta/Going%20far%20without%20the%20bars.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-1481672157644674390?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/mmSoM_f4HGo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/1481672157644674390/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=1481672157644674390" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/1481672157644674390?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/1481672157644674390?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/mmSoM_f4HGo/atomdb-oracles-response-to-gears-mobile.html" title="AtomDB - Oracle's response to Gears Mobile" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/07/atomdb-oracles-response-to-gears-mobile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8DQnk6eCp7ImA9WxdVFkg.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-3577702555621025053</id><published>2008-07-21T08:11:00.001-07:00</published><updated>2008-07-21T09:47:53.710-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-21T09:47:53.710-07:00</app:edited><title>The MobileMe Lockdown</title><content type="html">I love my new iPhone 3G. As far as I'm concerned, it's the best mobile device that's ever been built. But like &lt;a href="http://www.russellbeattie.com/blog/iphone-reconciliation"&gt;many people&lt;/a&gt;, I'm torn - the iPhone isn't an open device and there a few things that are difficult or impossible to do as a result.&lt;br /&gt;&lt;br /&gt;With my BlackBerry I simply installed the free Google Sync program in order to keep my calendar up to date over-the-air. Now with the iPhone, Exchange support works great, but if I want to do OTA sync thing without an Exchange server, I need to pay Apple $99/year for their MobileMe service. This feels like extortion, especially given that there can't be any alternative given Apple's &lt;a href="http://adamac.blogspot.com/2008/04/iphone-sdk-is-brew-part-deux.html"&gt;prohibition against background apps&lt;/a&gt;. Not only are other companies disallowed from building an app like MobileMe, Apple IS building such an app and charging users for it.&lt;br /&gt;&lt;br /&gt;For companies that provide seamless, real-time sync and upload like &lt;a href="http://www.ontela.com"&gt;Ontela&lt;/a&gt; and &lt;a href="http://www.dashwire.com"&gt;Dashwire&lt;/a&gt;, this is a non-starter - they will probably never build apps to run on the iPhone. Sync providers such as &lt;a href="http://www.funambol.com"&gt;Funambol&lt;/a&gt; have built manual-sync apps, but it's a stretch to say this is sync.&lt;br /&gt;&lt;br /&gt;The only real-time messaging on the iPhone is Apple's push mail and SMS, so IM apps are pretty much out of the question (though if you don't care about incoming messages, there are a number of options such as &lt;a href="http://googlemobile.blogspot.com/2008/07/google-talk-for-iphone.html"&gt;browser-based Google Talk&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;More important than the companies being locked out are the users who can't get access to their data. With MobileMe, for my $99, I get web-mobile-PC sync with a whole new set of applications to use, plus 20 GB of free online storage. The only problem is that I don't want new applications. I use Flickr, GMail, Facebook, Google Calendar, and other services whose data I want to access on my iPhone. With web access and SDK-based apps I can access this data through site-specific portals, but this isn't the same as syncing this data into the core apps on the phone. I can always fall back to cable-sync, but that's truly a step backwards.&lt;br /&gt;&lt;br /&gt;Apple has never used "compatible" or "open" rhetoric like Microsoft or Google, choosing instead to provide the end-to-end solution that "works". In this case, it's hard to see how MobileMe works for most people when it's not open enough to pull in data from my existing sources. In the PC era, MobileMe might have been good enough, but today it just feels like an anachronism.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-3577702555621025053?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/7uNimkC6w08" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/3577702555621025053/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=3577702555621025053" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/3577702555621025053?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/3577702555621025053?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/7uNimkC6w08/mobileme-lockdown.html" title="The MobileMe Lockdown" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/07/mobileme-lockdown.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4HSHg-fSp7ImA9WxdVEUU.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-5255558434573243407</id><published>2008-07-15T20:45:00.001-07:00</published><updated>2008-07-15T21:02:19.655-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-15T21:02:19.655-07:00</app:edited><title>Is Android the Next OS/2?</title><content type="html">Amid news that &lt;a href="http://feeds.moconews.net/~r/moconews/~3/335336171/"&gt;Apple sold over 1 million iPhone 3G&lt;/a&gt; over the weekend I just read that Android developers are &lt;a href="http://feeds.moconews.net/~r/moconews/~3/335336171/"&gt;miffed&lt;/a&gt; about the lack of an SDK update. Not only that, but it's not clear at this point when a device will actually ship with Android software. &lt;a href="http://adamac.blogspot.com/2007/12/wall-street-journal-on-android-sdk.html"&gt;I've mentioned&lt;/a&gt; in the past how the SDK was initially unpolished but I really thought it would improve pretty quickly with frequent updates.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Aside from a demo at &lt;a href="http://www.engadgetmobile.com/2008/05/28/google-demos-the-htc-dream-at-i-o-conference/"&gt;Google I/O&lt;/a&gt;, there's little indication of when the first Android device will ship. Unlike the iPhone which had firm ship dates announced and developers (web and SDK) clamoring to build apps before the hardware came out, Android is in a very different situation. I don't know &lt;span class="Apple-style-span" style="font-style: italic;"&gt;any&lt;/span&gt; mobile application companies that are building Android apps at this point, and I don't think they will until there are some firm announcements on real hardware. The &lt;a href="http://code.google.com/android/adc.html"&gt;Android Developer Challenge&lt;/a&gt; is full of hobbyists and desperate startups, not real companies looking to deploy their apps on an innovative platform.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Don't get me wrong, I would much rather program to Android's Java APIs and use some of its great features than have to deal programming Objective-C to get my app on the iPhone, but hey, the iPhone is rad and shipping now. Without shipping hardware Android is starting to look like the next &lt;a href="http://en.wikipedia.org/wiki/OS/2"&gt;OS/2&lt;/a&gt; - a lot of hype and little to show for it.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-5255558434573243407?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/yZm2k1ezvEI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/5255558434573243407/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=5255558434573243407" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/5255558434573243407?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/5255558434573243407?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/yZm2k1ezvEI/is-android-next-os2.html" title="Is Android the Next OS/2?" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/07/is-android-next-os2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cCQnk4fyp7ImA9WxdXGEU.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-5242921101250861180</id><published>2008-06-30T19:45:00.001-07:00</published><updated>2008-06-30T19:57:43.737-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-30T19:57:43.737-07:00</app:edited><title>Facebook Will Never Delete Your Photos</title><content type="html">...even if you tell them to. Really. This &lt;a href="http://beta.flowgram.com/f/p.html#2qi3k8eicrfgkv"&gt;presentation&lt;/a&gt; about Facebook's photo storage architecture details how deletes are performed by only deleting the metadata. James Hamilton has a good summary of the details &lt;a href="http://perspectives.mvdirona.com/2008/06/30/FacebookNeedleInAHaystackEfficientStorageOfBillionsOfPhotos.aspx"&gt;here&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;None of this should be too surprising if you know anything about consistency issues in distributed systems, but it's kinda funny to think about. For Facebook, it's way more trouble than it's worth in terms of protocol complexity to recover that space, and few people delete photos, so there's not much to gain anyway. No one should be able to access these files anymore, because without the metadata, there's no way to find the photos. But the data is still there. Those incriminating pictures that you thought you'd deleted could still be subpoenaed, though it would probably take Facebook &lt;span class="Apple-style-span" style="font-style: italic;"&gt;a long time&lt;/span&gt; to find your deleted photos in those 500+ TB without an index...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-5242921101250861180?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/u5ukHXFPTP8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/5242921101250861180/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=5242921101250861180" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/5242921101250861180?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/5242921101250861180?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/u5ukHXFPTP8/facebook-will-never-delete-your-photos.html" title="Facebook Will Never Delete Your Photos" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/06/facebook-will-never-delete-your-photos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAARHc8eip7ImA9WxdQFUg.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-3774911150053831117</id><published>2008-06-15T10:18:00.001-07:00</published><updated>2008-06-15T12:05:45.972-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-06-15T12:05:45.972-07:00</app:edited><title>Upcoming Gears Features</title><content type="html">Chris Prince discusses some of the upcoming features in Gears in this Google I/O &lt;a href="http://sites.google.com/site/io/improving-browsers-in-new-ways-gears"&gt;video&lt;/a&gt;. As I &lt;a href="http://adamac.blogspot.com/2008/05/yahoos-browserplus-versus-google-gears.html"&gt;discussed previously&lt;/a&gt;, Gears and BrowserPlus are both adding new features to the browser. The newest set of features discussed for Gears includes desktop notifications, a file chooser API, geolocation, resumable HTTP upload, and data blob support.&lt;br /&gt;&lt;br /&gt;Of these APIs, I'm most excited about notifications and geolocation (especially for mobile), but there's a lot to like here. At this point these features are in the prototype phase, so the source code may already be available in svn, but you won't be able to use them in your app quite yet. You can follow the Gears engineering efforts on the &lt;a href="http://groups.google.com/group/gears-eng"&gt;Gears Engineering Group&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you're especially interested in Gears, there are a few other Google I/O videos &lt;a href="http://sites.google.com/site/io/"&gt;here&lt;/a&gt;, including one on &lt;a href="http://sites.google.com/site/io/html5-brought-to-you-by-gears"&gt;standards&lt;/a&gt; and &lt;a href="http://sites.google.com/site/io/google-gears-for-mobile-power-up-your-mobile-web-app"&gt;mobile&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-3774911150053831117?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/SmTibg1YMSQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/3774911150053831117/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=3774911150053831117" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/3774911150053831117?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/3774911150053831117?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/SmTibg1YMSQ/upcoming-gears-features.html" title="Upcoming Gears Features" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/06/upcoming-gears-features.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAFQX8_fyp7ImA9WxdREUU.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-3065674856381333483</id><published>2008-05-30T15:30:00.000-07:00</published><updated>2008-05-30T15:31:50.147-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-30T15:31:50.147-07:00</app:edited><title>Aggregation and Annotation in the Social Web</title><content type="html">A big theme on the web over the last year or so has been aggregation. RSS readers (aggregators) have been around for a while, but the latest theme is aggregating your digital life. &lt;a href="http://www.friendfeed.com/"&gt;FriendFeed&lt;/a&gt; is getting a similar level of &lt;a href="http://www.techcrunch.com/2008/03/14/friendfeed-is-this-years-twitter-but-why/"&gt;buzz&lt;/a&gt; as Twitter, but &lt;a href="http://www.socialthing.com/"&gt;socialthing&lt;/a&gt;, &lt;a href="http://www.profilactic.com/"&gt;profilactic&lt;/a&gt;, &lt;a href="http://www.plaxo.com/"&gt;Plaxo&lt;/a&gt;, &lt;a href="http://www.iminta.com/"&gt;iminta&lt;/a&gt;, and of course &lt;a href="http://facebook.com/"&gt;Facebook&lt;/a&gt; all have some similar vibes. I co-founded a company last year called &lt;a href="http://www.mergelab.com/"&gt;MergeLab&lt;/a&gt; that ended up working in a similar space. These so-called "digital lifestyle aggregators" have been around in some form or another for a while, but none of them really seemed to catch on until now.&lt;br /&gt;&lt;br /&gt;The core idea here is that given the large number of web sites and services that people use, it's getting harder to keep track of all of this information, whether it's your personal information or that of your friends. At MergeLab, we called this "Open Facebook", since we allowed you to add data from Flickr, Twitter, Facebook, Amazon, etc. and view it in one location, though we were really referring to just the newsfeed part of Facebook. Facebook itself is moving in this direction with the ability to connect with other sites that publish information about your friends into your newsfeed.&lt;br /&gt;&lt;br /&gt;Unlike FriendFeed, MergeLab didn't require people to approve you as a friend - if you had access to some publicly available feeds, you could just subscribe to them. This meant that it didn't have the same viral characteristic as FriendFeed, but it did allow you to pay attention to, say, your mom's feed without having to convince her to subscribe to some new-fangled aggregation service.&lt;br /&gt;&lt;br /&gt;Some people claim that FriendFeed isn't about aggregation, but is about the conversations you can have about all of these activities from your people. Facebook has had some similar features for a while, though I think if you're into following the whole conversation, FriendFeed has a much cleaner model (ever tried following a thread of Facebook by jumping back and forth between wall posts?). Interestingly, Facebook's &lt;a href="http://www.new.facebook.com/"&gt;"new" layout&lt;/a&gt; puts the profile view front and center, but right now it appears to just include your personal feed items.&lt;br /&gt;&lt;br /&gt;Now, you might ask why we don't just use RSS here, after all, this is essentially the problem it was designed to solve. I think there are are few reasons.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Many sites don't want you to take your data with you to other sites as they see this as their crown jewels. Certainly this is true with Facebook as we've seen in their &lt;a href="http://mashable.com/2008/05/15/facebook-blocks-friend-connec/"&gt;tizzy&lt;/a&gt; with Google over &lt;a href="http://www.google.com/friendconnect/"&gt;Friend Connect&lt;/a&gt;, though there's also &lt;a href="http://www.techcrunch.com/2008/05/09/facebook-responds-to-myspace-with-facebook-connect/"&gt;Facebook Connect&lt;/a&gt;, which purportedly is all about &lt;a href="http://en.wikipedia.org/wiki/DataPortability"&gt;data portablility&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;A lot of these services don't expose RSS, either because their data is too "complicated" to be expressed in RSS, or they're just interested in trying to build a dependence on their API.&lt;/li&gt;&lt;li&gt;RSS is essentially one-way. Sure, you can use Atom or POST RSS in some cases, but it's not a widely deployed use like simple syndication is. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;So is it possible to have neutral parties implement aggregation services? It seems that the natural tendency for these services is to add value through annotation, sharing, and the like to increase stickiness and hopefully make money. &lt;a href="https://www.google.com/reader"&gt;Google Reader&lt;/a&gt; is doing this, for quite a large user benefit I believe. However, once the point of aggregation becomes a point of stickiness it also becomes a point of control and thus another potential constriction of the free flow of a user's data. So far very few companies have made any money on aggregation (RSS or social) so it will be interesting to see how this plays out. FriendFeed and Twitter don't appear to have any revenue yet and Facebook is making money, but very little in proportion to its valuation.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-3065674856381333483?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/5LLQ4CupTnw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/3065674856381333483/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=3065674856381333483" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/3065674856381333483?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/3065674856381333483?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/5LLQ4CupTnw/aggregation-and-annotation-in-social.html" title="Aggregation and Annotation in the Social Web" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/05/aggregation-and-annotation-in-social.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4BSH8_eCp7ImA9WxdREEo.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-4136327219334601945</id><published>2008-05-28T19:08:00.000-07:00</published><updated>2008-05-29T09:35:59.140-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-29T09:35:59.140-07:00</app:edited><title>Yahoo's BrowserPlus versus Google Gears</title><content type="html">Yahoo today unveiled a "Sneak Peek" of its core browser functionality extension called &lt;a href="http://browserplus.yahoo.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;BrowserPlus&lt;/span&gt;&lt;/a&gt;. Meanwhile a similar effort, Google Gears, was &lt;a href="http://googleblog.blogspot.com/2008/05/happy-birthday-google-gears.html"&gt;renamed to just "Gears"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;BrowserPlus&lt;/span&gt; is described as "desktop capabilities" for web apps, all of which are exposed through Javascript &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;APIs&lt;/span&gt;. The &lt;a href="http://browserplus.yahoo.com/services/"&gt;core services&lt;/a&gt; in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;BrowserPlus&lt;/span&gt; include some things that are really essential for bringing web apps to the desktop and a few that don't make much sense.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;DragAndDrop&lt;/span&gt; adds support for drag and drop between the browser and the desktop. Pretty cool. Notify displays notifications (toasts) using native window controls. This is very useful and relies on the &lt;a href="http://www.fullphat.net/"&gt;Snarl&lt;/a&gt; (Windows) or &lt;a href="http://growl.info/"&gt;Growl&lt;/a&gt; (Mac) notifiers being installed already. Snarl is a funny choice here since theoretically it's &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Growl's&lt;/span&gt; counterpart on Windows, but doesn't really have any applications using it as far as I can tell.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;RubyInterpreter&lt;/span&gt; allows you to write services in Ruby. Haven't tried this out, but it sounds like something you'll be able to do soon with Microsoft's &lt;a href="http://www.iunknown.com/2007/11/ironruby-on-sil.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Silverlight&lt;/span&gt; + &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;DLR&lt;/span&gt; + &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;IronRuby&lt;/span&gt;&lt;/a&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;TextToSpeech&lt;/span&gt; is novel but inessential. Look for more desktop-only features like this to be added in the future. There's also a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;FlickrUploader&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;IRCClient&lt;/span&gt; which don't seem like core services as much as one-offs. A number of other utilities are included such as Log, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;ImageAlter&lt;/span&gt;, and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;FileBrowser&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.json.org/JSONRequest.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;JSONRequest&lt;/span&gt;&lt;/a&gt; is the one piece of functionality that doesn't really have much to do with the desktop, but is useful for writing browser-based applications. I'm sure &lt;a href="http://www.crockford.com/"&gt;Douglas &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Crockford&lt;/span&gt;&lt;/a&gt; is to thank for this. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;JSONRequest&lt;/span&gt; allows to you avoid the problems of the &lt;a href="http://en.wikipedia.org/wiki/Same_origin_policy"&gt;Same Origin Policy&lt;/a&gt; without exposing you to the security issues of workarounds such as &lt;a href="http://ajaxian.com/archives/jsonp-json-with-padding"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;JSONP&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I tried out some of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;BrowserPlus&lt;/span&gt; demos and they seemed to work. I did see my browser (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Firefox&lt;/span&gt; 3 RC1) crash a few times in random contexts, so watch out.&lt;br /&gt;&lt;br /&gt;On the Google side of the fence, Gears was originally focused on offline (Database + &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;LocalServer&lt;/span&gt;) support, but has recently added some desktop functionality - the ability for a browser application to add icons to the desktop. Surprisingly, there is very little overlap between &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;BrowserPlus&lt;/span&gt; and Gears with the exception of local storage where Gears offers a more complete solution than &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;BrowserPlus&lt;/span&gt;' &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;PStore&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The one feature I haven't mentioned so far is Gears' &lt;a href="http://code.google.com/apis/gears/api_workerpool.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;WorkerPool&lt;/span&gt;&lt;/a&gt; which allows Javascript code to run in the background. This really just means there's now a thread pool in the browser that allows you to queue up tasks. This isn't the same sort of "background" that comes to mind for me, like Apple's &lt;a href="http://adamac.blogspot.com/2008/04/iphone-sdk-is-brew-part-deux.html"&gt;lack of background support in the iPhone &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;SDK&lt;/span&gt;&lt;/a&gt;, but it still seems pretty useful. There are a lot of security implications to having true Javascript background applications in the sense I'm talking about, but I'm sure we'll see this in Gears or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;BrowserPlus&lt;/span&gt; sometime soon. With this feature enabled, there's little reason to use any other desktop app model - combined with the Notify feature described above, you can build a traditional &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;IM&lt;/span&gt; application (one of the few desktop apps I still use).&lt;br /&gt;&lt;br /&gt;Overall this space is looking pretty exciting. &lt;a href="http://www.adobe.com/products/air/"&gt;Adobe AIR&lt;/a&gt; is taking web applications onto the desktop, while Gears and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;BrowserPlus&lt;/span&gt; are melding the browser and the desktop and generally making the browser a better development environment. I don't think it will be long before all application code (for the desktop, anyway) is written in Javascript!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-4136327219334601945?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/Ps4RlYZEUPc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/4136327219334601945/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=4136327219334601945" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/4136327219334601945?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/4136327219334601945?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/Ps4RlYZEUPc/yahoos-browserplus-versus-google-gears.html" title="Yahoo's BrowserPlus versus Google Gears" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/05/yahoos-browserplus-versus-google-gears.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8AQnY9cSp7ImA9WxdTGE8.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-3491614696969114287</id><published>2008-05-14T21:04:00.000-07:00</published><updated>2008-05-14T21:14:03.869-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-05-14T21:14:03.869-07:00</app:edited><title>Android's Multicast Support is Broken</title><content type="html">I discovered this for myself when attempting to do some home networking-related programming (UPnP/DLNA, mDNS/Bonjour all rely on multicast). Multicast sockets in Android simply don't work. You can read the full description of the issue &lt;a href="http://code.google.com/p/android/issues/detail?id=15"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I was pretty surprised to see this, especially given that the underlying OS (Linux) definitely supports it. I guess it's understandable that the primary focus is on cellular networking at this point, but if Android devices have Wi-Fi, this is a huge omission. Given the iPhone's strong connection to the digital home, you can bet Apple isn't making it a low priority - in fact a number of &lt;a href="http://arstechnica.com/journals/apple.ars/2007/10/24/bonjour-on-iphone-facilitates-direct-file-transfers"&gt;applications&lt;/a&gt; have been built using Bonjour for the iPhone already, even before it was officially supported in the SDK.&lt;br /&gt;&lt;br /&gt;So yeah, this is my excuse for not submitting anything to the Android Developer Challenge...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-3491614696969114287?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/68cAl0R9vLo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/3491614696969114287/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=3491614696969114287" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/3491614696969114287?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/3491614696969114287?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/68cAl0R9vLo/androids-multicast-support-is-broken.html" title="Android's Multicast Support is Broken" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/05/androids-multicast-support-is-broken.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMCR3w5cSp7ImA9WxZaE0k.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-6808699942806753156</id><published>2008-04-27T16:52:00.000-07:00</published><updated>2008-04-27T17:27:46.229-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-27T17:27:46.229-07:00</app:edited><title>Don't You Dare Ask for My Mobile Password More Than Once!</title><content type="html">As more apps go mobile, the potential for the abuse of those apps' users grows. One of my biggest pet peeves in this regard is mobile apps that assume it's just as easy to enter your credentials on your phone as it is on your PC. This is a huge error in judgement as the mobile user experience is already fragile and throwing up barriers risks alienating some very tenuous connections. I'm probably more patient and savvy than your average mobile user and this just kills me.&lt;br /&gt;&lt;br /&gt;With the current de facto web standard of email/password, there's quite a bit of typing to do (even if you're on an iPhone!). This doesn't bother me that much, but I'm grateful to those apps that pre-populate the user/phone field or otherwise are considerate of the fact that I am on a mobile device. What does really burn me is apps that are frequently asking me to re-enter my password or don't save text that I've typed in the past.&lt;br /&gt;&lt;br /&gt;An early version of the J2ME GMail Mobile app would ask for my password whenever communication with the server failed. (No this isn't an authentication failure, it's a network failure!). Another problem was that the entered password wasn't persisted until I explicitly exited the app, which I never did. This meant I had to re-enter my password whenever I powered my phone off and on. I don't think either of these were bugs as much as they were design issues that neglected to focus on the users' intentions. At this point, it seems like GMail Mobile is content to have you just enter your password once.&lt;br /&gt;&lt;br /&gt;Last time I used it, GMail's mobile web interface had the same policy as the regular web interface - a successful login drops a cookie on your browser that expires in 2 weeks. This means that every 2 weeks I have to type in my full password on my tiny little mobile keypad. Multiply this by the number of mobile apps you use and you have a recipe for a very frustrated user.&lt;br /&gt;&lt;br /&gt;On the other side of this, because mobile phones are arguable more personal and less secure than PCs, maybe app designers should be forcing more frequent authentication. How many times have you or a friend lost a phone on the bus, had it drop out of a pocket, or otherwise enabled the possibility that it falls into the hands of someone who decides to use it to access your personal information?&lt;br /&gt;&lt;br /&gt;Maybe the best solution here is just to add a password lock to your phone and make sure it works out of the box. Sooner or later, people will get the message that your mobile phone is the best vehicle yet for identity theft and will put up with typing in a 4-digit unlock code. (Better yet, the next version of the iPhone should add a fingerprint scanner for use with the existing slide-to-unlock feature.)&lt;br /&gt;&lt;br /&gt;In the meantime, please be considerate of your mobile users and design with these issues in mind!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-6808699942806753156?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/yE1CLWEvl1M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/6808699942806753156/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=6808699942806753156" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/6808699942806753156?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/6808699942806753156?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/yE1CLWEvl1M/dont-you-dare-ask-for-my-mobile.html" title="Don't You Dare Ask for My Mobile Password More Than Once!" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>2</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/04/dont-you-dare-ask-for-my-mobile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUCRno9eCp7ImA9WxZaE0k.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-7243325735409645932</id><published>2008-04-26T13:10:00.000-07:00</published><updated>2008-04-27T16:51:07.460-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-27T16:51:07.460-07:00</app:edited><title>The iPhone SDK is BREW Part Deux</title><content type="html">There should be little doubt in anyone's mind that the  &lt;a href="http://developer.apple.com/iphone/"&gt;iPhone Store&lt;/a&gt; is a walled garden, albeit a very shiny and new walled garden. The SDK has been out for a while now, and &lt;a href="http://whydoeseverythingsuck.com/2008/03/apples-iphone-sdk-prohibits-real-mobile.html"&gt;people have figured out&lt;/a&gt; that there a lot of things you just can't do with it. The most obvious limitation is that Apple forbids applications that run in the background.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While there are obvious reasons for prohibiting these applications (security, battery life, performance, user experience), none of these reasons are very good. &lt;a href="http://www.fring.com/"&gt;Fring&lt;/a&gt; actually resorted to &lt;a href="http://www.fring.com/iphone/"&gt;releasing an app for Jailbroken iPhones&lt;/a&gt;, but you can bet this won't be available through the iPhone Store anytime soon.  My own opinion is that Apple is not only protecting the iPhone's user experience, but also plans to add a lot of these interesting features in the future (VoIP, MMS, IM, etc.), and doesn't want third-parties to get in the way (unless Apple has a deal with them).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I stand by my first-blush statement that the iPhone SDK is more polished and professional than the Android SDK. If you're looking to build a game or a way to access your interactive web app, you'll be very happy. However, if you want to build an innovative new category of application that relies on background processing, you're out of luck - you should go with Android, Windows Mobile, Symbian, or maybe (gasp!) even BREW.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Background applications are easy to build in BREW, which might make you think that BREW is more open than the iPhone. As long as you get the permission of Qualcomm and the carrier you want to deploy on, these applications are allowed. On the other hand, the BREW APIs are clunky and feel like they were designed by hardware engineers, while Apple's APIs are well reasoned, aside from being tied to Objective-C. (I don't have anything against hardware engineers, I just don't think they should be writing software.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The irony here is that of the current distribution models, the iPhone Store most closely resembles the BREW model, though BREW is much more closed. BREW has more, higher fees (registration, testing, etc.), while Apple has just a $99 or $299 developer fee. Apple gives the developer 70% of the retail price, while with BREW the revenue share is a complicated dance. Overall, the iPhone store should be a boon for developers compared to previous distribution models. While it's not as open as pure web-based deployment it does have the benefit of handling billing and putting your application in a common catalog where it should be easy to find.&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-7243325735409645932?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/vK4acLAsxZ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/7243325735409645932/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=7243325735409645932" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/7243325735409645932?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/7243325735409645932?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/vK4acLAsxZ0/iphone-sdk-is-brew-part-deux.html" title="The iPhone SDK is BREW Part Deux" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/04/iphone-sdk-is-brew-part-deux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4BSXc7eyp7ImA9WxZaFE8.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-5443151366452012246</id><published>2008-04-23T21:19:00.000-07:00</published><updated>2008-04-28T17:12:38.903-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-04-28T17:12:38.903-07:00</app:edited><title>Will New E-Ink Controller Lead to Less Sucky Kindles?</title><content type="html">&lt;a href="http://www.eink.com/"&gt;E-Ink&lt;/a&gt; is a unique display technology that relies on reflectivity rather than backlighting like LCDs. While the technology has been in development for more than a decade, its adoption has been slow due to production issues and its Achilles' heel: slow refresh rate (500-1000 milliseconds).  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Refresh rate and flashing has hindered E-Ink's use in highly interactive applications to date. In my opinion, &lt;a href="http://www.amazon.com/kindle"&gt;Amazon's Kindle&lt;/a&gt; is unusable due to the interface kludges perpetrated on the design in an attempt to work around these issues (though there are a lot of unrelated design flaws as well). &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A &lt;a href="http://www.eetimes.com/showArticle.jhtml;jsessionid=HCRRRHDNTJPZWQSNDLPCKH0CJUNN2JVN?articleID=207400055"&gt;new version&lt;/a&gt; of the E-Ink display controller is claimed to have refresh rates similar to those of an LCD (15 milliseconds or 66 frames per second). If these claims hold true we should see new versions of the Kindle and other reading devices with vastly improved usability. Add color and E-Ink might be able to compete with LCDs someday.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-5443151366452012246?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/GlAH7YWRYdY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/5443151366452012246/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=5443151366452012246" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/5443151366452012246?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/5443151366452012246?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/GlAH7YWRYdY/will-new-e-ink-controller-lead-to-less.html" title="Will New E-Ink Controller Lead to Less Sucky Kindles?" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/04/will-new-e-ink-controller-lead-to-less.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MDRX88fSp7ImA9WxZXGUw.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-2125021979209661587</id><published>2008-03-06T20:46:00.000-08:00</published><updated>2008-03-07T10:44:34.175-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-07T10:44:34.175-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="http://www.blogger.com/img/gl.link.gif" /><title>The New Mobile Fragmentation</title><content type="html">The past few days have seen some pretty big announcements in the mobile platform space.&lt;br /&gt;&lt;br /&gt;Nokia is &lt;a href="http://feeds.feedburner.com/~r/Techcrunch/~3/245631185/"&gt;putting&lt;/a&gt; Microsoft's &lt;a href="http://www.google.com/url?sa=t&amp;amp;ct=res&amp;amp;cd=2&amp;amp;url=http%3A%2F%2Fsilverlight.net%2F&amp;amp;ei=dcvQR_eOMZCEpASBgaWBBQ&amp;amp;usg=AFQjCNEf21KHcLcFdVhG-T9tmTzP6Np3fg&amp;amp;sig2=r0UzrCayZ7OMeQix2VJt7A"&gt;Silverlight&lt;/a&gt; on S60 and S40 phones.&lt;br /&gt;&lt;br /&gt;Google &lt;a href="http://feeds.feedburner.com/~r/Techcrunch/~3/245315668/"&gt;announced&lt;/a&gt; its first mobile port of Gears - to Windows Mobile.&lt;br /&gt;&lt;br /&gt;Steve Jobs &lt;a href="http://feeds.feedburner.com/~r/Techcrunch/~3/246310226/"&gt;rejected&lt;/a&gt; Adobe Flash as being too slow for the iPhone.&lt;br /&gt;&lt;br /&gt;Today Apple released the &lt;a href="http://developer.apple.com/iphone/index.action"&gt;iPhone SDK&lt;/a&gt;. (My first impression is that it has a much higher degree of quality and completeness than the Android SDK, but I'll withhold a full judgment to another day.)&lt;br /&gt;&lt;br /&gt;Then of course there's &lt;a href="http://mobile.yahoo.com/developers"&gt;Yahoo Go 3.0&lt;/a&gt;, &lt;a href="http://code.google.com/android/"&gt;Google Android&lt;/a&gt;, and some other lesser comers as well. What all this points to is even greater fragmentation than the mobile space has seen in the past. Of course there will be a shakeout eventually, but over the next few years there will be a lot of options for mobile developers. Choosing which platform to develop for will be even tougher than in the past since these new platforms offer a broader variety of approaches - web-based + offline, declarative + script-based, Java-based. On the upside, this should make it much easier to get apps deployed onto &lt;span style="FONT-STYLE: italic"&gt;some&lt;/span&gt; phone. On the downside, with all of these options, J2ME fragmentation is nothing compared to what's coming.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-2125021979209661587?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/jNl_TFpt67Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/2125021979209661587/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=2125021979209661587" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/2125021979209661587?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/2125021979209661587?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/jNl_TFpt67Q/new-mobile-fragmentation.html" title="The New Mobile Fragmentation" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/03/new-mobile-fragmentation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcDSHc6cSp7ImA9WxZRF0o.&quot;"><id>tag:blogger.com,1999:blog-11218519.post-1418720068033179950</id><published>2008-02-11T12:51:00.000-08:00</published><updated>2008-02-11T16:27:59.919-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-02-11T16:27:59.919-08:00</app:edited><title>Modu Unveiled</title><content type="html">After an interesting teaser video a few weeks ago, &lt;a href="http://modumobile.com/"&gt;Modu Mobile&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/%7Er/Techcrunch/%7E3/231124430/"&gt;has unveiled itself&lt;/a&gt;. The basic idea here is that a Modu device forms the core of a mobile phone and can thus be swapped into new devices as the user desires. This is somewhat reminiscent of the &lt;a href="http://www.linuxdevices.com/news/NS2319525658.html"&gt;Wildseed SmartSkins&lt;/a&gt; platform except that it slims down the core to a tiny credit-card sized device that can fit inside many different form factors.&lt;br /&gt;&lt;br /&gt;I think Modu has a chance at gaining some acceptance by phone OEMs/ODMs as a way to reduce development times and certifications costs. It also neatly solves the phone upgrade data-migration problem which so many people have now. Of course, there's probably a limit to how many times you can upgrade the carrying device before the Modu core becomes functionally outdated.&lt;br /&gt;&lt;br /&gt;The teaser video intimated that you would be able to slide Modu into other devices like cameras, cars, and media players, thus personalizing that device with your data and wireless connections. I think this is a neat idea, but an impractical one. The first problem is usability as it implies that a user will be swapping the Modu core in and out among a number of devices. This seems awkward and neglects those scenarios in which two devices are active at once. The second problem is getting device manufacturers to commit to building this hardware interface into their products. Unless you're a brand like Apple (and are able to convince these OEMs to ignore the fact that you're competing with them), this is a tough sell.&lt;br /&gt;&lt;br /&gt;There are two core ideas at work in Modu, both focused on personalizing devices that you use. Data personalization makes your personal data available on any device. Companies such as &lt;a href="http://www.demo.com/demonstrators/demo2005fall/55060.html"&gt;Realm Systems&lt;/a&gt; have built &lt;span style="font-style: italic;"&gt;personal server&lt;/span&gt; devices with this core idea in mind. Network personalization is at the core of the &lt;span style="font-style: italic;"&gt;personal router&lt;/span&gt; - &lt;a href="http://pr.lcs.mit.edu/"&gt;a great idea&lt;/a&gt; whose time has yet to arrive, though if you've ever tethered your laptop to your mobile phone using Bluetooth you've got the basic idea.&lt;br /&gt;&lt;br /&gt;I believe personalization is incredibly important for the coming age of consumer computing which is moving away from the PC and towards the mobile device. People will use a full-featured mobile device for most of their daily communication and information retrieval operations. Other devices will become task- or location-specific adjuncts throughout the course of the day. If you need to compose a document, sit at a workstation "PC". If you want to enjoy viewing friends' movies and photos, lounge in front of the home theater system. When you're in the car, your content should be available at your fingertips without thinking too much about it.&lt;br /&gt;&lt;br /&gt;A lot of this personalization is already being delivered today through the web, but as the range of devices and interactions becomes broader today's web looks less viable in this world (How do you present an HTML page on a device that has no display?)&lt;br /&gt;&lt;br /&gt;I have some strong opinions about how such a (software-based) personalization system will operate. If you're an investor or entrepreneur that thinks this space is as compelling as I do, ping me and let's chat.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/11218519-1418720068033179950?l=adamac.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/AdamacAttack/~4/Qc1P_WKUihs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://adamac.blogspot.com/feeds/1418720068033179950/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=11218519&amp;postID=1418720068033179950" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/1418720068033179950?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/11218519/posts/default/1418720068033179950?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AdamacAttack/~3/Qc1P_WKUihs/modu-unveiled.html" title="Modu Unveiled" /><author><name>Adam MacBeth</name><uri>http://www.blogger.com/profile/03213569164377319861</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://adamac.blogspot.com/2008/02/modu-unveiled.html</feedburner:origLink></entry></feed>

