More Notes from AtMedia 2008 - Jonathon Snook's Presentation
More notes - badly spelled, typed live and posted immediately, without apology. Buckle your seats, here we go...
"Building On The Shoulder Of Giants" by Jonathon Snook
We're talking about APIs, mashups - building with other people's stuff - we don't want to kep on building the same stuff.
About me first: I did these things:
mymilemarker.com, django-plugables, an AIR wrapper for twitter, overheard.it
The Culture - what kind of ppl developers are
developers like to reinvent the wheel - look at the linux distro timeline - see how many branches! Another example - the # of lightbox scripts that are out there.
Designers on the other hand, like to re-use.
They use the same fonts from project from project to project - they rely on this framework of tuff- they know what works and build on top of that - developers need to borrow some of that outlook.
Tools
Ruby ON Rails, Django, PHP, CakePHP, CodeIgniter, Zend Framework.
You can take nay of these frameworks and build apps wuickly and easily.
JS Libs:
jQuery, Proottype (i think it popularised the idea that we can have a JS library and that being a good thing).
ExtJS - a good JS lib, complex and thorough, and they've really thought thru the UI.
CSS
Meyer Reset - a great example of a baseline we can build on top of tat
YUI Grids
Blueprint - a really great idea of a baseline CSS that handles base grids, base fonts dna the basic styles for forms, labels and image layouts. 960.gs - a base for the 960px wide layout. Is supplied with photoshop layouts.
Platforms:
Adobe AIR/Flash/Flex - not oly on the web but the desktop too, there's this mentality that we code something that can be used everywhere. Silverlight
Java/JavaFX
The Language OF Mash-Ups.
There's the communication aspect: REST, XML-RPC, SOAP. When it comes to web mashups, a lot of th web-based mashups uses REST-based APIs - it's the simplest way, basically an URL that returns dat in JSON or XML.
FLASH
Not necessarily the devil.
When I look at building a new site I combine HTML, CSS, Flash - it depends on the requirements.
Flash has built-in socket support.
There's the Flash/JavaScript bridge - I don't think a lot of ppl necessarily think through the advantages of that.
Binary transfer format - Flash can pass compressed data around. It allows us to do cross-domain communication - something that we can't do in JS - Flash has a different security model.
Flash gives us access to new components - components that other ppl have developed - stuff like Charting, IMAP.
Flash has given us SoundManager, sIFR, and good File Upload widgets.
File Upload is one of those things, especially when we have things like Flickr when we're uploading a significant number of large files - flash gives us the ability to provide constant feedback to the user - something that the browser doesn't do that well by default, It's difficult to with JS too.
Using Flash gives us a lot more flexibility.
TYPES OF DATA
We're beginning to see a lot of consistency in the types of apps and the types of available data..
LOCATION
Maps (Google, Yahoo, Microsoft)
Great map mashups
- EveryBlock the crime dtabase
- Trulia (real estate prices on a map)
- GPS mashups using GoogleMaps to track runs, cycle rides.
- Last year's Tour de France provided stage maps on Google Earth
- FireEagle
- BrightKite (ties into the FireEagle & Twittr APIs)
TIME
Everything has a timestamp on it - every time you take a photo, post a blog, upload a vide, so we can make lifestreams - mashup of all our online life in a timeline.
- FriendFeed
- Jaiku (a Twiitr type app bought by Google)
RELATIONSHIPS
The whole social networking stuff - there's a lot of data visualisation in this area.
6 Degrees was a website was a cool site to see how manya peopl are in three degrees, how many in 6 - visualisations provided a really interesting way to look at that data.
Nowadays it seems like every site I gin up for allows me to befreind ppl.
- Flickr
- Twittr
- Jaiku
- youtube
- digg
- linkedIn
DOWNFALLS
Using these APIs have pros & cons
good things you can do - bad things, things that bite you in the ass
THE DISADVANTAGES
- Dynamic APIs
The Twittr API isn't static - it changes, it can change in ways that are really frustrating.
I've built a widget that builds on some functionality that was removed from the twittr API - that that's really frustrating
- Service Availability
Flickr has frequent downtime.
There's ways around this - you can cache data locally, building around the contingency of the service being down.
You become the middleman between the user and flickr - if you build a flickr app. and flcikr goes down, your users won't blame flickr, they'll blame you.
THE ADVANTAGES
the APIs generally are well-tested.
jQuery & ProtoTye have a good user-base - you have a pretty goos sense that it's going to reliable.
Instead of focusing on the technical detail, this allows you to focus on the ideas.
This drastically speeds up development.
You can solve problems outside of the original solution.
Christian Heilman used the YouTube API to build a more accessible version.
Derek Featherstone used the GoogleMaps API and improved the accessibility of the app. - he used the API to re-engineer the UI.
APIs and services give freedom to ideas.
It's easier to capture an idea and build something on top of that idea quickly.
You can iterate often and quickly. Somebody asked me if they could ask me if they could access their overheads by RSS. Another 3 or 4 lines of code in CakePHP and that was possible - the RSS support is built in to CakePHP.
This speedy development allows developers to see what works and what doesn't.
Flickr has new code going live every few days - they put stuff out there, if people don't like it, they switch it off.
DjangoPlugables
Thru Google Code he quickly made a list - built a site in 3 days. There were people out there with a similar idea but were spending too long ruminating on the idea, attempting to predict what users wanted. Longer thinking about it that it took Bryan to build DjangoPlugables.
Slides & links on this URL:
http://snook.ca/atmedia08
Latest Posts
iPhone App: Flick Cricket
10:15a.m., 4 Sep
Cricket seems like a ridiculous sport to me. I like hitting the ball - hitting a ball as hard as ...Javascript from the wonderful world of online advertising
8:23p.m., 1 Sep
I had a right old rant about the quality of javascript that you find being served by major providers of ...Web performance - Analysing Heart.co.uk
5:17p.m., 26 Aug
A few weeks back I, together with m'colleague Jon Topper, delivered a presentation about the performance of heart.co.uk to the ...Installing MySQL and MySQLdb on OSX
10:19a.m., 19 Aug
I've just set up my dev environment for Django. Again. This is the fourth time I've had to do it. ...