The Goat Ate My Homework

Yeah, well, not so much content here recently. I have a lot of ideas, the content is already clear in my head for a long time. But it’s just the hard reality of life-work balance. Just as an excuse: the goat ate my homework 😉. Speaking of goat, I did some cleanup to this blog to dust it off from all the rust that gathered over the last few years, I removed markdown linter warning, fixed a ton of typos and switched to Hugo’s GoAT syntax - some diagrams look a bit better now.

Cinode goes live

One of the rules I did set in the previous post was to practically test the theory that is forming here. Thus it is high time to make use of what has been said so far before moving forward. What I have discussed so far can perfectly fit into static web page where every page consists of rarely changing blobs of data. An example of such page is this blog - it’s compiled using hugo and the result can easily be served using a simple web server such as apache or nginx.

Back to Work

It’s been a bit longer than what I thought. My last post ended up with the ‘see you soon’ phrase… Well, that’s not the ‘soon’ I usually mean when saying that. Thus here’s my apology for whoever could have waited for the new content. Let’s see if I could get back for a bit longer this time ;) What has happened? Why I did stop? Well, no surprise - “usual” life stuff, not enough time spent with family, new job, focusing on other things…

We need trees, we need graphs

Extending flat blob space Standard CAS system gives us a flat namespace. There’s no structure of data nor relationship between blobs. Although this could be enough for some range of applications, better tools to organize data help simplifying apps and sometimes is even necessary to express data access authorization. That’s why we have to go beyond a flat structure and build more complex data connections. A natural improvement is to build a tree - similarly to what happens with files in filesystems.

Trust no one

Where things went wrong? Let’s solve the “puzzle” from last post, shall we? The issue was with the trust level. The code basically assumed that the storage layer, being a memory, filesystem or a remote web server, is trustworthy. When the data was read back from datastore, the code didn’t check whether it’s correct or not. And from the design point of view we know that the data must perfectly match the name of blob we asked for.