SlideShare a Scribd company logo
1/18




Post-relational databases

   What's wrong with web
      development?

       Dobrica Pavlinušić
     http://blog.rot13.org
        WebUG, 2011-06-16
2/18




                Who am I?
●   Web programming since 1995 using FLOSS
●   Languages: php, perl, JavaScript
●   Databases: PostgreSQL, MySQL, CouchDB
●   5+ years of expirience as system architect on
    large intranet content portal
●   http://blog.rot13.org

●   Big question: are we solving same
    problems over and over again?
●   Model-View-Controller pattern
3/18




        Back in mainframe days...


        View             serial           Controller            Model
        text              text             COBOL                 files

     Terminal                                          Server


    ●   All logic in COBOL application
    ●   Similar to Clipper in DOS
    ●   Payroll-type applications

1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
4/18




        GUI Client/Server RDBMS


        View              Controller          SQL
        GUI      API                                          Model
                            4GL              ODBC             RDBMS

                 Client                                        Server


    ●   tabular normalized data (3NF)
    ●   SQL to query and modify data (static schema)
    ●   logic in controller and RDBMS (validation)

1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
5/18




                  Internet! Web 1.0


         View                             Controller
                          HTTP                                Model
         HTML             HTML              PHP
                                                       SQL
                                                              RDBMS

        Browser                                   Web server


    ●   "network is computer" – browser thin client
    ●   Logic in controller, RDBMS & view (JavaScript)
    ●   Trees (XML)? Self-referencing data?

1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
6/18




         AJAX JSON REST Web2.0


        View            Controller                             Model
                                              HTTP
        HTML     JSON
                        JavaScript            JSON             JSON

               Browser 2.0                                 NoSQL server


    ●   JSON without schema (or verification!)
    ●   Logic in JavaScript on client and server
    ●   Turtles all the way down reduces complexity

1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
7/18




          Perfect web stack
●   HTTP REST API with JSON
     – GET, PUT/POST, DELETE
●   JavaScript queries using map/reduce
     – Real-world dirty data from views
●   Serve application from HTTP database
    (content-type support)
●   Two-way data binding forms <-> JSON
     – HTML is only template we need!
●   Single language: JavaScript (+jquery)
●   "simple app in single afternoon" benchmark
8/18




                  CouchDB
●   Designed for replication over HTTP
     – applications replicatied with data (off-line)
●   Custom views, requests and _changes feed
9/18




               <angular/>
●   What if web browsers where written for web
    applications today?
     – html compiler inside browser
     – ng:repeat and friends to template objects
     – Objects persisted using REST to server
●   http://docs.angularjs.org/
●   Demos
     – http://angularjs.org/slides/intro/#/8
     – printer overview
     – conference submission app
10/18




        angular-mojolicious
●   Mojolicious – web in the box (perl)
    – http://mojolicious.org/
●   Mojo::Client – chunked HTTP client
    – Perfrect for CouchDB integration
●   https://github.com/dpavlin/angular-mojolicious
●   REST API for Angular's $resource
     – CouchDB proxy or static JSON files
●   Replication with getangular.com service
     – not API compliant, uses newer version
●   Helpers to quickly prototype with angular
11/18




        Server-side templates
●   Generate slips server-side using angular
     – PhanotomJS – headless WebKit browser
    –   http://www.phantomjs.org/
    –   https://github.com/dpavlin/angular-uplatnica




$ ./bin/phantomjs examples/rasterize.js 
'http://localhost:3000/app/index.html#/uplatnica' 
uplatnica.pdf
12/18




Pixel-exact PDF templates?
●   Generate conference name tags
    –   http://blog.rot13.org/2011/04/print-conference-name-tags-using-inkscape.html
    –   Inkscape (SVG template)
    –   pdfnup for to A4 page
13/18




          CouchDB triggers
●   Finite-state machine inside document
●   Multiple workers - FSM for lock and status
●   filter, trigger, commit on _changes feed
●   Perfect for async tasks
     – executing shell
     – sending e-mail
14/18




    CouchDB full-text search
●   Implemented as filter-only trigger
●   KinoSearch – full-text search, base for
    Apache lucy (Lucene in C)
●   trigger which delete/add documents
     – Unroll structures into.flat.schema
