Batteries included: Advantages of an End-to-end solution
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

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

on

  • 1,885 views

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 ...

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.

Statistics

Views

Total Views
1,885
Views on SlideShare
1,880
Embed Views
5

Actions

Likes
0
Downloads
1
Comments
0

2 Embeds 5

https://duckduckgo.com 4
http://nodeslide.herokuapp.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • 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 wakanda.org, participate on our forum at forum.wakanda.org and follow us on @wakandasoft

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

  • 1. “Batteries included”: Advantages of an End-to-end JavaScript Stack Juergen Fesslmeier @chinshr
  • 2. Challenges
  • 3. WebApplications
  • 4. Device Fragmentation Source: http://opensignalmaps.com/reports/fragmentation.php
  • 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: http://en.wikipedia.org/wiki/List_of_programming_languages
  • 6. HTTPFramework/MiddlewareDB
  • 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", "socket.io": "~0.9.2", "underscore": "~1.3.1", "stylus": "~0.24.0" } }
  • 8. Rocket Scienc eDevelop, configure, run and maintain.
  • 9. Web Apps for the rest of us.
  • 10. Full-stack
  • 11. End-to-end JavaScript stack Development EnvironmentJS App Server JS C/S Library
  • 12. Simplicity is the love child of two of the most powerful forces inbusiness: Brains and Common Sense. Insanely Simple, Ken Segall
  • 13. KISS and DRY
  • 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: http://js2coffee.org/
  • 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. How Wakanda does itclass Employee extends DS::DataClass field "name", type: "String" belongsTo "manager", type: "Employee" hasMany "employees", type: "Employee"
  • 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. “Batteries included”: Advantages of an End-to-end JavaScript Stack wakanda.org http://github.com/wakanda @wakandasoft jf@wakanda.org
  • 19. 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/