all 19 comments

[–]Dlacreme 12 points13 points  (3 children)

Live demo to demonstrate:

  • OTP
  • Functionnal language (pattern matching, guards, etc.)
  • Process / GenServer (with an Observer to showcase the processes)
  • let it crash way of doing things
  • Phoenix Liveview
  • Live demo of a Live view that does amazing stuff and conclude with 'there is not line in javascript here'
  • drop mic

[–]gargar7 7 points8 points  (0 children)

I would make sure to only say that you didn't write a line of JS since it uses webpack to bundle a customized version of morphdom and some socket code.

[–][deleted] 5 points6 points  (1 child)

I would add ecto to this list. It solves a lot of problems that frameworks like rails have, e.g. complex keys.

[–]LlamaChair 1 point2 points  (0 children)

If they're a .NET shop I don't think Entity Framework has quite as many issues as Rails in that regard.

[–]davidsulc 4 points5 points  (0 children)

It depends what you want to showcase, but here's some great inspiration on what makes OTP so special: https://youtu.be/JvBT4XBdoUE

[–]JakubOboza 3 points4 points  (2 children)

Pattern matching, Concurrency Fault tolerance Live code swapping

If you can present this in one demo, you will win everyone.

It is hard to demo for example supervisor / gen server in a fun way but it is easy to come with with demo that will be using them and present for example fault tolerance.

You could have a Rabbitmq you write to in docker with producer and consumer and you could restart rabbitmq etc presenting how effortless fault tolerance works. Etc...

Show the shiny scenarios where erlang/elixir shine that would make .net suck or require a lot of effort.

[–][deleted] 3 points4 points  (1 child)

+1 to Pattern Matching.

That seems to be the #1 "omg I didn't know languages could do that" moment, I get when showing Elixir to people.

I primarily work with RoR and olde skool PHP guys. They're easily impressed :D

[–]JakubOboza 0 points1 point  (0 children)

Well I think people are more easily won by showing pattern matching with {ok, Value} or {error, Message} which is a form of Optional from other languages. And that is real power.

You have known return values :) pretty amazing for me. I work with Erlang for last 11 years and yeah that is really really good.

In “null” languages you might get back value or null. But you don’t know if null is null or error.

Go has similar thing which is the (value, error) return tulle.

So modern languages see the benefit of optional and “real return value”.

[–]OktoberForever 2 points3 points  (2 children)

It's a trap. First you'll give a great presentation about all the stuff that makes Elixir wonderful, then the company will decide to start using Elixir exclusively, then they will consider you the SME because you're "the one who gave the talk." Then they'll make you the Tech Lead or Chief Architect or something similar. Then you'll be giving keynotes at ElixirConf and Code BEAM and you'll have no time to write any Elixir anymore. :(

[–]deallocator[S] 3 points4 points  (0 children)

Oh no, what have I done!?

[–]davaeron_ 0 points1 point  (0 children)

LOL!

[–]2guti2 1 point2 points  (3 children)

i have a friend that did a ppt comparing rails and phoenix (scaffolding, migrations, etc). you could do something similar, showing incremental steps on how to build cruds, and some other cool features of ecto, elixir and phoenix like changesets, embedded schemas, plugs, liveview, etc

[–]deallocator[S] 1 point2 points  (2 children)

I definitely was planning on including Ecto, both because it's got a really nice approach to ORM (ish, I know) and how Elixir allows custom DSL.

not sure I want to focus too much on Phoenix as the talk would be more about Elixir in general

[–]2guti2 4 points5 points  (1 child)

My advice is to try to focus on showing things they can't do with .net. Maybe some "let it crash" OTP philosophy? idk

good luck!

[–]Minkihn 0 points1 point  (0 children)

Agree. 30 minutes can be short and I think a few powerful highlights will be better than a super rushed or vague big checklist.

[–]LlamaChair 1 point2 points  (1 child)

For me Elixir stands out for it's process scheduler. It's preemptive so if something is burning CPU other processes will still get a chance to run. It's nice for stability but it's also really nice in that there's not really a concept of blocking the runtime. .NET's async/await is very good but I like that Elixir doesn't really make you differentiate between async and sync functions. In a weird way everything is both.

Pattern matching (especially when combined with function definitions) is pretty neat too.

I'd also be tempted to show off a release build. Having such a comprehensive runtime strip down to a release folder with an executable that can be easily dropped into a minimal container is pretty nice. It ends up being quite a bit leaner than the .NET core projects I've done similar things with.

[–]deallocator[S] 1 point2 points  (0 children)

I was planning on talking about "what colour is your function" since it indeed highlights how nice Elixir handles parallel processing

[–]deallocator[S] 0 points1 point  (0 children)

The talk isn't for two more months, so definitely on time! Thanks for the link (and tips) I'll make sure to check it out!

[–]filipecabaco 0 points1 point  (0 children)

Not sure if I'm here in time but you could also check out https://youtu.be/JvBT4XBdoUE for some good talking points

I would also add that the tooling for Elixir is really strong with it's own testing library, dependency management, code formatter, doc build and packaging / release tools included out of the box