Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

forced_anon chat

Name: Anonymous 2007-12-04 23:50

Imagine this: you load up a 4chan chat page, and you're connected to another user to chat one on one. Completely at random, with no traces of identity whatsoever. That's it. There could be a button to get a new person if you really don't like who you're talking to or you've seen them before, or you could just hit F5. In the true spirit of Anonymous, you could talk about anything in complete freedom.

I think that could be pretty awesome (and also pretty fail, but such is the way of all things chan), and it's an idea that I've had in the back of my mind for a while. I don't have the wherewithal to make it happen, however, so by /img/'s recommendation I'm here pitching it to /prog/ in the hope that someone will get inspired and make this happen. I'd really like to see it made real. I have to imagine that it would be very simple to make, although finding a good host and getting people to use it is another matter.

Anyone's interest piqued?

Name: Anonymous 2007-12-05 0:12

Well, it would be kinda of cool...
Except you could be connected with a total troll.

Name: Anonymous 2007-12-05 0:15

>>2
That's what F5 is for. Besides, that's just the risk that comes with the territory.

Name: Anonymous 2007-12-05 0:44

I'm a troll.

Name: Anonymous 2007-12-05 1:01

The OP is a troll.

Name: Anonymous 2007-12-05 1:08

NO U

Name: Anonymous 2007-12-05 1:09

I am not a troll.

Name: 7 2007-12-05 1:41

I am not a compulsive liar.

Name: Plopper 2007-12-05 1:41

I dont fucking understand what you want... can you explain better and clearer?

thanks, troll!

Name: Anonymous 2007-12-05 1:42

>>9
Read SICP.

Name: Plopper 2007-12-05 1:44

Define SICP.

Name: Anonymous 2007-12-05 1:54

>>11
SICP == IP(CP)

Name: Anonymous 2007-12-05 4:00

The Structure of Programs Interptreting Computers.

Name: Anonymous 2007-12-05 5:16

>>9
Thought I made it pretty simple. I want a website that displays a very simple chat client, which pairs up any 2 people which connect to the server to use that chat interface to talk with each other. Chosen completely at random, one on one, with absolutely no names or traces of identity. Just two ships passing in the night.

Name: Anonymous 2007-12-05 5:24

>>14
I want
Then read SICP and get to work.

Name: Anonymous 2007-12-05 6:12

DO WANT

Name: Anonymous 2007-12-05 6:14

i wouldn't make this webbased, let's just use the irc-protocol and make our own client suited for our needs, no reason to reinvent the wheel, also this will give us a much better client

it's very simple to make it work on all posix systems, i have no winapi experience though so i dunno lol

Name: Anonymous 2007-12-05 6:16

>>17
shut up

Name: Anonymous 2007-12-05 6:16

though it would never be 100% anon, because the client would have to keep track of clients in some way, they can't all be anon, so the unique id, whatever it is, would not be hard to extract

i guess that's why you said webbased, that would solve it :(

i guess it would be possible to modify an ircd, or perhaps even a jabber server, i've never looked at jabber but it's a possibility i'm throwing out there

Name: Anonymous 2007-12-05 6:16

No one wants to chat one-on-one with Anonymous.

Name: Anonymous 2007-12-05 6:17

maybe if there's a certain threshold of people, it randomly puts a third person in an existing conversation.

Name: Anonymous 2007-12-05 6:18

omg. what about real time image chat. so you could dump images in the chat too

Name: Anonymous 2007-12-05 6:21

>>15
No. That's why I came to /prog/. I tried to learn Java and it was boring as fuck. I like to get my feet wet, which made PHP very appealing as I could learn as I went, but so far programming languages have proved to be too abstract to keep me interested. I mean the only reason I wanted to learn Java is to have access to a basic API, but there was too much stuff to learn to get to that one functional example. I honestly wouldn't have minded investing the time, but trying to absorb a language using the arbitrary kinds of examples they use just doesn't work for me. If you can't make it practical then I can't make myself sit down and learn it.

Name: Anonymous 2007-12-05 6:30

>>23
Stick to burger-flipping.

Name: Anonymous 2007-12-05 6:50

I;m going to write a bugger-flipping application. I'll have to make a USB spatula

Name: Anonymous 2007-12-05 7:28