●   CouchDB external server to perform queries
15/18




    CouchDB related projects
●   BigCouch
     – https://github.com/cloudant/bigcouch
     – Consistant hashing, sharding
●   ElasticSearch
     – http://www.elasticsearch.com/
     – CouchDB river
●   GeoCouch
     – https://github.com/vmx/couchdb
     – Spartial index
16/18




              Riak (search)
●   cluster of machines!
●   Amazon's dynamo model
     – r,w – eventual consistency
●   Multiple map/reduce phases in single query
     – Ad-hoc, not cached, in parallel over cluster
●   post-commit hooks (search)
●   Links (REST traversal)
●   HTTP and ProcolBuffers interfaces
●   http://www.basho.com/riaksearch.html
17/18




    Alternative JSON storage
●   Raven DB
     – .Net platform
     – Linq Map/Reduce
     – RESTful JSON
     – http://ravendb.net/

●   PostgreSQL
     – Mostly tabular data?
     – hstore - key/value pairs
     – own HTTP/JSON app (ORM?)
    –   http://www.postgresql.org/docs/9.0/static/hstore.html
18/18




                 Overview
●   Avoid complexity
     – Model: JSON
     – View: HTML
     – Controller: angular
●   Solve offline problem: CouchDB
     – Attach async processes in the cloud!
●   Generate pdfs server side
    Attack interesting problems
     – Tree-data, (social) networks

More Related Content

What's hot (20)

OpenCms Days 2016: Multilingual websites with OpenCms
OpenCms Days 2016:   Multilingual websites with OpenCmsOpenCms Days 2016:   Multilingual websites with OpenCms
OpenCms Days 2016: Multilingual websites with OpenCms
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Next generation repository
OpenCms Days 2015  Next generation repositoryOpenCms Days 2015  Next generation repository
OpenCms Days 2015 Next generation repository
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological serviceOpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological service
Alkacon Software GmbH & Co. KG
 
NoSQL solutions
NoSQL solutionsNoSQL solutions
NoSQL solutions
Felix Crisan
 
Architecture of the Web browser
Architecture of the Web browserArchitecture of the Web browser
Architecture of the Web browser
Sabin Buraga
 
Why Drupal?
Why Drupal?Why Drupal?
Why Drupal?
Grossum
 
OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository
Alkacon Software GmbH & Co. KG
 
OpenCms Days 2015 Workflow using Docker and Jenkins
OpenCms Days 2015 Workflow using Docker and JenkinsOpenCms Days 2015 Workflow using Docker and Jenkins
OpenCms Days 2015 Workflow using Docker and Jenkins
Alkacon Software GmbH & Co. KG
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your way
rafaelliu
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Chang W. Doh
 
Server-side React with Headless CMS – Exove
Server-side React with Headless CMS – ExoveServer-side React with Headless CMS – Exove
Server-side React with Headless CMS – Exove
Exove
 
OpenCms Days 2014 - Responsive bootstrap templates reloaded
OpenCms Days 2014 - Responsive bootstrap templates reloadedOpenCms Days 2014 - Responsive bootstrap templates reloaded
OpenCms Days 2014 - Responsive bootstrap templates reloaded
Alkacon Software GmbH & Co. KG
 
NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]
Huy Do
 
AddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based ProgrammingAddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based Programming
Samuel Lampa
 
Ajax Zf
Ajax ZfAjax Zf
Ajax Zf
arshadka
 
iPhone Web Development and Ruby On Rails
iPhone Web Development and Ruby On RailsiPhone Web Development and Ruby On Rails
iPhone Web Development and Ruby On Rails
Jose de Leon
 
Redis
RedisRedis
Redis
Ramon Wartala
 
OpenCms Days 2014 - Nested containers in action
OpenCms Days 2014 - Nested containers in actionOpenCms Days 2014 - Nested containers in action
OpenCms Days 2014 - Nested containers in action
Alkacon Software GmbH & Co. KG
 
Midgard Create and editing content via RDFa
Midgard Create and editing content via RDFaMidgard Create and editing content via RDFa
Midgard Create and editing content via RDFa
Henri Bergius
 
Gwt Presentation1
Gwt Presentation1Gwt Presentation1
Gwt Presentation1
rajakumar.tu
 
OpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological serviceOpenCms Days 2016: OpenCms at the swiss seismological service
OpenCms Days 2016: OpenCms at the swiss seismological service
Alkacon Software GmbH & Co. KG
 
Architecture of the Web browser
Architecture of the Web browserArchitecture of the Web browser
Architecture of the Web browser
Sabin Buraga
 
Why Drupal?
Why Drupal?Why Drupal?
Why Drupal?
Grossum
 
OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository OpenCms Days 2016: Next generation content repository
OpenCms Days 2016: Next generation content repository
Alkacon Software GmbH & Co. KG
 
Extending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your wayExtending JBoss EPP and Site Publisher your way
Extending JBoss EPP and Site Publisher your way
rafaelliu
 
OVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source TreeOVERVIEW: Chromium Source Tree
OVERVIEW: Chromium Source Tree
Chang W. Doh
 
Server-side React with Headless CMS – Exove
Server-side React with Headless CMS – ExoveServer-side React with Headless CMS – Exove
Server-side React with Headless CMS – Exove
Exove
 
OpenCms Days 2014 - Responsive bootstrap templates reloaded
OpenCms Days 2014 - Responsive bootstrap templates reloadedOpenCms Days 2014 - Responsive bootstrap templates reloaded
OpenCms Days 2014 - Responsive bootstrap templates reloaded
Alkacon Software GmbH & Co. KG
 
NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]NoSQL for great good [hanoi.rb talk]
NoSQL for great good [hanoi.rb talk]
Huy Do
 
AddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based ProgrammingAddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based Programming
Samuel Lampa
 
iPhone Web Development and Ruby On Rails
iPhone Web Development and Ruby On RailsiPhone Web Development and Ruby On Rails
iPhone Web Development and Ruby On Rails
Jose de Leon
 
Midgard Create and editing content via RDFa
Midgard Create and editing content via RDFaMidgard Create and editing content via RDFa
Midgard Create and editing content via RDFa
Henri Bergius
 

Viewers also liked (20)

IAZ2013 - Gopress voor openbare bibliotheken
IAZ2013 - Gopress voor openbare bibliothekenIAZ2013 - Gopress voor openbare bibliotheken
IAZ2013 - Gopress voor openbare bibliotheken
Johan Mijs
 
Spectacular Subcultures: From luz to hacktivism
Spectacular Subcultures: From luz to hacktivismSpectacular Subcultures: From luz to hacktivism
Spectacular Subcultures: From luz to hacktivism
PaleFire
 
Virtual Reality Applications in Career Consulting - Potential & Restictions
Virtual Reality Applications in Career Consulting  - Potential & RestictionsVirtual Reality Applications in Career Consulting  - Potential & Restictions
Virtual Reality Applications in Career Consulting - Potential & Restictions
Dr Stylianos Mystakidis
 
Euronem Zambia 2008
Euronem Zambia 2008Euronem Zambia 2008
Euronem Zambia 2008
Dr Stylianos Mystakidis
 
Free Libre Open Source Software at FFZG library
Free Libre Open Source Software at FFZG libraryFree Libre Open Source Software at FFZG library
Free Libre Open Source Software at FFZG library
Dobrica Pavlinušić
 
Oslobodimo Hardware
Oslobodimo HardwareOslobodimo Hardware
Oslobodimo Hardware
Dobrica Pavlinušić
 
Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?
Dobrica Pavlinušić
 
Towards an Instructional Design Motivational Framework to Address the Retenti...
Towards an Instructional Design Motivational Framework to Address the Retenti...Towards an Instructional Design Motivational Framework to Address the Retenti...
Towards an Instructional Design Motivational Framework to Address the Retenti...
Dr Stylianos Mystakidis
 
Operation Payback (...is a bitch): Hacktivism at the Dawn of Copyright Contro...
Operation Payback (...is a bitch): Hacktivism at the Dawn of Copyright Contro...Operation Payback (...is a bitch): Hacktivism at the Dawn of Copyright Contro...
Operation Payback (...is a bitch): Hacktivism at the Dawn of Copyright Contro...
PaleFire
 
Open Education in Virtual Worlds
Open Education in Virtual WorldsOpen Education in Virtual Worlds
Open Education in Virtual Worlds
Dr Stylianos Mystakidis
 
