PolyglotConf 2012

Table of Contents

1. tl;dr

A fair amount of attention was devoted to current JavaScript frameworks and a surprising amount of Clojure.

2. Schedule

2.1. Javascript GUI Framework

2.1.1. Frameworks

Backbone http://documentcloud.github.com/backbone/ rest-centric, collections
Knockout http://knockoutjs.com/ html-centric, data bind
Ember http://emberjs.com/ model-serialization, mongodb
Spine http://spinejs.com/  
Derby http://derbyjs.com/  
Batman http://batmanjs.org/ coffeescript
ExtJS/Sencha http://www.sencha.com/  
YUI http://yuilibrary.com/  
jQuery+UI http://jqueryui.com/  
  • Ext: code quality issues even worse with GWT
  • jQueryUI: widget versioning hell
  • Derby.js
  • Sencha: Corporate sponsorship

2.1.2. Features

Without even looking at the tools and anciliary:

2.1.2.1. Utilities
  • Underscore
  • Shims
  • jQuery
2.1.2.3. Templates

Still active pain with initial page load with templates or directly as HTML.

2.1.3. Issues

  • Mobile performance

2.1.4. Meta

  • Look at the use case of the framework author to see if it fits with your goals
  • No UI = no bugs
  • JavaScript UI Frameworks mirror Python (Django) or Ruby (Rails)
  • If you create a framework what are the costs for pulling in new users

2.1.5. What widget support

  • trees
  • dialogs

2.2. From Consulting Services Work to Product Building

2.2.1. Shared License vs. Open Source

  • Perpetual license
  • MIT or push core /

2.2.2. Services vs. Product vs. Consulting

  • Ownership of the code
  • Do you need to eat?
  • It is a mental step to move into the product space
  • Example: $2000 for tech exploration
  • Launch, create pricing ($5000), sell or have rates
  • Example: Cloud service for $500 but with custom option

2.2.3. What do your clients expect

  • What is the target market
  • Do you need a product or just a presentation
  • Bring a tool-chain
  • Custom code suffers bitrot as soon as it
  • Is your client a special flower
  • Shared source may be more palitable to clients
  • Do you walk away after the project finishes
  • Just don't sell to my competitor
  • Win without pitching as anti-RFP
  • Are you labeled as an expert (from https://gingerhq.com/)

2.2.4. Meta

  • What are you offering?
  • "If you're there just to write code you shouldn't be in consulting"
  • "If you're not tracking your time and value you're doing it wrong"
  • Are you building for R&D + maintenence
  • Should you split the code into reuseable
  • Do you create a perpetual term license
  • Do you develop just for a contract or do you create
  • Do you and the client both work to make the project a success
  • You don't have to package or create a community, just add an MIT license
  • Can value be accurately judged or measured
  • When is your product failing (act as your own VC)

2.2.5. Time Tracking

FreshBooks http://www.freshbooks.com/  
Harvest http://www.getharvest.com/  
Pen and paper    
RescueTime http://www.rescuetime.com/  
basecamp http://basecamp.org/ Use older version

**

2.2.6. Considerations

  • performance
  • usability
  • monetization
  • build
  • app ontology
  • adoption
  • consumer -> developer -> app vendor -> browser vendor
  • channel is marketing rather than technology

2.3. JavaScript Q&A

2.3.1. What to cover

Went through the Resig Advanced JavaScript1 slides.

// The .bind method from Prototype.js 
Function.prototype.bind = function(){ 
  var fn = this, args = Array.prototype.slice.call(arguments), object = args.shift(); 
  return function(){ 
    return fn.apply(object, 
      args.concat(Array.prototype.slice.call(arguments))); 
  }; 
};
  • how do you distinguish betw
  • web vs. server programming
  • server: debugging, npm
  • problem with junior / intermediate is this context
  • can you ignore the issue by moving to functional style
Util.hideButton = function() {
  this.hide();
}

2.6. Final

https://github.com/tavisrudd/emacs.d

  • vmware fusion + natlink + putty + screen + emacs = speech to text programming

3. Mozilla Hackday

Footnotes: