SlideShare una empresa de Scribd logo
1 de 26
Speedy, Stable, and Secure:

Better Web Applications
through
Functional Languages

                            Alex Payne, Twitter
                 Future of Web Apps, Miami , 2010
It’s 2010.
It’s time to learn
something new.
It’s the year for
functional programming.
OOP
FP
Functional programming is:

Writing what should be done
instead of how.
Functional programming is:

Finding and using
mathematical abstractions
to represent programs.
Functional programming is:

Value-oriented programming.
State is transformed,
not mutated.
That’s nice.
What’s in it for me?
Speed.
Stability.
Security.
Who’s doing it?
How do I get started?
1a. Pick a language.




        ell




                                     l
        re




                                   am
        g

     ala

     sk
    oju

    lan




                                 OC
  Ha
  Sc



  F#
  Cl

  Er



dynamic                             static


          by typing discipline
1b. Pick a language.

  JVM             custom           .NET CLR

Clojure          Haskell           F#
Scala            Erlang
                 OCaml



             by runtime platform
19
                86
                   Er
              19     lan
                90       g
                   Ha
              19      sk
                96       ell
                   OC
              20       am
                02         l
                   F#


by maturity
              20
                03
                   Sc
                      ala
              20
                               1c. Pick a language.




                07
                   Cl
                     oju
                         re
2a. Pick a framework.

Scala         →         Lift
Clojure       → Compojure
Haskell       →     HAppS
F#            → WebSharper
OCaml         →    Ocsigen
Erlang        →    Erlyweb
2b. Introduce gradually.




old stack   integration point   new FP thing
Okay, I think I get it.
But why the sales pitch?
I’m your user.
I want you to succeed.
Functional programming
 is a tool for success.
Thanks!

Más contenido relacionado

Más de Alex Payne

Mind The Tools
Mind The ToolsMind The Tools
Mind The ToolsAlex Payne
 
Strange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in ComputingStrange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in ComputingAlex Payne
 
The Business Value of Twitter
The Business Value of TwitterThe Business Value of Twitter
The Business Value of TwitterAlex Payne
 
Twitter API 2.0
Twitter API 2.0Twitter API 2.0
Twitter API 2.0Alex Payne
 
The Interaction Design Of APIs
The Interaction Design Of APIsThe Interaction Design Of APIs
The Interaction Design Of APIsAlex Payne
 
Why Scala for Web 2.0?
Why Scala for Web 2.0?Why Scala for Web 2.0?
Why Scala for Web 2.0?Alex Payne
 
The Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeThe Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeAlex Payne
 
Protecting Public Hotspots
Protecting Public HotspotsProtecting Public Hotspots
Protecting Public HotspotsAlex Payne
 
Twitter at BarCamp 2008
Twitter at BarCamp 2008Twitter at BarCamp 2008
Twitter at BarCamp 2008Alex Payne
 
Securing Rails
Securing RailsSecuring Rails
Securing RailsAlex Payne
 
Designing Your API
Designing Your APIDesigning Your API
Designing Your APIAlex Payne
 
Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007Alex Payne
 

Más de Alex Payne (13)

Mind The Tools
Mind The ToolsMind The Tools
Mind The Tools
 
Strange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in ComputingStrange Loop 2009 Keynote: Minimalism in Computing
Strange Loop 2009 Keynote: Minimalism in Computing
 
The Business Value of Twitter
The Business Value of TwitterThe Business Value of Twitter
The Business Value of Twitter
 
Twitter API 2.0
Twitter API 2.0Twitter API 2.0
Twitter API 2.0
 
The Interaction Design Of APIs
The Interaction Design Of APIsThe Interaction Design Of APIs
The Interaction Design Of APIs
 
Why Scala for Web 2.0?
Why Scala for Web 2.0?Why Scala for Web 2.0?
Why Scala for Web 2.0?
 
The Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to AdobeThe Twitter API: A Presentation to Adobe
The Twitter API: A Presentation to Adobe
 
Protecting Public Hotspots
Protecting Public HotspotsProtecting Public Hotspots
Protecting Public Hotspots
 
Twitter at BarCamp 2008
Twitter at BarCamp 2008Twitter at BarCamp 2008
Twitter at BarCamp 2008
 
Securing Rails
Securing RailsSecuring Rails
Securing Rails
 
Why Scala?
Why Scala?Why Scala?
Why Scala?
 
Designing Your API
Designing Your APIDesigning Your API
Designing Your API
 
Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007Scaling Twitter - Railsconf 2007
Scaling Twitter - Railsconf 2007
 

Último

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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
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
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
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
 
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
 
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
 
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
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
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
 
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
 

