Your SlideShare is downloading. ×
0
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
EuroPython 2011 - How to build complex web applications having fun?
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

EuroPython 2011 - How to build complex web applications having fun?

6,903

Published on

Web development is a complexity challenge nowadays. Growing number of functionalities results in customer expectations increase which makes project design more difficult. Using proper tools that suite …

Web development is a complexity challenge nowadays. Growing number of functionalities results in customer expectations increase which makes project design more difficult. Using proper tools that suite your customer needs is essential.

This talk is about successful story using closely together Pyramid and Plone. Basing on these examples you will see the main reasons for using Plone as a CMS only and letting Pyramid do the rest (vertical application).

Published in: Technology
4 Comments
16 Likes
Statistics
Notes
  • 2----MEGA EVENTOS DE FÉRIAS jogando.net/mu/
    Venham conhecer nossos Servidores de Mu
    Online Season 6 e participar dos EVENTOS
    De Férias que preparamos para vocês.
    CONFIRAM = http://www.jogando.net/mu/
    Fazemos sua Diversão com qualidade,há mais de 5 anos
    Servers ON 24 horas por dia.
    Vários Server esperando por você.Venha se divertir de verdade.
    Site http://www.jogando.net/mu/ Benvindos ao nosso servidor.
    HYCLEN Divulgadora Oficial ..Boa semana a todos e boas férias !!!
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • video will be published on europython site http://ep2011.europython.eu/conference/talks/how-to-build-complex-web-applications-having-fun in few days
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • There is a video for this presentation? nice user case
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Love it. Great summary of the project, fresh looking slides. Congrats to Andy and RedTurtle.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
6,903
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
300
Comments
4
Likes
16
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. How to build complexweb applications having fun?
  • 2. author Andrew Mleczko Software Integrator Ferrara (Italy) twitter: amleczko amleczko@redturtle.it
  • 3. the team
  • 4. WHY this talk?
  • 5. My Reasons to be here★ Building complex web applications could be fun★ Architectural decisions are more important than you think★ Promote and
  • 6. ★ among the top 2% of all open source projects worldwide★ more than 340 active core developers★ developed since 2001★ version 4.1 released 12 days ago
  • 7. ★ available in more than 40 languages★ the best security track record of any major CMS
  • 8. powered
  • 9. the growing community
  • 10. SMALL “Roughly 5000 lines of code”
  • 11. SMALL “Roughly 5000 lines of code”FAST
  • 12. SMALL “Roughly 5000 lines of code”FASTSTABLE
  • 13. SMALL “Roughly 5000 lines of code”FAST “100% statementSTABLE coverage via unit andTESTED integration tests”
  • 14. SMALL “Roughly 5000 lines of code”FAST “100% statementSTABLE coverage via unit andTESTED integration tests”DOCUMENTED “Literally nothing in Pyramid is undocumented”
  • 15. The Bad story
  • 16. Th e Cus to mer★ Large public sectore entity★ > 1000 employees★ Needs a complex intranet★ Deadline: 2 years
  • 17. T he T eam
  • 18. Th e T eam ★ Mixed roles: Software architect Project Tester manager Developer ★ No development philosophy
  • 19. t ec h no lo g y★ Temptation to be on the technological edge★ The Learning Curve Effect everything is a “prototype”★ Technical design debt is... ... more then average
  • 20. bad deci si ons ★ Project manager as Software architect as Tester ★ Technology didnt fit in ★ no fun at all
  • 21. The Good Story
  • 22. The Customer★ .★ Born as a startup★ Offices in Miami, New York and Los Angeles
  • 23. Water today★ U.S. - the largest consumer market for bottled water in the world★ in 2011, the market is forecast to have a value of $86,421.2 billion “Bottled water has become the second largest commercial beverage category”
  • 24. project requirements
  • 25. paperless sale1 CRM2 Sales3 Warehouse4 E-commerce5 Support
  • 26. paperless sale1 CRM ★ Customer’s management (satisfaction, order status, etc.)2 Sales ★ Reports (machine statistics, etc.)3 Warehouse ★ Campaigns4 E-commerce5 Support
  • 27. paperless sale1 CRM ★ Sales network management ★ Invoicing / accountancy2 Sales ★ Revenue counter3 Warehouse ★ Discount management4 E-commerce5 Support
  • 28. paperless sale1 CRM ★ Catalog management ★ Warehouse management2 Sales ★ Logistic tracking3 Warehouse4 E-commerce5 Support
  • 29. paperless sale1 CRM ★ Online shop (for beverages and accessories)2 Sales ★ Machine configurator (interactive wizard)3 Warehouse ★ Online payments4 E-commerce5 Support
  • 30. paperless sale1 CRM ★ Machine maintenance (filter change)2 Sales ★ Emergency services ★ Order / installation process3 Warehouse4 E-commerce5 Support
  • 31. paperless sale1 CRM ★ Machine maintenance (filter change)2 Sales ★ Emergency services ★ Order / installation process3 Warehouse4 E-commerce5 Support
  • 32. paperless sale Warehouse Support CRM E-commerce Sales
  • 33. paperless sale Intranet Extranet Warehouse Support CRM E-commerce Sales
  • 34. Totally paperless ERP
  • 35. project gotchas
  • 36. project gotchas★ Requirements are not rock solid (it’s a startup) - project will grow with the customer★ Customer is in U.S. - planning regular meetings is essential★ We need to find proper (new?) framework★ Only 5 months to delivery
  • 37. proj ect backg round
  • 38. The DEV TEAM★ Software architect ★ database design ★ integration layer (data, authentication)★ Developers ★ Plone team ★ Pyramid team
  • 39. ★ Prototyping - the good way★ Collecting specification and keeping docs up-to-date★ Software development having fun
  • 40. Arc hi t e ct u ral dec i si ons
  • 41. and
  • 42. why ?★ architecture is not so far away from Zope★ it supports SQLAlchemy out of the box★ great documentation and active community★ add’s some fresh air to your architecture
  • 43. why ?★ Pyramid CRUD ★ Multi-upload widget ★ Metric units widget ★ Autocomplete widget ★ Multi-relation widget ★ ... and more ★ 75% jQuery code
  • 44. why ?★ The Best CMS★ Enterprise ready★ 1595 addons (and counting...) on plone.org/products
  • 45. why ?★ The Best CMS★ Enterprise ready★ 1595 addons (and counting...) on plone.org/products ★ PloneFormGen ★ Poi ★ Diazo ★ LinguaPlone
  • 46. why ?★ The Best CMS★ Enterprise ready★ 1595 addons (and counting...) on plone.org/products ★ PloneFormGen ★ Poi ★ Diazo ★ LinguaPlone
  • 47. why ?★ The Best CMS★ Enterprise ready★ 1595 addons (and counting...) on plone.org/products ★ PloneFormGen ★ Poi ★ Diazo ★ LinguaPlone
  • 48. why ?★ The Best CMS★ Enterprise ready★ 1595 addons (and counting...) on plone.org/products ★ PloneFormGen ★ Poi ★ Diazo ★ LinguaPlone
  • 49. why ?★ The Best CMS★ Enterprise ready★ 1595 addons (and counting...) on plone.org/products ★ PloneFormGen ★ Poi ★ Diazo ★ LinguaPlone
  • 50. why ?★ The Best CMS★ Enterprise ready★ 1595 addons (and counting...) on plone.org/products ★ PloneFormGen ★ Poi ★ Diazo ★ LinguaPlone
  • 51. why ?★ The Best CMS★ Enterprise ready★ 1595 addons (and counting...) on plone.org/products ★ PloneFormGen ★ Poi ★ Diazo ★ LinguaPlone
  • 52. why ?★ The Best CMS★ Enterprise ready★ 1595 addons (and counting...) on plone.org/products ★ PloneFormGen ★ Poi ★ Diazo ★ LinguaPlone
  • 53. I nt eg r at i o n
  • 54. SQL A lchemy aeterna.models PostgreSQL
  • 55. authentication - authorization auth storage Request pas.plugins.sa repoze.who PostgreSQL
  • 56. authentication - authorization auth storage single-sign-on ★ users ★ plone.session ★ repoze.who.plugins.auth_tkt ★ groups ★ roles mod_auth_tkt PostgreSQL
  • 57. buildout[intranet-plone]recipe = plone.recipe.zope2instanceeggs = ${intranet-plone:eggs} aeterna.models[intranet-pyramid]recipe = zc.recipe.eggeggs = ${intranet-pyramid:eggs} aeterna.models
  • 58. The big picture extranet pas.plugins. sa ZODBApache beaker PostgreSQL intranet repoze. who
  • 59. why not o t h er c o mpet i t o rs?
  • 60. d j ang o : no!★ less code more magic★ not so flexible (specification is growing)★ using SQLAlchemy could be tricky
  • 61. d r u pal: no!★ security problems (370 CVE entries)★ integration is more difficult (PHP vs. Python)★ missing features - workflow, complex ACL, etc.
  • 62. o pen erp : hmm★ quite complex: CRM , sales, accounting and much more★ not enough time to fully investigate it
  • 63. What mat t ers
  • 64. Proper Tools
  • 65. Proper R O L ES
  • 66. Whats next?
  • 67. Pyramid CRUD★ started from Sergey Volobuev Kelpie (repoze.bfg crud prototype)★ using SQLAlchemy, Formalchemy and fa.jquery★ known as pyramid_formalchemy
  • 68. Sprint summary ★ what is accomplished: ★ events hooks ★ view and action customizations ★ i18n support ★ autocomplete widget ★ paster templates ★ plans: ★ fanstatic integration
  • 69. paster template>>> $ pip install pyramid_formalchemy>>> $ paster create -t pyramid_fa myapp more details: http://blog.redturtle.it/redturtle-blog/pyramid-crud-sprint-summary
  • 70. Sprint summary ★ sprinters: ★ Gaël Pasgrimaud [gawel] ★ Patrick Gerken [do3cc] ★ Me [amleczko] ★ new version of: ★ pyramid_formalchemy 0.4 ★ fa.jquery 0.9.4
  • 71. Qu est i ons?
  • 72. Credits★ http://flickr.com/photos/mleczko★ http://www.melaiphone.com/★ http://static.iphoneitalia.com★ http://www.theapplelounge.com★ http://www.nonconvenzionale.com★ http://craziestgadgets.com/★ http://obsessivelystitching.blogspot.com/★ http://theclockblog.blogspot.com/★ http://www.scatoladeigiochi.altervista.org/★ http://wallpapers.brothersoft.com/★ www.prisionerodelpixel.com★ http://jawaexpress.com/★ http://mikehenneke.mvourtown.com/★ http://android-apps.com/

×