Thursday, April 9, 2009

The Coming Apocalypse of your "Friends"

What's a friend on MySpace, Facebook, and Orkut?  If you have five hundred friends, are they really friends?  These are the main reasons why I have not, to this point, joined any of those sites.  I don't have many friends, because I just can't give a lot of people the energy needed to maintain a true, lasting friendship.

What does this have to do with technology?  Well, Facebook Connect and Google FriendConnect are two apis, with many more to come, that allow you to take your social graph with you.  So now, instead of just being a bunch of people that post something they copy and pasted onto your "wall" at major holidays, they are now people who are going to affect recommendations you get on other websites.

Tell me, do you want five hundred of your "closest" friends opinions, tastes, and web surfing habits to have a direct effect on your web experience?

Friday, April 3, 2009

Web 2.0 Expo Day 2

This morning started with keynotes, though there didn't seem to be a theme beyond "here is who we could get to come and talk." The sole exception was the very first speaker, Douglas Rushkoff, was fantastic.  I'm really excited about his new book, Life Inc.  His main theses were that corporations were not created to allow competition and artificial currency was not

Nokia's CEO showed us his vision for ten years from now.  Wearable computers?  Wow, now that's innovative.  He got off on some weird metaphysical rant about projecting our consciousness into the 'net.  What he really means is a constant data stream of my location, mood, and random thoughts.  The only interesting thing he mentioned was geolocation through photography.  I really feel like that is an idea whose time has come.

Next I attended a session that discussed the relative merits of building directly for the iPhone or the web, and the conclusion was use PhoneGap to do both.  it had some interesting points in making the case to stay web-based, but none of them were very convincing.  He attacked the following five arguments for going native:

  • Performance--the recent "fast javascript" movement combined with paring down the page bloat that has occurred in recent years
  • Offline Usage--there is HTML 5 (and thus embedded mySQL support) in iPhone since v2.0
  • Findability--there are now 25K+ apps in the AppStore
  • Device Capabilities (GPS, camera, accelerometer, etc.)--the GPS capabilities are "opening up", and PhoneGap let's you go native
  • Monetization--4% of devices get turned down, people use iPhone apps like tissue paper, you have to sell your app for $0.99 to get any traction

Some valid points there, but it's ironic that the solution proffered is to start web-based and enhance to native.

Microsoft Bizspark were the underwriters for Launch Pad at Web 2.0 Expo.  There were five companies who presented:

Honestly, I wish I had gone to a different session.  I already knew about PhoneGap from the ten other times it was mentioned this week.  What they are doing at 80legs is really cool, but I'm not sure about its applicability.  They've made something that is really hard to do really cheap, but they've not made it easy.  That is, you still have to write Java code.  I'm more excited about what people are doing with it, a sure sign of a platform play.  I hope they get acquired and rewarded for their hard work.  One last thing, there was maybe a hundred people in the room.  Maybe.

I went to a talk from the guys at EngineYard.  Pretty good talk, but really centered on the implications of systems management in the could-era.  I really enjoyed the talk, pretty fun.  The gave it in this paired presenter style where one would pick up where the other left off.  Nothing terrible prescient or relevant to me, but they host a lot of really awesome new companies, like github.

Wednesday, April 1, 2009

Werner Vogels

Super cool guy.  He's one of those super geeks that's past the point where he feels it necessary to get dragged into details but is totally upbeat.  It's good to be the king, right?  Perhaps my biggest surprise was to learn just how much Amazon views itself as a technology company.  Amazon's retail experience is just a customer of AWS.  Riiiight.  I find that hard to believe, but he claims that Amazon.com the retail site is not even the biggest customer of AWS.  Whoa.

My big takeaway from his talk and comments afterward is that only companies that really, really must scale to incredible extremes should build their applications for AWS, i.e. bake in use of SimpleDB, SQS, etc.  What he said to me was, "run your Linux infrastructure on EC2 so you can leave if you don't like us."  So, really, build great SOA systems and use AWS as a virtualization provider.  He had a lot of great principles in his talk for building scalable systems, including:

