# elm

Published articles for elm.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Reclaim the reactivity of your state management, say no to imperative MVI

DevFeed: [Reclaim the reactivity of your state management, say no to imperative MVI](<https://devfeed.tech/articles/reclaim-the-reactivity-of-your-state-management-say-no-to-imperative-mvi-25932.md>)

Original publisher: [Read original article](<https://proandroiddev.com/reclaim-the-reactivity-of-your-state-management-say-no-to-imperative-mvi-3b23ca6b8537?source=rss-7a8d96da8cb6------2>)

Author: Gabor Varadi

Published: 2022-05-02T05:05:46Z

Content type: opinion

Language: en

Sources: [Stories by Gabor Varadi on Medium](<https://devfeed.tech/sources/stories-by-gabor-varadi-on-medium.md>)

Topics: [reactive](<https://devfeed.tech/topics/reactive.md>), [Redux](<https://devfeed.tech/topics/redux.md>), [Elm](<https://devfeed.tech/topics/elm.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [androiddev](<https://devfeed.tech/tags/androiddev.md>), [architecture](<https://devfeed.tech/tags/architecture.md>), [architecture-pattern](<https://devfeed.tech/tags/architecture-pattern.md>), [clean-code](<https://devfeed.tech/tags/clean-code.md>), [elm](<https://devfeed.tech/tags/elm.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [model-view-intent](<https://devfeed.tech/tags/model-view-intent.md>), [mvi](<https://devfeed.tech/tags/mvi.md>), [reactive](<https://devfeed.tech/tags/reactive.md>), [redux](<https://devfeed.tech/tags/redux.md>), [state](<https://devfeed.tech/tags/state.md>), [state-management](<https://devfeed.tech/tags/state-management.md>)

### AI overview

The article critiques imperative MVI-style state management as overly complex and boilerplate-heavy. It traces MVI's web-oriented history through Cycle.js, The Elm Architecture, and Redux, and questions whether those patterns fit statically typed application development.

### Source excerpt

Do you find yourself chasing for "clean code, clean architecture, clean design, clean state management" yet still feel bogged down in a sea of boilerplate for even the simplest of tasks -- such as showing a simple list fetched with a coroutine? Surely this could be done in a single line or maybe about seven, but it certainly shouldn't need gigantic case-whens, three layers of indirection, and so on? Well, normally you could just invoke functions on ViewModel and it would work, but if you're forced to seek the "architectural holy grail", no one around you will trust your code unless you add at least one sealed class called ViewActions, and increase the cyclomatic complexity of your "action handler" function until it feels "just clean enough". (After all, surely the more completely unrelated things a single function does based on its argument, the more it has a "single responsibility" of handling literally everything, which is why you know it's definitely the best possible way to do it. 😏) Anyway, the boilerplate of coupling together all aspects into a single class, whether it is a function call or state property, this all has a history: namely, it came from the web. The brief history of MVI MVI stands for "model-view-intent" and comes from a (not very popular for use in production) Javascript framework called Cycle.js, hand-in-hand with a (not popular anymore) concept called "The Elm Architecture" defined as the best practices and intended use of an experimental (and since 2019, unmaintained) "functional-reactive programming language for the web" called ELM. Then again, these didn't come from a vacuum either -- the originator is Redux, in 2015. The general idea was to implement a state machine using the command processor pattern in Javascript, thereby supporting "undo" functionality (also often referred to as "time-travel debugging"). Of course, most design decisions of Redux only make sense for Javascript -- as it is a language with no static typing. It makes sense to

## And Now For Starting Again with Elixir and Phoenix Not Elm

DevFeed: [And Now For Starting Again with Elixir and Phoenix Not Elm](<https://devfeed.tech/articles/and-now-for-starting-again-with-elixir-and-phoenix-not-elm-28163.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/elixir/2022/04/01/and-now-for-starting-again-with-elixir-not-elm.html>)

Author: Fuzzygroup

Published: 2022-04-01T15:57:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Elixir](<https://devfeed.tech/topics/elixir.md>), [phoenix](<https://devfeed.tech/topics/phoenix.md>), [Elm](<https://devfeed.tech/topics/elm.md>), [Laravel](<https://devfeed.tech/topics/laravel.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>), [Homebrew](<https://devfeed.tech/topics/homebrew.md>), [Processes](<https://devfeed.tech/topics/processes.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [elixir](<https://devfeed.tech/tags/elixir.md>), [elm](<https://devfeed.tech/tags/elm.md>), [homebrew](<https://devfeed.tech/tags/homebrew.md>), [laravel](<https://devfeed.tech/tags/laravel.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [phoenix](<https://devfeed.tech/tags/phoenix.md>)

### AI overview

The author sets aside Elm after finding a simple HTML form frustrating to implement and experiments with moving a Laravel application to Elixir and Phoenix. The article documents updating Elixir on macOS, installing Phoenix, generating a Phoenix application with MySQL, configuring the database, and adapting migrations for an existing schema.

### Source excerpt

In my last blog post, I dug into Elm and while I like a number of things conceptually about Elm, the process of implementing nothing more than a maybe 8 element HTML form left me hugely frustrated and annoyed. I also didn't like the way that Elm bundles code and display into one thing. I may be a traditionalist perhaps but the separation of views and code really does work well in practice. I get that Elm is a different thing but it shouldn't be this hard to just put some text and an html form on the screen. And, so, I'm putting Elm to the side for a bit and going to experiment with using Elixir and Phoenix for my previous Laravel application. If nothing else this should be much more straightforward as it is moving from one MVC style framework to another albeit from an OO lang (php) to a functional lang (elixir). Step 1: Getting Up To Date I'm on OSX and my goal was to get to the current Elixir and Phoenix before I started, This I found to be surprisingly problematic. And, perhaps, it was my fault as I don't claim to be great with HomeBrew. I started with: brew update brew install elixir@1.12 But no matter what I did, I couldn't get past elixir 1.11. So my next step was to get rid of everything. Getting Rid of Everything I started with: brew uninstall elixir And then I got a warning about a shallow copy issue which told me to run: git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow brew update brew install elixir which finally resulted in: ❯ elixir -v Erlang/OTP 24 [erts-12.3.1] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit] [dtrace] Elixir 1.13.3 (compiled with Erlang/OTP 24) Installing Phoenix A bit of googling gave me this command to install the newest Phoenix: mix archive.install hex phx_new Step 2: Generating a New App Although I've actually been to ElixirCon, things have changed a lot in a few years. Here's the new syntax for generating an app: mix phx.new kit_selector3 --database mysql Normally I'd be using pos

## Getting Started with Elm 01 - The Very Basics

DevFeed: [Getting Started with Elm 01 - The Very Basics](<https://devfeed.tech/articles/getting-started-with-elm-01-the-very-basics-28164.md>)

Original publisher: [Read original article](<http://fuzzyblog.io/blog/elm/2022/03/29/getting-started-with-elm-01-the-very-basics.html>)

Author: Fuzzygroup

Published: 2022-03-29T12:58:00Z

Content type: tutorial

Language: en

Sources: [Scott Johnson](<https://devfeed.tech/sources/scott-johnson.md>)

Topics: [Elm](<https://devfeed.tech/topics/elm.md>), [Front end](<https://devfeed.tech/topics/frontend.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Bootstrap](<https://devfeed.tech/topics/bootstrap.md>), [Laravel](<https://devfeed.tech/topics/laravel.md>), [Terminal](<https://devfeed.tech/topics/terminal.md>)

Tags: [css](<https://devfeed.tech/tags/css.md>), [elm](<https://devfeed.tech/tags/elm.md>), [getting-started](<https://devfeed.tech/tags/getting-started.md>), [guide](<https://devfeed.tech/tags/guide.md>), [installation](<https://devfeed.tech/tags/installation.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [terminal](<https://devfeed.tech/tags/terminal.md>)

### AI overview

A beginner tutorial for Elm that covers installation, the elm terminal command, project creation with elm init, the elm.json file, and adding Bootstrap support. It also compares Elm's setup with Rails and Laravel while using a Laravel back end as a reference point.

### Source excerpt

Elm is an interesting new front end language technology based on a functional language that generates JavaScript transparently and has a focus on great documentation and ease of learning. A good starting point is the Guide. In this blog post, I'm going to walk through the initial steps. Along the way I'll draw some comparisons to things like Rails or Laravel. My goal in all this is re-implementing a recent project I built with a JavaScript front end and a Laravel back end. I'll us the same Laravel back end to see how Elm stacks up. Installation There is an installer for Elm here which installs the language and binds it to the elm terminal command. Sidebar: Trying Out Elm There is an excellent online console for trying out Elm here: https://elm-lang.org/try Building a Project I keep all my projects organized by their language type so I have a directory structure like: ~/code/elm Within the elm directory you want to start by creating a project directory. Mine is named kit_selector3: cd ~/code/elm mkdir kit_selector3 Once you have a project directory built then you want to to use the init command: elm init Please note that this is very unlike Rails or Laravel which build the project directory when you use their equivalent of elm init (rails new kit_selector3 or composer create-project laravel/laravel kit_selector3). This builds the bare minimum skeleton for an elm project which looks like this: . ├── elm-stuff │ └── 0.19.1 │ ├── Main.elmi │ ├── Main.elmo │ ├── d.dat │ ├── i.dat │ ├── lock │ └── o.dat ├── elm.json └── src The file elm.json is there to handle component installation. Let's Add Bootstrap Support Given that it is the 21st century and virtually anything we build needs to work nicely on a mobile phone, I generally start everything these days with Bootstrap. Happily there is a Bootstrap component for elm. We can argue about CSS grids and such but Bootstrap, well, just plain works. Here's how we get Bootstrap added to our "application" (right now there is so li

## Comparing BuckleScript/ReasonML, Elm, and TypeScript for Web Development

DevFeed: [Comparing BuckleScript/ReasonML, Elm, and TypeScript for Web Development](<https://devfeed.tech/articles/bucklescript-vs-elm-vs-typescript-typed-javascript-showdown-32154.md>)

Original publisher: [Read original article](<https://adambard.com/blog/reason-vs-elm-vs-typescript/>)

Published: 2017-09-03T00:00:00Z

Content type: comparison

Language: en

Sources: [Adam Bard](<https://devfeed.tech/sources/adam-bard.md>)

Topics: [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Elm](<https://devfeed.tech/topics/elm.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Tooling](<https://devfeed.tech/topics/tooling.md>), [Reason](<https://devfeed.tech/topics/reason.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Webpack](<https://devfeed.tech/topics/webpack.md>)

Tags: [compare](<https://devfeed.tech/tags/compare.md>), [elm](<https://devfeed.tech/tags/elm.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [tooling](<https://devfeed.tech/tags/tooling.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

### AI overview

This article compares BuckleScript/ReasonML, Elm, and TypeScript as typed languages that compile to JavaScript. It examines their features, build ecosystems, editor tooling, JavaScript interoperability, and coding experience, with small examples in each language.

### Source excerpt

You, a web developer, have probably heard of Typescript, may have heard of Elm, and you might even have heard of Bucklescript/ReasonML as well. Each of these represents a compiles-to-javascript language with strong type support, but each has some different opinions, philosophies, and features. In this article I'll walk you through the features of each of these options and compare their build ecosystems, editor tooling, and javascript interop. In addition, as is my habit, I've written up a small example in each of these languages. (Well, actually, I've taken one of Elm's small demos and re-created it in the other two). I'll discuss my impressions of the tooling and the coding experience along the way.

## Notes from The Elm Developer Retreat

DevFeed: [Notes from The Elm Developer Retreat](<https://devfeed.tech/articles/notes-from-the-elm-developer-retreat-32217.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2016/10/09/the-elm-developer-retreat/>)

Author: Bruce Eckel

Published: 2016-10-09T00:00:00Z

Content type: opinion

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Elm](<https://devfeed.tech/topics/elm.md>), [Learning](<https://devfeed.tech/topics/learning.md>), [Slack](<https://devfeed.tech/topics/slack.md>), [Google](<https://devfeed.tech/topics/google.md>), [Website](<https://devfeed.tech/topics/website.md>)

Tags: [developer](<https://devfeed.tech/tags/developer.md>), [elm](<https://devfeed.tech/tags/elm.md>), [google](<https://devfeed.tech/tags/google.md>), [learning](<https://devfeed.tech/tags/learning.md>), [notes](<https://devfeed.tech/tags/notes.md>), [repository](<https://devfeed.tech/tags/repository.md>), [slack](<https://devfeed.tech/tags/slack.md>)

### AI overview

Notes from a 2016 Elm developer retreat covering the event format, collaborative learning, updating example code for Elm 0.17, support through Elm Slack, learning resources, and tools for group work.

### Source excerpt

This Developer Retreat was held Oct 6-9, 2016. So far the consensus seems to be that Thursday-Sunday is best, because Monday is often a big meeting day at companies (and taking two days at the end of the week is within tolerability). At peak, we had six attendees including myself; on the weekend we had two students from Colorado Mesa University in Grand Junction. There will be another retreat directly following the Winter Tech Forum.

## The Elm Developer Retreat

DevFeed: [The Elm Developer Retreat](<https://devfeed.tech/articles/the-elm-developer-retreat-32216.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2016/09/12/the-elm-developer-retreat/>)

Author: Bruce Eckel

Published: 2016-09-12T00:00:00Z

Content type: article

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Elm](<https://devfeed.tech/topics/elm.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Programming](<https://devfeed.tech/topics/programming.md>)

Tags: [building](<https://devfeed.tech/tags/building.md>), [developer](<https://devfeed.tech/tags/developer.md>), [elm](<https://devfeed.tech/tags/elm.md>), [events](<https://devfeed.tech/tags/events.md>), [exploration](<https://devfeed.tech/tags/exploration.md>), [language](<https://devfeed.tech/tags/language.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This announcement describes a developer retreat scheduled for October 6-9 in Crested Butte, Colorado. Participants will study the Elm programming language and begin building the Open-Spaces Board UI. The event has no fee yet, but attendees must arrange travel and lodging and pay for meals.

### Source excerpt

Developer Retreats are the most relaxed and low-ceremony events you can imagine, and I've been very satisfied with the first two. October 6-9 in Crested Butte CO, we are going to tackle the Elm programming language and make a start on building the Open-Spaces Board UI. You can find full details here. Some of us have been studying Elm a bit already but this will be a group exploration so if you haven't had any experience with the language yet you're in good company (although any pre-retreat studying you do will help).

## News, Readables, Viewables

DevFeed: [News, Readables, Viewables](<https://devfeed.tech/articles/news-readables-viewables-32208.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2015/08/06/news-readables-viewables/>)

Author: Bruce Eckel

Published: 2015-08-06T00:00:00Z

Content type: article

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Elm](<https://devfeed.tech/topics/elm.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [opensource](<https://devfeed.tech/topics/opensource.md>)

Tags: [conference](<https://devfeed.tech/tags/conference.md>), [elm](<https://devfeed.tech/tags/elm.md>), [keynote](<https://devfeed.tech/tags/keynote.md>), [news](<https://devfeed.tech/tags/news.md>), [opensource](<https://devfeed.tech/tags/opensource.md>), [philosophy](<https://devfeed.tech/tags/philosophy.md>), [programming](<https://devfeed.tech/tags/programming.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>)

### AI overview

A roundup of programming-related items, including an upcoming opening keynote at the JET conference, an Opensource.com interview, discussion of Elm's language design philosophy, Kent Beck's closing keynote, and Esther Derby's Six Rules for Change.

### Source excerpt

I will be giving the opening keynote at the JET conference in Minsk, Belarus on September 28. The title is "A Language is More Than a Language," about the necessity for everything that surrounds a programming language. You can find the description here. An interview with me on Opensource.com. The creator of the Elm language about language design philosophy. This makes me want to learn Elm. Kent Beck gives an amazing closing keynote.