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


Published on

Creating Web Applications is challenging. Faced with supporting multiple devices, a patchwork of languages, and various technologies, it requires a team of experts to develop, configure, maintain and run them. In this increasingly complex mix, we’d like to call simplicity to the rescue, so do developers and their clients.

In this session we tell the story of what “It just works out of the box.” means for Web and Mobile applications and how “Less lines of code produces better apps.” relates to business. And best, we like to use the same language everywhere: JavaScript.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • We are going to talk about a integrated, full-stack JavaScript development approach for Web Applications.
  • 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.
  • In this presentation we want to focus on Web Applications. Web Applications are complex.
  • 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.
  • 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).
  • There are over 640 programming languages out there today, only an handful really make sense for Web Application programming.
  • Reasonably there are only be a handful of languages, frameworks, database servers that one considers for Web Applications.
  • Example: package dependencies of very simple node.js application developed using the express framework and the Redis persistent storage
  • 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.
  • 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.
  • We want to empower the every day programmer to create Web Applications, using their existing HTML and JavaScript skills!
  • We are going to talk about a integrated, full-stack JavaScript development approach for Web Applications.
  • Developers like it “Keep it simple stupid!” and “Don’t repeat yourself” (DRY).
  • Example: package dependencies of very simple node.js application developed using the express framework and the Redis persistent storage
  • Example: package dependencies of very simple node.js application developed using the express framework and the Redis persistent storage
  • Example: package dependencies of very simple node.js application developed using the express framework and the Redis persistent storage
  • Thank you very much. Please visit us on, participate on our forum at and follow us on @wakandasoft
  • Batteries included: Advantages of an End-to-end solution

    1. 1. “Batteries included”: Advantages of an End-to-end JavaScript Stack Juergen Fesslmeier @chinshr
    2. 2. Challenges
    3. 3. WebApplications
    4. 4. Device Fragmentation Source:
    5. 5. 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, (Datapoints, 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:
    6. 6. HTTPFramework/MiddlewareDB
    7. 7. 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", "": "~0.9.2", "underscore": "~1.3.1", "stylus": "~0.24.0" } }
    8. 8. Rocket Scienc eDevelop, configure, run and maintain.
    9. 9. Web Apps for the rest of us.
    10. 10. Full-stack
    11. 11. End-to-end JavaScript stack Development EnvironmentJS App Server JS C/S Library
    12. 12. Simplicity is the love child of two of the most powerful forces inbusiness: Brains and Common Sense. Insanely Simple, Ken Segall
    13. 13. KISS and DRY
    14. 14. 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:
    15. 15. 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”));
    16. 16. How Wakanda does itclass Employee extends DS::DataClass field "name", type: "String" belongsTo "manager", type: "Employee" hasMany "employees", type: "Employee"
    17. 17. 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
    18. 18. “Batteries included”: Advantages of an End-to-end JavaScript Stack @wakandasoft
    19. 19. Resources• Rugby –• Device Fragmentation –• Rocket Science –• Batteries Included –