Notes from Javascript Saturday Event

Chandler Dhall – Microsoft MVP INETA speaker

  1. problem solving/ algorithms
    • worst case or Omega
    • best case omega
    • average case theta
  2. secure coding practices
    • sanity checks
    • validations (client side and server side)
    • authentication
    • authorization
    • .asp top 10
  3. object oriented principles
    • principles do not change
    • get the right abstractions
    • inheritence
    • encapsulation
    • aggregation
    • composition
  4. solid principles
    •  there should never be more than one reason for a class to change
    • classes should be open to extension but closed for modification
    • make fine grained interfaces that are client specific
    • abstractions should not depend upon abstractions
  5. REST
    • 1 client-server
    • clients aren’t concerned with data storage
    • servers aren’t concerned with user interface
  6. Unit Test
    • unit testing frameworks
    • code coverage
    • test first approach
    • your tests should define your api
    • tests should be in memory
    • every test should be self-sufficient
    • don’t test outside your code
  7. Source Control
    • git
    • tfs
  8. Continuous Integration
    • team system
    • cruise control
    • jenkins
    • team city
    • go
  9. Design Patterns
  10. Learn more than 2 languages
  11. Team Dynamics

Javascript – James Johnson james@latringo.com twitter @tringo

each browser has its own js engine, today most behaviors the same

local variables

  • defined within a function

global variables

  • defined outside the functions

chaining improves performance since you don’t have to search the DOM again

using the $ in front of the object makes the object not just a string

.clone() – clone an object and add another object to the page – like a player

.wrap() –

.stop() jump to end

bit.ly/jQueryDemo

nathan totten @ntotten

windows azureconf.net

nov.14th

buildwindows.com

node.js js on the server

  • not thread based
  • efficient and highly scalable
  • async model
  • single-threaded event loop

operating system >V8 Javascript Engine > libuv

libuv

crossplatform IO lib

api is asyncronous

non-sync IO is managed by libuv

good for:

  • realtime communication
  • custom network services (proxy severs)
  • JSON web services
  • client-oriented web UI’s
  • (anything you’d build with sinatra)

OK for

  • forms over data

WRONG for

  • CPU intensive processing -video transcoding, image rendering

IIS

  • process management
  • scalability on multi-core servers
  • access to log over http
  • side by side with other content types
  • integrated management experience
  • webSockets on Windows Server 2012

Windows Azure

  • using node.js
  • global footprint
  • windows azure for node apps

microsoft BizSpark

—————-

start a node server

npm = install node module ” express”

debugging in node

  • debug server.js
  • also install node-inspector

debuggin in browser

  •  install    node superviser.js (for dev environment) -like livereload

install node socket.io (realtime comm with browser)

they laughed at tfs

——

 anand raja – solutions engineer

@anandraja777 araja@infragistics.com

knockout.js

MVM = separation of concerns

  • view = UI Logic
  • View Model = Pres Logic/ State
  • Model = Data /Bus Logic

knockout.js the binding for the browser

knockout more on server, ember more on client, backbone in between those two

js best practices

  1. script tags at bottom of page before closing body tag
  2. mini faction and bundling
    • fewer HTTP calls
    • smaller files = faster download
  3.  
  4. namespacing
    window.ns = window.ns \\ {};
  5. closures are powerful
  6. revealing module patterns (controversial)
    var Person = function() {
    //private members
    //public members
    return {
    speak: speak
    }
  7. single var pattern
  8. Hoisting Coding tips
  9. Loop optimization
  10. curly braces – on the same line
  11. ‘eval’  is evil – don’t use it
  12. avoid implied type casting
  13. use js lint