Code you love - share yours!

Thought this would be a nice way to start the year - have you seen or written an Elixir function or piece of code that you are particularly fond of? Perhaps you admired its simplicity (or complexity!) or maybe your surprised yourself or surpassed your own expectations of what is possible?

Whatever the reason, please share! :blush:

8 Likes

Thanks for this question Aston. I hope my response adds value to this forum :), I didn’t post this anywhere yet:

I finished learning the basic Elixir syntax and put up this simple example of a GenServer with Supervisor project.

I was able to run a million tasks in 4.2 seconds seconds on my PC which is very good for a task queue like this, it means dispatching approximately 238,095 tasks per second which is very good.

I do realize that the latest HexDocs “antipatterns” document specifically calls out creating unnecessary GenServers:

An example of this anti-pattern, as shown below, is a module that implements arithmetic operations (like add and subtract ) by means of a GenServer process

And then pretty much shows something very similar to what I made, so I realize that it is not really an example of where I would use a GenServer in production.

But I feel proud of completing this task, since GenServers and supervisors are one of the more advanced concepts in Elixir, and this is, after all, a complete application that uses them.

3 Likes

Very good! If you are looking for next steps:

  • Look at replacing IO.puts/1 with Logger.debug/2
  • Write some tests that interact with the GenServer
  • See if you can start the genserver with a DynamicSupervisor
2 Likes