You are viewing archived messages.
Go here to search the history.

Ivan Reese 2025-12-17 04:57:52

This channel gets basically no action, and it's been years(?) since I've shared here, so I'm allowing myself four minutes for this. Sorry, pedants!

In this video I show a code sketch of a gestural notebook interface, something I made off-and-on over the past two weeks. This is for the PlayBook project.

Xavier Lambein 2025-12-17 07:19:01

Curious what it is you don't like about it? Watching you it seems okay, albeit a bit slow if you need to switch back and forth between canvases quickly (I'm comparing in my head to desktop workspaces).

John Christensen 2025-12-17 15:59:07

Having the sequential "notebook" inside an infinite canvas seems nice! I often drift around and get a bit disorganized working in an infinite canvas, but having at least part of the canvas stay linear seems helpful when I want some structure

Ivan Reese 2025-12-17 23:21:02

@Xavier Lambein

There are a lot of values and goals behind the PlayBook project, and this little interface sketch manages to adhere to most of them but not all, and there are probably ways it could do better.

For instance, there's no on-screen UI chrome. No navbar, no back button, nothing. (The little tool picker in the bottom left is just an affordance for this code sketch. In our real prototype, tool picking is done using a different method — out of scope for my code sketch.)

The page-swiping works great. Happy with that part.

The first level of zoom-out, where you see the infinite canvas, also works well. Aside from bugs, we're pretty happy with this part. It doesn't do everything we want in the way we want, but it's close.

The second level of zoom-out, where you come out of one notebook and can switch to a different notebook… that part sucks.

The interaction of pulling in from both sides (I call the gesture a "Joni", because Joni Mitchell has a song called "Both Sides Now") does different things depending on when you do it. Conceptually, it always means "go out one level". But in practice what "one level" means changes depending on whether you're focused on a single page vs looking at the infinite canvas view vs looking at the list of notebooks. This inconsistency feels bad and is limiting.

For instance, I can't switch notebooks when focused on a single page. I first have to go back to the infinite canvas view. This means I also can't enter a notebook and have it already focused on a single page (which is what I would want for something like a daily journal).

Another goal of the system is that everything you can see and touch is made out of "materials". Briefly, we use the term "material" to describe the appearance, interactions, behaviours, and data encompassed by a type of physical object, and "material physics" to refer to how all these things work together to define the "laws of physics" for the system overall. The core materials in our system are ink and paper, but we are also working on other materials.

My goal in this interface prototype was to make it work while changing as little as possible about our current set of material physics. Some thing I had to change to make this demo:

  • Paper will snap to adjacent paper, forming a "sequence"
  • The camera (which is just a screen-sized piece of paper with a tiny bit of special behaviour) can be in one of two modes, locked vs unlocked, and when locked (to another piece of paper) it'll try to frame that paper in view, and will respond to edge-swipes by moving to the next/prev page in the sequence (if any).
  • Paper can also act like a "portal", where it will render itself by taking the view from a camera paper.

Etc etc.

All told, I didn't have to add much. Most of the behaviour comes from our existing physics that make paper what it is.

Buuuut the additions I had to make to get the portal rendering to work don't feel all that harmonious with the rest of the system.

I think I could come up with something different that would achieve the same interface goals but that require fewer additions to paper material physics and that feel better to use.

Xavier Lambein 2025-12-18 20:50:31

Yep I can totally see how the inconsistency of the joni could be frustrating to use. Seems like a tough thing to solve 🤔 What if you only joni to switch workspace, and you pinch to zoom in/out of a page? Then when you joni out it would retain whatever viewport you had.

Xavier Lambein 2025-12-18 20:51:38

I love that the camera is a piece of paper too, I hadn't realised that. Big "everything is a _" energy

Ivan Reese 2025-12-18 20:52:06

Another goal: when you're focused on a page, fingers need to be basically a no-op. Even using fingers to turn pages is almost too risky. We want the basic drawing mode to be safe for "hands all over", so that you never accidentally invoke some unwanted behaviour due to failed palm rejection or other errant touches.

Xavier Lambein 2025-12-18 20:52:28

Ah, makes sense!

Ivan Reese 2025-12-18 20:52:40

So Joni and swiping are the only things fingers do, normally.

Ivan Reese 2025-12-18 20:53:19

Turns out, this "hands all over" safety is probably the #1 factor that makes an iPad feel more like real paper.

Xavier Lambein 2025-12-18 20:55:16

Yeah that makes complete sense, as I'm reminded every time I try to draw and didn't remember to disable the touch sensitivity of my Wacom