Learning to learn ReasonML
Submitted by Jasim A Basheer (@jasim) via Zainab Bawa (@zainabbawa) on Monday, 9 September 2019
Section: Full talk (40 mins) Technical level: Intermediate
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.
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