Dillon Kearns, Jeroen Engels

Elm Radio

Tune in to the tools and techniques in the Elm ecosystem.

Author

Dillon Kearns, Jeroen Engels

Category

Technology

Podcast website

elm-radio.com

Latest episode

Dec 4, 2023

Where to listen?

Podcasts in the app Replaio Radio Coming soon

Podcasts are coming to the app soon. Install now and be the first to see a whole new take on podcasts

Get it on Google Play Install for free Android 5M+ downloads · 4.8 rating iOS soon

Episodes

021: elm-review Tips 04.01.2021

The npx command runs NPM binaries from your shell Some tricks to easily try elm-review with no setup: npx elm-review --template jfmengels/elm-review-unused/example Init with a given template: npx elm-review init --template jfmengels/elm-review-unused/example Incremental adoption Don't enable lots with errors, better to have few with no errors Enable in CI ignoreErrorsForFiles ignoreErrorsForDirect...

020: Holiday Special! 21.12.2020

Our special guests Tessa Kelly ( twitter ) ( github ) Mario Rogic ( twitter ) ( github ) Matthew Griffith ( twitter ) ( github ) Links Lamdera Richard Feldman's talk Scaling Elm Apps Life of a File Elm Radio episode

019: Scaling Elm Apps 14.12.2020

Richard Feldman's talk Scaling Elm Apps Life of a File Elm Radio episode Web Components (can be used to encapsulate state heavy view components) How Elm Code Tends Towards Simplicity GOOS book elm-spa framework

018: Lighthouse Scores 30.11.2020

Performance metrics First Contentful Paint Time to Interactive Cumulative Layout Shift Best practices Lighthouse SEO Audits Lighthouse Best Practices Audits Performance best practices CDN Netlify Image Optimization Cloudinary loading=lazy SVG Icons Apple touch and other icons to add to <head> Some resources on icons What the apple touch icons mean Google web.dev resource on apple touch icons...

017: Codecs 16.11.2020

miniBill/elm-codec - JSON codec library MartinSStewart/elm-codec-bytes Backwards compatibility elm-codec's FAQ section on backwards compatability Mario Rogic's talk on Elm Evergreen Mario Rogic's talk on Lamdera Keeping data in sync Elm Radio episode on elm-graphql Two Generals Problem Elm codec API - string, Bool, object MartinSStewart/elm-serialize/latest/ , encodes in a format that is optimized...

016: elm-graphql 02.11.2020

dillonkearns/elm-graphql Elm Radio episode 4 - JSON decoders Dillon's Elm Conf talk about the principles behind elm-graphql: Types Without Borders Phantom Types elm-graphql 's FAQ document Article about simple design in Elm elm-graphql Scalar Codecs tutorial How can elm graphql decoding fail? SelectionSet.nonNullOrFail SelectionSet.mapOrFail Custom Scalars don't include type information, though th...

015: Incremental Steps 19.10.2020

Dillon's Elm Europe talk Incremental Type Driven Development Test driven development Fake it till you make it elm-markdown GitHub-Flavored Markdown table live stream Succeed is the key to success Practical refactoring with Llewllyn Falco and Woody Zuill Llewllyn Falco doing Gilded Rose kata with TCR and snapshot testing Dillon's article on Relentless, Tiny Habits

014: The Life of a File 05.10.2020

Evan Czaplicki's talk The Life of a File . Richard Feldman's Frontend Masters Elm courses Explore many different data modeling options Make Impossible States Impossible Elm Radio episode Wait until you feel the pain vs create abstractions before you need them Does the code quality metric of line count apply in Elm since there's no spooky action at a distance Aim for loose coupling, high cohesion L...

013: Make Impossible States Impossible 21.09.2020

The talks Make Impossible States Impossible from Elm Conf 2016 Make Data Structures from Elm Europe 2018 Elm Radio Episode 2: Intro to Opaque Types Dealing with Impossible States Building up a "truth table" of possible states (see Evan's guide Types as Sets ) Which rows are invalid? Create a new type with only the valid ones possible More references elm-css Tereza's line-charts package Tereza's el...

012: elm-spa 07.09.2020

elm-spa Richard Feldman's elm-spa-example GitHub repo Elm's Browser.application Url. Parser - URL parsing in Elm for routing single-page apps elm-shared-state pattern (formerly called elm-taco ) Next.js and NuxtJS Routing and dynamic routing in elm-spa Scaling Elm Apps talk - Elm Europe keynote by Richard Feldman Getting Started Resources Offical elm-spa Guide #elm-spa-users channel on the officia...

011: Parse, Don't Validate 24.08.2020

Alexis King's article Parse, Don't Validate the difference between validation and parsing lies almost entirely in how information is preserved Shotgun parsing ( original academic paper ) Mixing processing and validating data Shotgun parsing is a programming antipattern whereby parsing and input-validating code is mixed with and spread across processing code—throwing a cloud of checks at the input,...

010: elm-test 10.08.2020

elm-test Basics elm-test NPM package elm-explorations/test Elm package elm-test init command Running elm-test finds exposed values of type Test TDD Principles Testing in Elm is easier because it's just expectations of input to output (deterministic) TDD is a design practice too Programming by Intention Writing test first makes code testable & decoupled Red, green, refactor YAGNI "Make the chan...

009: elm-ui 27.07.2020

elm-ui package Fewer overlapping ways to express views Element.padding (no concept of margin) Previously called style-elements There used to be a notion of a single type defining all possible styles Latest elm-ui simplifies that by using only inline styles. You build your own abstractions with vanilla Elm functions/modules etc. Element type is the equivalent of the Html type from elm/html elm-css...

008: The Builder Pattern 13.07.2020

What is a Builder? Init a builder data structure with a set of reasonable defaults Customize those defaults through a series of chained function calls Builders have the same type for the return type and final argument, so that they work nicely in a pipeline Resources and Examples Luke Westby's http-builder package Brian Hicks' Robot Buttons from Mars talk elm-review package docs elm-pages/phantom...

007: Extending Elm 29.06.2020

Platform.worker What can you do with Elm? Html Http Ports Web Components Different techniques for extending elm elm-pages StaticHttp API Elm radio episode 1 on elm pages elm-graphql Codegen Macros Elixir exunit Wrapper elm apps Can emulate effect managers Platform.worker Introspection elm-typescript-interop Ports and flags Web Components Code transformation Elm asset loader webpack Hacking JS to g...

006: elm/parser 25.05.2020

What is a parser? yacc/lex AST (Abstract Syntax Tree) vs. CST (Concrete Syntax Tree) JSON decoding vs. parsing JSON decoding is validating a data structure that has already been parsed. Assumes a valid structure. elm/parser Haskell parsec library - initially used for the Elm compiler, now uses custom parser What is a parser? One character at a time Takes input string, turns it into structued data...

005: How (And When) to Publish a Package 11.05.2020

What is an Elm Package? Elm package repository Elm packages enforce SemVer for the public package API The SemVer (Semantic Versioning) Spec Interesting note : the SemVer spec says breaking changes only refers to the public API. But a core contributor clarifies that breaking changes can come from changes to the public contract that you intend users to depend on. See this GitHub thread . list-extra...

004: JSON Decoders 27.04.2020

Basics elm/json package docs Elm Guide section on JSON Decoders Validates that data has the expected shape. Similar to the pattern we discussed in episode 002 Intro to Opaque Types . Ports and Flags Here's an Ellie example that shows the error when you have an implicit type that your flags decode to and it's incorrect. Sorry Dillon... Jeroen won the trivia challenge this time 😉 It turns out that...

003: Getting started with elm-review 08.04.2020

elm-review review-rgb-ranges package by Runar Elm Analyse elm-review 1.0 release announcement blog post elm-review 2.0 release announcement blog post Custom Scalars in elm-graphql

002: Intro to Opaque Types 03.04.2020

Opaque Types Some patterns Runtime validations - conditionally return type, wrapped in Result or Maybe Guarantee constraints through the exposed API of the module (like PositiveInteger or AuthToken examples) Package-Opaque Modules Example - the Element type in elm-ui. Definition of the Element type alias elm-ui's elm.json file does not expose the internal module where the real Element type is defi...

001: Getting started with elm-pages 03.04.2020

elm-pages hydrates into a full Elm app. It solves similar problems to what GatsbyJS solves in the ReactJS ecosystem. Static site generators with JS-free output https://korban.net/elm/elmstatic/ https://jekyllrb.com/ Eleventy Meta Tags Open Graph tags Asset management with elm-pages (CSS vs. SASS,etc.) Github issue discussing using the Unix Toolchain Philosophy in the context of keeping elm-pages f...

Listen to the Elm Radio podcast in Replaio

Radio and podcasts in one app - free, with no sign-up. Install today and do not miss the launch

Get it on Google Play

Replaio is not a podcast publisher; show names, artwork and audio belong to their authors and are distributed through public RSS feeds.