Dillon Kearns, Jeroen Engels
Elm Radio
Tune in to the tools and techniques in the Elm ecosystem.
Author
Dillon Kearns, Jeroen Engels
Category
Podcast website
Latest episode
Dec 4, 2023
Where to listen?
Podcasts in the app Replaio Radio Coming soonPodcasts are coming to the app soon. Install now and be the first to see a whole new take on podcasts
Episodes
021: elm-review Tips 04.01.2021 50:41
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 1:14:21
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 49:21
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 1:04:51
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 54:05
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 53:39
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 55:25
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 56:23
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 56:43
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 56:53
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 52:21
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 1:00:34
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 58:49
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 57:56
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 58:54
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 1:04:49
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 50:47
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 57:40
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 45:45
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 40:00
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 51:27
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...
Similar podcasts
Replaio is not a podcast publisher; show names, artwork and audio belong to their authors and are distributed through public RSS feeds.