Wednesday, June 2, 2010

Notes from Talk at SWDC2010

These are notes from my talk at SWDC2010, April 3, 2010.

The New Mobile Web

Mikael Kindborg
MoSync AB

Introduction
My Favourite languages are Lisp, Smalltalk, and C

I also like JavaScript, and CoffeeScript looks very promising!

JavaScript:

function square(x) {
    return x * x;
}

CoffeeScript:

square: (x) ->
    x * x

Early Bound vs. Late Bound
The theme of this talk is Early Bound vs. Late Bound Thinking & Technologies.

Ready made toys like model cars are early bound, that is, the design is set ("in stone") early on in the design/production process and cannot easily be altered when manufactured, neither by the designer nor by the end user.

Going Late Bound means that the design/product can be altered at "run time".

For example, a model car kit is a bit less early bound than a ready made car model, but once assembled an painted, it is not as straightforward to alter and experiment with.

By contrast. LEGO is a truely late bound type of toy. Children can assemble, alter and disassemble LEGO designs in endless ways.

Nathan Sawaya is an example of an artist that has taken LEGO-designs to new heights of creativity, see http://brickartist.com/

Going late bound enables both Dynamic Development and Dynamic Deployment.

Dynamic Development
Characteristics of dynamic development:
  • Incremental coding
  • No Build
  • Edit/Run cycle blurred
  • Edit the running program
  • Edit code during debugging
  • Dynamic languages enable incremental evaluation
Examples of Dynamic/Late Bound Tools
  • Spreadsheets
  • Smalltalk
  • Seaside
  • Live JavaScript
  • Greasemonkey and Extensions
  • The work at http://vpri.org
  • DroidScript
  • Magic Words (interactive toy)
Smalltalk/Seaside:
Live JavaScript:
Influence of Self and Strongtalk:

To: self-interest@self.smli.com
Subject: Sun buys Java compiler technology based upon Self!!!
From: keith@uniteq.com (Keith Hankin)
Date: Tue, 18 Feb 1997 17:38:17 -0800

Sun has just announced that they are buying Animorphic
Systems, which for the last 2+ years has been developing
JIT compiler technology for Java and Smalltalk.
And, guess what?  It's based upon the Self project!!!


http://www.merlintec.com/old-self-interest/msg01011.html

Strongtalk and Google V8:

From: Dave Griswold
Date: Tue, 2 Sep 2008 12:14:32 -0700 (PDT)
Local: Tues, Sep 2 2008 9:14 pm
Subject: Chrome and V8

Hi everyone,

It's been a while, but now that Google has announced
Chrome and V8, I can finally make a little clearer a
major reason why I haven't been pushing Strongtalk
development for quite a while: Chrome's new JavaScript
engine V8.

The V8 development team has multiple members of the
original Animorphic team; it is headed by Lars Bak,
who was the technical lead for both Strongtalk and the
HotSpot Java VM (as well as a huge contributor to the
original Self VM).   I think that you will find that V8
has a lot of the creamy goodness of the Strongtalk and
Self VMs, with many big architectural improvements


http://groups.google.com/group/strongtalk-general/browse_thread/thread/40eb8f405fbd3041/0abb010f0eac18e9

Strongtalk type system:

Type System: It contains the first fully developed
strong, static type system for Smalltalk (hence the
name Strongtalk). The type system is both optional
and incremental, and operates completely independently
of the compiler technology (which means that normal
untyped Smalltalk code runs just as fast as typed code).

http://www.strongtalk.org/

Dynamic Deployment:
  • Update application at any point - even while it is running
  • User modifiable applications
  • Networked/linked/browsable apps (web of applications)
  • Security! (*x*)
Mobile Apps compared to Web Apps
Mobile Apps:
  • Early bound
  • Manual install
  • Manual updates
  • Isolated
  • Developed in static languages (Java, Objective C/C++)
  • Native access
Web Apps:
  • A bit more late bound
  • Automatic install
  • Automatic updates
  • Networked
  • Developed in dynamic language (JavaScript)
  • Restricted native access
    DroidScript
    What it is:
    DroidScript Development:
    • Edit on computer, copy files to device, run on device
    • Edit on device, run on device
    • Edit on device, run incrementally on device (like a REPL)
    • Edit in browser, run incrementally on device
    DroidScript Deployment:
    • Copy files to device
    • Publish JavaScript files and open on device
    • Publish inlined JavaScript on any web page and open on device
    • Open JavaScript from an application (web of applications)
    • Distribute as native application (with or without dynamic updates)
    • Security! (*x*)
    The Future
    • HTML5 and other web-based techniques will become increasingly powerful
    • Dynamic languages enable dynamic development and dynamic distribution of mobile applications
    • Going late bound boosts creativity and user participation (LEGO)
    • A mobile web browser based on a dynamic programming language (NoHTML) would be cool
    Contact

    0 comments:

    Post a Comment