SlideShare une entreprise Scribd logo
1  sur  61
Railsify your web
                                development
                                  Thomas Lundström, Softhouse
                                      @thomaslundstrom

                          Scandinavian Developer Conference, Gothenburg
                                           April 4, 2011



                                                       http://www.flickr.com/photos/mtl_shag/320960018/
måndag den 4 april 2011
Agenda


                    • About this session
                    • 12 Practices


                                           http://www.flickr.com/photos/puntodevista/84796578/
måndag den 4 april 2011
About this session



                                    http://www.flickr.com/photos/78986993@N00/3335393740/
måndag den 4 april 2011
About this session


                    •     Day job:
                          consultant, .NET/Java

                    •     Rails dev at night




                                                  http://www.flickr.com/photos/78986993@N00/3335393740/
måndag den 4 april 2011
About this session

                    • Ruby on Rails is
                     • Simple
                     • Productive
                     • Easy

                                         http://www.flickr.com/photos/78986993@N00/3335393740/
måndag den 4 april 2011
About this session


                    • This started me asking why


                                           http://www.flickr.com/photos/78986993@N00/3335393740/
måndag den 4 april 2011
About this session


                    • Answer: part practices, part Ruby
                    • Can we steal the practices?


                                            http://www.flickr.com/photos/78986993@N00/3335393740/
måndag den 4 april 2011
About this session


                    • Disclaimer: the practices aren’t invented in
                          Rails, but they are in the culture




                                               http://www.flickr.com/photos/78986993@N00/3335393740/
måndag den 4 april 2011
12 Practices



                                  http://www.flickr.com/photos/kapungo/1408329358/
måndag den 4 april 2011
BDD



                                http://www.flickr.com/photos/fredcoree/301890340/
måndag den 4 april 2011
BDD

                    • Writing automated acceptance test suites
                    • Focus on users’ needs
                    • Drive the outer layer (UI, Web Services,
                          API)



                                              http://www.flickr.com/photos/fredcoree/301890340/
måndag den 4 april 2011
BDD


                    • Executable specifications


                                                 http://www.flickr.com/photos/fredcoree/301890340/
måndag den 4 april 2011
BDD

                    • .NET: Specflow/Cucumber
                    • Java: JBehave/Cucumber
                    • Application- and tech-specific driver

                                               http://www.flickr.com/photos/fredcoree/301890340/
måndag den 4 april 2011
TDD



                                http://www.flickr.com/photos/mroach/2448878900/
måndag den 4 april 2011
TDD


                    • We all know this, right?
                    • However ... how to do it well?


                                                http://www.flickr.com/photos/mroach/2448878900/
måndag den 4 april 2011
TDD


                    • “Build Quality In” (Deming)
                    • Hands-on process that helps designing the
                          software




                                               http://www.flickr.com/photos/mroach/2448878900/
måndag den 4 april 2011
TDD


                    • TDD is an acquired skill
                    • One or two in the team spearheads the
                          TDD drive




                                              http://www.flickr.com/photos/mroach/2448878900/
måndag den 4 april 2011
MVC



                            http://www.flickr.com/photos/spaceamoeba/3044883638/
måndag den 4 april 2011
MVC


                    • Splitting logic into (Domain) Model,View,
                          Controller




                                             http://www.flickr.com/photos/spaceamoeba/3044883638/
måndag den 4 april 2011
MVC


                    • Splitting of different types of logic
                    • Known structure in your web app


                                                http://www.flickr.com/photos/spaceamoeba/3044883638/
måndag den 4 april 2011
MVC

                    • Disentangle
                    • Refactor
                    • Un-spaghettize

                                       http://www.flickr.com/photos/spaceamoeba/3044883638/
måndag den 4 april 2011
Collaborative database
                        development


                                http://www.flickr.com/photos/tomsaint/3051540613/
måndag den 4 april 2011
Collaborative database
                        development

                    • Easy setup of a private database
                    • Your structural change is yours only until
                          committed




                                                http://www.flickr.com/photos/tomsaint/3051540613/
