2021 Holiday Special!

Some Elm friends visit for a Family Feud-style game. Plus a special Holiday roundtable to close out the year!
December 20, 2021

Our special guests


Hello, Jeroen.
Hello, Dan.
And here we are again, back for our 2021 holiday episode and joined again by some Elm friends.
We've got some friends who joined us in the past and some friends who've never been on
the podcast.
So we'll start with Ryan.
Thanks for joining us again, Ryan.
Great to have you.
Yeah, thanks for having me.
Looking forward to the amazing thumbnail that we're going to get for this podcast episode
designed by yours truly.
We're talking gradients.
We're talking bold.
I'm not sure what font I used.
I think it was Helvetica.
But yeah.
Just no Comic Sans.
No Comic Sans.
I love Comic Sans.
I should have done it.
I feel kind of wasted opportunity there.
Next time.
And we've got Brian Hicks.
Hello, Brian.
Great to have you.
Nice to be here.
And we've got Robin Hanson.
Great to have you on, Robin.
Thank you.
It's good to be on.
So all right.
So let's dive in here.
So we're going to be, since it's 2021, to stay relevant.
We are going to be doing a fun game.
And that game is Squid Game.
So everybody's got a sense of the rules and the consequences?
I'm nervous.
Is this where we like, do I have to eat a squid?
No, we're actually going to be doing Family Feud again this year.
So similar to last year.
The Family Feud, we're going to be going through some survey responses from the Elm community.
And we're going to be trying to guess the most popular responses to these Elm related
So the basic rules of the game, one, the teams will fight for control over the board and
try to guess as many items as they can from the board.
If they clear the board and get all of the items before getting three strikes, then they
gain all of those points to themselves.
But if they don't clear the whole board, then as Yaron can explain to you, they get an opportunity
to steal those points.
There was quite an upset last year.
They won't do it.
They're ruthless.
So that's the basic idea of Family Feud.
And so we've got our two teams.
On team Left Pizza, we have Brian Hicks and Robin Hanson.
And on team Double Slash, we have Yaron and Ryan.
Yeah, noisy.
Hey, I tell you what.
We got Yaron, right slash over here.
And we got Ryan left slash and together, you know, we're going to divide those integers.
We decided on nicknames.
Oh, Brian, we are not prepared for this at all.
Brian's got his soundboard ready though.
I am a soundboard.
All right.
So let's start off here with a juicy one.
So let's see.
Let's get our buzzers ready.
So Yaron and Brian, have you got your buzzers?
Yes, I have it right here.
Would you like to do a test buzz?
Brought to you by Lamdera.
Yaron brought to you by Lamdera once again.
All right.
Our buzzers are working.
So get your buzzers ready.
Here's the question.
Name a technique that helps you fix a bug in your Elm code and Brian gets the buzz in.
Brian, what is your guess?
Running the compiler and reading the error message.
That is indeed on the board at number three.
So Yaron, you get an opportunity to guess either number one or two to take control of
the board.
But should I?
That's a whole question.
That is a question.
I'm already trying to meta this game.
I'm going to guess opaque types.
Opaque types was not on the board.
So fortunately, at least you didn't give any more points to the other team there.
That's something.
All right.
We're just going to steal the points.
That's fine.
Well, we'll see.
Maybe you'll become the point bandit this year.
That's what I'm waiting for.
That's right.
Robin, it's your turn to guess.
Name a technique that helps you fix a bug in your Elm code.
I was going to say opaque types, but that would be stupid, I guess.
Refactoring did not make the board.
That is one strike.
What could be more popular than just like good error messages?
Elm test?
Elm test did not make the board.
I'm starting to wonder whether we are software engineers and we know how to fix bugs.
That doesn't seem to be the case.
There are some pretty nice answers here, but I would use Elm test myself personally.
So that is two strikes.
Robin, no pressure.
Elm review?
Elm review did not make the board.
Oh no.
I'm not sure if that's worse for me or for Jeroen.
Well, that's fair.
I'm so ready to steal.
I'm so ready to steal.
I make so many more bugs than you guys.
I think it's what's happened and I'm so prepared to do.
All right.
So this is now ready to steal.
Although there are only five points on the board, plus whatever question gets stolen.
So we'll see.
Only five points up for grabs.
Team Double Slash.
Now you can openly discuss what you would like to guess.
We're coming from JavaScript.
We're just printing that stuff left and right.
That's got to be number one.
At least that's what I'd say.
Is that the guess?
What do you think?
Should we say debugging or should we say debug.log?
Let's hit them with the debug.log.
We need the confidence.
And we need to say L related.
Let's go with debug.log.
Hold on, Brian.
Wave is coming.
Ding, ding, ding, ding.
That is the number one slot.
Well done.
So now I finally steal points and it's only for five points.
It's only for five points.
Plus debug.log, whatever that was.
Now I'm trying to remember, is that the way the game works?
Oh, I hope so.
I'll watch some compilations of people saying silly things on Family Feud and see if I can
scrape the information.
I love those YouTube videos.
I'm going to say yes and I apologize for my strewn together understanding of Family Feud.
But let's go ahead and say yes.
You ruined this is your karma from last year.
All right.
So how many points do we have?
Team Double Slash, you have a grand total of 30 points.
All right.
We're going to the Super Bowl or something.
I don't know what we do.
Wait, debug.log was with 25 points?
That was with 25 respondents.
That was a heavy hitter.
Oh, man.
What else was on that board?
Oh, yes.
So we had number two slot, make impossible states impossible slash improve types.
Number four, add a type annotation.
Oh, that's actually a good one.
That does help.
At least it makes the errors not take over the entire page.
Look at the entire files.
It's like some stuff.
If you're using Elm Review, then you might already be having it tell you to put type
annotations before you find a bug.
Or your editor.
Time traveling debugger was number five with three respondents.
And number six, also with three respondents, I don't have any bugs in my Elm code.
There you go.
See, I was going to say that, but that doesn't sound good.
It's just not.
Sounds inaccurate.
That being said, it would have been better than striking out.
Because I don't know if I can show up to work tomorrow.
I don't know anything.
The good thing about food.
You just have no bugs.
I would say that's not what I think.
That's just what I think other people think.
Plausible deniability.
All right.
Question number two.
And for our face off this time, get your buzzers ready, Ryan and Robin.
You can use the space bar, by the way.
You can do a test buzzer if you'd like.
I love the space bar.
I love space.
I got your test buzzers.
I love tabs.
Does tab work for that?
We're going to fight that.
This is winning the tabs versus space argument.
Tabs does not trigger the buzzer.
All right.
Ryan and Robin, get your buzzers ready.
Here comes the question.
What is a module name you're likely to have in an Elm SPA application?
Not Elm dash SPA.
N Elm SPA application.
All right.
We've got Robin buzzing in first.
View did not make the board.
It shouldn't be there.
Well, all right.
Ryan, you may be slightly biased on this, Ryan.
You have some opinions about Elm SPAs.
I do.
But hopefully this one's going to show up because if it's not there, I'm a little concerned.
I'm going to go with main.elm.
Main.elm is number two on the board.
All right.
Team double slash.
Only number two.
Taking control.
All right.
Jeroen, what is a module name you're likely to have in an Elm SPA application?
Not the tool, but the general concept of an Elm SPA.
I'm going to go with routes or routes.
That is number one on the board with 22 respondents.
You've got 38 points on the board here so far, and there are five more answers on the
I'm just depressed because route was my other answer, and now I have to do some critical
You're like, I no longer have to think about the structure of my Elm SPA applications because
they're auto generated for me.
I'm going to think about Richard Feldman's Elm SPA example and what did I see there?
There was main.
There was routes.
You had a page folder.
Was it files was the question?
Is it files or folders?
It is.
What is a module name you're likely to have in an Elm SPA application?
I'm going to go with page.
Page is number three.
So far zero strikes, and you have gone top down on this board.
One through three.
Don't let them steal.
Don't let them steal, Jeroen.
Yeah, they're going to steal.
So what was the last answer?
The last answer was page.
Page with non respondents.
I think I'm going to go with types.
I don't like it.
I hope people didn't do it, but I think it's what people would reply.
So let's go with types or type.
Well, unfortunately or fortunately, that is not on the board.
Oh, I'm happy.
I'm sad.
I don't know.
That's a pet peeve of mine and your runes.
Roller coaster of emotions on Elm radio today.
Well, that's how it goes with family feud style games.
All right, Ryan, we've got one strike, three guests and four to go.
What is a module name you're likely to have in an Elm SPA application?
Home page?
Home or pages.home is on the board at number six with three respondents.
I don't understand any of this.
I feel like I have a strange advantage.
It does feel like Ryan is uniquely suited to answer this question, having really like
surveyed the community and gotten a lot of feedback and thought a lot about SPAs.
That's unfair advantage.
Yaron, one strike, four guests, three more to go.
Three more to go?
Three more items on the board.
I'm going to go with a not found page or a 404 page.
But yeah, not found.
Not found was not on there, but that does seem likely.
That was my guess.
Two strikes, Ryan.
Oh, my goodness.
You can do it.
I feel the category is so hard.
Now we've like eliminated all the normal things.
Oh, module.
There are 50 points to steal if you guys strike out here.
Just saying, no pressure.
Delicious points.
I want them.
I am going to see you got routing the ports.
Are we listening to Murphy Randall?
Ports.elm did not make the cut.
That is three strikes.
And there are three possible questions that team left pizza could guess to steal the board.
Left pizza, you're free to discuss what you would like to guess.
Robin, I think maybe login.
What do you think?
So where I apparently don't make elm apps the way everyone else does.
So I because I would I would go with message.
But that login is as good as guess as any I think.
You want to just go with that?
Let's go.
Is login on the board?
It is not.
You're in.
You got points that didn't get stolen.
How does it feel?
So good.
So good.
You're in.
I can maybe win this game for once.
Let's not get ahead of ourselves here.
Well, you just got 50 points.
We'll see what the result is.
That was the scariest question.
I so I didn't like that because I am supposed to know the answer to that.
That's true.
Was shared on the board?
Was shared?
Ryan, you're on top of it.
Shared was number four on the board.
Shared was on the board.
What else was on there?
I brainwashed people, I think is what happened.
And now I get to use that to my advantage in family.
That is very possible.
So we also had on the board number five was style or theme or UI, something along those
And the last one on the board numbers, that was with three respondents.
And with two respondents, number seven, we had util or miscellaneous.
Oh, man.
There's my pet peeve.
That's the module where code goes to die.
Like just nobody's ever going to open that up.
The proverbial junk drawer.
Only a single util module?
Yeah, it sounds more like a module namespace than one big util.
We have like util list.
It's just basically like if it's not in the list extra or whatever, that's what we make
a util whatever.
That's our like extra folder.
Yeah, same for us.
Brian, is that a pet peeve for you still?
I'm forcing you to cast judgment on them.
If it's extensions for things like string.
I just think often I'll write code and be like, oh, it would be cool if this was reusable
and then I'll write it and I'll put it in a util folder.
And then in like three months, I'm like, oh, it would be cool if there was this reusable
piece of code and I'll like make another module and write the same code again.
It's just like util is not descriptive enough of a name for me to find it again later.
You can just disable copy paste in the util module.
Problem solved.
All right.
So question three, back at our face off with Yeroon and Brian.
This is an apt question for our teams here.
We need to clear the buzzer.
The buzzer is reset.
All right.
Team double slash team left pizza, get your buzzers ready.
What do you think is the most commonly used Elm operator?
Yeroon buzzed in first.
I'm going to say right pizza.
That is the number one slot.
Yeroon on a roll.
Making up for a rough game last year.
I knew that I had it.
I just didn't buzz fast enough.
Oh, my goodness.
Well, yeah, I mean, it is ironic that team left pizza did not get it or maybe it makes
Maybe it's your adversary, your nemesis.
So this is a board that only has four answers and you've guessed one of them.
So three more to go.
One three on the board.
What do you think is the most commonly used Elm operator?
You've got a grand total of 47 points at the moment.
That was 47 respondents thought right pizza was the most common operator.
You can't afford for this to be stolen from us.
It's such a critical moment of the game.
I'm going to go with plus plus.
Is plus plus on the board.
It is the number three slot with three respondents.
I'm going to go with plus plus did not quite make the board had one response.
Ryan, I'm going to take any type of beautiful ironic steal away from left pizza by saying
left pizza because if they stole it that my heart would literally be broken.
Yes, that is true.
We would have to answer it as a matter of pride.
We wouldn't have any choice in the matter.
Maybe that was to your disadvantage Ryan because it is not on the board.
You could have sabotaged team left pizza.
Your respondents just really like pretending to write Lisp I guess.
They'd had enough pizza.
They're like a one slice pizza type of person the respondents.
All right that is two strikes.
Jeroen, there are two more items on the board.
So we have right pizza and we have plus plus.
The number two and four slots have not been guessed.
I am going to go with the equals sign.
It is equals on the board.
It is number two with seven respondents.
It's not an operator.
I thought that was kind of a curveball.
I'm impressed that you got that.
You know just after a year of thinking I'm thinking outside of the box now.
All right.
Yeah he's a pro now.
All right Ryan.
Two strikes.
One more item on the board to be guessed.
57 points.
Up for grabs for the steal.
You got it Ryan.
I feel like if plus plus worked I feel like it's the colon colon operator.
Is colon colon on the board?
You did not make the board.
Team left pizza.
Here's your chance for the steal.
There is one item on the board.
I still think you should say left pizza.
Could it be not equals?
Could we review what's on there again?
Like equals right pizza plus plus or double plus.
Those are the three items.
Okay cool cool.
So we've got like all of the arithmetic operators.
We've got function composition.
We've got the URL library.
We've got the parsing library.
That's all of the operators right?
The mind games.
The mind games are real.
The worst part about this is that it works.
I was like what have I missed?
All right team left pizza.
Any ideas?
It would surprise me if there were the composing operators since left pizza is not on there.
And since plus is not a thing then it would surprise me if any of the other arithmetic
I do like your intuition about not equal.
That seems pretty likely to me.
But here's the thing though.
So where I work we don't use routing at all.
So for me routing would be very low on the list but it could be very high on the list.
So I don't know.
So to me in equals is the best bet.
But it wouldn't surprise me to learn that the slash operator from the router is a good
Here's the thing why I think not equals is it maybe because it's visually distinctive.
It's not like bang equals it's slash equals.
And when people are learning Elm they're like what's up with the slash equals dude.
So that might stick in people's head.
All right.
Yeah slash equals does not equal operator is it the final remaining item on the board?
Oh it is not.
Oh my gosh.
I thought you were saying it was that and I was celebrating over here.
The way you said is it Brian's like yes it is it.
Premature celebration is the root of all evil Brian.
All right.
Can you give us a category.
What's the last one in?
What bucket?
So I'll give you guys a chance for the street cred here.
So this one is majorly a curveball and it's the arrow.
Yirun's mind game, Yirun you are brilliant my friend.
It is the arrow.
How did you guess that?
I instantly knew it when I said that your mind games were called for.
I mean all the others are just not used that much.
So it had to be a curveball again.
It turns out having somebody who builds an SPA meta framework and somebody who builds
like an Elm syntax parsing and analysis tool is actually a pretty good team because I think
that was like right in Yirun's brain ready to go.
No kidding.
As opposed to two people who are like literally implementing other programming languages in
Yeah, it was kind of amazing.
Brian like listed out like not only like all the categories of possible things.
I was like, oh, this isn't good.
We're like honing in on like that was good.
I was surprised that not equals wasn't it.
When you said that Robin, I was like, here we go.
Yirun's mind game was that he's like, here's this thing you shouldn't be thinking about.
It's something other than that, but actually was what they should have been thinking about,
but it stopped them from thinking about it.
Brilliant tactics.
That's how far I thought.
You've learned Yirun.
You've been studying up, haven't you?
So much.
This whole year I thought he's going to be so lazy.
He's just not going to do another game other than Family Feud because Family Feud is just
2020's game, right?
So since we're still in 2020.
Family Feud again.
That's right.
Since we are three questions in and the team left pizzas and zero points, I just want to
make sure that the thing you said about squid game in the beginning and the consequences
will be okay.
Well, you will find out in due time.
I mean, look, dying on a tech podcast is definitely top 10 ways to die.
He died doing what he loved.
The only thing I regret is that it's the first time on the show.
That's fair.
Yeah, exactly.
We need to get you back, Robin.
So that might be your saving grace there.
Yeah, but we did say if he gets zero points, then we cannot invite him again.
Well, I mean, look, it's a nice round number at least.
It's the roundest number.
That's fair.
Is it a square number?
I mean, no curves.
Just type it, dude.
It is a square number.
For such a controversy.
Achieving a high score is so 2020.
Like 2021 achieving the low score.
That's where it's at.
Yeah, you know, Family Golf.
That's true.
All right.
So Family Feud Golf.
Now keep in mind, we are going to have a double and triple round for our final two rounds
as is tradition.
So keep that in mind.
The game is not over yet.
Did we do that last year?
We did do that last year.
All right.
I'd like to hear your, I mean, as his teammate, I don't want to lose, but I also kind of like
the idea of it being stolen from him in a completely different way.
It's like winning the first three rounds and then just double, triple.
I don't feel like we're a team now.
I kind of want to throw, but I won't.
All right.
What have we got for our face ups?
We did Brian and Jeroen facing off last time, right?
So it's Ryan and Robin facing off.
Get your buzzers ready.
I will reset them.
All right.
Our next question here.
What are you most likely to use to style your Elm application?
Ryan buzzed in first.
That buzzer says Robin got negative 18 milliseconds.
Oh, pretty crazy.
Wait, a plus or minus 18 milliseconds, but with the latency, it says Ryan got it, right?
All right.
I'm going to have to plug our boy, Matt Griffith, my fellow coworker at Blessfully and say,
Elm UI.
Well, your alliance there has served you well, Ryan, because you took the number one slot
for team Double Slash on a roll here.
Jeroen, your luck has really turned around.
You've got 35 respondents saying Elm UI.
There are four more items on the board.
Jeroen, what are you most likely to use to style your Elm application?
Plain CSS.
That is exactly the number two response.
Your training has paid off.
I have to plug my boy, Richard Feldman here and say Elm CSS.
That is the number four slot with seven respondents.
Was Tailwind a thing already?
Yeah, let's go with Tailwind.
Tailwind is number three with seven respondents.
You're leaving table scraps for the steel here.
No strikes.
No, because Ryan.
One more item on the board.
Ryan, the number five slot, you've guessed Elm UI, plain CSS, Tailwind, Elm CSS.
One more item left.
I'm thinking a preprocessor like Sass on the board.
S.C.S.S. is the number five slot.
You just cleared off this board.
Not even giving Team Left Pizza a chance for the steel.
I'm starting to feel bad now.
Don't say that.
That makes me feel bad.
Left Pizza, what do you have to say about this?
Good job, folks.
Nice guy.
Now I feel worse.
Oh, making them feel bad for talking smack and clearing off the table there.
I like to detach myself from the smack talk.
You simply left to see it.
All right.
That was a good showing for Team Double Slash.
So many good questions here.
I'm kind of surprised that Elm UI wasn't the first one.
The amount of adoration people have when you don't have to think about margins, it just
outweighs anything else.
That is true.
Just margins.
That's the reason.
Just margins.
I was definitely expecting Elm CSS to be number two.
So to hear plain CSS, I was like, all right, we got some like vanilla, indie.
I appreciate this.
The no CSS and JS crowd.
All right.
So ready for our next face off.
Brian and Jeroen.
Get your buzzers ready.
These are really nice buzzers.
Where did you get them?
Like I like the gold filigree.
Yeah, they're beautiful.
Mario handcrafted them and integrated them with Lamdera.
All right.
What's one thing you use regularly in Elm, but it still kind of feels like magic?
I'm going to say opaque types.
Opaque types did not make the board.
Oh my gosh.
Where's the opaque type love?
I know.
Maybe people are just, it's old hat for them.
Jeroen and I just like beat that horse to death.
And they're like, yeah, they're boring now.
Now everyone's just using type aliases.
Jeroen, would you like to take a guess here?
One thing you use regularly in Elm, but it still kind of feels like magic.
I would say record constructors.
Ooh, those do feel a little bit of magic, but that did not make the board either.
Brian, back to you.
I guess I've got to just answer personally because I'm terrible at predicting what people
are saying.
And when I found out about like union types or I guess now they're called custom types
in Elm, I was like, this is amazing.
I can model everything with it.
My life is going to get so much better.
And you know what?
I was right.
They're great.
So that just custom types.
Custom types.
Custom types did not make the board.
How many guesses do we have?
Let's see how long it takes.
If we keep striking out here, we might have to just call this one a mulligan, I guess.
How many answers are there on the board?
This one has three answers.
Oh, that's why I was going for number four and five.
Get number one.
I want to say custom type constructors now.
So let's go with that one.
That is not on the board.
All right.
Brian, error messages.
Error messages is not on there.
We might have to call this one.
I was like waiting for someone to say like, yeah, like compiler errors.
And I was like, this is going to be so easy.
And then you said it.
I'm like, oh, no.
I'm going to guess one last time.
Jason decoders.
Decoders is on the board.
There you go.
All right.
All right.
All right.
Team Double Slash, you're on the board.
That is the number three item.
Wait, that was number three?
That was number three.
There's still the number one and two items.
So not error messages.
I'm going to go with like the exhaustive like pattern matching.
Is that on there?
That did not make the board.
You hate to see it.
All right.
Get us two of the three.
Oh, parsing.
Parsing did not make the board.
All right.
I feel like I'm taking too hard about this.
This is something that people just say.
It's like, what's magic?
So I guess there are so many ways you could go with this.
That's one thing you use regularly in Elm, but it still kind of feels like magic.
I'm just going to say the compiler.
I don't know.
I feel like that's...
That is number one.
The compiler.
All right.
Brian was kind of close, but error messages seemed like its own thing.
So it was on the fence.
Yeah, it was a tricky one.
It was a close call.
All right.
That is the number one item on the board.
You're in.
Two strikes.
One more item on the board.
I'm going to quote my boy, Richard Feldman.
That is a good guess.
Not on the board.
Steal time.
Steal time.
So I was afraid this moment would come.
Because I have a feeling this is like a telltale game moment.
We're going to answer something and then the internet will remember this wrong answer.
Well, I think maybe one of the things that draws people down is the whole if it compiles
it works kind of thing.
Could it be types?
And I would think that would be separate from the compiler, perhaps.
Yeah, but we've tried a bunch of different type features and it's like, nah, people don't
care about those.
But the way that the application just works when you compile it and it works, that might
be it.
The compiler has been mentioned.
Could it just be like, so like it compiled works?
Could that just be it?
Or could it be like...
Yeah, I think so.
Sounds like that's the guess.
All right.
Is it on the board?
It did not make it on the board.
The remaining item on the board was elm format with five respondents.
No, that makes sense.
It's a pretty good thing.
All right.
So that's 17 points for team Double Slash.
I would have guessed something like lazy or till call recursion or maybe just plain JavaScript.
So there was actually quite a variety of responses in this, which is why it was a small board.
So we had the virtual DOM, tasks, ports, pipelines, nothing, not a lot of magic in elm, elm UI,
compiler errors, WebGL, unification of extensible records, type variables, the runtime, subscriptions,
relying on types for safety, which would be that sort of if it compiles it works idea.
Actually, that's just a selection of them.
There were quite a few answers here.
Centrx, shout out to elm UI.
They didn't understand that or they didn't understand how it worked.
You use it regularly in elm, but it still kind of feels like magic.
All right.
If I recall correctly, one of the reasons that Evan started elm was because he wanted
to vertically send her something on a page.
So we've come all the way to this.
Does Evan get it now is the question.
That is a good question.
I guess any sufficiently advanced technology is indistinguishable from magic.
All right.
Next question here.
Let's get our matchup.
We've got Ryan and Robin.
Get your buzzers ready.
I'll reset them here.
All right.
What are you most likely to use a port for in an elm application?
We've got Ryan with the first guess.
What are you going to guess?
I hit it so fast.
I shouldn't hit it so fast.
Like an existing JavaScript library.
It's just whatever people wrote for that question.
The question was, what are you most likely to use a port for in an elm application?
I would guess, yeah, like wrapping a JS library.
Wrapping a JS library.
All right.
Interop with JS library is on the board at number five with three respondents.
Robin, you have a chance to get something higher than number five.
Local storage.
Local storage is number one with 19 respondents giving you control over the board.
Team left pizza.
Here we go.
I got a good feeling.
We might score points.
You might get on the board with this round.
Let's go.
Is routing on the board?
Routing did not make it on the board.
Robin, what are you most likely to use a port for in an elm application?
Web sockets.
Web sockets is absolutely on there.
Number two with nine respondents.
Brian, one strike.
Oh, man.
I'm just going to be the strike person.
Robin's going to get the answers.
We've got six items to go.
This is a tough board.
If this is of any comfort at all to you, Brian, I'm all out of answers now.
Thank you for bringing it up.
That's not comforting at all.
What else do you use ports for?
I bet people would have written the web platform generally.
People wrote calling out to the native browsers API, which I would say is synonymous with
the web platform.
That is number four with four respondents.
How many items are left?
We've got five more items.
Big board.
Nine total.
Number five was like three respondents.
We've got some with two respondents here.
Gotta catch them all.
We got local storage.
We got web sockets.
JS interop.
And interop with JS library.
That's tricky.
I'm going to go with...
I don't necessarily think it's on the board, but it's the only thing that I have.
That's because it's the number one use where I work.
That is simply doing debug logging in production.
When you compile with optimized code.
I don't think it's on there.
That's like...
It did not quite make the board.
That one only had one respondent.
What are you most likely to use a port for in an Elm application?
On the board, we've got local storage at number one.
Web sockets at number two.
We've got the number four item calling out to native browser APIs.
And you've got the number five item interop with JS libraries.
Like a web worker?
Is that what they're called?
That is what they're called.
And that did not quite make the board.
So that is three strikes.
We've got 35 points up for grabs team double slash.
Strike champion 2k21.
Good work, Brian.
We're so close to getting points and losing this golf game.
Perfect score.
What do you think, Nero?
I'm thinking we're going to give an answer.
If it's right, then great.
If it's wrong, then we're just being nice to them.
I feel maybe IndexedDB for those...
We're getting two respond answers.
Maybe we got people that know how that works.
That's an idea.
IndexedDB, what I had in mind was getting the time.
Oh, okay.
Instead of...
But no, there's more of like four flags, I guess.
When you pass in
And then time.every does the rest.
Maybe people do use it for the time though.
Who knows?
Or random values if they don't know how to use random.
But yeah, IndexedDB might be a good thing.
Or something like that.
Oh, date formatting.
Is that...
Oh, that's a web component thing.
I'm going to get Dillon now.
Dillon showed me a trick with that.
I'm good with IndexedDB.
Let's go with IndexedDB.
IndexedDB, did it make the board?
It did not.
Oh, right.
Team Left Pizza is on the board with 35 points.
Oh my gosh.
We are so done.
That's 35 points of my life.
I don't know if it would be appropriate to give a golf clap at this point because the
golf game just took a turn for the worse.
Indexed went 35 over par, Robin.
How do you feel?
I mean, it's better than when I actually played golf.
So it's not too bad.
I can't imagine trying to play golf.
I have no experience.
All right.
Just hit the club with the ball.
I think that's the hardest part for me.
Honestly, just trying to hit the ball right at my feet, impossible task.
If you hit the club with the ball, then it might have unexpected results though.
Yeah, that's true.
To me, it's all the anger management I need afterwards.
It's tough.
It's tough not hitting the ball 40 times in a row.
My days of hitting the club are long gone.
We're going to quote that out of context, Ryan.
I'm like the opening sound clip.
It's just like some sad guy.
My days of hitting the club are long gone.
Hey, welcome everyone.
Well, you know, the first thing Dillon says is, hello, Eruin.
That's true.
We've wanted, actually in particular with our last episode with Ryan, we wanted to take
one of his meme worthy comments and put it up front.
I don't know, we can't part with the, hello, Eruin, hello, Dillon.
Come on.
We've done it since day one.
It's a classic.
It wasn't even planned on day one.
It was just like, well, let's do the same thing again.
We should have gone with the theme music.
Give me, give me the basketball.
Give me, give me, give me the ball because I want to dunk it.
This is like a different podcast.
Yeah, maybe.
All right.
You all ready for the double and triple round starting with a double points round.
And remember, these points were playing for keeps here.
You all know the prize.
You all know the consequences of losing.
I'm full of fear.
You all know what I'm talking about.
I'm just going to go lock the door.
I'll be right back.
All right.
Who's at the buzzer?
Yeah, who's our matchup this time?
I think it's Brian and Jeroen.
All right.
Brian and Jeroen.
All right.
So Brian and Jeroen, get your buzzers ready.
Double points round.
Team left pizza.
This is going to be an important round for you.
What's the first thing you do when you start a new Elm project?
All right.
And Jeroen is first to the buzz.
Are you just prepping yourself for the steal here, Jeroen?
What's a...
I don't know.
Now I'm playing mind games with you.
I mean, I don't even know if it's a good strategy to buzz in at this game, which is to treat
You're like, I've been doing so well.
Don't take this from me.
All right.
Jeroen, what's your guess?
I'm going to go with Elminit.
Elminit, is it on the board?
It is the number one slot with 13 respondents.
Team Double Slash coming out strong here.
There are seven more items on this board.
All right.
Ryan, what's the first thing you do when you start a new Elm project?
I type Elm S.P.A.
New because that is an important framework that everyone should use.
Elm S.P.A.
New, is it on the board?
It did not quite make it.
My heart, my fragile heart.
It actually is just underneath the threshold to make it with two respondents.
They said NPX Elm Spot in it.
So that was good on them.
Jeroen, we've got one strike.
First thing you do when you start a new Elm project.
Wait a second.
If we score no points, they can steal no points and then we win.
Oh my gosh.
Is there anything in the game to stop that play?
I mean, we just find the degenerate way to play Family Feud.
You look at the history of the world and you eventually find World War One and like, you
know, there's prior art here.
It's terrible.
It didn't work out well.
Should we just say fart like three times and then get over it?
You only need to say it twice.
I'll say it.
I'll say it more times.
Let's just give real answers and just say people, let's say we threw it away.
I'm going to say git init, which is my real truthful answer.
Git init did not make the board.
We had some very thoughtful answers.
All right, Ryan, we've got two strikes.
Seven more items on the board.
I'm going to accept that maybe people aren't using Elm SPA new.
Maybe they reach for create Elm app or Elm create app.
It's one of those.
It's whatever the React did.
They just put React Elm where React went and then people are like, ah, so I'm going to
go with that.
Create Elm app?
I would say that people do that, but that is actually not on the board.
So that is three strikes with 13 points to steal, Yeroon.
Maybe you shouldn't have said that thought out loud because now people are going to be
A little sus.
Team left pizza.
It's yours for the steal.
13 points up for grabs.
Times two.
Times two.
So exactly.
26 points up for grabs.
Could it be like installing a dependency of some sort?
Could it be like installing Elm UI or something?
Or Elm CSS for me is usually just like, I know I'm going to use that.
I'll just get it out of the way.
There's also like writing a hello world or filling out a like program dot browser, you
Yeah, that's true.
Browser dot application, excuse me.
Because Elm init doesn't actually create Elm files.
It just sets up the Elm JSON file, doesn't it?
But I think we're also thinking about this logically and it's what people put in a text
box on the internet.
I mean, we forget that people aren't inherently logical.
I think I actually love the randomness of some of these responses to be honest.
Grab a beer.
It's just like, all right.
Grab a beer.
This is the Elm community.
What a high opinion you have of it, Ryan.
Hey, beer is delicious.
My days of clubbing are long over.
I do think that putting a dependency, just one of them, something, anything is probably
it, right?
Or like a hello world in some way.
But I can't decide which of those things I think is more likely.
I think because how many items are on the board, Dillon?
Seven items remain on the board.
Seven items?
I think like hello world's got to be amongst the seven.
Yeah, I feel pretty comfortable with that too.
Let's just go with that, eh?
Hello world.
All right.
Let's see.
We have a new keyword.
We have getting something on the screen with four respondents.
So well done.
You stole with four extra points.
That gives you a total of 34 points.
All right.
And I must say, I'm very proud of our respondents here because this response was getting something
on the screen or trying to get a vertical slice of the model view update cycle.
So well done.
Thanks, caring about vertical slices.
Nobody grabbed beer?
So we actually had something along those lines.
I think I would have given you grabbing a beer for this.
So actually our number three with six respondents was there were different permutations of this,
but I grouped them as one thing.
So people said smile, do celebratory dance, weep tears of joy, feel wholesome, or think
about how to top the last one.
Oh my gosh.
Think about how to top the last one.
What an inspirational answer.
It's like every day I look in the mirror, I say you're beautiful and we're going to
be more beautiful today.
I love the optimism there.
Very inspiring.
We also had the number two slot with seven respondents was define data model or types.
Yeah, that makes sense.
And we did also have install dependencies at number five with three respondents.
We had Elm test in it with three respondents.
We had copy an existing project and delete stuff with three respondents.
And we had compile with three respondents.
No one wrote write Elm code.
No one writes Elm code.
No one writes Elm code.
That's not what we do here, Jeroen.
Just get ready.
Just let the tools do it for you.
We did have honorable mentions with setting up Git, setting up Auth, setting up hot reloading,
setting up Elm program test, setting up LimeDirra.
No one did Elm review in it.
No, that was not in there.
It's a rough night for you, Jeroen.
It makes sense.
It makes sense.
Maybe our responses are outdated.
All right, everybody.
Are we ready for our triple the points round?
So, Team Left Pizza, you're really going to need these points, I'm sorry to say.
We've got Team Double Slash with 287 points.
Team Left Pizza with 52.
A mere slice of the points.
Came here and doubled the slash and tripled the cash.
Let's take it.
All right.
So here we go.
So where's our face off?
It's going to be me and Robin, I think.
All right.
And I'm going to lose by 20 milliseconds, like I always do.
The very first round you went quick and ever since I've been scared.
I've been scared of you.
So I've been slapping it without thinking.
And I'm like, oh, that's not good.
Well, all you need to do is...
I'll take it easy if you take it easy.
And you can use that as an opportunity to exploit it.
So I'm not going to win the game, but I'm sure as hell going to win this buzzer.
All right.
Well get your buzzers ready then, because here we go.
The final question for triple the points.
What is your favorite Elm package?
Robin, nailed it.
True to his word.
I'm done now.
I can check out.
I won the final buzzer.
Favorite Elm package.
Elm UI.
That is indeed number one.
Ding, ding, ding, ding.
Off to a good start.
Taking control over the board for team left pizza.
How many points was that one already?
That was 16 respondents.
So Brian, there are five more items on the board.
What is your favorite Elm package?
Surely someone said Elm slash parser.
In fact, five people said Elm slash parser.
Well done.
Elm CSS.
Elm CSS did not make the board.
That's one strike.
Elm slash HTML.
Elm HTML didn't make the board either.
That is two strikes.
Four more items on the board.
I'm just going to go with my personal favorite.
And if the game hosts will be generous afterwards, that's just a bonus for me, but I'm going
to say Elm GraphQL.
Well, you may be trying to curry favor, but your strategy paid off as number two with
six respondents, left pizza.
All right.
That strategy did not work at all last year.
I was so sure like, oh, that's not going to work.
That was for favorite Elm tools.
So I guess people consider it a package more than a tool.
I guess.
Can you recap the board for me?
So there are three items down, three to go.
You've gotten the top three.
So what is your favorite Elm package?
We've got Elm UI, Dillon Kern's Elm GraphQL, Elm parser.
So this is very hard because it wouldn't surprise.
So like I would think logically that, no, wait, I can help you.
Can I?
That's true.
I wasn't going to say anything.
See they're trying to cheat now.
Let's see.
Oh man.
I feel like I'm really drawing a blank on this one now.
I ran through all the things and I'm just like, yeah, that's always got to be in the
Surely, because I'm drawing a blank, I have to be a little bit cleverer here and maybe
Elm slash core.
Well, that's a clever response, but we've got clever respondents.
We had five people responding with Elm core.
You love to see it.
That is like, it's such a good package.
It's got like you go back to like doing things native in JavaScript.
It's really hard.
You miss all those nice data structure helpers.
Well thought out core libraries.
This was going to be my stealing response.
Oh, okay.
Now we're sweating.
What I was going to say just before I realized that I was cheating was that it wouldn't surprise
me if people didn't think about the things which they have in every app.
That was good.
Good thing you didn't say that.
How much is left on the board?
Two more items remain.
I think this package is an acquired taste, but coming straight from JavaScript and how
simple certain things are, but I know at least it's one of my favorite packages once I've
used it enough to realize how much it helped me out.
That would be Elm JSON.
I completely agree.
Unfortunately, it seems our respondents didn't think in the same way there.
They were thinking down a different road.
It did not make the board.
That is two strikes.
It is one of the hardest part of Elm.
I'm not surprised.
We had one respondent with that, but it wasn't enough to make the board.
It is really one of the best parts of Elm for sure.
Is it steal the clock?
We got two more on the board and one more strike opportunity.
Two strikes.
Perhaps Elm test.
Elm test did not make the cut.
That is three strikes.
Team double slash.
We've got 32 times three points up for the steal plus the stealing question points.
Two more items on the board.
Would you like to take a guess?
All right, your own.
I got two ideas and I need your help.
Elm browsers is a thing, but also remote data.
It is a pretty sick package.
I don't know relative mainstreamness.
Probably more people use a browser.
I don't think it is going to be Elm browser.
I was thinking of list extra.
List extra is very good too.
Because I know that people love the extra packages for reasons that I may or may not
Hey, when I'm looking for a transpose, it is real nice.
Help me in the advent of code.
Good to see it.
What do you think?
So you said Elm browser and?
Elm browser and then the remote data package.
I'd go for list extra, but if you want to go remote data, let's go remote data.
All right, let's go remote data.
All right.
Remote data.
Is it on the board?
Is it enough to steal the 96 hard earned points from left pizza?
It is indeed on the board.
Remote data with three respondents.
Well done, folks.
Thank you three respondents.
Jeroen, how does it feel making a turnaround from last year?
Pretty good.
Pretty good.
I have to thank my parents for coaching me through this entire year on working on this
We played family feud every day.
We all do around the holidays.
What were the other answers that we missed?
All right.
So the one other answer we had on the board was Justin Mim's date with four respondents.
Date is excellent.
It's a timeless library.
That was a really good joke.
You're not going to get a date with that.
It's about time I made a nice pun.
So there it is.
There it is.
I've got to do this.
I've got to do this bonus round question.
We can just do this free form.
Which country do you think has the most active Elm community?
The US had 29 respondents.
Norway had 16 respondents.
So yes, I think it's fair to say that Norway proportionately has the most Elm developers
with a population of 5 million.
So shout outs to Norway.
Wait, that's all?
Oh, yeah.
No, everyone here writes Elm from toddler and up.
They play chess, they write Elm.
All 5 million.
We also had, so which country do you think has the most active Elm community?
We had in Europe with 4 respondents.
So that technically Norway is part of Europe.
So that's even more points for Norway.
I thought Europe was a country.
So right.
And then we also had the number 4 slot was Sweden with 2.
The number 5 slot was somewhere Scandinavian slash one of those Norwegian countries.
And then number 6 was Japan.
So yeah, kudos to Norway.
Kudos to Scandinavia for rocking the Elm.
I got to call the king and let him know about that.
The king just ran Elm in it and started watching the chess champions.
Do we have to report him about drinking beer or?
Oh, they've got great beer in Norway around this time of year.
Holiday beers.
Yes, please.
It's so good, but it's also so horrible.
But it's tradition.
All right.
So thanks everyone for playing.
And before we wrap up, let's just do a quick New Year's roundtable and take a moment to
reflect on this crazy, hectic year and maybe try to find a few highlights.
And if there's anything that's on your mind for 2022, any hopes or goals or resolutions
in tech for 2022 for yourself, any tech highlights that you have for 2021?
Anybody want to start?
I can start.
So I don't know.
Not many people probably know this.
Dillon actually helped me land my gig at Blissfully where I work and something that went really
well I guess this past year, I've gotten to code Elm full time there and it's been a blast.
We're using Elm GraphQL, we're using Elm Review, we're using it all over there.
So that was a good part of the past year.
That's amazing.
I worked with Matt and everything.
But in terms of resolutions, something that I personally want to do and something that
for those of you who've seen the Advent of Code videos that I posted with those crazy
thumbnails, I want to start bringing Elm out into more public spaces.
So I think there's a lot of history of very good Elm conferences where Elm developers
are sharing with Elm developers.
But I think for me personally, I want to try to go out in the JS space and see what people
are excited about there and see if we can have a similar thing for them in Elm.
So yeah, I encourage people to think about that too.
I guess it's a fun thing.
There's a lot of great JavaScript tools out there.
You should steal their ideas and make some nice stuff.
Love that.
I love that.
I would love to see more good resources for people to get excited about Elm in the JS
Love it.
All right.
Anybody else want to hop in here?
I guess I can hop in.
To me personally, the biggest highlight of the year was the first six months of the year
when I had paid parental leave.
I spent time with my son.
That was pretty great in an otherwise dark time.
And then a second highlight, which is more tech focused, was coming back to work, installing
Elm review and having interns delete...
Not interns, but just new people who with little Elm experience just delete a bunch
of code I've written.
That was very cathartic.
And then I think a resolution for next year is probably not very Elm centric, but I think
I have wanted to for a very long time to really get into and understand Datalog and try to
find some cool use case for that.
So I'm looking forward to do some research, reading papers and in general trying to figure
out how we can use Datalog to something cool.
Finding a real world application where you can leverage that.
You and Brian should have been team Datalog because there's Datalog stuff that you were
working on, right Brian?
Yeah, I can just go next because one of your highlight in tech anyway was that I wrote
a Datalog.
So that was fun.
I called it bad Datalog because it's not good, but it was really fun.
It's a great language.
And basically, I don't know, if anybody's interested in Datalogs, I would be happy to
But my main advice is to not read the papers because they all were in this sort of space
where they were like, yeah, recursion will solve our problems.
And the way to implement a Datalog it turns out is actually just to make a relational
algebra and pretend that the Datalog is casting to like a query.
That works a lot better.
Anyway, I guess as far as resolutions, I would really love to do like recurse center again.
I did that for a week at the beginning of 2020 and it was just brilliant.
It was so fun.
Just being around other people who are just really like curious about things.
That was really wonderful.
And I would also, this is sort of less techie, but I'm really interested in recycling.
Like me and a friend here are collecting milk bottle caps right now because it turns out
number two plastic you can melt at home with no fumes.
You can work it basically how you do wood.
So we're like, okay, what can we do with this?
Can we turn some pens out of it?
Can we make like phone cases or whatever?
Like what can we do?
So I'm really looking forward to exploring that more.
Yaron, you got any highlights or resolutions?
Highlights of the year.
Well, I did a lot of things with Elm Review.
A lot of things were cool things were released this year.
So Elm Review unused got a lot of new improvements.
So you deleted a lot more.
Used a lot?
No, I mean.
Unreview unused was not unused.
Let's just say.
Yes, it was not unused.
I got Elm Review simplified.
We got the new suppression system.
We got missing features like global and configuration errors, tilt call optimization, and then a
lot of other cool stuff that I'm really happy about that were released.
I'm currently looking to optimization a lot more.
So trying to make Elm Review faster and therefore looking into Elm Optimized Level 2, which
is very exciting.
So Robin, you're definitely going to hear from me more.
Looking forward to it.
And yeah, continue working with Elm Review.
I don't have any grand goals with it.
It's just whatever I'm interested in at the moment will be what I'll be working on then.
And I'm hoping for a nice year of Elm Radio episodes.
That's all we're asking for this Christmas.
With a lot of cool guests.
But not the ones that got zero points.
And there were none.
There were none.
That's right.
So last year in our holiday episode, Jeroen, you and Matt and a lot of people on the show
were talking about wanting to not just build tools to build things, but actually build
things and get their hands dirty and build things.
I would say that's been a highlight of 2021 for me.
I built a lot of things with Elm Pages, which was great.
Not just building Elm Pages itself.
I got Elm Pages 2.0 out there, which was just sort of a goal of mine for a long time to
revamp it and think those ideas up from the ground up.
And so that was really satisfying.
And looking forward to 2022, I want to continue getting these ideas in my digital garden.
Using Elm Pages has been really fun.
I think that I really like what Ryan's thinking about with trying to make resources to make
Elm accessible to people outside of the Elm community.
And I think big picture, I'm just really thinking about how do we make Elm the best environment
it can possibly be?
And of course, there are many dimensions to that question, technical and non technical.
But on a technical level, well, having technical resources.
So I hope that I can continue to develop my ideas and share them, learn in public and
put these ideas into writing.
I'm working on some video content and I'm going to be doing a lot of paid video courses
in 2022.
I would love to see some excellent IDE editor improvements in the Elm community too.
So those are some of the things on my mind that I would feel very happy to look back
on at the end of the year, a year from now.
All right.
Well, I think that's it.
So thank you all so much for coming on the show.
This was a lot of fun.
A blast.
Double slash.
Double slash and left slash.
Thank you all so much.
And really had a lot of fun and looking forward to hopefully seeing your lovely faces again
in 2022 for some more podcast recordings.
Sounds good.
All right.
And Jeroen, until next time.
Until next time.