SlideShare ist ein Scribd-Unternehmen logo
1 von 243
Introducing Online
   Education to
    Hypermedia
         Guilherme Silveira
 guilherme.silveira@caelum.com.br
Watch the video with slide
                         synchronization on InfoQ.com!
                      http://www.infoq.com/presentations
                         /Online-Education-Hypermedia

       InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
  Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Presented at QCon San Francisco
                          www.qconsf.com
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
 - practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
who am I?
who am I?
• caelum.com.br founder
who am I?
• caelum.com.br founder
 • training, content creation, development
who am I?
• caelum.com.br founder
 • training, content creation, development
• since -50 years old working with education
who am I?
• caelum.com.br founder
 • training, content creation, development
• since -50 years old working with education
• “arquitetura e design de software”
who am I?
• caelum.com.br founder
 • training, content creation, development
• since -50 years old working with education
• “arquitetura e design de software”
• some work on rest
who am I?
• caelum.com.br founder
 • training, content creation, development
• since -50 years old working with education
• “arquitetura e design de software”
• some work on rest
• brazil
what is Caelum?
what is Caelum?

• 3 cities, 100 employees
what is Caelum?

• 3 cities, 100 employees
• brick and mortar education
what is Caelum?

• 3 cities, 100 employees
• brick and mortar education
• java, ruby, agile development
what is Caelum?

• 3 cities, 100 employees
• brick and mortar education
• java, ruby, agile development
• user groups
what is Caelum?

• 3 cities, 100 employees
• brick and mortar education
• java, ruby, agile development
• user groups
• qcon brazil, conexao java, other events
what is Brazil?
who is this guy?
what is Brazil?
what is Brazil?

• brazil: 5565 cities
what is Brazil?

• brazil: 5565 cities
• largest são paulo: 11 million
what is Brazil?

• brazil: 5565 cities
• largest são paulo: 11 million
• 20th: 800 thousand
what is Brazil?

• brazil: 5565 cities
• largest são paulo: 11 million
• 20th: 800 thousand
• largest in a specific state: 296 thousand
what is Brazil?

• brazil: 5565 cities
• largest são paulo: 11 million
• 20th: 800 thousand
• largest in a specific state: 296 thousand
 • fills 4 stadiums?
what is Brazil?

• brazil: 5565 cities
• largest são paulo: 11 million
• 20th: 800 thousand
• largest in a specific state: 296 thousand
 • fills 4 stadiums?
• non well distributed developers
what is Caelum Online?
what is Caelum Online?

• brazil: 5565 cities
what is Caelum Online?

• brazil: 5565 cities
 • thousands of coffee shops
what is Caelum Online?

• brazil: 5565 cities
 • thousands of coffee shops
• outside brazil: 10 cities
what is Caelum Online?
what is Caelum Online?

• online learning
what is Caelum Online?

• online learning
• online teaching
what is Caelum Online?

• online learning
• online teaching
• online practicing
agenda
agenda

• problems that an online educational
  platform faces
agenda

• problems that an online educational
  platform faces
• examples
agenda

• problems that an online educational
  platform faces
• examples
• existing systems, languages, databases
agenda

• problems that an online educational
  platform faces
• examples
• existing systems, languages, databases
• how to connect everything
agenda

• problems that an online educational
  platform faces
• examples
• existing systems, languages, databases
• how to connect everything
• really small services
traditional online
     learning
traditional online
     learning
traditional online
     learning
traditional online
     learning
traditional online
     learning
machine learning

• + data
• + learning
• better results
collaborative filtering

• + data
• + learning
• better results
recommend movies

• amazon
• netflix
• ...
recommend daily news

• facebook
• twitter
• ...
recommend a friend?

• facebook
• twitter
• ...
recommend songs


• all those websites you know...
collaborative filtering
collaborative filtering

• recommend technologies that you should
  study
collaborative filtering

• recommend technologies that you should
  study
• recommend courses to attend
collaborative filtering

• recommend technologies that you should
  study
• recommend courses to attend
• recommend jobs to take
collaborative filtering

• recommend technologies that you should
  study
• recommend courses to attend
• recommend jobs to take
• recommend exercises to do
exercise difficulty
exercise difficulty

• MIT studies on CF and IRT
exercise difficulty

• MIT studies on CF and IRT
• CF is as good as IRT
exercise difficulty

