watwa.re

Higher-level commands for VSCode

After writing about Tofu and how it can elevate the coding experience, I further reflected on its caveats and decided to take a stab at a simpler, faster, more language agnostic implementation of some of Tofu's features.

I am happy to announce that it was a success: Soy can now be installed from VSCode's marketplace!

It supports extending selections and unwrapping, which I think are essential and every other way is wrong (fight me šŸ„).

Moving nodes is also supported, while not quite on-par with Tofu yet.

And, in contrast to Tofu, it is fast, can still operate on syntactically invalid code and the actions it provides work across many languages (all thanks to tree-sitter).

How does Soy fit into Tofu?

Tofu changes a lot of your keystrokes. Soy provides powerful actions on top of VSCode's native ones. Thus I hope I chose unobtrusive keybindings for the latter, let me know if they clash.

I want Soy to eventually become a better Tofu, but for now they answer the "How can we get to a place of higher-level coding?"-question from opposite directions.

Tofu: By completely handling syntax and code-style management, all shortcuts can do something more meaningful.
Soy: If you sprinkle some powerful actions on pre-existing workflows, you might lure developers into the future.

There might be room for two products aimed at different user groups here. E.g. Tofu could be aimed at beginners, who fall of the syntax cliff.

A note on the implementation

I started writing it in Rust, because I love the language and I would want Soy to integrate into my new favorite editor, Zed, as soon as it has an extension API. Things were going well, but once I started working with the language boundary between VSCode JS and Rust through wasm-bindgen, I realized that sharing complex structs would require more manual labor than I wanted to put into this first stab.

Thus Soy is also written in TypeScript. I would revisit a Rust version at a later point once I've built more features.

And who pays for it?

I am currently unemployed to focus on my own projects, but since food is not free yet, and my projects nowhere near monetizability, I am considering looking for part-time employment soon. I also finally finished creating my GitHub Sponsors page, but I do not have high hopes that this will turn sustainable anytime soon.

That said, I appreciate any kind of support. Social media interactions fuel me a lot, pointers towards companies working in the future of coding space who are hiring would also help. And I am of course hungry for bug reports and feature ideas.