Hacker News new | ask | show | jobs
Show HN: Scratchwork – a tool for drawing technical equations and diagrams (scratchworktool.com)
40 points by jstogin 3236 days ago
4 comments

Hi everyone, I’m John from Scratchwork (scratchworktool.com). This is a project I started as a math PhD student, because I was frustrated by how difficult it is to share ideas (mainly equations and diagrams) with other people on a computer. I designed Scratchwork to make it easy to draw complicated ideas by hand. For example, you can use your webcam to scan your drawings from a sheet of paper and they will be extracted and added as digital objects on the virtual board. These drawings can then individually be selected and moved around, deleted, etc. We’re also working on tablet apps, starting with the Samsung Galaxy Tab A with S pen, a relatively affordable tablet with an inductive stylus. As with basically all whiteboard apps, multiple people can work at the same time and see each others’ changes in real time. There is support for embedded video calls, which is admittedly somewhat buggy at the moment.

As the demo video illustrates, we have plans to support recognition of math expressions, allowing you to calculate by simply selecting some of your drawings and then applying operations such as simplify, differentiate, integrate, etc. The current implementation is not available publicly yet, and this is not our highest priority at the moment, but the eventual goal is to make it very easy to do calculations without needing to type equations.

This project is still a work in progress, but I would love to hear your thoughts and suggestions. Definitely sign up for our beta program. Also, please be aware that we are not permanently storing data yet, and many features are only partially implemented. Finally, we’re looking to expand our development team, so if you like this project and are looking for something new to work on, contact us at contact@scratchworktool.com.

Enjoy!

Hi John,

Any plans of making embeddable systems for using on website?

I am building an educational website that would benefit from this tool.

This is definitely something we hope to do. Since we're still getting started, it's a matter of prioritization (not if, but when). We would love to hear more from you about your needs and that could help us expedite the feature. Could you please email us at contact@scratchworktool.com?

Along similar lines, we've been trying to plan an API for developers to use with our product. I'd love to hear if anyone has ideas.

Hey John, this is neat! Speaking to grad students at Columbia in both the math and physics department, I could see something like this really solving a problem. What led to you making this/what makes it different from every other whiteboard app on the web?
Thanks! I started making this after I bought a Macbook Air to replace my old Lenovo tablet PC. I really missed being able to draw precisely on a computer (which was possible with the tablet PC) and standard mouse input just doesn't do it for me.

Compared to other whiteboard apps, we're really focusing on alternatives to drawing with a mouse. My favorite feature (and possibly our most distinguishing feature) is the webcam scanner. It makes it really easy to scan a sheet of scratchwork and then rearrange terms and delete mistakes on the computer. Plus, it doesn't take a long time to draw the expressions, because you can do that with just pen and paper.

Building a drawing tool in the browser is complex, when one has to begin to calculate various stuff(do bounding boxes intersect, perform a affine transformation).

Could you share some insights?

Do you use an external math library like math.js(which seems to be very hewavyweight)? Do you have a model with objects and other objects/functions that draw to the canvas, or draw the objects themself on the canvas? When the user moves a object, do you update the model immediately, or only when the move has ended?

I definitely agree that this kind of tool is complex to build. We have our own model, which I have developed over a few earlier iterations of what we have available now, and we use it to draw all the objects to the canvas.

Generally speaking, there are two types of changes that we deal with. There are the changes that are very important, which don't happen very often, and then there are changes that are not very important but happen quickly. For example, when a user drags an object, each movement of the mouse is of the second type, while the final release is of the first type.

We make a distinction between what a user sees and the underlying "document" that a user is editing. When a user moves an object, we don't update the document until the user releases the move. However, we do send data to other devices so that anyone who is watching still sees the object being moved.

Looks great! I'm interested to know what tech stack you used for the video calling feature?
The video calling feature is based on WebRTC. (We also use WebRTC for streaming the data--so you can see other people draw in real-time, with Socket.IO as a fallback.)
I clicked "Request Invitation" and nothing happened...
Thanks for letting us know! At first glance, it seems to be an issue related to Heroku. We just tested the request invitation feature and it is working again.