Autonomy
individual components make decisions only based on local information
Asynchrony
Make progress under all circumstances
Controlled Concurrency
operations are designed such that limmited or no concurrency control is required
Controlled Parallelism
use fully decentralized (p2p) techniques to remove bottlenecks
Decentralize
Remove dependencies
Decompose
Break up into more granular services
Failure Tolerant
Failure is a normal part of operation
Local Responsibility for Consistency
Similar to Autonomy, don't look elsewhere for consistent state
Simplicity
pare away functionality until you cannot
Symmetry
all nodes can do any function in the system

Some other interesting bits were that the Amazon Homepage is produced by 200-300 services. Every service at Amazon is developed and operated by the same team. There are about 500-600 services/teams. Elasticity is both shrinking AND growing on demand.

Geolocation: The new W3C API

A thought leader in geolocation from the company that created Loki gave a talk about geolocation on the web.  His first recommendation was to build your applications to adopt latitude and longitude as the basic unit of location.  He then went on to talk about all the other ways location can be represented.  For example, the names of business, location descriptions, planar areas (rather than points) on a map, etc.  These are generally much more welcome in the UX than map coordinates.

Some ways of getting local businesses are:

  • Yahoo! Local Search API
  • Yelp
  • Localeze

The skinny on geolocation for the web right now is that it relies on browser plug-ins or extensions.  The nice thing is that a W3C working group put together a standard for accessing the geolocation capabilities of the browser from Javascript.  It's quite easy to use, if not widely available.

One interesting stat is the precision one can expect from the various means of geolocation.

  • GPS can be accurate to within 10m for commercial applications
  • Wifi (database lookup and triangulation from SSIDs and signal strength) can be as good as 20m up to 80m
  • Cell towers are up around 1000m
  • IP address based schemes are wildly inaccurate and limited to city/region precision

Loki.com/how and Google Gears utilize hybrid approaches to do geolocation, obviously, to balance speed of acquisition, device capability, desire precision, etc.

Web Developer Tools from Web 2.0

This was by far the best presentation I saw today.  A couple of Mozilla guys gave this great talk really about the past, present, and future of the web developer experience.  I'm really buzzed about the near future of HTML 5, "fast javascript", and the "web worker" model, enabling the kind of interactivity available on desktop applications.

The introduced a lot of tools, mostly around Firebug and its extensions.  I wasn't familiar with the unit testing stuff in that space: Code Coverage and FireUnit.  Some of the more interesting tools were the CSS tools: YUI CSS Grid Builder, blueprint, and the recently announced Microsoft SuperPreview.

They also mentioned some "future" tools like Bespin and Thunderhead.  Bespin is wonderful, a source code editor on the web, with concurrent-versioning system support (git now and later SVN?).  I really feel like this is boostrapping the web, you can begin to think of creating the web ON the web.  Avi Bryant has already plugged Seaside into Bespin.  Thunderhead is a prototype for marrying grid-layouts with the HTML 5 canvas.  They are talking about doing an "Open Tools Directory".

One thing they mentioned that was only tagentially related to their talk was PhoneGap.  This let's HTML/Javascript developers create native mobile phone applications (iPhone, Android, and Blackberrry are supported to different extents at this time).  Atlas, which let's you write native Cocoa (Mac OS) applications in Javascript (their Objective J) was given an excited nod, too.

Why Scala?

I'm trying to catch up with blogging about the sessions I've attended this first day of the Web 2.0 Expo.  The second session I attended today was entitled, "Why Scala?" Presented by a fellow from Twitter, it was essentially a discussion on their adoption of Scala from their initial appraisal of the technology landscape through the pilot project successes to their company-wide embrace of Scala.

