More Related Content Similar to DjangoCon 2009 Keynote (20) DjangoCon 2009 Keynote1. Now what?
Ted Leung
Sun Microsystems
ted.leung@sun.com
@twleung
Thursday, September 10, 2009
8. Django jobs increased 692%
Rails jobs increased 117%
PHP jobs increased 86%
Thursday, September 10, 2009
9. Frameworks being used by startups
140
105
70
35
PHP 0
Rails
Django
http://news.ycombinator.com/item?id=750142
Thursday, September 10, 2009
21. Web Apps
are
Changing
Thursday, September 10, 2009
26. Users
• Richer User Interfaces
• More responsive User Interfaces
• Real time UI’s
• Access on the go
• location
Thursday, September 10, 2009
27. Developers
• Rapid development
• frameworks
• libraries/components
• tools
• Scalability / latency
• real-time
• UI
Thursday, September 10, 2009
28. Operators
• Resource planning / allocation
• Scaling
• Good monitoring
• Good analytics / BI
Thursday, September 10, 2009
29. RIA’s
• Flex/Flash
• Silverlight
• JavaFX
• Open Web
Thursday, September 10, 2009
30. Latency
• Jakob Nielsen => 0.1 = responsive UI
• c = 186,000 mi/s
• 18,600 mi
• circumference of the earth = 24,900mi
• hmm
Thursday, September 10, 2009
34. Cloud computing
• began as deploy / operational play
• will impact development
• stacks
• services
• platforms
• development in the cloud
Thursday, September 10, 2009
36. Rails 3
• New Bundler
• deployment is not licked yet
• Responder
• even better REST controllers
Thursday, September 10, 2009
37. Lift
• Security
• Comet
• AJAX support
• JSON forms
• http://liftweb.net/
Thursday, September 10, 2009
38. Webmachine
• optimized for REST / HTTP
• the cool REST diagrams
• http://bitbucket.org/justin/webmachine/wiki/Home
Thursday, September 10, 2009
40. Nitrogen
• Ajax
• Comet
• http://nitrogenproject.com/
Thursday, September 10, 2009
42. -module (web_samples_binding2).
-include ("wf.inc").
-compile(export_all).
-record(mydata, {title, author, description, postback}).
main() -> #template { file="./wwwroot/twocolumn.html", bindings=[
{'Group', learn},
{'Item', samples}
]}.
title() -> "Record-Based Binding".
headline() -> "Record-Based Binding".
right() -> linecount:render().
% Binding data stored in a record.
get_data() -> [
#mydata { title="Title 1", author="Author 1", description="Description 1", postback={data, 1} },
#mydata { title="Title 2", author="Author 2", description="Description 2", postback={data, 2} },
#mydata { title="Title 3", author="Author 3", description="Description 3", postback={data, 3} }
].
get_map() -> #mydata { title=titleLabel@text, author=authorLabel@text, description=descriptionLabel@text, postback=myButton@postback }.
column1() ->
Data = get_data(),
Map = get_map(),
Column1 = [
#h3 { text="Div Binding" },
#bind { id=simpleBinding, data=Data, map=Map, body=[
#hr{},
#label { class=tiny, id=titleLabel },
#label { class=tiny, id=authorLabel },
#label { class=tiny, id=descriptionLabel },
#button { class=tiny, id=myButton, text="Button" }
]}
],
wf:render(Column1).
Thursday, September 10, 2009
43. column2() ->
Data = get_data(),
Map = get_map(),
Column2 = [
#h3 { text="Table Binding" },
#table { class=tiny, rows=[
#tablerow { cells=[
#tableheader { text="Title" },
#tableheader { text="Author" },
#tableheader { text="Description" },
#tableheader { }
]},
#bind { id=tableBinding, data=Data, map=Map, body=#tablerow { cells=[
#tablecell { id=titleLabel },
#tablecell { id=authorLabel },
#tablecell { id=descriptionLabel },
#tablecell { body=#button { id=myButton, text="Button" } }
]}}
]}
],
wf:render(Column2).
event({data, Data}) ->
Message = "Clicked On Data: " ++ wf:to_list(Data),
wf:wire(#alert { text=Message }),
ok;
event(_) -> ok.
Thursday, September 10, 2009
44. CouchApps
• CouchDB has a JS engine in it
• Have that engine run / serve apps
• Hook that engine up to Bespin
• http://github.com/couchapp/couchapp/tree/master
Thursday, September 10, 2009
57. Coordinates
• ted.leung@sun.com
• @twleung
• http://www.sauria.com/blog
• http://www.slideshare.net/twleung
Thursday, September 10, 2009