Skip to content

Instantly share code, notes, and snippets.

View allVariants.elm
type TrafficLight
= Red
| Yellow
| Green
allTrafficLight : List TrafficLight
allTrafficLight =
helper list =
choonkeat / Custom Type Naming
Last active Oct 6, 2021
Custom Type Naming Convention (hope I can gist search this time; wrote it before)
View Custom Type Naming

In a type specific module, we can name succinctly

module Channel

type Channel
    = Alpha
    | Beta
choonkeat /
Last active Aug 1, 2021
terraform declaration to "Another AWS account" with "external ID" for infrastructure scanning purpose, e.g. Cloudcraft
resource "aws_iam_role" "foobar-role" {
name = "foobar"
path = "/"
assume_role_policy = data.aws_iam_policy_document.foobar-assume-role-policy-document.json
managed_policy_arns = [aws_iam_policy.foobar-policy.arn]
data "aws_iam_policy_document" "foobar-assume-role-policy-document" {
statement {
actions = ["sts:AssumeRole"]
View see.tailwind.grid.html
<div class="max-w-screen bg-gray-100 text-center">
<span class="text-red-400 sm:hidden">xs</span>
<span class="text-yellow-400 hidden sm:inline md:hidden">sm</span>
<span class="text-green-400 hidden md:inline lg:hidden">md</span>
<span class="text-blue-400 hidden lg:inline xl:hidden">lg</span>
<span class="text-purple-400 hidden xl:inline 2xl:hidden">xl</span>
<span class="text-pink-400 hidden 2xl:inline 3xl:hidden">2xl</span>
choonkeat /
Created Apr 20, 2021
fix for atom-elmjutsu: configure elm and elm-test executable path to these 2 scripts instead
if $(which elm) $*
echo '{"type":"compile-errors","errors":[]}' >&2
touch $0
View defer.js
var waitall = {
defer: [],
final: null
// will make sure to call `` when all `waitall.defer` has cleared
function defer (fn) {
return function (...args) {
var result = fn(...args)
choonkeat / env2file.js
Last active Mar 17, 2021
node scripts/env2file.js > src/Env.elm
View env2file.js
function camelize (str) {
let parts = str.replace(/_/g, ' ').toLowerCase().split(/\W+/)
.reduce(function (sum, s) {
if (typeof sum === 'string') sum = [sum]
if (sum[0]) return [...sum, s[0].toUpperCase() + s.slice(1)]
return [s]
return (typeof parts === 'string' ? parts : parts.join(''))
console.log(`module Env exposing (..)

What does it mean by Html Msg?

There are possibly 2 questions in this question. I'll answer them 1 by 1

Part 1: h-t-m-l message

After knowing the basic Elm syntax, we could be reading the following "return values" like this

userFromJWT : String -> Maybe User
  • Elm is not a frontend framework.
  • Elm is neither V in MVC, nor MV in MVC, nor even MVC itself.
  • You don't assemble libraries and configure options to make Elm do what you want.

Elm is a language. You write programs with it.

But instead of providing a regular main function to run, Elm wants you to write at least 2 parts to run your program: init and update. This is my pseudo code for your init and update plugs into Elm runtime:

let [globalState, cmd] = init(optionFlags)