måndag den 4 april 2011
Collaborative database
                        development

                    • Simple database refactorings
                    • “I can’t work since the change made by
                          John put the DB in a strange state”




                                                   http://www.flickr.com/photos/tomsaint/3051540613/
måndag den 4 april 2011
Collaborative database
                        development
                    • Migrations
                     • .NET: Migrator.NET
                     • Java: Flyway, DBDeploy, mybatis
                          (comparison at https://code.google.com/
                          p/flyway/)



                                                http://www.flickr.com/photos/tomsaint/3051540613/
måndag den 4 april 2011
App-private database



                                       http://www.flickr.com/photos/evert-jan/72568626/
måndag den 4 april 2011
App-private database

                    • Previously: devs in one team share one DB
                    • Here: different products share one DB
                    • Integration #fail

                                               http://www.flickr.com/photos/evert-jan/72568626/
måndag den 4 april 2011
App-private database


                          • One more degree of freedom


                                                 http://www.flickr.com/photos/evert-jan/72568626/
måndag den 4 april 2011
App-private database


                    • Long-term architectural work...


                                                http://www.flickr.com/photos/evert-jan/72568626/
måndag den 4 april 2011
RESTful URL:s



                                   http://www.flickr.com/photos/jimg944/3202247839
måndag den 4 april 2011
RESTful URL:s

                    • Readable and understandable HTTP-based
                          interface
                          • GET http://app.com/users/thomas/view
                          • PUT http://app.com/users/thomas/
                            edit.json



                                                  http://www.flickr.com/photos/jimg944/3202247839
måndag den 4 april 2011
RESTful URL:s

                    • No cognitive mismatch of App vs. URL
                    • Uniform, standard interface
                    • Stateless
                    • Cacheable

                                              http://www.flickr.com/photos/jimg944/3202247839
måndag den 4 april 2011
RESTful URL:s


                    • Thoughtful URL design


                                              http://www.flickr.com/photos/jimg944/3202247839
måndag den 4 april 2011
Devops



                               http://www.flickr.com/photos/jimg944/3123212129/
måndag den 4 april 2011
Devops


                    • Dev team = Ops team
                    • T-shaped people


                                            http://www.flickr.com/photos/jimg944/3123212129/
måndag den 4 april 2011
Devops


                    • Removal of Ops-Devs wall


                                             http://www.flickr.com/photos/jimg944/3123212129/
måndag den 4 april 2011
Devops


                    • Organizational change


                                              http://www.flickr.com/photos/jimg944/3123212129/
måndag den 4 april 2011
Convention over
                           configuration


                                    http://www.flickr.com/photos/aforero/339031109/
måndag den 4 april 2011
Convention over
                           configuration

                    • Minimizing the configuration
                    • Feature level/code level


                                               http://www.flickr.com/photos/aforero/339031109/
måndag den 4 april 2011
Convention over
                           configuration


                    • Easier to set up and use the app


                                                http://www.flickr.com/photos/aforero/339031109/
måndag den 4 april 2011
Convention over
                           configuration

                    • Remove default configuration
                    • Take decisions!


                                              http://www.flickr.com/photos/aforero/339031109/
måndag den 4 april 2011
DRY



                                http://www.flickr.com/photos/paulmannix/286817119/
måndag den 4 april 2011
DRY


                    • Don’t Repeat Yourself
                    • Remember: not only for source code!


                                             http://www.flickr.com/photos/paulmannix/286817119/
måndag den 4 april 2011
DRY - SASS
                          .content-navigation {
                            border-color: #3bbfce;
                            color: #2b9eab;
                          }

                          .border {
                            padding: 8px;
                            margin: 8px;
                            border-color: #3bbfce;
                          }



                                                 http://www.flickr.com/photos/paulmannix/286817119/
måndag den 4 april 2011
DRY - SASS
                          $blue: #3bbfce
                          $margin: 16px

                          .content-navigation
                            border-color: $blue
                            color: darken($blue, 9%)

                          .border
                            padding: $margin / 2
                            margin: $margin / 2
                            border-color: $blue


                                                   http://www.flickr.com/photos/paulmannix/286817119/
