API Framework overview
API frameworks
when people need an application (assuming they don't just need a website)
functionality driven (an application is)
gmail is an application
usually when people want an application they are wrong
django
cms with strength of a framework behind it would be cool 'symphony' is a framework 'drupal' is a cms – part is object oriented
early web dev – ppl wrote cgis in c++ most of web is strings – so they switched to perl then php came along – php – low brow web, java became high brow web
yahoo runs on php, and php can scale php is messy, not well architected, funky – ex 'process payment gateway' – part of core language or randomly having different orders of parameters
most flickr code is front end, normal php 20% is javascript front end 40% java image manipulation code
php – proves you can make unstructured complicated things without a framework, fast, hard to maintain java – opposite extreme [how so?] – reliable, but hard to maintain as well
javabeans – restructuring rethinking
spring – java web development framework – had object mapper thing -
ruby on rails: - said (2004) design patterns, unit testing, monoview controllers desktop design patterns – business logic and display to users (most web apps are this format)
visual presention, control flow, business logic – all separate and don't communicate with each other
can make different interfaces to logic
core model all web frameworks today
'control flow authorization' rails made web dev fast – rules of what you were supposed to do – preset everything you had to do - figuring out schema automatically by what the database was
no ideas in ruby on rails was new – but it was cherry picked ideas from all of web dev – make developing applications 10x faster
code igniter
cake php
grails
concurrent with rails: django – in python - a web app framework for a newspaper in kansas – lawrence something world – that company could invest – build code on top of newspaper
rails built for developing basecamp
rails not cms like – application centric
django built for sites that were cms like
ruby on rails doesn't have users (install plugin)
no template inheritance -
django gives you users and debug bar
debate – how much magic to do
how much of your stack should be rails, vs how much to integrate with other things
pylons – framework – does code resuse – uses existing object relational mapper – glue between parts of language – all parts of pylongs was more mature because it used exising code
grails – took parts of other things too
used tools from java tool box – tools didn't gel right, but better than working from scratch
php – tried this too - erasmus things templates and somtehing else is php – is AK-47 of programming languages – not smart, not fancy, works everywhere – php is simple and fast – can copy and paste it -
people used php without knowing anything – but people also got a lot of stuff done –
code igniter (minimalist) and symphony (bigger, more like rails, all-encompassing) – php frameworks (best practices – help prevent bad use of php
php5 is a more real programming language than php4 -
c++ = visual basic – upgraded to be like java
java programmers tend to overengineer and have giant teams that work more slowly
jRuby – and some in java – (hybrid solution)
faster lighter quicker java -
ant author now does rails (he abandoned java)
people switch languages all the time
recommended language to learn – php + java programmers recommended to switch)
python/django and rails/ruby both have test driven development, communities,
cohanna – for a specific php version
cdbaby – tried to port what worked in php to rails – that was lots of bending over backwards
sapphire – things starting in php5 with people coming back from rails – potentially new frameworks
rhino -v8 - jvm
'javascript the good parts'
key bad parts of javascript – global variables – not scoped by default
eval is nasty and bad javascript gave us json
javascript object serialization – javascript object notation write object out in code (hashes, arrayes - ) is in text format – can parse in any language – dynamically types – nothing specific to javascript -
python can eval json, eval'ing things over network is a bad idea using a parser -
javascript frameworks – jquery – common set of tools - js and ruby you can restrucutre how it works in runtime
jquery – resets browser javascript funkiness – updated to make easier to deal with dom, and high level interface stuff – yui gives you tools, jquery – messes with core concepts of js language -
prototype – older and losing sway
yui – mootols, dojo – heavy front end user interface front end frameworks
frankie – projects with this already – a route system in javascript app – pings routers, controller, model backed up and lives in browser, accepts ping and does stuff with them
gmail – all built with javascript
firefox has sqllite database – so you can have persistence in firefox
google gears – to do persistence -
everyone gives you html, css, js, json –
web server that handles network connection
twitter as example – twitter would be an application that spits out html
mod rails – like mod php, or mod perl -
system for sending mail, store usernames, generate permalinks – programmer connects lowlevel parts into an application
plugins – lots of them – all lower level -
ruby had been used for simulations – ex. Uc berkeley traffic flow
ruby – is perl syntax and perl values on a small talk backend – with some prototype and scheme
everything is an object – can mix things into classes – 12 keywords and everything else is methods on a class
ruby lets you restucutre the language python won't let you do that – pythons communcity values consistency and order ruby value being able to restructure laugnage to focus on solving problem in niche way python will always look consistent -
ex. in ruby/rails you can redefine what print does on the spot
ruby community strongly believes in test coverage – full test coverage is important plugins – extracting what are reused
to do things in any framework – you have to understand can use rail in less magical way – (than the blog screencast)
magic – solving problems
wsgi and rack – wsgi is python – web servces general integration (maybe) rack – (ruby) racking in different parts of your web application
json pipelining http request – lightweight applications – handing user authenticate merv, sinatra – lightweight applications -
'gives you httpstack' – jack tomcat – has filters – that request goes through chained set of filters