
Show HN: Swap-a-Doodle, a cross-platform social drawing app - darshan
https://www.swapadoodle.com
======
darshan
Hi, all. OP / owner / founder here.

I’m finally launching a product that’s taken me years longer than I’d
anticipated to complete. It’s a much bigger project than anything I’ve done
before. My first app was the first battery indicator on Android, back in 2009,
which was very successful by my standards (I didn’t have a college degree at
the time and made way more money from it than I’d ever made from a job.) I
also have a free instrument tuner on the Play Store.

Swap-a-Doodle aims much higher, and was quite an undertaking for me. It’s a
cross-platform app (Android, iOS, and the web) for social drawing. I knew
nothing about computer graphics when I started out, and just a bit about web
programming. I learned so much along the way. I’m sure I’ll learn a lot more
as the app grows.

The front end is written in Dart. The back end is written in Go and runs on
App Engine, with Compute Engine for the websocket servers for live drawing
(sharing a canvas with a friend to draw together at the same time). The
Android and iOS apps are fairly small wrappers around the web app.

Feel free to ask questions. I’m of course open to feedback, or I wouldn’t post
here — but I do feel somewhat vulnerable in this surreal moment of finally
launching, so please keep that in mind and try to be kind if you do have
criticism, and maybe frame it as “something that could be even better,” if
that’s not too much of an ask. Thanks!

~~~
cutler
Why re-invent the wheel? If you're going to use Dart on the front-end surely
Flutter is the obvious choice?

~~~
darshan
When I first started making the app, Dart existed, but Flutter didn't. Then
Flutter existed, but didn't support the web. I thought that was still true,
but I just checked, and Flutter for web
[[https://flutter.dev/web](https://flutter.dev/web)] _does_ now exist, as a
technical preview ("When trying Flutter for web, you can expect to experience
crashes and missing features.")

When Flutter came out, I looked into it, wondering if it might be worth
switching my approach (I figured most of the Dart code would probably be able
to stay the same). There were other deal breakers at the time, but I don't
recall them.

Maybe once Flutter for web is production ready, it would make a compelling
alternative, but for now it isn't an option. I'm not sure if would have made
things harder or easier. But I'll be curious to check it out.

------
darshan
Here's an example of something really adorable made collaboratively by two
people. The first person sent the first part to the second person, who used
the Doodle-on-Doodle feature to add to it and make an even cuter story out of
it.

[https://www.swapadoodle.com/d/5288420972691456](https://www.swapadoodle.com/d/5288420972691456)

I think 9× is the best speed to watch it at. (I'm still thinking of adding a
way for the author of a Doodle to change its default speed.)

------
amatecha
Dude that's awesome. Congrats! I like its simplicity and minimal interface,
with no shenanigans. Just a plain ol' drawing app that lets you share. Great
stuff :)

~~~
darshan
Thanks so much! I was definitely inspired by Go's (the language I use on the
back end) careful balance of well-honed simplicity. There was a lot more work
than one might think to keep things so simple!

------
Kuzutsukake
This is awesome. Fun and easy to pick up. Swapped-a-doodle with my
technologically inept mom without a cinch. I was surprised how quickly she
responded :)

~~~
darshan
Thanks so much!

------
McDev
This is cool and really easy to use! I love how it captures mistakes you make
(the undo actions) when sharing it.

~~~
darshan
Thanks! Yeah, I occasionally considered _not_ including undos and redos, but
there's so much positive value that easily outweighs the occasional negatives.
Just a couple of the things I love about including them:

1) Much of the general idea is a sense of connection and intimacy -- it's not
just the final product that you're sharing, but the process. When you see the
mistakes, or the attempts to get something just right, it's a moment of
connecting with the sender's experience while making it.

2) You can make emotionally evocative doodles by removing elements, so they're
only present fleetingly but not present in the final image. (Examples of this
are by friends I haven't thought to ask permission to share. But think:
drawing a small plant, then undoing and drawing a bigger one, for several
iterations, for example. You can sometimes do that by "erasing" the part you
want to remove by drawing the background color, but if you want to remove
something that's on top of something else, undoing is so much easier.)

------
mrcoles
Fun! The basic feature feels like a cross-platform/device way of doing the iOS
Messages drawing feature.

~~~
darshan
Thanks! I bought two iOS devices to develop on, but I haven't ever used the
Messages app. Does it animate the drawing for the recipient, or just show the
final image?

