A Recap of PolyglotConf 2012: JavaScript Frameworks, Consulting Services, and More
Table of Contents
tl;dr
A fair amount of attention was devoted to current JavaScript frameworks and a surprising amount of Clojure.
Schedule
Javascript GUI Framework
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
Features
Without even looking at the tools and anciliary:
Utilities
- Underscore
- Shims
- jQuery
Templates
Still active pain with initial page load with templates or directly as HTML.
Issues
- Mobile performance
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
What widget support
- trees
- dialogs
Recommendation
See breakdown: https://github.com/addyosmani/todomvc .
From Consulting Services Work to Product Building
Shared License vs. Open Source
- Perpetual license
- MIT or push core /
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
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/)
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)
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 |
**
Considerations
- performance
- usability
- monetization
- build
- app ontology
- adoption
- consumer -> developer -> app vendor -> browser vendor
- channel is marketing rather than technology
JavaScript Q&A
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();
}
Python and R
https://github.com/tavisrudd/r_python_meetup_apri2012
- http://ipython.org/ipython-doc/dev/interactive/htmlnotebook.html
- http://pandas.pydata.org/
- Install Notebook with iPython, Tornado, MathJax http://ipython.org/ipython-doc/dev/install/install.html#installnotebook
- bash-3.2$ sudo easyinstall ipython[zmq]
> open http://127.0.0.1:8888/
http://ipython.org/ipython-doc/dev/interactive/htmlnotebook.html
Final
https://github.com/tavisrudd/emacs.d
- vmware fusion + natlink + putty + screen + emacs = speech to text programming
Mozilla Hackday
https://etherpad.mozilla.org/polyglot-hackday-yvr
#polyglotconf