Issue #34

There's a joke (well, not really) that if you want to teach your child how to swim, just throw them in the swimming pool. This is basically how I got my introduction to Elm: straight up writing a project in it. And having used only OOP for my entire career, that FP approach was... mhhh, not easy on me. Having the functools module in Python along with iterators and generators helped a bit, but seeing terms like functor and monad made me a little nervous. Yes, I should have just looked these up the moment I saw them. And I finally did. This week Scott Wlaschin did an amazing stream called the "Functional Programmer's Toolkit" which explains many of those concepts in great detail with a language that a beginner would get:

The Functional Programmer's Toolkit

And funny enough, Scott's book "Domain Modeling Made Functional" got mentioned in the announcement thread for Morphir-Elm, an Elm frontend for Morphir. Taken from their documentation page:

Morphir is a multi-language system built on a data  format that captures an application's domain model and business logic in  a technology agnostic manner. Having all the business knowledge  available as data allows you to process it programatically in various  ways:
- Translate it to move between languages and platforms effortlessly as technology evolves
- Visualize it to turn black-box logic into insightful explanations for your business users
- Share it across different departments or organizations for consistent interpretation
- Store it to retrieve and explain earlier versions of the logic in seconds

With Elm frontend you can write domain models in Elm which then gets translated to the intermediary representation and can run on one of the backends like Scala or F#.

Being a newcomer to functional languages I think I'm out of the loop with all the "Lisp in X lines of Y language" thing. Every now and then I see these being done in Python, Java, C, JavaScript, Go, and I can continue... Heck, there's also Lisp in Lisp. So it was just a matter of time to see Lisp in, guess it, in Elm. James Carlson did a detailed explanation how he created a parser and an evaluator for Lisp. Also a while ago Elm Radio Podcast did an episode on parsing. Go check it out too if you haven't yet.

The summer is over, and Alex Ionkov has shared his experiences participating in the Google Summer of Code. He has used Elm to build the UI for Kodi, a software media player. Alex's mentor in this task was no other than Kolja Lampe who you might know under the handle Razzeee. Alex explains how he approached the task, where most of the time went, and what it takes for a person new to Elm to write a project in it. He says...

It is a different way of thinking about programming which I found very  challenging at first but ultimately, really intriguing and surprisingly  easier than I anticipated.

which is very similar to what I experienced. I am actually very happy for having found Elm and it being my introduction to the wonderful world of functional programming. Most of my day work is still spent writing JavaScript and Python, but I started to embrace immutability, generators, and other functional patterns in my day job.

It looks like the summer holidays are over and people are getting back to work. Jetstream Cloud is looking for student for paid Elm internship. It's a remote position, but looks like you need to be based in the US. Pretty cool nevertheless.

Quote of the week

Paul Graham has a dedicated page of quotes about Lisp, and I'll pick one from there:

Programs must be written for people to read, and only incidentally for machines to execute

by Abelson & Sussman, SICP, preface to the first edition

Show Comments