Social Media & Web 2.0 Services for Choirs
Social Media & Web 2.0 Services for ChoirsSocial Media & Web 2.0 Services for Choirs
Social Media & Web 2.0 Services for Choirs
Dr Stylianos Mystakidis
 
Open Workshop on Information Literacy
Open Workshop on Information LiteracyOpen Workshop on Information Literacy
Open Workshop on Information Literacy
Dr Stylianos Mystakidis
 
Hacktivism in Virtual Worlds
Hacktivism in Virtual WorldsHacktivism in Virtual Worlds
Hacktivism in Virtual Worlds
PaleFire
 
The Attack of the Learning Clones
The Attack of the Learning ClonesThe Attack of the Learning Clones
The Attack of the Learning Clones
Dr Stylianos Mystakidis
 
Cisco Board 18
Cisco Board 18Cisco Board 18
Cisco Board 18
OneWorld UK
 
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...
Dobrica Pavlinušić
 
Information Literacy and Smart Life-Long Learning: Knowledge Antidotes in the...
Information Literacy and Smart Life-Long Learning: Knowledge Antidotes in the...Information Literacy and Smart Life-Long Learning: Knowledge Antidotes in the...
Information Literacy and Smart Life-Long Learning: Knowledge Antidotes in the...
Dr Stylianos Mystakidis
 
REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFI...
REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFI...REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFI...
REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFI...
Dobrica Pavlinušić
 
This is an interesting metadata source. Can I import it into Koha?
This is an interesting metadata source. Can I import it into Koha?This is an interesting metadata source. Can I import it into Koha?
This is an interesting metadata source. Can I import it into Koha?
Dobrica Pavlinušić
 
IAZ2013 - Gopress voor openbare bibliotheken
IAZ2013 - Gopress voor openbare bibliothekenIAZ2013 - Gopress voor openbare bibliotheken
IAZ2013 - Gopress voor openbare bibliotheken
Johan Mijs
 
Spectacular Subcultures: From luz to hacktivism
Spectacular Subcultures: From luz to hacktivismSpectacular Subcultures: From luz to hacktivism
Spectacular Subcultures: From luz to hacktivism
PaleFire
 
Virtual Reality Applications in Career Consulting - Potential & Restictions
Virtual Reality Applications in Career Consulting  - Potential & RestictionsVirtual Reality Applications in Career Consulting  - Potential & Restictions
Virtual Reality Applications in Career Consulting - Potential & Restictions
Dr Stylianos Mystakidis
 
Free Libre Open Source Software at FFZG library
Free Libre Open Source Software at FFZG libraryFree Libre Open Source Software at FFZG library
Free Libre Open Source Software at FFZG library
Dobrica Pavlinušić
 
Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?Mojo Facets – so, you have data and browser?
Mojo Facets – so, you have data and browser?
Dobrica Pavlinušić
 
Towards an Instructional Design Motivational Framework to Address the Retenti...
Towards an Instructional Design Motivational Framework to Address the Retenti...Towards an Instructional Design Motivational Framework to Address the Retenti...
Towards an Instructional Design Motivational Framework to Address the Retenti...
Dr Stylianos Mystakidis
 
Operation Payback (...is a bitch): Hacktivism at the Dawn of Copyright Contro...
Operation Payback (...is a bitch): Hacktivism at the Dawn of Copyright Contro...Operation Payback (...is a bitch): Hacktivism at the Dawn of Copyright Contro...
Operation Payback (...is a bitch): Hacktivism at the Dawn of Copyright Contro...
PaleFire
 
Social Media & Web 2.0 Services for Choirs
Social Media & Web 2.0 Services for ChoirsSocial Media & Web 2.0 Services for Choirs
Social Media & Web 2.0 Services for Choirs
Dr Stylianos Mystakidis
 
Hacktivism in Virtual Worlds
Hacktivism in Virtual WorldsHacktivism in Virtual Worlds
Hacktivism in Virtual Worlds
PaleFire
 
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...
Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulte...
Dobrica Pavlinušić
 
