Studio


Since October 2021,
I have been the sole UI / UX Designer for Studio.











A video I put together to show an example full flow of using Studio Screen recordings and edit by me, Original live action footage beautifully captured by Tania Yeo

Why?


Users of precision fabrication tools such as CNCs are often untrained or unfamiliar with the CAD or graphics programs required to create digital cut files.

My favorite user quote:

I am 75 years old and with what time I have left I would like to do woodworking, not computerworking. Hell, I wouldn’t want to do computerworking if I were 25.

Designing Studio means having somewhat a counter-intuitive mindset: that success comes from our users spending the least amount of time possible in our tool (so that they can get to making things with other tools).






Cross-device Design


A part of making Studio accessible to the every-day craftsperson, we wanted to make it available on essentially any device. To achieve this, Studio is delivered as a web-application, from anywhere that can load a website, including phones! As such, an important (and challenging) aspect of Studio is that it is also designed for mobile use.




Here is a video from our launch to demonstrate use on mobile:
https://youtu.be/6hnnR7kc_D0




Planning & Review


In addition to allowing users to quickly generate 2D designs, we also wanted to give them tools to help ‘plan’ for fabrication, by setting intention for type of cut, depth, bit diameter, and offset.


The ‘Review’ mode in Studio shows an approximate render of your design, given the ‘Plan’ that has been set. It’s a quick way to sanity-check your fabrication plan, and make sure that your planned cuts match your vision for your project.

I came up with the idea and designs to use 2D shading techniques to generate inexpensive, but convincing renderings:



Featured features

All of these gifs were made and edited by me, to highlight a feature I designed and helped ship:




See some secret things I did >

(you’ll need a password)


More things I am proud of


  • I created and have been managing the entire design system for Studio (in Figma).
  • I designed and implemented a feature to collect feedback and bug reports from users and make them easily accessible in our team slack.
  • I originated a new process for engineering handoff called ‘SoTs’ (Source of Truths) which would allow for easier navigation by engineers, and a consistent place to reference for QA testers. No process is perfect, but this was a definite improvement, and even recognized in my peer reviews from devs.
  • I maintain a great relationship with the engineers on our team and have been told that I write excellent tickets.
  • I built 3 new single-line fonts for our users.
  • Ask me about prototyping tricky interactions in paperjs and grasshopper :)



More coming soon!

Draw


The flexibility of familiar pen tools, with thoughtfully approachable CAD functionality


Since its launch, Studio had been in dire need of a feature that could enable users to draw custom lines and shapes. Pen tools are a very familiar solution, but they typically lack the control you need in the world of fabrication and craftsmanship, where you are designing and building something to spec. Either it needs to fit into a specific slot, or maybe it needs to have cut outs for a specific piece of hardware. With our users it mind, it was clear we couldn’t design a normal ‘pen’ tool.


Example

How would you draw a shape like an L-bracket with a precise length on the ends? If you use a typical vector pen tool, you will find that while drawing a rough shape is easy, there is no control over the lengths of your individual segments, only for the overall size of your shape. 

You might turn to making ‘construction shapes’ that you can reference while drawing or maybe combine, but then editing your lengths after the fact will be a chore. Or, you can turn to a more powerful CAD program like solidworks, where you can set dimension of pretty much anything, but you’ll have to dig through a mountain of menus and features you don’t need.


Our ‘pen’ tool needed to be both controllable and approachable to meet the needs of our not-so-computer-savvy but precision-minded users.


Prototyping


Because of the dynamic and interactive nature of a feature like draw, it was difficult to get valuable feedback from Figma prototypes so, initially, I tried leaning on our engineers to build prototypes to test with users. The prototypes were higher fidelity than needed, and because the ideas were rough the execution was often not quite what I wanted. I was wasting their precious time!

So, I decided to make my own prototypes.  

I created several prototypes in paperjs to test behaviors and interactions for creating and editing polyline shapes.
The first prototype allowed users to try adjusting polygon shapes while applying different behaviors and styling, to understand what feels most intuitive while segment editing:



Another prototype explored styling and behaviors for creating polyline shapes. I implemented features to snap not just to previous points but also to previously used dimensions, for snappy drawing of repeating forms, like finger joints. I also implemented features to allow user to type dimensions while drawing:




Prototype Learnings


  • It is extremely important to visually communicate what parts of the polyline will move when edits are made.
  • Angles are confusing to most users, especially when they are larger than 90°. It was important to visually display the angle being referenced in the parameter panel.
  • An ideal version of a polyline tool should allow the user to lock set lengths, either manually, or implicitly when a length is typed in. This was however out of scope for the first version of this feature. 


Spec-Work & Sweating Details


There was a rather large figma file to help spec the many intricate behaviors and styles for Draw, and while I can’t share the whole thing here, there’s a few parts I’d like to call out as they help show how I like to communicate information visually.

A lot of thought and attention to detail went into creating selection rules for polyline shapes so that the shapes and their parts could be intuitively interacted with. I quickly created this diagram to communicate overall selection order of shapes, segments, and points to engineers:


This order means that a user can easily select small shapes or small parts of shapes like points, just by moving their cursor over it. The detail didn’t end there though!

If a user is zoomed-out enough that their shape is very small, the higher-priority touch targets for points would overwhelm their ability to select an entire shape, which they are more likely to want at that zoom level. So, we needed to set up rules to ignore those touch targets depending on zoom level - but also depending on the size of the shape. I created a quick grasshopper definition to help me find a logical test for this exception, for a variety of different shapes and testing different zoom levels.

here’s a little sped-up snippet of the video I made to include in the ticket explaining desired behavior: