Introducing Online Education to Hypermedia

338 views

Published on

Video and slides synchronized, mp3 and slide download available at http://bit.ly/XCw0Ka.

Guilherme Silveira discusses the difficulties faced by an online educational platform and corresponding solutions implemented at Caelum, their curriculum - systems, languages and databases – and how everything works. Filmed at qconsf.com.

Guilherme Silveira is Head Instructor at Caelum, a training and consulting company. He is the creator of Restfulie, Editorial Chief of InfoQ Brazil, technical editor for a Brazilian magazine, co-founder of the largest online Portuguese speaking Java user group. Currently writing and recording a Rest from Scratch series showing how to create REST systems using hypermedia. @guilhermecaelum

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
338
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introducing Online Education to Hypermedia

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

×