ElixirConfEU - Elixir Processes in 3D

I gave a lightning talk at ElixirConfEU on Visualizing Elixir Processes in 3D.

A few nights before travelling to Krakow I had watched a video by Kresten Krab Thorup on his project Erlubi which transmits basic details of the Erlang VM to a Ubigrpah Server.

I started to use this to inspect Erlang projects, and play about with OTP Supervisor trees and how they looked in 3D.

I decided to go about using this from elixir. It doesn’t take much to use from elixir; if you want to visualize your own project simply cherry pick the steps 1, 3, 6 and 7 below.

1 Download the Ubigraph server from ubietylab.net. Unpack it and just run the command line tool bin/ubigraph_server. A black window will appear.

2 Create a new elixir project mix new lightning_ex and cd into directory.

3 Add Erlubi as a dependency to the mix.exs file:

1
2
3
defp deps do
  [{:erlubi, github: "krestenkrab/erlubi"}]
end

4 Add some code to ex_lightning.ex to generate linked and unlinking procs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
defmodule ExLightning do
  def start_linked(n) do
    for _ <- 1..n do
      Task.start_link(fn ->
        :timer.sleep(1000)
      end)
    end
  end

  def start(n) do
    for _ <- 1..n do
      Task.start(fn ->
        :timer.sleep(1000)
      end)
    end
  end
end

5 In terminal fetch dependencies and compile with mix do deps.get, compile

6 In terminal start an iex session with mix iex -S mix

7 In iex session start Erlubi tracer with :erlubi_tracer.run. If you get an error ensure you started ubigraph_server as described in step 1. At this point you should see the vanilla elixir system visualized in 3D like so:

  • Green Cubes = Erlang Ports
  • Red Spheres = Erlang Processes
  • Blue Sphere = Named Erlang Processes
  • Grey Line = Process Links

8 run ExLightning.start 5000 which will create 5000 unlinked processes (unbound red spheres)

9 run ExLightning.start_linked 5000 which will create 5000 linked processes, which will be linked to the creating process.

Full source code can be found here: https://github.com/holsee/lightning_ex

Have fun :D

What Elixir Is About @ Erlang Factory SF 2015

Much more than an introduction to the elixir language, the philosophy and design choices are examined in this talk by José Valim.

Even for the seasoned elixir wrangler this is a very interesting watch, as José discusses the kind of citizen elixir wants to be in the Erlang ecosystem.

Spotify Culture Envy

Love these videos, love Spotify’s culture, looks like a great place to work.

Far bigger company than I thought they would be… tis cool how they approach the architecture to cope with that effectively.

Well worth the watch.

Don’t Circum to Dumb

I think brushing up on Computer Science fundamentals from time to time is a valuable endeavour, which every developer should do.

Even if it is as little as taking one of the many undergrad level modules online. Many of which are not to be sniffed at.

In our industry we are not chartered, and nor do I think we should be as I don’t like the idea of a professional body lording over us. I think we owe it to ourselves to get better or at the very least not get dumber, as many jobs in our industry will make you dumber over time.

My Sister is a doctor, and soon she will be revalidated: “Revalidation is the process by which doctors holding registration with a licence to practise will have to demonstrate to the GMC that they are up-to-date and fit to practise and complying with the relevant professional standards.

I can’t speak for what her day to day is like, but as a practicing doctor I doubt you exercise your entire base of knowledge on a regular enough basis to avoid refreshing yourself with the fundamentals from time to time.

Now imagine beyond doing our daily duties, developers were required to go through such a “revalidation” process in order to be allowed to hold the title of software engineer (or whatever).

An interesting thought… baring in mind we all probably know at least one Secretly Terrible Engineer.

Ours is a industry fueled by both passion and science, and the passion is what has pushed us forward. The same can be said for medicine.

Bad engineers probably were not always that way, maybe they were both sharp and passionate when they started, but the lack of inspiration in their 9 to 5 has caused them to become blunt and disenchanted over time.

It is often said software development is so broad and someone cannot possibly know everything, true, but I don’t think medicine is a small field and there is no excuse for a Doctor to not be continually up-to-date with the fundamentals of their field as well as their respective specialization.

I for one don’t like the idea of being made to “Revalidate”, but I do think we owe it to ourselves to try and stay fresh and up-to-date with the foundations of our industry.

MIT: Introduction to Algorithms

I recently got into a conversation about the computer science classic sorting, in particular we chatted about applications of Radix Sort.

This is not something I had really needed to look into in any detail, but sparked my interest due to this statement “Radix sorts are often, in practice, the fastest and most useful sorts on parallel machines.”

The spark rekindled my desire for refreshing my knowledge of the basics so I may build on this to explore the latest and greatest research in this area.

I personally like the MIT course Introduction to Algorithms as it covers so many of the fundamentals very well.

Watching “Counting Sort, Radix Sort, Lower Bounds for Sorting” at the minute:

A good start for now.

Also worth checking out: “Practical Applications of Radix Sort”.