WLOG - blog something different

tags: ai arduino bass games godot i2c linux plan9 random rv web werc zig
The importance of pruning and balancig trees
link | random | Sun Apr 07 21:48:27 CET 2024 No.34

What about this weather we’re having?

Ah well, at least the laws of equal exchange agree with exchanging screen time with fresh air.

But let’s discuss balancing tree structures.

Adding new nodes and branches is usually quite a straightforward operation. Most of the time you don’t have to do anything, the structure grows on its own. But without any kind of supervision or maintenance, it will grow into a random, hard to traverse mess that just wastes resources.

Before picture

So it is important to either implement proper growing algorithems into the structure itself or do some manual pruning manualy.

After picture

Now, whether it be databases or file system structures, it is best practice to do the balancing operations at off peak activity times.

And if you’re developing custom algorithms, document them! Take good snapshots of before and after states for studying.


Blink from boot0 over FEL
link | rv | Sun Mar 10 15:35:26 CET 2024 No.33

These are definitely words in the title, but what do they mean? A long-awaited adventure!

By now, the probably obsolete and forgotten RiscV version of MangoPi has been on my TODO list for a while. Fashionable late, but sometimes you have to let things take their time.

What we have here is bare bone blinking of an LED on the MangoPi SBC with Allwinner D1 RiscV chip.

Trace on the analyzer goes up and down

Quite a few steps to get to this point, from figuring out the boot procedure, architecture, pin-out, tool chains, itd…

The condensed version of the steps and code is here.

And there might be some notes as well.


Bump
link | random | Thu Feb 29 20:47:12 CET 2024 No.32

Just because nothing worth writing about is happening, doesn’t mean nothing is happening. Sometimes you just have to bear through the grind to reach a new point.

That does not mean you should completely abandon everything. Repetition keeps things in memory. So a post for the sake of the process of creating a post on this system.

So what have You done on this additional day of the year?


Sometimes you just have to
link | random | Sun Jan 28 09:47:42 CET 2023 No.31

Continuing the previously discussed topic, of daring to be stupid for the sake of learning, sometimes you just have to do something for the sake of doing something.

So why not a fictional calendar with 17 months, with names based on subatomic particles? Why? Why not? And while we’re at it, let’s try out some of the current generation of generating tools.

Quantum Chronos 2024 cover preview

Some interesting takeaways from this adventure, besides the calendar being useless for tracking anything useful, are as such. The number of months with 21 and 22 days switches depending on whether it’s a leap year or not (lazy day redistribution). And the image generation model used returned a spherical motive with a center and an outer ring always when the description contained a subatomic particle in one form or another.

Any way, here is the whole thing for anyone with too much time: Quantum Chronos 2024


Dare to be stupid
link | random | Sat Jan 27 10:14:32 CET 2024 No.30

The process of learning hurts. Physically! Just like working out. Anyone who says otherwise is lying! Just remember your math (or history) days in high school.

And just like working out, the experience gets easier with practice and even pleasurable with motivation. That lesson you have to figure out for yourself.

The path is one of feeling embarrassed. As in, I am embarrassed at how long it took me to run a process as another user under plan9. Let me explain.

I experimented with ramfs (to try and save on SD card life and maybe speed up some things) and everything that comes along with it (namespaces, permissions, sharing data between processes, …). Sensor data in “gizmos” is collected by the system owner, but the web server is run as an unprivileged user none. I could not read data from the web server. So, as necessity is the mother of invention, I managed to run the web server as a normal user set up for all things web. A year to figure how to do this since first failed attempts in the beginning and leaving everything on default. Probably because of an input error in the terminal. Now, with the developed rc history the iteration was less painful and produced success.

This allowed testing and setting up a new chain of scripts that read, save and process data in a shared memory. The result was about a half-second faster graph generation on the “gizmos” pages, since data was read from RAM instead of an SD card. For about 10 KB worth of text, not bad.

BUT, as I have found, that would increase the whole generation time by about five seconds, since now, the process had to be spawned as another user with a full namespace.

Back to beginning to figure out the proper way to define workspaces and not just quick fixing it by needlessly running an exposed process with a privileged user. It turns out, once you have a proper syntax-free command, the plan9 system is brilliant about these things. Once you know how to run commands in the same way or in the same configured environment as the system does for you, debugging is a cinch.

Of course, as with all interesting things, why would there be an example?! Yes, you can read the documentation, but all theory is slow to practical progress. Sometimes you just need to see the order of parameters for things to click.

So, for anyone finding this, an example of spawning a process with an unprivileged user with a specific namespace where you can then run and debug with printouts:

auth/as -d -n /bin/service/tcp80.namespace none #command or without for rc

Back to basics
link | random | Sun Jan 14 16:49:08 CET 2024 No.29

Do you ever get that feeling, reading other people’s blogs or publications, that everything you do or write has to be new and different and contribute something new?

Let’s call this, for better or worse, content. If it’s not new, is it even valuable? To write or to read? Whose time is being wasted? Is it being wasted? Somehow, along the way to something, it was forgotten what practice is.

Sometimes you just have to get back to the basics to start up. You don’t begin a jam session by playing the latest hits, but by doing scales. You don’t play a game of wally ball by changing the local champions, but by stretching. And you don’t come back to civilization from an analog getaway by writing new algorithms, but by googling for basic HTML definitions!

It’s true that, as consumers, we care not for the process in between. Finished updates are the shiny drug. But as a techie, I miss progress updates, experiments and fails. Even a negative result is a result.

If nothing else, to feed the “dead internet” of bots, an update just for you:

  • updated the (so called) Raspberry Pi 1 server to the new 9front release - (some things didn’t compile straight from the source, should really join a 9front community to debate these kinds of things)
  • updated the tm1650fs, sgp30fs and bme680fs drivers to use the new I2C code in 9front - (this one was actually really painless; go to 9front contributors)
  • updated the web page to pass the new Google Chrome Lighthouse checks with flying colors again - (no lie, had to google basic CSS to make it happy)
  • updated the Second Chance Brotato mod - (legit forgot how to use Steam services or do Godot scripting)

Now bravely off to bigger and better things in this new year.