Information Literacy and Smart Life-Long Learning: Knowledge Antidotes in the...
Information Literacy and Smart Life-Long Learning: Knowledge Antidotes in the...Information Literacy and Smart Life-Long Learning: Knowledge Antidotes in the...
Information Literacy and Smart Life-Long Learning: Knowledge Antidotes in the...
Dr Stylianos Mystakidis
 
REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFI...
REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFI...REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFI...
REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFI...
Dobrica Pavlinušić
 
This is an interesting metadata source. Can I import it into Koha?
This is an interesting metadata source. Can I import it into Koha?This is an interesting metadata source. Can I import it into Koha?
This is an interesting metadata source. Can I import it into Koha?
Dobrica Pavlinušić
 

Similar to Post-relational databases: What's wrong with web development? v3 (20)

Node.js scaling in highload
Node.js scaling in highloadNode.js scaling in highload
Node.js scaling in highload
Timur Shemsedinov
 
ArangoDB
ArangoDBArangoDB
ArangoDB
ArangoDB Database
 
Next.js with drupal, the good parts
Next.js with drupal, the good partsNext.js with drupal, the good parts
Next.js with drupal, the good parts
Taller Negócio Digitais
 
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
François-Guillaume Ribreau
 
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
zinyus
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
Saltlux zinyus
 
Webdevelopment
WebdevelopmentWebdevelopment
Webdevelopment
Giacomo Antonino Fazio
 
APIs for mobile
APIs for mobileAPIs for mobile
APIs for mobile
Andrei Navarro
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
LINAGORA
 
Gwt cdi jaxrs_hbraun
Gwt cdi jaxrs_hbraunGwt cdi jaxrs_hbraun
Gwt cdi jaxrs_hbraun
hbraun
 
Building RESTtful services in MEAN
Building RESTtful services in MEANBuilding RESTtful services in MEAN
Building RESTtful services in MEAN
Madhukara Phatak
 
Thin client SPAs. Stream UI using web standards
Thin client SPAs. Stream UI using web standardsThin client SPAs. Stream UI using web standards
Thin client SPAs. Stream UI using web standards
Starcounter
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascript
rajivmordani
 
HPC Web overview - Mobyle Workshop - September 28, 2012
HPC Web overview - Mobyle Workshop - September 28, 2012HPC Web overview - Mobyle Workshop - September 28, 2012
HPC Web overview - Mobyle Workshop - September 28, 2012
Hervé Ménager
 
Cloud Native API Design and Management
Cloud Native API Design and ManagementCloud Native API Design and Management
Cloud Native API Design and Management
AllBits BVBA (freelancer)
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
IT Arena
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
Geekstone
 
Client vs Server Templating: Speed up initial load for SPA with Angular as an...
Client vs Server Templating: Speed up initial load for SPA with Angular as an...Client vs Server Templating: Speed up initial load for SPA with Angular as an...
Client vs Server Templating: Speed up initial load for SPA with Angular as an...
David Amend
 
How NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeHow NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscape
Radosław Scheibinger
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
Pierre Joye
 
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...Choisir entre une API  RPC, SOAP, REST, GraphQL?  
Et si le problème était ai...
Choisir entre une API RPC, SOAP, REST, GraphQL? 
Et si le problème était ai...
François-Guillaume Ribreau
 
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가 토크릴레이 1탄 html5 전망 (전종홍 박사)
zinyus
 
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
전문가토크릴레이 1탄 html5 전망 (전종홍 박사)
Saltlux zinyus
 
Angular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - LinagoraAngular (v2 and up) - Morning to understand - Linagora
Angular (v2 and up) - Morning to understand - Linagora
LINAGORA
 
Gwt cdi jaxrs_hbraun
Gwt cdi jaxrs_hbraunGwt cdi jaxrs_hbraun
Gwt cdi jaxrs_hbraun
hbraun
 
Building RESTtful services in MEAN
Building RESTtful services in MEANBuilding RESTtful services in MEAN
Building RESTtful services in MEAN
Madhukara Phatak
 
Thin client SPAs. Stream UI using web standards
Thin client SPAs. Stream UI using web standardsThin client SPAs. Stream UI using web standards
Thin client SPAs. Stream UI using web standards
Starcounter
 
Server Side Javascript
Server Side JavascriptServer Side Javascript
Server Side Javascript
rajivmordani
 