>>1
LETS PROGRAM IT IN JAVA

Name: Anonymous 2007-12-05 8:23

>>26
Now you have 2 problems

Name: Anonymous 2007-12-05 11:53

>>27
Enterprise-grade problems.

Name: Anonymous 2007-12-05 13:21

>>23

You have a to be a Pervert to enjoy programming.
A BIG pervert.

Name: Anonymous 2007-12-05 13:23

>>29

Oh yeah baby, talk dirty to me

Name: Anonymous 2007-12-05 15:41

>>30
puts( "GIVE UNTO ME YOUR MIGHTY COCK FRODO\n" );

Name: Anonymous 2007-12-05 15:47

puts( "GIVE UNTO ME YOUR MIGHTY COCK FRODO\n" );
puts COCK FRODO\n"
puts \n

Name: Anonymous 2007-12-05 16:20

>>29
Actually, it's not that I don't enjoy it, I just don't think that it's taught well. Admittedly, it might not have helped that I was trying to learn it from the documentation. But I'm wasting my breath.

Name: Anonymous 2007-12-05 17:44

>>33
Not to sound like the smug Lispfag I am, but you might like
http://gigamonkeys.com/book/

Name: Anonymous 2007-12-05 17:57


                   <O
\\\                ( \
  \ \        ^.^.___X___
    \\______/_________|_)
    / /    \ \   
    \_\_    \ \

Name: Anonymous 2007-12-05 18:00

[aa]                   <O
\\\                ( \
  \ \        ^.^.___X___
    \\______/_________|_)
    / /    \ \  
    \_\_    \ [/aa]

Name: Anonymous 2007-12-05 18:28

>>34
I'm not from around here, so I'm not going to jump up your ass for recommending one language over another. That said, however, it's languages like C♯ and Java that I always seem to hear about as the 'wave(s) of the future.' Why Lisp over-- Actually, you know what? Nevermind. I don't even want to invite that flamewar. I'll just go read the no doubt scarcely-contained one on the respective Wikipedia articles.

Name: Anonymous 2007-12-05 18:38

>>37
Leaving aside all the reasons Lisp is better, I mostly just recommended it in this instance because Practical Common Lisp is a good book that might appeal to a person who prefers that sort of instruction, since within its pages are 12 practical applications (that you might actually want to use).

Name: Anonymous 2007-12-05 18:48

This should be quite easy to implement. Think IRC with no names whatsoever. The server listens on a port, and when you connect it either creates an empty channel and joins you to it, or joins you to another waiting user's channel.

I wrote a "chatpool" server before, which basically echos what's received from one connection to every other connection.

Name: Anonymous 2007-12-05 18:55

>>38
Fair enough. I'll give it a shot, then. What I really liked about PHP was that I was able to just sit down with the manual, read through the intro to get a handle on the syntax, and then start writing simple things and looking up the functions I needed to accomplish them. For instance, writing a script to tag and search a basic database of all my hentai pictures was how I learned PHP's MySQL functions (and a bit of SQL itself), and the task was as much to further my own understanding as it was to have the end product.

What I don't like, though, is when the author just methodically lays out each piece of the language, with a few trite examples to illustrate the concepts at the end of each chapter. It has a very non-organic feel to it, and I simply don't absorb it that way. I might be able to if I was really determined, but it doesn't strike me as worth it-- not when I know it can be done better.

Name: Anonymous 2007-12-05 19:05

>>1
That's a pretty amusing idea and easy enough to implement, too. You're wasting your time here, though, /prog/ never delivers anything, ever. I bet lots of people could hack something up in Python/Perl + Javascript real quick, post the code and let you handle the rest, like the actual CSS + HTML page layout. It's sad, really.

Only time I've seen anyone do something impressive for /prog/ was when one guy who was given random XOR encrypted files by the OP (who claimed they were Excel files) not only cracked them himself with only an hex editor and C programs he wrote himself, but also figured out what they really were. Everything else that /prog/ delivers is just 10 lines of Scheme or BBCode related programming jokes. And I'm not counting with the trolling and stupid memes you have to go through before you get meaningful replies either.

Name: Anonymous 2007-12-05 19:07

>>41
That's pretty impressive. I bet it was you, you suave bastard.

