The Beginning - Abe Nelson

← posts

The Beginning

6/1/2025

Every time I use a computer, I find myself wishing that my apps could talk to each other. Ever since I came across tools like Notion and Obsidian, my attitude toward the current personal computing landscape has been tainted. There is something just out of reach that could make my experience so much better.

Many of the concepts that persist in our modern operating systems have been with us from the start. However, since then, many new technologies (especially the internet!) have risen, and often I find conflicts between the way I want to do things and the way things are done.

(are.na)

Take Notion for example. It has risen to become a Swiss Army knife of note-taking, data organization, and more. It promotes a hierarchy of notes and data based on the contents of the notes themselves. Most importantly, you can query and work with data across the app. With their newest products, Notion Calendar and Notion Mail, you can even work between emails, calendar events, and notes seamlessly. It is a lovely system to work inside, until there is a feature that Notion doesn’t support. It is at this point you realize how closed a system it is. If only there were a product that allowed you to create and run your own workflows, perhaps on a piece of hardware you actually owned… What if you didn’t need to rely on a massive company like Notion to organize your data in a flexible way? We have access to most of the same databases, tools, and systems that they have right here on our personal computers.

In software writing, people often point to the “UNIX Ideology”: small simple apps that are designed to do one thing, and put together to form comprehensive and useful workflows. The problem is that the way these apps share data is less than ideal. It is common to spend time formatting the output of one tool to fit the input of another. Additionally, all the work falls to the user in real time to figure out the correct sequence of apps and flags to use to complete the desired task. In other words, I agree with the idea but not with the execution.

Despite their pitfalls, I tend to enjoy working with Command Line Interfaces. However, I do understand why they are not the most common way to interact with a computer. If we change the way we interact with these types of tools, I think CLIs are capable of being much more accessible to the general public. Not every little app needs its own electron wrapper, and creating a system where small tools are more accessible to the average user is a good thing. Through visual scripting, good documentation and autocomplete, I think terminal-like tools could be very useful to a wider population.

Neovim makes finding files just a little easier with this nice tab completion dropdown menu. Interactions like these can go a long way, especially if they are standardized. (As a side note, I made this GIF in ffmpeg, which is an example of a non standardized CLI that has a very steep learning curve) (are.na)

I think the main reason that I am drawn to CLIs is because they feel more “open”. GUIs are much less likely to expose their inner workings, file data, etc. This leads to a very siloed desktop. Data associated with one app is expected to work only with that app, there are a million different file formats, and the user is often left relying on decaying or proprietary software. CLIs on the other hand make a point of exposing their inputs in outputs in ways that are useable by other software. While scripting in a monolithic app is often left up to the developer of that app, with CLIs, it is easy to write a bash script that strings together a useful (but often horrendously janky) number of separate apps. I like hacking on and improving my daily workflows. The current software landscape makes this very difficult.

My main goal with my research is to tear down these silos. I think the reason that so many users are willing to move to all-web environments (such as ChromeOS) is because of the way modern users expect their apps to behave. People are used to local apps not sharing contexts or data between them, so it is not a hard pill to swallow to simply have this data moved off a local machine and into the cloud.

The Riven flow-based framework (are.na)

I propose an alternate where any piece of data on your system can be referenced, used, and modified by other apps (with proper permissions of course!) For example, imagine how useful it would be if you had an email you needed to write, just link that email to the associated task in your todo list. Notes in your journal could not only link to any website, but also any app and any file within that app. Suddenly, your work becomes interconnected, it is easier to find things, it is easier to pick up where you left off, and you will never forget to do something again. Try making people give all that up for cloud based apps.

Sure, companies (like Notion with the introduction of Notion Mail) are trying to do the same thing in their web based platforms. But why not open the ecosystem? Imagine any app that you either downloaded or wrote could just tap into this potential, no questions asked.

I guess the best way of explaining what I am searching for is a system with the organizational capabilities, structure, and homogeneity of Notion, and the openness and modularity of command line scripts.

I think the reason that nothing like this exists is because our current operating systems aren’t set up to handle something like this. I think it is time to stop developing on top of the systems that we have already created and reinvent the wheel just a little bit. It’s fun to think about how operating systems could be designed differently knowing what we know now.

I know, most of this sounds difficult if not absurd, but I’m not the only one thinking this way. I am working on making this a reality but this is a very big task. My current project is implementing a prototype filesystem that could support this kind computing. I hope to keep writing as I refine my ideas of what this system will look like, and dive into more technical areas as I continue.