The Power of Functional Programming and Static Type Systems in Server-Side Web Applications

The Power of Functional Programming and Static Type Systems in Server-Side Web Applications

The Power of Functional Programming and Static Type Systems in Server-Side Web Applications Oskar Wickström https://wickstrom.tech Kats Conf 2, Dublin, Feb 2017 @owickstrom Elegant Weapons for a More Civilized Page @owickstrom • I live and work in Malmö, Sweden • Started out in music • Found PHP around 2011, then saved by FP soon after • Worked on the Oden language last year • Currently building CodeScene at work, mostly in Clojure • Building Hyper in free time Me @owickstrom • Started out in music • Found PHP around 2011, then saved by FP soon after • Worked on the Oden language last year • Currently building CodeScene at work, mostly in Clojure • Building Hyper in free time Me • I live and work in Malmö, Sweden @owickstrom • Found PHP around 2011, then saved by FP soon after • Worked on the Oden language last year • Currently building CodeScene at work, mostly in Clojure • Building Hyper in free time Me • I live and work in Malmö, Sweden • Started out in music @owickstrom • Worked on the Oden language last year • Currently building CodeScene at work, mostly in Clojure • Building Hyper in free time Me • I live and work in Malmö, Sweden • Started out in music • Found PHP around 2011, then saved by FP soon after @owickstrom • Currently building CodeScene at work, mostly in Clojure • Building Hyper in free time Me • I live and work in Malmö, Sweden • Started out in music • Found PHP around 2011, then saved by FP soon after • Worked on the Oden language last year @owickstrom • Building Hyper in free time Me • I live and work in Malmö, Sweden • Started out in music • Found PHP around 2011, then saved by FP soon after • Worked on the Oden language last year • Currently building CodeScene at work, mostly in Clojure @owickstrom Me • I live and work in Malmö, Sweden • Started out in music • Found PHP around 2011, then saved by FP soon after • Worked on the Oden language last year • Currently building CodeScene at work, mostly in Clojure • Building Hyper in free time @owickstrom • Design • Type-Level Routing • XHR Clients • Future Work • Overview: Functional Programming and Web Applications • What about Server-Side Rendering? • Static Typing for Server-Side Web • Hyper Agenda @owickstrom • Design • Type-Level Routing • XHR Clients • Future Work • What about Server-Side Rendering? • Static Typing for Server-Side Web • Hyper Agenda • Overview: Functional Programming and Web Applications @owickstrom • Design • Type-Level Routing • XHR Clients • Future Work • Static Typing for Server-Side Web • Hyper Agenda • Overview: Functional Programming and Web Applications • What about Server-Side Rendering? @owickstrom • Design • Type-Level Routing • XHR Clients • Future Work • Hyper Agenda • Overview: Functional Programming and Web Applications • What about Server-Side Rendering? • Static Typing for Server-Side Web @owickstrom • Design • Type-Level Routing • XHR Clients • Future Work Agenda • Overview: Functional Programming and Web Applications • What about Server-Side Rendering? • Static Typing for Server-Side Web • Hyper @owickstrom • Type-Level Routing • XHR Clients • Future Work Agenda • Overview: Functional Programming and Web Applications • What about Server-Side Rendering? • Static Typing for Server-Side Web • Hyper • Design @owickstrom • XHR Clients • Future Work Agenda • Overview: Functional Programming and Web Applications • What about Server-Side Rendering? • Static Typing for Server-Side Web • Hyper • Design • Type-Level Routing @owickstrom • Future Work Agenda • Overview: Functional Programming and Web Applications • What about Server-Side Rendering? • Static Typing for Server-Side Web • Hyper • Design • Type-Level Routing • XHR Clients @owickstrom Agenda • Overview: Functional Programming and Web Applications • What about Server-Side Rendering? • Static Typing for Server-Side Web • Hyper • Design • Type-Level Routing • XHR Clients • Future Work @owickstrom Overview: Functional Programming and Web Applications @owickstrom • FP influences Javascript • ECMAScript 6 has higher-order functions, arrow function syntax • Libraries like Underscore, Rambda, Fantasy Land • React is functional at its core • Functional Reactive Programming (FRP) • Javascript as a compile target for FP languages • Still, main focus is single-page apps Functional Programming Influence @owickstrom • ECMAScript 6 has higher-order functions, arrow function syntax • Libraries like Underscore, Rambda, Fantasy Land • React is functional at its core • Functional Reactive Programming (FRP) • Javascript as a compile target for FP languages • Still, main focus is single-page apps Functional Programming Influence • FP influences Javascript @owickstrom • Libraries like Underscore, Rambda, Fantasy Land • React is functional at its core • Functional Reactive Programming (FRP) • Javascript as a compile target for FP languages • Still, main focus is single-page apps Functional Programming Influence • FP influences Javascript • ECMAScript 6 has higher-order functions, arrow function syntax @owickstrom • React is functional at its core • Functional Reactive Programming (FRP) • Javascript as a compile target for FP languages • Still, main focus is single-page apps Functional Programming Influence • FP influences Javascript • ECMAScript 6 has higher-order functions, arrow function syntax • Libraries like Underscore, Rambda, Fantasy Land @owickstrom • Functional Reactive Programming (FRP) • Javascript as a compile target for FP languages • Still, main focus is single-page apps Functional Programming Influence • FP influences Javascript • ECMAScript 6 has higher-order functions, arrow function syntax • Libraries like Underscore, Rambda, Fantasy Land • React is functional at its core @owickstrom • Javascript as a compile target for FP languages • Still, main focus is single-page apps Functional Programming Influence • FP influences Javascript • ECMAScript 6 has higher-order functions, arrow function syntax • Libraries like Underscore, Rambda, Fantasy Land • React is functional at its core • Functional Reactive Programming (FRP) @owickstrom • Still, main focus is single-page apps Functional Programming Influence • FP influences Javascript • ECMAScript 6 has higher-order functions, arrow function syntax • Libraries like Underscore, Rambda, Fantasy Land • React is functional at its core • Functional Reactive Programming (FRP) • Javascript as a compile target for FP languages @owickstrom Functional Programming Influence • FP influences Javascript • ECMAScript 6 has higher-order functions, arrow function syntax • Libraries like Underscore, Rambda, Fantasy Land • React is functional at its core • Functional Reactive Programming (FRP) • Javascript as a compile target for FP languages • Still, main focus is single-page apps @owickstrom • Work more like desktop applications • There are a lot of these frameworks in JS • Angular, Ember, Meteor, React (with friends) • Without Javascript, you get nothing • Reinventing the browser Single-Page Applications @owickstrom • There are a lot of these frameworks in JS • Angular, Ember, Meteor, React (with friends) • Without Javascript, you get nothing • Reinventing the browser Single-Page Applications • Work more like desktop applications @owickstrom • Angular, Ember, Meteor, React (with friends) • Without Javascript, you get nothing • Reinventing the browser Single-Page Applications • Work more like desktop applications • There are a lot of these frameworks in JS @owickstrom • Without Javascript, you get nothing • Reinventing the browser Single-Page Applications • Work more like desktop applications • There are a lot of these frameworks in JS • Angular, Ember, Meteor, React (with friends) @owickstrom • Reinventing the browser Single-Page Applications • Work more like desktop applications • There are a lot of these frameworks in JS • Angular, Ember, Meteor, React (with friends) • Without Javascript, you get nothing @owickstrom Single-Page Applications • Work more like desktop applications • There are a lot of these frameworks in JS • Angular, Ember, Meteor, React (with friends) • Without Javascript, you get nothing • Reinventing the browser @owickstrom What about Server-Side Rendering? @owickstrom Progressive Enhancement @owickstrom 80/20 @owickstrom • Goal: one framework that runs on both client and server • “Free progressive enhancements” • The client and server state machines • Are we really talking about initial rendering? “Isomorphic” Web Applications @owickstrom • “Free progressive enhancements” • The client and server state machines • Are we really talking about initial rendering? “Isomorphic” Web Applications • Goal: one framework that runs on both client and server @owickstrom • The client and server state machines • Are we really talking about initial rendering? “Isomorphic” Web Applications • Goal: one framework that runs on both client and server • “Free progressive enhancements” @owickstrom • Are we really talking about initial rendering? “Isomorphic” Web Applications • Goal: one framework that runs on both client and server • “Free progressive enhancements” • The client and server state machines @owickstrom “Isomorphic” Web Applications • Goal: one framework that runs on both client and server • “Free progressive enhancements” • The client and server state machines • Are we really talking about initial rendering? @owickstrom • Hooks in on link and form events • Requests pages over XHR with special header • Server responds with only inner content • PJAX swaps the inner content on the client PJAX @owickstrom • Requests pages over XHR with special header

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    155 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us