Hacker News new | past | comments | ask | show | jobs | submit login
Multiuser Sketchpad (mrdoob.com)
57 points by kordless on July 7, 2010 | hide | past | favorite | 29 comments




You spelled YH! wrong.


some asshole keeps scribbling over my penis drawings.


That's not scribbling...


"... The first version of my code was pretty much brute force, every user was sending their X,Y position every time they moved their mouse. Yes, that's 'a lot' of data per second. There has been 50gb of data transfered in just 4 days :P ..."

also read the related blog post ~ http://mrdoob.com/blog/post/701


He doesn't mention what he did to get past this issue other then link to top.

Any ideas on how?


Well, I keep doing things as soon as I came up with them... So far:

1. Collecting changes and sending them every 75-100 ms. Instead of as soon as the occur.

2. Deltas: If the mouseX is 800 and in the next frame is 801, Just send 800,1 and reconstruct the data on the peers side (800,1,-1,2,-3).

3. I the value is 0, don't write it. "1,,1"

These are client side. Now I need to take a look at the server code..


http://colorillo.com/ is good too.


I made one of these last week to play with nodejs and WebSockets.

My heavily-unoptimized wire protocol used uncompressed JSON objects sent at each mousemove event on the canvas while drawing, which means it's great fun on the LAN, but would choke any affordable Internet link.

It appears that this one solves the problem by limiting the rate at which you can draw—drag the mouse too fast, and it lifts the pencil.


That's not correct. The drag too fast tweak is there to discourage people scribbling all over the place.

The actual "fix" for your problem was to collect commands (mouseMoves) and send them every 75ms instead of sending a command every mouse move. There is also some simple delta stuff to save on BW


In my case, it's the throughput that was a problem; there was practically zero latency or cost of sending a message using node and WebSockets.

I was considering doing some sort of curve-fitting to (lossily) compress the drawing commands. Sending a couple points to describe a quadratic or Bézier curve is a lot nicer than hundreds of points to describe tiny line segments.

And, as luck would have it, <canvas> draws both natively! :)


What fascinates me is that it took about a minute to show a very striking resemblance to the surface of school tables.


Mixing it up... doing it upside down :D http://the-web-has-gone-mad.com/mrdoob.com/projects/multiuse...


Revenue model: You should make it so that after a certain number of people vote on its completeness, a print can be made and the board gets cleared for the next work of art.


I don't think many people will pay for a canvas full of penises (which is what it's been looking like both times I've looked at it, i.e. yesterday and today).


I made one of these 10 years ago (Java Applet). Great fun, but I have no idea how to make it into much more than a fun toy.


Why does it need to be more than a fun toy?


It doesn't need to be, but it's nice figuring out how you can turn 'fun toy' into 'monetizable product'.


It's actually pretty neat. Enjoying it for 15 minutes. Now if only there were a tad less penis and vandalism guys awake...


There weren't many penises, until it got posted to Hacker News... Some iterations from the past days: http://twitpic.com/photos/mrdoob


Feels pretty responsive. I like it. :)

Brushes, private rooms, etc? Probably still wouldn't be too useful, but a great proof-of-concept.


I'm guessing not everyone is using a mouse, what are the more precise people using?


Drawing tablets, I imagine.


Is the code up anywhere? Would be interesting to look through and hack on.


Where can I get some details on the tech behind this?


Wrote a bit about that here: http://mrdoob.com/blog/post/701


You should definitely build something around this.


finally, someone made a penis drawing app


Can I have an eraser please?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: