Sim

Sim

I made a thing for school, feedback appreciated!

Hello Elixir Forum!
First, a short introduction. I’m currently going to school, learning software development, and this week we have been able to do whatever we wanted, as long as it was approved by the teacher.
So I took the opportunity to immerse myself in functional programming and specifically Erlang and Elixir.
I have been interested in Elixir for a while and I have played around with IEx a bit, but never had time to really do anything with it, until this week.

There will be a small presentation tomorrow, where I will be showing what I have learned during the week.
For this I have made a small application, that’s supposed to show the easy concurrency that comes with Elixir and Erlang/OTP.

Github Link
The actual application is in the park_mon folder. park_mon_client is a Phoenix web app I quickly hacked together, in order to have something visually showing what is happening.

It’s basically a very simple parking monitoring system, where each monitor GenServer is supposed to represent a parking meter, covering between 5 and 15 parking spots.
The parking meters are grouped in different areas, represented by Supervisors.
I have also made a ‘simulator’ GenServer, so I can show the application in action.

I’m not sure the teacher knows anything of Elixir and Erlang/OTP, so I will probably not be receiving any feedback on the code of the application.
That’s why I’m turning to the forum.

I could use some feedback/criticism, specifically if there are any parts that show a complete lack of understanding about OTP.
Additionally, I’m unsure if the ETS lookup I’m doing in the init function of the monitors, is a prudent way to recover state, after a shutdown?
I had a hard time finding any resources about recovering state, that fit this simple example.

Thanks!

Most Liked

montanonic

montanonic

Hi! This is a question coming from only skimming the source. Could you elaborate on what some of the things the parking monitor system does, and how you thought through designing it at a high-level? Like, what do the parking meters do, what are you monitoring, what are you simulating?

Thanks for sharing! Happy that you got a chance to use Elixir more :slight_smile:

jgood

jgood

This is something I also was curious about when I first started to look into GenServers.

If I’m not mistaken, ETS is another process in your application which is supervised, if it crashes, then it will lose state as well unless your rehydrate it from another datastore which is more durable than ETS.

There’s a github issue that is kind of asking the same thing that you are here, and it looks like the person asking the question opted for using redis.

Also, if you want to learn more about OTP Programming Erlang by Joe Armstrong is phenomenal.

One of the things I was also curious about when I was writing the small program that used a GenServer, was what to do if my entire Elixir application crashed.

Turns out there’s a flag which can be passed to handle this situation.

Where Next?

Popular in Questions Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
_russellb
I want to try my hand at web scraping. What tools/libraries do I need to use. I’m hoping to turn this into something professional so don’...
New
marius95
Hello everyone, I try to use an Javascript Event Handler in my root.html.leex file. Therefore I created a function in the app.js file: ...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
Kurisu
For example for a current url like http://localhost:4000/cosmetic/products?_utf8=✓&query=perfume&page=2, I would like to get: ...
New
vac
Hi, I’m quite new in Elixir and I’m trying to format a string to a PEM format. I have the certificate value like MIIDBTCCAe2...... and I...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New

Other popular topics Top

malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
AstonJ
We’ve put together this wiki for Phoenix LiveView - please feel free to add any info you feel is worth including. What is Phoenix LiveV...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement