Release My Rebirth Competition concept: Whitespace


whynodd

Member
Joined
Sep 20, 2008
Messages
262
Hello,


So now that a competition is open, I want to present my idea here. Maybe some of you have interesting ideas that I may take into account.


My entry will be named "Whitespace". It is kind of a drawing program, but only black and white and with endless space to draw.


Really really simple: Touchscreen to draw, nubs or dpad to scroll around, X+Y to zoom (from 8:1 to 1:8 or so), 2 colors, a thin+fat stroke and an eraser.


Whitespace is a collaborative "painting" tool. Everyone using it draws on the same huge surface that is synchronized instantly with a server. Being online is required to draw.


In short: A huge (edit: endless) public toilet wall for us pandora users ;)


Further nice to have's:


- New content since last program execution in green or red


- "Bookmarks"


- More painting tools (rectangles, circles, text...)


- Links (from one place on the wall to another)


- Possibility to buy exclusive area on the wall that only you can modify. To write a personal blog, advertise or something. (By the way: The absolute center of the wall will be mine! ;) )


- Pasting jpg's


What do you think of such a thing?


Edit: I have no server to put that thing on...
 
Last edited by a moderator:
If it is indeed endless, then you might need to think about quick ways to get around. E.g. a coordinate system, named regions, etc... Your bookmarks or links idea could play a role in that.


You will need some form of moderation to avoid offensive content (Dickwad theory).


It's an interesting idea, though I am not a toilet wall artist myself.
 
As the creator of flockdraw.com (and someone who has thought about this exact kind of application), I can tell you it would be pretty hard to scale + sync.
 
Last edited by a moderator:
Hello,
(By the way: The absolute center of the wall will be mine! ;) )
wouldn't the center be constantly changing?


Cool idea tho, reminds of a game we used to play in school where one person would draw something and the next add something and so on. Ending result was always funny.


Moderating sounds like it would get tough quick, maybe some handwriting recognition stuff to weed out the offensive? You'd definitely need a way to boot and ban people. A screen shot function is a must (as png). Gotta have a way to show off to non-members. Also each doodle should be tagged with who contributed. Good luck, I look forward to this one!
 
Here's an idea: include a function where drawing a rectangle creates a separate "room" within that rectangle that is still publicly visible but may require an invitation for people to draw into, and give people from that area the ability to drawn votes and assign points to each other using a democratic system. This way, people can play games and possibly do other things as well, and it may also mitigate the problems related to missing moderation.


A further extension would be to allow close-by areas to "fight" each other in some way (playing cross-area Tic-tac-toe, for instance), eventually claiming some kinds of points or other benefits by winning against the other area, and possibly claiming, shrinking and/or erasing the other area's space as well.

(...) endless space to draw.


[...]


(By the way: The absolute center of the wall will be mine! ;) )
Wait a minute... ;)
 
Last edited by a moderator:
As the creator of flockdraw.com (and someone who has thought about this exact kind of application), I can tell you it would be pretty hard to scale.
flockdraw, interesting ;) . Do you mean with scale the size of the drawing area or the number of simultaneous users?

If it is indeed endless, then you might need to think about quick ways to get around. E.g. a coordinate system, named regions, etc... Your bookmarks or links idea could play a role in that.


You will need some form of moderation to avoid offensive content (Dickwad theory).


It's an interesting idea, though I am not a toilet wall artist myself.

To get around, I think clickable links that lead to positions (directly on the wall) and bookmarks (client side) should work well. Maybe some users gather interesting spots and write/draw a kind of index somewhere on the surface..


Offensive content, maybe. If you find something offensive, simply erase it ;) . A few percent of offensive users are tolerable.


Its the idea, really wild. Wiki on steroids without the limits of text input. As a blog, for news, just to draw, write short notes, scribble ideas, collaborate, chat with others, play chess (hey, new idea..), whatever ;)


If the people like it, it could be fun.


edit: This is my first client-server application. I have to see how many functions i am able to implement. I am a simplicist, a thin gui is always better than a cramped one that no one understands. The simplest ideas often win (Minecraft...)
 
Last edited by a moderator:
Perhaps instead of infinite scaling, you could have a finite size and a time limit (one day / 7 days / one month) after which the entire space is archived as PNG (or a grid of smaller PNGs), then wiped clean for a fresh start. Archives could be made available via the app menu.


You could have separate walls, each working to a different time limit. It might be interesting to see what a 1 week wall produces compared to a 1 hour wall.


You could work some novelty into the way it counts down and clears, too. Building a bit of tension could have an interesting effect on the artwork.
 
If you find something offensive, simply erase it ;) . A few percent of offensive users are tolerable.
if this mechanic exists, those few percent of users will periodically erase large amounts of legitimate content
 