måndag den 4 april 2011
DRY


                    • Cleaner code


                                           http://www.flickr.com/photos/paulmannix/286817119/
måndag den 4 april 2011
DRY


                    • Smart selection of tools


                                                 http://www.flickr.com/photos/paulmannix/286817119/
måndag den 4 april 2011
Scaling out



                                  http://www.flickr.com/photos/geraldford/3078861139/
måndag den 4 april 2011
Scaling out


                    • Don’t buy bigger servers, buy more!


                                              http://www.flickr.com/photos/geraldford/3078861139/
måndag den 4 april 2011
Scaling out


                    • Cheaper scaling


                                        http://www.flickr.com/photos/geraldford/3078861139/
måndag den 4 april 2011
Scaling out


                    • Shared-nothing
                    • No Session


                                       http://www.flickr.com/photos/geraldford/3078861139/
måndag den 4 april 2011
OSS



                                http://www.flickr.com/photos/wordridden/3107810417/
måndag den 4 april 2011
OSS


                    • Get along with the OSS culture
                    • Use & publish!


                                             http://www.flickr.com/photos/wordridden/3107810417/
måndag den 4 april 2011
OSS


                    • Publishing: developer good-will
                    • Using: ready-made functionality


                                              http://www.flickr.com/photos/wordridden/3107810417/
måndag den 4 april 2011
OSS

                    • Use 3rd party plugins in infrastructure
                    • Harvest infrastructure
                    • .NET devs: don’t focus on MS tools only

                                             http://www.flickr.com/photos/wordridden/3107810417/
måndag den 4 april 2011
Reference management



                             http://www.flickr.com/photos/saragoldsmith/2896007790/
måndag den 4 april 2011
Reference management


                    • Structured dependency management


                                          http://www.flickr.com/photos/saragoldsmith/2896007790/
måndag den 4 april 2011
Reference management

                    • Simple and easy dependency mgmt
                     • Finding
                     • Updating
                    • Control of transitive deps

                                           http://www.flickr.com/photos/saragoldsmith/2896007790/
måndag den 4 april 2011
Reference management


                    • Java: Maven/Ivy
                    • .NET: NuGet/OpenWrap


                                        http://www.flickr.com/photos/saragoldsmith/2896007790/
måndag den 4 april 2011
What not to use?


                    • ActiveRecord pattern
                    • Scaffolds


                                             http://www.flickr.com/photos/deapeajay/2143573706/
måndag den 4 april 2011
Thanks!

                    • Thomas Lundström, Softhouse
                    • thomas.lundstrom@softhouse.se
                    • @thomaslundstrom
                    • http://blog.thomaslundstrom.com

                                              http://www.flickr.com/photos/mtl_shag/320960018/
måndag den 4 april 2011

Contenu connexe

Similaire à Railsify your web development

让开发也懂前端
让开发也懂前端让开发也懂前端
让开发也懂前端lifesinger
 
Fit botpresentation
Fit botpresentationFit botpresentation
Fit botpresentationmskmoorthy
 
Using+javascript+to+build+native+i os+applications
Using+javascript+to+build+native+i os+applicationsUsing+javascript+to+build+native+i os+applications
Using+javascript+to+build+native+i os+applicationsMuhammad Ikram Ul Haq
 
20110910 WebSig1日2011学校_非サーバサイドエンジニアクラス選択授業_上杉先生
20110910 WebSig1日2011学校_非サーバサイドエンジニアクラス選択授業_上杉先生20110910 WebSig1日2011学校_非サーバサイドエンジニアクラス選択授業_上杉先生
20110910 WebSig1日2011学校_非サーバサイドエンジニアクラス選択授業_上杉先生WebSig24/7
 
Intro to Micro-frameworks
Intro to Micro-frameworksIntro to Micro-frameworks
Intro to Micro-frameworksjsmith92
 
Mobile apps using drupal as base system SumitK DrupalCon Chicago
Mobile apps using drupal as base system   SumitK DrupalCon ChicagoMobile apps using drupal as base system   SumitK DrupalCon Chicago
Mobile apps using drupal as base system SumitK DrupalCon ChicagoSumit Kataria
 
