confengine.com
Open in
urlscan Pro
2a06:98c1:3121::7
Public Scan
Submitted URL: https://t.gistmail1.com/c/lLViTuwDA1yJGlipqchZnHnNn838cuw3/click?signature=9d10e6e1d8c226b5ae5066b74b10f85ce1c1f04a&url=...
Effective URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich?cf_id=NvVGGo&utm_campaign=schedule&utm_content=sc...
Submission: On February 24 via api from US — Scanned from DE
Effective URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich?cf_id=NvVGGo&utm_campaign=schedule&utm_content=sc...
Submission: On February 24 via api from US — Scanned from DE
Form analysis
2 forms found in the DOMPOST
<form id="waitlistForm" action="" method="post" class="form-horizontal" align="left">
<input type="hidden" id="waitlist_entity_id" name="waitlist_entity_id" value="">
<h4 style="text-align: left" id="waitlist_modal_title"></h4>
<div class="card padding-lr-2 padding-bottom-2">
<div class="col xs12 m6 margin-top-2">
<div class="col xs12">
<h5>Name<sup class="red-text">*</sup></h5>
</div>
<div class="col xs12">
<input type="text" name="inputName" id="inputName" placeholder="Name" value="" required="">
</div>
<div class="clearfix"></div>
</div>
<div class="col xs12 m6 margin-top-2">
<div class="col xs12">
<h5>Email Address<sup class="red-text">*</sup></h5>
</div>
<div class="col xs12">
<input type="email" name="inputEmail" id="inputEmail" placeholder="Email Address" value="" required="">
</div>
<div class="clearfix"></div>
</div>
<div class="clearfix"></div>
<div class="col xs12 m6 margin-top-2">
<div class="col xs12">
<h5>Phone Number<sup class="red-text">*</sup></h5>
</div>
<div class="col xs12">
<input type="text" name="inputPhone" id="inputPhone" placeholder="Your Phone Number" value="" maxlength="14" required="">
</div>
</div>
<div class="col xs12 m6 margin-top-2">
<div class="col xs12">
<h5>City<sup class="red-text">*</sup></h5>
</div>
<div class="col xs12">
<input type="text" name="inputCity" id="inputCity" placeholder="City" value="" required="">
</div>
</div>
<div class="clearfix"></div>
</div>
<div class="modal-footer">
<button id="cancel_waitlist_btn" class="btn-flat orange-text">Cancel</button>
<button id="save_waitlist_btn" class="btn waves-effect waves-light success">Sign Up</button>
</div>
</form>
POST
<form id="userQuestionForm" method="post" class="form-horizontal">
<div class="control-group">
<div class="margin-2">
<h5>Need help? Send us a message...</h5>
</div>
<div>
<textarea id="inputFAQUserQuestion" name="inputFAQUserQuestion" class="skip-tinymce" placeholder="Give feedback or ask for help" required="" minlength="3" rows="5" style="height: initial;"></textarea>
</div>
<div class="clearfix"></div>
<div class="col xs12 m6 margin-top-2">
<h5 class="no-margin">Name</h5>
<div id="input_user_name_div">
<input type="text" id="inputFAQUserName" required="" value="" placeholder="Enter your name here" maxlength="100" minlength="3">
</div>
</div>
<div class="col xs12 m6 margin-top-2">
<h5 class="no-margin">Email</h5>
<div id="input_email_div">
<input type="email" id="inputFAQUserEmail" required="" value="" placeholder="Enter your email here" maxlength="100" minlength="3">
</div>
</div>
<div class="col xs12 margin-2 center">
<button id="save_question_btn" class="btn waves-effect waves-light success margin-left" type="submit">
<i class="material-icons notranslate va-top">send</i> Send <img class="hide middle" id="spinner" src="/static/assets/img/spin-green-0915957822.gif" alt="Spinner">
</button>
</div>
</div>
</form>
Text Content
Cookie Policy This website uses cookies to give you a seamless experience. Learn more Got it! menu Program Schedule * 0 Cart arrow_drop_down * No items in cart person Login * Functional Conf 2022 * * language PROGRAM arrow_drop_down * storage Submissions * date_range Schedule * speaker_notes Interviews * video_library Videos * add_shopping_cart REGISTER * local_play SPONSORS * chat MINGLE 0 * face PEOPLE arrow_drop_down * record_voice_over Speakers * people_outline Program Committee * group_work Attendees * view_list Leaderboard * feedback SURVEYS * explore ABOUT arrow_drop_down * description Info * update Activity Log * show_chart Statistics * timer Timeline * * person Login * subtitles My Passes * subtitles Account Balance * pages My Profile * developer_board My Events * assignment My Proposals * visibility My Watchlist * local_play My Sponsorships * notifications Notifications * * power_settings_new Logout search share dns List View view_quilt Rich View NAME* EMAIL ADDRESS* PHONE NUMBER* CITY* Cancel Sign Up 02:30 PM ROSIE THE ROBOT OPERATING SYSTEM IN ERLANG THEME : CODE BEAM LITE NATALIA CHECHINA CONSULTANT DEVELOPER ERLANG SOLUTIONS UNITED KINGDOM LUCA SUCCI CREATOR OF ROSIE . UNITED KINGDOM Intermediate Session PLACEZOOM SCHEDULE 02:30 - 03:15 PM Case Study Robots are exciting. Lots of progress in robotics in terms of research, tools, and state-of-the-art libraries that we see in modern robots became possible due to Robot Operating System (ROS). It is the most popular open-source robotics middleware that enables roboticists from both academia and industry to collaborate and relatively easy get robots up and running. However, ROS is neither scalable, nor fault-tolerant, and these are areas in which the Erlang programming language has lots to offer. In this talk, we'll introduce ROSiE (Robot Operating System integrating Erlang) that merges togetherness and state-of-the-art of the open-source robotics world with expertise in scalability and fault-tolerance of Erlang. We'll talk about our vision, finds, and progress so far content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29756-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 04:00 PM WHAT'S NEW IN GRADUALIZER? GRADUALLY TYPING ERLANG AND ELIXIR THEME : CODE BEAM LITE RADEK SZYMCZYSZYN TECH LEAD ERLANG SOLUTIONS KRAKÓW POLAND Beginner Session PLACEZOOM SCHEDULE 04:00 - 04:45 PM Talk Gradual typing is a bit like static typing, because it provides error messages if your code has types and specs - and any errors, obviously. Gradual typing is also a bit like dynamic typing, because it doesn't require all the functions to have specs and just agrees when you say: "Trust me, I'm an engineer!" Gradualizer, introduced at Code Beam Stockholm by Josef Svenningsson, is a gradual typechecker for Erlang. I'll describe some changes, improvements, and challenges we faced and managed to overcome in 2021. I'll also show how to type check not only Erlang, but also Elixir code. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29742-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 05:00 PM MNESIA_ROCKSDB 2 - MNESIA BACKEND PLUGIN ON STEROIDS THEME : CODE BEAM LITE ULF WIGER LEAD DEVELOPER AETERNITY SWEDEN Intermediate Session PLACEZOOM SCHEDULE 05:00 - 05:45 PM Talk The Aeternity Core blockchain system has been using mnesia with the mnesia_rocksdb backend plugin since it went live in 2017, and now handles a 100 GB database. In this talk, we talk about our experiences and present an evolution of the mnesia_rocksdb plugin. In the new version, we introduce a new API, allowing applications to use the fast RocksDb low-level API and its advanced features, while respecting Mnesia metadata and even indexing support. Mnesia-level and rocksdb-level access can coexist in the same system, with a bit of care. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29741-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 06:30 PM LIVING THE XKCD 927 DREAM WITH OPENTELEMETRY 1.0 THEME : CODE BEAM LITE GREG MEFFORD PRINCIPAL FULL-STACK ENGINEER STORD UNITED STATES Intermediate Session PLACEZOOM SCHEDULE 06:30 - 07:15 PM Talk Have you ever experienced vendor lock-in from your observability tooling? Don't you wish you could instrument your code once and send telemetry data to multiple vendors to see what their platforms have to offer before signing a contract and investing a lot of engineering time? The future is now, with OpenTelemetry! OpenTelemetry has finally reached general availability, with the Erlang and Elixir library leading the way as one of the first official implementations to be compliant with this new industry specification. Now is the time to start thinking about how to get your services instrumented using this exciting new vendor-neutral instrumentation. This talk will quickly cover the basics you need to know to get started and send data to both open-source tooling and vendor platforms, so that you can get the observability you need, without being locked into a specific vendor's instrumentation library! content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29743-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 07:30 PM DISTRIBUTED ELIXIR (LESSONS FROM HCA HEALTHCARE’S PROJECT WATERPARK) THEME : APPLYING FP BRYAN HUNTER ENTERPRISE FELLOW HCA HEALTHCARE UNITED STATES Intermediate Session PLACEZOOM SCHEDULE 07:30 - 08:15 PM Keynote At HCA Healthcare, we built Waterpark– a continuously available, geographically distributed, high velocity Enterprise Integration Platform. We built it from scratch in Elixir. Elixir and the ErlangVM are very powerful tools. Need to model millions of things? No problem. Need processes to self-heal when things break? No problem. Need to model millions of things that self heal on computers scattered across a continent? Hmmm… for that you’ve got some work to do, but in Elixir that work is very doable and fun. In this nuts-and-bolts session, we will discuss the distributed computing bits that are in-the-box with Elixir and what is missing. We will cover the missing bits that we built and “why”. Topics include: hashing functions, distributed process registries, the mailroom pattern, server topology, leader election, consensus, actor replication and recovery, and hot code loading. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29714-info THEATERS SLIDES VIDEO_LIBRARY VIDEO CODE BEAM LITE THU, MAR 24 TIMEZONE: ASIA/KOLKATA (IST) 14:00 OPENING TALK BY FRANCESCO CESARINI SCHEDULE 02:00 - 02:20 PM (20 MINS) 14:30 add_circle ROSIE THE ROBOT OPERATING SYSTEM IN ERLANG schedule 02:30 - 03:15 PM IST place Zoom people 2 Interested Intermediate Session NATALIA CHECHINA CONSULTANT DEVELOPER ERLANG SOLUTIONS UNITED KINGDOM LUCA SUCCI CREATOR OF ROSIE . UNITED KINGDOM Case Study THEATERS SLIDES VIDEO_LIBRARY VIDEO 15:30 TEA/COFFEE BREAK SCHEDULE 03:30 - 04:00 PM (30 MINS) 16:00 add_circle WHAT'S NEW IN GRADUALIZER? GRADUALLY TYPING ERLANG AND ELIXIR schedule 04:00 - 04:45 PM IST place Zoom people 3 Interested Beginner Session RADEK SZYMCZYSZYN TECH LEAD ERLANG SOLUTIONS KRAKÓW POLAND Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO 17:00 add_circle MNESIA_ROCKSDB 2 - MNESIA BACKEND PLUGIN ON STEROIDS schedule 05:00 - 05:45 PM IST place Zoom people 1 Interested Intermediate Session ULF WIGER LEAD DEVELOPER AETERNITY SWEDEN Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO 18:00 EXPERIENCE REPORT SCHEDULE 06:00 - 06:20 PM (20 MINS) 18:30 add_circle LIVING THE XKCD 927 DREAM WITH OPENTELEMETRY 1.0 schedule 06:30 - 07:15 PM IST place Zoom people 2 Interested Intermediate Session GREG MEFFORD PRINCIPAL FULL-STACK ENGINEER STORD UNITED STATES Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO 19:30 add_circle DISTRIBUTED ELIXIR (LESSONS FROM HCA HEALTHCARE’S PROJECT WATERPARK) schedule 07:30 - 08:15 PM IST place Zoom people 2 Interested Intermediate Session BRYAN HUNTER ENTERPRISE FELLOW HCA HEALTHCARE UNITED STATES Keynote THEATERS SLIDES VIDEO_LIBRARY VIDEO 09:00 AM THE ESSENCE OF FUNCTIONAL PROGRAMMING THEME : FP BOOTCAMP RICHARD FELDMAN HEAD OF TECHNOLOGY NOREDINK UNITED STATES Beginner Session PLACEZOOM SCHEDULE 09:00 - 09:45 AM Keynote This talk dives into the origins of functional programming, going all the way back to where the term was first introduced, to see how it evolved over time into our modern understanding of what FP essentially involves. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29699-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 11:00 AM FP IS THE NEW OOP THEME : APPLYING FP MICHAEL SNOYMAN VP, ENGINEERING FP COMPLETE ISRAEL Intermediate Session PLACEZOOM SCHEDULE 11:00 - 11:45 AM Talk Many of us in the functional programming community believe that FP is a significant improvement over object oriented programming, arguably the dominant programming paradigm today. That of course begs the question: how did an inferior paradigm grab so much mindshare and market share and rise to prominence? I'm going to tell the story a bit differently, exploring a different take on the strengths of OOP, and how that affects those of us who advocate for functional programming. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29704-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 11:00 AM NATURE-INSPIRED OPTIMIZATION ALGORITHMS WITH F# THEME : APPLYING FP JOHN AZARIAH PRINCIPAL SDE MICROSOFT AUSTRALIA Intermediate Session PLACEZOOM SCHEDULE 11:00 - 11:45 AM Talk Quantum Computing is all the rage these days, but, as an emerging technology, it's difficult to find practical applications right away. One area which allows us to invest in a quantum future is to use quantum- and nature- inspired optimization algorithms, which can run on classical computing infrastructure today and leverage quantum hardware when it is available. In this talk, I'd like to give a short overview of the state of the art in quantum computing, and introduce two widely used optimization algorithms made better in F# with functional principles. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29748-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 11:00 AM OCAML PLATFORM IN 2022 THEME : FP BOOTCAMP SUDHA PARIMALA SOFTWARE ENGINEER SEGFAULT SYSTEMS INDIA Beginner Session PLACEZOOM SCHEDULE 11:00 - 11:45 AM Demonstration OCaml - a functional programming language from the ML family, recently celebrated its 25th year. For a language to be around for that long is an achievement in itself. Furthermore, people are actively working on adding exciting features to the language and its ecosystem. Thanks to efforts from various developers and maintainers, the OCaml developer platform has come a long way and continues to evolve at a rapid phase. My talk will cover all the existing tooling that makes a OCaml developer's life easy. The talk will demonstrate end-to-end state-of-the-art developer tooling, right from installing a OCaml compiler, using VSCode and vscode-ocaml-platform which provides IDE like features, to publishing a library and its documentation. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29700-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 12:00 PM FUNCTIONAL PROGRAMMING PATTERNS FOR DESIGNING MODULAR ABSTRACTIONS THEME : APPLYING FP DEBASISH GHOSH PRINCIPAL SOFTWARE ENGINEER LEADIQ INDIA Intermediate Session PLACEZOOM SCHEDULE 12:00 - 12:45 PM Talk The biggest power of functional programming comes from the ability to treat functions as first class objects and the power to compose them incrementally to evolve larger functions out of smaller ones. Designing such functions as referentially transparent enables us to treat functions in programming just like functions in mathematics - side-effects are carefully abstracted through “effects” and delayed till the algebra of our program gets submitted to the run time system. In this talk I will discuss a few idioms and patterns on how using the power of composition can lead to development of modular abstractions. Instead of committing to an implementation prematurely we can define abstractions that focus on “what” it does deferring the “how” part to later stages of the lifecycle. In functional programming terminology we call the “what” part the algebra of our abstraction, and the “how” part the interpreter. Decoupling the two is one of the basic recommendations in functional programming. I will use Haskell and Scala for the examples. I will discuss common functionalities that we use everyday in programming our domain models like validations, database interactions, managing exceptions, talking to external services etc. and show how to use the power of typed functional programming to make them more compositional. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29705-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 12:00 PM BEYOND: CROSSING THE PLATFORM BOUNDARIES WITH F# AND FABLE THEME : APPLYING FP ALFONSO GARCIA-CARO SOFTWARE DEVELOPER FREELANCER JAPAN Beginner Session PLACEZOOM SCHEDULE 12:00 - 12:45 PM Talk Fable is an F# to JS compiler that has been successfully used in production by thousands of developers for more than 5 years. Thanks to steady improvements and a great community and ecosystem, including the SAFE stack, the Elmish architecture and the Feliz React API, it has become one of the best options to write robust, succinct and performant web applications nowadays. Fable was originally designed to integrate F# with the JS ecosystem instead of trying it to hide it. With this same philosophy, the Fable team is working now to target other languages beyond .NET and JS. There are already working prototypes to compile F# into Php, Python and Rust code, and we expect to release a beta in the upcoming months. Let's see how Fable 4 will further empower F# and functional programmers! content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29708-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 12:00 PM SNIPPETS FROM AN ALGORITHMIC TRADING SYSTEM IN KOTLIN THEME : APPLYING FP DHANANJAY NENE PROGRAMMER ON A BREAK, FINANCIAL MARKETS TRADER DHANANJAY NENE INDIA Intermediate Session PLACEZOOM SCHEDULE 12:00 - 12:45 PM Talk This talk will introduce the audience to algorithmic trading, the design of an algorithmic trading system, and various snippets written in Kotlin that fulfil specific tasks that collectively contribute towards a full trading system. The rough sketch will be as follows content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29703-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 02:00 PM FAMILIARITY OR GUARANTEES? FUNCTIONAL PROGRAMMING FOR THE FRONT-END THEME : APPLYING FP LUCA MUGNAINI SOFTWARE ENGINEER RAKUTEN JAPAN Beginner Session PLACEZOOM SCHEDULE 02:00 - 02:20 PM Experience Report In the front-end world, we finally can take an important decision: Familiarity or Guarantees? Do we keep using frameworks that are familiar to JavaScript (bringing with them all JS idiosyncrasies) or do we embrace a world of guarantees where functions are pure, data is immutable, types are correct, and runtime exceptions don’t exist? In Rakuten, we went the way of guarantees three years ago, choosing Elm. In this talk, I am going to explain what are the benefits of Elm in the front-end, and what was our experience. I will showcase examples, best practices, things that we liked, and things that we didn't like. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29716-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 02:00 PM N WAYS TO FIZZBUZZ IN CLOJURE THEME : FP BOOTCAMP ADITYA ATHALYE CHIEF EVAL-APPLY OFFICER EVALAPPLY.ORG INDIA Beginner Session PLACEZOOM SCHEDULE 02:00 - 02:20 PM Demonstration FizzBuzz is back in fashion! Everybody is doing it again (and again, and again). So I figured why should I miss out on the action? Why not use (and abuse) as many features as possible, of my favourite FP language Clojure, to FizzBuzz in as many ways as I can possibly muster? Why not up the ante by leaking the four other ways I discovered so far? And why not make it harder on myself by committing to spectacular public failure if I can't find more? Why. Not?! So here we are... (def range-of-fizzbuzzees (range 1 101)) (def fizbuzz map) (= (fizzbuzz canonical-fizbuzzer range-of-fizzbuzees) (fizzbuzz or-fizbuzzer range-of-fizzbuzees) (fizzbuzz juxt-fizbuzzer range-of-fizzbuzees) (fizzbuzz lookup-fizbuzzer range-of-fizzbuzees) (fizzbuzz (fn [f n] (f n)) cyclical-fizbuzzer range-of-fizzbuzees)) The chase has begun! Who knows what will happen? WITNESS ME. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29701-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 02:00 PM EXPERIENCE REPORT THEME : Session PLACEZOOM SCHEDULE 02:00 - 02:20 PM Event content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29740-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 02:30 PM DO WE REALLY DO FP IN JAVA? THEME : APPLYING FP BEN EVANS SENIOR PRINCIPAL ENGINEER RED HAT SPAIN Beginner Session PLACEZOOM SCHEDULE 02:30 - 03:15 PM Talk Many Java developers believe that FP arrived in Java 8, with the addition of first-class lambda expressions and the Streams API. But is this really true? In this talk, Ben Evans will talk about what FP really is, examine whether Java can really be said to be FP or not - and consider whether things have improved with more recent versions, as well as some possibilities of how we could have done things differently (in another world). content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29707-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 02:30 PM RETARGETING F# FOR THE WEB: FROM JS TO WEBASSEMBLY THEME : APPLYING FP ADAM GRANICZ CEO INTELLIFACTORY HUNGARY Advanced Session PLACEZOOM SCHEDULE 02:30 - 03:15 PM Talk WebSharper is an open-source full-stack, functional-first web framework for F# and C# that runs on top of ASP.NET Core. It features F# and C# transpilers to JavaScript, extensible bindings to JavaScript libraries, and various server and client-side abstractions (MVU, reactive HTML, etc.) for type-safe web development. In this session, I’ll walk through some of the basics that make WebSharper an immensely productive tool to develop microservices, SPAs, and full-stack client-server applications in your favourite .NET language, and cover how you can combine and/or migrate some of your WebSharper apps to run in WebAssembly with Bolero, a set of F# web abstractions for Blazor. Functional-first .NET web development has never been easier! content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29711-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 02:30 PM TYPESCRIPT'S TYPE SYSTEM - FROM SOLVING PUZZLES TO PROVING FACTS OF PROGRAM THEME : APPLYING FP DAMODHARAN JAYACHANDRAN MEMBER LEADERSHIP STAFF ZOHO INDIA Beginner Session PLACEZOOM SCHEDULE 02:30 - 03:15 PM Demonstration Typescript has gained a lot of traction with majority of javascript frameworks adopting it and gaining the power of static types. Given the Typescript types are a language themselves and they are Turing complete, lets put our type flavoured favourite language of the web to test - for fun & profit. With the advent of fp-ts, typescript's boundary to statically type FP algebras like Functor, Monoid & Monad are just a import away!. But why restrict ourselves when we can achieve more with almost "Dependent types" in typescript - Like solving logical puzzles to proving properties of the program (like type level regex check, indexed list & matrices etc) for correctness. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29720-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 04:00 PM WRITING GREAT TESTS WITH HASKELL THEME : APPLYING FP EVIE CIOBANU SENIOR HASKELL ENGINEER HASURA ROMANIA Intermediate Session PLACEZOOM SCHEDULE 04:00 - 04:45 PM Talk Program correctness has always been an important topic in computer science, and is only showing growth as software becomes more complex. Statically typed functional programming provides compiler guidance and guarantees. Advanced typing features can provide additional ways to restrict and formally prove properties within the constraints of the original program. This has even (half-seriously) popularized remarks about how it's enough to get a program to compile to be sure it is correct. While there is some degree of truth to this (Haskell programs can escape some classes of bugs by merely enabling all warnings and having a reasonable coding standard in place), this is obviously not true for all but most trivial software. Formal verification can help whenever that is not possible, but it is still impractical for all but small and critical systems. We still rely on writing automated unit, property, and integration tests to ensure our programs behave in the way we expect them. At Hasura, we run these tests automatically in continuous integration (CI) services, and they often take up the majority of CI time. We dedicate a significant amount of time writing and maintaining these tests. What is a good test? How do we write good tests? How do we organize them? What's important to consider when writing tests? I describe common patterns and recommended style guides for writing tests that optimize for ease of reading and understanding rather than writing or modifying. It should be apparent what it is that we're testing, what are the assumptions of the test, what is being set up or arranged before the test, as well as what it is we are testing and what is the expected response. We should strive to maximize the domain information and minimize accidental complexity, such as particularities of the testing framework or programming language we're using. In a language as expressive as Haskell, we should be able to write unit and integration tests that are understandable and modifiable by domain experts (such as power users or product owners), not only Haskell developers. This can generally be achieved by focusing on getting the domain-specific data together in a record, thus making the test-relevant information easily readable and understandable. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29747-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 04:00 PM TYPE CLASSES IN SCALA 3 THEME : APPLYING FP AYUSH MITTAL SOFTWARE ENGINEER ING NETHERLANDS NETHERLANDS Intermediate Session PLACEZOOM SCHEDULE 04:00 - 04:45 PM Talk Type classes are a powerful tool in functional programming to enable ad-hoc polymorphism without using object orientated programming based constructs like sub typing. In this talk we look at how to create type classes using Scala 3 constructs such as ‘Givens’ and ‘Extension’ methods. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29726-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 04:00 PM WHY APL IS A LANGUAGE WORTH KNOWING THEME : APPLYING FP RODRIGO GIRÃO SERRÃO CONSULTANT DYALOG PORTUGAL Beginner Session PLACEZOOM SCHEDULE 04:00 - 04:45 PM Talk “A language that doesn't affect the way you think about programming, is not worth knowing.” ― Alan Perlis, in “Epigrams in Programming” Following Alan Perlis's words, this talk will show why APL is a language worth knowing. In other words, I will devote the talk to showcasing characteristics of APL that are likely to, on the one hand, influence the way you use other programming languages, and, on the other hand, understand concepts of computer science. By listening to this talk, I hope to convince you that learning a language that is radically different from all the other languages you know isn't harmful. Learning a language that is radically different from all other languages you know won't scatter your knowledge or spread your brain too thin. In fact, learning a language that is radically different from all other languages you know will cement your programming knowledge, helping you build bridges between topics you didn't even know were connected. To drive my point home, we take a closer look at two characteristics of APL: the fact that Boolean values are represented by the integers 0 and 1, and the fact that APL is an array-oriented language. In studying these two things, we draw connections to the traditional if statement and to list comprehensions, deepening our understanding of those. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29709-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 05:00 PM PROPERTY-BASED TESTING - LET YOUR TESTING LIBRARY WORK FOR YOU THEME : APPLYING FP MAGDA STOŻEK SOFTWARE DEVELOPER SOFTWAREMILL POLAND Beginner Session PLACEZOOM SCHEDULE 05:00 - 05:45 PM Talk Don't ask what you can do for your testing library, ask what it can do for you! So what can it do? It turns out that much more than displaying a nice green and red report. What if we make the library generate the test data? And while we're at it, maybe it could also think of the edge cases for which our code is wrong? Oh, and when it finds them, it should simplify them a bit before returning to us, so that we can quickly identify the root cause of the problem. And repeat that a thousand times, just to be sure. Sounds good? That's exactly what property-based testing has to offer. I'll show how to get started with this kind of testing, using jqwik (https://jqwik.net/) as an example. But isn't it all too good to be true, surely there's some fine print? Of course there is. I'll cover that as well. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29712-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 05:00 PM MULTIPLAYER ONLINE GAME IN CLOJURE: ATTACK OF THE CLONES THEME : APPLYING FP MEY BEISARON SOFTWARE ENGINEER, BACKEND DEVELOPER FORTER ISRAEL Beginner Session PLACEZOOM SCHEDULE 05:00 - 05:45 PM Demonstration When I say "Multiplayer online game development in Clojure" 2 questions probably pop right up : WHY? HOW? Why? because you can do it in under 100 lines of code, and it is pure FUN. How? Well that's exactly what we'll talk about in this session. I will present a simple MOG written in Clojure and go through each line of code - so you'll understand how you can do that yourself, even if you've never written a single line of Clojure before. Whether you’re a real Clojurian at heart or just interested in hearing a talk about Clojure from a sworn star wars fan - this talk is for you :) content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29750-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 05:00 PM INTERPRET YOUR MONADS! - CONCRETE MONADS VS MONAD CLASSES THEME : APPLYING FP AUKE BOOIJ HASKELL ENGINEER HASURA SWITZERLAND Intermediate Session PLACEZOOM SCHEDULE 05:00 - 05:45 PM Talk Concrete monads or monad classes? I’ll tell you why it often makes sense to jump around between these options, and where this comes from. Monads are the central notion to encode a program with effects in Haskell. Nowadays, we often combine several monad transformers to create the desired effect stack, relying on mmorph to juggle effects as required. But in fact, monad transformers and monad morphisms are just as old as monads in functional programming, an idea first published in 1989. We can still benefit from that old work. The core of this talk is to discuss monads which are initial objects in the sense of category theory. Practically, this means that such monads can be interpreted in a class of other monads. Perhaps the most well-known example of such initial monads is Either e, which can be interpreted in any monad that instantiates MonadError e, through the use of liftEither. This general principle of monad interpretation is exactly what allows us to jump around between concrete monads and monad classes. Monad interpretation can sometimes give a free performance boost, and can be used to easily write Haskell Arrows code without Arrow syntax. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29746-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 06:00 PM LESSONS LEARNED FROM 15 YEARS OF SCALA IN THE WILD THEME : APPLYING FP DEAN WAMPLER DIRECTOR OF ENGINEERING IBM RESEARCH UNITED STATES Advanced Session PLACEZOOM SCHEDULE 06:00 - 06:45 PM Keynote Scala 3 was introduced last year. It introduced significant changes to the language, many of which were motivated by the lessons learned from the past 15 or so years of actual use in many open-source and commercial applications. I'll explore these lessons and how Scala 3 addresses them. Many revolve around the pros and cons of implicits. Also, changes to the type system make it more "regular", robust, and expressive. Finally, the new, optional, and controversial "Python-like" syntax promotes even more brevity. It also acknowledges how influential and pervasive Python has become across our industry. But there are many practical areas where future work is required, many of which are larger than the scope of Scala itself. We still live in "dependency hell". We still use too many obsolete idioms that hide accidental complexity, rather than forcing us to fix it. What should we do about these issues? content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29715-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 07:00 PM CLOJURE THROUGH THE LENS OF MUSIC THEME : APPLYING FP DAVE YARWOOD SENIOR SOFTWARE ENGINEER KEVEL UNITED STATES Intermediate Session PLACEZOOM SCHEDULE 07:00 - 07:45 PM Talk You may be familiar with what map, filter, and reduce do. But have you ever heard how these functions sound? The Alda language is centered around the idea that music can be represented as data. alda-clj is a Clojure library that maps Clojure data structures to the music theory concepts in the Alda language, including notes and chords. The library serves as an interface that takes Clojure code as input and produces music as output. In addition to the basic functions that you will find in the standard libraries of most functional programming languages, Clojure's standard library offers a wealth of interesting and useful functions that facilitate working with immutable data. In this talk, we will explore the Clojure standard library by applying interesting functions like cycle, mapcat, partition and reductions to transform data that represents music. Using the alda-clj library, we will not only see the result of each function call, we will also hear the results and observe how they can help us understand how each function works. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29745-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 07:00 PM COSY, EVOLVED FROM APL VIA K IN OPEN FORTH THEME : APPLYING FP BOB ARMSTRONG SOLE PROPRIETOR COHERENT SYSTEMS (COSY) UNITED STATES Intermediate Session PLACEZOOM SCHEDULE 07:00 - 07:45 PM Talk CoSy is a new paradigm in computing language and interface . CoSy implements the abstractions of APL , evolved from the notation of applied mathematics , winnowed thru K , in open Forth . Forth is uniquely minimal and open to the underlying hardware . In fact a Forth processor takes up just a small amount of space on an FPGA . All in an computational notebook , log , environment for dealing with the everyday business of life , written itself in CoSy . While at the two poles of the computing language spectrum , APL and Forth share a number of attributes : * Both are interactive and interpretive at the user level . * Both are oriented for the creation of words , vocabulary , which work together in sentences . * Both are functional : words are generally structured take the result of previous words and return results to be used by following words . * Both tend to be extremely succinct . Definitions are delimited by just a single character . * K | name : { def ... } * Forth | : name def ... ; Forth's goal is the minimal vocabulary necessary to create a dictionary capable of extending itself . It is as simple as language can be : * a ` word is any non blank string of characters . Space is the prime delimiter . * The syntax is noun noun verb aka: RPN CoSy adds plurals to Forth . * all nouns are lists . At the Forth level they have a 3 cell header `( Type Count refCount )` Lists are allocated . When ` refCount returns to 0 they are freed . * Indexing is modulo -- like counting on your thumb & fingers : 0 1 2 3 4 0 CoSy's next step is attracting the fresh heads and resources to clean it up in a Forth available across the various current chips and operating systems , and to interface thru browsers and the Web content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29744-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 07:05 PM CASE STUDY THEME : Session PLACEZOOM SCHEDULE 07:05 - 07:50 PM Event content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29754-info THEATERS SLIDES VIDEO_LIBRARY VIDEO APPLYING FP FRI, MAR 25 09:00 add_circle THE ESSENCE OF FUNCTIONAL PROGRAMMING schedule 09:00 - 09:45 AM IST place Zoom people 2 Interested Beginner Session RICHARD FELDMAN HEAD OF TECHNOLOGY NOREDINK UNITED STATES Keynote THEATERS SLIDES VIDEO_LIBRARY VIDEO 10:00 WELCOME AND CONFERENCE OVERVIEW SCHEDULE 10:00 - 10:20 AM (20 MINS) 10:30 COFFEE/TEA BREAK SCHEDULE 10:30 - 11:00 AM (30 MINS) 11:00 add_circle FP IS THE NEW OOP schedule 11:00 - 11:45 AM IST place Zoom people 1 Interested Intermediate Session MICHAEL SNOYMAN VP, ENGINEERING FP COMPLETE ISRAEL Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle NATURE-INSPIRED OPTIMIZATION ALGORITHMS WITH F# schedule 11:00 - 11:45 AM IST place Zoom Intermediate Session JOHN AZARIAH PRINCIPAL SDE MICROSOFT AUSTRALIA Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle OCAML PLATFORM IN 2022 schedule 11:00 - 11:45 AM IST place Zoom people 1 Interested Beginner Session SUDHA PARIMALA SOFTWARE ENGINEER SEGFAULT SYSTEMS INDIA Demonstration THEATERS SLIDES VIDEO_LIBRARY VIDEO 12:00 add_circle FUNCTIONAL PROGRAMMING PATTERNS FOR DESIGNING MODULAR ABSTRACTIONS schedule 12:00 - 12:45 PM IST place Zoom people 1 Interested Intermediate Session DEBASISH GHOSH PRINCIPAL SOFTWARE ENGINEER LEADIQ INDIA Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle BEYOND: CROSSING THE PLATFORM BOUNDARIES WITH F# AND FABLE schedule 12:00 - 12:45 PM IST place Zoom Beginner Session ALFONSO GARCIA-CARO SOFTWARE DEVELOPER FREELANCER JAPAN Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle SNIPPETS FROM AN ALGORITHMIC TRADING SYSTEM IN KOTLIN schedule 12:00 - 12:45 PM IST place Zoom Intermediate Session DHANANJAY NENE PROGRAMMER ON A BREAK, FINANCIAL MARKETS TRADER DHANANJAY NENE INDIA Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO 13:00 LUNCH SCHEDULE 01:00 - 02:00 PM (60 MINS) 14:00 add_circle FAMILIARITY OR GUARANTEES? FUNCTIONAL PROGRAMMING FOR THE FRONT-END schedule 02:00 - 02:20 PM IST place Zoom Beginner Session LUCA MUGNAINI SOFTWARE ENGINEER RAKUTEN JAPAN Experience Report THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle N WAYS TO FIZZBUZZ IN CLOJURE schedule 02:00 - 02:20 PM IST place Zoom people 1 Interested Beginner Session ADITYA ATHALYE CHIEF EVAL-APPLY OFFICER EVALAPPLY.ORG INDIA Demonstration THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle EXPERIENCE REPORT schedule 02:00 - 02:20 PM IST place Zoom Session Event THEATERS SLIDES VIDEO_LIBRARY VIDEO 14:30 add_circle DO WE REALLY DO FP IN JAVA? schedule 02:30 - 03:15 PM IST place Zoom people 1 Interested Beginner Session BEN EVANS SENIOR PRINCIPAL ENGINEER RED HAT SPAIN Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle RETARGETING F# FOR THE WEB: FROM JS TO WEBASSEMBLY schedule 02:30 - 03:15 PM IST place Zoom Advanced Session ADAM GRANICZ CEO INTELLIFACTORY HUNGARY Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle TYPESCRIPT'S TYPE SYSTEM - FROM SOLVING PUZZLES TO PROVING FACTS OF PROGRAM schedule 02:30 - 03:15 PM IST place Zoom people 1 Interested Beginner Session DAMODHARAN JAYACHANDRAN MEMBER LEADERSHIP STAFF ZOHO INDIA Demonstration THEATERS SLIDES VIDEO_LIBRARY VIDEO 15:30 COFFEE/TEA BREAK SCHEDULE 03:30 - 04:00 PM (30 MINS) 16:00 add_circle WRITING GREAT TESTS WITH HASKELL schedule 04:00 - 04:45 PM IST place Zoom people 1 Interested Intermediate Session EVIE CIOBANU SENIOR HASKELL ENGINEER HASURA ROMANIA Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle TYPE CLASSES IN SCALA 3 schedule 04:00 - 04:45 PM IST place Zoom people 1 Interested Intermediate Session AYUSH MITTAL SOFTWARE ENGINEER ING NETHERLANDS NETHERLANDS Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle WHY APL IS A LANGUAGE WORTH KNOWING schedule 04:00 - 04:45 PM IST place Zoom people 1 Interested Beginner Session RODRIGO GIRÃO SERRÃO CONSULTANT DYALOG PORTUGAL Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO 17:00 add_circle PROPERTY-BASED TESTING - LET YOUR TESTING LIBRARY WORK FOR YOU schedule 05:00 - 05:45 PM IST place Zoom people 2 Interested Beginner Session MAGDA STOŻEK SOFTWARE DEVELOPER SOFTWAREMILL POLAND Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle MULTIPLAYER ONLINE GAME IN CLOJURE: ATTACK OF THE CLONES schedule 05:00 - 05:45 PM IST place Zoom Beginner Session MEY BEISARON SOFTWARE ENGINEER, BACKEND DEVELOPER FORTER ISRAEL Demonstration THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle INTERPRET YOUR MONADS! - CONCRETE MONADS VS MONAD CLASSES schedule 05:00 - 05:45 PM IST place Zoom Intermediate Session AUKE BOOIJ HASKELL ENGINEER HASURA SWITZERLAND Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO 18:00 add_circle LESSONS LEARNED FROM 15 YEARS OF SCALA IN THE WILD schedule 06:00 - 06:45 PM IST place Zoom people 2 Interested Advanced Session DEAN WAMPLER DIRECTOR OF ENGINEERING IBM RESEARCH UNITED STATES Keynote THEATERS SLIDES VIDEO_LIBRARY VIDEO 19:00 add_circle CLOJURE THROUGH THE LENS OF MUSIC schedule 07:00 - 07:45 PM IST place Zoom people 1 Interested Intermediate Session DAVE YARWOOD SENIOR SOFTWARE ENGINEER KEVEL UNITED STATES Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle COSY, EVOLVED FROM APL VIA K IN OPEN FORTH schedule 07:00 - 07:45 PM IST place Zoom people 1 Interested Intermediate Session BOB ARMSTRONG SOLE PROPRIETOR COHERENT SYSTEMS (COSY) UNITED STATES Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO 19:05 add_circle CASE STUDY schedule 07:05 - 07:50 PM IST place Zoom people 2 Interested Session Event THEATERS SLIDES VIDEO_LIBRARY VIDEO 09:00 AM TEACHING OPTICS THROUGH CONSPIRACY THEORIES THEME : MASTERING FP BARTOSZ MILEWSKI MATH EVANGELIST PROGRAMMING CAFE UNITED STATES Advanced Session PLACEZOOM SCHEDULE 09:00 - 09:45 AM Keynote With polymorphic functions you can often tell how they are implemented by looking at their outputs. The more polymorphic the function, the more you can tell about its internal workings. Lenses, as well as more general optics, have convenient polymorphic implementations in terms of functors and profunctors. But under layers of abstractions they are hiding some simple truths. We are going to get to the bottom of this conspiracy. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29698-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 10:00 AM CONCURRENT STATE MACHINES WITH CATS EFFECT THEME : APPLYING FP ADAM ROSIEN PRINCIPAL INNER PRODUCT LLC UNITED STATES Intermediate Session PLACEZOOM SCHEDULE 10:00 - 10:45 AM Talk Concurrent coordination is a notoriously difficult problem: how do we make the behavior of a computation depend on another, concurrently running one? Or more than one? We’ll show one technique: the concurrent state machine, and build many examples using the powerful Cats Effect library. For example, how can we share state between effects when that state might be concurrently updated? Or how can we ensure one effect only proceeds once work is complete in another? We’ll discuss the first issue by using the Ref data type for sharing mutable state. We’ll then show how the Deferred data type can provide concurrent effect serialization without blocking any actual threads. Finally we’ll model even more complex behavior by composing these two concurrency primitives together to form a concurrent state machine. Some concurrent coordination behaviors we can construct using this method are: mutual exclusion (mutexes, semaphores, etc.) latches (closed until a certain number of events happen, then always open) and many others. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29749-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 10:00 AM 5 YEARS OF TRYING TO GET PEOPLE TO USE AN FP LANGUAGE THEME : APPLYING FP PHILLIP CARTER SENIOR PRODUCT MANAGER HONEYCOMB UNITED STATES Beginner Session PLACEZOOM SCHEDULE 10:00 - 10:45 AM Case Study At Microsoft, Phillip worked on the F# language and tools from 2016 to 2021. In this talk, Phillip will recount the various strategies he and his team used to try and increase adoption of F#, and by extension, FP as a whole. Over this period of time, the F# language evolved and grew its user base substantially. Lots of experiments to increase adoption were tried, such as pivoting to data science, and most failed ... but some succeeded, hinting at some paths to adoption for FP that don't just involve a more mainstream language appropriating FP features. If you're interested in storytelling, learning about fun ways things failed, and curious about some things that succeeded in increasing adoption, check out this talk! content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29725-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 11:30 AM IMPLEMENTING EVENT-DRIVEN MICROSERVICES ARCHITECTURE IN FUNCTIONAL LANGUAGE THEME : APPLYING FP NIKHIL BARTHWAL SOFTWARE ENGINEER & STARTUP MENTOR UNITED STATES Intermediate Session PLACEZOOM SCHEDULE 11:30 AM - 12:15 PM Tutorial Web services are typically stateless entities, that need to operate at scale at large. Functional paradigm can be used to model these web services work and offer several benefits like scalability, productivity, and correctness. This talk describes how to implement Event-Driven Microservices in functional programming languages with examples in F#. Immutability allows infinite scalability as it eliminates the need to worry about a mutex, a lock, or a race. As functional code is much more terse compared to object-oriented code, it provides productivity benefits. Its strict typing makes writing correct code easy as mismatches of types are caught at compile time. The objective of the talk is to show how to create a scalable & highly distributed web service in F#, and demonstrate how various characteristics of functional paradigm captures the behavior of such services architecture very naturally. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29702-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 11:30 AM TYPE-HOLE DEVELOPMENT THEME : MASTERING FP TONY MORRIS SOFTWARE ENGINEER SIMPLE MACHINES AUSTRALIA Intermediate Session PLACEZOOM SCHEDULE 11:30 AM - 12:15 PM Tutorial In this presentation, we will see coding problems, similar to those which can be found at https://github.com/system-f/fp-course/ using the Haskell programming language. Solving problems such as these can be daunting for many reasons and especially for beginners. A common stumbling block to these types of problems is coming up against unfamiliar problem-solving methods. For example, everyone knows how to add up the numbers in a list with a for-loop. This is a well-understood method of solving this particular coding problem. And then you hear the functional programmers, "just use the types" and "well you just do the only obvious thing to solve it." While true, this is not particularly helpful to someone who is not already fluent with this approach to problem-solving. You may have heard of using type-holes to solve coding problems. We'll be using type-holes, and a few other techniques, with the Haskell programming language to live-solve coding problems. We will solve both trivial and not-so-trivial problems while "thinking out aloud." Feel free to follow along! You'll just need Glasgow Haskell Compiler (GHC) and a text editor installed. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29722-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 12:30 PM NAMES ARE OVERRATED THEME : APPLYING FP JED WESLEY-SMITH DIRECTOR OF ENGINEERING SIMPLE MACHINES AUSTRALIA Beginner Session PLACEZOOM SCHEDULE 12:30 - 12:50 PM Talk Some people even say names don't matter. While it is widely held that good naming is one of the most important aspects of programming, is there such a thing as an objectively good name? As part of a discussion of the philosophy of programming, we'll look at what are the real aims of naming things well, and what considerations we should have in mind when discussing them. We'll have a look at alternatives and what they bring that names do not. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29713-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 12:30 PM HUH? TO AHA! - A REFACTORING STORY THEME : APPLYING FP GOPAL S AKSHINTALA SENIOR MEMBER OF TECHNICAL STAFF SALESFORCE INDIA Beginner Session PLACEZOOM SCHEDULE 12:30 - 12:50 PM Demonstration _As a Dev, I need to Refactor, to make codebase Refactorable_. Refactorability as defined by Martin Fowler is, "Ability to alter internal structure without changing its external behavior". This applies to each atomic component of an app. Let's achieve our dev story through a unique, yet most effective Method, **Component Isolation**. Let's huddle over persuasive arguments against _Obstacles_ that hinder our goal causing entanglements among components, and _Metrics_ that measure our success. Let's refactor a real-world app to and witness how Isolated components make-up long-lasting structures. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29721-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 02:00 PM MINITT: INGREDIENTS FOR A DEPENDENTLY TYPED LANGUAGE THEME : MASTERING FP SIDDHARTH BHAT STUDENT IIIT HYDERABAD INDIA Advanced Session PLACEZOOM SCHEDULE 02:00 - 02:45 PM Tutorial I explain the ingredients necessary to implement a minimal dependently typed language (https://github.com/bollu/minitt). I'll explain the ideas of normalization by evaluation on untyped lambda calculus, bidirectional type checking on simply typed lambda calculus, and then scale these up to a full, minimal dependently typed language, dubbed "mini-TT". At the end of the talk, you'll be fully equipped to implement a dependently typed language, and follow along other material such as "The little typer" for a deeper dive. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29718-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 02:00 PM TYPE REIFICATION WITH PURESCRIPT THEME : MASTERING FP ANUPAM JAIN UI ARCHITECT ARISTA NETWORKS INDIA Advanced Session PLACEZOOM SCHEDULE 02:00 - 02:45 PM Talk PureScript is a Haskell-like language that compiles to JavaScript. If you like Haskell, you will find yourself completely at home with PureScript. However there are a few interesting typelevel things from Haskell that are not provided by the PureScript compiler. The Type reification machinery is one of them. In this talk, we'll understand the concept of type reification and its implementation using the Typeable typeclass. Essentially, using Typeable we can take a runtime value and get a value level representation of its type called a Typeref, this process is called type reification, which we can then compare with other known typerefs. We'll discuss indexed and unindexed typerefs and some real world problems that can be solved by this sort of type reification. A significant part of the talk will involve details of how Typeable is implemented in Haskell, and how it can be approximated in PureScript even without compiler support (available as a library https://github.com/ajnsit/purescript-typeable/). We'll also discuss some alternatives approaches and their pros/cons. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29697-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 03:00 PM CASE STUDY THEME : Session PLACEZOOM SCHEDULE 03:00 - 03:45 PM Event content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29752-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 03:00 PM CASE STUDY THEME : Session PLACEZOOM SCHEDULE 03:00 - 03:45 PM Event content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29753-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 04:30 PM EXTENDING RAILWAY ORIENTED PROGRAMMING IN ELM TO MAKE COMPLEX USER FLOWS SIMPLE THEME : APPLYING FP GRAHAME DIXON SIDE PROJECT DEVELOPER GRAHAME DIXON CANADA Intermediate Session PLACEZOOM SCHEDULE 04:30 - 04:50 PM Talk What do you do with a multi-step function with different kinds of user input that may be required at different steps? I'm using Elm to build a game client for Codex, a complex strategy board game by David Sirlin with lots of interesting side effects in the game design. The pure functional programming of Elm is very powerful for managing these side effects, but how should I handle when there are many different kinds of user input required to complete the behaviour of a single feature? There’s a “railway oriented programming” metaphor to understand how to handle multiple-steps of errors. I’ll extend this metaphor – with stations – to show how to make what looks like a complex functional problem into a simple pattern of abstraction. Some familiarity with functional programming idioms is recommended, though the examples themselves are easy to follow. Attendees will walk away seeing functional programming applied in a fresh way, perhaps opening their mind to alternative perspectives to approach the complicated problems in their projects. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29724-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 04:30 PM FAST AND CURIOUS: BENCHMARKING (MULTICORE) OCAML THEME : APPLYING FP SHAKTHI KANNAN SENIOR SOFTWARE ENGINEER SEGFAULT SYSTEMS INDIA Beginner Session PLACEZOOM SCHEDULE 04:30 - 04:50 PM Experience Report An oft overlooked aspect of programming language development process is benchmarking. While popular CI/CD tools such as Azure pipelines, Gitlab CI, Circle CI, Drone.io and Github Actions are regularly used for continuous testing and deployment, there is a dearth of such tools for continuous benchmarking. This is because benchmarking well is challenging due to the care needed to choose appropriate benchmarks, the complexity of modern OSes and hardware that makes it hard to obtain reproducible results, and a powerful dashboard needed to surface resultant metrics in a useful manner that can be explored interactively by the developer. For benchmarking the compiler of the OCaml [1] programming language, we have developed Sandmark [2]. Sandmark is a (a) suite of well chosen benchmarks aimed at exercising different performance axes including CPU, memory and IO (b) a tool to run the benchmarks, building the compiler and its dependencies under varying configuration settings and (c) a dashboard [3] to interactively explore the results of the benchmark runs. Sandmark was originally developed for supporting the Multicore OCaml [4] project, which aims to add native support for concurrency and parallelism to OCaml, and has undergone significant improvements since the initial release [5]. We have learnt several useful lessons in building a continuous benchmarking infrastructure that we would like to share in this talk, which may benefit developers who work on projects where performance is critical. In this talk, I will describe the Sandmark tool, illustrate the quirks of modern OSes and hardware and how we overcame them, highlighting useful takeaways for setting up continuous benchmarking for your own projects. References: [1] OCaml: https://ocaml.org/ [2] Sandmark: https://github.com/ocaml-bench/sandmark [3] sandmark-nightly: https://github.com/ocaml-bench/sandmark-nightly [4] Multicore OCaml: https://github.com/ocaml-multicore/ocaml-multicore/ [5] Tom Kelly. Benchmarking the OCaml compiler: our experience, OCaml Workshop 2019, https://icfp19.sigplan.org/details/ocaml-2019-papers/3/Benchmarking-the-OCaml-compiler-our-experience content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29727-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 05:00 PM THE Z3 SMT SOLVER AND FUNCTIONAL PROGRAMMING THEME : MASTERING FP ALLISTER BEHARRY OPEN-SOURCE DEVELOPER FREELANCER TRINIDAD AND TOBAGO Advanced Session PLACEZOOM SCHEDULE 05:00 - 05:45 PM Demonstration Satisfiability modulo theories (SMT) solvers are extremely powerful tools that are indispensable in a number of applications of functional programming from mathematical analysis and optimization to computer security to program verification. SMT solvers allow you to determine if certain logical and mathematical formulas are satisfiable or (just as importantly) unsatisfiable in the context of theories like real arithmetic or set theory, and can provide definitive answers to commonly encountered programming problems involving logic, arithmetic, equations, and constraints. Z3 is one of the most popular SMT solvers available today with APIs available for many different programming languages. Although Z3 is most commonly used from Python, functional languages like F# provide powerful metaprogramming facilities that make it very easy to translate F# code and expressions to Z3 expressions without the need for custom types or operators. This presentation describes how the Z3 solver can be used from F# via quotations to quickly and easily solve common programming problems from Boolean formula satisfiability to arithmetic expression equality to linear programming to verifying fragments of source code. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29719-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 05:00 PM STUMBLING OVER STATE THEME : APPLYING FP DANIEL STEINBERG AUTHOR DIMSUMTHINKING.COM UNITED STATES Beginner Session PLACEZOOM SCHEDULE 05:00 - 05:45 PM Tutorial We each follow similar paths into the forest of functional programming. Some languages are better suited than others but we all hit a wall on our way to mastering monads. In this talk, I'll use examples from the Swift programming language to trace our understanding from types that feel like containers such as Array and Optional to types that definitely don’t such as Reader and State Monads. We’ll learn to perform many magic tricks along the way. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29723-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 06:00 PM DSLS, ARCHITECTURE, AND STRUCTURAL DESIGN IN APL, 3 WAYS. THEME : APPLYING FP AARON W HSU COMPUTER RESEARCHER DYALOG LTD. UNITED STATES Intermediate Session PLACEZOOM SCHEDULE 06:00 - 06:45 PM Talk Beginning functional and APL programmers often express confusion about how to structure large software projects or larger pieces of code. Both APL and FP have a tendency to highlight their low-level features and de-emphasize system architecture patterns. This can leave programmers with a strong sense of how to write a set of small functions, but with less confidence or skill in designing, recognizing, and implementing more cohesive implicit system architectures that hold these lower level functions together. System architectures serve as a method for constraining the overall design of a system to give direction and focus to lower level implementation requirements. Especially in APL, where system architecture is often best implemented implicitly, it behooves the programmer to understand the ramifications of architecture and to implement them in their own systems. This talk unpacks a number of these "architecture level" questions within the framework of the APL programming language by exploring the same topic through 3 different architectural approaches, each of which has a very distinct flavor, presentation, and impact on the resulting source code. Particular attention is paid to the question of domain-specific languages, their design, and how they can interact with APL as tools for architectural exploration and guidance in APL source trees. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29706-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 06:00 PM FS2.CHUNK THEME : APPLYING FP MICHAEL PILQUIST DISTINGUISHED ENGINEER COMCAST UNITED STATES Beginner Session PLACEZOOM SCHEDULE 06:00 - 06:45 PM Talk The Chunk data structure powers the fs2 (Functional Streams for Scala) streaming library. In this talk, we’ll look at the design of Chunk and in particular, how design constraints guided its evolution. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29710-info THEATERS SLIDES VIDEO_LIBRARY VIDEO 07:00 PM NAVIGATING THE LOOP IN WATER, ON LAND AND IN PROGRAMMING MODELS THEME : MASTERING FP BRUCE TATE FOUNDER GROXIO UNITED STATES FRANCESCO CESARINI FOUNDER & TECHNICAL DIRECTOR ERLANG SOLUTIONS UNITED KINGDOM Intermediate Session PLACEZOOM SCHEDULE 07:00 - 07:45 PM Keynote Loops are among the most critical programming constructs. These features shape core ideas about programming in the Erlang ecosystem; from how languages work to how programming features interact with other code and the outside world. How systems scale and are resilient. They are also metaphors for the way we think, build things, and grow. In Erlang and Elixir, loops define servers that form reliable, fault tolerant and scalable services. This keynote will explore Elixir and Erlang's approach to concurrency with a nautical adventure called the Great Loop. content_paste View Details DIRECT URL: https://confengine.com/conferences/functional-conf-2022/schedule/rich#session-29755-info THEATERS SLIDES VIDEO_LIBRARY VIDEO MASTERING FP SAT, MAR 26 09:00 add_circle TEACHING OPTICS THROUGH CONSPIRACY THEORIES schedule 09:00 - 09:45 AM IST place Zoom people 2 Interested Advanced Session BARTOSZ MILEWSKI MATH EVANGELIST PROGRAMMING CAFE UNITED STATES Keynote THEATERS SLIDES VIDEO_LIBRARY VIDEO 10:00 add_circle CONCURRENT STATE MACHINES WITH CATS EFFECT schedule 10:00 - 10:45 AM IST place Zoom people 1 Interested Intermediate Session ADAM ROSIEN PRINCIPAL INNER PRODUCT LLC UNITED STATES Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle 5 YEARS OF TRYING TO GET PEOPLE TO USE AN FP LANGUAGE schedule 10:00 - 10:45 AM IST place Zoom Beginner Session PHILLIP CARTER SENIOR PRODUCT MANAGER HONEYCOMB UNITED STATES Case Study THEATERS SLIDES VIDEO_LIBRARY VIDEO 11:00 COFFEE/TEA BREAK SCHEDULE 11:00 - 11:30 AM (30 MINS) 11:30 add_circle IMPLEMENTING EVENT-DRIVEN MICROSERVICES ARCHITECTURE IN FUNCTIONAL LANGUAGE schedule 11:30 AM - 12:15 PM IST place Zoom people 1 Interested Intermediate Session NIKHIL BARTHWAL SOFTWARE ENGINEER & STARTUP MENTOR UNITED STATES Tutorial THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle TYPE-HOLE DEVELOPMENT schedule 11:30 AM - 12:15 PM IST place Zoom Intermediate Session TONY MORRIS SOFTWARE ENGINEER SIMPLE MACHINES AUSTRALIA Tutorial THEATERS SLIDES VIDEO_LIBRARY VIDEO 12:30 add_circle NAMES ARE OVERRATED schedule 12:30 - 12:50 PM IST place Zoom people 1 Interested Beginner Session JED WESLEY-SMITH DIRECTOR OF ENGINEERING SIMPLE MACHINES AUSTRALIA Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle HUH? TO AHA! - A REFACTORING STORY schedule 12:30 - 12:50 PM IST place Zoom Beginner Session GOPAL S AKSHINTALA SENIOR MEMBER OF TECHNICAL STAFF SALESFORCE INDIA Demonstration THEATERS SLIDES VIDEO_LIBRARY VIDEO 13:00 LUNCH SCHEDULE 01:00 - 02:00 PM (60 MINS) 14:00 add_circle MINITT: INGREDIENTS FOR A DEPENDENTLY TYPED LANGUAGE schedule 02:00 - 02:45 PM IST place Zoom people 2 Interested Advanced Session SIDDHARTH BHAT STUDENT IIIT HYDERABAD INDIA Tutorial THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle TYPE REIFICATION WITH PURESCRIPT schedule 02:00 - 02:45 PM IST place Zoom Advanced Session ANUPAM JAIN UI ARCHITECT ARISTA NETWORKS INDIA Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO 15:00 add_circle CASE STUDY schedule 03:00 - 03:45 PM IST place Zoom Session Event THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle CASE STUDY schedule 03:00 - 03:45 PM IST place Zoom Session Event THEATERS SLIDES VIDEO_LIBRARY VIDEO 16:00 COFFEE/TEA BREAK SCHEDULE 04:00 - 04:30 PM (30 MINS) 16:30 add_circle EXTENDING RAILWAY ORIENTED PROGRAMMING IN ELM TO MAKE COMPLEX USER FLOWS SIMPLE schedule 04:30 - 04:50 PM IST place Zoom Intermediate Session GRAHAME DIXON SIDE PROJECT DEVELOPER GRAHAME DIXON CANADA Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle FAST AND CURIOUS: BENCHMARKING (MULTICORE) OCAML schedule 04:30 - 04:50 PM IST place Zoom people 2 Interested Beginner Session SHAKTHI KANNAN SENIOR SOFTWARE ENGINEER SEGFAULT SYSTEMS INDIA Experience Report THEATERS SLIDES VIDEO_LIBRARY VIDEO 17:00 add_circle THE Z3 SMT SOLVER AND FUNCTIONAL PROGRAMMING schedule 05:00 - 05:45 PM IST place Zoom people 2 Interested Advanced Session ALLISTER BEHARRY OPEN-SOURCE DEVELOPER FREELANCER TRINIDAD AND TOBAGO Demonstration THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle STUMBLING OVER STATE schedule 05:00 - 05:45 PM IST place Zoom Beginner Session DANIEL STEINBERG AUTHOR DIMSUMTHINKING.COM UNITED STATES Tutorial THEATERS SLIDES VIDEO_LIBRARY VIDEO 18:00 add_circle DSLS, ARCHITECTURE, AND STRUCTURAL DESIGN IN APL, 3 WAYS. schedule 06:00 - 06:45 PM IST place Zoom people 2 Interested Intermediate Session AARON W HSU COMPUTER RESEARCHER DYALOG LTD. UNITED STATES Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO add_circle FS2.CHUNK schedule 06:00 - 06:45 PM IST place Zoom Beginner Session MICHAEL PILQUIST DISTINGUISHED ENGINEER COMCAST UNITED STATES Talk THEATERS SLIDES VIDEO_LIBRARY VIDEO 19:00 add_circle NAVIGATING THE LOOP IN WATER, ON LAND AND IN PROGRAMMING MODELS schedule 07:00 - 07:45 PM IST place Zoom people 1 Interested Intermediate Session BRUCE TATE FOUNDER GROXIO UNITED STATES FRANCESCO CESARINI FOUNDER & TECHNICAL DIRECTOR ERLANG SOLUTIONS UNITED KINGDOM Keynote THEATERS SLIDES VIDEO_LIBRARY VIDEO PLEASE SHARE YOUR FEEDBACK FOR: Feedback (Optional) Cancel Rate * date_range0 My Schedule arrow_drop_down * highlight Show Sessions * share Share * file_downloadExport as iCal * ONLINE * Thu , Mar 24 Code Beam Lite * Fri , Mar 25 Applying FP * Sat , Mar 26 Mastering FP SHARE YOUR SCHEDULE * * * * SHARE YOUR SEARCH * * * * PLEASE LOGIN TO SAVE YOUR SESSION SELECTION TO MY SCHEDULE. MY SCHEDULE IS AVAILABLE ON ALL YOUR DEVICES. cancel login help cancel search Sorry, no FAQs found matching your search criteria FREQUENTLY ASKED QUESTIONS FETCHING ... NEED HELP? SEND US A MESSAGE... NAME EMAIL send Send HOT TIP Need help? Visit our User Guide. © 2022 Powered by ConfEngine | Terms & Conditions | Privacy Policy CARD_MEMBERSHIPPOINTS SYSTEM YOU EARN 30 BONUS POINTS ON YOUR FIRST ACTIVITY ON EVERY NEW CONFERENCE. PROPOSALS * You earn 1 point when others like your proposal. * You spend 1 point when you like others' proposal. * You spend 10 points when you propose a session. * You earn 100 points when your proposal is selected. PRO-TIP * Encourage your Colleagues and Friends to like your proposal to increase its score. * You should consider sharing your proposal on popular Social Networks. Note: Popularity of Proposals and Speakers is measured by the number of associated points. VIRTUAL CONFERENCE * You earn 5 points when you visit a Booth page for the first time. * You earn 10 points when you ask a question on a Booth page for the first time. * You earn 5 points when you add a session to 'My Schedule' on the Schedule page. * You earn 5 points when you rate a session. There is an extra 10 points if you provide feedback along with your rating. * You earn 10 points when you fill up a survey. Filter Sessions Share Filtered Sessions