HPC Web overview - Mobyle Workshop - September 28, 2012
HPC Web overview - Mobyle Workshop - September 28, 2012HPC Web overview - Mobyle Workshop - September 28, 2012
HPC Web overview - Mobyle Workshop - September 28, 2012
Hervé Ménager
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
IT Arena
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
Geekstone
 
Client vs Server Templating: Speed up initial load for SPA with Angular as an...
Client vs Server Templating: Speed up initial load for SPA with Angular as an...Client vs Server Templating: Speed up initial load for SPA with Angular as an...
Client vs Server Templating: Speed up initial load for SPA with Angular as an...
David Amend
 
How NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscapeHow NOT to get lost in the current JavaScript landscape
How NOT to get lost in the current JavaScript landscape
Radosław Scheibinger
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
Pierre Joye
 

More from Dobrica Pavlinušić (19)

Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernelsMainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Dobrica Pavlinušić
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !
Dobrica Pavlinušić
 
bro - what is in my network?
bro - what is in my network?bro - what is in my network?
bro - what is in my network?
Dobrica Pavlinušić
 
Let's hack cheap hardware 2016 edition
Let's hack cheap hardware 2016 editionLet's hack cheap hardware 2016 edition
Let's hack cheap hardware 2016 edition
Dobrica Pavlinušić
 
Raspberry Pi - best friend for all your GPIO needs
Raspberry Pi - best friend for all your GPIO needsRaspberry Pi - best friend for all your GPIO needs
Raspberry Pi - best friend for all your GPIO needs
Dobrica Pavlinušić
 
Cheap, good, hackable tools from China: AVR component tester
Cheap, good, hackable tools from China: AVR component testerCheap, good, hackable tools from China: AVR component tester
Cheap, good, hackable tools from China: AVR component tester
Dobrica Pavlinušić
 
Ganeti - build your own cloud
Ganeti - build your own cloudGaneti - build your own cloud
Ganeti - build your own cloud
Dobrica Pavlinušić
 
FSEC 2014 - I can haz your board with JTAG
FSEC 2014 - I can haz your board with JTAGFSEC 2014 - I can haz your board with JTAG
FSEC 2014 - I can haz your board with JTAG
Dobrica Pavlinušić
 
Hardware hacking for software people
Hardware hacking for software peopleHardware hacking for software people
Hardware hacking for software people
Dobrica Pavlinušić
 
Gnu linux on arm for $50 - $100
Gnu linux on arm for $50 - $100Gnu linux on arm for $50 - $100
Gnu linux on arm for $50 - $100
Dobrica Pavlinušić
 
Security of Linux containers in the cloud
Security of Linux containers in the cloudSecurity of Linux containers in the cloud
Security of Linux containers in the cloud
Dobrica Pavlinušić
 
Web scale monitoring
Web scale monitoringWeb scale monitoring
Web scale monitoring
Dobrica Pavlinušić
 
SysAdmin cookbook
SysAdmin cookbookSysAdmin cookbook
SysAdmin cookbook
Dobrica Pavlinušić
 
Printing on Linux, simple right?
Printing on Linux, simple right?Printing on Linux, simple right?
Printing on Linux, simple right?
Dobrica Pavlinušić
 
KohaCon11: Integrating Koha with RFID system
KohaCon11: Integrating Koha with RFID systemKohaCon11: Integrating Koha with RFID system
KohaCon11: Integrating Koha with RFID system
Dobrica Pavlinušić
 
Deploy your own P2P network
Deploy your own P2P networkDeploy your own P2P network
Deploy your own P2P network
Dobrica Pavlinušić
 
Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)
Dobrica Pavlinušić
 
Kako napraviti Google od zgrade sa računalima?
Kako napraviti Google od zgrade sa računalima?Kako napraviti Google od zgrade sa računalima?
Kako napraviti Google od zgrade sa računalima?
Dobrica Pavlinušić
 
Virtual LDAP - kako natjerati strgane aplikacije da koriste LDAP
Virtual LDAP - kako natjerati strgane aplikacije da koriste LDAPVirtual LDAP - kako natjerati strgane aplikacije da koriste LDAP
Virtual LDAP - kako natjerati strgane aplikacije da koriste LDAP
Dobrica Pavlinušić
 
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernelsMainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Mainline kernel on ARM Tegra20 devices that are left behind on 2.6 kernels
Dobrica Pavlinušić
 
Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !Linux+sensor+device-tree+shell=IoT !
Linux+sensor+device-tree+shell=IoT !
Dobrica Pavlinušić
 
