Elm with Dwayne

Subscribe
Archives
August 1, 2025

July 2025 Recap

In July, I was primarily working on a library for form fields. It's almost complete. I have the public API pretty much figured out and I'm in the middle of writing documentation and unit tests.

The process has been going slowly because as I've started writing the documentation and unit tests it has been informing my decisions with regards to the public API. It was interesting to see how even though I extracted the idea from a working application and even though I tried it out on a variety of examples, there were still improvements to be made to the public API.

My work on form fields will be continuing into this month but I can't wait to share the first version with you all and get your feedback.

From the blog

  • Diary of an Elm Developer - Exploring debounced input - On the work I'm doing to make debouncing work with form fields.
  • Diary of an Elm Developer - From fields to forms - I describe a beautiful form abstraction I discovered while playing with my form fields.

Built with Elm

Built with Elm is still an active project that I'm continuing to maintain and I'm always happy to receive your submissions.

Last month two interesting applications were added:

  • Simple IoT - It enables you to add remote sensor data, telemetry, configuration, and device management to your project or product.
  • Elm Editor - A web-based IDE for Elm applications.

Thanks again to cbrake and Viir for sharing!

Picks

Dave MacQueen shares his strong opinions about Object-Oriented Programming. I appreciated all the history he shared and it also introduced me to the idea of open recursion. Apparently open recursion is the underlying idea behind inheritance. This leads me to my second pick.

YouTube: The Haskell Unfolder Episode 13: open recursion where Edsko and Andres use the technique of open recursion to do object-oriented programming in Haskell. What blew my mind however were the other use cases that Andres shared at the end. A few examples he mentioned included:

  • 31:35: Using it to do memoization since you have to replace a function with its memoized variant in all recursive positions.
  • 32:37: Using it on the type level. You have recursive data structures and sometimes you want to add new alternatives in every single recursive node.
  • 33:18: In the Nix package manager you use a functional language to describe package dependencies. Sometimes you want to use a newer version of a dependency somewhere deep down in the dependency tree. The changed package should be changed everywhere that packages depend on it. This is done through a pattern that is based on open recursion. See Nix Pills: Nixpkgs Overriding Packages to learn more.

Since I'm on the topic of OOP and open recursion I'd share my third and final pick which is an article by Derrick W. Turk called Open Recursion: The essence of Object-Oriented Programming.


That's it for today. I wish you all the best this month and remember, make haste slowly.

Don't miss what's next. Subscribe to Elm with Dwayne:
Powered by Buttondown, the easiest way to start and grow your newsletter.