00:01:35 <ehird> http://mrbmd.com/mrb_personal_blog1.htm "HOW TO SEND EMAIL TO YOURSELF"
00:02:16 <Slereah> STEP 1 : ENTER YOUR EMAIL ADRESS
00:14:35 <Warrigal> ihope@normish.orgHi, me!Okay, now how do I send it?
00:15:18 <Warrigal> Hmm, I should have said something like "warrie@normish.org" instead so that someone else gets all the spam.
00:15:31 <Warrigal> root@normish.org is the best email address, really.
00:16:05 <Slereah> I often send myself emails
00:16:15 <Slereah> It's an easier alternative for file transfer
00:21:37 -!- GreaseMonkey has joined.
00:41:13 -!- moozilla has joined.
00:42:23 -!- Corun has quit ("Leaving").
00:45:46 -!- sebbu2 has joined.
00:47:09 <Sgeo> <input type="hidden" name="recipient" value="berman@hygeia.org">
00:54:07 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
00:54:43 -!- KingOfKarlsruhe has quit (Remote closed the connection).
00:58:38 * ehird sketches generic oop
00:58:42 <ehird> err, generic method
00:58:59 <Warrigal> I'm going to use "oop" as a slang term for "method" from now on.
00:59:52 <Warrigal> "That piano player has excellent oop."
01:00:18 <Warrigal> "Then you can just call the object's oop instead of needing to use a macro."
01:01:40 -!- sebbu has quit (Connection timed out).
01:13:21 -!- moozilla has joined.
01:26:06 <AnMaster> Warrigal, so panic() is an oop to generate an oops?
01:30:34 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
01:35:00 -!- Asztal has quit (Read error: 110 (Connection timed out)).
01:55:18 -!- moozilla has joined.
02:12:37 <Sgeo> Warrigal, http://yugop.com/ver3/
02:17:17 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
02:23:37 -!- cherez has joined.
02:25:35 -!- cherez has left (?).
03:10:37 -!- moozilla has joined.
03:13:00 -!- moozilla has quit (Read error: 131 (Connection reset by peer)).
03:38:38 -!- jix has joined.
03:51:52 -!- jix_ has quit (Read error: 113 (No route to host)).
03:57:13 -!- moozilla has joined.
03:59:52 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
04:02:33 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
04:02:48 -!- oklopol has joined.
04:30:30 -!- moozilla has joined.
04:33:17 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
05:13:56 -!- moozilla has joined.
05:15:56 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
05:33:35 -!- Sgeo has quit (Remote closed the connection).
05:44:47 -!- moozilla has joined.
05:47:31 -!- moozilla has quit (Read error: 131 (Connection reset by peer)).
06:56:21 -!- SpaceMan has joined.
06:56:35 -!- CakeProphet has joined.
06:57:00 -!- SpaceMan has changed nick to SpaceManPlusPlus.
06:57:29 -!- SpaceManPlusPlus has left (?).
06:57:29 -!- SpaceManPlusPlus has joined.
06:58:41 -!- SpaceManPlusPlus has quit (Client Quit).
07:03:33 -!- bsmntbombdood has quit.
07:03:38 -!- psygnisfive has joined.
07:04:13 -!- bsmntbombdood has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:09:53 -!- oerjan has joined.
08:14:03 -!- moozilla has joined.
08:16:27 -!- moozilla has quit (Read error: 131 (Connection reset by peer)).
08:21:28 -!- pikhq has quit (Read error: 54 (Connection reset by peer)).
08:22:50 <oerjan> lament: why is a Welte-Reproduktionsklavier not a piano which reproduces universes. i am so disappointed.
08:23:22 <lament> every piano reproduces universes.
08:23:40 -!- pikhq has joined.
08:23:45 <lament> of course. Haven't you ever listened to one?
08:24:06 <oerjan> i thought i had. i must do so more carefully.
08:24:19 <lament> yes, listen for the universe
08:26:04 <psygnisfive> for some good universe creation in pianos, listen to some fugues and canons
08:26:30 <lament> nah, just listen to any good music
08:27:31 <psygnisfive> which would include at its highest ranks, fugues and canons
08:29:37 <lament> i had a phase for a few years when i listened only to bach
08:29:59 <lament> actually i mostly played bach instead
08:30:48 <lament> now i listen to mozart more...
08:31:20 -!- GreaseMonkey has quit ("You only need one wheel. Bikers are just greedy.").
08:35:53 -!- CentHOGG has joined.
08:38:07 -!- Mony has joined.
08:38:42 <psygnisfive> an object-oriented style database, actually
08:43:22 -!- CakeProphet has quit ("lol").
08:50:22 -!- CentHOGG has quit ("Leaving").
08:50:56 -!- moozilla has joined.
08:52:12 <psygnisfive> more like 'CentHOGG has left IRC ("Don't get H2G2 references.")' -.-
08:52:43 <pikhq> I thought that that was mandatory reading?
08:52:53 -!- bsmntbom1dood has joined.
08:53:29 -!- bsmntbom1dood has quit (Client Quit).
08:53:44 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
09:08:31 <psygnisfive> you'd think it wouldnt been to be mandatory
09:13:41 <oerjan> i wioll haven thunk so, but not yet
09:56:33 -!- moozilla has joined.
10:11:32 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
10:12:22 <oklopol> why is h2g2 the abbreviation of hgttg?
10:17:27 <oerjan> apparently because neil gaiman can't count
10:18:28 <oerjan> maybe he just left out the small words
10:19:00 <oerjan> but then, why two h's...
10:20:09 <oerjan> it just doesn't make sense
10:20:28 <oerjan> but then, nothing in the books did, so i guess that's okay
10:20:59 <oklopol> wonder if i should read them
10:21:17 * oerjan actually just read the first two
10:21:28 <oklopol> i've been thinking about reading a fictious book at some point
10:22:31 <oerjan> i'm sure there are more than 4 fictious books
10:23:08 <oklopol> i know there are over 10 fictious books
10:23:31 <oerjan> it's hard to count them i think
10:23:51 <oerjan> at least 5 were published when DA was alive
10:24:08 <oklopol> how come did it be hard now
10:24:43 <oerjan> then there is a posthumous collection
10:25:11 <oerjan> and they are of course intending to get someone else to write more
10:25:18 <oerjan> http://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy#And_Another_Thing...
10:30:07 <fizzie> It's been abbreviated hhgttg by the people "around here"; but I guess h2g2 is the most common one.
10:31:25 -!- oerjan has quit ("Rebus").
11:13:31 -!- Mony has quit ("brb").
11:29:50 -!- Asztal has joined.
12:39:18 -!- moozilla has joined.
12:41:46 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
12:46:22 -!- kar8nga has joined.
12:49:18 -!- Corun has joined.
13:31:42 -!- moozilla has joined.
13:50:56 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
14:05:16 <AnMaster> happen to know the url for NCRS?
14:10:26 <AnMaster> I have been unable to locate it
14:17:49 -!- moozilla has joined.
14:29:56 -!- moozilla has quit (Read error: 131 (Connection reset by peer)).
14:49:32 -!- moozilla has joined.
15:03:16 -!- Mony has joined.
15:05:23 <ais523> <oerjan> +ul (())(~(S)*:Sa~:^):^ <--- I really like that one
15:05:37 <thutubot> ()S(()S)S((()S)S)S(((()S)S)S)S((((()S)S)S)S)S(((((()S)S)S)S)S)S((((((()S)S)S)S)S)S)S(((((((()S)S)S)S)S)S)S)S((((((((()S)S)S)S)S)S)S)S)S(((((((((()S)S)S)S)S)S)S)S)S)S ...too much output!
15:05:50 <Slereah> +ul ()S(()S)S((()S)S)S(((()S)S)S)S((((()S)S)S)S)S(((((()S)S)S)S)S)S((((((()S)S)S)S)S)S)S(((((((()S)S)S)S)S)S)S)S((((((((()S)S)S)S)S)S)S)S)S(((((((((()S)S)S)S)S)S)S)S)S)S
15:05:50 <thutubot> ()S(()S)S((()S)S)S(((()S)S)S)S((((()S)S)S)S)S(((((()S)S)S)S)S)S((((((()S)S)S)S)S)S)S(((((((()S)S)S)S)S)S)S)S((((((((()S)S)S)S)S)S)S)S)S
15:05:58 <ehird> oklopol: infinite quine generator
15:06:51 <Slereah> Here thutubot, have this time!
15:06:54 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
15:07:10 <ehird> okay who wants to fix my c compiling error
15:07:16 <ais523> it's a quine that contains no loops, the output of that
15:07:22 <ais523> which therefore has to be infinitely long
15:07:56 <ais523> also, the out of time error is because Thutu programs have a tendency to go into infinite loops when it they see something they don't understand
15:08:03 <ais523> in this case, the infiniloop was in the interp, not the program
15:10:02 -!- oklopol has quit (Read error: 54 (Connection reset by peer)).
15:10:44 <ais523> ehird: paste the error, and I'll have a look
15:10:48 <ais523> preferably a few lines of context too
15:11:01 <ehird> /opt/local/include/evhttp.h:106: error: parse error before ‘TAILQ_ENTRY’
15:11:01 <ehird> /opt/local/include/evhttp.h:106: warning: no semicolon at end of struct or union
15:11:03 <ehird> /opt/local/include/evhttp.h:149: error: parse error before ‘}’ token
15:11:09 <ehird> that's all the errors for that file
15:11:15 <ehird> (not my program, ofc :P)
15:11:22 <ehird> but it's stopping a compilation and uh wtf
15:11:46 <ais523> could you show me the context around line 106?
15:12:59 <ehird> TAILQ_ENTRY(evhttp_request) next;
15:13:06 <ehird> struct evhttp_request {
15:13:07 <ehird> TAILQ_ENTRY(evhttp_request) next;
15:13:09 <ehird> /* the connection object that this request belongs to */
15:13:11 <ehird> struct evhttp_connection *evcon;
15:13:17 <ehird> it doesn't define it
15:13:19 <ehird> nor include anything
15:13:21 <ehird> presumably the using program has to import another header first
15:13:33 <ehird> but this program is used by others; presumably they have no problem
15:13:45 <ais523> yes, that seems a pretty clear case of TAILQ_ENTRY not meaning anything in this context
15:14:31 <ehird> I'm wondering what the hell is up :D
15:15:01 <ais523> actually, looking at the context there, it's attempting to create a struct with a pointer to itself
15:15:24 <ais523> so tailq_entry's probably doing some sort of clever trick to make a linked list or something
15:15:34 <ais523> a bit silly, really, because a pointer would do just as well
15:15:39 <ehird> as far as I can tell, the problem is that TAILQ_ENTRY is not defined.
15:15:54 <ais523> yes, it indeed sounds like it should be in some header file
15:15:59 <ais523> try googling for TAILQ_ENTRY?
15:16:10 <ais523> did you turn up anything useful?
15:16:13 <ehird> this program isn't uncommon
15:16:19 <ehird> i doubt it forgot to include a header or something
15:16:25 <ehird> because, you know, people use it and compile it fine
15:16:29 <ehird> so why is it happening in my case?
15:16:34 <ais523> it could be designed for a common compiler you don't use, for instance
15:16:39 <ais523> I was wondering vaguely if it was a MSVC-ism
15:16:53 <ehird> considering I installed the library with macports.
15:18:24 <ais523> anyway, try #include <sys/queue.h> at the start of the program and see if it helps
15:19:15 <ais523> apparently it's in that header file in Darwin, therefore presumably in Mac OS X too
15:19:45 <ehird> that is something I will avoid. a) this is a checkout from git, so I'd have to deal with merging each time I update it, b) the main developer, iirc, uses OS X, leading on to c) nobody else seems to have this problem
15:19:59 <ehird> so I'm thinking how to solve it d) with some build system flag or something that I may have missed
15:20:15 <ehird> it includes #include <event.h>
15:20:34 <ais523> gcc has an "include-this-header" command-line switch, IIRC
15:20:42 <ehird> right, but i shouldn't have to do that :)
15:20:52 <ehird> /* Fix so that ppl dont have to run with <sys/queue.h> */
15:20:53 <ehird> #ifndef TAILQ_ENTRY
15:20:53 <ehird> #define _EVENT_DEFINED_TQENTRY
15:20:56 <ehird> #define TAILQ_ENTRY(type)\
15:20:59 <ehird> struct type *tqe_next;/* next element */\
15:21:01 <ehird> struct type **tqe_prev;/* address of previous next element */\
15:21:05 <ehird> #endif /* !TAILQ_ENTRY */
15:21:09 <ehird> and yet it includes event.h before evhttp.h
15:21:11 * ehird 's WTF-O-METER goes off
15:21:50 <ehird> wtffffffffffffffffffffffff
15:22:00 <ehird> ais523: and TAILQ_ENTRY works in event.h!
15:22:06 <ais523> yes, my bogometer is ringing high too
15:22:07 <ehird> but when one line later it includes evhttp.h, it fails!
15:23:14 <ehird> ok, the TAILQ_ENTRY is just not being expanded
15:23:19 <ehird> what the hhelllllllllllll
15:23:36 <ehird> this makes like the least sense ever
15:24:15 * ais523 wonders if 'type' was #defined earlier, to confuse issues
15:24:18 <ais523> although it shouldn't have been
15:24:30 <ehird> #include <event.h>
15:24:33 <ehird> #include <evhttp.h>
15:24:40 <ehird> the event.h TAILQ_ENTRY uses work fine
15:24:46 <ehird> but then as soon as you get to evhttp.h?
15:24:58 <ehird> that's... just... what
15:26:07 <ehird> that is not how the c preprocessor works so...
15:26:09 <ehird> I just don't get it. WTF?!
15:26:10 <ais523> hmm... do you have precompiled headers on?
15:26:22 <ehird> ais523: i'm not sure how that would change anything but no afaik.
15:26:22 <ais523> I can sort-of figure out how they would cause that bug
15:26:52 <ais523> (basically, earlier header files can't define symbols in later header files that don't include them, if the header files are precompiled)
15:27:07 <ehird> well, how can I turn off precompilation for that?
15:28:00 <ehird> you will not believe this
15:28:04 <ehird> % cat /opt/local/include/event.h /opt/local/include/evhttp.h| cpp -I/opt/local/include|e
15:28:13 <ehird> WHAT THE HECK AHAHAAHAHAHAHAH
15:28:20 <ais523> hmm, gcc seems to have protection against that sort of thing, it refuses to use more than one precompiled header in a compilation for exactly that reason
15:28:28 <ais523> and if it does use one, it has to be the first one
15:28:28 <ehird> do you hear what I'm saying?
15:28:32 <ehird> I catted the two files together
15:28:36 <ehird> and it's still verbatim
15:28:50 <ais523> maybe there's a typo in the second which is affecting it somehow
15:29:05 <ehird> TAILQ_ENTRY (event) ev_next;
15:29:06 <ehird> TAILQ_ENTRY(evhttp_request) next;
15:29:20 <ehird> and no, there is absolutely no way it's the space :-P
15:29:34 <ais523> no stray backslash at the end of the previous line?
15:29:41 <ais523> no /* comment that was accidentally never closed?
15:29:49 <ehird> no, this is from cpp output
15:29:59 <ais523> and it's stripping comments?
15:30:14 <ais523> are there any #line or # <number> directives nearby?
15:30:27 <ehird> about 50 lines earlier
15:30:31 <ais523> they're often a clue as to what cpp was thinking
15:30:35 <ehird> #endif /* _EVENT_H_ */
15:30:40 <ehird> signifying the next file in the cat, ofc
15:30:58 <ais523> ok, so in other words nothing there's expanded into multiple lines
15:31:10 <ais523> but that's not surprising
15:31:16 <ais523> given there are no include comments there
15:31:45 <ehird> ok i will try the ultimate test
15:31:46 <ais523> I suppose the macro in question wasn't undefed by a stray undef?
15:31:58 <ehird> if this fails, I will put a gun to my head
15:32:11 <ehird> #ifdef _EVENT_DEFINED_TQENTRY
15:32:11 <ehird> #undef TAILQ_ENTRY
15:32:18 <ehird> wtf is up with that
15:32:21 <ais523> ok, that's simple enough
15:32:24 <ehird> also, how come evhttp.h (from the SAME PACKAGE) uses it
15:32:28 <ehird> even though it can't
15:32:30 <ehird> and how come this program
15:32:32 <ais523> and an obvious explanation why the define of tailq_entry wasn't carrying over
15:32:34 <ehird> doesn't include sys/queue
15:32:48 <ehird> and how come it builds for everyone else.
15:36:40 -!- kar8nga has left (?).
15:45:54 -!- oklopol has joined.
15:51:41 <ais523> my package manager wants to uninstall the kernel, I hope it knows what it's doing
15:54:25 <ehird> ais523: any ideas as to what I should do?
15:54:55 <ais523> maybe see if you can find one of the everyone else for whom it built, and ask them what happened?
15:55:08 <ehird> i'm asking in the irc channel but it's idle-haven
15:56:23 <ais523> OK, rebooting, if I don't come back up within about 10 minutes it's probably because I accidentally deleted my OS
16:00:19 <ais523> Linux dell 2.6.27-11-generic #1 SMP Fri Dec 19 16:29:52 UTC 2008 i686 GNU/Linux
16:00:43 <ehird> I just added an #include :P
16:01:10 <ehird> [[mmph... 5 to 100 days remaining is not a useful measure for a file download to give...]]
16:01:17 <ais523> ehird: [[is that Vista?]]
16:01:20 * ehird continues his Insane Task (write an httpd)
16:01:27 <ehird> ais523: no, it's a torrent :-P
16:01:56 <ehird> it's possible that the 100 is it predicting me being jailed for copyright infringement and thus my computer confiscated
16:02:11 <ais523> well, if it's an illegal torrent then in theory that ought to happen
16:02:14 <ehird> after all, this is a mac, the software is really clever right?
16:02:20 <ais523> never tell me where you live, just in case...
16:02:30 <ehird> ais523: depends on your definition of "ought" :-P
16:02:46 <ais523> I don't like doing illegal things, or other people doing them
16:03:04 <ais523> although I admit that given that this is the Internet, it's pretty much impossible to convince anyone of that
16:03:29 -!- oerjan has joined.
16:03:34 <ehird> in the case of "intellectual property infringement", the laws are broken to the Nth degree
16:03:51 <ais523> there are several laws, some are more broken than others
16:03:59 <ais523> trademark law is almost sane, for instance, just out of date
16:04:59 * ehird , with newly compiled interpreter, sets on quest: Write decent httpd.
16:05:03 <ehird> Then use it for everything.
16:05:15 <ehird> What do you mean that won't be easy.
16:05:19 <ais523> what's your definition of 'decent' here?
16:05:24 -!- Corun has quit (Read error: 60 (Operation timed out)).
16:05:29 <ehird> does everything I want it to do
16:05:48 <ehird> and with low memory usage and high scalability
16:05:51 <ehird> I will accept nothing less :-P
16:06:15 <ehird> Yes; since I'm writing it in a HLL I doubt I'll be getting buffer overflows.
16:06:23 <ehird> And Io, a minimal prototype-based OO language. http://iolanguage.com.
16:06:31 <ais523> ehird: you never know...
16:06:44 <ehird> It's built with embeddability and concurrency in mind, and even has some syntax for futures and such.
16:06:45 <ais523> and I know of Io and its paradigm, although haven't worked with it in detail
16:06:54 <ehird> And it has async IO functionalities, so it's a good fit.
16:08:04 <ehird> Hopefully it'll also have in-server scripting for blazing fast webapps, but sandboxed appropriately so you can't mess up the server.
16:08:10 <ehird> That would be nice.
16:08:12 -!- moozilla has joined.
16:09:20 <ais523> <OscarMeyr> Does there exist a decent Perl to Brainfuck parser / compiler?
16:09:26 <ehird> yeah, I pasted that in ##nomic
16:09:32 <ehird> that's so lol for about 5 reasons
16:09:37 <ehird> which you all know so I wont' repeat :D
16:09:37 <ais523> maybe I should have pointed out that parsing Perl is uncomputable
16:09:51 <ehird> also, that writing brainfuck by hand IS possible
16:10:01 <ehird> also, that being in your right mind and writing BF are mutually incompatible, duh
16:10:06 <ehird> also, that Perl would be a terrible language to compile it to anyway
16:10:10 <ehird> and also it'd fail at the cycle limit.
16:10:12 <ehird> also, the grammar.
16:10:20 <ehird> hey i just read it all out
16:10:29 <ehird> hmm, Server handleSocket isn't called asynchronously.
16:10:30 <ais523> maybe I should try to get gcc-BF to compile the Perl interpreter at some point
16:10:54 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
16:11:03 <ais523> ehird: maybe it's using Java's model for asynchrony (create a thread and run it synchronously there)
16:11:19 <ehird> no; it's just that you're meant to do the asynchronous call inside handleSocket
16:12:21 <ehird> ok, now to come up with a method name to asynchronously call
16:12:27 <ehird> reallyHandleSocket? :P{
16:12:48 <ehird> handleSocket := method(aSocket, self @reallyHandleSocket(aSocket))
16:14:25 <ehird> ok, my server just doesn't handle more than one connection full stop, wtf
16:15:01 <ehird> incidentally, I think I can protect this server against ddos attacks pretty well
16:15:03 <ehird> especially fuzz ones
16:15:13 <ehird> as soon as you know you've got some invalid http, drop the connection
16:15:27 <ais523> what if someone tries to instantly reconnect?
16:17:58 <ehird> ais523: there's no way to both handle all valid requests and protect against a well-formed, mass DDoS attack of course
16:17:58 <ehird> but some rate limiting shouldn't be too hard
16:18:09 <ehird> e.g. "if user is giving us 100 requests a second, ban" :P
16:18:23 <ais523> well, arguably being linked from Slashdot is a legitimate DDOS attack
16:18:58 <ehird> ais523: there's a difference between "many many users making few requests"
16:19:06 <ehird> and "any number of users making a huge amount of request"
16:19:13 <ehird> the first should be allowed, the second should be blocked
16:19:42 <ais523> the first is a DDOS, though, by definition
16:19:51 <ais523> the second is just a DOS
16:20:28 <ehird> ais523: actually, no - a DDOS would be "many users making many requests"
16:20:41 <ehird> slashdotting = many users making few requests
16:20:47 <ais523> it depends on how distributed it is, I suppose
16:20:47 <ehird> dos = few users making many requests
16:20:51 <ehird> ddos = many users making many requests
16:20:57 <ehird> ais523: and you can block the latter two with the same logic
16:21:03 <ehird> if you block a dos, you block a ddos
16:21:10 <ehird> as it's just many doses
16:22:03 <oerjan> at best you can turn a DDOS into a Slashdot, then...
16:22:36 <oerjan> since each user gets at least one try before you detect it
16:23:25 <ehird> aha, I needed a new libevent for Socket
16:23:44 <ehird> but a DDOS _that_ distributed is almost impossible to get
16:24:00 <oerjan> unless you have a botnet
16:24:04 <ehird> slashdotting works because slashdot is a highly established site that has got views by linking to interesting content nicely over the years
16:24:12 <ehird> oerjan: yes, again
16:24:15 <ais523> ehird: it crosses my mind that you might be able to manage it by hotlinking an image on your site into the Wikipedia UI
16:24:29 <ehird> but how likely is a botnet attacking one site?
16:24:29 <ais523> if you kept it small and hidden, nobody might notice it for a while
16:24:34 <ehird> unless it's like a virus researcher
16:45:14 -!- moozilla has joined.
16:47:53 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
16:53:53 -!- kar8nga has joined.
17:03:32 * ehird tries to think of a name for HTTPHandler that conveys that it handles the low-level HTTP sockets and thus not clash with the high level HTTPHandlers
17:04:51 <ehird> it's not analogous to a HTTPHandler
17:05:06 <ehird> it's "the thing that the HTTPServer clones and gives the socket when it gets a connection"
17:05:44 <Asztal> so one's a protocol handler, t'other's a content handler?
17:06:44 <ehird> one is a high-level way to get an HTTPRequest and give an HTTPResponse, essentially
17:06:50 <ehird> the one I'm naming is one that takes a socket and does stuff
17:06:54 <ehird> HTTPProtocolHandler may be ideal
17:07:03 <ehird> hmm, HTTPSocketHandler
17:07:16 <ehird> HTTPSocketHandler clone handleSocket :-P
17:07:41 <ehird> woohoo, now I get to parse HTTP
17:07:44 <ehird> can you think of anything more EXCITING?
17:08:22 <Asztal> with all the really really really interesting bits of leftover SGML stuff
17:08:30 <ehird> how about parsing mork
17:08:40 <ehird> http://jwz.livejournal.com/312657.html
17:10:54 * ehird writes HTTPParser, aka KillMeNow
17:16:19 <oerjan> ehird: will you have some anti-DDOS throttling called KillMeLater?
17:17:04 <ehird> whenever a client is found to be ddosing, my server will reply to its request with "Fuck you." then ban the ip
17:18:15 * ehird invents new software versioning scheme
17:19:16 <ehird> major.minor, minor increments from 0 per release, major is initially 0. major is increased when backwards compatibility-breaking changes are introduced or when the featureset is revamped to a large degree. when this happens, minor resets to 0.
17:19:38 <ehird> well, major backwards compat breaking changes
17:19:45 <ehird> since "featureset is revamped to a large degree" is pretty vague, major releases will be more common
17:19:56 <ehird> i imagine version numbers like 5.14 will be commonplace :P
17:21:24 <oerjan> um wait, this is new how?
17:23:04 <ehird> oerjan: well, its' not exactly _revolutionary_
17:23:16 <ehird> but minor never skips
17:23:24 <ehird> and there's no even/odd stuff
17:32:10 -!- moozilla has joined.
17:35:01 -!- moozilla has quit (Read error: 54 (Connection reset by peer)).
17:35:49 -!- pikhq has quit (Read error: 113 (No route to host)).
17:44:57 <ehird> writing a streaming parser will be har.d
17:45:42 <oerjan> that's a strange name for a streaming parser, even if you use D
17:46:18 <ais523> maybe it's a parser daemon
17:47:51 <ehird> my life is AWESOME
17:47:54 <ehird> not only do I have to read the http spec
17:48:00 <ehird> but I have to implement it as a manually-coded parser
17:48:09 <ais523> "have to", you could do something else instead you know...
17:49:58 * ehird considers usinga regex
17:50:02 <ehird> except that would be slow.
17:51:32 <ais523> "now you have two problems"...
17:51:41 <ais523> although I like regexen, it's still a good joke
17:51:57 <ehird> hmm, you can't check for EOF on a socket can you?
17:52:00 <ehird> so I guess http servers just rely on a timeout
18:04:25 -!- Corun has joined.
18:05:01 -!- moozilla has joined.
18:07:55 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
18:26:57 <oklopol> ehird: my life is more awesome than yours
18:37:59 <GregorR> AND THEN THERE WERE MUDKIPS
18:50:05 -!- Asztal has quit (Read error: 110 (Connection timed out)).
18:51:40 -!- moozilla has joined.
19:02:49 -!- moozilla has quit (Read error: 54 (Connection reset by peer)).
19:19:52 -!- Corun has quit ("This computer has gone to sleep").
19:25:16 <AnMaster> pragma (msg, "Assuming 32-bit chtype... correct ccbi.fingerprints.jvh.ncrs.chtype to ushort if link errors ensue.");
19:25:27 <AnMaster> it seems to be unsigned long on my system?
19:32:40 <Deewiant> AnMaster: chtype a long? That makes no sense at all
19:32:50 <oerjan> +ul ((xX)S:^):^ What's xXx anyway?
19:32:51 <thutubot> xXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX ...too much output!
19:33:23 <AnMaster> Deewiant, http://rafb.net/p/dM2ImR49.html
19:33:26 <ais523> Deewiant: well, 16 bits isn't enough for all of Unicode
19:33:43 <Deewiant> ais523: and 64 bits is way too much
19:34:01 <AnMaster> Deewiant, depends, on i686 long is 32 bits
19:34:09 <Deewiant> AnMaster: 32 bits is too much as well
19:34:18 <AnMaster> and on 64-bits long long is 64-bits
19:34:27 <Deewiant> unicode fits well into 21 bits
19:34:54 <AnMaster> Deewiant, ncursesw would need the full 32 bits, but this is plain ncurses
19:35:25 <AnMaster> Deewiant, on 32-bit platforms that would end up as int32_t
19:35:34 -!- Slereah_ has joined.
19:35:45 <Deewiant> at least PDcurses does it right
19:36:13 <Deewiant> http://rafb.net/p/gDsSdU70.html
19:39:37 <Deewiant> welp, in any case there's no way I can know the correct type without doing something autoconf-like so all I can do is change the pragma msg :-P
19:40:09 <ais523> Deewiant: compare blah_MAX from limits.h?
19:40:15 <ais523> that's a way to find out type sizes in the preprocessor
19:40:16 <AnMaster> Deewiant, btw you have two bugs in your code I think
19:40:40 <AnMaster> 1) you don't check if wgetch returned ERR, the specs say you should reflect on error for all instructions
19:40:44 <Deewiant> ais523: I can't see the original chtype type without going through C and I don't want to do that
19:40:57 <AnMaster> 2) initscr() exits on error, doesn't return ERR
19:41:14 <AnMaster> so yes two error handling bugs decipher
19:41:28 <ais523> if it does, you could include the C header and hope that it happened to also be legal D
19:42:59 <Deewiant> AnMaster: looking at the PDcurses source they both exit()
19:43:18 <AnMaster> Deewiant, well that means CCBI is non-conforming I'm afraid :P
19:44:09 <AnMaster> A program that needs to inspect capabilities, so it can continue to run in a line-oriented mode if the terminal cannot support a screen-oriented program, would also use newterm.
19:44:14 <AnMaster> is what the man page says here
19:44:25 <Deewiant> In some implementations of curses, newterm() allows the use of
19:44:25 <Deewiant> multiple terminals. Here, it's just an alternative interface for
19:44:25 <Deewiant> initscr(). It always returns SP, or NULL.
19:44:45 <Deewiant> is there a way to 'catch' exit somehow?
19:45:04 <AnMaster> I'm pretty sure ncurses exist for cygwin
19:45:14 <AnMaster> decipher, damn pdcurses rather
19:47:34 <AnMaster> thing I really dislike about C preprocessor: the need for do { ... } while(0) hack
19:49:39 <AnMaster> Deewiant, the error handling in your clear() may be wrong too
19:49:48 <Deewiant> AnMaster: as for wgetch, I don't think it can return ERR
19:50:12 <Deewiant> not where and how it's used, anyway
19:50:26 <AnMaster> returns an error if the window pointer is null, or if its timeout expires without having any data.
19:50:42 <Deewiant> the window is stdscr and hence never null
19:50:44 <AnMaster> Deewiant, in that implementation
19:50:52 <AnMaster> I think implementation can define additional errors
19:50:52 <Deewiant> hence it doesn't return an error
19:51:10 <Deewiant> if that was ncurses then I'm good because PDCurses says the same :-P
19:51:16 -!- Slereah has quit (Read error: 110 (Connection timed out)).
19:51:30 <AnMaster> Deewiant, future ncurses versions could return ERR :P
19:52:48 <AnMaster> Note that erase, werase, clear, wclear, clrtobot, and clrtoeol may be macros.
19:53:17 <AnMaster> Deewiant, your code would fail it it was a macro
19:54:08 <AnMaster> nor in ncurses, however plain erase() is
19:54:18 <Deewiant> yes because MACROS ARE MORE OPTIMAL
19:54:26 <Deewiant> what's wrong with these people
19:54:47 -!- oklopol has quit (Read error: 110 (Connection timed out)).
19:54:48 <AnMaster> maybe because it seemed like a waste to just have a function like:
19:55:12 <AnMaster> int erase(void) { return werease(stdscr); }
19:55:21 <Deewiant> yes but it's not a waste to have a macro
19:55:41 <Deewiant> no, you didn't, but your argument would imply that
19:55:54 <AnMaster> Deewiant, I didn't say that I agreed with them either
19:56:01 <AnMaster> I just said that may be the logic behind it
19:56:12 <Deewiant> and I followed that logic somewhat
19:56:38 <AnMaster> you should have stopped and asked for directions a few times during that trip :P
19:56:59 <Deewiant> nah, I made it fine, just aggravated
19:58:04 <AnMaster> E (m -- ) Set echo mode to m (1 == echo, 0 == noecho).
19:58:13 <AnMaster> your code only checks if it is "true/false"
19:58:24 <AnMaster> I don't know D, but what would that do on, say, 2
19:58:31 <AnMaster> void toggleEcho () { if ((ip.stack.pop ? echo () : noecho()) == ERR) reverse(); }
19:58:58 <AnMaster> I don't know exactly what it does but probably it should reverse on 2 or so
19:59:08 <AnMaster> since it is a non-allowed value
20:00:02 -!- moozilla has joined.
20:02:47 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
20:04:10 <AnMaster> Deewiant, the NCRS mycology test has some issues
20:04:25 <AnMaster> like asking to press enter a few times when any other char works
20:04:39 <Deewiant> it might not work in a future version of curses :-P
20:05:06 <AnMaster> Deewiant, hm, also it says "press any function key", using a "h" works fine
20:05:15 <AnMaster> This should be at the top of the screen
20:05:16 <AnMaster> dThe rest of the screen should have cleared
20:05:16 <AnMaster> Trying to overwrite above with M and C, press any key to continue...
20:05:19 <Deewiant> yes but the UNDEF result is not what you want
20:05:51 <AnMaster> Deewiant, the spurious d there is from using d instead of enter
20:05:52 <Deewiant> if it asks you to press key X that doesn't mean that you can't press key Y, only that results are undefined if you do
20:06:16 <AnMaster> Press any function key to continue...
20:06:34 <Deewiant> and various other things -specific probably
20:07:07 <AnMaster> nice ccbi gives 265 for F1 instead
20:07:28 <AnMaster> void get() { ip.stack.push(cast(cell)wgetch(stdscr)); }
20:07:34 <AnMaster> I assume that was the function used?
20:08:03 <Deewiant> I don't know, see the char it corresponds to in the static constructor
20:08:03 <AnMaster> ok... now cfunge give me 265 too...
20:08:10 <AnMaster> must have pressed the wrong key
20:08:43 -!- Corun has joined.
20:08:46 <AnMaster> Deewiant, well get() is G but:
20:08:48 <AnMaster> Press any function key to continue...
20:13:13 <AnMaster> These functions are described in the XSI Curses standard, Issue 4. It specifies that portable applications must not call initscr more than once.
20:13:26 <AnMaster> oh and initscr() may be a macro :P
20:13:57 <AnMaster> Note that initscr and newterm may be macros.
20:14:16 <AnMaster> there are a lot of issues with that
20:14:46 <Deewiant> what the hell can be used if initscr is a macro
20:15:09 <AnMaster> also it should use proper prefix
20:15:11 <Deewiant> no, I don't want to do that :-P
20:15:32 <Deewiant> nah, curses is too old for that
20:15:33 <AnMaster> prevent stuff like this, in say C++
20:15:46 <Deewiant> they didn't do that stuff back then and now it's been around too long to change it :-P
20:15:56 <AnMaster> / argh! this calls myclass.wclear(stdscr);
20:16:38 <AnMaster> on the other hand at least I don't get linking errors now
20:16:45 <AnMaster> since I have some functions that would collide
20:17:13 <Deewiant> solution to all namespacing problems: make everything a macro!
20:17:25 <AnMaster> Deewiant, that has the other mentioned downside
20:35:29 <AnMaster> Deewiant, it may be unportable to use TERM and then NCRS I think
20:36:01 <AnMaster> depends on how you implement them, but since you can probably assume TERM use termcap and that will use ncurses on linux...
20:37:01 -!- KingOfKarlsruhe has joined.
20:37:15 <Deewiant> based on the docs of TERM I claim that you can use TERM whenever you want without any harmful effects
20:37:21 <Deewiant> if the OS can't handle that, tough
20:37:38 <AnMaster> implementation defined if the OS can or not
20:39:00 -!- moozilla has joined.
20:41:34 -!- moozilla has quit (Read error: 54 (Connection reset by peer)).
20:48:41 <AnMaster> Deewiant, TERM and NCRS interact badly
21:01:52 <AnMaster> Deewiant, btw have you noticed how unusable NCRS is? No other fingerprint producing output may work
21:03:23 * AnMaster tries to make TERM and NCRS work together
21:10:33 <AnMaster> Deewiant, there is no way TERM and NCRS will play together nicely
21:10:46 <AnMaster> I can special case the code path for mycoterm to make it work
21:10:56 <AnMaster> but I don't think I can solve the general case
21:12:03 -!- sebbu has joined.
21:15:21 -!- oklopol has joined.
21:17:07 -!- moozilla has joined.
21:17:32 -!- Judofyr_ has joined.
21:18:58 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
21:19:48 -!- moozilla has quit (Read error: 54 (Connection reset by peer)).
21:24:47 -!- sebbu2 has quit (No route to host).
21:38:50 -!- Judofyr_ has changed nick to Judofyr.
21:42:36 -!- moozilla has joined.
21:47:08 -!- Corun has quit ("This computer has gone to sleep").
21:53:59 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
22:13:15 -!- moozilla has joined.
22:23:25 <ehird> GregorR: SOmeone stole your game!!
22:23:31 <ehird> http://www.wikiwarp.com/
22:23:48 <GregorR> I didn't invent the game :P
22:24:06 <ehird> I like to be sensational
22:25:28 <ehird> Yeah but so's your faeces
22:29:59 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
22:35:15 <AnMaster> Deewiant, simple, NCRS I collides with TERM
22:35:32 <AnMaster> when you unload NCRS with I you mess up the ncurses data structures
22:36:16 <AnMaster> you can't check for unload/reload
22:36:26 <Deewiant> can't you reload ncurses when TERM is ('d
22:36:49 <AnMaster> Deewiant, yes you can use I to initialize NCRS
22:37:06 <AnMaster> but: you can't unload NCRS in this order:
22:37:58 <Deewiant> just make 0I not actually unload if TERM is alive
22:38:14 <AnMaster> then it would actually break the functionality
22:38:32 <AnMaster> oh and of course you can't use more than exactly one 1I and one 0I during a session
22:38:59 <AnMaster> since calling initscr() more than once is undefined behaviour
22:39:20 <AnMaster> TERM use setupterm() that it seems you can use multiple times, initscr() calls setupterm()
22:39:45 <AnMaster> and I'm not making all of cfunge use ncurses, no way
22:40:06 <AnMaster> it may be possible, but painful, to notify the other module of changes
22:40:27 <Deewiant> well that'd be the easiest way :-P
22:40:32 <AnMaster> would make them slow since they need to check state flags all the time
22:41:02 <AnMaster> Deewiant, oh and I believe ccbi may be invoking UD there
22:42:30 <AnMaster> ah now you just don't support TERM on posix
22:43:00 <AnMaster> Deewiant, I see you ask for help there
22:43:32 <Deewiant> I read the specs and did stuff and stuff didn't seem to work at all :-P
22:43:36 <Deewiant> I can't remember, it's been months
22:43:45 <AnMaster> well you know I can't compile it
22:43:47 <Deewiant> and you did say that you got stuff to work using termcap directly
22:44:08 <Deewiant> nah, you just haven't bothered to set yourself up to compile it
22:44:19 <AnMaster> Deewiant, I was using ncurses/termcap stuff yes
22:44:23 <Deewiant> based on what you said I might as well drop it
22:44:30 <Deewiant> AnMaster: you use ncurses in TERM?
22:45:13 <AnMaster> del_curterm, mvcur, putp, restartterm, set_curterm, setterm, setupterm, tigetflag, tigetnum, tigetstr, tparm, tputs, vid_attr, vid_puts, vidattr, vidputs -
22:45:13 <AnMaster> curses interfaces to terminfo database
22:45:43 <AnMaster> sys-libs/ncurses (/usr/include/term.h)
22:46:02 <AnMaster> well they are provided by the same package
22:46:18 <Deewiant> what is the lowest level of functionality which allows this
22:46:19 <AnMaster> which is WHY TERM and NCRS collide
22:46:40 <AnMaster> you mean the terminal or the terminal emulator
22:46:55 <Deewiant> my point is, why the fuck does that use curses
22:47:12 <AnMaster> Deewiant, *same package providing both interfaces on linux*
22:47:28 <Deewiant> sigh, so you didn't answer my question
22:47:42 <Deewiant> I don't care what the header includes
22:47:45 <AnMaster> yes, I use the term.h interface, which is provided by ncurses
22:47:56 <AnMaster> which is what you used too I see
22:48:45 <Deewiant> right, but you don't use any of the higher-level curses functions
22:49:10 <AnMaster> and TERM and NCRS collide basically, since they both end up messing with the same low level terminal info static variables
22:49:53 <AnMaster> anyway I plan to have both and track state between them
22:50:07 <AnMaster> I already do something like that between SOCK and SCKE
22:54:10 -!- moozilla has joined.
23:15:49 -!- moozilla has quit (Read error: 104 (Connection reset by peer)).
23:19:57 -!- Mony has quit ("'night").
23:27:41 <ehird> } > kill cockatrice
23:27:43 <ehird> } With what? Your bare hands?
23:27:49 <ehird> -- internet oracle bestof
23:44:13 <fungot> oerjan: which include, but a player may spend one note of that player's possession. the muq of the
23:44:23 * ehird has quit (connection reset by paradox)
23:46:42 <ehird> fizzie: plz 2 be fixing paradox
23:58:18 <ehird> http://sco.wikipedia.org/wiki/Main_Page
23:58:18 <ehird> Wikipædia is a project tae big a free encyclopædia in mony leids.