Rich_Morin

Rich_Morin

Some Observations on Observer

The Applications tab in Observer displays a diagram of running applications and supervision trees. This is a really impressive capability, especially given that Observer was written decades ago.

However, we can (and should, IMHO) do better these days. For example:

  • Observer’s diagrams don’t scale gracefully. If there are dozens of processes in a pool, the user should be able to collapse that part of the diagram, hiding the details. Etc.

  • There’s also the aspect of discoverability and progressive disclosure. (PIDs such as “<0.110.0>” are a bit opaque…) So, the user should be able to learn a little by hovering over an icon and learn a lot more by clicking on it.

  • The diagrams only show a single view of the system. There are lots of graphs and trees that could be diagrammed, to good effect. Imagine being able to examine dependencies, message flows, process creation, etc.

Given the size of systems being built these days, it amazes me that developers can maintain a mental model of what’s going on. Yes, LLMs can help a lot, but at some point the human has to provide intent, assess behavior and results, etc. Chats and dashboards are part of the answer, but (IMHO) diagrams should be, as well.

Although creating a diagram-enabled browser for Elixir systems would have been just a pipe dream in the past, we now “have the technology” to make it happen:

  • There are a variety of open source diagramming tools (e.g., D3, Graphviz) that allow generation of static and/or dynamic diagrams. LLMs can use these tools directly and (for deterministic results) generate tools to do so.

  • Phoenix LiveView could generate and present desired web pages and diagrams “on the fly”. Other tooling (e.g., graph databases) could store supporting data. Finally, LLMs can do the heavy lifting of creating the needed code.

Frankly, I’m amazed that I haven’t seen any work in this direction. Am I missing something?

Most Liked

arcanemachine

arcanemachine

I know basically nothing about this topic, but I do know that mix xref graph can be used to graph dependencies. There is also this neat tool by @axelson which does a good job of visualizing the data:

Just mentioning in case you aren’t familiar with these.

Where Next?

Popular in Dev Env & Tools Top

sodapopcan
I just placed on an order for my first mechanical watch since I last wore one in my mid 20s which was… oh boy, technically decadeS ago (t...
New
hq1
Hey! Just wanted to share my ExUnit NeoVim plugin: GitHub - aerosol/nvim-exunit: Opinionated ExUnit test runner for NeoVim · GitHub The...
New
pinksynth
Hey everybody. I was wondering if anybody here has used Panic’s Nova editor. It came out recently and I saw there was no Elixir Formatte...
New
bwlang
I want to buld this docker image but it fails with a timeout at RUN mix local.hex --force Maybe it’s just a maintenance window, but the...
New
g33kidd
Just curious as to what everyone is using in terms of colors. I’m currently using Sublime Text 3 and using the GoldenDragon color scheme....
New
mhanberg
Hi y’all! I have started a dedicated Elixir plugin for Neovim. It is still early days, but please check it! GitHub - elixir-tools/elixir...
New
bitboxer
In the last couple of months I only played a little bit with elixir, haven’t had much time to actually build something with it. But now t...
New
aziz
I’m happy to finally present to you the best Sublime Text package for Elixir, templates and more! :partying_face: :confetti_ball: Elixi...
New
AstonJ
Welcome to our thread for Mac users :smiley: Windows users please use this thread Linux users please use this thread For those who dis...
New
AstonJ
If you use a VPN or are interested in any please vote in the poll - you can select as many options as you want :icon_biggrin: I’ve added...
New

Other popular topics Top

danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29703 241
New
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID&lt;0.412.0&gt; terminating ** (Postgrex.Error) FATAL...
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
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? Ecto.Repo — Ecto v3.14.0 has exampl...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36432 110
New
boundedvariable
I am going through the kafka architecture. All the features what the kafka is providing are already in Erlang. I would like hear your opi...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

We're in Beta

About us Mission Statement