神戸ITフェスティバル|進化したウェブとの向き合い方〜ビジネス・社会・そして個人〜
神戸ITフェスティバル|進化したウェブとの向き合い方〜ビジネス・社会・そして個人〜神戸ITフェスティバル|進化したウェブとの向き合い方〜ビジネス・社会・そして個人〜
神戸ITフェスティバル|進化したウェブとの向き合い方〜ビジネス・社会・そして個人〜Rikkyo University
 
Really Simple Strategies: Keeping Track of your Organization and Issues Online
Really Simple Strategies: Keeping Track of your Organization and Issues OnlineReally Simple Strategies: Keeping Track of your Organization and Issues Online
Really Simple Strategies: Keeping Track of your Organization and Issues OnlineCanadaHelps / MyCharityConnects
 
Data Driven Innovation
Data Driven InnovationData Driven Innovation
Data Driven Innovationideas.org
 
Data Driven Innovation
Data Driven InnovationData Driven Innovation
Data Driven InnovationSimon Grice
 
Atlassian RoadTrip 2011 Slide Deck
Atlassian RoadTrip 2011 Slide DeckAtlassian RoadTrip 2011 Slide Deck
Atlassian RoadTrip 2011 Slide DeckAtlassian
 
Education 2.3 m erwin
Education 2.3 m erwinEducation 2.3 m erwin
Education 2.3 m erwinErwin Huang
 
Doctrine In The Real World sflive2011 Paris
Doctrine In The Real World sflive2011 ParisDoctrine In The Real World sflive2011 Paris
Doctrine In The Real World sflive2011 ParisJonathan Wage
 
Apache Solr - search for everyone!
Apache Solr - search for everyone!Apache Solr - search for everyone!
Apache Solr - search for everyone!Jaran Flaath
 
Node js techtalksto
Node js techtalkstoNode js techtalksto
Node js techtalkstoJason Diller
 
Phorum - PHP Community Conference
Phorum - PHP Community ConferencePhorum - PHP Community Conference
Phorum - PHP Community ConferenceBrian Moon
 
PyCon 2011 Scaling Disqus
PyCon 2011 Scaling DisqusPyCon 2011 Scaling Disqus
PyCon 2011 Scaling Disquszeeg
 
Unwritten ota2008 keynote
Unwritten ota2008 keynoteUnwritten ota2008 keynote
Unwritten ota2008 keynoteMiguel Guhlin
 
Epler slideshow ppt
Epler slideshow pptEpler slideshow ppt
Epler slideshow pptchris_epler
 

Similaire à Railsify your web development (20)

让开发也懂前端
让开发也懂前端让开发也懂前端
让开发也懂前端
 
Fit botpresentation
Fit botpresentationFit botpresentation
Fit botpresentation
 
Using+javascript+to+build+native+i os+applications
Using+javascript+to+build+native+i os+applicationsUsing+javascript+to+build+native+i os+applications
Using+javascript+to+build+native+i os+applications
 
20110910 WebSig1日2011学校_非サーバサイドエンジニアクラス選択授業_上杉先生
20110910 WebSig1日2011学校_非サーバサイドエンジニアクラス選択授業_上杉先生20110910 WebSig1日2011学校_非サーバサイドエンジニアクラス選択授業_上杉先生
20110910 WebSig1日2011学校_非サーバサイドエンジニアクラス選択授業_上杉先生
 
Intro to Micro-frameworks
Intro to Micro-frameworksIntro to Micro-frameworks
Intro to Micro-frameworks
 
Mobile apps using drupal as base system SumitK DrupalCon Chicago
Mobile apps using drupal as base system   SumitK DrupalCon ChicagoMobile apps using drupal as base system   SumitK DrupalCon Chicago
Mobile apps using drupal as base system SumitK DrupalCon Chicago
 
神戸ITフェスティバル|進化したウェブとの向き合い方〜ビジネス・社会・そして個人〜
神戸ITフェスティバル|進化したウェブとの向き合い方〜ビジネス・社会・そして個人〜神戸ITフェスティバル|進化したウェブとの向き合い方〜ビジネス・社会・そして個人〜
神戸ITフェスティバル|進化したウェブとの向き合い方〜ビジネス・社会・そして個人〜
 