Name: Anonymous 2007-12-05 19:11

>>42
It was this thread:
http://dis.4chan.org/read/prog/1180036225

I'm not that guy, I'm not half of the expert programmer he is.

Name: Anonymous 2007-12-05 19:13

i bet it was you

Name: Anonymous 2007-12-05 19:31

>>41
Somehow, that doesn't surprise me. Well, I've never written anything intended to function like a server before, so I'm not entirely sure where to begin. You mention python and perl, neither of which I'm familiar with, but would PHP do the job? I really ought to figure out this whole AJAX thing, especially since I'm already reasonably familiar with javascript. I don't think that's going to be a problem, but what will be is my unfamiliarity with writing code that... needs each of its instances to be in some aware of each other.

If I had to cobble something together, I suppose I'd have a function that checked a text file on the server for a unique ID and either grabbed it if it was there and wiped the file, or set its own to be grabbed on next run. Then I'd have another file to act as a kind of message board to be checked by each instance of the script for messages addressed to its own ID (the first of which would be an indication to the instance whose ID was grabbed that it had been paired up). Using text files is probably ridiculous, and maybe the entire concept is too, but that ought to illustrate my understanding (or lack thereof). Can anyone point me in the right direction?

Name: Anonymous 2007-12-05 19:41

I think if I were to implement this I'd set it up so that anons telnetted into a server that would pair up two random anons for chatting. When they typed, the characters would be echoed to a shared buffer in real time (control codes filtered out, of course).

Name: Anonymous 2007-12-05 19:46

it's not so simple to do this, because you need to use asynchronous javascript and xml or something else besides plain javascript to chat in a webpage, since webpages... they're... you know... stateless.

Name: Anonymous 2007-12-05 20:04

>>46
I kind of want to learn Erlang and then do this. I've been looking for an excuse to learn Erlang.
I hate webdev though. Fuck that.

Name: !ErLaNGOC/g 2007-12-05 20:16

>>48
Erlang is awesome. Too bad I'm not proficient yet.
-module( server ).
-export( [ start/1, responder/1, listen/2, client/2, client_get_name/2 ] ).

start( Port )
    ->
    % Start up the responder so messages can get sent to it.
    PID_Responder = spawn( server, responder, [ [] ] ),
   
    % Make sure shit works
    PID_Responder ! { print_message, "Responder created!~n" },
   
    % Create the server socket and start the server
    case gen_tcp:listen( Port, [ list, { active, false }, { packet, line } ] ) of
        { ok, ServSock }
            ->
            { ok, Port } = inet:port( ServSock ),
            io:format( "Listening on port ~w.~n", [ Port ] ),
            listen( ServSock, PID_Responder );
        { error, Reason }
            ->
            { error, Reason }
    end.
   
listen( ServerSock, PID_Responder )
    ->
    % Grab the client attempting to connect
    case gen_tcp:accept( ServerSock ) of
        { ok, ClientSock }
            ->
            io:format( "Client connected!~n", [] ),
           
            % Send message to responder
            PID_Responder ! { new_client, ClientSock },
           
            % Continue listening.
            listen( ServerSock, PID_Responder );
           
        Other
            ->
            io:format( "gen_tcp:accept returned ~p. Quitting.~n", [ Other ] )
    end
    .
   
client( { ClientSock, ClientName }, PID_Responder )
    ->   
    % Just wait for something to happen.
    case gen_tcp:recv( ClientSock, 0 ) of
        { ok, RawMsg }    
            ->
            Msg = io_lib:format( "~s", [ RawMsg ] ),
            io:format( "~s sent message: ~s", [ ClientName, Msg ] ),
            PID_Responder ! {
                client_message,
                io_lib:format(
                    "<~s> ~s",
                    [ ClientName, Msg ]
                )
            },
            client( { ClientSock, ClientName }, PID_Responder );
        { error, closed }
            ->
            io:format( "~s disconnected.", [ ClientName ] ),
            PID_Responder ! { client_closed, { ClientSock, ClientName } }
    end
    .

