This is Cyberpunk, an experimental word processor.

Cyberpunk is my conception of what AI-native scratch paper might look like for writing.

Why the name "Cyberpunk"? It comes from the anime Cyberpunk: Edgerunners. The characters in this world are cybernetically enhanced with metal gadgets that allow them to achieve superhuman feats. I wanted this writing tool to be the same for essay writers: an enhancement of writing abilities while keeping the writer in the commanding pilot seat.

Every discipline has its own form of scratch paper. For me, blank printer paper is my scratch surface of choice. For others, it might be a whiteboard, blackboard, or a blank Google Docs document. The takeaway, however, is clear: the finished product never looks quite like the initial sketches on a piece of scratch paper.

Often, the writing process itself is identical to the thinking process. This means that writers are typically working through their ideas as they type into the page. Are current word processors well-suited for the nascent writing task? To take a deeper look into this question, we can look at a related question.

Why is scratch paper essential to the intellectual process? Because it allows for free, non-linear, and intuitive idea generation. When I sit down to write an essay, I don't write it all in one go. I write it in a "fractal" manner: first, I dump out all of my thoughts, pick a point to go deeper on, dump out all my thoughts pertaining to that point, pick a sub-point to go deeper on, etc. Rinse and repeat.

My writing tool should reflect this fractal workflow. Modern word processors clearly aren't designed with non-linearity in mind.

There are two principles that motivate Cyberpunk.

Accommodate for both linearity and non-linearity. A linear format is great when you know exactly what you want to write, and in which order; it works horribly if you are exploring. On the other hand, a non-linear format is great when you are exploring, but works horribly if you know what you want to write. Another way to express this idea that linearity endows you with a global view, whereas non-linearity gives you a local view. If you know what the global optimum is, then you might as well just work within a linear framework. Such a framework won't work so well if you're exploring the local landscape and "searching" for a local optimum.

Cyberpunk is designed to give you both, instead of strictly one or the other. Writing isn't a pure optimization problem in the mathematical sense - you toggle on and off between global and local perspectives. For example, paragraphs need to fit within the global context of an essay and also stand on their own. Sometimes, you want to work on a paragraph as its own separate sub-essay; other times, you are looking to see where the paragraph fits into the broader essay.

Traditional word processors give you only the global view, and obtaining a local view is cumbersome (a nightmare of copy-and-paste). Like I said, traditional word processors are fantastic if you want to finalize your draft, make it look pretty and presentable, etc. They fall short for in-progress drafts, since pages, and therefore thoughts, can extend only on the vertical axis. In contrast, there are infinitely many directions that scratch paper can extend!

Keep the human in the driver's seat. An equivalent principle is "limit AI-generated content as much as possible". With the recent explosion of generative large language models (LLM), we need to be much more conservative about what content is generated. There are two sides of a generative process: (1) generation and (2) evaluation/verification. We are way too concerned with (1) as of late. Getting too infatuated with (1) is a surefire way to ensure a horrible signal-to-noise ratio. Don't get me wrong - a low signal-to-noise ratio in and of itself is not a problem. But a process that encourages the signal-to-noise ratio to decrease, a process that only provides generative tools with lagging quality control tools, is. The internet's signal-to-noise ratio is already horrific - even Google, which was built to provide more signal per unit noise, struggles to parse through all the garbage. Need to see it to believe it? Just do a search for recipes.

Cyberpunk doesn't avoid AI-generated content merely out of altruistic intentions for the internet, though. There's a pragmatic reason for limiting AI-generation: I believe AI-generated content actually slows down the writing process.

Consider the following scenario. You and a co-writer are working in a Google Doc together. In the midst of writing "Artificial general intelligence existentialists are so horrible because", your co-writer suddenly butts in and continues "your" train of thought. You then have to ask two questions to continue writing: (1) does the rest of this sentence say what I meant it to say? (2) does the sentence sound like what I want it to sound like? Those are two questions that are already difficult to answer when you are evaluating your own writing - they are much more difficult to answer if its someone else's writing.

For long-form, non-fiction writing, that's what AI-generated writing feels like: an unwelcome, unhelpful partner that adds more cognitive load to an already cognitively intense process.

That doesn't mean that LLMs are all bad. What Cyberpunk includes in its feature set is representative of "good" LLM features for long-form, non-fiction writing. What do I mean by "good"? In this case, the yardstick for "good" is if we can answer in the affirmative to the question "does the feature aid in a building block of thought?". Here in Cyberpunk, the basic building blocks for thinking are combining, splitting, abstracting, and concretizing thoughts. Cyberpunk assists most heavily in the more mechanical building blocks (combining + splitting), while aiding softly in the "abstracting" building block. Below are the three key features.

Coloring by semantic similarity

When 🌶️ is ON and a node is clicked, Cyberpunk colors the nodes in the workspace based on semantic similarity. The darker the shade, the stronger the similarity. Semantic coloring allows you to quickly narrow the down and evaluate the space of nodes that should be combined. It can also be used to preliminarily test if two fragments are related to the other.

Semantic splitting

Pressing "Explode" will split the corresponding node into several nodes. When 🌶️ is ON, the splitting happens in a semantic fashion. Lexical splitting is done according to common breaks such as periods, exclamation marks, question marks, and paragraph breaks.

(in progress) Semantic combining