Libove Blog

Personal Blog about anything - mostly programming, cooking and random thoughts



Link:

Link: https://orgmode.org/

Want to check this out, but don't know if I'm willing to learn Emacs for this.




First Article Written with Editor

This is my first article written with an editor on my website!

Up until now I wrote all my articles either directly on the server or on my PC. For this I use a convoluted system, partially working on the server, partially on my PC with git and ssh in between. As this process is tedious it keeps me from writing short updates.

The online editor is still every limited but I will extend it as needed. Additionally I've adjusted some of the internal structure of the blog to allow for different types of post. This will allow me to also write short notes, which will not show up in the main feed.


graph-force: Python library for embedding large graphs in 2D space, using force-directed layouts

I've published my graph embedding library graph_force on GitHub and PyPi. I wrote about the process of building this a few days ago.

My own algorithm turned out to be quiet slow when compared to networkx. For this reason I also reimplemented the networkx algorithm, but with multithreading support. The most important feature for me was the ability to load the graph from a binary file. While networkx used to much data while ingesting the graph data, I can effortlessly write it to file and load it in graph_force.

At the moment this library fulfils my needs, but with publishing I commit to maintaining it. Maybe this is useful to someone else.



Community Tweeting It

I just realised I never wrote about this small project I created back in 2020. The show Community had a bunch of Twitter account for the characters on the show. They wrote tweets in characters every now and then, which added some additional character interactions to the show. A few times the twitter interactions were also referenced in the show.

I've scraped the tweets of all (known) accounts and created a website to browse all community tweets. I tried to assign the tweets to episodes based on the airing dates. With the current acquisition of Twitter by Musk and the following "turbulences" it might be a good idea to check the project again to see if more data can be preserved. It would be a shame if this piece of my favorite show disappeared forever.

The source and prepared datasets can be found on GitHub.

The show also add a homepage for the fictional community college. Sadly the website is no longer available but it's in the internet archive. Sadly the videos of the A/V Department did not survive.


Building a Spring Graph Layout Algorithm in Rust

After scraping "all" Mastodon instances, I wanted to visualize the graph of instances. My expectation is that this is a (quiet dense) social graph. To bring order in such a graph a Force-directed graph model can be used. I previously used the networkx implementation for this. However the peers graph I currently have is too large, with 24007 nodes and over 80 million edges. When trying to import this into networkx I simply run out of memory (16GB). After asking for advise on Mastodon, I tried out gephi, which also ran out of memory before loading the entire graph.

Because I still want to visualize this graph, I've decided to write my on graph layouting program. For the first implementation I followed the slides of a lecture at KIT. This gave me some janky but promising results, as I was able to load my graph and an iteration only required ~10 seconds. To validate my implementation I created a debug graph, consisting of 2000 nodes with 4 clusters of different sizes.

After this first implementation I took pen and paper and thought about the problem a bit. This lead to an improved version, with a simpler model leading to faster execution times and quicker convergence.

Picture of notes about spring models

Embedding the mastodon instances graph, is still challenging. The algorithm creates oscillation in the graph, which I suspect are introduced by one (or multiple) large cliques. I will post an update soon.

Update:

Bonus image of the florentine families graph:

Picture of the florentine families graph