Download as pdf or txt
Download as pdf or txt
You are on page 1of 45

7 AWESOME THINGS I SAW AT

JSCONF

Ian Hunter
@dcian
http://ianesque.com
Tuesday, April 20th, 2010
It was very tough picking only 7
JSCONF?
About 140 people
plus significant other track brought about 20

Small and intimate

All things JavaScript, and one presentation on how to make bacon.


It was the keynote.
You can watch the video here.
http://www.vimeo.com/11009641
1

AN AMAZING PIRATE CONFERENCE


JUST A NOTE

• 2009’sJSConf had about 80%/20% Client to Server side


JavaScript projects.

• This year it was 50/50.

• Server Side JavaScript is here to stay.


2

NODE.JS
http://github.com/ry/node
http://nodejs.org
Ryan Dahl
PURE JS WEB SERVER
with some impressive stats
http://nodejs.org/jsconf2010.pdf
http://nodejs.org/jsconf2010.pdf
An example of a web server written with Node which responds
with "Hello World" after waiting two seconds:

var sys = require('sys'), http = require('http');

http.createServer(function (req, res) {

setTimeout(function () {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}, 2000);

}).listen(8000);

sys.puts('Server running at http://127.0.0.1:8000/');

% node example.js
Server running at http://127.0.0.1:8000/
3

RAPHAEL JS
http://raphaeljs.com
Dmitry Baranovskiy
gotta go to the site for this one
4

FUSEJS
http://github.com/jdalton/fusejs
John-David Dalton
NWMATCHER VS SIZZLE
crazy fast
Sandboxed Natives

var fb = Fusebox();
fb.Array.prototype.hai = function() {
return fb.String("Oh hai, we have " + this.length + " items.");
};

fb.Array(1, 2, 3).hai(); // "Oh hai, we have 3 items."


typeof window.Array.prototype.hai; // undefined
BATTLE OF THE 5
DESKTOP CLASS FRAMEWORKS
IPAD
iPad touch support.

Reimplemented the NPR app in a few


days.

Since it’s using WebKit, it takes


advantage of native hardware
acceleration.

NPR native crashed a few times


during demo, SC based app was
flawless.

Pretty impressive.
GREENHOUSE
Similar to XCode’s Interface Builder

Just released at JSConf

You can simply import any


SproutCore application and edit it’s
interface.

Pretty slick eye candy.


Cappuccino
ATLAS

Feels almost identical to Interface


Builder.

You can even use Interface Builder


and run nib2cib to convert to
Cappuccino.

Written by a bunch of Apple guys.


Uses ObjectiveJ, a language
superset of JavaScript with
syntax similarities to
ObjectiveC.
@import <Foundation/CPObject.j>

@import "FurnitureView.j"
@import "FloorPlanView.j"

@implementation AppController : CPObject


{
CPArray furnitureViews;
CPCollectionView furnitureCollectionView;
}
- (FurnitureView)furnitureViewWithName:(CPString)aName imagePath:(CPString)aPath size:(CGSize)aSize
{
return [[FurnitureView alloc] initWithName:aName image:[[CPImage alloc] initWithContentsOfFile:aPath size:aSize]];
}

- (CPData)collectionView:(CPCollectionView)aCollectionView dataForItemsAtIndexes:(CPIndexSet)indices forType:(CPString)aType


{
return [CPKeyedArchiver archivedDataWithRootObject:[furnitureViews objectAtIndex:[indices firstIndex]]];
}

- (CPArray)collectionView:(CPCollectionView)aCollectionView dragTypesForItemsAtIndexes:(CPIndexSet)indices
{
return [FurnitureViewDragType];
}
6

GORDON
http://github.com/tobeytailor/gordon
Tobias Schneider
PURE JS FLASH RUNTIME
no, really.
3100 LINES OF CODE
15K PACKAGE SIZE
<script type="text/javascript">
var params = {id: "your_stage", width: 480, height: 320}
var movie = new Gordon.Movie("/path/to/your.swf", params);
</script>
IPHONE?
PLAYBACK IS SUPPOSED TO BE ABYSMAL

BUT IT WORKS
7

JAVSCRIPT’S EVIL SIDE


BILLY HOFFMAN

http://zoompf.com/

Remember the Georgia


Tech BuzzCard fiasco?

This guy scares the shit


out of me.
WILL NOT RUIN IT BUT ...
• Using LiveConnect to bridge to Java and get NAT IP. Can scan
the whole network using just JavaScript document.write() with
IMG tags to ping locations.

• Use NAT address and guess at router address. Can check for
uniquely identifying information, like /images/linksys.jpg and
depending on size can determine specific firmware version.

• Most Linksys routers have default settings, like user:admin,


password:<blank>

• Reset DNS settings to malicious DNS host, redirect all traffic to


http://mypornsite.com.
SOMETIMES YOU CAN’T EVEN SEE THE EVIL

• Anyset of characters can be encoded, what if the encoding


used only whitespace?

•“ ” and “\t” can be used to represent the ASCII


equivalent of any character.

• Decode and run through eval()


<%-- Begin malicious code -->

<%-- End malicious code -->


mind = blown
Seriously, go watch the videos.

Well, not yet, but they’ll be up soon

http://jsconf.us/2010
final thought

LA.JS?

You might also like