June 2025 Recap
It's July and it's time for a change. This newsletter has been in operation for almost one year and I've mostly used it in an adhoc fashion to communicate with you.
I want to bring some consistency to the madness and so I've decided that my first step would be to introduce a monthly recap email.
Each month, on the first day of the month, I plan to send an email to share what happened in the previous month in the Elm with Dwayne corner of the universe.
There will be other types of emails but I haven't decided on what those might be as yet.
Let's get started!
Table of contents
- Behind the scenes
- Website
- No more blog posts
- How I Built freeCodeCamp's Calculator with Elm
- What I've worked on
- A reusable Tic-tac-toe library
- Diary of an Elm Developer
- L-System Studio
- A data validation library
- From the blog
- Picks
Behind the scenes
Website
I quietly launched https://elmwithdwayne.dev at the end of last year and have been slowly updating it with content as the months passed. Last month I switched to Astro and I'm starting to figure out how I want to design the website for an effective learning experience.
In the not too distant future, I'd love to converge on a design that leverages ideas from these Mathigon/Research resources and other similar resources.
For now, it would remain without a design until I figure out the information architecture. However, in the meantime, I hope it would still be useful as a single source of truth for everything that's connected to Elm with Dwayne.
I figured out how to directly share my dev.to blog posts on Reddit without it being removed by Reddit's filters. I set up temporary redirects from https://elmwithdwayne.dev/blog/dev.to/dwayne to https://dev.to/dwayne and the strategy seems to be working based on this post. This means there would not be anymore indirect links to blog posts via Elm Discourse which should help me avoid comments like this in the future.
No more blog posts
I won't be sharing individual blog posts, as they are published, on the newsletter anymore. Instead, I will share a list of all Elm related blog posts that were published in the previous month when I do this recap.
Why do this?
For starters, I share individual blog posts, as soon as they are published, on Elm Slack, Elm Discourse, and Reddit.
Secondly, dev.to has an RSS feed for my blog that you can subscribe to in your RSS reader that's better than me sharing it via this newsletter. Here's the RSS feed for Elm with Dwayne blog posts.
How I Built freeCodeCamp's Calculator with Elm
I changed the URL to https://calculator.tutorial.elmwithdwayne.dev and added Umami to track website analytics.
Don't worry, all links to the previous URL work as I've set up redirects to the new URL.
What I've worked on
A reusable Tic-tac-toe library
It shows how to separate UI and application logic. I rewrote dwayne/elm-tictactoe to extract the essence of Tic-tac-toe into a reusable library that could power any UI for Tic-tac-toe.
Diary of an Elm Developer
I started a new series on my blog as a way to give myself permission to share more frequently about my Elm related excursions in an open and freer format.
L-System Studio
An environment for creating and exploring L-Systems.
It features:
- 30+ presets
- Including the Koch Curve, Quadratic Gosper, and Square Sierpinski
- Unlimited iterations
- It uses lazy evaluation to generate, translate, and render L-Systems with
billionstrillionsinfinitely many symbols
- It uses lazy evaluation to generate, translate, and render L-Systems with
- 2D camera
- Supports an infinite canvas since you can position the camera anywhere you want
- Supports panning horizontally and vertically
- Supports zooming in and out
- Performant
- Render 1,000,000 instructions per frame at 60 frames per second
Expect more off-shoots from this work as it has stirred up a lot of interesting ideas that I want to continue exploring more deeply.
A data validation library
Composable data validation with error accumulation.
I used a similar idea in dwayne/elm-conduit and so I decided to generalize it for wider use. The idea isn't new at all and I got the inspiration for it from the following resources:
- Haskell: validation
- Applicative Validation from the "PureScript by Example" book
- Announcement: Maybe Haskell
- Finding Success (and Failure) in Haskell
From the blog
Diary of an Elm Developer - Exploring an API for form fields
L-System Studio required me to use a lot of form fields in interesting ways. As a result I made an abstraction to manage the complexity. This abstraction turned out to be quite useful beyond L-System Studio so I started to explore what a general API for form fields would look like. I'm still exploring but this post details some of my early findings.
Picks
- The Type Theory Forall podcast episodes 47 and 48
- 47: The History of LCF, ML, and Hope
- 48: Bell Labs
- Featuring Dave MacQueen, one of the main persons behind the design of the Hope functional language, which brought us algebraic data types, and the design and implementation of Standard ML, which influenced Elm
- The End of Average
- Any system designed around the average person is doomed to fail
- No one is average
- The moment you need to make a decision about any individual, the average is useless
- There are three principles of individuality that are discussed in detail:
- The jaggedness principle (talent is always uneven)
- The context principle (traits are not fixed)
- The pathways principle (we often take unconventional routes)
- Talks about the work of Quetelet, Galton, Fredrick Winslow Taylor, Edward Thorndike
- Fredrick Winslow Taylor
- Individuality does not matter
- Put the system first, not the individual
- His ideas had a profound effect on how people were educated and why they were educated
- Edward Thorndike
- Separate the gifted from the useless
- Proponents of individuality include Peter Molenaar and Esther Thelen
- Peter Molenaar found an irrefutable error at the heart of averagarianism
- Esther Thelen provided an explanation for the stepping reflex issue in newborns by throwing out averagarianistic thinking
Thanks! That's it for today. I wish you all the best this month and remember, make haste slowly.