client_get_name( ClientSock, PID_Responder )
    ->
    % Send the request.
    gen_tcp:send( ClientSock, "Enter username: " ),
   
    % Get it back.
    case gen_tcp:recv( ClientSock, 0 ) of
        { ok, ClientName }
            ->
            { _, StrippedClientName1, _ } =
                regexp:sub(
                    ClientName,
                    "^[ \t\r\n]*",
                    ""
                ),
           
            { _, StrippedClientName, _ } =
                regexp:sub(
                    StrippedClientName1,
                    "[ \t\r\n]*$",
                    ""
                ),
           
            PID_Responder ! { client_choose_name, { ClientSock, StrippedClientName } };
        { error, _ }
            ->
            io:format( "Unable to get client name.~n", [] ),
            io:format( "Client disconnected.~n", [] )
    end
    .

% This could be better implemented with a high-order fun + lists:foreach
send_to_all_clients( [ { ClientSock, _ } | Rest ], Msg )
    ->
    gen_tcp:send( ClientSock, Msg ),
    send_to_all_clients( Rest, Msg );
   
send_to_all_clients( [], _ )
    ->
    ok
    .

responder( ClientList )
    ->
    % Message handler
    receive
        { print_message, Message }
            ->
            % Just print the message...
            io:format( Message, [] ),
           
            % Loop
            responder( ClientList );
       
        { new_client, ClientSock }
            ->
            % Spawn a new thread for this client, attempt to get name
            spawn( server, client_get_name, [ ClientSock, self() ] ),
       
            % Loop
            responder( ClientList );
       
        { client_choose_name, { ClientSock, ClientName } }
            ->
            % Make sure the name isn't taken.
            case lists:keysearch( ClientName, 2, ClientList ) of
                false
                    ->
                    % Add the client into the list
                    NewClientList = [ { ClientSock, ClientName } | ClientList ],
           
                    % Send the join message to all users
                    send_to_all_clients(
                        NewClientList,
                        io_lib:format(
                            "~s has joined the chat.~n",
                            [ ClientName ]
                        )
                    ),
                   
                    % Set up the thread to listen for that client
                    spawn( server, client,
                        [ { ClientSock, ClientName }, self() ]
                    ),
                   
                    % Loop with new client list.
                    responder( NewClientList );
                   
                { value, _ }
                    ->
                    % Send them a message
                    gen_tcp:send( ClientSock,
                        io_lib:format(
                            "The name ~s is already taken.~n",
                            [ ClientName ]
                        )
                    ),
                   
                    % Request they choose another name
                    spawn( server, client_get_name, [ ClientSock, self() ] ),
           
                    % Loop with old client list.
                    responder( ClientList )
            end;
           
            % Already looped above.
       
        { client_message, Msg }
            ->
            % Message is preformatted.
           
            % Need to send the message to all clients.
            send_to_all_clients( ClientList, Msg ),
       
            % Loop
            responder( ClientList );
       
        { client_closed, { ClientSock, ClientName } }
            ->
            % Remove the entry from the list, if it exists.
            NewClientList = lists:keydelete( ClientSock, 1, ClientList ),
           
            % Send message to all clients about logoff.
            send_to_all_clients(
                NewClientList,
                io_lib:format( "~s has left the chat.~n", [ ClientName ] )
            ),
       
            % loop
            responder( NewClientList )
    end
    .

Name: Anonymous 2007-12-05 21:05

>>37
The problem with "wave(s) of the future" languages, is that they never are. And then five years down the road, they're just the "wave of fail that was ENTERPRISE GRADE five years ago". Languages like, lisp, C, etc... have been around oh... 30 years? And are still used.

Name: Anonymous 2007-12-05 23:55

ONE WORD. JAVA

Name: Anonymous 2007-12-06 3:56

>>49
Wow, awesome. Too bad that was actually the easiest part of it and (as usual with toy languages) your example is completely worthless in the real world.

Name: Anonymous 2007-12-06 4:31

>>52
haha o wow. The telecommunications industry relies on Erlang.

Name: Anonymous 2007-12-06 4:33

>>50
Languages like, lisp, C, etc... have been around oh... 30 years? And are still used.
Right. Only thing is, nobody uses LISP.

Name: Anonymous 2007-12-06 4:34

>>53
Hahahaha oh wow. Actually, the point still stands and one company isn't the telecommunications industry. Shows what you know, though.

Name: !ErLaNGOC/g 2007-12-06 4:40