I can already tell that that moz kid is gonna draw penises all over the place, you might want to ban him before he even gets started!
 
To me it seems like the biggest problem will be having so many people editing at the same time... concurrent access for perhaps hundreds of people is a headache... locking issues and network capacity, as well as memory for such a large canvas.


You've essentially got a single mutex shared between many people over a network (the internet) that could vary wildly in performance. You need a way of splitting this up, maybe as other people have suggested having a single area locked to you and a few other users for a period of time sharing a single lock? Or a system where people have to commit changes? Or something else?


And then there's the slowdown with loading a potentially infinite size image, and the memory issue. You probably want to split the image into blocks somehow?


Or maybe I misunderstood something?
 
Maybe make the canvas a globe instead of a big white space? Don't define a "center" for all, instead, each person having to log in and have their own center
 
To me it seems like the biggest problem will be having so many people editing at the same time... concurrent access for perhaps hundreds of people is a headache... locking issues and network capacity, as well as memory for such a large canvas.


You've essentially got a single mutex shared between many people over a network (the internet) that could vary wildly in performance. You need a way of splitting this up, maybe as other people have suggested having a single area locked to you and a few other users for a period of time sharing a single lock? Or a system where people have to commit changes? Or something else?


And then there's the slowdown with loading a potentially infinite size image, and the memory issue. You probably want to split the image into blocks somehow?


Or maybe I misunderstood something?
I am figuring out right now a concept for this. Server push or client pull... Wanted to split into 64x64-tiles that are synchronized with the server. Because everything is 1bit black&white, compression is effective. I planned to use lzw for this. Not used (white) tiles do not need to be synchronized or saved. If the performance is sufficient, maybe I will allow tiles with 8bit grayscale or colors. Server caches them in RAM and saves them on disk.


Btw: I can live with synchronization issues, e.g. 2 users draw the same tile at the same time and one or two small strokes are lost in nirvana, who cares? ;)

Maybe make the canvas a globe instead of a big white space? Don't define a "center" for all, instead, each person having to log in and have their own center
Hmm, wanted to use the absolute center as a starting point for all. Otherwise the program starts where you left it. A globe? Hmm, eventually a torus. I planned to use long ints, that would make a 4.294.967.295x4.294.967.295-Image. Big enough to never reach the edge.

I like the idea..


Also I think the suggestion of the wall being cleared once a week is a good idea too.
Clearing: I can say more about it once a beta (or gamma...) is running.
 
You could make it work like a "ticker-tape"... It's always 480px high, but content is constantly scrolled off to the left, adding new space on the right. You can then archive off data over say, 20 pages to the left.


The best way I could describe it is stand a toilet roll on it's side and "pin it", then grab the loose sheet and start pulling to the left, tearing off really old sheets :)


This will mean you only have to cater for a 800x480 locking workspace (+memory+sync) at one time
 
Last edited by a moderator:
Perhaps have multiple 'feeds' (rolls of toilet paper) So a user can view existing feeds or create a new one.


They would start at the righthandmost end of the feed and scroll left to see older content, or scroll right for fresh canvas.
 
Clearing: I can say more about it once a beta (or gamma...) is running.

Gamma? Don't you mean "alpha"? An alpha is incomplete, and a beta is complete but maybe with problems, so what would a gamma be?

gamma is usually the finished product...


or just a way to say the product is never finished or... whatever you want really... just 1 more than beta :p
 
Clearing: I can say more about it once a beta (or gamma...) is running.

Gamma? Don't you mean "alpha"? An alpha is incomplete, and a beta is complete but maybe with problems, so what would a gamma be?
oh, i meant prepre-alpha.


At the moment, i'm figuring out sockets and an appropriate "protocol" or message format for the server. 5 minutes ago, I was able to send a 64x64 grayscale tile to a dummy server that puts it out to console. Tiny steps... Next things are threading things on the Whitespace client, caching tiles, sending and receiving them.


I thought it would be great to see in realtime, where other users viewports are on the canvas. So this would be a nice to have on my list.
 
<offtopic>


I've seen this term "pre-pre-alpha" before, but can't really put my finger on what it means. In my understanding the terminology is roughly (varies between people and projects, but the general median case):

  • Pre-alpha: Only parts of the main functionality are ready. The program is not testable as a whole.
  • Alpha: The program can be tested, but is not feature-complete as designed.
  • Beta: All designed features have been implemented, ready for the final bug hunt.
  • Release: All designed features are implemented and tested. No known critical bugs.


Of course this is all semantics and most people probably assume you mean "early pre-alpha", but I'm not most people :D


</offtopic>


Anyway, I like the idea here. I do consider it to be a vandalism-magnet if it gets popular though :p
 
Back
Top