🌎 fergarram.online
Post order:
Development logs, thoughts, etc.
subscribe 🔔

Week n+2

Thu 12 Sep 2024

I'm all over the place but I'm heading in a good direction. Since last time I've added new modules and refined the direction of my lab OS.

My OS has matured a lot since I started prototyping with "cards" back then with svelte.

My goal now is that by December 31 at most I will announce everywhere I see fit that I'm building this OS.

I'll announce it with a demo of me just using this. If I feel like it I might even make trailer like edit.

But anyways, here is what I actually wanted to write as a reminder to myself.

I need a more integrated way of registering actions. These actions can be triggered by:

  • cursor shortcuts
  • toolbelt
  • command palette
  • assistants?

Currently I have things all over the place. I'll write in more detail about this later on. Maybe next time I visit GDL on a Wednesday.

Week n+1

Wed 17 Jul 2024

I've decided to start logging in this journal-like format. For small updates I'll just post a devlog note like this. If there is a lot to be said I'll link to an obscurity.wiki log article.

This week, I explored an implementation for a cursor-based UI for room interactions I had been playing with.

You can read more in the wiki post below.

This week I started paying for a server on hetzner to start prototyping with the backend.

I was fascinated with the world of hosting, backend work, etc. I went to bed like at 3:30 am.

It made me think about how the backend will also need a lot of prototyping — it's something I hadn't seen that way but rather I saw it as something that was solved by others already. But I think it's far from that.

There's a lot of exploration space for me. I looked at neocities.org and how rooms could also live there very easily as well. That's where I found about about WebDAV seems very interesting to me.

I also found about hotglue which feels like something that could be made using rooms but with extended usability and mobile support.

I want to find a collaborator for the backend of rooom.online.

The repo is no longer the source of truth for the modules. This is a good sign because it means it's easier to keep track by room. But I need a way to be able to point to the latest version of a module. That's why I think I need to use an are.na channel to keep track of each module. I think the file will be an .html or .mhtml or something like that.

I juest released the first official demo that I made specifically for my pitch for the Are.na Editorial Annual 2025.

I want to start being more public about the work on rooom.online.

There are still a lot of things to do but I can start sharing more confidently.

I just got to a decent version of oceloti where I'm able to start playing more "seriously". I still need to do a lot of polish but that's mainly it.

Polishes include:

Save Module:
- Move out of thing-manager
- IndexedDB for backups

Image Improvements:
- Lock so that you can use as bg
- Display modes (tile,crop)
- Proper resize (all corners, lock aspect ratio)

Video/Audio Player:
- Fix pointer events bugs
- Custom UI

And that's mainly it. Once those are done, specially the backups one, I can start using it to create my post-breakup collage album.

I'll figure things as I go.

I don't understand CRDTs or OT algorithms to be honest. It's just not natural for me to understand why we need to edit something at the exact same time.

In real life, I don't write at the exact place that someone else does. If I want to collaborate with someone in person, each has a piece of paper and a pencil or each has their computer.

Even if collaborating in Google Docs we’re not editing the same part of the document. At least I haven’t done that.

Space.

You can’t be at the same space at the same time. That doesn’t happen. But it seems to me that async collaboration implies that?

I know that it’s about merging changes and avoiding conflicts.

But I insist. In real life, we don’t have telepathy. And if we had it, we wouldn’t speak at the same time. We would still take turns to speak and listen.

I think the closest thing we have to CRDTs are neurons and cells. I don’t know enough about this but my understanding is that neurons collectively have copies of knowledge not data. (I talk about similar ideas here).

Truth is fuzzy.
Data is fragile.
Knowledge is never static.

Every living thing is essentially a different unique version of the accumulated knowledge of life.

Why am I saying this? What does this have to do with CRDTs?

I’m not sure.

But one thing is clear. I don’t feel excited about learning CRDT algorithms and all those things.

What I do know is that I want better tools for managing copies, addresses, and merge conflicts.

I feel like the inventory module should be the one who manages item/thing types and renderers. I mean that's the purpose but it should expose that instead of the dnd manager if that makes sense.

I also feel like the inventory system is actually less related to items and bags and more about managing thing types and renderers.

Because what's really the difference between a bag and the room? The grid snapping? The more I think about this the more I realize that bags are mini rooms. I could basically use the same thing-management code and have "mini_renderers" that render the things in their icon forms. Positions could exist outside of a grid in a free layout.

Hell! I could even open a new browser window and use a room just for representing the bag.

It could be an area within the same room.

There are many ways of implementing this. But for now, the way it is today is fine. It's a prototype and I'll continue exploring this space.