Really Simple Strategies: Keeping Track of your Organization and Issues Online
Really Simple Strategies: Keeping Track of your Organization and Issues OnlineReally Simple Strategies: Keeping Track of your Organization and Issues Online
Really Simple Strategies: Keeping Track of your Organization and Issues Online
 
Data Driven Innovation
Data Driven InnovationData Driven Innovation
Data Driven Innovation
 
Data Driven Innovation
Data Driven InnovationData Driven Innovation
Data Driven Innovation
 
Atlassian RoadTrip 2011 Slide Deck
Atlassian RoadTrip 2011 Slide DeckAtlassian RoadTrip 2011 Slide Deck
Atlassian RoadTrip 2011 Slide Deck
 
Education 2.3 m erwin
Education 2.3 m erwinEducation 2.3 m erwin
Education 2.3 m erwin
 
Doctrine In The Real World sflive2011 Paris
Doctrine In The Real World sflive2011 ParisDoctrine In The Real World sflive2011 Paris
Doctrine In The Real World sflive2011 Paris
 
Apache Solr - search for everyone!
Apache Solr - search for everyone!Apache Solr - search for everyone!
Apache Solr - search for everyone!
 
Node js techtalksto
Node js techtalkstoNode js techtalksto
Node js techtalksto
 
How medium uses Neo4j
How medium uses Neo4jHow medium uses Neo4j
How medium uses Neo4j
 
Phorum - PHP Community Conference
Phorum - PHP Community ConferencePhorum - PHP Community Conference
Phorum - PHP Community Conference
 
PyCon 2011 Scaling Disqus
PyCon 2011 Scaling DisqusPyCon 2011 Scaling Disqus
PyCon 2011 Scaling Disqus
 
Unwritten ota2008 keynote
Unwritten ota2008 keynoteUnwritten ota2008 keynote
Unwritten ota2008 keynote
 
Epler slideshow ppt
Epler slideshow pptEpler slideshow ppt
Epler slideshow ppt
 

Dernier

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: 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
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 

Dernier (20)

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
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
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: 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
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 

