What does HackerNews think of phoenix_live_dashboard?

Realtime dashboard with metrics, request logging, plus storage, OS and VM insights

Language: Elixir

#6 in Monitoring
You may be misunderstanding the relationship between FP and state.

We are not against state, quite the opposite, FP likes state so much that we put it on a pedestal! We make it explicit, often with functionality that makes it easy to spot, understand, and manipulate.

If you think about your questions, here is how I would answer it:

"It's harder to test" -- so let's make them simple to test without mocking them out (which would effectively remove them from the test).

"It's harder to reason about" -- so let's make it easy to reason about by making it explicit.

"It's hard to tell where changes come from" -- so let's add constructs for manipulating it.

It is not about antagonizing it, it is about making sure it is clear and intentional.

---

PS: the "evil bit" is more often associated to global mutable state, but don't let any FP language fool you, they all have global mutable state with explicit tools for manipulating them. In Elixir, you can even use tools such as LiveDashboard [1] to navigate all global mutable state in your application, making it very easy to introspect.

[1]: https://github.com/phoenixframework/phoenix_live_dashboard/

We work hard exactly so that you can run Phoenix in production and gradually learn more about the BEAM along the way!

One recent example is the built-in dashboard showing all the different data the VM and the framework provide: https://github.com/phoenixframework/phoenix_live_dashboard/ - at first it may be daunting but providing a web-based experience to help familiarize with the building blocks is hopefully a good first step. We also added tooltips along the way to provide information about new concepts.

The same applies to Elixir: learning all of functional programming, concurrent programming, and distributed programming would definitely be too much to do at once, so we do our best to present these ideas step by step.

For what is worth, this is also true for Erlang. It has tools like Observer (which was used as inspiration for the dashboard) and a great deal of learning materials.

One last advice is to not drink the cool-aid too much. For example, you will hear people talking about not using databases, about distributed cluster state, etc, and while all of this is feasible, resist the temptation of playing with those things until later, unless the domain you want to use requires explicitly tackling those problems.

I hope this helps and have fun!

Erlang's VM comes to mind. It has great APIs for inspecting a running system and quite a few options for consuming that data: build-in observer [0], CLI version [1], web live dashboard [3] and more.

[0] https://erlang.org/doc/apps/observer/observer_ug.html

[1] https://github.com/zhongwencool/observer_cli

[2] https://github.com/phoenixframework/phoenix_live_dashboard