• MIT studies on CF and IRT
• CF is as good as IRT
• our findings: we are not big data :(
exercise difficulty

• MIT studies on CF and IRT
• CF is as good as IRT
• our findings: we are not big data :(
• we can’t infer difficulty on multiple choice
  so far
drop out rate


• can we detect them before they drop out?
how long for an
  exercise?
how long for an
    exercise?
students   = []
students   << [12, 150, 3, 15]
students   << [4, 170, 32, 25]
students   << [1, 10, 3, 25]
students   << [12, 20, 31, 15]
finishes under 3
    months?
finishes under 3
    months?




labels = [1, 1, 0, 0]
finishes under 3
      months?
students   = []
students   << [12, 150, 3, 15]
students   << [4, 170, 32, 25]
students   << [1, 10, 3, 25]
students   << [12, 20, 31, 15]



  labels = [1, 1, 0, 0]
trains
trains
trains
trains
what about guilherme?
what about guilherme?

guilherme = [6, 140, 25, 10]
what about guilherme?

guilherme = [6, 140, 25, 10]

model.predict(Node.features(guilherme))
guess!
SVM
SVM
fake data
fake data




labels = [1, 1, 0, 0]
fake data
students   = []
students   << [12, 150, 3, 15]
students   << [4, 170, 32, 25]
students   << [1, 10, 3, 25]
students   << [12, 20, 31, 15]



  labels = [1, 1, 0, 0]
real data
real data
real data
C       TRAIN ACCURACY%   ACCURACY%
0.08!   93.18%!           85.71%
SVM to classify (0,1, ...)
teacher and tutor

• multiple choice answers
• open answers
• code answer
multiple choice
• sucks?
• is the best/easiest to test ability
open answers
• great
• is the hardest to test ability
• any natural language processing experts?
code answers
• great
• is hard to test ability
• AST, auto correction, error margins
k-cluster


• another machine learning algorithm
• clustering
compare them...

• exercises
• students
• courses
and find...
and find...

• great exercises, not-so-great exercises
and find...

• great exercises, not-so-great exercises
• great students, not-so-great students
and find...

• great exercises, not-so-great exercises
• great students, not-so-great students
• great courses, not-so-great courses
common characteristics
common characteristics
                  height???
common characteristics
number of wrong answers
                          height???
common characteristics
number of wrong answers
                                 height???
                      time spent
common characteristics
number of wrong answers
                                 height???
                      time spent
number of exercises done
common characteristics
number of wrong answers
                                 height???
                      time spent
number of exercises done
                           feedback given
common characteristics
number of wrong answers
                                 height???
                      time spent
number of exercises done
                            feedback given
          feedback rating
common characteristics
number of wrong answers
                                 height???
                      time spent
number of exercises done
                               feedback given
          feedback rating

                       likes
common characteristics
number of wrong answers
                                 height???
                      time spent
number of exercises done
                               feedback given
          feedback rating

                       likes
       courses
common characteristics
number of wrong answers
                                 height???
                      time spent
number of exercises done
                                 feedback given
          feedback rating

                         likes
       courses
                 quantidade de caracteres
the 5D chart
they are here!
those are the groups
expected:

muitas perguntas,               poucos erros,
 muitos erros                  poucas perguntas



                 poucos erros,
               poucas perguntas,
                ajuda bastante
expected:


X
muitas perguntas,               poucos erros,
 muitos erros                  poucas perguntas



                 poucos erros,
               poucas perguntas,
                ajuda bastante
expected:


X                              X
muitas perguntas,               poucos erros,
 muitos erros                  poucas perguntas



                 poucos erros,
               poucas perguntas,
                ajuda bastante
expected:


X                              X
muitas perguntas,               poucos erros,
 muitos erros                  poucas perguntas




              X
                 poucos erros,
               poucas perguntas,
                ajuda bastante
found:
found:

lots of questions,
    less errors
found:

lots of questions,             more errors,
    less errors               less questions
found:

lots of questions,                      more errors,
    less errors                        less questions



                      more errors
                     less questions,
                       helped a lot
we have 5000
responsibilities
we have 5000
      responsibilities
• data problems
we have 5000
      responsibilities
• data problems
• user problems
we have 5000
      responsibilities
• data problems
• user problems
• teacher problems
we have 5000
      responsibilities
• data problems
• user problems
• teacher problems
• company problems
we have 5000
responsibilities
we have 5000
       responsibilities

• we started with a small platform (mar2011)
we have 5000
       responsibilities

• we started with a small platform (mar2011)
• we ended up with a huge payment, chat up
  to certificate playform (oct2012)
single responsibility
      principle
single responsibility
         principle

• why not apply it to the system itself?
single responsibility
         principle

• why not apply it to the system itself?
• + dependency injection
refactor, extract




  ===> exercise
refactor, extract
• constant



             ===> exercise
refactor, extract
• constant
• variable


             ===> exercise
refactor, extract
• constant
• variable
• method

             ===> exercise
refactor, extract
• constant
• variable
• method
• class
             ===> exercise
refactor, extract
• constant
• variable
• method
• class
• library
             ===> exercise
refactor, extract
• constant
• variable
• method
• class
• library
• project ===> exercise
mysql
                        caelum systems
       alumni.caelum.com.br                           mysql                        métricas
                  RoR                           alunos                             java + octave
                                                                                                         redis
                                              java + vraptor
solr                                                              mysql
                                                                  gnarus                       sugest
ondetrabalhar.com                                               scala + vraptor
                                                                                                    java
               ruby                                                                        postgresql
                                      mysql                                                promo
mysql
casa do código                        pagamentos                                              RoR
                                               java                                                      redis
       java + RoR
 postgresql                             interestie                                  analisador 1
  + projetos                           sinatra + sequel
                                                                                             sinatra
   sinatra + sequel
                                                              exercícios                    postgresql
                                                                  RoR             analisador 2
                                                                 postgresql
+ 1 projeto              postgresql                                                   java
  scala + play       mountable engine                                                 + 1 ‘página’
          aws tickets      RoR                                   + 6 projetos                       js
 postgresql
                  RoR                                                     RoR postgresql
data analysis

• http
• octave/ruby/java (mahout)
• octave/mysql/postgre/redis
answer analysis

• http
• ruby/java
• mysql/postgre/redis
badges/gamification

• http
• ruby
• postgre
payment

• http
• java
• mysql/postgre
exercises
• how to deal with new types of exercises?
• group
• simulations
• auto-correction
introducing hypermedia:

      simply return an URI
training platform
                    external exercise
new external exercise attempt




training platform
                       external exercise
new external exercise attempt




 training platform
                           external exercise




personal note: do not
 draw splines again
new external exercise attempt




 training platform   your URI      external exercise




personal note: do not
 draw splines again
RPG activity
• http
• javascript
• 200 lines of code
• anyone can trash and rewrite in any language
  (except perl?)
several autocorrectors

• ruby
• javascript
• sql
cloud partnership
cloud partnership

• do our training
cloud partnership

• do our training
• U$ 20 coupon
cloud partnership

• do our training
• U$ 20 coupon
• where do you write that code?
training platform
                    external exercise
new external exercise attempt




training platform
                       external exercise
new external exercise attempt




training platform   your URI      external exercise
coupon activity

• http
• ruby
• <100 lines of code
and then...
and then...
       alunos
     java + vraptor
and then...
alumni.caelum.com.br
      RoR                alunos
                       java + vraptor
and then...
  alumni.caelum.com.br
         RoR               alunos
                         java + vraptor

ondetrabalhar.com
      ruby
and then...
  alumni.caelum.com.br
         RoR               alunos
                         java + vraptor
                                            gnarus
ondetrabalhar.com                         scala + vraptor
      ruby
and then...
  alumni.caelum.com.br
         RoR               alunos
                         java + vraptor
                                            gnarus
ondetrabalhar.com                         scala + vraptor
      ruby




                                     exercícios
                                            RoR
and then...
  alumni.caelum.com.br
            RoR            alunos
                         java + vraptor
                                            gnarus
ondetrabalhar.com                         scala + vraptor
         ruby




                                     exercícios
                                            RoR
+ 1 projeto
 scala + play
and then...
  alumni.caelum.com.br
            RoR                 alunos
                              java + vraptor
                                                 gnarus
ondetrabalhar.com                              scala + vraptor
         ruby




                                          exercícios
                                                 RoR
+ 1 projeto
 scala + play     mountable engine
                        RoR
and then...
  alumni.caelum.com.br
            RoR                 alunos
                              java + vraptor
                                                 gnarus
ondetrabalhar.com                              scala + vraptor
         ruby




                                          exercícios
                                                 RoR
+ 1 projeto
 scala + play     mountable engine                               + 1 ‘página’
                        RoR
                                                                       js
and then...
  alumni.caelum.com.br
            RoR                 alunos
                              java + vraptor
                                                 gnarus
ondetrabalhar.com                              scala + vraptor
         ruby




                                                                 analisador 1
                                                                    sinatra

                                          exercícios
                                                 RoR
+ 1 projeto
 scala + play     mountable engine                               + 1 ‘página’
                        RoR
                                                                         js
and then...
  alumni.caelum.com.br
            RoR                 alunos
                              java + vraptor
                                                 gnarus
ondetrabalhar.com                              scala + vraptor
         ruby

                        pagamentos
                               java
                                                                 analisador 1
                                                                    sinatra

                                          exercícios
                                                 RoR
+ 1 projeto
 scala + play     mountable engine                               + 1 ‘página’
                        RoR
                                                                         js
and then...
  alumni.caelum.com.br
            RoR                 alunos
                              java + vraptor
                                                 gnarus
ondetrabalhar.com                              scala + vraptor
         ruby

                        pagamentos
                               java
                                                                 analisador 1
                                                                    sinatra

                                          exercícios
                                                 RoR
+ 1 projeto
 scala + play     mountable engine                               + 1 ‘página’
                        RoR                     + 6 projetos             js
                                                       RoR
and then...
  alumni.caelum.com.br
            RoR                 alunos
                              java + vraptor
                                                 gnarus
ondetrabalhar.com                              scala + vraptor
         ruby

                        pagamentos
                               java
                                                                   analisador 1
                                                                           sinatra

                                          exercícios
                                                 RoR             analisador 2
+ 1 projeto                                                         java
 scala + play     mountable engine                                  + 1 ‘página’
                        RoR                     + 6 projetos                    js
                                                       RoR
and then...
  alumni.caelum.com.br
            RoR                 alunos
                              java + vraptor
                                                 gnarus
ondetrabalhar.com                              scala + vraptor
         ruby

                        pagamentos
                               java
                                                                   analisador 1
                                                                           sinatra

                                          exercícios
                                                 RoR             analisador 2
+ 1 projeto                                                         java
 scala + play     mountable engine                                  + 1 ‘página’
                        RoR                     + 6 projetos                    js
                                                       RoR
and then...
  alumni.caelum.com.br
            RoR                 alunos
                              java + vraptor
                                                 gnarus
ondetrabalhar.com                              scala + vraptor
         ruby

casa do código          pagamentos
                               java
   java + RoR
                                                                   analisador 1
                                                                           sinatra

                                          exercícios
                                                 RoR             analisador 2
+ 1 projeto                                                         java
 scala + play     mountable engine                                  + 1 ‘página’
                        RoR                     + 6 projetos                    js
                                                       RoR
and then...
  alumni.caelum.com.br
            RoR            alunos
                         java + vraptor
                                            gnarus
ondetrabalhar.com                         scala + vraptor
         ruby

casa do código       pagamentos
                          java
   java + RoR
                                                              analisador 1
                                                                      sinatra

                                     exercícios
                                            RoR             analisador 2
+ 1 projeto                                                    java
 scala + play   mountable engine                               + 1 ‘página’
     aws tickets      RoR                  + 6 projetos                    js
            RoR                                   RoR
and then...
  alumni.caelum.com.br
            RoR             alunos
                          java + vraptor
                                             gnarus
ondetrabalhar.com                          scala + vraptor
         ruby

casa do código       pagamentos
                            java
   java + RoR

                       interestie                              analisador 1
                                                                       sinatra
                      sinatra + sequel
                                         exercícios
                                             RoR             analisador 2
+ 1 projeto                                                     java
 scala + play   mountable engine                                + 1 ‘página’
     aws tickets      RoR                   + 6 projetos                    js
            RoR                                    RoR
and then...
  alumni.caelum.com.br
            RoR             alunos
                          java + vraptor
                                             gnarus
ondetrabalhar.com                          scala + vraptor
         ruby

casa do código       pagamentos
                            java
   java + RoR

                       interestie                              analisador 1
                                                                       sinatra
                      sinatra + sequel
                                         exercícios
                                             RoR             analisador 2
+ 1 projeto                                                     java
 scala + play   mountable engine                                + 1 ‘página’
     aws tickets      RoR                   + 6 projetos                    js
            RoR                                    RoR
and then...
  alumni.caelum.com.br
            RoR                alunos
                             java + vraptor
                                                gnarus
ondetrabalhar.com                             scala + vraptor
         ruby

casa do código          pagamentos
                               java
   java + RoR

                          interestie                              analisador 1
 + projetos              sinatra + sequel
                                                                          sinatra
  sinatra + sequel
                                            exercícios
                                                RoR             analisador 2
+ 1 projeto                                                        java
 scala + play   mountable engine                                   + 1 ‘página’
     aws tickets      RoR                      + 6 projetos                    js
            RoR                                       RoR
and then...
  alumni.caelum.com.br
            RoR                alunos
                             java + vraptor
                                                gnarus                      sugest
ondetrabalhar.com                             scala + vraptor
                                                                               java
         ruby

casa do código          pagamentos
                               java
   java + RoR

                          interestie                              analisador 1
 + projetos              sinatra + sequel
                                                                          sinatra
  sinatra + sequel
                                            exercícios
                                                RoR             analisador 2
+ 1 projeto                                                        java
 scala + play   mountable engine                                   + 1 ‘página’
     aws tickets      RoR                      + 6 projetos                    js
            RoR                                       RoR
and then...
  alumni.caelum.com.br
            RoR                alunos
                             java + vraptor
                                                gnarus                      sugest
ondetrabalhar.com                             scala + vraptor
                                                                                 java
         ruby
                                                                     promo
casa do código          pagamentos                                         RoR
                               java
   java + RoR

                          interestie                              analisador 1
 + projetos              sinatra + sequel
                                                                          sinatra
  sinatra + sequel
                                            exercícios
                                                RoR             analisador 2
+ 1 projeto                                                        java
 scala + play   mountable engine                                   + 1 ‘página’
     aws tickets      RoR                      + 6 projetos                      js
            RoR                                       RoR
and then...
  alumni.caelum.com.br                                           métricas
            RoR                alunos                            java + octave
                             java + vraptor
                                                gnarus                       sugest
ondetrabalhar.com                             scala + vraptor
                                                                                  java
         ruby
                                                                      promo
casa do código          pagamentos                                          RoR
                               java
   java + RoR

                          interestie                              analisador 1
 + projetos              sinatra + sequel
                                                                           sinatra
  sinatra + sequel
                                            exercícios
                                                RoR             analisador 2
+ 1 projeto                                                         java
 scala + play   mountable engine                                   + 1 ‘página’
     aws tickets      RoR                      + 6 projetos                       js
            RoR                                       RoR
and then...
  alumni.caelum.com.br                                           métricas
            RoR                alunos                            java + octave
                             java + vraptor
                                                gnarus                       sugest
ondetrabalhar.com                             scala + vraptor
                                                                                  java
         ruby
                                                                      promo
casa do código          pagamentos                                          RoR
                               java
   java + RoR

                          interestie                              analisador 1
 + projetos              sinatra + sequel
                                                                           sinatra
  sinatra + sequel
                                            exercícios
                                                RoR             analisador 2
+ 1 projeto                                                         java
 scala + play   mountable engine                                   + 1 ‘página’
     aws tickets      RoR                      + 6 projetos                       js
            RoR                                       RoR
mysql
                      and then...
   alumni.caelum.com.br                  mysql                        métricas
              RoR                  alunos                             java + octave
                                 java + vraptor      mysql
                                                     gnarus                       sugest
ondetrabalhar.com                                  scala + vraptor
                                                                                       java
           ruby
                         mysql                                             promo
mysql
casa do código           pagamentos                                              RoR
                                  java
    java + RoR

                           interestie                                  analisador 1
  + projetos              sinatra + sequel
                                                                                sinatra
   sinatra + sequel
                                                 exercícios
                                                     RoR             analisador 2
+ 1 projeto                                                              java
  scala + play     mountable engine                                     + 1 ‘página’
        aws tickets      RoR                        + 6 projetos                       js
              RoR                                            RoR
mysql
                      and then...
   alumni.caelum.com.br                  mysql                        métricas
              RoR                  alunos                             java + octave
                                                                                            redis
                                 java + vraptor      mysql
                                                     gnarus                       sugest
ondetrabalhar.com                                  scala + vraptor
                                                                                       java
           ruby
                         mysql                                             promo
mysql
casa do código           pagamentos                                              RoR
                                  java                                                      redis
    java + RoR

                           interestie                                  analisador 1
  + projetos              sinatra + sequel
                                                                                sinatra
   sinatra + sequel
                                                 exercícios
                                                     RoR             analisador 2
+ 1 projeto                                                              java
  scala + play     mountable engine                                     + 1 ‘página’
        aws tickets      RoR                        + 6 projetos                       js
              RoR                                            RoR
mysql
                        and then...
       alumni.caelum.com.br                mysql                        métricas
                  RoR                alunos                             java + octave
                                                                                              redis
                                   java + vraptor
solr                                                   mysql
                                                       gnarus                       sugest
ondetrabalhar.com                                    scala + vraptor
                                                                                         java
               ruby
                           mysql                                             promo
mysql
casa do código             pagamentos                                              RoR
                                    java                                                      redis
       java + RoR

                             interestie                                  analisador 1
  + projetos                sinatra + sequel
                                                                                  sinatra
   sinatra + sequel
                                                   exercícios
                                                       RoR             analisador 2
+ 1 projeto                                                                java
  scala + play       mountable engine                                     + 1 ‘página’
          aws tickets      RoR                        + 6 projetos                       js
                  RoR                                          RoR
mysql
                        and then...
       alumni.caelum.com.br                          mysql                        métricas
                  RoR                          alunos                             java + octave
                                                                                                        redis
                                             java + vraptor
solr                                                             mysql
                                                                 gnarus                       sugest
ondetrabalhar.com                                              scala + vraptor
                                                                                                   java
               ruby                                                                       postgresql
                                     mysql                                                promo
mysql
casa do código                       pagamentos                                              RoR
                                              java                                                      redis
       java + RoR
 postgresql                            interestie                                  analisador 1
  + projetos                          sinatra + sequel
                                                                                            sinatra
   sinatra + sequel
                                                             exercícios                    postgresql
                                                                 RoR             analisador 2
                                                                postgresql
+ 1 projeto             postgresql                                                   java
  scala + play       mountable engine                                                + 1 ‘página’
          aws tickets      RoR                                  + 6 projetos                       js
 postgresql
                  RoR                                                    RoR postgresql
mysql
                        and then...
       alumni.caelum.com.br                          mysql                        métricas
                  RoR                          alunos                             java + octave
                                                                                                        redis
                                             java + vraptor
solr                                                             mysql
                                                                 gnarus                       sugest
ondetrabalhar.com                                              java + vraptor
                                                                                                   java
               ruby                                                                       postgresql
                                     mysql                                                promo
mysql
casa do código                       pagamentos                                              RoR
                                              java                                                      redis
       java + RoR
 postgresql                            interestie                                  analisador 1
  + projetos                          sinatra + sequel
                                                                                            sinatra
   sinatra + sequel
                                                             exercícios                    postgresql
                                                                 RoR            analisador 2
                                                                postgresql
+ 1 projeto             postgresql                                                   java
  scala + play       mountable engine                                                + 1 ‘página’
          aws tickets      RoR                                  + 6 projetos                       js
 postgresql
                  RoR                                                    RoR postgresql
mysql
                      did you see it?
       alumni.caelum.com.br                          mysql                        métricas
                  RoR                          alunos                             java + octave
                                                                                                        redis
                                             java + vraptor
solr                                                             mysql
                                                                 gnarus                       sugest
ondetrabalhar.com                                              java + vraptor
                                                                                                   java
               ruby                                                                       postgresql
                                     mysql                                                promo
mysql
casa do código                       pagamentos                                              RoR
                                              java                                                      redis
       java + RoR
 postgresql                            interestie                                  analisador 1
  + projetos                          sinatra + sequel
                                                                                            sinatra
   sinatra + sequel
                                                             exercícios                    postgresql
                                                                 RoR            analisador 2
                                                                postgresql
+ 1 projeto             postgresql                                                   java
  scala + play       mountable engine                                                + 1 ‘página’
          aws tickets      RoR                                  + 6 projetos                       js
 postgresql
                  RoR                                                    RoR postgresql
mysql
                      did you see it?
       alumni.caelum.com.br                          mysql                        métricas
                  RoR                          alunos                             java + octave
                                                                                                        redis
                                             java + vraptor
solr                                                             mysql
                                                                 gnarus                       sugest
ondetrabalhar.com                                              java + vraptor
                                                                                                   java
               ruby                                                                       postgresql
                                     mysql                                                promo
mysql
casa do código                       pagamentos                                              RoR
                                              java                                                      redis
       java + RoR
 postgresql                            interestie                                  analisador 1
  + projetos                          sinatra + sequel
                                                                                            sinatra
   sinatra + sequel
                                                             exercícios                    postgresql
                                                                 RoR            analisador 2
                                                                postgresql
+ 1 projeto             postgresql                                                   java
  scala + play       mountable engine                                                + 1 ‘página’
          aws tickets      RoR                                  + 6 projetos                       js
 postgresql
                  RoR                                                    RoR postgresql
mysql
                        october 2012
       alumni.caelum.com.br                          mysql                        métricas
                  RoR                          alunos                             java + octave
                                                                                                        redis
                                             java + vraptor
solr                                                             mysql
                                                                 gnarus                       sugest
ondetrabalhar.com                                              scala + vraptor
                                                                                                   java
               ruby                                                                       postgresql
                                     mysql                                                promo
mysql
casa do código                       pagamentos                                              RoR
                                              java                                                      redis
       java + RoR
 postgresql                            interestie                                  analisador 1
  + projetos                          sinatra + sequel
                                                                                            sinatra
   sinatra + sequel
                                                             exercícios                    postgresql
                                                                 RoR             analisador 2
                                                                postgresql
+ 1 projeto             postgresql                                                   java
  scala + play       mountable engine                                                + 1 ‘página’
          aws tickets      RoR                                  + 6 projetos                       js
 postgresql
                  RoR                                                    RoR postgresql
mysql
                        october 2012
       alumni.caelum.com.br                          mysql                        métricas
                  RoR                      alunos                                 java + octave
                                                                                                        redis
solr
                                       roteiro vraptor
                                         java +                  mysql
                                                                                              sugest
                                             RoR                 gnarus
ondetrabalhar.com                                              scala + vraptor
                                                                                                   java
               ruby                                                                       postgresql
                                     mysql                                                promo
mysql
casa do código                       pagamentos                                              RoR
                                              java                                                      redis
       java + RoR
 postgresql                            interestie                                  analisador 1
  + projetos                          sinatra + sequel
                                                                                            sinatra
   sinatra + sequel
                                                             exercícios                    postgresql
                                                                 RoR             analisador 2
                                                                postgresql
+ 1 projeto             postgresql                                                   java
  scala + play       mountable engine                                                + 1 ‘página’
          aws tickets      RoR                                  + 6 projetos                       js
 postgresql
                  RoR                                                    RoR postgresql
mysql
                        october 2012
       alumni.caelum.com.br                          mysql                        métricas
                  RoR                      alunos                                 java + octave
                                       roteiro vraptor
                                         java +                                            chat redis
solr
                                             RoR
                                                                 mysql
                                                                 gnarus                      sugest
                                                                                            ???
ondetrabalhar.com                                              scala + vraptor
                                                                                                   java
               ruby                                                                       postgresql
                                     mysql                                                promo
mysql
casa do código                       pagamentos                                              RoR
                                              java                                                      redis
       java + RoR
 postgresql                            interestie                                  analisador 1
  + projetos                          sinatra + sequel
                                                                                            sinatra
   sinatra + sequel
                                                             exercícios                    postgresql
                                                                 RoR             analisador 2
                                                                postgresql
+ 1 projeto             postgresql                                                   java
  scala + play       mountable engine                                                + 1 ‘página’
          aws tickets      RoR                                  + 6 projetos                       js
 postgresql
                  RoR                                                    RoR postgresql
mysql
                        october 2012
       alumni.caelum.com.br                          mysql                        métricas
                  RoR                      alunos                                 java + octave
                                       roteiro vraptor
                                         java +                                            chat redis
solr
                                             RoR
                                                                 mysql
                                                                 gnarus                      sugest
                                                                                            ???
ondetrabalhar.com                                              scala + vraptor
                                                                                                   java
               ruby                                                                       postgresql
                                     mysql                                       badges
                                                                                     promo
mysql
casa do código                       pagamentos                                   ???        RoR
                                              java                                                      redis
       java + RoR
 postgresql                            interestie                                  analisador 1
  + projetos                          sinatra + sequel
                                                                                            sinatra
   sinatra + sequel
                                                             exercícios                    postgresql
                                                                 RoR             analisador 2
                                                                postgresql
+ 1 projeto             postgresql                                                   java
  scala + play       mountable engine                                                + 1 ‘página’
          aws tickets      RoR                                  + 6 projetos                       js
 postgresql
                  RoR                                                    RoR postgresql
mysql
                        october 2012
       alumni.caelum.com.br                          mysql                        métricas
                  RoR                      alunos                                 java + octave
                                       roteiro vraptor
                                         java +                                            chat redis
solr
                                             RoR
                                                                 mysql
                                                                 gnarus                      sugest
                                                                                            ???
ondetrabalhar.com                                              scala + vraptor
                                                                                                   java
               ruby                                                                       postgresql
                                       gráfica
                                     mysql                                       badges
                                                                                     promo
mysql
casa do código                       pagamentos
                                        ???                                       ???        RoR
                                              java                                                      redis
       java + RoR
 postgresql                            interestie                                  analisador 1
  + projetos                          sinatra + sequel
                                                                                            sinatra
   sinatra + sequel
                                                             exercícios                    postgresql
                                                                 RoR             analisador 2
                                                                postgresql
+ 1 projeto             postgresql                                                   java
  scala + play       mountable engine                                                + 1 ‘página’
          aws tickets      RoR                                  + 6 projetos                       js
 postgresql
                  RoR                                                    RoR postgresql
what we did
what we did

• refactor, extract project
what we did

• refactor, extract project
• single responsibility micro projects
what we did

• refactor, extract project
• single responsibility micro projects
• dependency injection (dumb entry point
  configuration)
10s of projects
10s of projects

• small teams (1-4 devs)
10s of projects

• small teams (1-4 devs)
• lots of micro projects (1-20 classes)
10s of projects

• small teams (1-4 devs)
• lots of micro projects (1-20 classes)
• 2 medium projects (20-200 classes)
10s of projects

• small teams (1-4 devs)
• lots of micro projects (1-20 classes)
• 2 medium projects (20-200 classes)
• 1 big legacy project (500 classes) - bigger team
10s of projects

• small teams (1-4 devs)
• lots of micro projects (1-20 classes)
• 2 medium projects (20-200 classes)
• 1 big legacy project (500 classes) - bigger team
• micro services
really small services
really small services
• small service, medium project
really small services
• small service, medium project
• micro teams
really small services
• small service, medium project
• micro teams
• if someone dies, the cost allows you to drop the
  code, start again
really small services
• small service, medium project
• micro teams
• if someone dies, the cost allows you to drop the
  code, start again
• protocol and communication is simple and stable
really small services
• small service, medium project
• micro teams
• if someone dies, the cost allows you to drop the
  code, start again
• protocol and communication is simple and stable
• protocol and communication is simple and stable
really small services
• small service, medium project
• micro teams
• if someone dies, the cost allows you to drop the
  code, start again
• protocol and communication is simple and stable
• protocol and communication is simple and stable
• protocol and communication is simple and stable
limitations




 but are we not in the replicated era?
limitations
• protocol change ==> hell


                  but are we not in the replicated era?
limitations
• protocol change ==> hell
• client project needs user data ==> replicated data

                   but are we not in the replicated era?
limitations
• protocol change ==> hell
• client project needs user data ==> replicated data
• other problems that we have no idea
                   but are we not in the replicated era?
avoid


• multiple projects, same representation
enforcing


• small projects, specialized representations
communication
changes/evolution
communication
          changes/evolution
• avoid
communication
          changes/evolution
• avoid
• avoid
communication
          changes/evolution
• avoid
• avoid
• avoid
communication
          changes/evolution
• avoid
• avoid
• avoid
• avoid
communication
       changes/evolution
• avoid
• avoid
• avoid
• avoid
• backward compatible
communication
       changes/evolution
• avoid
• avoid
• avoid
• avoid
• backward compatible
• feel the pain
“How can I evolve my service since it’s going to
break compatibility?” - unknown SOA’er
“How can I evolve my service since it’s going to
break compatibility?” - unknown SOA’er

    If it *breaks* compatibility you can not “not break
    compatibility” - basic reasoning
“How can I evolve my service since it’s going to
break compatibility?” - unknown SOA’er

    If it *breaks* compatibility you can not “not break
    compatibility” - basic reasoning

How can I prepare myself for the future, where I
am 100% sure I will want to change something? -
the wise SOA’er
“How can I evolve my service since it’s going to
break compatibility?” - unknown SOA’er

    If it *breaks* compatibility you can not “not break
    compatibility” - basic reasoning

How can I prepare myself for the future, where I
am 100% sure I will want to change something? -
the wise SOA’er

     “buy our product” - wise vendor
training platform
                    payments   3rd party provider
create payment




training platform
                       payments      3rd party provider
create payment




training platform
                       payments      3rd party provider
create payment




training platform
                       payments      3rd party provider




                                     check status
create payment




training platform
                       payments      3rd party provider




                                     check status
                                     cancel order
create payment




training platform
                            payments     3rd party provider




              cancel item                check status
                                         cancel order
create payment




training platform
                            payments     3rd party provider




              cancel item                check status
               do A, B, C
                                         cancel order
every new feature between the 2nd and 3rd
system means a protocol change between the 1st
and the 2nd
introducing hypermedia:

      simply return an URI
training platform
                    payments   3rd party provider
create payment




training platform
                       payments      3rd party provider
create payment




training platform
                       payments      3rd party provider
create payment




training platform
                       payments      3rd party provider




                                        your URI
create payment




training platform
                       payments      3rd party provider




                                        your URI
changes to the 2nd system are not reflected on
the 1st anymore
what we are trying to do
what we are trying to do

• change the online learning experience, but how?
• KIS: keep it stupid, not simple
• micro teams, throw away if necessary
• protocol and communication are stupid and stable
what it allows
what it allows
• simple
• small stable communication
• unstable projects
• teams that come and go
• knowledge transfer
• freedom to try and trash
the end
Introducing Online
   Education to
    Hypermedia
         Guilherme Silveira
 guilherme.silveira@caelum.com.br

Weitere ähnliche Inhalte

Ähnlich wie Introducing Online Education to Hypermedia

The tao-of-transformation-workshop
The tao-of-transformation-workshopThe tao-of-transformation-workshop
The tao-of-transformation-workshopDhaval Dalal
 
CHI: evaluation
CHI: evaluationCHI: evaluation
CHI: evaluationErik Duval
 
Agile in Action - Agile Overview for Developers
Agile in Action - Agile Overview for DevelopersAgile in Action - Agile Overview for Developers
Agile in Action - Agile Overview for DevelopersMatt Cowell
 
Community its easier than you think
Community its easier than you thinkCommunity its easier than you think
Community its easier than you thinkMura CMS
 
CHI: evaluation
CHI: evaluationCHI: evaluation
CHI: evaluationErik Duval
 
CHI: evaluation
CHI: evaluationCHI: evaluation
CHI: evaluationErik Duval
 
Recruiting great developers
Recruiting great developersRecruiting great developers
Recruiting great developersPer Fragemann
 
The Usability of Usability
The Usability of UsabilityThe Usability of Usability
The Usability of UsabilityAndrew Chak
 
Customer Development - Notes from the Field
Customer Development - Notes from the FieldCustomer Development - Notes from the Field
Customer Development - Notes from the FieldChristian Gammill
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing codeZivtech, LLC
 
Spotify @ Creative Summit Winter 2012
Spotify @ Creative Summit Winter 2012Spotify @ Creative Summit Winter 2012
Spotify @ Creative Summit Winter 2012Noa Resare
 
Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"bincangteknologi
 
Successful Project Presentation
Successful Project PresentationSuccessful Project Presentation
Successful Project PresentationColin Sullivan
 
Troublefree troubleshooting ian campbell sps jhb 2019
Troublefree troubleshooting ian campbell sps jhb 2019Troublefree troubleshooting ian campbell sps jhb 2019
Troublefree troubleshooting ian campbell sps jhb 2019Ian Campbell
 
Do testers have to code... to be useful?
Do testers have to code... to be useful?Do testers have to code... to be useful?
Do testers have to code... to be useful?lisacrispin
 
Introduction to Interactive Communication, fall 2011
Introduction to Interactive Communication, fall 2011Introduction to Interactive Communication, fall 2011
Introduction to Interactive Communication, fall 2011Michael Kazarnowicz
 
May sbe presentation
May sbe presentationMay sbe presentation
May sbe presentationmatinga
 

Ähnlich wie Introducing Online Education to Hypermedia (20)

The tao-of-transformation-workshop
The tao-of-transformation-workshopThe tao-of-transformation-workshop
The tao-of-transformation-workshop
 
CHI: evaluation
CHI: evaluationCHI: evaluation
CHI: evaluation
 
Mob Testing
Mob TestingMob Testing
Mob Testing
 
Agile in Action - Agile Overview for Developers
Agile in Action - Agile Overview for DevelopersAgile in Action - Agile Overview for Developers
Agile in Action - Agile Overview for Developers
 
Community its easier than you think
Community its easier than you thinkCommunity its easier than you think
Community its easier than you think
 
CHI: evaluation
CHI: evaluationCHI: evaluation
CHI: evaluation
 
CHI: evaluation
CHI: evaluationCHI: evaluation
CHI: evaluation
 
Recruiting great developers
Recruiting great developersRecruiting great developers
Recruiting great developers
 
Let the iPad CREATE
Let the iPad CREATELet the iPad CREATE
Let the iPad CREATE
 
The Usability of Usability
The Usability of UsabilityThe Usability of Usability
The Usability of Usability
 
Customer Development - Notes from the Field
Customer Development - Notes from the FieldCustomer Development - Notes from the Field
Customer Development - Notes from the Field
 
The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing code
 
Spotify @ Creative Summit Winter 2012
Spotify @ Creative Summit Winter 2012Spotify @ Creative Summit Winter 2012
Spotify @ Creative Summit Winter 2012
 
Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"Domain-Driven Design: The "What" and the "Why"
Domain-Driven Design: The "What" and the "Why"
 
Successful Project Presentation
Successful Project PresentationSuccessful Project Presentation
Successful Project Presentation
 
Troublefree troubleshooting ian campbell sps jhb 2019
Troublefree troubleshooting ian campbell sps jhb 2019Troublefree troubleshooting ian campbell sps jhb 2019
Troublefree troubleshooting ian campbell sps jhb 2019
 
Do testers have to code... to be useful?
Do testers have to code... to be useful?Do testers have to code... to be useful?
Do testers have to code... to be useful?
 
Introduction to Interactive Communication, fall 2011
Introduction to Interactive Communication, fall 2011Introduction to Interactive Communication, fall 2011
Introduction to Interactive Communication, fall 2011
 
Agile iOS
Agile iOSAgile iOS
Agile iOS
 
May sbe presentation
May sbe presentationMay sbe presentation
May sbe presentation
 

Mehr von C4Media

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoC4Media
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileC4Media
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020C4Media
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like OwnersC4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaC4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideC4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDC4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine LearningC4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at SpeedC4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsC4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsC4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerC4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleC4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeC4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereC4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing ForC4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data EngineeringC4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreC4Media
 

Mehr von C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 

Kürzlich hochgeladen

Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 

Kürzlich hochgeladen (20)

Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 

Introducing Online Education to Hypermedia

  • 1. Introducing Online Education to Hypermedia Guilherme Silveira guilherme.silveira@caelum.com.br
  • 2. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /Online-Education-Hypermedia InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month
  • 3. Presented at QCon San Francisco www.qconsf.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  • 5. who am I? • caelum.com.br founder
  • 6. who am I? • caelum.com.br founder • training, content creation, development
  • 7. who am I? • caelum.com.br founder • training, content creation, development • since -50 years old working with education
  • 8. who am I? • caelum.com.br founder • training, content creation, development • since -50 years old working with education • “arquitetura e design de software”
  • 9. who am I? • caelum.com.br founder • training, content creation, development • since -50 years old working with education • “arquitetura e design de software” • some work on rest
  • 10. who am I? • caelum.com.br founder • training, content creation, development • since -50 years old working with education • “arquitetura e design de software” • some work on rest • brazil
  • 12. what is Caelum? • 3 cities, 100 employees
  • 13. what is Caelum? • 3 cities, 100 employees • brick and mortar education
  • 14. what is Caelum? • 3 cities, 100 employees • brick and mortar education • java, ruby, agile development
  • 15. what is Caelum? • 3 cities, 100 employees • brick and mortar education • java, ruby, agile development • user groups
  • 16. what is Caelum? • 3 cities, 100 employees • brick and mortar education • java, ruby, agile development • user groups • qcon brazil, conexao java, other events
  • 18. who is this guy?
  • 20. what is Brazil? • brazil: 5565 cities
  • 21. what is Brazil? • brazil: 5565 cities • largest são paulo: 11 million
  • 22. what is Brazil? • brazil: 5565 cities • largest são paulo: 11 million • 20th: 800 thousand
  • 23. what is Brazil? • brazil: 5565 cities • largest são paulo: 11 million • 20th: 800 thousand • largest in a specific state: 296 thousand
  • 24. what is Brazil? • brazil: 5565 cities • largest são paulo: 11 million • 20th: 800 thousand • largest in a specific state: 296 thousand • fills 4 stadiums?
  • 25. what is Brazil? • brazil: 5565 cities • largest são paulo: 11 million • 20th: 800 thousand • largest in a specific state: 296 thousand • fills 4 stadiums? • non well distributed developers
  • 26. what is Caelum Online?
  • 27. what is Caelum Online? • brazil: 5565 cities
  • 28. what is Caelum Online? • brazil: 5565 cities • thousands of coffee shops
  • 29. what is Caelum Online? • brazil: 5565 cities • thousands of coffee shops • outside brazil: 10 cities
  • 30. what is Caelum Online?
  • 31. what is Caelum Online? • online learning
  • 32. what is Caelum Online? • online learning • online teaching
  • 33. what is Caelum Online? • online learning • online teaching • online practicing
  • 35. agenda • problems that an online educational platform faces
  • 36. agenda • problems that an online educational platform faces • examples
  • 37. agenda • problems that an online educational platform faces • examples • existing systems, languages, databases
  • 38. agenda • problems that an online educational platform faces • examples • existing systems, languages, databases • how to connect everything
  • 39. agenda • problems that an online educational platform faces • examples • existing systems, languages, databases • how to connect everything • really small services
  • 40. traditional online learning
  • 41. traditional online learning
  • 42. traditional online learning
  • 43. traditional online learning
  • 44. traditional online learning
  • 45. machine learning • + data • + learning • better results
  • 46. collaborative filtering • + data • + learning • better results
  • 48. recommend daily news • facebook • twitter • ...
  • 49. recommend a friend? • facebook • twitter • ...
  • 50. recommend songs • all those websites you know...
  • 52. collaborative filtering • recommend technologies that you should study
  • 53. collaborative filtering • recommend technologies that you should study • recommend courses to attend
  • 54. collaborative filtering • recommend technologies that you should study • recommend courses to attend • recommend jobs to take
  • 55. collaborative filtering • recommend technologies that you should study • recommend courses to attend • recommend jobs to take • recommend exercises to do
  • 57. exercise difficulty • MIT studies on CF and IRT
  • 58. exercise difficulty • MIT studies on CF and IRT • CF is as good as IRT
  • 59. exercise difficulty • MIT studies on CF and IRT • CF is as good as IRT • our findings: we are not big data :(
  • 60. exercise difficulty • MIT studies on CF and IRT • CF is as good as IRT • our findings: we are not big data :( • we can’t infer difficulty on multiple choice so far
  • 61. drop out rate • can we detect them before they drop out?
  • 62. how long for an exercise?
  • 63. how long for an exercise? students = [] students << [12, 150, 3, 15] students << [4, 170, 32, 25] students << [1, 10, 3, 25] students << [12, 20, 31, 15]
  • 64. finishes under 3 months?
  • 65. finishes under 3 months? labels = [1, 1, 0, 0]
  • 66. finishes under 3 months? students = [] students << [12, 150, 3, 15] students << [4, 170, 32, 25] students << [1, 10, 3, 25] students << [12, 20, 31, 15] labels = [1, 1, 0, 0]
  • 72. what about guilherme? guilherme = [6, 140, 25, 10]
  • 73. what about guilherme? guilherme = [6, 140, 25, 10] model.predict(Node.features(guilherme))
  • 75. SVM
  • 76. SVM
  • 78. fake data labels = [1, 1, 0, 0]
  • 79. fake data students = [] students << [12, 150, 3, 15] students << [4, 170, 32, 25] students << [1, 10, 3, 25] students << [12, 20, 31, 15] labels = [1, 1, 0, 0]
  • 82. real data C TRAIN ACCURACY% ACCURACY% 0.08! 93.18%! 85.71%
  • 83. SVM to classify (0,1, ...)
  • 84. teacher and tutor • multiple choice answers • open answers • code answer
  • 85. multiple choice • sucks? • is the best/easiest to test ability
  • 86. open answers • great • is the hardest to test ability • any natural language processing experts?
  • 87. code answers • great • is hard to test ability • AST, auto correction, error margins
  • 88. k-cluster • another machine learning algorithm • clustering
  • 89. compare them... • exercises • students • courses
  • 91. and find... • great exercises, not-so-great exercises
  • 92. and find... • great exercises, not-so-great exercises • great students, not-so-great students
  • 93. and find... • great exercises, not-so-great exercises • great students, not-so-great students • great courses, not-so-great courses
  • 96. common characteristics number of wrong answers height???
  • 97. common characteristics number of wrong answers height??? time spent
  • 98. common characteristics number of wrong answers height??? time spent number of exercises done
  • 99. common characteristics number of wrong answers height??? time spent number of exercises done feedback given
  • 100. common characteristics number of wrong answers height??? time spent number of exercises done feedback given feedback rating
  • 101. common characteristics number of wrong answers height??? time spent number of exercises done feedback given feedback rating likes
  • 102. common characteristics number of wrong answers height??? time spent number of exercises done feedback given feedback rating likes courses
  • 103. common characteristics number of wrong answers height??? time spent number of exercises done feedback given feedback rating likes courses quantidade de caracteres
  • 106. those are the groups
  • 107. expected: muitas perguntas, poucos erros, muitos erros poucas perguntas poucos erros, poucas perguntas, ajuda bastante
  • 108. expected: X muitas perguntas, poucos erros, muitos erros poucas perguntas poucos erros, poucas perguntas, ajuda bastante
  • 109. expected: X X muitas perguntas, poucos erros, muitos erros poucas perguntas poucos erros, poucas perguntas, ajuda bastante
  • 110. expected: X X muitas perguntas, poucos erros, muitos erros poucas perguntas X poucos erros, poucas perguntas, ajuda bastante
  • 111. found:
  • 113. found: lots of questions, more errors, less errors less questions
  • 114. found: lots of questions, more errors, less errors less questions more errors less questions, helped a lot
  • 116. we have 5000 responsibilities • data problems
  • 117. we have 5000 responsibilities • data problems • user problems
  • 118. we have 5000 responsibilities • data problems • user problems • teacher problems
  • 119. we have 5000 responsibilities • data problems • user problems • teacher problems • company problems
  • 121. we have 5000 responsibilities • we started with a small platform (mar2011)
  • 122. we have 5000 responsibilities • we started with a small platform (mar2011) • we ended up with a huge payment, chat up to certificate playform (oct2012)
  • 123. single responsibility principle
  • 124. single responsibility principle • why not apply it to the system itself?
  • 125. single responsibility principle • why not apply it to the system itself? • + dependency injection
  • 126. refactor, extract ===> exercise
  • 128. refactor, extract • constant • variable ===> exercise
  • 129. refactor, extract • constant • variable • method ===> exercise
  • 130. refactor, extract • constant • variable • method • class ===> exercise
  • 131. refactor, extract • constant • variable • method • class • library ===> exercise
  • 132. refactor, extract • constant • variable • method • class • library • project ===> exercise
  • 133. mysql caelum systems alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptor solr mysql gnarus sugest ondetrabalhar.com scala + vraptor java ruby postgresql mysql promo mysql casa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql + 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
  • 134. data analysis • http • octave/ruby/java (mahout) • octave/mysql/postgre/redis
  • 135. answer analysis • http • ruby/java • mysql/postgre/redis
  • 138. exercises • how to deal with new types of exercises? • group • simulations • auto-correction
  • 139. introducing hypermedia: simply return an URI
  • 140. training platform external exercise
  • 141. new external exercise attempt training platform external exercise
  • 142. new external exercise attempt training platform external exercise personal note: do not draw splines again
  • 143. new external exercise attempt training platform your URI external exercise personal note: do not draw splines again
  • 144. RPG activity • http • javascript • 200 lines of code • anyone can trash and rewrite in any language (except perl?)
  • 145. several autocorrectors • ruby • javascript • sql
  • 147. cloud partnership • do our training
  • 148. cloud partnership • do our training • U$ 20 coupon
  • 149. cloud partnership • do our training • U$ 20 coupon • where do you write that code?
  • 150. training platform external exercise
  • 151. new external exercise attempt training platform external exercise
  • 152. new external exercise attempt training platform your URI external exercise
  • 153. coupon activity • http • ruby • <100 lines of code
  • 155. and then... alunos java + vraptor
  • 156. and then... alumni.caelum.com.br RoR alunos java + vraptor
  • 157. and then... alumni.caelum.com.br RoR alunos java + vraptor ondetrabalhar.com ruby
  • 158. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby
  • 159. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby exercícios RoR
  • 160. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby exercícios RoR + 1 projeto scala + play
  • 161. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby exercícios RoR + 1 projeto scala + play mountable engine RoR
  • 162. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby exercícios RoR + 1 projeto scala + play mountable engine + 1 ‘página’ RoR js
  • 163. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby analisador 1 sinatra exercícios RoR + 1 projeto scala + play mountable engine + 1 ‘página’ RoR js
  • 164. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby pagamentos java analisador 1 sinatra exercícios RoR + 1 projeto scala + play mountable engine + 1 ‘página’ RoR js
  • 165. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby pagamentos java analisador 1 sinatra exercícios RoR + 1 projeto scala + play mountable engine + 1 ‘página’ RoR + 6 projetos js RoR
  • 166. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby pagamentos java analisador 1 sinatra exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ RoR + 6 projetos js RoR
  • 167. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby pagamentos java analisador 1 sinatra exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ RoR + 6 projetos js RoR
  • 168. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby casa do código pagamentos java java + RoR analisador 1 sinatra exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ RoR + 6 projetos js RoR
  • 169. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby casa do código pagamentos java java + RoR analisador 1 sinatra exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
  • 170. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby casa do código pagamentos java java + RoR interestie analisador 1 sinatra sinatra + sequel exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
  • 171. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby casa do código pagamentos java java + RoR interestie analisador 1 sinatra sinatra + sequel exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
  • 172. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus ondetrabalhar.com scala + vraptor ruby casa do código pagamentos java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
  • 173. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus sugest ondetrabalhar.com scala + vraptor java ruby casa do código pagamentos java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
  • 174. and then... alumni.caelum.com.br RoR alunos java + vraptor gnarus sugest ondetrabalhar.com scala + vraptor java ruby promo casa do código pagamentos RoR java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
  • 175. and then... alumni.caelum.com.br métricas RoR alunos java + octave java + vraptor gnarus sugest ondetrabalhar.com scala + vraptor java ruby promo casa do código pagamentos RoR java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
  • 176. and then... alumni.caelum.com.br métricas RoR alunos java + octave java + vraptor gnarus sugest ondetrabalhar.com scala + vraptor java ruby promo casa do código pagamentos RoR java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
  • 177. mysql and then... alumni.caelum.com.br mysql métricas RoR alunos java + octave java + vraptor mysql gnarus sugest ondetrabalhar.com scala + vraptor java ruby mysql promo mysql casa do código pagamentos RoR java java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
  • 178. mysql and then... alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptor mysql gnarus sugest ondetrabalhar.com scala + vraptor java ruby mysql promo mysql casa do código pagamentos RoR java redis java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
  • 179. mysql and then... alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptor solr mysql gnarus sugest ondetrabalhar.com scala + vraptor java ruby mysql promo mysql casa do código pagamentos RoR java redis java + RoR interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios RoR analisador 2 + 1 projeto java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js RoR RoR
  • 180. mysql and then... alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptor solr mysql gnarus sugest ondetrabalhar.com scala + vraptor java ruby postgresql mysql promo mysql casa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql + 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
  • 181. mysql and then... alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptor solr mysql gnarus sugest ondetrabalhar.com java + vraptor java ruby postgresql mysql promo mysql casa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql + 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
  • 182. mysql did you see it? alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptor solr mysql gnarus sugest ondetrabalhar.com java + vraptor java ruby postgresql mysql promo mysql casa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql + 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
  • 183. mysql did you see it? alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptor solr mysql gnarus sugest ondetrabalhar.com java + vraptor java ruby postgresql mysql promo mysql casa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql + 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
  • 184. mysql october 2012 alumni.caelum.com.br mysql métricas RoR alunos java + octave redis java + vraptor solr mysql gnarus sugest ondetrabalhar.com scala + vraptor java ruby postgresql mysql promo mysql casa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql + 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
  • 185. mysql october 2012 alumni.caelum.com.br mysql métricas RoR alunos java + octave redis solr roteiro vraptor java + mysql sugest RoR gnarus ondetrabalhar.com scala + vraptor java ruby postgresql mysql promo mysql casa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql + 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
  • 186. mysql october 2012 alumni.caelum.com.br mysql métricas RoR alunos java + octave roteiro vraptor java + chat redis solr RoR mysql gnarus sugest ??? ondetrabalhar.com scala + vraptor java ruby postgresql mysql promo mysql casa do código pagamentos RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql + 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
  • 187. mysql october 2012 alumni.caelum.com.br mysql métricas RoR alunos java + octave roteiro vraptor java + chat redis solr RoR mysql gnarus sugest ??? ondetrabalhar.com scala + vraptor java ruby postgresql mysql badges promo mysql casa do código pagamentos ??? RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql + 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
  • 188. mysql october 2012 alumni.caelum.com.br mysql métricas RoR alunos java + octave roteiro vraptor java + chat redis solr RoR mysql gnarus sugest ??? ondetrabalhar.com scala + vraptor java ruby postgresql gráfica mysql badges promo mysql casa do código pagamentos ??? ??? RoR java redis java + RoR postgresql interestie analisador 1 + projetos sinatra + sequel sinatra sinatra + sequel exercícios postgresql RoR analisador 2 postgresql + 1 projeto postgresql java scala + play mountable engine + 1 ‘página’ aws tickets RoR + 6 projetos js postgresql RoR RoR postgresql
  • 190. what we did • refactor, extract project
  • 191. what we did • refactor, extract project • single responsibility micro projects
  • 192. what we did • refactor, extract project • single responsibility micro projects • dependency injection (dumb entry point configuration)
  • 194. 10s of projects • small teams (1-4 devs)
  • 195. 10s of projects • small teams (1-4 devs) • lots of micro projects (1-20 classes)
  • 196. 10s of projects • small teams (1-4 devs) • lots of micro projects (1-20 classes) • 2 medium projects (20-200 classes)
  • 197. 10s of projects • small teams (1-4 devs) • lots of micro projects (1-20 classes) • 2 medium projects (20-200 classes) • 1 big legacy project (500 classes) - bigger team
  • 198. 10s of projects • small teams (1-4 devs) • lots of micro projects (1-20 classes) • 2 medium projects (20-200 classes) • 1 big legacy project (500 classes) - bigger team • micro services
  • 200. really small services • small service, medium project
  • 201. really small services • small service, medium project • micro teams
  • 202. really small services • small service, medium project • micro teams • if someone dies, the cost allows you to drop the code, start again
  • 203. really small services • small service, medium project • micro teams • if someone dies, the cost allows you to drop the code, start again • protocol and communication is simple and stable
  • 204. really small services • small service, medium project • micro teams • if someone dies, the cost allows you to drop the code, start again • protocol and communication is simple and stable • protocol and communication is simple and stable
  • 205. really small services • small service, medium project • micro teams • if someone dies, the cost allows you to drop the code, start again • protocol and communication is simple and stable • protocol and communication is simple and stable • protocol and communication is simple and stable
  • 206. limitations but are we not in the replicated era?
  • 207. limitations • protocol change ==> hell but are we not in the replicated era?
  • 208. limitations • protocol change ==> hell • client project needs user data ==> replicated data but are we not in the replicated era?
  • 209. limitations • protocol change ==> hell • client project needs user data ==> replicated data • other problems that we have no idea but are we not in the replicated era?
  • 210. avoid • multiple projects, same representation
  • 211. enforcing • small projects, specialized representations
  • 213. communication changes/evolution • avoid
  • 214. communication changes/evolution • avoid • avoid
  • 215. communication changes/evolution • avoid • avoid • avoid
  • 216. communication changes/evolution • avoid • avoid • avoid • avoid
  • 217. communication changes/evolution • avoid • avoid • avoid • avoid • backward compatible
  • 218. communication changes/evolution • avoid • avoid • avoid • avoid • backward compatible • feel the pain
  • 219. “How can I evolve my service since it’s going to break compatibility?” - unknown SOA’er
  • 220. “How can I evolve my service since it’s going to break compatibility?” - unknown SOA’er If it *breaks* compatibility you can not “not break compatibility” - basic reasoning
  • 221. “How can I evolve my service since it’s going to break compatibility?” - unknown SOA’er If it *breaks* compatibility you can not “not break compatibility” - basic reasoning How can I prepare myself for the future, where I am 100% sure I will want to change something? - the wise SOA’er
  • 222. “How can I evolve my service since it’s going to break compatibility?” - unknown SOA’er If it *breaks* compatibility you can not “not break compatibility” - basic reasoning How can I prepare myself for the future, where I am 100% sure I will want to change something? - the wise SOA’er “buy our product” - wise vendor
  • 223. training platform payments 3rd party provider
  • 224. create payment training platform payments 3rd party provider
  • 225. create payment training platform payments 3rd party provider
  • 226. create payment training platform payments 3rd party provider check status
  • 227. create payment training platform payments 3rd party provider check status cancel order
  • 228. create payment training platform payments 3rd party provider cancel item check status cancel order
  • 229. create payment training platform payments 3rd party provider cancel item check status do A, B, C cancel order
  • 230. every new feature between the 2nd and 3rd system means a protocol change between the 1st and the 2nd
  • 231. introducing hypermedia: simply return an URI
  • 232. training platform payments 3rd party provider
  • 233. create payment training platform payments 3rd party provider
  • 234. create payment training platform payments 3rd party provider
  • 235. create payment training platform payments 3rd party provider your URI
  • 236. create payment training platform payments 3rd party provider your URI
  • 237. changes to the 2nd system are not reflected on the 1st anymore
  • 238. what we are trying to do
  • 239. what we are trying to do • change the online learning experience, but how? • KIS: keep it stupid, not simple • micro teams, throw away if necessary • protocol and communication are stupid and stable
  • 241. what it allows • simple • small stable communication • unstable projects • teams that come and go • knowledge transfer • freedom to try and trash
  • 243. Introducing Online Education to Hypermedia Guilherme Silveira guilherme.silveira@caelum.com.br