Despite not having any major investment in Java code, the JVM platform gave them access to the myriad Java libraries already out there, as well as the ability to do things like hydrate JSON as a JVM object and reason about it naturally within Scala.  Given that they were looking for a language with a great concurrency story, this appears to be the number one reason for choosing Scala, that it is a JVM language written by people who really understand the JVM internals.  Some of the other reasons put forth were:

  • Actor model--like Erlang the primary programming paradigm of Scala is independent workers that share no state and pass messages
  • Immutability--with built-in immutable data structures and the Actor model, Scala heavily encourages immutability, but doesn't force it, meaning you can take advantage of mutability when it is more expressive or performant
  • Type inference--yay, strong typing AND pretty code
  • First-class functions
  • Traits--not real clear on what this is, I think the Erlang/OTP equivalent would be behaviors
  • Pattern matching--this is similar to what Erlang does, but isn't limited to tuples or other terms, i.e. you can match objects
  • XML Literals & Query methods baked into the language
  • Case Classes--these sound like structs, maybe message types?

The "bad" thing about Scala is that it forces you to learn a bit more about the JVM than perhaps you were inclined to learn, and it is very complex.  There seems to be quite a community evolving around Scala, and the mainstreaam web framework is called Lift.

Identity Wars and Joseph Smarr

I remember Mr. Smarr's talk about OpenID and OAuth from a couple of years ago.  I got the impression that his biggest fear was that Facebook would always be a walled garden.  For reasons I don't quite understand, perhaps a sort of social consciousness (no pun intended), Facebook has opened their platform up, albeit in a limited and proprietary way.

Fortunately, there are companies like Google and JanRain who are hiding the differences between the Open Stack and Facebook's APIs.  First, let's have a look at the Open Stack proper.

JanRain has RPX, and Google has FriendConnect, so using the OpenID/OAuth stuff is easy without really knowing a lot.  What is needed is a way to marry the existing authentication stacks of all the common web platforms (ASP.NET, PHP, etc.) with the Open Stack, I think.

For more information, here are some blogs:

  • TheSocialWeb.tv
  • JosephSmarr.com
  • TheRealMcCrea.com

SEO: From Soup to Nuts--Web 2.0 Expo Workshop

It's workshop day in the first and only pre-conference day of Web 2.0 Expo San Francisco.  Among the first sessions of the day, I opted to attend the presentation given by Stephan Spencer of Netconcepts: "SEO: From Soup to Nuts."

His presentation was organized around his "three pillars of SEO": Content, Architecture, and Links.  His SEO practice is very data driven as evidenced by his egregious use of statistics.  Among the highlights of those statistics:

  • 1.25 to 1.5 times more conversions to PPC versus "natural" (normal search result click-through)
  • 86% of search engine clicks are natural
  • 47% click-through on first Google result falls to 10% on second, and half of the first natural for the first paid
  • Double click through rate for short URLs according to Marketing Sherpa

It definitely isn't all about statistics in the SEO game, though.  In fact, it seemed as if getting hard data about efficacy was the biggest and enduring challenge.  There are some hard-and-fast techniques to employ, thankfully.  Page titles, using 301s, nofollow links, canonical tags, there should be only one url for any given content, etc., as well as some great tools (both free and pay) including:

  • SEOmoz.org's LinkScape
  • SEObrowser.com
  • Google Web Optimizer
  • SIFR
  • Adobe Search Engine SDK
  • Yahoo! Site Explorer

There were also a lot of surprises, at least to me:

  • Search result rankings can vary from city to city (of searcher)
  • Underscores do not count as word separators to Google
  • YouTube doesn't give link juice (nofollow)
  • Digg users do not buy anything
  • User generated content can get you so-called "long tail terms"

eyetrackingseoOne thing I wondered, looking at this image that shows the distribution of eye movement on the Google results page, is what are people actually looking for one Google.  They aren't looking for knowledge, but information, a gateway to knowledge, perhaps.