>>55
Let's see your version of the same application in C. I'm willing to bet that it's a fuckload more convoluted than Erlang, and that's just the easiest part of the application. Thanks.

Name: >>56 2007-12-06 4:44

To add to this, let's see you perform runtime code-patching in anything but a "toy" language. Enjoy your measly uptimes measured in mere weeks, and your system-wide crashes when a single server fails while my language ensures that my application can stay running on my cluster with it's built-in process redundancy and error recovery systems.

Sorry if you're not used to thinking in such large-scale terms.

Name: Anonymous 2007-12-06 4:47

>>56
LOL @ comparing it to C

Is that all you got, unemployed toyfag?

>>57
Let's see you do something actually useful, you moron.

Name: Anonymous 2007-12-06 4:49

>>57
Why hello thar I am an Enterprise Programmer. I do not need to know how to design stable programs, my toy language does it automagically for me.
Fix'd, Visual Basic thinking spotted. GTFO my /prog/

Name: Anonymous 2007-12-06 5:01

>>41
That was me, thanks for the compliment.

Name: Anonymous 2007-12-06 5:07

Name: Anonymous 2007-12-06 6:14

>>61
Hilarious. And most of those 10 entries aren't even actual projects or products.

"IDEALX mentions Erlang along with Perl and Python in its Guide of Open Source Software. (...)"
Oh wow.

Name: Anonymous 2007-12-06 11:29

So, has anyone written the program yet?

Name: Anonymous 2007-12-06 11:43

>>63
Yep, I'm not sharing though, it's too much fun talking to myself.

Name: Anonymous 2007-12-06 11:46

>>63
Nobody's going to write your stupid program.

Also, the idea is fucking retarded. Why would I want to chat one-on-one with some faggot /b/tard?

Name: Anonymous 2007-12-06 13:19

>>58
Is that all you got, self-hating Java fag?

Name: Anonymous 2007-12-06 16:29

>>63
Not OP.

>>65
The idea is that they wouldn't BE some faggot /b/tard when you stripped away that context and, hopefully, that identity along with it.

Name: Anonymous 2007-12-06 18:08

>>67
You haven't talked to a lot of /b/tards outside of /b/, have you?

Name: Anonymous 2007-12-06 18:17

>>68

I've talked to myself before

Name: Anonymous 2007-12-06 19:12

>>68
I know a lot of /b/tards IRL, and besides a weirder sense of humor they're pretty much regular boys and girls.

Name: Anonymous 2007-12-06 19:31

The one on one part is what makes this fail. Just make it a regular chat where everyone is named Anonymous unless they use a name and/or tripcode, like on the boards.

Name: Anonymous 2007-12-06 19:34

>>71
But then it's just like any thread on the board, except with faster spamming.

Name: Anonymous 2007-12-06 19:43

>>70
they're pretty much regular boys and girls.
regular boys and girls.
boys and girls.
girls

Name: Anonymous 2007-12-06 21:16

>>73
with a penis

Name: Anonymous 2007-12-06 21:50

>>74
no, no, without penis. really. I've checked.

Name: Anonymous 2007-12-07 0:36

>>71
No, see it's when you get more than 2 in a room that you start to have problems. They just start copying each other and spouting the same old shit in an attempt to prove to each other that their members of the cool kids' club. Names/tripcodes only provide them with identities and make the matter worse. But with two people there's only 'me' and 'you,' and there's no sense of a group to belong to.

Name: Anonymous 2007-12-07 1:41

But what if an odd number of people are connected? Does the odd man just wait until someone else connects, or quit before that happens?

Name: Anonymous 2007-12-07 1:57

>>77
Right, he'd have to wait. Hopefully there'd be enough users that the wait would be short.

Name: Anonymous 2007-12-07 2:06

>>77
I'd suggest randomly putting him into a chat session with two others, then removing one random person and putting him into a one-to-one with someone else when they connect. Should be interesting.

Name: Anonymous 2007-12-07 5:03

I think chats should only be a minute long, then you move along. like that dance where people swap partners. i saw it in a movie.

Name: Anonymous 2007-12-07 5:04

>>80
i saw that movie

Name: Anonymous 2007-12-07 5:37

