SlideShare a Scribd company logo
“Batteries included”: Advantages of
  an End-to-end JavaScript Stack



            Juergen Fesslmeier
                 @chinshr
Challenges
Web
Applications
Batteries included: Advantages of an End-to-end solution
Device Fragmentation




              Source: http://opensignalmaps.com/reports/fragmentation.php
A#, .NET, A#, (Axiom), A-0, System, A+, A++, ABAP, ABC, ABC, ALGOL, ABLE, ABSET, ABSYS, Abundance, ACC, Accent, Ace, DASL, ACT-III, Action!, ActionScript,
Ada, Adenine, Agda, Agora, AIMMS, Alef, ALF, ALGOL, 58, ALGOL, 60, ALGOL, 68, Alice, Alma-0, AmbientTalk, Amiga, E, AMOS, AMPL, APL, AppleScript, Arc, Arden,
Syntax[1], ARexx, Argus, AspectJ, Assembly, language, ATS, Ateji, PX, AutoHotkey, Autocoder, AutoIt, AutoLISP, Visual, LISP, Averest, AWK, Axum, Babbage, Bash,
BASIC, bc, BCPL, BeanShell, Bertrand, BETA, Bigwig, Bistro, BitC, BLISS, Blue, Bon, Boo, Boomerang, Bourne, shell, (including, bash, and, ksh), BREW, BPEL,
BUGSYS, BuildProfessional, C, C--, C++, C#, C/AL, ObjectScript, C, Shell, Caml, Candle, Cayenne, CDuce, Cecil, Cel, Cesil, Ceylon, CFML, Cg, Chapel, CHAIN, Charity,
Charm, Chef, CHILL, CHIP-8, chomski, Chrome, (now, Oxygene), ChucK, CICS, Cilk, CL, (IBM), Claire, Clarion, Clean, Clipper, CLIST, Clojure, CLU, CMS-2, COBOL,
CobolScript, Cobra, CODE, CoffeeScript, Cola, ColdC, ColdFusion, Cool, COMAL, Combined, Programming, Language, (CPL), Common, Intermediate, Language, (CIL),
Common, Lisp, (also, known, as, CL), COMPASS, Component, Pascal, COMIT, Constraint, Handling, Rules, (CHR), Converge, Coral, 66, Corn, CorVision, Coq,
COWSEL, CPL, csh, CSP, Csound, Curl, Curry, Cyclone, Cython, DASL, (Datapoint's, Advanced, Systems, Language), DASL, Dart, DataFlex, Datalog, DATATRIEVE,
dBase, dc, DCL, Deesel, (formerly, G), Delphi, DinkC, DIBOL, DL/I, Draco, Dylan, DYNAMO, E#, Ease, EASY, Easy, PL/I, EASYTRIEVE, PLUS, ECMAScript, Edinburgh,
IMP, EGL, Eiffel, ELAN, Emacs, Lisp, Emerald, Epigram, Erlang, Escapade, Escher, ESPOL, Esterel, Etoys, Euclid, Euler, Euphoria, EusLisp, Robot, Programming,
Language, CMS, EXEC, EXEC, 2, F#, Factor, Falcon, Fancy, Fantom, FAUST, Felix, Ferite, FFP, Fjö             lnir, FL, Flavors, Flex, FLOW-MATIC, FOCAL, FOCUS, FOIL,
FORMAC, @Formula, Forth, Fortran, Fortress, FoxBase, FoxPro, FP, FPr, Franz, Lisp, Frink, F-Script, Fuxi, Game, Maker, Language, GameMonkey, Script, GAMS, GAP,
G-code, Genie, GDL, Gibiane, GJ, GLSL, GNU, E, GM, Go, Go!, GOAL, Gö          del, Godiva, GOM, (Good, Old, Mad), Goo, GOTRAN, GPSS, GraphTalk, GRASS, Groovy,
HAL/S, Hamilton, C, shell, Harbour, Haskell, HaXe, High, Level, Assembly, HLSL, Hop, Hope, Hugo, Hume, HyperTalk, IBM, Basic, assembly, language, IBM, HAScript,
IBM, Informix-4GL, IBM, RPG, ICI, Icon, Id, IDL, IMP, Inform, Io, Ioke, IPL, IPTSCRAE, ISLISP, ISPF, ISWIM, J#, J++, JADE, Jako, JAL, Janus, JASS, Java,
JavaScript, Javascript#, JCL, JEAN, Join, Java, JOSS, Joule, JOVIAL, Joy, Julia, JScript, JavaFX, Script, Kaleidoscope, Karel, Karel++, Kaya, KEE, KIF, KRC, KRL,
KRL, KUKA, Robot, Languageå , KRYPTON, ksh, L#, .NET, LabVIEW, Ladder, Lagoona, LANSA, Lasso, LaTeX, Lava, LC-3, Leadwerks, Script, Leda, Legoscript, LIL,
LilyPond, Limbo, Limnor, LINC, Lingo, Linoleum, LIS, LISA, Lisaac, Lisp, -, ISO/IEC, Lite-C, Lithe, Little, b, Logo, Logtalk, LPC, LSE, LSL, Lua, Lucid, Lustre, LYaPAS,
Lynx, M2001, M4, Machine, code, MAD, (Michigan, Algorithm, Decoder), MAD/I, Magik, Magma, make, Maple, MAPPER, MARK-IV, Mary, MASM, Microsoft, Assembly,
x86, Mathematica, MATLAB, Maxima, (see, also, Macsyma), Max, (Max, Msp, Graphical, Programming, Environment), MaxScript, internal, language, 3D, Studio, Max,
Maya, (MEL), MDL, Mercury, Mesa, Metacard, Metafont, MetaL, Microcode, MicroScript, MIIS, MillScript, MIMIC, Mirah, Miranda, MIVA, Script, ML, Moby, Model, 204,
Modelica, Modula, Modula-2, Modula-3, Mohol, MOO, Mortran, Mouse, MPD, MSIL, CIL, MSL, MUMPS, Napier88, NASM, NATURAL, Neko, Nemerle, NESL, Net.Data,
NetLogo, NetRexx, NewLISP, NEWP, Newspeak, NewtonScript, NGL, Nial, Nice, Nickle, NPL, Not, eXactly, C, (NXC), Not, Quite, C, (NQC), Nu, NSIS, o:XML, Oak,
Oberon, Obix, OBJ2, Object, Lisp, ObjectLOGO, Object, REXX, Object, Pascal, Objective-C, Objective-J, Obliq, Obol, OCaml, occam, occam-π, Octave, OmniMark, Onyx,
Opa, Opal, OpenEdge, ABL, OPL, OPS5, OptimJ, Orc, ORCA/Modula-2, Oriel, Orwell, Oxygene, Oz, P#, PARI/GP, Pascal, -, ISO, 7185, Pawn, PCASTL, PCF, PEARL,
PeopleCode, Perl, PDL, PHP, Phrogram, Pico, Pict, Pike, PIKT, PILOT, Pizza, PL-11, PL/0, PL/B, PL/C, PL/I, -, ISO, 6160, PL/M, PL/P, PL/SQL, PL360, PLANC,
Plankalkü PLEX, PLEXIL, Plus, POP-11, PostScript, PortablE, Powerhouse, PowerBuilder, PPL, Processing, Prograph, PROIV, Prolog, Visual, Prolog, Promela,
         l,
PROTEL, ProvideX, Pro*C, Pure, Python, Q, Qi, QtScript, QuakeC, QPL, R++, Racket, RAPID, Rapira, Ratfiv, Ratfor, rc, REBOL, Redcode, REFAL, Reia, Revolution, rex,
REXX, Rlab, ROOP, RPG, RPL, RSL, RTL/2, Ruby, Rust, S, S2, S3, S-Lang, S-PLUS, SA-C, SabreTalk, SAIL, SALSA, SAM76, SAS, SASL, Sather, Sawzall, SBL, Scala,
Scheme, Scilab, Scratch, Script.NET, Sed, Self, SenseTalk, SETL, Shift, Script, SiMPLE, SIMPOL, SIMSCRIPT, Simula, Simulink, SISAL, SLIP, SMALL, Smalltalk, Small,
Basic, SML, SNOBOL(SPITBOL), Snowball, SOL, Span, SPARK, SPIN, SP/k, SPS, Squeak, Squirrel, SR, S/SL, Strand, STATA, Stateflow, Subtext, Suneido,
SuperCollider, SuperTalk, SYMPL, SyncCharts, SystemVerilog, T, TACL, TACPOL, TADS, TAL, Tcl, Tea, TECO, TELCOMP, TeX, TEX, TIE, Timber, Tom, TOM,
Topspeed, TPU, Trac, T-SQL, TTCN, Turing, TUTOR, TXL, Ubercode, UCSD, Pascal, Unicon, Uniface, UNITY, Unix, shell, UnrealScript, Vala, VBA, VBScript, Verilog,
VHDL, Visual, Basic, Visual, Basic, .NET, Visual, C#, Visual, DataFlex, Visual, DialogScript, Visual, FoxPro, Visual, J++, Visual, J#, Visual, Objects, VSXu, Vvvv, WATFIV,
WATFOR, WebDNA, WebQL, Winbatch, X++, X10, XBL, XC, xHarbour, XL, XOTcl, XPL, XPL0, XQuery, XSB, XSLT, -, See, XPath, Yorick, YQL, Yoix, Z, notation, Zeno,
ZOPL, ZPL




                                                                                                    Source: http://en.wikipedia.org/wiki/List_of_programming_languages
HTTP




Framework/
Middleware




DB
Managing Package Dependencies
   /* node v0.6.15 -- package.json */
   {
     "name": "Application",
     "version": "0.0.1",
     "private": true,
     "dependencies": {
       "express": "2.5.1",
       "jade": ">= 0.0.1",
       "redis": "~0.7.1",
       "hiredis": "~0.1.14",
       "coffee-script": "~1.2.0",
       "connect-redis": "~1.2.0",
       "express-namespace": "0.0.4",
       "connect-assets": "~2.1.8",
       "socket.io": "~0.9.2",
       "underscore": "~1.3.1",
       "stylus": "~0.24.0"
     }
   }
Batteries included: Advantages of an End-to-end solution
Rocket
                        Scienc
                        e




Develop, configure, run and maintain.
Web Apps for the rest of us.
Full-stack
End-to-end JavaScript stack



      Development Environment


JS App Server         JS C/S Library
Batteries included: Advantages of an End-to-end solution
Batteries included: Advantages of an End-to-end solution
Batteries included: Advantages of an End-to-end solution
Simplicity is the love child of two of
    the most powerful forces in
business: Brains and Common Sense.
                   Insanely Simple, Ken Segall
KISS and DRY
JavaScript and CoffeeScript
/* JavaScript */                       /* CoffeeScript */
Scope.prototype.find =                 Scope::find = (name, options) ->
 function(name, options) {               return true if @check(name,
    if (this.check(name, options)) {   options)

        return true;                     @add name, "var"

    }                                    false


    this.add(name, 'var');
    return false;
}




                                                               Source: http://js2coffee.org/
How MongoDB does it

/* collection of employees documents */
[{name: "Duncan", manager: ObjectId("…d730")},
{name: "Moneo", manager: ObjectId("…d730")},
{name: "Smith", manager: ObjectId("…d729")}]


/* Smith’s employees */
var manager = db.employees.find({manager:
ObjectId(”…d731”));
How Wakanda does it


class Employee extends DS::DataClass
  field "name", type: "String"
  belongsTo "manager", type: "Employee"
  hasMany   "employees", type: "Employee"
Object-relations

/* Smith’s employees */
ds.Employee.query("name = ‘Smith’”).employees



/* Smith’s manager’s manager’s employees */
ds.Employee.query("name = :1",
"Smith").manager.manager.employees
“Batteries included”: Advantages of
  an End-to-end JavaScript Stack


                 wakanda.org
         http://github.com/wakanda
                @wakandasoft
               jf@wakanda.org
Resources
•   Rugby – http://www.flickr.com/photos/blind_beholder/5491105857/
•   Device Fragmentation – http://opensignalmaps.com/reports/fragmentation.php
•   Rocket Science – http://www.flickr.com/photos/nasahqphoto/6400675145/
•   Batteries Included – http://www.flickr.com/photos/78566961@N00/6569887495/

More Related Content

PDF
Introduction to Scala
PDF
Introduction to Dart
PDF
Introduction to the Dart language
PDF
Google Dart
PPT
Computer languages
PPT
Wakanda: Integrated Web Application Development with NoSQL and JavaScript
PDF
javascript teach
Introduction to Scala
Introduction to Dart
Introduction to the Dart language
Google Dart
Computer languages
Wakanda: Integrated Web Application Development with NoSQL and JavaScript
javascript teach

Similar to Batteries included: Advantages of an End-to-end solution (20)

PDF
JSBootcamp_White
PDF
Tamarin and ECMAScript 4
PDF
Tamarin And Ecmascript 4
KEY
Know yourengines velocity2011
KEY
Know your Javascript Engine
PDF
JavaScript 1.5 to 2.0 (TomTom)
PPTX
Introduction to Clojure and why it's hot for Sart-Ups
PDF
Restrição == inovação - 17o Encontro Locaweb SP
PDF
Smalltalk, the dynamic language
PDF
What is new and cool j2se & java
PDF
Bar Camp Auckland - Mongo DB Presentation BCA4
PDF
The Future of JavaScript (Ajax Exp '07)
PDF
JavaScript Intro
PDF
CoffeeScript
PDF
DEVCON1 - BooJs
PDF
Jslab rssh: JS as language platform
PDF
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
PDF
AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...
KEY
Scala Introduction
PDF
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
JSBootcamp_White
Tamarin and ECMAScript 4
Tamarin And Ecmascript 4
Know yourengines velocity2011
Know your Javascript Engine
JavaScript 1.5 to 2.0 (TomTom)
Introduction to Clojure and why it's hot for Sart-Ups
Restrição == inovação - 17o Encontro Locaweb SP
Smalltalk, the dynamic language
What is new and cool j2se & java
Bar Camp Auckland - Mongo DB Presentation BCA4
The Future of JavaScript (Ajax Exp '07)
JavaScript Intro
CoffeeScript
DEVCON1 - BooJs
Jslab rssh: JS as language platform
JSLab.Руслан Шевченко."JavaScript как платформа компиляции"
AD114 - Don't be afraid of curly brackets reloaded - even more JavaScript for...
Scala Introduction
Wakanda: NoSQL & SSJS for Model-driven Web Applications - SourceDevCon 2012
Ad

Recently uploaded (20)

PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
1 - Historical Antecedents, Social Consideration.pdf
PDF
Enhancing emotion recognition model for a student engagement use case through...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PPTX
Chapter 5: Probability Theory and Statistics
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Heart disease approach using modified random forest and particle swarm optimi...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
PDF
project resource management chapter-09.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
August Patch Tuesday
PPTX
OMC Textile Division Presentation 2021.pptx
Assigned Numbers - 2025 - Bluetooth® Document
1 - Historical Antecedents, Social Consideration.pdf
Enhancing emotion recognition model for a student engagement use case through...
Building Integrated photovoltaic BIPV_UPV.pdf
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
A Presentation on Artificial Intelligence
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Chapter 5: Probability Theory and Statistics
Univ-Connecticut-ChatGPT-Presentaion.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
cloud_computing_Infrastucture_as_cloud_p
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Programs and apps: productivity, graphics, security and other tools
Heart disease approach using modified random forest and particle swarm optimi...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
project resource management chapter-09.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
August Patch Tuesday
OMC Textile Division Presentation 2021.pptx
Ad

Batteries included: Advantages of an End-to-end solution

  • 1. “Batteries included”: Advantages of an End-to-end JavaScript Stack Juergen Fesslmeier @chinshr
  • 5. Device Fragmentation Source: http://opensignalmaps.com/reports/fragmentation.php
  • 6. A#, .NET, A#, (Axiom), A-0, System, A+, A++, ABAP, ABC, ABC, ALGOL, ABLE, ABSET, ABSYS, Abundance, ACC, Accent, Ace, DASL, ACT-III, Action!, ActionScript, Ada, Adenine, Agda, Agora, AIMMS, Alef, ALF, ALGOL, 58, ALGOL, 60, ALGOL, 68, Alice, Alma-0, AmbientTalk, Amiga, E, AMOS, AMPL, APL, AppleScript, Arc, Arden, Syntax[1], ARexx, Argus, AspectJ, Assembly, language, ATS, Ateji, PX, AutoHotkey, Autocoder, AutoIt, AutoLISP, Visual, LISP, Averest, AWK, Axum, Babbage, Bash, BASIC, bc, BCPL, BeanShell, Bertrand, BETA, Bigwig, Bistro, BitC, BLISS, Blue, Bon, Boo, Boomerang, Bourne, shell, (including, bash, and, ksh), BREW, BPEL, BUGSYS, BuildProfessional, C, C--, C++, C#, C/AL, ObjectScript, C, Shell, Caml, Candle, Cayenne, CDuce, Cecil, Cel, Cesil, Ceylon, CFML, Cg, Chapel, CHAIN, Charity, Charm, Chef, CHILL, CHIP-8, chomski, Chrome, (now, Oxygene), ChucK, CICS, Cilk, CL, (IBM), Claire, Clarion, Clean, Clipper, CLIST, Clojure, CLU, CMS-2, COBOL, CobolScript, Cobra, CODE, CoffeeScript, Cola, ColdC, ColdFusion, Cool, COMAL, Combined, Programming, Language, (CPL), Common, Intermediate, Language, (CIL), Common, Lisp, (also, known, as, CL), COMPASS, Component, Pascal, COMIT, Constraint, Handling, Rules, (CHR), Converge, Coral, 66, Corn, CorVision, Coq, COWSEL, CPL, csh, CSP, Csound, Curl, Curry, Cyclone, Cython, DASL, (Datapoint's, Advanced, Systems, Language), DASL, Dart, DataFlex, Datalog, DATATRIEVE, dBase, dc, DCL, Deesel, (formerly, G), Delphi, DinkC, DIBOL, DL/I, Draco, Dylan, DYNAMO, E#, Ease, EASY, Easy, PL/I, EASYTRIEVE, PLUS, ECMAScript, Edinburgh, IMP, EGL, Eiffel, ELAN, Emacs, Lisp, Emerald, Epigram, Erlang, Escapade, Escher, ESPOL, Esterel, Etoys, Euclid, Euler, Euphoria, EusLisp, Robot, Programming, Language, CMS, EXEC, EXEC, 2, F#, Factor, Falcon, Fancy, Fantom, FAUST, Felix, Ferite, FFP, Fjö lnir, FL, Flavors, Flex, FLOW-MATIC, FOCAL, FOCUS, FOIL, FORMAC, @Formula, Forth, Fortran, Fortress, FoxBase, FoxPro, FP, FPr, Franz, Lisp, Frink, F-Script, Fuxi, Game, Maker, Language, GameMonkey, Script, GAMS, GAP, G-code, Genie, GDL, Gibiane, GJ, GLSL, GNU, E, GM, Go, Go!, GOAL, Gö del, Godiva, GOM, (Good, Old, Mad), Goo, GOTRAN, GPSS, GraphTalk, GRASS, Groovy, HAL/S, Hamilton, C, shell, Harbour, Haskell, HaXe, High, Level, Assembly, HLSL, Hop, Hope, Hugo, Hume, HyperTalk, IBM, Basic, assembly, language, IBM, HAScript, IBM, Informix-4GL, IBM, RPG, ICI, Icon, Id, IDL, IMP, Inform, Io, Ioke, IPL, IPTSCRAE, ISLISP, ISPF, ISWIM, J#, J++, JADE, Jako, JAL, Janus, JASS, Java, JavaScript, Javascript#, JCL, JEAN, Join, Java, JOSS, Joule, JOVIAL, Joy, Julia, JScript, JavaFX, Script, Kaleidoscope, Karel, Karel++, Kaya, KEE, KIF, KRC, KRL, KRL, KUKA, Robot, Languageå , KRYPTON, ksh, L#, .NET, LabVIEW, Ladder, Lagoona, LANSA, Lasso, LaTeX, Lava, LC-3, Leadwerks, Script, Leda, Legoscript, LIL, LilyPond, Limbo, Limnor, LINC, Lingo, Linoleum, LIS, LISA, Lisaac, Lisp, -, ISO/IEC, Lite-C, Lithe, Little, b, Logo, Logtalk, LPC, LSE, LSL, Lua, Lucid, Lustre, LYaPAS, Lynx, M2001, M4, Machine, code, MAD, (Michigan, Algorithm, Decoder), MAD/I, Magik, Magma, make, Maple, MAPPER, MARK-IV, Mary, MASM, Microsoft, Assembly, x86, Mathematica, MATLAB, Maxima, (see, also, Macsyma), Max, (Max, Msp, Graphical, Programming, Environment), MaxScript, internal, language, 3D, Studio, Max, Maya, (MEL), MDL, Mercury, Mesa, Metacard, Metafont, MetaL, Microcode, MicroScript, MIIS, MillScript, MIMIC, Mirah, Miranda, MIVA, Script, ML, Moby, Model, 204, Modelica, Modula, Modula-2, Modula-3, Mohol, MOO, Mortran, Mouse, MPD, MSIL, CIL, MSL, MUMPS, Napier88, NASM, NATURAL, Neko, Nemerle, NESL, Net.Data, NetLogo, NetRexx, NewLISP, NEWP, Newspeak, NewtonScript, NGL, Nial, Nice, Nickle, NPL, Not, eXactly, C, (NXC), Not, Quite, C, (NQC), Nu, NSIS, o:XML, Oak, Oberon, Obix, OBJ2, Object, Lisp, ObjectLOGO, Object, REXX, Object, Pascal, Objective-C, Objective-J, Obliq, Obol, OCaml, occam, occam-π, Octave, OmniMark, Onyx, Opa, Opal, OpenEdge, ABL, OPL, OPS5, OptimJ, Orc, ORCA/Modula-2, Oriel, Orwell, Oxygene, Oz, P#, PARI/GP, Pascal, -, ISO, 7185, Pawn, PCASTL, PCF, PEARL, PeopleCode, Perl, PDL, PHP, Phrogram, Pico, Pict, Pike, PIKT, PILOT, Pizza, PL-11, PL/0, PL/B, PL/C, PL/I, -, ISO, 6160, PL/M, PL/P, PL/SQL, PL360, PLANC, Plankalkü PLEX, PLEXIL, Plus, POP-11, PostScript, PortablE, Powerhouse, PowerBuilder, PPL, Processing, Prograph, PROIV, Prolog, Visual, Prolog, Promela, l, PROTEL, ProvideX, Pro*C, Pure, Python, Q, Qi, QtScript, QuakeC, QPL, R++, Racket, RAPID, Rapira, Ratfiv, Ratfor, rc, REBOL, Redcode, REFAL, Reia, Revolution, rex, REXX, Rlab, ROOP, RPG, RPL, RSL, RTL/2, Ruby, Rust, S, S2, S3, S-Lang, S-PLUS, SA-C, SabreTalk, SAIL, SALSA, SAM76, SAS, SASL, Sather, Sawzall, SBL, Scala, Scheme, Scilab, Scratch, Script.NET, Sed, Self, SenseTalk, SETL, Shift, Script, SiMPLE, SIMPOL, SIMSCRIPT, Simula, Simulink, SISAL, SLIP, SMALL, Smalltalk, Small, Basic, SML, SNOBOL(SPITBOL), Snowball, SOL, Span, SPARK, SPIN, SP/k, SPS, Squeak, Squirrel, SR, S/SL, Strand, STATA, Stateflow, Subtext, Suneido, SuperCollider, SuperTalk, SYMPL, SyncCharts, SystemVerilog, T, TACL, TACPOL, TADS, TAL, Tcl, Tea, TECO, TELCOMP, TeX, TEX, TIE, Timber, Tom, TOM, Topspeed, TPU, Trac, T-SQL, TTCN, Turing, TUTOR, TXL, Ubercode, UCSD, Pascal, Unicon, Uniface, UNITY, Unix, shell, UnrealScript, Vala, VBA, VBScript, Verilog, VHDL, Visual, Basic, Visual, Basic, .NET, Visual, C#, Visual, DataFlex, Visual, DialogScript, Visual, FoxPro, Visual, J++, Visual, J#, Visual, Objects, VSXu, Vvvv, WATFIV, WATFOR, WebDNA, WebQL, Winbatch, X++, X10, XBL, XC, xHarbour, XL, XOTcl, XPL, XPL0, XQuery, XSB, XSLT, -, See, XPath, Yorick, YQL, Yoix, Z, notation, Zeno, ZOPL, ZPL Source: http://en.wikipedia.org/wiki/List_of_programming_languages
  • 8. Managing Package Dependencies /* node v0.6.15 -- package.json */ { "name": "Application", "version": "0.0.1", "private": true, "dependencies": { "express": "2.5.1", "jade": ">= 0.0.1", "redis": "~0.7.1", "hiredis": "~0.1.14", "coffee-script": "~1.2.0", "connect-redis": "~1.2.0", "express-namespace": "0.0.4", "connect-assets": "~2.1.8", "socket.io": "~0.9.2", "underscore": "~1.3.1", "stylus": "~0.24.0" } }
  • 10. Rocket Scienc e Develop, configure, run and maintain.
  • 11. Web Apps for the rest of us.
  • 13. End-to-end JavaScript stack Development Environment JS App Server JS C/S Library
  • 17. Simplicity is the love child of two of the most powerful forces in business: Brains and Common Sense. Insanely Simple, Ken Segall
  • 19. JavaScript and CoffeeScript /* JavaScript */ /* CoffeeScript */ Scope.prototype.find = Scope::find = (name, options) -> function(name, options) { return true if @check(name, if (this.check(name, options)) { options) return true; @add name, "var" } false this.add(name, 'var'); return false; } Source: http://js2coffee.org/
  • 20. How MongoDB does it /* collection of employees documents */ [{name: "Duncan", manager: ObjectId("…d730")}, {name: "Moneo", manager: ObjectId("…d730")}, {name: "Smith", manager: ObjectId("…d729")}] /* Smith’s employees */ var manager = db.employees.find({manager: ObjectId(”…d731”));
  • 21. How Wakanda does it class Employee extends DS::DataClass field "name", type: "String" belongsTo "manager", type: "Employee" hasMany "employees", type: "Employee"
  • 22. Object-relations /* Smith’s employees */ ds.Employee.query("name = ‘Smith’”).employees /* Smith’s manager’s manager’s employees */ ds.Employee.query("name = :1", "Smith").manager.manager.employees
  • 23. “Batteries included”: Advantages of an End-to-end JavaScript Stack wakanda.org http://github.com/wakanda @wakandasoft jf@wakanda.org
  • 24. Resources • Rugby – http://www.flickr.com/photos/blind_beholder/5491105857/ • Device Fragmentation – http://opensignalmaps.com/reports/fragmentation.php • Rocket Science – http://www.flickr.com/photos/nasahqphoto/6400675145/ • Batteries Included – http://www.flickr.com/photos/78566961@N00/6569887495/

Editor's Notes

  • #2: We are going to talk about a integrated, full-stack JavaScript development approach for Web Applications.
  • #3: In software projects, we have to deliver on time and on budget. Like in a Rugby match you want to “touch-down” to score we want to deliver a great product. We work in agile teams, of programmers, designers, clients, the open source community and 3 rd parties to deliver. There are tons of challenges on the way to cross the line: the right tools, customer requirements, bugs, deadlines, etc.
  • #4: In this presentation we want to focus on Web Applications. Web Applications are complex.
  • #5: This is where all Web Applications will need to run on: connected mobile devices. Most of all apps written will run on mobile devices, smart phones or large touch-screen devices, like the iPad. They are run on either the (mobile) browsers or acquired through the manufacturers’ “Store” ecosystem.
  • #6: Web Applications should be developed in such way, that without a lot of work, they can easily be modified to run on several devices. Today, there are more than 3997 distinct Android products available, which creates a huge device fragmentation. Fragmentation also happening in the iOS world, i.e. different screen resolutions (Retina vs. no retina display).
  • #7: There are over 640 programming languages out there today, only an handful really make sense for Web Application programming.
  • #8: Reasonably there are only be a handful of languages, frameworks, database servers that one considers for Web Applications.
  • #9: Example: package dependencies of very simple node.js application developed using the express framework and the Redis persistent storage
  • #10: The combination dependencies: languages, tools, frameworks, infrastructure create a “house of cards” situation, with so many dependencies to manage that apps do become unstable, when new versions of a apps are deployed or new app component are published, when we have to switch from different database systems, MySQL to PostgresQL in a live system, do an npm install which fails on a newer version of nodejs, etc.
  • #11: So most of the times you require an entire team of experts (rocket scientists) like these. They develop, configure run and maintain a Web Application.
  • #12: We want to empower the every day programmer to create Web Applications, using their existing HTML and JavaScript skills!
  • #18: We are going to talk about a integrated, full-stack JavaScript development approach for Web Applications.
  • #19: Developers like it “Keep it simple stupid!” and “Don’t repeat yourself” (DRY).
  • #21: Example: package dependencies of very simple node.js application developed using the express framework and the Redis persistent storage
  • #22: Example: package dependencies of very simple node.js application developed using the express framework and the Redis persistent storage
  • #23: Example: package dependencies of very simple node.js application developed using the express framework and the Redis persistent storage
  • #24: Thank you very much. Please visit us on wakanda.org, participate on our forum at forum.wakanda.org and follow us on @wakandasoft