schedule Nov 14th 04:00 - 04:45 PM place Ball Room 1

'Let it crash' gets thrown around a lot in the Erlang community. An experienced
programmer (with understandably different experiences) on first encountering
this idea in Erlang is often found asking what we let crash? And what happens
after?

I will attempt to answer this question.

Erlang puts distributed systems programming ideas front and center. We'll also
talk about this in the context of letting processes crash and how that affects the
design of our software.


 
 

Outline/Structure of the Talk

- What should happen after the crash?
- What can crash and what shouldn't?
- How does this affect software design in Erlang


At each step, we will make comparisons to other programming languages &
examine these ideas in action in popular Erlang codebases

Learning Outcome

Erlang/Elixir developers will come out with more reasoned process design (for their beam process) and this in turn makes their system more robust and maintainable.

Target Audience

Programmers familiar with either erlang/elixir and OTP

Prerequisites for Attendees

I will be talking about processes, and some OTP constructs freely (GenServers & Supervisors in particular). Being familiar with these constructs is necessary.

schedule Submitted 1 month ago

Public Feedback

comment Suggest improvements to the Speaker
  • Naresh Jain
    By Naresh Jain  ~  3 weeks ago
    reply Reply

    Failing gracefully is critical for distributed systems. So it is nice to see this proposal.

    I'm guessing this is based on your personal experience working on OTP systems. Where can I read more about your experience and how you've handled this? Might be helpful to add some of those details to the proposal.

    Thanks.

    • Naresh Jain
      By Naresh Jain  ~  3 weeks ago
      reply Reply

      Hi Ravi, looking forward to hearing from you.

      • Ravi Chandra Padmala
        By Ravi Chandra Padmala  ~  2 weeks ago
        reply Reply

        Hey Naresh,

        This is all based on experiences I've had designing and building an elixir application to handle significant concurrent traffic this year. I don't have a write up about the failure handling aspects of this project anywhere else at this time. Though, some of my colleagues gave a talk last year about the same experience[1].

        I won't be talking about a solution to graceful failure. I intend to focus on the design considerations that will have to be taken into account when trying to fail gracefully on an OTP system. I will also compare this to choices made on non-OTP systems.


        Thanks

         

        1. https://confengine.com/functional-conf-2018/proposal/7772/the-road-to-a-masterless-multi-node-distributed-system-in-elixir

         

        • Naresh Jain
          By Naresh Jain  ~  2 weeks ago
          reply Reply

          Thanks for the clarification, Ravi. Could you please share a couple of design considerations you would make and their alternative in non-OTP systems? That would be really helpful.

          • Ravi Chandra Padmala
            By Ravi Chandra Padmala  ~  2 weeks ago
            reply Reply

            Some points I hope to touch upon:

            1. Not using exceptions for control flow and how that translates to an OTP environment - You mostly still don't need to do this. How this works for HTTP servers is slightly different from say, how this would work for message handlers.

            2. Doing the same thing as OTP systems but without the isolation in other languages. Either as http servers that are able to handle exceptions at a layer before escaping out of individual handler threads) or as servers where the entire process is restarted (using supervisord, etc). The costs here.

            3. A significant takeaway we had during our experience, and I plan to talk about this a lot - separating stateful and stateless processes. Talk about how existing systems do this, and why this is so critical. And how even when you think you're doing it, you can be doing it wrong if the interactions between them aren't isolated correctly.

            4. While designing the process tree for an OTP application, I think along with isolation, a lot of attention needs to be paid to how processes will recover. For example, a common pattern of connection pools being a set of processes, why this is necessary and where else we may want to do similar things.

             

            This is just a short dump from my notes. I do intend to refine this quite a bit for the talk.

             


  • Liked Aaron W Hsu
    keyboard_arrow_down

    Aaron W Hsu - Programming Obesity: A Code Health Epidemic

    45 Mins
    Keynote
    Beginner

    Programs are getting fat. They're becoming slow. They're taking up more computing resources. They're getting harder to maintain and more complex from the ground up. Layer upon layer of sophistication is causing us to lose our ability to predict what software will do. Where's that bug? Why is everything going so slowly? Am I even using the right data structures? Where's that important point in the documentation again?

    What's happened to us? In this meta-dive into the nature of our approach to programming, we will explore some of the dangers of our current approaches to programming and the how/why of our current programming obesity problem. We will look at real case studies and see just how bad the situation can be.

    But we will also explore how we can battle these sources of obesity. In this passionate plea for code that we can gain control over again, we will look at examples of how we can return to a state of high-performance on all levels, from code size to code scalability. We will look at the principles that can help us to reach leaner, more efficient, more usable, less buggy code. We will hopefully find some light at the end of the tunnel, and how we can change our outlook on programming to push ourselves towards code that benefits not only ourselves, but also those that will come after us.

  • Liked Andrea Leopardi
    keyboard_arrow_down

    Andrea Leopardi - Software Librarians

    Andrea Leopardi
    Andrea Leopardi
    Core Team Member
    Elixir Lang
    schedule 2 months ago
    Sold Out!
    45 Mins
    Talk
    Beginner

    Libraries are the building blocks of software. All applications I've worked with make heavy use of libraries. But who writes the libraries? In this talk, I want to share my perspective as a library author, and talk about library design, open source, extensibility, documentation, and people.

  • Liked Alexander Granin
    keyboard_arrow_down

    Alexander Granin - Hierarchical Free Monads and Software Design in Functional Programming

    Alexander Granin
    Alexander Granin
    Sr. Haskell Developer
    Juspay
    schedule 2 months ago
    Sold Out!
    45 Mins
    Talk
    Advanced

    Functional Programming is going through the same process of rethinking as Object Oriented Programming has passed already. FP today is not only something mystical, something barely applicable for day-to-day tasks, but rather a whole philosophy of building big, complex applications, with own tools, approaches and methodologies. We can see a lot of ideas about software design and architecture emerging from the FP community: talks, books, articles. We’re actively discussing Final Tagless, Free Monads, effect systems and other approaches, but it seems the theme not yet covered and we don’t know about possibilities we have.

    In this talk, I’ll tell you about the power of Free Monads in building complex applications in Haskell and PureScript. These applications will be satisfying the requirements like maintainability, testability, simplicity. You’ll know how to create a safe concurrent application state, how to divide the application into layers and how to keep the code sane. In fact, you can do the same with Final Tagless or extensible effects, but the approach with hierarchical Free Monads has some specific properties making it the best tool to separate concerns and create a very interesting eDSLs with different semantics.

    The talk is based on the ideas I’m describing in my book “Functional Design and Architecture”. I also gave several talks about this theme earlier (you can find all my talks here).

    I’ve used these ideas to build software for different companies, including Juspay (Bengaluru), Restaumatic (Poland), Enecuum (Hong Kong). We’ve created several interesting technologies that were not possible to make without Free Monads. Some of them are open sourced.

  • Liked Tamizhvendan S
    keyboard_arrow_down

    Tamizhvendan S - Building an E-Commerce Marketplace Middleware in Clojure

    Tamizhvendan S
    Tamizhvendan S
    Lead Consultant
    Ajira
    schedule 1 month ago
    Sold Out!
    45 Mins
    Case Study
    Beginner

    Have you ever wondered how we can build a real-world, production-ready, end-to-end application using the functional programming principles? Immutability, Pure Functions and all other functional programming things sound good on paper but How can we build something useful by applying it?

    At Ajira, We recently built an e-commerce marketplace middleware in Clojure for a leading retail chain to sell their products on multiple e-commerce sites seamlessly. In this case study, we are going to build a minimal version of this project using which I will be sharing how we implemented it.

  • Liked Morten Kromberg
    keyboard_arrow_down

    Morten Kromberg - Delivering your APLs

    Morten Kromberg
    Morten Kromberg
    CXO
    Dyalog
    schedule 1 month ago
    Sold Out!
    45 Mins
    Tutorial
    Beginner

    Most talks on APL at FunctionalConf have focused on the way array oriented programming allows you to quickly deliver concise and efficient solutions to problems with an analytical core. This talk will focus on the development environment, and follow the life of an APL code snippet from it's interactive discovery, via testing and debugging, through to delivery as a web service and a shared object, embedded into a solution implemented in Python.

  • Liked Aaron W Hsu
    keyboard_arrow_down

    Aaron W Hsu - APL Training Wheels

    45 Mins
    Tutorial
    Beginner

    APL is getting a lot of attention lately due to its potential for very high performance portability and suitability for both rapid prototyping of complex solutions as well as deployment of complex algorithms to high-speed, modern parallel hardware. It has the potential to vastly improve the speed, scalability, and size of your code bases. But APL has a reputation as an intimidating language to learn.

    In this back to the basics tutorial, we will explore the core of APL, and focus on those areas that usually trip up the beginner in learning APL. We will also walk you through how to approach an APL expression, how to reason about them, and how to read them efficiently. We will teach you the skills that the expert APLer has internalized, and how you can work through these skills externally and explicitly in a way that will help you to eventually internalize these critical skills in a way that makes you efficient at using APL on real world problems.

  • Liked Suvrat Apte
    keyboard_arrow_down

    Suvrat Apte - How debuggers work in Lispy languages

    Suvrat Apte
    Suvrat Apte
    Backend Engineer
    Helpshift
    schedule 1 month ago
    Sold Out!
    45 Mins
    Talk
    Intermediate

    Debuggers are one of the most essential tools for any kind of development.

    Debuggers in Lispy languages make use of Lisp's homoiconicity. They are a bit different from debuggers for languages like C or Java.

    This kind of information is usually not needed in day to day development and hence it remains hidden.

    In this talk, I will take Clojure's cider-debug as an example and explain how it uses homoiconicity. Along with cider-debug, I will also talk about REPLs and how REPL client-server communication happens (with nREPL as an example).

  • Liked Sreenidhi Nair
    keyboard_arrow_down

    Sreenidhi Nair - Learnings from using haskell in production

    20 Mins
    Experience Report
    Intermediate

    Over a period of 7 years, we have applied Haskell across Web apps, compilers, parsers for our customers across various industries. This is our report on how some of the unique features of Haskell have not only helped us create stable production environments but also break barriers. On the other hand, there is a high cost of on-boarding new developers and few other pain points. So, is Haskell worth the investment?

  • Liked Mangala Kader
    keyboard_arrow_down

    Mangala Kader - Understanding the pitfalls in Erlang / Elixir and steering clear from them

    45 Mins
    Talk
    Beginner

    Erlang has been in production for more than 30 years and a highly battle-tested robust system, which is being used by everybody including Telecom systems that provides 99.99% uptime. Elixir has been built on top of Erlang overcoming the shortcomings of the language and also using meta-programming, it has opened a new paradigm of looking at the language itself. I want to show what Elixir is to the audience and minute nuances that every experienced or inexperienced developer should be aware of before jumping into the magical erlang and elixir world.

  • Liked Allister Beharry
    keyboard_arrow_down

    Allister Beharry - Lightweight dependent types for scientific computing

    Allister Beharry
    Allister Beharry
    Software Developer
    Freelancer
    schedule 1 month ago
    Sold Out!
    45 Mins
    Demonstration
    Intermediate

    Sylvester is an F# DSL for scientific computing which implements an advanced type system where vector, matrix, tensor, neural-network and other types have numeric properties like dimension sizes, rank, layer node size, etc., encoded as part of the type. Type-level constraints for operations like matrix multiplication or network layer construction utilize the F# type checker as a type-checker for linear algebra and other mathematical domains which allows for type-level verification of mathematical operations and for Intellisense-enabled IDEs to provide immediate feedback that helps the user avoid errors in mathematical expressions..

  • Liked Nikhil More
    keyboard_arrow_down

    Nikhil More - Do you OOP in Elixir?

    Nikhil More
    Nikhil More
    Sr. Engineer
    Volansys
    schedule 1 month ago
    Sold Out!
    20 Mins
    Experience Report
    Beginner

    One of the strategies being adopted by RoR or Java software developers in adopting Elixir is they have not yet adapted themselves to unlearn the OOP in developing the web systems. This has caused OOP concepts to creep into full fledged Elixir systems. This presentation seeks to highlight these subtle points that need to be avoided to make the code more FP and less OOP.

  • Liked Ravi Chandra Padmala
    keyboard_arrow_down

    Ravi Chandra Padmala - Interactive fiction: An adventure through pop type-systems

    Ravi Chandra Padmala
    Ravi Chandra Padmala
    Partner
    nilenso
    schedule 1 month ago
    Sold Out!
    20 Mins
    Demonstration
    Beginner

    Having spent more than 10 years 'learning haskell', on and off, 4 days a month,
    4 months a year (in a good year), you know you're better off writing enterprise
    Lisp for the rest of your career.

    But suddenly out of nowhere you find purpose, and now you need to build a game.

    This is that game.