Archive for September, 2008

TAE live: Visual Programming with Javascript

Tuesday, September 30th, 2008

John Resig demoer canvas-tagget, som er en del af HTML5-spec’en. Allerede nu er canvas dog implementeret i Firefox og Safari.

canvas har en mængde primitiver, som er netop det: Primitive. Ind kommer Processing, som er et sprog til at skabe grafiske fremstillinger med. Processing er Java-baseret. Men vi har ikke interesse i at køre applets på vores sider bare for at vise noget dynamisk grafik. Her kommer processing.js ind i billedet.

Cool trick: script-tags med custom-types:

<script type="application/processing">...javacode...</script>

Koden bliver herefter parset til javascript og udført i browseren

TAE live: Test Driven Development med YUI Test

Tuesday, September 30th, 2008

YUI software engineer Nicholas Zakas taler om TDD med YUI Test.

Han siger, at unit-tests bør ske på metode-niveau. Det er måske ikke helt det, han mener, da metode-niveau ikke er lavt nok til at opnå tilstrækkelig kodedækning.

God pointe: CLI-baserede Javascript test-frameworks overser bugs, der opstår p.gr.a browseren.

YUI Test har (simpel) event simulering! Nice.

Konklusion: YUI Test er en god kandidat til unit testing på client-side

TAE live: Quirksmode.org - State of the Browsers

Tuesday, September 30th, 2008

Peter-Paul Koch snakker om browser-inkompatibiliteter.

Peter-Paul Koch @ TAE

Vi starter tilbage i 1996 med browser-krigen mellem Netscape og Explorer. Her var der tale om forsætlig inkompatibilitet. Browserne ville sparke hinanden ud af markedet.

“Users don’t care which browser they are using”

Uha: “Internet Explorer deserved to win the browser wars”. Pointen: IE5/Win var den første browser, der understøttede W3C.

  • styleSheet.insertRule(…) ( IE: styleSheet.addRule(…) (+Opera og Webkit) )
  • element.addEventListener(…) (IE: element.attachEvent(…) (+Opera) )
  • range.startContainer, range.endContainer (IE: ikke muligt!)

“Minor browsers sometimes have to support major browsers’ proprietary stuff and copy their bugs

“Sometimes browsers just don’t support stuff at all.”

“1% of Microsoft extensions is stunningly brilliant”

  • IE tæller ikke tomme tekstnoder i markup’en
  • mouseenter / mouseleave

Lang historie om browser detects og hvordan det i virkeligheden er “oldtidens” webudviklere, der er skyld i rodet.

Doing it right:

  • Property meant for identification
  • navigator.vendor (does not lie - yet)
  • navigator.userAgent (detect minor browsers first)

PPK forudsigelse: “Chrome vil tage mest markedsandel fra FF”

Vi slutter med en god plenum-diskussion over emnet “Hvorfor har vi brug for mere end en browser?”

TAE live: Stoyan Stefanov - Advanced Javascript

Tuesday, September 30th, 2008

Her starter vi fra Adam og Evan med “Hvad er et objekt i Javascript”, “Hvad er en primitiv type” etc.

Lille ikke-så-kendt trick:
var boo = function bar(foo) {...};
>> boo.name = 'bar'

Nu begynder vi at kigge på objekter og constructors lidt mere i dybden. En god pointe er at bruge constructor literals som [] og {} i stedet for new Array() og new Object().

Prototype er et tomt objekt, der automatisk oprettes som property på nye objekter ved instantiering. Brug hasOwnProperty(..) for at opklare, om en given property tilhører objektet eller objektets prototype. Brug isPrototypeOf(..) for at finde sammenhæng mellem objekter.

Prototypen er delt mellem instanser. Derfor giver det god mening at deklarere funktioner i prototypen, da man så ikke bruger unødigt meget memory.

Nedarvning:
var Dad = function() { .... };
var Kid = function() { ... };
Kid.prototype = new Dad();

“There are no classes in Javascript!”

Nedarvning implementeres ved at modificere prototype-kæden.

Ingen block-scopes men function-scopes.

Alle variable er globale med mindre deklareret med var i en funktion.

“Lokal” variabel:

(function() {
    var a=1;
    var b=2;
    alert(a+b);
})();

Et noget jappet foredrag.

TAE live: Microsoft tools keynote

Tuesday, September 30th, 2008

Microsoft viser den indbyggede developer toolbar i IE8. Den er ikke ligeså sej som Firebug, men det er et stort skridt fremad.

De viser også Microsoft Ajax Templates, som er et client-side templating library uafhængigt af ASP.NET. Det kan nogle ret søde tricks.

TAE live: Lightning rounds

Tuesday, September 30th, 2008

Stoyan Stephanov viser Smush.it, som er en image-optimizer fokuseret på performance. Kørt på Barrack Obamas kampagnesite spares der 335 KB!

Kevin Hoyt fra Adobe viser DreamWeaver 10 med effektiv JavaScript IntelliSense.

Greg Wilkins snakker om push af data fra serverside med Comet.

John Resig taler om Firebug. Hans introduktionsslide siger det hele: “Firebug is awesome!”. Work in progress: Unit test i Firebug.

Steve Sounders fra Google har tilfældigvis Smush.it på skærmen som det første. “The coolest thing so far”. Han viser “Episodes” - Timing Web Pages. URL

Bill Scott fra NetFlix viser deres nye API. Ikke så interessant for ikke-amerikanere.

Endnu en Googlelite Gavin Doughtie snakker om at identificere Javascript guruer ved interviews. Mange gode pointer omkring, hvor bredt en god Javascript-programmør skal favne.

Fransisco Tolmasky fra 280 Slides viser Objective J, et programmeringssprog baseret på Javascript. “Any valid line of Javascript is a valid line of Objective J”. Han viser også Cappuccino, som er det framework, 280 Slides er bygget på.

Næste tale på podiet er ShiftSpace.org, som er et browser-plugin til Firefox bygget på GreaseMonkey og MooTools. Interessant, men er det brugbart?

Joshua Harrison viser Milescript, der er (endnu) et programmeringssprog, der kompilerer til Javascript. Primære features: Static typing, inheritance og unit testable.

Phew…

TAE live: Lightspeed JavaScript

Tuesday, September 30th, 2008

TAE: Brendan Eich

Brendan Eich taler om udviklingen indenfor JavaScript-fortolkere og hvordan afviklingshastigheden nærmer sig kompileret, uoptimeret C-kode.

Apple fører med deres nye SquirrelFish Extreme (endnu ikke offentliggjort), tæt fulgt af Googles V8 og Firefox’s TraceMonkey. Microsoft glimrer ved deres fravær i det hurtige selskab.

TAE: JS engine speed comparison

TAE live: Top 10 Cross-Browser Issues

Monday, September 29th, 2008

Panel-diskussion med Prototype, jQuery, Dojo og YUI. Modereret af Peter-Paul Koch fra quirksmode.org.

Man får et ganske interessant indblik i de problemer, de forskellige libs har med cross-browser kompatibilitet.

On stage: Prototype, jQuery, Dojo & YUI

TAE live: Google Gears workerpool demonstration

Monday, September 29th, 2008

Ben viser en demo af primtalsgenerering sammenholdt med UI responsiveness med Google Gears. Meget imponerende!

TAE live: The Ajax Universe

Monday, September 29th, 2008

Ben Galbraith and Dion Almaer taler om tilstanden i “The Ajax Universe”.

Meget professionel fremførelse på trods af den randomiserede timer, der bestemmer hvem, der taler af de to.

Please don't hurt the web