JSFoo 2019

On component architecture, front-end engineering and Developer Experience (DX)

Learning to learn ReasonML

Submitted by Jasim A Basheer (@jasim) via Zainab Bawa (@zainabbawa) on Sep 9, 2019

Section: Full talk (40 mins) Technical level: Intermediate Status: Confirmed & Scheduled


This is a talk for the self-indulgent programmer; it is about a shortcut for leveling up in the craft so we can work less, have more fun, and ship better software faster.

This shortcut is statically typed functional programming, a profoundly interesting way of looking at computation. It has fewer things to learn than imperative, dynamic programming, yet it embodies insights that improves our craft like few other techniques can.

I started learning Reason without realizing any of this - I was working on a problem that revolved around data, and I was tripping over myself all the time because the data model was complex and I couldn’t keep them all in my head at the same time. I picked Reason because it felt perfect for the task at hand, and it turned out to be a great choice. But there were a few surprises: things that could’ve been learnt faster in hindsight, and hidden treasures that I had never expected when I started on this path. This talk is that story so you too can learn to learn Reason, but with more panache than I had.


This talk will cover:

  • The three things to wield a language intimately: programming in the small, programming in the large, and tooling
  • Language use-case: UI development with React and ReasonReact
  • Types: what does it really mean to say there is no null
  • Front-loading all the thinking to types, so you can program without thinking


This talk should be accessible to everyone regardless of experience level. You’ll be able to connect more with some of the ideas if you’ve already experienced the pain of building robust software; if not, they should serve as waypoints for when you encounter them.

Speaker bio

I’m an independent programmer building tools for user interface design and development at protoship. I have been programming for over a decade, working across languages and paradigms, and have helped build sophisticated back-end systems as well as rich front-end web applications. You can find me on Twitter at @jasim_ab





  • Zainab Bawa (@zainabbawa) Proposer Crew 8 months ago

    Thank you for an excellent rehearsal, Jasim. Very well structured talk and well presented.

    Here are the feedback points that came up in the review:

    1. The transition from FP and OOP may throw people off.
    2. The application story wasn’t completed. It was left hanging in the air. Why did Reason help you more than traditional JS?
    3. On OO, the focus is more on structure overlooking the immutability of states. Immutability didn’t seem to come out. This deserves a bigger place. This connects with the feedback on Solids.
    4. Any pitch for Reason cannot be done without TypeTesting. You have done this reasonably well. But for someone new, this requires more substantiation and content (and for immutability).
    5. Show the relationship with React and Node.js for those developers who want to make the switch. Maybe point out the pros and cons?
    6. Add references and suggestions here, in the links, so that anyone visiting this page can also see the links.

    On the visual aspects of the presentation, grey out the code so that the audience doesn’t start reading the code. Just show the structure.

    Submit your revised slides by 23 September, latest, so that we can do a quick review before the final show.

  • Jasim A Basheer (@jasim) 8 months ago (edited 8 months ago)

    Thanks Zainab and reviewers. Also some feedback that I recollect

    • The relation between OCaml, Reason and BuckleScript was not clear.
    • SOLID might not be known to all in the audience.
    • Criticism of SOLID might be misplaced - the issue is mutability, not structuring.
    • Codegen and how that lead to Reason needs more substantation.
    • There is too little about ReasonML per se; but rather more about Typed FP
    • Immutability is not mentioned at all
    • Mention Refactoring and Immutability
    • How to get started with Reason + How simple it is would be a good pitch

Login to leave a comment