
Where to start coding up a drawing app? - DoreenMichele
https://doreenlearnstocode.blogspot.com/2019/12/where-to-start-coding-up-drawing-app.html
======
yonilevy
Coincidently I just started working on a drawing app, specifically an iPad app
with figure drawing as the main use case. If you could share more details on
the kind of drawing you'd like to allow it'd be easier to help. In general, as
others said, there's a big difference between vector and raster based drawing
apps. In vector drawings, you need to capture the mouse/pen/touch input and
fit the points to a bezier curve (google "An algorithm for automatically
fitting digitized curves"). Then you have a bunch of bezier-curve objects and
draw them to the screen, any 2D graphics library will support this. Raster
based drawings are more tricky, you usually paint with a brush, which is a
bitmap that gets blended to the existing drawing, possibly affected by the
input (pressure, angle, etc.). Here your focus is on performing graphics
operations efficiently, as there are many of them per second, and they should
appear to occur in real-time. A GPU is very helpful to this kind of drawing.

Another big aspect of this sort of app is undo/redo support. Again it's gonna
be different between vector and raster, but I find that in any undo-supporting
app, figuring out how the undo mechanism will work can guide the rest of the
software design quite effectively, so give that a thought.

If you're willing to share more details here I could probably help more
concretely.

~~~
DoreenMichele
In a nutshell, I want to be able to hand draw on top of existing (pre-
installed) images and I want a fill tool that will add textures, patterns or
even bits from a photo in addition to plain color.

I would like it to have a tool set similar to Microsoft Paint. I'm very
comfortable with Microsoft Paint and have used it to make hydrology maps for
college classes. Sketchbook kind of has too many tools while (so far) failing
to actually do what I want.

Maybe I will figure out how to do this in an existing program, but it looks
like if I can, it would involve brute forcing it. I want something more
convenient that gets results of a certain quality level without me having to
treat every illustration like a masterpiece intended for a fine art gallery.

I have some art skills, but I'm not super talented. With the right tools, I
can create quality illustrations and graphics, but freehanding everything is
an excessive burden and an obstacle to productivity.

------
satori99
> It would be nice if apparently misogynistic assholes on HN gave half as much
> attention to an actual coding question from me as they do to BS excuses to
> behave shittily:

[https://twitter.com/doreen_michele/status/120130250640542105...](https://twitter.com/doreen_michele/status/1201302506405421056)

What is the basis for this accusation?

I read her original Ask HN thread and there was precisely zero snark or
anything even remotely approaching misogyny.

[https://news.ycombinator.com/item?id=21677535](https://news.ycombinator.com/item?id=21677535)

~~~
DoreenMichele
There are two links in that tweet, one to my question that got largely ignored
and _got a single reply_. The other link is to a short comment by me that was
downvoted to the negatives, collapsed by the mods and had _sixteen replies_
under it the last time I looked.

I've been here over a decade. I appear to be the only woman to have ever spent
time on the leader board, yet this ratio of negative to positive attention
remains an intractable issue.

Here is a guy with less than 1500 karma who has been on HN a similar amount of
time as me who has had zero problem using it to network and make money:

[https://news.ycombinator.com/item?id=21421327](https://news.ycombinator.com/item?id=21421327)

Here is one of my many comments complaining about how poor I am and how HN
doesn't work that way for me:

[https://news.ycombinator.com/item?id=21541855](https://news.ycombinator.com/item?id=21541855)

When I tell a guy he can discuss that with me further via email, I get shitty
inquiries into basically "can we hook up, honey?" while their supposed
important area of concern that I am knowledgeable about doesn't get mentioned
at all. One of the few men on HN who was willing to exchange emails with me
spent months pretending to be "friends" while intentionally not mentioning
that he was ridiculously younger than me and married, which I learned when he
finally decided to dump on me about how his marriage was in trouble, he was
afraid he was facing a divorce and he needed a shoulder to cry on.*

I'm quite open about being desperately poor and wanting to find some way to
support myself and my adult special-needs sons adequately and I occasionally
get a few bucks of charity kicked my way by people who have a smidgen of
compassion, but I mostly can't get men here to talk to me in a substantive way
about topics that would have some hope of helping me resolve my problems.

Instead, I get lots of people willing to argue with me, tell me I'm wrong and
stupid and so forth or men letting me know that although they can't be arsed
to care one whit about my dire poverty they would nonetheless like to hit that
and are absolutely sure that because a woman spoke to them, this is clearly a
hook up opportunity.

After more than a decade of that pattern repeating over and over ad nauseum no
matter what I do, including nearly six years of that spent homeless, I'm
rather frustrated. I'm quite fed up with being poor and unable to get my
questions answered while everyone acts like I'm just a whiner who should get a
real job. Meanwhile, there are no shortage of _men_ using HN to figure out how
to make an adequate income online.

I'm not apologizing for being extremely frustrated and venting on Twitter. I
added it to the bottom of the post because there is a long history of people
on HN digging up some kind of "dirt" on me to sling mud and act like me
getting frustrated with this extremely maddening situation is evidence that
shitty treatment of me is completely justified.

Misogyny is perhaps not the best word. I don't think we have a good word for
the phenomenon in question.

But after more than a decade of enduring this nonsense, I'm increasingly
sympathetic to man-hating feminazi types because regardless of the relatively
benign motives behind most of it, the impact on my life is overwhelmingly
negative and there comes a point past which you can't reasonably claim that no
one here had any idea that this was such a big problem for me.

Thank you to those people who engaged with my actual question instead of
focusing on drama.

* (This is very, very slowly changing. In recent weeks, there are two men met through HN willing to exchange emails with me about housing issues.)

~~~
satori99
I suppose I have not really noticed this specific type of behavior here.

My interest in HN comes mostly from the technical and historical articles that
get posted, and the often illuminating discussion threads, rather than the
entrepreneurial or networking angle -- I tend to skip the business related
stuff and I have never engaged with other HN'ers beyond replying to their
posts (like this).

Thanks for replying. I understand better now.

~~~
DoreenMichele
For various reasons, it's going to be difficult to notice if you aren't on the
receiving end of it. The vast majority of it is not intentionally malicious
behavior, which is why words like _misogyny_ and _sexism_ are actively
problematic in trying to address the systemic issues that get in the way of so
many women.

But I honestly don't know what else to call it. My experience has been that
getting too creative in an effort to distance myself from baggage associated
with standard language for a particular problem space often ends up failing to
actually communicate at all.

Thank you for posting a good faith question about the matter and following up
in good faith.

------
neogodless
[http://wireframe.talltree.us/](http://wireframe.talltree.us/)

This will almost certainly not help you. But maybe it will? It's a "drawing
app" written in JavaScript over a decade ago. It does a lot of things wrong
and is terrible. But it's also good enough that thousands of people have used
it. (Well it's free and it's on the internet and it's been around for
thousands and thousands of days.)

If there's any good, it did some mouse-tracking/behavior stuff that you might
use, but you'd almost certainly be better off with modern canvas code. I wrote
the above and the only library I used was a ~50 line AJAX library, because
AJAX was new and shiny at the time. I don't recommend using that library. Then
again, all of this 13+ year old code actually still works in modern browsers,
so it's got that going for it.

To sum up...

Provide drawing tool selections and options

Track the user inputs and store the changes they make to the drawings

Figure out all the really hard stuff such as math!

I apologize for how unhelpful this probably is, but if you're into tearing
apart someone's embarrassing source code, this will be a real treat!

EDIT: Thought so - I once made a super-basic "Paint-like" drawing page in
JavaScript - source is easily viewed.
[http://www.talltree.us/projects/shapes/drawing.asp](http://www.talltree.us/projects/shapes/drawing.asp)

Would need a lot of work, i.e. a usable brush and a million other things.

~~~
DoreenMichele
Thanks. I'll look at it.

------
ncmncm
In Alice, they say begin at the beginning, go on until you get to the end, and
then stop.

Getting to the end seems to be hardest, followed by stopping.

Javascript is a sensible choice, provided you can keep away from the sharp,
jagged bits of the language.

For a completely new program that doesn't need to slot into somebody else's
web site, Svelte is supposed to be the simplest, cleanest framework; people
like to use a framework, for Javascript apps.

The best way to learn Javascript is to study the Javascript code downloaded
from/as-implementation-of online apps you admire. Given the right license, you
might even be able to alter that code to be exactly what you want. Or, that
could be a first prototype, before you set off in a different direction.

Good luck, learning by doing is invigorating. I have seen very excellent
programmers come up that way, with better instincts than computer-science
graduates get.

The only thing few develop that way is a habit of measuring to help make
informed choices. You should be accumulating what amounts to lab equipment you
build yourself as you discover things to measure and ways to do each.

------
animal531
You need to first figure out the core of how your app will be different from
others (but also what other more usual features you'll need to include to make
it usable).

For example, I'm working on a micro voxel game, but existing tools lean more
towards artist needs, such as creating and colouring static voxel data sets
(which can then be rendered etc). So while working on the game I'm also making
an editor that will have more advanced features such as different types of
animation, dynamic voxel scaling, support for larger scenes, lighting&shaders
etc.

So after figuring out what your app will do you'll need to figure out
where/how it'll be used.

Again, I'm coding in Unity, so I'm making the editor also run as a Unity app.
You probably need to decide between online/offline, then figuring out a
framework that will allow you to create your tool in. While figuring that out
you also need to investigate how you'll eventually publish it etc.

------
anotheryou
I'm no expert in this, but I think step 1 would be deciding between vectors or
pixels. For this it would be important what the use-case is.

Vectors are cooler, but you'll need more magic for performance I bet.

With that decision done maybe just throw together a small iterative prototype
to try things?: draw a straight line, draw it with the cursor/mouse/touch,
draw a spline, draw free-hand. Layers, saving, blending, brushes....

------
monssoen
If you're going the Javascript way, you could have a look at how Wick editor
was built. It's a Flash like animation editor whith simple drawing tools and
is open source.

[https://github.com/Wicklets/wick-editor](https://github.com/Wicklets/wick-
editor)

------
lmilcin
That is excellent question.

There are two competing schools, top down and bottom up design.

For projects that I don't have clear picture where they will take me I prefer
bottom up design where I initially focus on small parts if my project that I
know I will need anyway and only in later start linking them together.

~~~
DoreenMichele
I'm familiar with the concept of a Design Doc. I've been playing with existing
apps and seeing how close they can get to what I want to do and making notes
about what I'm trying to achieve in light of those experiments.

------
anotheryou
I'm no expert in this, but I think step 1 would be deciding between vectors or
pixels. For this it would be important what the use-case is.

Vectors are cooler, but you'll need more magic for performance I bet.

~~~
anotheryou
-_- double post, sorry. pls delete ^