Let's hack cheap hardware 2016 edition
Let's hack cheap hardware 2016 editionLet's hack cheap hardware 2016 edition
Let's hack cheap hardware 2016 edition
Dobrica Pavlinušić
 
Raspberry Pi - best friend for all your GPIO needs
Raspberry Pi - best friend for all your GPIO needsRaspberry Pi - best friend for all your GPIO needs
Raspberry Pi - best friend for all your GPIO needs
Dobrica Pavlinušić
 
Cheap, good, hackable tools from China: AVR component tester
Cheap, good, hackable tools from China: AVR component testerCheap, good, hackable tools from China: AVR component tester
Cheap, good, hackable tools from China: AVR component tester
Dobrica Pavlinušić
 
FSEC 2014 - I can haz your board with JTAG
FSEC 2014 - I can haz your board with JTAGFSEC 2014 - I can haz your board with JTAG
FSEC 2014 - I can haz your board with JTAG
Dobrica Pavlinušić
 
Hardware hacking for software people
Hardware hacking for software peopleHardware hacking for software people
Hardware hacking for software people
Dobrica Pavlinušić
 
Security of Linux containers in the cloud
Security of Linux containers in the cloudSecurity of Linux containers in the cloud
Security of Linux containers in the cloud
Dobrica Pavlinušić
 
KohaCon11: Integrating Koha with RFID system
KohaCon11: Integrating Koha with RFID systemKohaCon11: Integrating Koha with RFID system
KohaCon11: Integrating Koha with RFID system
Dobrica Pavlinušić
 
Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)Virtualization which isn't: LXC (Linux Containers)
Virtualization which isn't: LXC (Linux Containers)
Dobrica Pavlinušić
 
Kako napraviti Google od zgrade sa računalima?
Kako napraviti Google od zgrade sa računalima?Kako napraviti Google od zgrade sa računalima?
Kako napraviti Google od zgrade sa računalima?
Dobrica Pavlinušić
 
Virtual LDAP - kako natjerati strgane aplikacije da koriste LDAP
Virtual LDAP - kako natjerati strgane aplikacije da koriste LDAPVirtual LDAP - kako natjerati strgane aplikacije da koriste LDAP
Virtual LDAP - kako natjerati strgane aplikacije da koriste LDAP
Dobrica Pavlinušić
 

Recently uploaded (20)

Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul Shares 5 Steps to Implement AI Agents for Maximum Business Efficien...
Noah Loul
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc Webinar: Consumer Expectations vs Corporate Realities on Data Broker...
TrustArc
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
Mobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi ArabiaMobile App Development Company in Saudi Arabia
Mobile App Development Company in Saudi Arabia
Steve Jonas
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath MaestroDev Dives: Automate and orchestrate your processes with UiPath Maestro
Dev Dives: Automate and orchestrate your processes with UiPath Maestro
UiPathCommunity
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 

Post-relational databases: What's wrong with web development? v3

  • 1. 1/18 Post-relational databases What's wrong with web development? Dobrica Pavlinušić http://blog.rot13.org WebUG, 2011-06-16
  • 2. 2/18 Who am I? ● Web programming since 1995 using FLOSS ● Languages: php, perl, JavaScript ● Databases: PostgreSQL, MySQL, CouchDB ● 5+ years of expirience as system architect on large intranet content portal ● http://blog.rot13.org ● Big question: are we solving same problems over and over again? ● Model-View-Controller pattern
  • 3. 3/18 Back in mainframe days... View serial Controller Model text text COBOL files Terminal Server ● All logic in COBOL application ● Similar to Clipper in DOS ● Payroll-type applications 1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
  • 4. 4/18 GUI Client/Server RDBMS View Controller SQL GUI API Model 4GL ODBC RDBMS Client Server ● tabular normalized data (3NF) ● SQL to query and modify data (static schema) ● logic in controller and RDBMS (validation) 1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
  • 5. 5/18 Internet! Web 1.0 View Controller HTTP Model HTML HTML PHP SQL RDBMS Browser Web server ● "network is computer" – browser thin client ● Logic in controller, RDBMS & view (JavaScript) ● Trees (XML)? Self-referencing data? 1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
  • 6. 6/18 AJAX JSON REST Web2.0 View Controller Model HTTP HTML JSON JavaScript JSON JSON Browser 2.0 NoSQL server ● JSON without schema (or verification!) ● Logic in JavaScript on client and server ● Turtles all the way down reduces complexity 1970 ... 1975 ... 1980 ... 1985 ... 1990 ... 1995 .. 2000 ... 2005 ... 2010
  • 7. 7/18 Perfect web stack ● HTTP REST API with JSON – GET, PUT/POST, DELETE ● JavaScript queries using map/reduce – Real-world dirty data from views ● Serve application from HTTP database (content-type support) ● Two-way data binding forms <-> JSON – HTML is only template we need! ● Single language: JavaScript (+jquery) ● "simple app in single afternoon" benchmark
  • 8. 8/18 CouchDB ● Designed for replication over HTTP – applications replicatied with data (off-line) ● Custom views, requests and _changes feed
  • 9. 9/18 <angular/> ● What if web browsers where written for web applications today? – html compiler inside browser – ng:repeat and friends to template objects – Objects persisted using REST to server ● http://docs.angularjs.org/ ● Demos – http://angularjs.org/slides/intro/#/8 – printer overview – conference submission app
  • 10. 10/18 angular-mojolicious ● Mojolicious – web in the box (perl) – http://mojolicious.org/ ● Mojo::Client – chunked HTTP client – Perfrect for CouchDB integration ● https://github.com/dpavlin/angular-mojolicious ● REST API for Angular's $resource – CouchDB proxy or static JSON files ● Replication with getangular.com service – not API compliant, uses newer version ● Helpers to quickly prototype with angular
  • 11. 11/18 Server-side templates ● Generate slips server-side using angular – PhanotomJS – headless WebKit browser – http://www.phantomjs.org/ – https://github.com/dpavlin/angular-uplatnica $ ./bin/phantomjs examples/rasterize.js 'http://localhost:3000/app/index.html#/uplatnica' uplatnica.pdf
  • 12. 12/18 Pixel-exact PDF templates? ● Generate conference name tags – http://blog.rot13.org/2011/04/print-conference-name-tags-using-inkscape.html – Inkscape (SVG template) – pdfnup for to A4 page
  • 13. 13/18 CouchDB triggers ● Finite-state machine inside document ● Multiple workers - FSM for lock and status ● filter, trigger, commit on _changes feed ● Perfect for async tasks – executing shell – sending e-mail
  • 14. 14/18 CouchDB full-text search ● Implemented as filter-only trigger ● KinoSearch – full-text search, base for Apache lucy (Lucene in C) ● trigger which delete/add documents – Unroll structures into.flat.schema ● CouchDB external server to perform queries
  • 15. 15/18 CouchDB related projects ● BigCouch – https://github.com/cloudant/bigcouch – Consistant hashing, sharding ● ElasticSearch – http://www.elasticsearch.com/ – CouchDB river ● GeoCouch – https://github.com/vmx/couchdb – Spartial index
  • 16. 16/18 Riak (search) ● cluster of machines! ● Amazon's dynamo model – r,w – eventual consistency ● Multiple map/reduce phases in single query – Ad-hoc, not cached, in parallel over cluster ● post-commit hooks (search) ● Links (REST traversal) ● HTTP and ProcolBuffers interfaces ● http://www.basho.com/riaksearch.html
  • 17. 17/18 Alternative JSON storage ● Raven DB – .Net platform – Linq Map/Reduce – RESTful JSON – http://ravendb.net/ ● PostgreSQL – Mostly tabular data? – hstore - key/value pairs – own HTTP/JSON app (ORM?) – http://www.postgresql.org/docs/9.0/static/hstore.html
  • 18. 18/18 Overview ● Avoid complexity – Model: JSON – View: HTML – Controller: angular ● Solve offline problem: CouchDB – Attach async processes in the cloud! ● Generate pdfs server side Attack interesting problems – Tree-data, (social) networks