
Show HN: Scratchwork – a tool for drawing technical equations and diagrams - jstogin
http://scratchworktool.com
======
jstogin
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!

~~~
ai_ia
Hi John,

Any plans of making embeddable systems for using on website?

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

~~~
jstogin
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.

------
justAQuestion3
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?

~~~
jstogin
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.

------
osrec
Looks great! I'm interested to know what tech stack you used for the video
calling feature?

~~~
jstogin
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.)

------
blt
I clicked "Request Invitation" and nothing happened...

~~~
jstogin
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.