Último (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
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
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
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
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
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
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
 
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
 
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
 
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
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
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
 
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
 

Speedy, Stable, and Secure: Better Web Apps Through Functional Languages

Notas del editor

  1. Introducing myself.
  2. We’ve been building the Web for almost twenty years. In that time, we’ve seen tools come and go: Perl and CGI scripts, Cold Fusion, the popularity of building websites in Java, PHP, the rise of Ruby on Rails and dynamic languages.
  3. We go from job to job and site to site, from language to language and framework to framework. But these tools are mostly incremental improvements on the tools that came before them. Take the best practices of the last generation, roll them up, call it a new tool. But what if there was a new tool, something strange but valuable, something that would transform the way you work, the way you solve problems?
  4. I have a challenge for you. It’s early in 2010. It’s only February. By the end of the year, incorporate a functional programming language somewhere in your stack. If you do, I will guarantee that it benefits what you do. Today, we’re going to talk about why I’m so sure that functional programming is going to be beneficial to you.
  5. Object-oriented programming is a bit like making a film. You have your classes, they’re archetypes. Your actors are instances of those classes. You give them a script and you set your actors in motion. Once you know how to do it, it’s easy to make more films. But there’s always a lot that can go wrong when making one.
  6. Lots of ways to describe FP. A couple favorites: I think of FP as a bit like sitting down to do an equation at a chalkboard. Your program is an equation, and it all has to balance out. But once it does, you can be pretty sure that it’s correct.
  7. A general definition.
  8. Getting more specific.
  9. Getting at the heart of the matter.
  10. I want to talk about where functional languages fit best. There’s certain places where we have good tools. For example, JavaScript is a great tool for making things happen on a web page that’s been delivered to a browser. C is a great tool when you need direct access to hardware and explicit control of memory management. But there are plenty of places where you might need a new tool in your toolbox.
  11. There are lots of numbers out there, but the fact is that every app has its own performance characteristics and concerns. The generalization I can make is that all the languages I’m going to talk about today have reasonable performance, often competitive with or better than the dynamic languages you’re probably working in. Some are even competitive with Java, C++, and pure C in some scenarios. I can tell you from personal experience that it’s nice to be working in a language where speed isn’t a concern 90% of the time.
  12. We’ve found that functional languages are great for building core infrastructure. We happen to use Scala, which has a robust type system, and the compiler helps us catch a lot of problems before we ever go into production. But type system aside, a functional approach also means we have more confidence that even highly concurrent systems are doing what they should be. We can reuse high-level functional components and know that they’re going to be reliable in other systems, too.
  13. There’s a reason why the NSA goes to Galois, a Haskell and OCaml shop, to build provably correct implementations of cryptosystems. The combination of robust type systems and FP techniques make it possible to model complex interactions within a system, but guarantee that they all work together correctly. The emphasis in functional programming on limiting mutation of state makes it harder to put the wrong data in the wrong place. FP can give you tools to model capabilities easily and explicitly. It’s not a magic security silver bullet – nothing is – but FP is a nice thing to have in your security toolbox.
  14. This is the big slide of company logos that tells you you’re not crazy and alone. These are just some well-known web companies working with functional languages. If you get into financial services, defense, and other mission-critical fields, you find an even higher penetration of FP.
  15. When it comes to typing disciplines, there’s a nice variety of functional languages to choose from. And, of course, I’m leaving some perfectly lovely functional languages out and focusing on languages that have a fair bit of momentum in the web app world right now.
  16. Another way to pick a language is based on its runtime. Personally, my money is on languages like Scala, Clojure, and F# that build on and interface with mature, widely deployed platforms like the JVM and the .NET CLR. I think they have the best blend of practicality and FP goodness.
  17. Still a third way to pick your functional language of choice is by age. Some of these languages are quite new, like Clojure. Some of them go back decades. There are advantages and disadvantages on both counts.
  18. There are plenty of great web frameworks out there for functional languages. If you like frameworks, you’re starting from the ground up, and you want to dive into FP, this path is for you.
  19. Another way to introduce FP at your organization is to build new pieces of core infrastructure. This is nice because it isolates the problem and largely frees you up from worrying how to get this newfangled thing to talk to the rest of your system. You just pick an integration point – a database, a message queue, an RPC layer like Thrift – and go from there.
  20. So why am I up here telling you to learn a functional language? Because I’m probably a user of your products, or I’m going to be. I want your application to be faster. I want your site to be up. I want your site to be resilient to attacks.
  21. That’s the point of all this. Anyone who’s done it will tell you that functional programming makes you a better programmer, that it helps you see problems differently. But I’m interested in a new narrative, one in which functional languages are synonymous with successful companies. So learn a functional language in 2010. Be successful. And spread the word.