Railsify your web development

  • 1. Railsify your web development Thomas Lundström, Softhouse @thomaslundstrom Scandinavian Developer Conference, Gothenburg April 4, 2011 http://www.flickr.com/photos/mtl_shag/320960018/ måndag den 4 april 2011
  • 2. Agenda • About this session • 12 Practices http://www.flickr.com/photos/puntodevista/84796578/ måndag den 4 april 2011
  • 3. About this session http://www.flickr.com/photos/78986993@N00/3335393740/ måndag den 4 april 2011
  • 4. About this session • Day job: consultant, .NET/Java • Rails dev at night http://www.flickr.com/photos/78986993@N00/3335393740/ måndag den 4 april 2011
  • 5. About this session • Ruby on Rails is • Simple • Productive • Easy http://www.flickr.com/photos/78986993@N00/3335393740/ måndag den 4 april 2011
  • 6. About this session • This started me asking why http://www.flickr.com/photos/78986993@N00/3335393740/ måndag den 4 april 2011
  • 7. About this session • Answer: part practices, part Ruby • Can we steal the practices? http://www.flickr.com/photos/78986993@N00/3335393740/ måndag den 4 april 2011
  • 8. About this session • Disclaimer: the practices aren’t invented in Rails, but they are in the culture http://www.flickr.com/photos/78986993@N00/3335393740/ måndag den 4 april 2011
  • 9. 12 Practices http://www.flickr.com/photos/kapungo/1408329358/ måndag den 4 april 2011
  • 10. BDD http://www.flickr.com/photos/fredcoree/301890340/ måndag den 4 april 2011
  • 11. BDD • Writing automated acceptance test suites • Focus on users’ needs • Drive the outer layer (UI, Web Services, API) http://www.flickr.com/photos/fredcoree/301890340/ måndag den 4 april 2011
  • 12. BDD • Executable specifications http://www.flickr.com/photos/fredcoree/301890340/ måndag den 4 april 2011
  • 13. BDD • .NET: Specflow/Cucumber • Java: JBehave/Cucumber • Application- and tech-specific driver http://www.flickr.com/photos/fredcoree/301890340/ måndag den 4 april 2011
  • 14. TDD http://www.flickr.com/photos/mroach/2448878900/ måndag den 4 april 2011
  • 15. TDD • We all know this, right? • However ... how to do it well? http://www.flickr.com/photos/mroach/2448878900/ måndag den 4 april 2011
  • 16. TDD • “Build Quality In” (Deming) • Hands-on process that helps designing the software http://www.flickr.com/photos/mroach/2448878900/ måndag den 4 april 2011
  • 17. TDD • TDD is an acquired skill • One or two in the team spearheads the TDD drive http://www.flickr.com/photos/mroach/2448878900/ måndag den 4 april 2011
  • 18. MVC http://www.flickr.com/photos/spaceamoeba/3044883638/ måndag den 4 april 2011
  • 19. MVC • Splitting logic into (Domain) Model,View, Controller http://www.flickr.com/photos/spaceamoeba/3044883638/ måndag den 4 april 2011
  • 20. MVC • Splitting of different types of logic • Known structure in your web app http://www.flickr.com/photos/spaceamoeba/3044883638/ måndag den 4 april 2011
  • 21. MVC • Disentangle • Refactor • Un-spaghettize http://www.flickr.com/photos/spaceamoeba/3044883638/ måndag den 4 april 2011
  • 22. Collaborative database development http://www.flickr.com/photos/tomsaint/3051540613/ måndag den 4 april 2011
  • 23. Collaborative database development • Easy setup of a private database • Your structural change is yours only until committed http://www.flickr.com/photos/tomsaint/3051540613/ måndag den 4 april 2011
  • 24. Collaborative database development • Simple database refactorings • “I can’t work since the change made by John put the DB in a strange state” http://www.flickr.com/photos/tomsaint/3051540613/ måndag den 4 april 2011
  • 25. Collaborative database development • Migrations • .NET: Migrator.NET • Java: Flyway, DBDeploy, mybatis (comparison at https://code.google.com/ p/flyway/) http://www.flickr.com/photos/tomsaint/3051540613/ måndag den 4 april 2011
  • 26. App-private database http://www.flickr.com/photos/evert-jan/72568626/ måndag den 4 april 2011
  • 27. App-private database • Previously: devs in one team share one DB • Here: different products share one DB • Integration #fail http://www.flickr.com/photos/evert-jan/72568626/ måndag den 4 april 2011
  • 28. App-private database • One more degree of freedom http://www.flickr.com/photos/evert-jan/72568626/ måndag den 4 april 2011
  • 29. App-private database • Long-term architectural work... http://www.flickr.com/photos/evert-jan/72568626/ måndag den 4 april 2011
  • 30. RESTful URL:s http://www.flickr.com/photos/jimg944/3202247839 måndag den 4 april 2011
  • 31. RESTful URL:s • Readable and understandable HTTP-based interface • GET http://app.com/users/thomas/view • PUT http://app.com/users/thomas/ edit.json http://www.flickr.com/photos/jimg944/3202247839 måndag den 4 april 2011
  • 32. RESTful URL:s • No cognitive mismatch of App vs. URL • Uniform, standard interface • Stateless • Cacheable http://www.flickr.com/photos/jimg944/3202247839 måndag den 4 april 2011
  • 33. RESTful URL:s • Thoughtful URL design http://www.flickr.com/photos/jimg944/3202247839 måndag den 4 april 2011
  • 34. Devops http://www.flickr.com/photos/jimg944/3123212129/ måndag den 4 april 2011
  • 35. Devops • Dev team = Ops team • T-shaped people http://www.flickr.com/photos/jimg944/3123212129/ måndag den 4 april 2011
  • 36. Devops • Removal of Ops-Devs wall http://www.flickr.com/photos/jimg944/3123212129/ måndag den 4 april 2011
  • 37. Devops • Organizational change http://www.flickr.com/photos/jimg944/3123212129/ måndag den 4 april 2011
  • 38. Convention over configuration http://www.flickr.com/photos/aforero/339031109/ måndag den 4 april 2011
  • 39. Convention over configuration • Minimizing the configuration • Feature level/code level http://www.flickr.com/photos/aforero/339031109/ måndag den 4 april 2011
  • 40. Convention over configuration • Easier to set up and use the app http://www.flickr.com/photos/aforero/339031109/ måndag den 4 april 2011
  • 41. Convention over configuration • Remove default configuration • Take decisions! http://www.flickr.com/photos/aforero/339031109/ måndag den 4 april 2011
  • 42. DRY http://www.flickr.com/photos/paulmannix/286817119/ måndag den 4 april 2011
  • 43. DRY • Don’t Repeat Yourself • Remember: not only for source code! http://www.flickr.com/photos/paulmannix/286817119/ måndag den 4 april 2011
  • 44. DRY - SASS .content-navigation { border-color: #3bbfce; color: #2b9eab; } .border { padding: 8px; margin: 8px; border-color: #3bbfce; } http://www.flickr.com/photos/paulmannix/286817119/ måndag den 4 april 2011
  • 45. DRY - SASS $blue: #3bbfce $margin: 16px .content-navigation border-color: $blue color: darken($blue, 9%) .border padding: $margin / 2 margin: $margin / 2 border-color: $blue http://www.flickr.com/photos/paulmannix/286817119/ måndag den 4 april 2011
  • 46. DRY • Cleaner code http://www.flickr.com/photos/paulmannix/286817119/ måndag den 4 april 2011
  • 47. DRY • Smart selection of tools http://www.flickr.com/photos/paulmannix/286817119/ måndag den 4 april 2011
  • 48. Scaling out http://www.flickr.com/photos/geraldford/3078861139/ måndag den 4 april 2011
  • 49. Scaling out • Don’t buy bigger servers, buy more! http://www.flickr.com/photos/geraldford/3078861139/ måndag den 4 april 2011
  • 50. Scaling out • Cheaper scaling http://www.flickr.com/photos/geraldford/3078861139/ måndag den 4 april 2011
  • 51. Scaling out • Shared-nothing • No Session http://www.flickr.com/photos/geraldford/3078861139/ måndag den 4 april 2011
  • 52. OSS http://www.flickr.com/photos/wordridden/3107810417/ måndag den 4 april 2011
  • 53. OSS • Get along with the OSS culture • Use & publish! http://www.flickr.com/photos/wordridden/3107810417/ måndag den 4 april 2011
  • 54. OSS • Publishing: developer good-will • Using: ready-made functionality http://www.flickr.com/photos/wordridden/3107810417/ måndag den 4 april 2011
  • 55. OSS • Use 3rd party plugins in infrastructure • Harvest infrastructure • .NET devs: don’t focus on MS tools only http://www.flickr.com/photos/wordridden/3107810417/ måndag den 4 april 2011
  • 56. Reference management http://www.flickr.com/photos/saragoldsmith/2896007790/ måndag den 4 april 2011
  • 57. Reference management • Structured dependency management http://www.flickr.com/photos/saragoldsmith/2896007790/ måndag den 4 april 2011
  • 58. Reference management • Simple and easy dependency mgmt • Finding • Updating • Control of transitive deps http://www.flickr.com/photos/saragoldsmith/2896007790/ måndag den 4 april 2011
  • 59. Reference management • Java: Maven/Ivy • .NET: NuGet/OpenWrap http://www.flickr.com/photos/saragoldsmith/2896007790/ måndag den 4 april 2011
  • 60. What not to use? • ActiveRecord pattern • Scaffolds http://www.flickr.com/photos/deapeajay/2143573706/ måndag den 4 april 2011
  • 61. Thanks! • Thomas Lundström, Softhouse • thomas.lundstrom@softhouse.se • @thomaslundstrom • http://blog.thomaslundstrom.com http://www.flickr.com/photos/mtl_shag/320960018/ måndag den 4 april 2011