>>80
This isn't speed dating. I'd want to be able to have a long, involved conversation if I so desired.

Name: Anonymous 2007-12-07 5:38

>>81
me too, it sucked

Name: Anonymous 2007-12-07 5:40

Also, the server should scan the chat for keywords and then forward the log along with the IP addresses to the FBI or Encyclopedia Dramatica.

Name: Anonymous 2007-12-07 12:14

>>76
Wrong, see the Linksys / Chacha threads on /b/

Name: Anonymous 2007-12-07 20:10

>>85
Hah. Yeah, but that's for the explicit purpose of trolling. You already know you're not going to have any other kind of conversation with a Linksys tech support rep or a Chacha search volunteer. That option just isn't there. I'm not saying people wouldn't troll on this either, probably even get some good Bel-Airs, but I don't think it would happen as much when it's "our own" and there's actually something else interesting to do.

Name: Anonymous 2007-12-08 6:32

I think humor would be less on an environment like this. Humor and creativity blossom in an forum where there is potential for many people to be influenced by this. In an anonymous tete-a-tete, people will be unwilling to really put to much effort into being funny or original

Name: Anonymous 2007-12-08 7:00

>>87
I wasn't shooting for funny or original so much as just plain honest. I think that's ultimately the goal of an anonymous community, but I don't see it happening on /b/.

Name: Anonymous 2007-12-08 20:13

If somebody would host the server, I could write an ENTERPRISE GRADE solution for this in Java after next week.

e-mail address in the e-mail field.

Name: Anonymous 2007-12-09 0:33

>>89
Yeah, about that... hmm... I was hopping to hitch it onto 4chan, maybe get a dev's interest or something, cause I have no idea what to do about hosting.

Name: Anonymous 2007-12-09 1:14

>>89
If it's just a simple text-based chat, you should be able to easily host it from your home machine. If it ends up being successful and gets too big, then (and only then) should you bother looking for bigger pipes.

Product first, infrastructure later (unless you have the capital to blow on infrastructure, which we don't).

Name: Anonymous 2007-12-09 5:49

>>91
Speak for yourself. I have a 6 figure salary, and living frugally means I have money to burn.

Name: Anonymous 2007-12-09 20:01

Just go find some free hosting. Many of them support PHP and/or Perl, and of course it won't take much bandwidth -- it's text only anyway.

Name: Anonymous 2007-12-09 20:14

>>92
Cents don't count in N figure salaries.

Name: Anonymous 2007-12-09 23:31

>>93
Free web hosting doesn't let you run a persistent process, which is what you're going to need to run an effective chat server. While you could write some nasty ass shit that uses PHP/Perl/Python as a backend, it's going to be some nasty ass shit.

Nothing wrong with hosting it on your own connection. That's why the Sussman invented dynamic DNS.

Name: Anonymous 2007-12-10 2:43

>>91
>>95
I actually have a pretty decent ADSL connection, with around 60 kB/s upload, but I could see that getting eaten up quickly-- at least enough to cut into gaming and other things going on. I also don't have a dedicated box, such that even if I left my computer on 24/7, any time I needed to restart I'd be killing the thing for a minute or two.

Name: Anonymous 2007-12-10 3:28

>>96
Well, I've got a similar pipe, but loads of spare machines sitting around. If you're concerned about availability, I don't have a problem dedicating one of my machines to run a /prog/ chat application. I'd be running it on FreeBSD 6.2 in a jail on a system that's been on for 28 days (some idiot did something stupid last month during a party, I don't want to talk about it).

Name: Anonymous 2007-12-10 6:19

HAY GUYS IVE GOT A LINUX SHELL HOSTING ACCOUNT WITH WEBSPACE. If this is implemented in php or cgi or java or something then I may be willing to host something. But I imagine it needs to have something running as a back ground process daemon kinda thing to manage it all??  Then I think I'll need to get permission from them first, but might be doable.

Name: Anonymous 2007-12-10 6:25

>>98
I'd like to murder you whilst may still throbbing erection continues to pump semen into your ragged red anus.

Name: Anonymous 2007-12-10 6:34

>>99
There, that's the spirit

Name: Anonymous 2007-12-10 6:58

HURRY UP AND MAKE THIS IT SOUNDS LIKE FUN.

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List