My 2023 Projects

elliot evans
Dec 19 2023
This is a sprouting note, it will be updated as I make progress on these projects and write more about them!

This year I took a career break. The first couple months of the year I was focused on working on my personal health and I avoided working on projects. After that, I worked on a lot of projects related to Polytope! The last couple of months I was working on a part-time contract where I added multiplayer functionality to a new 3D design app.

In this note I want to try to document what projects I have been working on. I originally wrote this as a list of articles I should write, but after thinking about it I realized there are too many articles to write, and just putting this all out there is a good first step. I intend to write in more depth about these topics next year. Hopefully just seeing all of this gives some good insight into what I’ve been working on and how it all fits together.

It would help me to hear what you would be interested in hearing more about. Let me know your thoughts in the comments below or on mastodon or X (formerly twitter).


Polytope Polytope experiment 2 logo

Polytope is a rich and composable experimental code editor that combines text and visual coding; structured and unstructured (I call this mixture "ummm-structured") representations of code; and symbolic and direct manipulation of code.

This year I have been working on things that will directly support Polytope experiment 2 (coming 2024... maybe), but not on Polytope itself.

I shared a note called 'Towards "Text-Editor-ish" UX' about User Experience guidelines for Polytope. I experimented with Polytope in GitHub Blocks. Also, I never announced this, but I open-source all my experiments now in the polylab repo on GitHub. Click on the above image to see a mind map of things related to Polytope (many of them are in this article).

Whats next for Polytope?

· Polytope experiment 2 · An editor editor · A notebook editor · a tree editor · editor transformations

Caretope Ꮖ Caretope logo

I began working on adapting text editor caret navigation to visual editors in 2022 as a part of Polytope. I slowly realized that caret navigation is a rich topic in and of itself so I seperated it into its own project: Caretope!

This year I

Whats next for Caretope?

· writing · examples including: Selection, Multicursors · functional API and release version

Bidirectionality ↔

My interest in bidirectionality started around translating between multiple ways of talking about the same thing. For example, translating between textual and visual representations of code in Polytope. I've been getting deeper and deeper into bidirectional programming in the second half of this year, and I'm really excited about it right now.

This year I spiral created by Sharon.

Whats next for bidirectionality?


Nudging with Constraints ∇Δ

Nudging a number is using a mouse or arrow key to quickly move a number up or down. Constraints allow a user to specify relationships between numbers, or limitations around what numbers should be reachable via nudging (or otherwise).

More generally, nudging is about exploring a large space of values by making local movements through that space. Constraints limit large spaces to smaller ones, and change how those spaces are navigated.

This year I made a bidirectional nudging with constraints demo. It uses (a hacky implementation of) gradient descent. You can nudge number variables. You can also constrain a variable by setting it equal to an expression, and then you can nudge the expression and it will change the variables in the expression to satisfy the constraint!

I also made an equation plotter. This plotter will be used to visualize constraints. It will also add visualization to complement direct manipulation of constraints and values.

Whats next for nudging?

· nudging in other spaces like around a circle, tree, or quaternion · visualizing gradient descent for nudging · explore algebraic geometry to understand constraints better · equations as constraints rather than just expressions

Local-First Multiplayer & History

I made a custom CRDT, but it is too limited to be useful. CRDTs are hard!! I did a contract with my friend Sasha to add multiplayer to a 3D scene editor app and I used yjs.

Whats next for Multiplayer?

I'm not sure if multiplayer will be a part of Polytope experiment 2 because it adds a ton of complexity. History (undo/redo) will be part of experiment 2. I will keep working on multiplayer stuff next year however. I'm looking forward to a CRDT library that supports a full document history but I don't think that exists yet.

Miscellaneous


Conclusion

I just compiled all of this over the past few days so I may have missed stuff! I'll update it if I realize I missed something.

I hope you enjoyed reading. See you in 2024!

Let me know your thoughts in the comments below or on mastodon or X (formerly twitter).

Comments very new and simple comments system using val.town, please be kind and don't link stuff