[ANN] SnakeBar.jl - A progress bar that fills your terminal with space-filling curves

Hey everyone, I just released my first Julia package, SnakeBar.jl – a progress bar that draws a random space-filling curve per process in your terminal! Any comments are appreciated! Happy Halloween!

multisnake-demo

Community reactions

“This is beautiful and horrifying all at the same time.” — u/paperclipgrove

“Totally silly — have my enthusiastic upvote.” — u/HommeMusical

“Do you just enjoy doing convoluted stuff? If you do, you must be having a good time. :-)” — u/Ok-Secret5233

“I’m going to use this in my thesis work to give the next grad student an aneurism when they try to understand my code. God I love this.” — u/AAaaAAAAAAAaAA-a

43 Likes

This is what Julia was meant for. :flexed_biceps:

In all honesty, this is super fun! I downloaded it, works great, and I love seeing fun Julia packages like this! Some questions:

  1. Are you going to try to use the new app system in Julia to turn this into an app?
  2. How does the pathing work? It’s really slick!

Keep up the great work!

~ tcp :deciduous_tree:

11 Likes

I’m so flattered :sweat_smile: Never had a meme made of one of my projects before.

  1. I didn’t know about the new app system, but yeah, absolutely! Would be nice to have this as a terminal standalone.
  2. It’s based on Claudio Esperança’s implementation of this paper: Dafner, Revital, Daniel Cohen-Or, and Yossi Matias. “Context-based space filling curves.” Computer Graphics Forum. Vol. 19. No. 3. Oxford, UK and Boston, USA: Blackwell Publishers Ltd, 2000. As I understand it: The algorithm first grows a random maze (a tree) that touches every cell exactly once; no loops (via depth-first). Then it traces around the walls of that maze on a finer grid, turning the tree’s edges into a smooth single loop that passes through every cell once. The random neighbor order and start point make each run unique.
8 Likes