00:08:01 -!- GreaseMonkey has joined.
00:13:59 -!- lolwtfbbq has joined.
00:14:18 -!- lolwtfbbq has quit (Client Quit).
00:55:49 -!- funnygot has quit (Read error: 145 (Connection timed out)).
01:03:01 -!- AnMaster_ has joined.
01:03:38 -!- AnMaster has quit (Connection timed out).
01:07:28 -!- Corun has quit ("This computer has gone to sleep").
01:13:10 -!- tusho has quit.
02:00:24 -!- bsmntbombdood has joined.
02:41:35 -!- bsmntbombdood has quit.
02:41:57 -!- bsmntbombdood has joined.
02:44:32 -!- dogface has joined.
02:44:48 <dogface> Guys, you're my friends. Suppose I were to write a story.
02:46:09 <dogface> I'd have a character named Johann Algernon, and he'd be really smart, but he'd be bored most of the time. Then a girl named Grace would come into his life via deus ex machina and teach him how to be happy.
02:47:40 <dogface> And then they'd kidnap Wolfram Blitzen from Newshounds and... well, maybe not that.
02:48:48 <dogface> Well, *you're* not my friend. Just... gosh, where'd they go?
02:48:59 <optbot> GreaseMonkey: I need to write a BF interpreter in INTERCAL still.
02:51:21 <dogface> And in a completely unrelated manner, a funny group of characters would get together and accomplish something really cool.
02:51:43 <dogface> And it'd collapse in a comic manner so that I could continue writing.
02:52:20 <dogface> And these seemingly separate stories would be heavily allegorical, and scathing commentaries on each other. :-P
03:10:08 <dogface> And it's gotten to the point where I suddenly don't understand the comics I'm reading.
03:10:36 <dogface> So I'll stop putting "and" at the beginning of every sentence and go to bed instead.
03:33:24 -!- megatron has changed nick to moozilla.
03:45:33 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | i prefer Ligeti ;).
06:02:44 -!- Judofyr has joined.
06:40:43 -!- AnMaster_ has changed nick to AnMaster.
06:55:08 -!- psygnisf_ has joined.
06:55:08 -!- psygnisfive has quit (Read error: 104 (Connection reset by peer)).
07:34:05 -!- olsner has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:20:50 -!- oklofok has joined.
08:20:50 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
08:30:21 -!- GreaseMonkey has quit (Remote closed the connection).
08:46:49 <funktio> Deewiant: on line 707, '""oof""' should be '""oof"'"
09:34:03 -!- jix has joined.
09:35:59 -!- mtve has quit ("Reconnecting to server - dircproxy 1.0.5").
09:36:02 -!- mtve has joined.
09:45:33 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | where did you get that code?.
09:47:24 -!- kar8nga has joined.
09:57:41 -!- KingOfKarlsruhe has joined.
10:25:55 -!- kar8nga has left (?).
11:06:48 -!- KingOfKarlsruhe has quit (Remote closed the connection).
11:42:41 -!- jix has quit (Nick collision from services.).
11:42:51 -!- jix has joined.
12:24:21 -!- tusho has joined.
12:41:21 <dogface> School starts in exactly 24 hours.
12:43:07 <dogface> Three trimesters later, and boom, you're a graduate.
12:43:14 <dogface> And by you, I mean me, of course.
12:46:47 -!- kar8nga has joined.
13:53:41 <tusho> http://www.reddit.com/r/programming/comments/6yuat/let_people_use_google_accounts_to_log_in_to_your/ 65 upvotes, 65 downvotes.
13:59:01 <dogface> See if you can win a prize for most controversial idea ever.
13:59:17 <tusho> dogface: Nah, there've been more controversial posts on reddit.
13:59:47 <tusho> dogface: http://www.reddit.com/controversial/?t=all
13:59:59 <tusho> The most controversial reddit posts of all time.
14:00:12 <oklofok> dogface: you're a graduate in a year?
14:01:20 <Deewiant> tusho: where do you see number of up/downvotes
14:01:30 <tusho> on the comments page
14:01:41 <tusho> #1 has 561 up vs 562 down
14:01:54 <Deewiant> there used to be a little "status" link or something on the comments page which showed it
14:02:08 <Deewiant> now that it's always visible I couldn't find it anymore ;-)
14:02:16 <tusho> Deewiant: yeah reddit fucked with the design a while ago
14:02:25 <tusho> it looks kind of shit now unless you turn on compact mode in prefs
14:02:34 <Deewiant> and of course I immediately did
14:02:53 <Deewiant> hmm, I've voted up 4 posts in the top 31 controversial
14:03:10 <tusho> i rarely ever upvote things
14:03:25 <Deewiant> I either upvote or don't, in general
14:03:53 <oklofok> you're a bunch of anarchists
14:04:02 <tusho> (( (int (*)(int))(*foo)(int) = { int n |
14:04:02 <tusho> { int i | return n += i; } }; ))
14:04:11 <tusho> methinks the syntax could use some whipping.
14:04:36 <tusho> Deewiant: i am playing around with a little syntax to give C functional programming shizz
14:04:39 <tusho> closures is part of that
14:04:45 <tusho> closures + anonymous functions
14:04:47 <Deewiant> so it's just something private of yours
14:04:54 <tusho> but yeah, that type is gnarly.
14:05:03 <tusho> (int (*)(int)) (*foo)(int)
14:05:03 <Deewiant> how about "int n, int i |" for starters
14:05:13 <tusho> Deewiant: how about no, see http://www.paulgraham.com/accgen.html
14:05:16 <tusho> The problem: Write a function foo that takes a number n and returns a function that takes a number i, and returns n incremented by i.
14:05:34 <tusho> mine does everything except his (a) requirement which is basically designed to get rid of any non-dynamically-typed langs
14:05:35 <Deewiant> tusho: it would mean the same thing, of course
14:05:44 <tusho> Deewiant: ah. i am not making c a curried language :D
14:05:59 <tusho> that would break variadics, noadics, and most pieces of c code ever
14:06:12 <tusho> also if you do func(notenoughargs); as a statement it'd suck to get it accepted
14:06:17 <tusho> because that'd return a function
14:06:23 <tusho> instead of erroring out because you didn't specify enough args
14:06:42 <tusho> anyway, the actual function body is fine I think, it's just the type that is hideous
14:06:53 <tusho> I could add an 'auto' for type inferrence ofc
14:07:05 <tusho> auto foo = { int n | { int i | return n += i } };
14:07:31 <Deewiant> well, the thing is that C's function/function pointer syntax /is/ gnarly
14:08:12 <Deewiant> adding even just a keyword "function" or whatever would work but would break compatibility with C, of course
14:08:24 <tusho> i don't mind breaking compatibility a little
14:08:30 <tusho> but i wouldn't completely rewrite it e.g. by currying
14:10:45 -!- Tritonio_ has joined.
14:13:27 <Deewiant> in D that'd be "int delegate(int) delegate(int) foo = (int n) { return (int i) { return n += i; } };"
14:13:37 <Deewiant> plus a semiclon after the next-to-last }
14:13:48 <oklofok> for a second there i thought "in D" was some elaborate smiley
14:14:28 <Deewiant> and with auto, "auto foo = (int n) { return (int i) { return n += i; }; };"
14:15:14 <tusho> Deewiant: yeah, I prefer the smalltalky {x | y} though
14:15:23 <tusho> also the delegate syntax has always confused me
14:15:39 <Deewiant> it's just <return type> delegate <parameters> :-P
14:16:02 <Deewiant> you could of course use "function" instead if you prefer that to the odd term "delegate"
14:16:08 <tusho> ah, how about (params)^(return)
14:16:33 <tusho> i mean, the type of the function is difficult to comprehend anyway, so it'll never be perfect
14:16:42 <tusho> i think that's pretty decent
14:17:25 <Deewiant> are the lexical and parsing phases separate in C compilation, like they are not in C++?
14:17:35 <Deewiant> I forget the short term to describe this kind of grammar
14:18:47 -!- psygnisf_ has changed nick to psygnisfive.
14:19:27 <psygnisfive> separating lexical recognition from non-lexical stuff is just a different way of parsing, it has nothing to do with the language
14:19:30 <tusho> Deewiant: yea, they are
14:19:35 <tusho> psygnisfive: no, the c standard specifies it
14:19:43 <Deewiant> like, in that case you can't always parse "X ^ Y" to "xor X Y", it's "if X is a type then function pointer... else xor X Y"
14:19:48 <psygnisfive> but it has nothing to do with the grammar or the language
14:20:06 <tusho> psygnisfive: the c standard defines the language c. the c standard specifies that they must be seperate.
14:20:07 <Deewiant> well basically of course you can implement it all in one clump if you want to :-P
14:20:10 <tusho> therefore it has something to do with the language.
14:20:19 <Deewiant> but it /is/ a property of the grammar
14:20:21 <tusho> Deewiant: ah, that's true .... wait, couldn't I just use ->?
14:20:25 <psygnisfive> tusho: i understand that the standard specifies this but theres no essential difference
14:20:29 <tusho> (int) -> ((int) -> int)
14:20:33 <tusho> psygnisfive: ok ,yes, you can implement it either way
14:20:38 <tusho> but you have to act as if you used two steps
14:20:39 <psygnisfive> deewiant: its not a property of the grammar
14:20:47 <Deewiant> tusho: no, I don't think so, since "(x) -> (y)" is valid, no?
14:20:57 <tusho> Deewiant: how is that valid in c
14:21:03 <tusho> minus greater than?
14:21:05 <Deewiant> tusho: x is a pointer to a struct
14:21:11 <psygnisfive> the lexing stage is the collection of terminal symbols, potentially infinite in size, into labels
14:21:14 <tusho> the spaces threw me off
14:21:18 <tusho> Deewiant: but this is a type
14:21:21 <tusho> you can't do foo->bar in a type
14:21:28 <Deewiant> tusho: I'm not sure if ->(y) is valid though, it might have to be ->y (no brackets)
14:21:36 <psygnisfive> e.g. strings like "blarg" become 'terminals' of type <string> or whatever you want to call it
14:22:04 <psygnisfive> by using some regular expression to recognize the string.
14:22:11 <Deewiant> tusho: no, but it's still context sensitive because you can't just see "identifier -> identifier" and decide what it is
14:22:23 <psygnisfive> this basically is a rule <string> ::= /.../
14:22:34 <Deewiant> http://en.wikipedia.org/wiki/Context-free_grammar
14:22:45 <tusho> Deewiant: well duh, c has tons of ambiguities like that :D
14:22:48 <psygnisfive> now whether or not all those rules are applied beforehand or not is irrelevant to the grammar/language
14:23:26 <psygnisfive> deewiant how is C's grammar context sensitive?
14:23:29 <Deewiant> tusho: I'm not sure if this is what I want to be talking about, but it's a property the grammar of D has and that of C++ doesn't :-P
14:23:41 <Deewiant> psygnisfive: I didn't say it was
14:24:07 <tusho> C++ is not context free
14:24:18 <tusho> C++ is turing complete to parse
14:24:20 <Deewiant> that's one big criticism of it
14:24:24 <tusho> look it up, bitchez
14:24:38 <psygnisfive> i seriously doubt that C++ is unrestricted
14:25:01 <psygnisfive> i have to go. ill ask you about this later. see ya.
14:25:32 <oklofok> well the type system is tc, so most likely you can do something impossible to parse with the thingie<thingie vs. template<...> ambiguity
14:25:41 <Deewiant> http://groups.google.com/group/comp.lang.c++/browse_thread/thread/93b9995c660a443b/7aa3c7a30ec301d4
14:27:05 <Deewiant> could be a number of things in C++, from a function declaration to initializing a class instance
14:29:14 <Deewiant> the idea of context-freeness is that a given piece of code, say "identifier -> identifier", can parse to only one thing
14:30:08 <Deewiant> in this case, something like "expression -> struct-member-dereference -> (identifier, identifier)" I guess
14:30:33 <tusho> Deewiant: but, in this case
14:30:35 <tusho> it's not ambiguous
14:30:40 <tusho> as the type doesn't clash with the expr
14:30:57 -!- psygnisfive has quit (Read error: 60 (Operation timed out)).
14:32:25 <Deewiant> given "x -> y", x and/or y might be typedefs so you can't know whether that's a function literal in your syntax or (*x).y
14:37:00 <dogface> tusho, I think yours is the most controversial thing that's actually an idea.
14:37:38 <tusho> give me an ambiguous expression
14:37:49 <tusho> Deewiant: yes, that's an expression
14:38:08 <dogface> The heads of all pages that are in the imperative: 1. vote 2. vote 4. vote 7. vote 14. let
14:38:10 <tusho> totally different contexts, you can just have a seperate rule for type with that in
14:38:18 <Deewiant> you may be right, let me think
14:38:21 <tusho> and let that only appear in the expression thing
14:38:41 <Deewiant> of course this isn't actually a problem anyway
14:38:52 <tusho> i like to hear that
14:39:03 <Deewiant> since you can just parse it as struct-member-deference-expression, since it has the same exact syntax
14:39:09 <Deewiant> and worry about it in the semantics phase
14:39:25 <tusho> Deewiant: even then you can still handle it fine
14:39:30 <tusho> beacues x->y is always a struct thing in an expr
14:39:33 <tusho> and always a function in a type
14:39:42 <Deewiant> yeah, I didn't mean "worry" as in "it's a problem" :-)
14:39:57 <tusho> ok, so, glad we've got that sorted out
14:40:01 <Deewiant> there's still an addition to the grammar somewhere
14:40:14 <tusho> now i'd like a nice syntax for higher-order stuffs
14:40:14 <Deewiant> but it shouldn't cause any additional ambiguities
14:40:23 <tusho> is not very pretty
14:40:26 <tusho> foo (bar) { ... } would be nicer
14:40:30 <tusho> I guess I can just specialcase it
14:40:38 <tusho> foo (x; y; z) { quux }
14:40:48 <tusho> where foo is a function taking a block as all its args
14:40:54 <tusho> is foo({x},{y},{z},{quux})
14:41:00 <tusho> then you could implement for
14:41:42 <tusho> Deewiant: any suggestions for a nicer way to do that?
14:41:44 <tusho> seems a bit special casey
14:42:04 <tusho> you can't implement for with that
14:42:09 <tusho> {int i=0;}, {i = 5}
14:42:11 <tusho> doesn't make sense
14:43:15 <Deewiant> hmm, so what exactly do you want
14:43:26 <Deewiant> a syntax for calling a function with a function literal as a parameter/
14:44:38 <tusho> Deewiant: i just want something that lets me define control structures and such and then use them with a natural-looking syntax
14:45:19 <Deewiant> and you could implement for with it
14:45:38 <Deewiant> just specify that bar is passed as a reference into {}
14:45:53 <tusho> Deewiant: show me how to implement for
14:46:00 <tusho> i don't think you can do it
14:46:08 <tusho> for (int i = 0; i < 5; i++) { printf("%i\n", i); }
14:46:11 <tusho> that is what it must run
14:46:47 <Deewiant> well, the trickier thing is that in this case it must take a variable definition as a function parameter
14:47:11 <Deewiant> so I guess the closest you can get is
14:47:26 <Deewiant> int i = 0; for (i; i < 5; i++) { ... }
14:47:52 <Deewiant> possibly with *i < 5 and (*i)++ instead
14:47:58 <tusho> that is the problem I want to solve
14:48:31 <tusho> Deewiant: not with just that <- i'm figuring out what to replace that with
14:48:33 <Deewiant> you need some kind of macro/template system or something
14:48:42 <tusho> i think i could possibly get away with less
14:48:45 <Deewiant> or if you want to be less general, something less general
14:55:01 <tusho> I had the code to MSPaint for some early version of win2k a while back.
14:55:40 <tusho> A friend had it and gave it to me. :P
14:55:47 <tusho> I don't know how they got it.
14:56:01 <tusho> Unfortunately, it required a makefile from a few directories up to build, so I couldn't. (Didn't wanna fuck with compiler settings until it worked.)
14:56:05 <tusho> I don't think I have it any more.
14:57:44 <Deewiant> there was that Win2000 source code leak
14:57:47 <Deewiant> which is probably where it's from
14:58:00 <tusho> i've read articles about it, i don't think there were many apps in it
14:58:05 <tusho> mostly socket code and some shell stuff and crap
14:58:15 <tusho> more plausable is from the nt4 leak
14:58:18 <tusho> but i'm not certain
14:58:21 <Deewiant> I think it did have some apps, such as paint and minesweeper or some such
14:58:29 <tusho> Deewiant: can it still be obtained?
14:58:34 <tusho> or has it been cracked down on
14:58:41 <tusho> yea, but I mean ... not gnutella
14:58:43 <Deewiant> you can't remove something from the internet
14:58:53 <tusho> but you can remove it from decent places
15:26:12 <tusho> http://groups.google.com/group/jquery-dev/browse_thread/thread/8411d58c4d66b934
15:28:16 <dogface> The problem with voting comments up and down is that it kind of assumes everyone likes the same thing.
15:28:37 <tusho> dogface: The point of up/downvoting comments on reddit is meant to be: downvote disruptive, useless etc
15:28:40 <tusho> but upvote worthful comments
15:28:42 <tusho> even if you disagree
15:28:53 <tusho> you're meant to upvote what you like, downvote what you don't
15:28:58 <tusho> so they use the exact same UI for very different things
15:29:09 <tusho> so it ends up that the up/down arrows on comments are misused.
15:31:17 <tusho> http://www.courageunfettered.com/stuf/mozillapics/ o_x
15:45:34 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | Like Perl ;).
16:05:26 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | Let's try that again.
16:05:31 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | my sentence was a bit obscure, gotta admit..
16:09:24 <fizzie> optbot: What, now you're speaking with topic changes?
16:09:24 <optbot> fizzie: I'll just put the tape display on.
16:09:34 <fizzie> optbot: Uh... what will that do?
16:09:35 <optbot> fizzie: your girlfriend likes my voice :(
16:10:05 <fizzie> optbot: Really? She never said anything about that to me...
16:10:05 <optbot> fizzie: ~exec sys.stdout("I AM NOT bsmnt_bot")
16:10:25 <fizzie> optbot: I know you're not bsmnt_bot; you two don't even look that much alike.
16:10:26 <optbot> fizzie: replace if_zero with its brainfuck equivalent...
16:18:10 <tusho> fizzie: you like these bots, don't you
16:19:03 <optbot> Deewiant: and what n-nary
16:19:04 <fizzie> Well, yes. Sure. They're so friendly.
16:19:14 <optbot> Deewiant: my io will have a sugar on top of it
16:19:23 <optbot> Deewiant: if yes a sec
16:19:37 <tusho> fizzie: it's funny, I never thought something could make optbot look sane
16:19:38 <optbot> tusho: [pigs.canFly].whileTrue["hello world".print!]
16:19:40 <tusho> then I heard fungot
16:19:42 <fungot> tusho: ctcp is such a metaclass as a class entirely in l no use of recursion on the java fnord faces when you say " structurally equal", and i'm pretty sure she heard it mentioned on the site it does...
16:20:40 <optbot> fungot: so ignoring that tusho sounds like hes on helium
16:20:42 <optbot> fungot: other way around
16:20:43 <fungot> optbot: sounds like a book and start writing the first 1l quine? :p. ugh i need to push fnord
16:20:43 <optbot> fungot: šÌ›ÌœÌÌžÌŸÌ Ì¡Ì¢Ì£Ì¤Ì¥Ì¦Ì§Ì¨Ì©ÌªÌ«Ì¬Ì̴̵̶̷̸̮̯̰̱̲̳̹̺̻̼̽̾̿̀Í͂̓̈́ͅÍ
16:20:45 <fungot> optbot: mikä on approaching ja mikä on peculiar. anteeks että olen tyhmä. tai no fnord minä. c++ is plain bad. thanks. :) but... it's x-treme!
16:20:46 <optbot> fungot: the id list will work the same here
16:20:47 <fungot> optbot: ( i could only find one book on general c, and wrapping is not so much
16:20:47 <optbot> fungot: Some people associate colors with letters, or tastes with sounds, or moods with textures, or some such.
16:21:03 <tusho> Deewiant: what was what
16:21:12 <tusho> you made optbot and fungot have a conversation
16:21:13 <fungot> tusho: agreed. originally, this wiki was to be expected. zaphod is lacking a head. some unfamiliar ( or simply unrecognizable) things in a interpreter for an arbitrary bf program? :) htmlprag?' questions.
16:21:15 <Deewiant> tusho: optbot's binary-looking scrawl
16:21:23 <tusho> Deewiant: japanese or something
16:21:28 <tusho> in the wrong encoding
16:21:31 <Deewiant> optbot: please, UTF-8 only here
16:21:31 <optbot> Deewiant: there's a perfectly good mailing list to which a bunch of people are already subscribed... :)
16:21:44 <Deewiant> tusho: where did it get it from
16:21:52 <tusho> Deewiant: a log somewhere.
16:22:03 <Deewiant> where does it get its data from in general
16:22:19 <tusho> every #esoteric log from the tunes.org sources, and fizzie's old personal logs
16:22:24 <tusho> which span from sometime in 2002 to when the tunes.org ones start
16:24:22 <Deewiant> anybody feel like grepping for that misencoded snippet? ;-)
16:24:38 <tusho> Deewiant: sure, sec
16:25:28 <tusho> It doesn't seem to enter properly, obviously.
16:25:50 <tusho> put a file containing that quote in a pastebin
16:25:54 <tusho> and i'll wget it from rutian
16:26:13 <tusho> just do what i said :P
16:26:41 <Deewiant> it'd be easier for you to just hex-edit a file :-P
16:26:55 <tusho> Rutian is sparse on tools.
16:29:40 <tusho> the server of eso-std.org, optbot, etc
16:29:58 <dogface> optbot is a despicable liar.
16:29:59 <optbot> dogface: see http://www.wikicities.com/wiki/Database_download for info about backups (it'd be about as complicated as wget and a cron job)
16:30:32 <tusho> $ grep "`cat asdf.txt`" *
16:30:32 <tusho> asdf.txt:šÌ›ÌœÌ]]ÌžÌŸÌ Ì¡Ì¢Ì£Ì¤Ì¥Ì¦Ì§Ì¨Ì©ÌªÌ«Ì¬Ì̴̵̶̷̸̮̯̰̱̲̳̹̺̻̼̽̾̿̀ÍAA͂̓̈́ͅÍ
16:32:37 <Deewiant> tusho: perl -lne 'BEGIN{$/=\1024} print "hit byte ", ($.-1) * 1024 + $-[0] if /\xc5\xa1/'
16:32:43 <tusho> Deewiant: if i gave you a rutian account would you figure it out ;)
16:32:45 <tusho> oh, that coul dwork.
16:33:15 <tusho> okay, it hits a lot of bytes but that's about it :D
16:33:41 <tusho> i just did perl -lne 'BEGIN{$/=\1024} print "hit byte ", ($.-1) * 1024 + $-[0] if /\xc5\xa1/' *
16:34:35 <tusho> hooray, almost searched
16:40:42 <tusho> 09:38:59 <ais523> ·?~@?~A?~B?~C?~D?~E?~F?~G?~H?~I?~J?~K?~L?~M?~N?~O?~P?~Q?~R??~T?~U?~V?~W?~X?~Y?~Z?~[?~\?~]?~^?~_?| ̴̡̢̧̨̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳??
16:40:42 <tusho> ?̶̷̸̹̺̻̼̽̾̿?~@?~A?~B?~C?~D?~E?| ͡.·?~@?~A?~B?~C?~D?~E?~F?~G?~H?~I?~JJ
16:40:43 <tusho> ?~K?~L?~M?~N?~O?~P?~Q?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~[?~\?~]?~^?~_?| ̡̢̧̣̤̥̦?
16:40:43 <tusho> 09:39:10 <ehird> ?~R?~S?~T?~U?~V?~W?~X?~Y?~Z ?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R??~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~R?~S?~T?~U?~V?~W?~X?
16:40:49 <tusho> Tons of jewnicode bombs.
16:41:39 <tusho> Hey, ais did it first!
16:41:43 <tusho> Then I played with it.
16:41:45 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
16:42:03 -!- Judofyr has joined.
16:42:07 -!- oklopol has joined.
16:42:08 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
16:49:14 <tusho> 14:09:54 --- nick: ehird -> ehirdclone
16:49:14 <tusho> 14:10:03 --- nick: ehirdclone -> ehirdc
16:49:15 <tusho> 14:10:31 --- nick: ais523 -> ehird
16:49:15 <tusho> 14:10:40 --- nick: ehird -> ais523
16:49:15 <tusho> 14:10:58 --- nick: ehirdc -> ehird
16:49:15 <tusho> 14:12:02 --- nick: ais523 -> ehirdc
16:49:17 <tusho> 14:12:07 --- nick: ehird -> AnMasterr
16:49:19 <tusho> 14:12:07 --- nick: ehirdc -> ehirdclone
16:49:21 <tusho> 14:12:13 --- nick: AnMasterr -> ehirdc
16:49:23 <tusho> 14:12:29 --- nick: ehirdclone -> ais523
16:49:25 <tusho> 14:12:34 --- nick: ehirdc -> ehirdclone
16:49:27 <tusho> 14:12:39 --- nick: ehirdclone -> ehird
16:49:29 <tusho> 14:12:49 --- nick: Sgeo -> Sgea
16:49:31 <tusho> 14:13:00 --- nick: Sgea -> Sgee
16:49:33 <tusho> 14:13:11 --- nick: ehird -> Sgeeee
16:49:35 <tusho> 14:13:14 --- nick: Sgeeee -> ehirdc
16:49:37 <tusho> 14:13:24 --- nick: Sgee -> Sgei
16:49:39 <tusho> 14:13:38 --- nick: Sgei -> Sgeu
16:49:41 <tusho> 14:14:01 --- nick: Sgeu -> Sgeo
16:50:00 <tusho> Judofyr: that's from the logs
17:05:18 <dogface> Good nick nobody did a /nick ihope.
17:21:05 -!- Corun has joined.
17:32:56 -!- Hiato has joined.
17:38:58 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
17:39:09 -!- oklopol has joined.
17:45:59 -!- ais523 has joined.
17:46:13 <fungot> ais523: hm. no comments on " fnord". right. i'm not doing anything to decrease the number of variables
17:47:03 <fizzie> Neh, optbot makes my poor fungot look all deranged-like.
17:47:04 <fungot> fizzie: i had my computer manufacturer replace my hard drive blew up, and an auxiliary function
17:47:29 <ais523> I feel really foolish, anyway
17:47:44 <ais523> I'm on Windows at the moment because I remembered to bring my laptop here but forgot to bring its power supply
17:47:48 <pikhq> I freaking love ignore.
17:48:20 <ais523> pikhq: yes, it lets everyone see just the bits of the channel they like, so it helps everyone as long as they're not offended by being ignored
17:48:42 <fizzie> It would be pretty hard to offend the bots, I think.
17:48:45 <pikhq> Hell of a lot better than saying "Shut the fuck up, fungot!"
17:48:46 <fungot> pikhq: ( that kela can't complain about pay... i write programs for a new language, i would
17:49:31 <AnMaster> ais523, no need for TCP/IP support directly in intercal since cfunge have SOCK since about a week
17:50:51 <AnMaster> fizzie, there is a bug in fungot I think
17:50:53 <fungot> AnMaster: hmmmmm... thats not going to refer me to a mistake. i still haven't gotten all that excited by emacs, but cmuscheme.el works well enough to need a new toplevel with threads already loaded? ie, you can
17:51:03 <AnMaster> it didn't detect it lost connection
17:51:20 <AnMaster> RAW >>> PING :orwell.freenode.net <<< *long ago* was last line
17:51:55 <ais523> AnMaster: I'll probably add it anyway for CLC-INTERCAL compatibility, as an expansion library
17:52:32 <AnMaster> fizzie, could be a cfunge bug of course, but I think I reflect if anything returns an error
17:52:48 <AnMaster> ais523, good news btw: cfunge compiles under ICC
17:53:14 <ais523> AnMaster: I've had an idea
17:53:31 <ais523> how easy would it be to compile cfunge under a non-POSIX C99 implementation?
17:53:43 <ais523> or one which, in fact, had basically no standard library
17:53:57 <AnMaster> ais523, hm well you need to mess up loading code since I use mmap() to make parsing code simpler
17:54:18 <AnMaster> oh and you have to drop SOCK, SCKE, PERL and a few other such fingerprints
17:54:28 <ais523> also mmap wouldn't be a problem
17:54:29 <AnMaster> mess with y command to push environment in some other way
17:54:36 <ais523> because I'm planning to implement I/O with a reverse mmap, so to speak
17:54:48 <ais523> files are kept in memory because there's nowhere else to keep them
17:54:54 <AnMaster> ais523, anyway FILE uses streams
17:55:06 <AnMaster> ais523, apart from that, there may be more
17:55:11 <ais523> so streams are harder than mmap, but still possible and in fact quite easy
17:55:19 <ais523> (you just need a couple of pointers inside the FILE structure)
17:55:23 <fizzie> AnMaster: I should be catching most places that reflect, but not all.
17:55:23 <AnMaster> I haven't really studied free-standing ones
17:55:33 <AnMaster> ais523, it uses streams for o too
17:55:45 <AnMaster> fizzie, well no idea where it locked up, didn't run it under a debugger
17:55:51 <ais523> AnMaster: you get no standard functions at all, and only the header files which are nothing but macros
17:56:11 <AnMaster> ais523, you would need to provide malloc/calloc/free/strdup and co.
17:56:12 <ais523> so that's limits.h, iso646.h, float.h, and one other which I can't remember right now
17:56:24 <ais523> AnMaster: that shouldn't be too hard, everyone uses malloc
17:56:32 <ais523> and strdup is trivial to write once you've got malloc
17:56:43 <AnMaster> ais523, and there are probably a lot more, for example math.h stuff
17:56:44 <ais523> so I'm going to have to implement malloc somehow
17:57:02 <ais523> AnMaster: ugh, looks like I'm going to have to get a math library from somewhere then
17:57:07 <ais523> I'm using floating point emulation as-is
17:57:18 <ais523> which is a pain because of all the bitwise operations
17:57:38 <AnMaster> ais523, well I use sinf() and sinl() they are C99, but if you don't mind always using double you could just replace the f/l versions with the plain ones
17:57:52 <AnMaster> ais523, think of fingerprints like FPDP FPSP
17:57:59 <AnMaster> oh they assume float is 32-bit and double 64-bit
17:58:03 <ais523> AnMaster: float is easier than double, or at least faster
17:58:07 <AnMaster> I think they will crap out *badly* if that isn't true
17:58:10 <ais523> and I went and stuck with usual 32-bit assumptions for the compiler
17:58:28 <AnMaster> ais523, hm what else, I use an xml writing library, but it is included in lib, there are a few more things in lib
17:58:33 <ais523> char=8, short=16, int=32, long=32, long long=64, float=32, double=64
17:58:34 <tusho> ais523: the bf compiler?
17:58:40 <AnMaster> ais523, anyway I use a lot more standard routines
17:58:48 <ais523> AnMaster: not very easy then
17:58:49 <tusho> ais523: get newlib working on it
17:58:57 <ais523> however it would probably be easiest to use something like newlib
17:58:59 <AnMaster> ais523, I haven't really looked
17:58:59 <tusho> just have to port the asm bits and such
17:59:18 <tusho> ais523: i has idea
17:59:28 <tusho> http://sourceforge.net/projects/pdclib try this perhaps
17:59:29 <AnMaster> ais523, I have assumed POSIX-2001 and C99 when I coded
17:59:33 <tusho> when i did os dev that seemed the best choice
17:59:33 <ais523> anyway, I use the nonstandard long double = 64 (and thus a synonym for double) because the C standard says I'm allowed to
17:59:41 <tusho> and very easy to modify to get working on your stuff
17:59:52 <tusho> i.e. it's designed that you can configure it and perhaps change a few bits and it'll work
18:00:03 <AnMaster> ais523, well that works ok, I only use long double in a few cases but non where size matters
18:00:07 <ais523> ah, public domain will be useful as this project is such a mess of licences at the moment
18:00:10 <AnMaster> it would be 80 bits on x86 anyway
18:00:21 <tusho> ais523: hasn't had a release since 2006 i think maybe there have been checkins since then though
18:00:27 <tusho> still, it's a good basis if nothing else
18:00:28 <AnMaster> # warning "cfunge requires the floating point support to conform to the IEC 60559 floating-point standard in order to work. Hoping this will work anyway...";
18:00:31 <tusho> the code is very clear and clean
18:00:39 <ais523> I might just make the whole thing GPL3+ though, that would be legal and simplify matters
18:00:40 <AnMaster> I assume your stuff with spew warnings
18:00:56 <ais523> tusho: the version of gcc it's based on is GPL3+
18:01:06 <ais523> and you seriously don't want me to rewrite gcc...
18:01:07 <tusho> does that mean you can't make it gpl2
18:01:19 * tusho stabs richard stallman
18:01:40 <tusho> Deewiant: totally.
18:01:45 <tusho> i don't mind gpl2, really
18:01:47 <ais523> tusho: why are you so upset with gpl3?
18:01:58 <tusho> ais523: it makes the gpl more gply :)
18:02:01 <AnMaster> BSD means companies can reuse code without giving anything back
18:02:05 <tusho> gpl2 has a barely-acceptable level of gpl
18:02:09 <tusho> AnMaster: yes, and?
18:02:23 <tusho> if they add an awesome modification and it makes them rich and famous and they use it
18:02:24 <AnMaster> tusho, well that is what BSD doesn't suite me
18:02:36 <tusho> AnMaster: A license is not the correct place to argue against capitalism.
18:02:42 <AnMaster> since I consider that everyone should share back
18:02:51 <tusho> the gpl is just propaganda that polyglots as a license.
18:03:04 <tusho> AnMaster: That still denies commercial use.
18:03:16 <tusho> A license is not the correct place to argue against capitalism. there are perfectly good outlets for that
18:03:16 <AnMaster> tusho, which is what I want, unless they give back
18:03:19 <tusho> but the gpl is just unproductive.
18:03:31 <tusho> AnMaster: but not commercial use with modification without giving back
18:03:36 <ais523> tusho: GPL3 is more forgiving than GPL2 on people who mess up
18:03:48 <AnMaster> tusho, well you can still sell a linux distro containing GPL software
18:03:49 <tusho> AnMaster. say google use your crappy search library but add tons of amazing things and it makes them the best search engine ever
18:03:57 <ais523> tusho: it allows commercial use with modification without giving back as long as they don't redistribute the result
18:03:58 <tusho> their business would be OVER if they had to release those changes
18:04:04 <tusho> it's just unproductive
18:04:10 <ais523> inhouse use of modified GPL2/GPL3 is fine even without backcontributing
18:04:12 <tusho> and if you'd prefer everyone just shared and be happy, well, that's a political position
18:04:13 <Deewiant> AnMaster: hence, you kill google! Stop!
18:04:16 <tusho> == not the place for a license.
18:04:23 <Deewiant> Google is dying because of YOU!
18:04:31 <tusho> Deewiant: ok, stop exaggerating
18:04:34 <AnMaster> Deewiant and tusho: stop trolling
18:04:40 <tusho> i was not trolling, AnMaster
18:04:47 <tusho> i was trying to have an argument
18:04:56 <tusho> but, of course, i'm telling you that you're wrong
18:04:59 <tusho> = obviously trolling, right?
18:04:59 <AnMaster> <ais523> inhouse use of modified GPL2/GPL3 is fine even without backcontributing
18:05:18 <tusho> ais523: yes, but what if google use it in a desktop product
18:05:20 <ais523> <tusho> AnMaster. say google use your crappy search library but add tons of amazing things at it makes them the best search engine ever <-- actually they could do that even under GPL3 without backcontributing unless they sold or gave the code to someone else
18:05:22 <tusho> desktop search or whatever
18:05:23 <AnMaster> however making money from someone else's work without giving anything back...
18:05:31 <tusho> ais523: see, it's silly
18:05:38 <tusho> a website is not different from a dekstop app, fundamentally
18:05:43 <AnMaster> ais523, well I would use AGPL for web apps anyway
18:06:05 <AnMaster> so of course you are a capitalist
18:06:06 <ais523> tusho: well suppose the desktop search which incorporates your code is buggy
18:06:08 <tusho> oh look, more AnMaster trolling
18:06:12 <tusho> 'hahaha you use apple products'
18:06:31 <AnMaster> tusho, I just do the same as you :P
18:06:40 <tusho> yea, i was trying to have a reasoned argument
18:06:48 <tusho> but fuck that, it's impossible to disagree with you without being called a troll
18:06:51 <tusho> you are on ignore.
18:07:13 <Judofyr> echo "AnMaster" >> .gitignore
18:07:20 <tusho> Judofyr: /ignore AnMaster
18:07:24 <tusho> beaten by mere characters!
18:07:34 <AnMaster> ais523, anyway back to the topic... you will need to drop some fingerprints, all floating point are in various fingerprints btw
18:07:37 <fizzie> That's a curious definition of "beaten" there.
18:08:01 <AnMaster> ais523, further, file IO will need to be changed
18:08:07 <AnMaster> loading can be done from a string
18:08:07 <Judofyr> tusho: now that's what I call an idea!
18:08:13 <AnMaster> ais523, while writing use streams
18:08:17 * tusho kills Judofyr before he implements
18:08:31 <ais523> Judofyr: wouldn't that command mean that files called AnMaster wouldn't be stored in your git repository?
18:08:41 -!- KingOfKarlsruhe has joined.
18:08:49 <ais523> AnMaster: don't worry, streams are not a hard part of the C library to implement when all your files are stored in memory
18:09:08 <AnMaster> ais523, and well I use extern char **environ; need to handle that in some way
18:09:16 <Judofyr> ais523: file is kinda like a person, and repository is kinda like a channel....
18:09:28 <AnMaster> ais523, not sure what else there is...
18:09:51 <AnMaster> ais523, well STDIO for terminal, but that should be easy
18:10:01 <ais523> AnMaster: harder than streams actually, it needs to be special-cased
18:10:05 <AnMaster> ais523, I use getline to read a line at once, then use my own internal buffer
18:10:19 <ais523> AnMaster: there is no other sort in brainfuck
18:10:19 <AnMaster> ais523, so fflush() and such are called
18:10:21 <oklopol> Judofyr: i'd never have guessed that
18:10:34 <tusho> ais523: stop talking to AnMaster, it's confusing without his context.
18:11:00 <ais523> tusho: why not, I'm fine with people ignoring each other but they should learn to live with half-conversations
18:11:07 <tusho> ais523: it was a joke
18:11:13 <tusho> ais523: has AnMaster commented on my ignoring of him yet
18:11:24 <ais523> tusho: no, we changed the subject
18:11:40 <ais523> tusho: for all I know e's ignoring you too
18:11:48 <tusho> oh, that'd be nice
18:11:50 <tusho> can you ask him if he is?
18:11:55 <oklopol> everyone stop talking, i've ignored everyone, and i don't like missing anything
18:12:31 <oklopol> i hate it when people make a big deal out of ignoring others
18:12:42 <oklopol> i personally don't give a shit if i'm being ignored
18:12:54 <AnMaster> ais523, memcpy(), strcpy, various other stuff from string.h
18:12:56 <tusho> oklopol: you said everyone should stop talking
18:13:11 -!- oklopol has quit (Read error: 54 (Connection reset by peer)).
18:13:14 <ais523> AnMaster: gcc needs the mem* functions in the standard library to work
18:13:17 -!- oklopol has joined.
18:13:23 <fizzie> If you _really_ want to have conversations-via-an-intermediary, you can always use fungot's ^echo if you don't mind the duplicationary. (But don't do that.)
18:13:24 <fungot> fizzie: seems to me to do that in the " better" language.
18:13:24 <oklopol> really i guess it's just making the statement people find me useless or annoying, but if they're ignoring me, what do i care what they think
18:13:37 <AnMaster> ais523, hm apart from that... fprintf() snprintf() iirc
18:14:02 <tusho> ^echo yo hi AnMaster
18:14:02 <fungot> yo hi AnMaster yo hi AnMaster
18:14:04 <AnMaster> atof() iirc in the floating point fingerprints
18:14:08 <ais523> AnMaster: I'm definitely going to try to find someone else's implementation of vsprintf, once you have that you can get all the others
18:14:13 <ais523> well, vsprintf and vsscanf
18:14:17 <AnMaster> well I'm not ignoring tusho, nor do I think he is ignoring me
18:14:37 <ais523> luckily it's easy to find an infinitely long string buffer in a brainfuck program
18:15:00 <AnMaster> ais523, since I need to "stop one digit before overflow" rather than "clamp to MAX_INT"
18:16:11 <AnMaster> you need a fixed size for them
18:16:12 <ais523> hmm... another potential problem, is 16MB enough memory?
18:16:29 <ais523> AnMaster: pointers are fixed size, they're 26 bits long padded to 32
18:16:41 <ais523> 2 bits for the sort of memory to look in, 24 for the location there
18:16:41 <AnMaster> ais523, um, depends. Normal programs: yes mycology: no
18:16:45 <AnMaster> ais523, oh I found another thing
18:17:25 <ais523> argh, that's pretty tricky in brainfuck, I think I'll use the DJGPP solution
18:17:33 <ais523> which is to make the function always error out or return invalid data
18:17:38 <AnMaster> ais523, sysinfo need date and such too
18:17:49 <ais523> DJGPP's implementation of fork looks something like pid_t fork() {errno=ENOMEM; return -1;}
18:17:50 <AnMaster> ais523, well in that case I think cfunge may abort() on gettimeofday()
18:18:07 <AnMaster> ais523, anyway 16 MB isn't enough for mycology
18:18:14 <ais523> it's a lot simpler than cygwin's, but less useful
18:18:27 <Deewiant> AnMaster: because of ff*ky or something else as well?
18:18:30 <AnMaster> since HRTI does a test calling y several times
18:18:44 <AnMaster> I think without HRTI memory usage peek at around 11 MB
18:18:46 <ais523> AnMaster: well I'd probably try to compile fingerprintless cfunge
18:18:46 <Deewiant> yeah, I guess I could do something about that
18:18:55 <ais523> I'd like to compile C-INTERCAL too, but it has problems due to being a compiler
18:19:01 <AnMaster> so it is probably a bit more now
18:19:04 <ais523> which is that I'd have to port gcc to brainfuck to really get it working
18:19:13 <AnMaster> ais523, hm even core does some such stuff
18:19:17 <ais523> as in, write a brainfuck version of gcc
18:19:40 <AnMaster> time(NULL) to get current time in y
18:19:59 <AnMaster> befunge-93 would be a lot easier to handle there
18:20:03 <ais523> well y is going to have to lie in brainfuck without something like PSOX
18:20:09 <AnMaster> but befunge-98 need a lot more system interaction
18:20:22 <AnMaster> ais523, well you will have to claim you don't handle i or o either then
18:20:39 <AnMaster> ais523, and you will need to fake some environment variable and command line arguments
18:20:45 <ais523> shouldn't be much of a problem, really
18:20:47 <AnMaster> because they are both terminated by double \0
18:20:58 <ais523> I might try to do a GregorR and port a miniature OS to brainfuck
18:21:02 <AnMaster> anyway if either is empty it cause confusion
18:21:18 <AnMaster> ais523, anyway the hash library I use for funge space may do other stuff
18:21:43 <AnMaster> mmap() and STDIO are, various string and memory routines
18:22:43 <ais523> AnMaster: using a deterministic method like Mersenne Twister, possibly prompting for random number seed on startup
18:22:55 <ais523> I could have it as an -mprompt-for-seed option to gcc, for instance
18:23:03 <AnMaster> ais523, I initialise it from current time
18:23:25 <ais523> AnMaster: it's easy enough to define srandom() to a nop
18:24:08 <ais523> but the more conforming way would be to get time() to return a magic value that causes srandom() to be a nop, and make it work in any other case
18:24:22 <AnMaster> ais523, fingerprints I *remember* use floating point: 3DSP, BASE, FPSP, FPDP
18:24:38 <tusho> this is making no sense to me
18:24:42 <ais523> AnMaster: luckily gcc comes with floating point emulation libraries
18:25:07 <AnMaster> if (gettimeofday(&tv, NULL)) {
18:25:07 <AnMaster> perror("Couldn't get time of day?!");
18:25:16 <ais523> AnMaster: that's POSIX, but I can handle it the same way as time() if needed, I'll get the C standard stuff working first, though
18:25:26 <Deewiant> side note: how to display tab as something other than ^I in irssi
18:25:35 <AnMaster> I never claimed it didn't make use of POSIX stuff
18:25:57 <ais523> AnMaster: I know, I was wondering how easy it would be to rip the problematic parts of POSIX out of it, probably not too hard but it would disable features
18:26:04 <ais523> running it unmodified would just be crazy
18:26:19 <AnMaster> ais523, oh you want to drop most fingerprints out, of you need to link ncurses for example
18:26:22 <fizzie> Deewiant: /set expand_escapes on or something like that.
18:26:23 <ais523> Deewiant: I don't, but at least it's better than Konversation which displays tab as toggling italics
18:26:27 <ais523> which is very confusing
18:26:33 <fizzie> Deewiant: I don't know what else it expands when that toggle is on.
18:26:54 <AnMaster> well mine display it as a single space
18:27:26 <Deewiant> fizzie: isn't that for expanding \t to a tab character
18:27:31 <AnMaster> on the other hand I guess my ERC is nowdays spending more time in the hooks in my .emacs than in the core code ;)
18:27:35 <Deewiant> so \t becomes that fugly ctrl-I as well :-P
18:27:50 <ais523> here on Mibbit it displays it as 8 spaces, I think
18:28:03 <fizzie> Oh, it did that thing.
18:28:07 <Deewiant> I guess I'll have to dig into the source and make a modification
18:28:21 <fizzie> Deewiant: You could plug a Perl script into it too if you like that more.
18:28:30 <AnMaster> ais523, anyway STDIO is needed for Befunge
18:28:41 <Deewiant> I might not like it more but it might be easier :-P
18:28:47 <AnMaster> ais523, buffered STDIO too to be exact
18:29:02 <AnMaster> ais523, and working fflush(stdout)
18:29:04 <ais523> AnMaster: in what way does it need buffering?
18:29:16 <ais523> line buffering is easy because it hits buffering on the BF interp itself
18:29:17 <AnMaster> ais523, well the code of cfunge assumes that is happening
18:29:34 <ais523> and most good BF interps have a setting to flush after each character of output
18:29:38 <AnMaster> ais523, I read one line of input at a time
18:29:53 <ais523> AnMaster: well you get one line of input at a time
18:30:35 <ais523> does that do much the same thing as the ggets function that keeps getting posted to comp.lang.c?
18:30:47 <fizzie> Deewiant: scripts.irssi.org has tab_stop.pl.
18:31:06 <fizzie> Deewiant: "Replaces the evil inverted I with a configurable number of whitespaces"
18:31:18 <AnMaster> ais523, any glibc system would have it in glibc
18:31:22 <ais523> AnMaster: reads to the next newline and returns a malloced string
18:31:40 <AnMaster> ais523, I use a few gnulib functions like this for glibc specific ones
18:31:48 <AnMaster> ais523, well yes that is what it does
18:31:58 <AnMaster> anyway strndup() from gnulib too
18:32:13 -!- psygnisfive has joined.
18:32:15 <ais523> tusho: AnMaster: dogface: I thought of a really evil way to do command line arguments for an esoprogram, I might use it for C-INTERCAL
18:32:25 <ais523> basically, a command line argument is one character
18:32:27 <ais523> including control codes
18:32:35 <ais523> except it goes from a # to the next newline
18:32:42 <ais523> that way you can have multicharacter options
18:32:54 <ais523> so for instance you might have -a^D#version
18:32:58 <tusho> http://waffles.fm/main.html <-- has waffles.fm bitten the dust?
18:33:04 <ais523> as a command line argument with 4 options
18:33:13 <tusho> "Admin Login" is just "Login".
18:33:14 <ais523> (^D represents control-D here)
18:33:30 <ais523> it was inspired by Nethack
18:33:32 <AnMaster> ais523, cfunge uses getopt() to parse command line arguments, it assumes the strict POSIX variant, so once it hits a non-parameter the rest is befunge program name and command line arguments for that program
18:33:44 <tusho> http://ok.org/ totally needs something cooler than what is there
18:33:45 <Deewiant> the evil inverted I is stronger than Perl
18:33:49 <ais523> those controls work great interactively, not so much over a command line, which is where the evil comes from
18:34:10 <ais523> AnMaster: well that's sane, getopt is easy to reimplement anyway
18:34:39 <fizzie> Deewiant: Maybe it only replaces on privmsgs by others? Here's a tab: ... I hope that was a tab.
18:34:41 <AnMaster> ais523, anyway if you don't use buffered STDIO a lot of befunge programs will behave strange
18:34:49 <AnMaster> ais523, for example returning too early
18:35:09 <AnMaster> ais523, however you can tell that you use unbuffered in y
18:35:19 -!- ais523 has quit ("http://www.mibbit.com ajax IRC Client").
18:35:28 <AnMaster> but then programs like the wumpus in befunge won't work
18:35:33 -!- ais523 has joined.
18:35:39 <AnMaster> ais523, what was the last you saw?
18:35:45 <ais523> I was halfway through a sentence too
18:35:50 <AnMaster> <AnMaster> ais523, anyway if you don't use buffered STDIO a lot of befunge programs will behave strange
18:35:50 <AnMaster> <AnMaster> ais523, for example returning too early
18:35:51 <ais523> I think I hit back on my browser by mistake
18:35:53 <AnMaster> <AnMaster> ais523, however you can tell that you use unbuffered in y
18:35:56 <AnMaster> <AnMaster> but then programs like the wumpus in befunge won't work
18:36:02 <AnMaster> there was stuff other ppl said too
18:36:13 <ais523> AnMaster: it will be buffered the same way as the BF interp
18:36:23 <ais523> most BF interps I know line-buffer input
18:36:25 <AnMaster> ais523, you have to say which way in y
18:36:38 <AnMaster> ais523, also it need to flush stdout before any input
18:36:40 <fizzie> Deewiant: You probably need to signal_add it to some other sensible signal in addition to only "server incoming". But at least you're not starting from scratch.
18:36:44 <AnMaster> cfunge calls fflush() to do that
18:36:47 <ais523> AnMaster: I can add -mbuffered-input, I'll get the user to tell me during compile
18:37:09 <ais523> AnMaster: you can add new options to gcc
18:37:14 <ais523> to tell you about the target CPU
18:37:17 <AnMaster> ais523, well buffered output too
18:37:22 -!- psygnisf_ has joined.
18:37:22 <ais523> in this case the target "CPU" is actually a brainfuck interpreter
18:37:24 <Deewiant> fizzie: that may be what the FIXME: experimental is about :-P
18:37:31 <AnMaster> anyway I already do my own buffer for input
18:37:34 <ais523> so the user has to explain about the interp
18:37:44 <AnMaster> so input is less of a problem than output
18:37:45 <fizzie> Deewiant: The whole script looks a bit iffy.
18:37:48 <ais523> I assume 8-bit wrapping, though, it's much more difficult and time-consuming otherwise
18:38:10 <AnMaster> ais523, anyway another issue, threads in befunge, I plan to create a fingerprint that will only block the current thread on IO, a new version of SOCK
18:38:18 <Deewiant> fizzie: also, I don't think I can /set anything to only spaces
18:38:30 <AnMaster> oh and for such I need non-blocking IO too
18:38:34 <ais523> AnMaster: well don't expect that to work in brainfuck, possibly not in C-INTERCAL either
18:38:41 <ais523> non-blocking IO is fine for C-ITNERCAL though
18:39:07 <AnMaster> that will be in fingerprints of course
18:39:27 <ais523> AnMaster: select() will block the INTERCAL program too, but that's expected behaviour in a single-threaded program and I don't support concurrent
18:39:31 <AnMaster> ais523, oh how does variable length structs work in GCC?
18:39:38 <AnMaster> I assume they are taken care of at a higher level?
18:39:49 <AnMaster> cfunge use some structs with a foo bar[]; at the end
18:39:56 <ais523> AnMaster: they're pretty trivial really, it just takes the address of the last struct member
18:40:10 <ais523> gcc used to have that as an extension
18:40:17 <ais523> but its syntax was foo bar[0];
18:40:32 <AnMaster> The difference between -fno-peephole and -fno-peephole2 is in how they are
18:40:33 <AnMaster> implemented in the compiler; some targets use one, some use the other, a few use both.
18:40:38 <ais523> not sure if they accept C99 syntax too, probably they do because that probably wouldn't be a difficult change
18:40:39 <AnMaster> what is the difference exactly?
18:41:07 <ais523> AnMaster: -fno-peephole turns off RTL to asm peepholing, -fno-peephole2 turns off RTL to RTL peepholing
18:41:12 <AnMaster> ais523, gcc accepts the C99 syntax with -std=c99 at least
18:41:21 <ais523> RTL is the last intermediate language in the chain of languages that gcc translates the program between
18:41:25 <ais523> and is somewhat processor-dependent
18:41:46 <AnMaster> I remember GLIMPS or something like that being mentioned?
18:41:47 <fizzie> Deewiant: At least /set does not seem to be trimming any leading whitespace, so maybe just "/set whatever " to set to " " or something. Haven't tried.
18:41:57 <ais523> AnMaster: well, each frontend has its own internal representation, which is translated to GENERIC which is common between most of them
18:42:03 <Deewiant> fizzie: yes, I am messing around with it now and testing in a query
18:42:30 <ais523> that's translated to GIMPLE in a more-or-less processor-agnostic way (although the way it translates varargs is dependent on processor)
18:42:34 <tusho> ais523: i invented a method of encoding
18:42:42 <ais523> then from GIMPLE it's translated to RTL
18:42:45 <tusho> you type out some keys, then your reciever types them out and they make shaped
18:42:53 <AnMaster> ais523, does your stuff handle varargs?
18:43:00 <tusho> (space means end of shape, start new one)
18:43:08 <ais523> AnMaster: I think so, although I haven't tested that, or anything else for that matter
18:43:11 <AnMaster> ais523, well it needs to handle printf
18:43:23 <ais523> it's meant to handle varargs, and all other C89 features, also all C99 features that gcc have implemented
18:43:45 <AnMaster> ais523, an idea for how to check for what functions are used just hit me
18:43:51 <ais523> tusho: I used to do that using calculator keypads
18:44:01 <tusho> ais523: nm=never mind
18:44:05 <tusho> ais523: here, have a smiley face
18:44:09 <ais523> AnMaster: I'm on Windows at the moment
18:44:17 <AnMaster> nm - list symbols from object files
18:44:19 <ais523> due to forgetting to bring my laptop's power supply here
18:44:25 <AnMaster> Display the dynamic symbols rather than the normal symbols. This is only meaningful for dynamic objects, such as certain types of
18:44:34 <AnMaster> well it lists imported functions too
18:44:53 <AnMaster> http://rafb.net/p/0ge9DV43.html
18:45:00 <fizzie> objdump would probably do it with different flags too.
18:45:00 <ais523> AnMaster: I used nm to find out which symbols in C-INTERCAL could cause namespace clashes and mangled them all
18:45:05 <ais523> nm won't work for gcc-bf though
18:45:09 <AnMaster> of course gcc will inline calls to memcpy and such on x86/x86_64 iirc
18:45:24 <ais523> partly because I implemented as as a front-end to cp
18:45:29 <ais523> and ar as a front-end to tar
18:45:38 <ais523> it seemed easiest, as the linker has to work on the asm implementation
18:45:50 <AnMaster> ais523, anyway a lot of those are only used in fingerprints, there is no way to disable compiling fingerprints, nor is it something I plan to do
18:45:55 <AnMaster> you can disable them at runtime
18:45:55 <ais523> this means that libgcc.a is in fact just a tar.gz of asm files with .o extensions
18:46:01 <AnMaster> which is useful in mycology sometimes
18:46:13 <AnMaster> and want to not have to scroll up a lot
18:46:19 <ais523> AnMaster: disabling compiling fingerprints is trivial, you just remove them all from the fingerprint description file
18:46:21 -!- psygnis__ has joined.
18:46:21 <tusho> ais523 is not interested :(
18:46:33 <ais523> tusho: I am slightly, but can't figure out what you were trying to say
18:46:36 <AnMaster> ais523, except it will want one at least I think...
18:46:40 <tusho> ais523: it's a smiley face
18:46:59 <tusho> cde4567ujmnbvcrtfvg
18:47:02 <tusho> perhaps more legible
18:47:03 <ais523> AnMaster: NULL is trivial
18:47:05 <oklopol> the smiley face is everything that has been said after tusho's last message
18:47:11 <oklopol> if anyone needed that cleared up
18:47:11 <AnMaster> ais523, I think strange stuff may happen if it tries to use a for loop to iterate over a 0 length array...
18:47:26 <AnMaster> since I use sizeof(array) / sizeof(record) nowdays
18:47:47 <oklopol> i think i'm gonna poo and shit (pun intended) ->
18:47:57 <ais523> AnMaster: C's control structures are all designed to handle the 0-length edge case incidentally
18:48:01 <AnMaster> ais523, anyway... http://rafb.net/p/0ge9DV43.html are all the functions used by cfunge here
18:48:04 <ais523> except do-while, but you normally only use that one deliberately
18:48:30 <ais523> but NULL surely doesn't require standard library support
18:48:34 <ais523> nor ROMA for that matter
18:48:40 <AnMaster> there are a few more ones iirc
18:49:03 -!- psygnisfive has quit (Read error: 110 (Connection timed out)).
18:49:07 <AnMaster> tusho, map some instructions to push roman numerals
18:49:10 <ais523> tusho: interprets capital letters as roman numerals
18:49:43 <AnMaster> ais523, SUBR, INDV shouldn't use anything except malloc() and such either if even that
18:50:07 <AnMaster> REFC use malloc() but you can't get away without malloc() for cfunge at all
18:50:09 <ais523> well obviously I'm going to have to implement malloc as just about every C program ever uses it
18:50:23 <AnMaster> ais523, malloc() calloc() free() memset() and a few more
18:50:38 <tusho> AnMaster-without-anmaster is pretty zen
18:50:43 <ais523> AnMaster: I think I'll implement all of stdlib.h, and find an implementation of stdio.h somewhere
18:50:48 <tusho> you get one person stating obvious things in a row for ages
18:51:13 -!- psygnisfive has joined.
18:51:34 <ais523> gcc needs some headers on the target to exist to compile: string.h stdlib.h stdio.h time.h sys/types.h unistd.h
18:51:39 <ais523> but I only edited the last two with touch
18:51:43 <ais523> as they aren't standard C
18:51:47 <tusho> 10:14:17 <AnMaster> well I'm not ignoring tusho, nor do I think he is ignoring me
18:51:53 <tusho> i was just logreading and saw that
18:52:02 <tusho> AnMaster, you are actually on ignore :p
18:52:13 <ais523> tusho: happy mailman reminders day by the way
18:52:14 <fizzie> tusho: What's the point of the /ignore if you logread the stuff still?
18:52:21 <tusho> ais523: beat you to it yesterday
18:52:25 <tusho> for the australian agora list :)
18:52:32 <tusho> fizzie: i wanted to see if he's commented on my ignoring
18:52:40 <ais523> tusho: I wasn't here yesterday, and yesterday isn't mailman reminders day except in Australia
18:52:52 <AnMaster> just because he doesn't like GPL and wants to troll, then goes on to ignore me
18:53:31 <tusho> 10:49:07 <AnMaster> tusho, map some instructions to push roman numerals
18:53:35 <tusho> why did you answer to /dev/null...
18:53:41 -!- psygnisf_ has quit (Connection timed out).
18:54:13 <tusho> 10:52:52 <AnMaster> just because he doesn't like GPL and wants to troll, then goes on to ignore me
18:54:22 <tusho> sorry trying to have a reasoned argument, i'll just blindly agree with you in future
18:54:22 <ais523> heh, at the moment ABI has a %devnull register which throws away data moved into it
18:54:27 <AnMaster> I do wish he stops highlighting me though
18:54:27 <ais523> which will be optimised away later
18:54:30 <tusho> well, after i stop /ignoring you
18:54:32 <AnMaster> and anyway it can't be called ignore
18:54:34 <tusho> i might just forget for a year or so
18:54:46 <psygnisfive> so someone tell me how C++'s grammar is unrestricted please
18:54:49 <tusho> 10:54:27 <AnMaster> I do wish he stops highlighting me though
18:54:53 <tusho> AnMaster: AnMaster AnMaster AnMaster AnMaster
18:54:56 <tusho> psygnis__: logread.
18:55:00 <tusho> ais523 linked to an article
18:55:11 <ais523> psygnisfive: C++ is compile-time TC
18:55:25 <AnMaster> ais523, why such a strange register
18:55:43 <ais523> psygnisfive: using the template resolution mechanism
18:55:46 <AnMaster> ais523, anyway brainfuck doesn't *have* registers
18:55:50 <tusho> perhaps I'll just write a log searcher first
18:55:56 <tusho> yeah, good idea tusho
18:56:04 <AnMaster> also tusho: I too was trying to have a reasoned argument
18:56:05 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
18:56:05 <tusho> how can i make sure it already has the most recent logs...
18:56:06 -!- oklofok has joined.
18:56:07 <ais523> AnMaster: due to generating code from filling in templates
18:56:16 <tusho> ah, wait, it can't log-tail then
18:56:16 <AnMaster> you just said what you thought
18:56:31 <ais523> and register in asm = data stored at a fixed location on the tape in BF
18:56:56 <ais523> AnMaster: sorry, I meant to higlight psygnisfive on the comment before last rather than you
18:57:03 <AnMaster> ais523, anyway how will you handle pointers? I think the generated code would be spectacularly slow
18:57:05 <ais523> but I'd been talking to you so much I typed the wrong name
18:57:19 <oklofok> compile-time tc equals unrestricted grammar?
18:57:28 <ais523> AnMaster: yes, it will be, although pointers aren't that hard (just slow) and I've thought up several optimisations
18:57:38 <tusho> psygnisfive: god, stop going oklopol! whenever he talks
18:57:56 <ais523> oklofok: I don't think so necessarily, it rather depends on whether the grammar is the only thing relevant at compile-time
18:58:04 <oklofok> psygnisfive: having a tc type system automatically makes it impossible to parse in general?
18:58:19 <AnMaster> I mean 1) pointers, lots of them 2) cells in funge space can't be less than 4 bytes
18:58:20 <ais523> it could be, say, that the grammar was type 3 but some other step in the compilation was TC
18:58:28 <psygnisfive> unrestricted grammars are computationally equivalent to turing complete machines
18:58:35 <AnMaster> ais523, about every app would break with sub-32-bit cells
18:58:36 <ais523> AnMaster: well pointers are 26 bits, padded to 32
18:58:45 <ais523> and the cells are 32-bit
18:58:54 <AnMaster> ais523, that isn't brainfuck...
18:58:57 <psygnisfive> so if C++ is compile-time TC then theres some unrestricted grammar that goes along with it
18:59:05 <oklofok> psygnisfive: everyone knows that; ais523: we were talking about whether parsing is tc, not just compilation; tusho: true
18:59:06 <AnMaster> brainfuck got unsigned 8 bit...
18:59:09 <ais523> AnMaster: yes it is, the pointers are stored in 4 8-bit brainfuck cells
18:59:19 <ais523> just like on an x86 system
18:59:25 <tusho> oklofok: wait which part was true
18:59:26 <ais523> gcc is fine with storing data in more than one cell
18:59:33 <tusho> my telling psygnisfive not to okoping all the time?
18:59:38 <AnMaster> ais523, anyway cfunge uses function pointers
18:59:42 <oklofok> tusho: for c++ it is true, in case it's true
18:59:45 <ais523> AnMaster: they're fine too
18:59:45 <AnMaster> ais523, how the heck do you handle that?
18:59:48 <psygnisfive> oklofok: i know. apparently C++ is TC at compile time. earlier tho they said the syntax of C++ was itself unrestricted
18:59:51 <oklofok> i'm not sure whether it is
18:59:57 <AnMaster> ais523, huh... how can you do that in brainfuck
19:00:02 <oklofok> psygnisfive: yeah i'm a bit confused too
19:00:08 <ais523> AnMaster: each segment of code has a number
19:00:10 <AnMaster> ais523, you need to jump in code a lot
19:00:12 <tusho> psygnisfive: it is
19:00:15 <psygnisfive> because unrestructed grammars are a pain in the ass to parse.
19:00:18 <tusho> ais523: yo, you link him to the article.
19:00:34 <ais523> so every goto, label, and function call in the program is translated to a break in the BF code
19:00:43 <ais523> where it stores the number of the next block of code in some dedicated registers
19:00:52 <AnMaster> ais523, oh and you probably want to sed out all occurrences of the word "inline" in cfunge ;P
19:00:52 <ais523> then the whole body of the code is effectively a switch in a loop
19:00:57 <ais523> tusho: I don't know where it is offhand
19:01:00 <AnMaster> or the resulting code would be HUGE
19:01:24 <ais523> AnMaster: why, inline gives a better speed gain in BF than it does in other langs
19:01:29 <ais523> the resulting code's going to be HUGE anyway
19:01:39 <AnMaster> ais523, well code could grow a lot
19:01:40 <oklofok> A's type, or should i say kind, needs to be known @ "A < B > C", so it's unrestricted
19:01:43 <ais523> besides the better way is probably to set gcc's inlining flags
19:01:56 <ais523> it doesn't allow inline to grow the code by more than 50% by default, for instance
19:02:01 <ais523> it'll uninline things if it would
19:02:17 <ais523> AnMaster: you can change that, might be helpful for your speed optimisation
19:02:43 <ais523> worryingly I'm trying to optimise gcc-bf's output too
19:02:50 <oklofok> psygnisfive: i think i'd have to think for a while to answer that.
19:02:51 -!- psygnis__ has quit (Connection timed out).
19:02:52 <ais523> I assume a run-length-encoding interp though
19:03:05 <ais523> so I assume that >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> is as fast as >
19:03:06 <AnMaster> ais523, normal cfunge binary on x86, stripped, is around 109 KB
19:03:07 <oklofok> but i think i'll just sleep
19:03:11 <psygnisfive> oklofok: :P whats it mean tho to say that its kind needs to be known at ~??
19:03:35 <ais523> AnMaster: what about the insane -O3 version with funroll loops?
19:03:43 <AnMaster> ais523, I don't have a copy around
19:03:51 <AnMaster> only other is 1.4 MB from debug info...
19:04:02 <oklofok> psygnisfive: i meant you need to know whether A is a type or an object, really, i think; "kind" was definitely the wrong term, and i'm not sure it's hard to know which one A is
19:04:07 <ais523> oh btw profile feedback won't work on gcc-bf
19:04:11 <ais523> nor will any debug format
19:04:15 <ais523> -g gives a warning that it was ignored
19:04:21 <psygnisfive> oklofok: i dont see how thats relevant to the syntax tho, see
19:04:32 <ais523> nor will nested functions, but those aren't standard C anyway
19:04:49 <oklofok> psygnisfive: well in case the types are TC, you need to resolve that stuff before you can parse A<B>C
19:04:50 -!- Hiato has quit ("Leaving.").
19:04:57 <oklofok> so you can't parse all cases at all
19:05:02 <oklofok> because the type system can infloop
19:05:03 <AnMaster> ais523, as far as I know I got no nested functions
19:05:17 <ais523> AnMaster: well you shouldn't have, they aren't C99 or POSIX, just a gcc extension
19:05:24 <psygnisfive> oklofok: oh right but types and stuff are done at compilation, they're not part of the syntax.
19:05:34 <ais523> they're sort of like lambdas but less useful because they can't have any scoping other than auto
19:05:35 <AnMaster> ais523, all GCC extensions I have (attributes mostly) are optiona
19:05:48 <oklofok> psygnisfive: you need to do them at the same time as the compilation though
19:05:55 <oklofok> the same time as the parsing
19:06:01 <ais523> heh, my header files simply #define __attribute__(x) to nothing if __GNUC__ isn't defined
19:06:03 -!- Hiato has joined.
19:06:12 <oklofok> you can't parse without knowing the types, and you can't know the types unless you've parsed the program
19:06:23 <AnMaster> ais523, well yeah I do a bit more since ICC support *some* attributes
19:06:30 <ais523> I must have spent an hour or so writing stdio.h
19:06:36 <oklofok> psygnisfive: different parse trees depending on types, that's definitely true of C++
19:06:37 <ais523> even though I was copying from glibc
19:06:43 <ais523> (that's how it ended up LGPL2.1)
19:06:48 <AnMaster> ais523, cfunge will fail badly without errno
19:07:20 <psygnisfive> oklofok: i still doubt that anything truly requires an unrestricted grammar. i cant even imagine how different types force different parses in a way that requires TCness.
19:07:29 <ais523> probably I should define numeric codes for the C99 errno codes, though
19:07:34 <AnMaster> ais523, the getline() from gnulib assumes that it will have reasonable values
19:07:55 <ais523> I find it's normally possible to rewrite programs around most restrictions
19:07:56 -!- psygnisfive has quit ("http://www.mibbit.com ajax IRC Client").
19:08:09 <ais523> C-INTERCAL was POSIX originally, but I think it can be compiled without unistd.h nowadays
19:08:13 <ais523> nor any of the functions from it
19:08:24 <AnMaster> ais523, well befunge98 requires date/time
19:08:45 <ais523> AnMaster: maybe Befunge-108 should have an option for freestanding Befunge
19:08:48 <ais523> which doesn't assume an OS
19:08:49 -!- psygnisfive has joined.
19:08:52 <ais523> just like there's freestanding C
19:09:03 <AnMaster> ais523, um, the interpreter would have to handle it still
19:09:20 <ais523> it would be just a case of returning dummy information for some of y
19:09:36 <ais523> because Befunge-98 already allows not implementing i and o
19:10:35 <AnMaster> ais523, you will have to remove the signal(SIGPIPE, SIG_IGN); thingy
19:10:45 <AnMaster> http://rafb.net/p/lUOFp085.html
19:10:57 <AnMaster> of course some are from fingerprints
19:11:00 <ais523> AnMaster: heh, what you just wrote is by definition a NOP in brainfuck
19:11:06 <ais523> you're telling it to ignore something that can't happen anyway
19:11:34 -!- oerjan has joined.
19:11:43 <ais523> sort of like ABSTAIN FROM COMING FROM in INTERCAL-72
19:11:45 <AnMaster> ais523, you need a working printf anyway
19:11:53 <ais523> hmm... I wonder if C-INTERCAL correctly sees that as an error
19:12:21 <ais523> and yes, I'm going to implement or find from somewhere stdlib, stdio, and string, as programmers really assume they need those
19:12:39 * oerjan wonders if there are many programs using ABSTAIN FROM ABSTAINING
19:13:20 -!- megatron has joined.
19:13:28 -!- moozilla has quit (Nick collision from services.).
19:13:31 <ais523> oerjan: probably not, when you're using ABSTAIN as control flow normally you aim for individual lines, and when you aim for a gerund it's usually NEXTING
19:13:32 <AnMaster> ais523, stdint, stdbool and so on too
19:13:49 <ais523> AnMaster: stdint's just macros, right? and stdbool is trivial in gcc
19:14:02 <AnMaster> ais523, well stdint is probably just typedefs
19:14:20 -!- psygnisfive has quit ("http://www.mibbit.com ajax IRC Client").
19:14:24 <AnMaster> ais523, I think cfunge may use int64_t for some other stuff even if funge space is 32-bit
19:14:47 <AnMaster> but since that writes svg files...
19:14:55 <ais523> anyway I'm using a nice generic implementation method
19:15:07 <AnMaster> ais523, TURT too depends on math.h
19:15:16 <ais523> probably I could add support for 128-bit integers without much trouble (I already have 64-bit long long due to C99)
19:15:29 <AnMaster> ais523, I decided against implementing LONG because it is unportable between 32-bit and 64-bit funges
19:15:30 <ais523> 256-bit would be harder as gcc has no name for a data type that large internally
19:15:37 <AnMaster> causing programs to be unportable rather
19:15:46 <ais523> I'm still faced with much the same problem, though
19:16:00 <ais523> which is: what's the most efficient way to multiply 64-bit numbers in 8-bit brainfuck?
19:16:01 <AnMaster> ais523, there is some vector extension?
19:16:07 <AnMaster> and GCC got __int128_t at least
19:16:16 <ais523> AnMaster: I don't use the vector extension
19:16:27 <ais523> and __int128_t will currently be emulated in software by gcc
19:16:41 <ais523> which will probably result in more or less the same code anyway
19:16:50 <ais523> AnMaster: ah, I was talking about gcc-bf
19:17:02 <ais523> which is fine with 64-bit numbers (it stores them in 8 consecutive registers or memory locations)
19:17:14 <AnMaster> ais523, how many registers do you have=
19:17:32 <ais523> 5 fixed registers at current
19:17:38 <ais523> but probably I'll have more eventually
19:17:44 <ais523> (fixed = gcc's name for special purpose)
19:18:09 <ais523> 4 registers which are a combined pc and cc0, and one scratch register
19:18:21 <AnMaster> oh btw I was thinking of generating code at runtime, using JIT with LLVM, could be rather interesting
19:18:26 <ais523> also I have stack pointer and a stack of frame pointers, but they're represented in unary for speed
19:18:29 <AnMaster> I think JITing funge would work
19:19:06 <AnMaster> ais523, cfunge's stack can grow rather large I think
19:19:18 <AnMaster> probably outside what 8 bits could represent for size
19:19:50 <ais523> AnMaster: well gcc-bf supports an unlimited size stack, but you can't take pointers to it or pass structures to or from functions if it grows beyond 16 MB
19:20:05 <ais523> AnMaster: condition code, which holds the result of a comparison
19:20:24 <AnMaster> and I do take pointers to stuff on stack all the time
19:20:42 <ais523> AnMaster: not a problem, the stack pointer is represented by two consecutive 0s in a long run of 1s on every sixth tape element
19:20:48 <AnMaster> since I prefer variable on stack and pointer rather than having to remember to free
19:20:55 <ais523> so you can get to the stack pointer easily with [[>>>>>>]>>>>>>]
19:21:15 <ais523> and pointers to the stack are 24-bit integers with an extra byte stating that they're on the stack
19:21:16 -!- Hiato has quit ("Leaving.").
19:21:26 <ais523> and yes, I agree with you, alloca was probably invented for that purpose
19:21:36 <AnMaster> ais523, I got some 1024 * 8 bytes arrays on stack in one function or another iirc
19:21:37 <ais523> pity it isn't standard C really, probably some systems can't manage it
19:21:57 <AnMaster> actually it may be char buf[1024]
19:21:57 <ais523> AnMaster: 8KB is fine, although might take a while to access
19:22:21 <ais523> BTW can cfunge cope with 16-bit int?
19:22:32 <ais523> it ought to be able to if you use types correctly, hardly anyone does though
19:22:37 <ais523> C-INTERCAL can't, I know
19:23:00 <AnMaster> I probably use int32_t most of the time
19:23:02 <ais523> ideally I should be able to set sizeof(int)=2 in gcc-bf, but everything assumes it's 4 nowadays so I'll have it as a command-line option
19:23:46 <AnMaster> anyway stack won't ever get 16 MB
19:24:34 <ais523> I think I know how to implement pointers larger than 26-bit
19:24:50 <ais523> hmm... how many BF interpreters can cope with over 72 million successive > signs?
19:24:51 <AnMaster> ais523, fingerprints use a *lot* of function pointers, remember that
19:25:03 <ais523> AnMaster: function pointers are in a separate memory space
19:25:03 <AnMaster> and I have a static array with function pointers
19:25:15 <ais523> which allows 16 mebifunctions
19:25:35 <ais523> mebi=2^20 just like mega=10^6
19:25:37 <AnMaster> anyway I got way more than 16 functions that I use function pointers to
19:25:39 <Deewiant> ais523: 72 million? that's what, 300 megabytes of memory?
19:25:48 <ais523> Deewiant: no, 72 megabytes
19:25:58 <Deewiant> ais523: is each cell not 4 bytes
19:26:02 <ais523> AnMaster: so you have over 16 million total functions + labels
19:26:08 <ais523> Deewiant: no, 8-byte cells
19:26:16 <Deewiant> ais523: so then it's more like 600 megabytes
19:26:18 <ais523> if you store an int it's stored in 4 successive cells
19:26:29 <AnMaster> ais523, I do use goto for error handling in FILE and SOCK where I need similiar clean up paths in a lot of cases
19:26:35 <AnMaster> otherwise goto is very very sparse
19:26:38 <ais523> it uses a bit over 72 million cells
19:26:49 <ais523> AnMaster: everything's translated into goto in the asm anyway
19:26:55 <ais523> so it doesn't matter what it was in your code
19:26:57 <AnMaster> ais523, well I meant at C level
19:27:05 <ais523> while is a convenience for the programmer, not for the compiler
19:27:17 <AnMaster> I'm sure of that functions call are not goto
19:27:24 <ais523> AnMaster: call/ret is also translated into goto the way I'm doing things
19:27:30 <ais523> it pushes a label onto the stack first
19:27:33 <ais523> then gotos the function
19:27:33 <AnMaster> ais523, oh btw I sometimes return structs
19:27:39 <ais523> the function pops a label from the stack
19:27:51 <AnMaster> not sure if you can handle that
19:28:02 <ais523> AnMaster: if you're using gcc, no you don't, it automatically rewrites that as pass by reference
19:28:21 <ais523> but if the struct's 64 bits or smaller it stores it in a long long instead and it doesn't matter that it's a struct
19:28:21 <AnMaster> ais523, hm doesn't make sense since I construct that in *return*
19:28:38 <AnMaster> return (fungeVector) { .x = x, .y = y };
19:28:47 <AnMaster> not sure where it would place the reference
19:29:12 <ais523> AnMaster: the function that calls it allocates space for a fungeVector on the stack and passes a pointer to it to the function that returns a fungeVector
19:29:28 <ais523> then the function returning a fungeVector stores in the memory referenced by that pointer
19:29:36 <AnMaster> ais523, but that breaks AMD64 ABI
19:29:37 <ais523> AnMaster: that's how gcc and most other compilers handle struct returns
19:29:47 <AnMaster> AMD64 ABI would return that struct in registers
19:29:50 <ais523> except it modifies it to conform with ABIs if possible
19:30:03 <ais523> it does use registers for things 64-bit and smaller, I think
19:30:12 <ais523> except to conform with someone else's ABI
19:30:25 <AnMaster> I think, but I'm not sure, that AMD64 ABI splits such a struct up over 2 registers...
19:30:32 <ais523> and probably can handle 128-bit structs too on systems which can normally return long long longs in registers, don't know how many of those exist though
19:30:50 <Deewiant> AnMaster: just compile with optimizations on and look at the asm
19:30:58 <ais523> for instance atm the gcc-bf ABI returns 64-bit integers and structs in registers r0-r7
19:31:08 <ais523> AnMaster: no it doesn't, but what else could you call a 128-bit int?
19:31:35 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
19:31:36 -!- oklopol has joined.
19:31:36 <ais523> well yes, but long long long has a swing to it
19:33:12 <ais523> tusho: I want 24-bit ints!
19:33:24 <ais523> there are a whole lot of missing lengths of integers
19:33:32 <tusho> ais523: what would long short be?
19:33:34 <ais523> actually mysql has a 24-bit data type AFAIR
19:33:36 <AnMaster> struct foo { unsigned int bar:24; }
19:33:42 <tusho> what about negative half trit
19:33:48 <tusho> turkey booooooooooomb!
19:33:55 <ais523> AnMaster: interesting, I wonder if that's 3 bytes on gcc-bf?
19:34:04 <ais523> I've told the compiler not to pad anywhere unless the user asks for it
19:34:07 <ais523> or to make whole bytes
19:34:11 <AnMaster> ais523, well I never tried anything but one bit bitfields
19:34:25 <AnMaster> but iirc other values than 1 work too
19:34:35 <ais523> AnMaster: most compilers will give you a 32-bit struct if you do that
19:34:40 <ais523> with 8 bits of padding
19:34:48 <ais523> at least on most processors
19:34:59 <ais523> but will access it like a 24-bit unsigned int
19:35:06 <ais523> by ignoring the top 8 bits
19:35:07 <AnMaster> ais523, cfunge uses bitfields, I made sure the structs had as few holes as possible on x86 and x86_64 using both 32-bit and 64-bit funges
19:35:19 <AnMaster> used a tool the kernel developers made: pahole
19:35:28 <AnMaster> it reads the debug info from -g and lists any holes
19:35:31 <ais523> AnMaster: I know, you told me earlier
19:36:18 <AnMaster> ais523, anyway how do you do bitfields in your gcc-bf?
19:36:35 <ais523> it takes lots of bitwise operations
19:36:38 <AnMaster> ais523, as in slow? or incorrect?
19:36:44 <ais523> AnMaster: very slow but correct
19:36:45 <AnMaster> ais523, well cfunge will be hellish slow then
19:36:49 <ais523> lots of multiplication and division in loops
19:36:57 <AnMaster> ais523, since it accesses a few bitfields for every instruction executed
19:37:27 <AnMaster> ipMode mode; ///< String or code mode.
19:37:28 <AnMaster> bool needMove:1; ///< Should ipForward be called at end of main loop. Is reset to true each time.
19:37:28 <AnMaster> bool stringLastWasSpace:1; ///< Used in string mode for SGML style spaces.
19:37:28 <ais523> AnMaster: probably it would be worth having a mode that unpacked the bitfields into one unsigned char per bitfield
19:37:44 <AnMaster> ais523, not really on x86/x86_64
19:37:58 <ais523> oh, I think it's probably a lot faster on gcc-bf if you don't have many bits in your bitfield
19:38:07 <ais523> but chars will still be faster still
19:38:08 <tusho> oh wow, some intercal code! in the wild!
19:38:13 <AnMaster> bool fingerSUBRisRelative:1; ///< Data for fingerprint SUBR.
19:38:20 <ais523> tusho: whwew did you find it?
19:38:30 <tusho> ais523: i'd tell you but then i'd have to kill you
19:38:35 <tusho> not a good deal overall i think
19:38:57 <ais523> AnMaster: are these constant structs?
19:39:00 <ais523> or do they change over time
19:39:03 <Deewiant> AnMaster: I was just about to ask you :-P
19:39:03 <AnMaster> ais523, no that is in ip struct
19:39:19 <AnMaster> ais523, and is checked once every time in main loop
19:39:31 <ais523> anyway I suspect gcc-bf will be painfully slow if run on an ordinary BF interpreter
19:40:09 <AnMaster> ais523, you could create one that reverse compile it to C...
19:40:18 <Deewiant> more code, and probably slower
19:40:29 <AnMaster> Deewiant, as I said, there was no noticable difference
19:40:37 <ais523> AnMaster: well I'm going to litter the output with optimisation data
19:40:52 <Deewiant> but it's one extra instruction for each access :-P
19:40:52 <ais523> such as @4 to mean "the pointer is now at cell 4 of the tape"
19:40:56 <AnMaster> Deewiant, and I'm not that speed crazy
19:41:08 <AnMaster> Deewiant, plus this means it will fit into my L2 cache ;)
19:41:33 <Deewiant> AnMaster: surely it'd be cached anyway
19:41:50 <tusho> GREN THINGS DEVEOTED TO MACHINESSSSSSSSSSS
19:41:54 <tusho> SDFSDS;DFSL;FKSDFL;KD;AKD;ASDK;ASDK;ALSD^G^G^G^G
19:42:09 <AnMaster> heck even the P3 near here got larger cache
19:42:10 <tusho> KJLjkLJklJKLjLjkLJlkJljKLjlkklJ
19:42:19 <ais523> AnMaster: you could probably fit a BF interp written in asm into it, those can be very small indeed
19:42:37 <ais523> 128 KB isn't very small!
19:42:47 <AnMaster> and of course it will have lot of other stuff
19:42:49 <tusho> HO HO I HEARTY LAFF
19:42:51 <tusho> LAFFLAFLAFLAFLALFAF
19:43:01 <ais523> by "very small" I thought you meant a few hundred bytes, that's what I'm used to working with sometimes
19:43:13 <tusho> PIGS HOW DO YOU LAFGHU
19:43:47 <AnMaster> ais523, modern x86 can have caches larger than 2-3 MB these days
19:44:01 <ais523> AnMaster: even in the L1?
19:44:21 <AnMaster> for L1 the most I seen is 512 kb
19:44:39 <tusho> iDISAGREElol,wiht ur jiaoj ioj
19:44:52 <AnMaster> why do we have a randomness generator in here?
19:45:08 <ais523> AnMaster: we have at least two. optbot, fungot, hi!
19:45:08 <optbot> ais523: If anybody wishes: Throw a runtime exception with the message "I'm in ur channel throwin ur exceptionz."
19:45:09 <fungot> ais523: paste all the urls i've visited. strange.) an earlier version of sql but not without? :p. ugh i need to enter " qemu" to edit a file that has ?scm ( fnord " source-file.scm"))
19:45:18 <optbot> Deewiant: !bf8 +[<+>+<+>+<+>+<+]
19:45:18 <optbot> fungot: even ignoring the fact that you've read his book
19:45:18 <fungot> optbot: it was too easy heh one time i figured out my bug :d)
19:45:19 <optbot> fungot: you lose, by a lot
19:45:19 <optbot> AnMaster: Knock knock.
19:45:20 <fungot> AnMaster: it doesn't look like it does the fnord i want to do is to write a render procedure for sdl is just a value that prints as void. it is a load of hell. twice. most confusing. :p ( although theoretically speaking i could try.
19:45:21 <fungot> optbot: i'm certain he isn't annoying at all. the code i write, more should be all set)) f
19:45:22 <fungot> optbot: actually just parsing ski says. remember physics 103, modern physics, general functions i suppose.
19:45:23 <optbot> fungot: indeed. everything is subjective
19:45:25 <fungot> optbot: fopen(3) freebsd library functions manual fopen(3)
19:45:26 <optbot> fungot: the short way ;)
19:45:27 <fungot> optbot: i made it up as much as cheap jokes would like you to die, but it does not render via cocoa, and qt/ kde
19:45:28 <optbot> fungot: Jim is pretty much a light Tcl interpreter, with nice things like "closures" added.
19:46:13 <tusho> 4 COMIC EFFECT CLEAN MAKER 2!!!!!!
19:49:24 <AnMaster> ais523, anyway if you want floating point to work with cfunge means float will be exactly 32-bit and double exactly 64-bits
19:49:35 <AnMaster> since I have to mess around with unions
19:49:54 <ais523> don't worry, those are exactly the sizes of floating point I'm using
19:49:55 <Deewiant> AnMaster: aren't there float32_t types
19:49:59 <ais523> although long double = double
19:50:19 <AnMaster> ais523, that is fine, while I do use long double I never depend on it's size
19:50:21 <ais523> Deewiant: I don't think so, systems on which float wasn't 32 bits almost certainly wouldn't implement them so it would be pointless
19:50:39 <ais523> Deewiant: float formats are a lot more varied than int formats
19:51:32 <AnMaster> ais523, cfunge will need both sin() and sinf() then, and you would just map sinl() to sin()
19:51:57 <ais523> Deewiant: different processors have different sort of float support, for instance things like the 387 work in 80-bit float internally, so it can cause problems by having too much precision internally as double is only 64
19:52:15 <Deewiant> ais523: why would that be a problem
19:52:19 <AnMaster> and long double on x86_64 is 128-bits
19:52:26 <Deewiant> an algorithm that relies on a certain bittiness is broken anyway
19:52:40 <ais523> that's one example, most compilers have an option to emulate exact 64-bit double and normally just switch between 64 and 80 at will because normally too much precision is not a problem
19:53:19 <Deewiant> ais523: I still don't see why that would prevent a float32_t from existing
19:53:24 <ais523> but gcc has options to work exactly to the spec and use exactly the right amount of precision by copying the float values into memory and back every operation
19:53:45 <ais523> Deewiant: it would have to be implemented in software, slowing the program down a lot and requiring floating point emulation libraries
19:54:03 <Deewiant> ais523: it doesn't have to have any specific characteristics
19:54:20 <Deewiant> if you have 36-bit floats you can have 32-bit floats which just have 4 bits of the exponent always zero
19:54:20 <AnMaster> <ais523> but gcc has options to work exactly to the spec and use exactly the right amount of precision by copying the float values into memory and back every operation
19:54:54 <ais523> AnMaster: it's one of the -mwhatever options on x86, I know because I was reading the gcc manual last night
19:55:00 <tusho> jkjlkjlfkdjkdlfjfdg
19:55:06 <tusho> AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant AIS523 AnMaster Deewiant
19:55:21 <Deewiant> tusho: congrats, you're the first person I've ignored in years
19:56:12 <AnMaster> ais523, but iirc that sets some floating point control register
19:56:20 <ais523> AnMaster: I don't think so, but I can't remember what the option was offhand, it had some long name
19:56:29 <Deewiant> mfpmath rings a bell, related?
19:56:39 <AnMaster> Deewiant, that is for selecting x87 or see
19:57:09 <AnMaster> they are for alignment in structs
19:57:40 <tusho> i wonder if i can get ignored by everyone in #esoteric
19:58:01 <fizzie> AnMaster, ais523: are you sure you don't mean -ffloat-store?
19:58:17 <ais523> fizzie: ah, that might be it
19:58:24 <fizzie> "Do not store floating point variables in registers -- This option prevents undesirable excess precision --"
19:58:48 <ais523> tusho: well I just ignored you to help you with your mission, I'll probably unignore you again in a bit
19:58:50 <AnMaster> but what about setting the control register of x87?
19:58:58 <tusho> fizzie: /ignore me, would you?
19:59:06 <tusho> FUNNY JOKE POSSIBILITY:
19:59:10 <tusho> fizzie stays silent
19:59:13 <AnMaster> funny, I don't plan to ignore tusho
19:59:14 <tusho> ...because he's already ignoring me
19:59:14 <ais523> fizzie: yes, that's what I was thinking of
19:59:42 <AnMaster> ironic that tusho can't read this
20:00:04 <ais523> I'll paste it, I'm ignoring tusho but I don't think tusho's ignoring me
20:00:16 <ais523> 19:59AnMasterfunny, I don't plan to ignore tusho 19:59AnMastermentally sure 19:59AnMasterbut not with client 19:59AnMasterironic that tusho can't read this
20:00:26 <tusho> AnMaster i see you
20:00:29 <tusho> i see you with my eyes
20:00:33 <tusho> through ais523's eyes.
20:00:43 <tusho> ^echo HELLO WORLD HEAR ME ROAR
20:00:44 <fungot> HELLO WORLD HEAR ME ROAR HELLO WORLD HEAR ME ROAR
20:00:47 <AnMaster> well I don't plan to paste back what tusho said
20:00:52 <tusho> ^bf ,[.,]!ah this is better
20:01:02 <tusho> ^bf ,[.,]!so Deewiant... adhisaweh8q2y381786*(y88 PANCAKES
20:01:02 <fungot> so Deewiant... adhisaweh8q2y381786*(y88 PANCAKES
20:01:07 <ais523> I might logread it later
20:01:47 <AnMaster> ais523, does c-intercal compile with ICC?
20:02:02 <ais523> AnMaster: never tried, it should compile with most things though
20:02:16 <AnMaster> ais523, icc supports a lot of GCC extensions btw, it even defines __GNUC__ by default to get GNU specific stuff from system headers
20:02:16 <ais523> it even used to compile with pre-C89 C
20:02:42 -!- Hiato has joined.
20:02:50 <AnMaster> but cfunge manage without those (-no-gcc to ICC)
20:03:37 <AnMaster> ais523, ah it will have to wait since I can't do out of tree build
20:03:44 <AnMaster> don't feel like making a copy of the source
20:05:22 <AnMaster> ais523, as I don't have icc on my amd64 (for obvious reasons) I would nfs mount the source and compile it on the p3 using icc
20:05:23 <ais523> AnMaster: to me building out of tree is just extra complexity to the user, besides it does build out of tree just the out of tree place it builds is a fixed place elsewhere in the tree
20:05:43 <AnMaster> ais523, well that is not really out of tree
20:05:53 <AnMaster> I normally have several different builds of cfunge
20:06:29 <ais523> AnMaster: well you can create a new tree with just the base directory with configure and an empty lib, include, bin, and temp, symlink the src directory, and reconfigure
20:06:38 <ais523> that's how you do an out of tree C-INTERCAL build
20:06:44 <ais523> admittedly that isn't obvious though
20:06:46 <AnMaster> ais523, well that seems complex
20:06:56 <AnMaster> ais523, but I suggest supporting it the real way
20:08:06 <ais523> it would be pretty easy to support actually, you could just have the configure script create lib include bin and temp, and symlink src, then compile the normal way
20:08:16 <ais523> or have an out-of-tree-configure which was a wrapper
20:09:45 <AnMaster> ais523, well I suggest doing it like everyone else does
20:10:05 <ais523> <AnMaster> ais523, well I suggest doing it like everyone else does <--- I think you are missing the point of INTERCAL
20:11:44 <AnMaster> ais523, what is the command to check out darcs now again?
20:11:55 -!- Corun has quit ("This computer has gone to sleep").
20:12:26 <ais523> darcs pull http://code.eso-std.org/c-intercal/
20:12:37 <AnMaster> darcs failed: Unable to "darcs pull" here.
20:12:37 <AnMaster> You need to be in a repository directory to run this command.
20:12:45 <tusho> ais523 can't see that
20:12:48 <tusho> but i think AnMaster can
20:12:50 <tusho> if you can, say yes
20:12:53 <ais523> tusho: yes I can, I unignored you about 2 minutes ago
20:13:01 <ais523> but that's the first thing you did since
20:13:43 <AnMaster> ais523, does darcs work over nfs?
20:13:58 <ais523> AnMaster: no idea, I don't see why not though
20:14:56 <AnMaster> -xK -march=pentium3 -O3 -ipo -no-prec-div
20:15:20 <AnMaster> ais523, please makde config.sh +x
20:15:33 <ais523> AnMaster: bug in darcs, it is at my end but darcs forgets file permissions
20:15:38 <ais523> probably the most famous bug in darcs
20:16:02 <ais523> tusho: no, it's a bug, just it's really difficult to fix for some reason or they would have fixed it already I suspect
20:16:13 <AnMaster> checking whether we are using the GNU C compiler... yes
20:16:18 <tusho> ais523: darcs development has slooooooooowed to a crawl
20:16:22 <ais523> AnMaster: it check for __GNUC__
20:16:25 <tusho> and a buncha people are switching darcs -> git
20:16:30 <tusho> i think it's on death row, it just doesn't know it yet
20:16:39 <AnMaster> ais523, && !defined(__INTEL_COMPILER)
20:16:53 <ais523> AnMaster: that test is to see if gcc extensions can be used
20:16:55 <AnMaster> src/oil.y(466): remark #810: conversion from "int" to "char" may lose significant bits
20:17:00 <ais523> there are other tests for things like command line arguments
20:17:11 <AnMaster> src/dekludge.c(55): remark #1419: external declaration in primary source file
20:17:11 <AnMaster> extern void prexpr(node *np, FILE* fp, int freenode); /* AIS */
20:17:32 <AnMaster> ais523, there should be no extern in C files in icc's opinion
20:17:47 <ais523> AnMaster: oh, and storing the result of getchar in a char is a reasonable thing to do IMO once you've verified separately that it isn't EOF
20:17:57 <ais523> AnMaster: what about extern int errno?
20:18:10 <AnMaster> ais523, since at least here it is not an int
20:18:13 <ais523> AnMaster: yes, but that's included into your source
20:18:43 <ais523> AnMaster: yes, I know, that's how I do it too
20:18:53 <ais523> what I'm saying is shouldn't it complain about the extern in errno.h?
20:19:02 <ais523> or does it give header files a free pass?
20:19:18 <AnMaster> icc: command line remark #10148: option '-W' not supported
20:19:19 <AnMaster> icc: command line warning #10120: overriding '-O2' with '-O3'
20:19:25 <AnMaster> ais523, if you want all warnings try -Wall
20:19:33 <ais523> it has both -W and -Wall I think
20:19:45 <AnMaster> ais523, so better check such stuff
20:19:50 <ais523> -W is the old name for -Wextra in gcc, and C-INTERCAL is stuck in the past
20:20:00 <AnMaster> ais523, consider being portable?
20:20:15 <ais523> AnMaster: it's portable in theory but hasn't been tested on non-gcc compilers for years
20:20:20 <ais523> so some gccisms may have snuck in
20:20:24 <ais523> without anyone noticing
20:20:41 <AnMaster> src/abcess.h(210): remark #193: zero used for undefined preprocessing identifier
20:20:41 <AnMaster> #if (MULTITHREAD != 0) || (YUKDEBUG != 0) || defined(ICK_EC)
20:20:42 <ais523> oh, some of the external calls stuff relies on gnu ld to work
20:20:44 <tusho> so who agrees with me: random noise pixels look pretty
20:20:56 <AnMaster> I think it may not do what you want
20:21:11 <ais523> AnMaster: oh, I do, it's a little-known feature of the C preprocessor which is confusing
20:21:23 <ais523> that undefined preprocessing identifiers are treated as 0 in #if
20:21:44 <AnMaster> src/abcess.h(112): remark #310: old-style parameter list (anachronism)
20:21:52 <tusho> well i was just logreading
20:21:59 <tusho> intercal is meant to be different in every way
20:22:02 <tusho> for no reason at all.
20:22:04 <tusho> get that in to your head.
20:22:08 -!- dogface has quit (Read error: 60 (Operation timed out)).
20:22:26 <AnMaster> src/lexer.l(308): (col. 13) remark: REVERSED LOOP WAS VECTORIZED.
20:22:27 <AnMaster> src/lexer.l(307): (col. 13) remark: REVERSED LOOP WAS VECTORIZED.
20:22:27 <AnMaster> src/lexer.l(306): (col. 13) remark: REVERSED LOOP WAS VECTORIZED.
20:22:32 <ais523> AnMaster: I probably would have if I caught it earlier, I had to add prototypes to bits of C-INTERCAL earlier, though
20:22:58 <ais523> AnMaster: gcc does that too at -O3, it just doesn't tell you about it unless you ask it to
20:23:21 <ais523> AnMaster: yes, I hadn't heard about it back then and the conversion was years ago
20:23:23 <AnMaster> ais523, well default is to tell
20:23:30 <AnMaster> ais523, how can you get gcc to tell you btw?
20:23:49 <ais523> AnMaster: not sure by the way, it's probably in one of the debugging dumps
20:24:01 <ais523> gcc tends not to have options to shout at you whenever it does an optimisation
20:24:20 <ais523> AnMaster: yesterday for fun I turned on all the debug dumps on a very simple program and it created about 100 of them
20:24:27 <AnMaster> ais523, well there are optimising log verbosity(sp?) level for icc
20:24:49 <AnMaster> temp/oilout03.c(3): remark #1418: external function definition with no prior declaration
20:24:49 <AnMaster> int optimize_pass1_3(node *np)
20:25:06 <AnMaster> it thinks there should either be a prototype in a header or it should be static
20:25:18 <AnMaster> ais523, and GCC will say that too with the right switches
20:25:33 <ais523> AnMaster: there is in most cases, that function results from splitting optimize_pass1 into smaller pieces so it doesn't crash gcc on ia64 though
20:25:38 <ais523> that bug was reported by Debian
20:25:48 <AnMaster> ais523, hm here is one that *could* be bad, or *could* be just a false positive:
20:25:49 <AnMaster> temp/oilout01.c(106): remark #981: operands are evaluated in unspecified order
20:25:50 <AnMaster> x=x3; c=c3; if(!(!(x&2863311530LU)&&iselect(x,1431655765LU)==xselx(iselect(x,1431655765LU)))) break;
20:26:13 <ais523> iselect and xselx are both pure functions
20:26:23 <ais523> so it doesn't matter which order they're evaluated in
20:26:39 <AnMaster> ais523, well how do you do linking?
20:26:52 <AnMaster> I think ICC will break if you call ld
20:27:04 <AnMaster> ais523, icc will do cross-object optimising
20:27:10 <AnMaster> so it will put those together again
20:27:17 <ais523> AnMaster: and crash on IA64?
20:27:33 <ais523> AnMaster: maybe it has more memory than the Debian autobuilders
20:27:48 <ais523> btw I also managed to get it to crash even on x86 once, the split avoided that problem
20:28:01 <AnMaster> ais523, gcc is very memory hungry
20:28:43 <AnMaster> sh -c "(test -f /home/anmaster/local/ick/share/info/ick.igz && : --quiet --dir-file=`echo /dev/null` /home/anmaster/local/ick/share/info/ick.igz) || true"
20:28:46 <ais523> <n1124.pdf> After all replacements due to macro expansion and the defined unary operator have been performed, all remaining identifiers are replaced with the pp-number 0, and then each preprocessing token is converted into a token.
20:29:19 <ais523> I think things must have been evaluated in the wrong order
20:29:23 <ais523> still, it comes to the right thing
20:29:32 <ais523> and besides it's running : which ignores all its arguments anyway
20:29:49 <ais523> ah, the joys of autoconf
20:30:21 <AnMaster> ais523, will ick use $CC or gcc?
20:30:36 <AnMaster> the actual compiler compiles with icc
20:30:38 <ais523> AnMaster: it /ought/ to use $CC, that hasn't been tested for years though
20:30:44 <ais523> so quite possibly doesn't work
20:31:14 <AnMaster> beer.c -I/usr/include/ick-0.28 -I. -I./../include -L/usr/lib -L. -L./../lib -O2 -o beer -lick
20:31:29 <AnMaster> beer.c(3016): warning #177: label "L1910" was declared but never referenced
20:32:09 <ais523> well there are lots of unused labels in the result
20:32:30 <ais523> AnMaster: try it without the CC=
20:32:40 <AnMaster> ais523, my /usr/bin/cc is gcc so...
20:32:50 <ais523> I think it tries to use the value of CC there was at compile time if there isn't a CC in the environment
20:32:57 <AnMaster> /opt/intel/cc/10.1.018/bin/icc
20:33:14 <ais523> anyway I'm glad it works with non-gcc compilers
20:33:26 <ais523> at least ones which take much the same options
20:33:36 <AnMaster> ais523, no warnings without $CC set
20:33:37 <ais523> AnMaster: what, the compile, or the compiled program?
20:34:01 <AnMaster> ==8602== definitely lost: 500 bytes in 16 blocks.
20:34:07 <ais523> AnMaster: that's bad, the compile is known to leak loads but I didn't think compiled programs leaked
20:34:11 <AnMaster> ==8602== 36 bytes in 8 blocks are definitely lost in loss record 1 of 3
20:34:11 <AnMaster> ==8602== at 0x4006D6E: malloc (vg_replace_malloc.c:207)
20:34:11 <AnMaster> ==8602== by 0x8057679: ick_resize (in /home/anmaster/c-intercal/pit/beer)
20:34:11 <AnMaster> ==8602== by 0x8056A1B: main (in /home/anmaster/c-intercal/pit/beer)
20:34:17 <AnMaster> ==8602== 464 bytes in 8 blocks are definitely lost in loss record 3 of 3
20:34:18 <AnMaster> ==8602== at 0x4006D6E: malloc (vg_replace_malloc.c:207)
20:34:18 <AnMaster> ==8602== by 0x80576FC: ick_resize (in /home/anmaster/c-intercal/pit/beer)
20:34:18 <AnMaster> ==8602== by 0x8056A1B: main (in /home/anmaster/c-intercal/pit/beer)
20:34:29 <ais523> oh, I thnk I know what that might be
20:34:35 <ais523> let me check something
20:35:30 <ais523> at the very end of the program it isn't freeing the contents of arrays
20:35:33 <ais523> just the pointers to them
20:35:36 <tusho> ais523: stop talking to yourself
20:35:40 <tusho> there's like 50 lines of just you
20:35:46 <ais523> easy enough to fix though, so I may as well
20:35:48 <AnMaster> ICL778I UNEXPLAINED COMPILER BUG
20:36:05 <ais523> oh, with +help it's fine
20:36:26 <ais523> after +help runs there used to be a simulated segfault
20:36:46 <ais523> I took the time delay out of it, but there's still an internal error
20:36:46 <AnMaster> ais523, anyway CC from compile time isn't used
20:36:52 <ais523> which is invoked deliberately
20:37:11 <AnMaster> ais523, how would I test some of the ec features
20:37:16 <ais523> it probably should be and there's support from it in the code, looks like I'm going to have to tweak the build process again
20:37:23 <AnMaster> give me a command line for ick in pit
20:37:50 <ais523> ick -beE beer.i syslibc
20:38:19 <AnMaster> ais523, just two labels that weren't used this time
20:38:31 <AnMaster> ais523, also how to send some cflags on to ICC
20:38:37 <AnMaster> as it is in a gcc compatiblity mode by default
20:38:39 -!- dogface has joined.
20:38:48 <AnMaster> need to send -no-gcc to tell it to not try to support GCC extensions
20:38:54 <ais523> AnMaster: you can put them in $CC I think
20:39:42 <dogface> I don't like how irssi's auto-reconnect doesn't work.
20:40:05 <AnMaster> /tmp/syslibc.c(54): remark #174: expression has no effect
20:40:05 <AnMaster> do { if(0) { ick_l2_65540 : ; if(ick_global_linelabel != (1010) || (1010) > 65535) goto ick_l2_65541 ; ick_global_checkmode = 0; } 0 ; ick_checksuckpoint(1010); } while(0);
20:40:18 <dogface> Seems that it tries to reconnect once, and if that fails, it forgets about the server's existence.
20:40:22 <ais523> AnMaster: it's complaining about the 0;
20:40:29 <ais523> AnMaster: crosseed messages...
20:40:37 <ais523> hmm... I wonder why there's a 0; there anyway
20:40:59 <AnMaster> ais523, http://rafb.net/p/QXAv9U46.html
20:41:19 <AnMaster> ais523, could be some real useful warnings
20:42:05 <ais523> the one on line 30 of the paste looks genuine, that's a gcc extension I triggered by accident (it allows stray semicolons as null declarations, C doesn't)
20:42:27 <AnMaster> ais523, the one on 62 also looks valid
20:42:45 <ais523> AnMaster: no, the one on 62's bogus
20:42:54 <ais523> the variable could have been used but wasn't
20:43:04 <ais523> think of it like a library function that's never used
20:43:08 <AnMaster> ais523, well it was never in the generated code
20:43:24 <ais523> AnMaster: it could have been substituted in with a macro
20:43:31 <ais523> but I never used that macro in syslibc
20:44:05 <AnMaster> ais523, also "expression has no effect" looks valid to me
20:45:34 <ais523> AnMaster: nah, that's fine, it's just a 0; I wrote because I needed a nop there
20:45:43 <ais523> probably it should be (void)0; which is the canonical C nop
20:45:51 <AnMaster> ./cftoec.sh: line 13: realpath: command not found
20:45:53 <ais523> but that's to avoid code duplication in the header files
20:46:00 <ais523> oh dear, I tend to rely on realpath a lot
20:46:10 <ais523> to prevent problems with directory changes
20:46:20 <AnMaster> ais523, well arch linux doesn't have it by default it seems
20:46:28 <ais523> AnMaster: I don't think it's default anywhere unfortunately, Ubuntu doesn't have it by default either
20:46:40 <AnMaster> ais523, maybe stop using it :)
20:46:40 <ais523> probably it shouldn't have been in C-INTERCAL then, I just get into the habit of using it..
20:46:58 <ais523> AnMaster: it should work if you change it to echo as long as you give an absolute path
20:47:11 <AnMaster> why the heck does it need absolute path?
20:47:30 <ais523> AnMaster: so the path doesn't get lost when you change directory
20:47:37 <ais523> it doesn't need an absolute path normally, that's what the realpath is for
20:47:45 <ais523> to make the path absolute if a relative path was given
20:48:05 <ais523> it makes a lot more sense than erroring out just because you were given a relative path, like configure does
20:48:43 <ais523> I'll find some way around it
20:48:53 <ais523> it's just that I'm so used to realpath I forgot that systems didn't have it by default
20:49:00 <AnMaster> ais523, you didn't update for the FUNGEDATATYPE -> fungeCell change it seems?
20:49:06 <AnMaster> even though I told you some time ago
20:49:16 <ais523> AnMaster: not yet, no, I haven't been working on C-INTERCAL recently
20:49:30 <ais523> mostly I've either been asleep or working on gcc-bf
20:49:35 <ais523> it will be fixed before the next release
20:49:47 <AnMaster> ais523, also why does it ignore $CC
20:50:08 <AnMaster> ais523, cfunge compiles just fine with ICC
20:50:09 <ais523> because I wrote it in about 5 minutes in a hurry
20:50:51 <AnMaster> anyway ICC give a lot more readable errors
20:51:37 <AnMaster> clang is the new C/C++ frontend written from scratch being coded for LLVM
20:51:53 <AnMaster> modular, better error tracking than gcc while using less memory
20:52:20 <AnMaster> it can handle some C but almost no C++
20:52:46 <ais523> interesting, I know a lot about gcc from working on it for a week or so, and its design seems to be mostly about the genericness of frontend and backend, and the ability to do crazy optimisations easily
20:53:00 <ais523> it's not so good at error detection except when an optimisation discovers something's gone wrong, though
20:54:25 <ais523> competition in C compilers is good
20:54:31 <ais523> I don't want GCC getting too big for their boots
20:56:14 <AnMaster> /tmp/syslibc.c(192): remark #128: loop is not reachable from preceding code
20:56:15 <AnMaster> do { if(0) { ick_l2_65556 : ; if(ick_global_linelabel != (1001) || (1001) > 65535) goto ick_l2_65557 ; ick_global_checkmode = 0; } 0 ; ick_checksuckpoint(1001); } while(0);
20:56:46 <ais523> AnMaster: do while 0 is an idiom
20:56:46 <AnMaster> and still, why do you have those "expression has no effect"
20:56:52 <ais523> and shouldn't be treated as a loop at all
20:57:12 <AnMaster> ais523, why a do { } while at all?
20:57:21 <ais523> AnMaster: because that statement was created by filling out a template (reasonably obviously, given its appearance), and there was a blank which I didn't need to put a command in so I put a 0 in instead
20:57:29 <ais523> AnMaster: macro expansion, it makes a block act like a statement
20:57:46 <ais523> so you can do if(1) macro(args); else something_else();
20:57:55 <ais523> and it compiles correctly
20:58:11 <ais523> do { } while(0) is a common trick because it's a single statement if you put ; at the end
20:58:21 <ais523> whereas a block isn't, once you add the semicolon it's two statements
20:58:25 <AnMaster> /tmp/syslibc.c(197): remark #111: statement is unreachable
20:58:25 <AnMaster> if(ick_local_checkmode) ick_doresume((1),-1); ick_l1_65538 : ; ick_l6_65538 : ; ick_l2_65557 : return; }
20:58:47 <ais523> yes, that's the very end of the function, and that function isn't allowed to return as it's only called from INTERCAL, not from C
20:58:59 <ais523> functions can be called either via INTERCAL or via C mechanisms
20:59:09 <ais523> if called via INTERCAL mechanisms they must return via INTERCAL mechanisms
20:59:16 <ais523> whereas that's the code for returning via the C mechanism
20:59:27 <ais523> which is never used in this case
21:00:53 <AnMaster> http://rafb.net/p/uTeEIr64.html
21:00:57 <AnMaster> ais523, any false positive there?
21:01:24 -!- Hiato has quit (Read error: 104 (Connection reset by peer)).
21:01:24 <AnMaster> "external declaration in primary source file" and "external function definition with no prior declaration" are not false positives to me
21:01:59 <AnMaster> rot13.c(579): warning #2132: statement expressions are a GNU extension
21:01:59 <AnMaster> if(0) { ick_l1_65538 : ; if(ick_global_linelabel == (10U) && (10U) <= 65535) if(({int i=0; if (!ick_abstained[86]) { i=1;};i;})) { if(ick_global_goto) ick_lose("555 FLOW DIAGRAM IS EXCESSIVELY CONNECTED\n ON THE WAY TO %d\n", ick_lineno, (char*)0); ick_global_goto = 65544 ; } goto ick_l1_65539 ; ick_l2_65557 : ; if(ick_global_linelabel != 65544 ) goto ick_l2_65558
21:01:59 <AnMaster> ; ick_global_checkmode = 0; };
21:02:05 <ais523> the one on 31's genuine and fixable, the one on 44 reminds me why I needed gcc
21:02:20 <ais523> that one's very genuine, and may take some thought to fix
21:02:32 <ais523> it would be nice to find a different way and so get rid of the gcc dependency
21:02:51 <AnMaster> ais523, hope you can skip using GCC specific ones :)
21:02:56 <AnMaster> even though icc can handle those
21:02:56 <ais523> maybe move all the statement expressions to generated functions, not sure if that would work due to the need to access local variables
21:03:10 <ais523> ({ }) is kind-of hard to substitute into standard C
21:03:11 <AnMaster> ais523, now to try to compile main ick with these flags
21:03:17 <ais523> maybe I'll ask comp.lang.c if they have any ideas
21:03:29 <ais523> nested functions would work except they're a GNU extension too
21:03:37 <AnMaster> ais523, pass local variables along?
21:03:53 <ais523> AnMaster: hard to tell what the local variables are
21:04:03 <ais523> because they could be in user-supplied C code
21:06:28 <AnMaster> icc: command line remark #10148: option '-W' not supported
21:06:35 <AnMaster> you should probably check in configure
21:07:01 <ais523> yes, although last I checked configure didn't have an option to check "option to turn on all warnings"
21:07:10 <ais523> kind of hard to see how it could manage that really
21:07:29 <tusho> YOUR UNWASHED MASSES?
21:07:31 <tusho> NOT APPRECIATED!! BAD
21:07:56 <AnMaster> ais523, I may have a m4 macro to check if an option is supported
21:08:08 <AnMaster> by checking if there was any output
21:08:23 <ais523> AnMaster: but sometimes supported options generate output, sometimes unsupported options do
21:08:27 <AnMaster> actually it checked if it was GCC first, then checked using -Werror to see if it was supported
21:08:42 <ais523> as a facetious example, how can you tell if --version works or not?
21:09:01 <AnMaster> src/ick_ec.c(222): warning #1011: missing return statement at end of non-void function "ick_getonespot"
21:09:07 <AnMaster> src/ick_ec.c(252): warning #1011: missing return statement at end of non-void function "ick_gettwospot"
21:09:26 <ais523> oh dear, that looks bad, let me look at the source
21:09:36 <AnMaster> ais523, full compile log: http://rafb.net/p/6uCztn52.html
21:09:59 <tusho> stop talking to yourself
21:10:00 <AnMaster> src/cesspool.c(919): warning #1011: missing return statement at end of non-void function "ick_ieg277"
21:10:03 <tusho> or, more nonsense from me
21:10:13 <AnMaster> tusho, you could try unignoring me
21:10:14 <ais523> AnMaster: that one's fine, the statement before errors out and doesn't return
21:10:28 <ais523> maybe I should start messing about with __attribute__((__noreturn__))
21:10:31 <AnMaster> ais523, anyway see http://rafb.net/p/6uCztn52.html
21:10:38 <AnMaster> ais523, well ICC doesn't support that one
21:10:42 <ais523> I do for Splint as it accepts annotations in comments
21:10:57 <ais523> which therefore don't interfere with anything else
21:11:03 <AnMaster> and I only use it on functions that GCC suggests using noreturn for
21:11:25 <AnMaster> it didn't have any false positives or negatives here
21:11:29 <ais523> oh, I use noreturn on functions which actually don't return
21:11:48 <AnMaster> src/clc-cset.c(262): warning #187: use of "=" where "==" may have been intended
21:12:09 <AnMaster> on the other hand it isn't very C-ish
21:12:10 <ais523> AnMaster: it's just not used to Perl, that's all
21:12:18 <ais523> clc-cset.c is full of Perl idioms as a homage to CLC-INTERCAL
21:12:24 <ais523> they tend to require a lot more parens to work in C, though
21:12:24 <AnMaster> src/lexer.l(307): (col. 13) remark: REVERSED LOOP WAS VECTORIZED.
21:12:37 <AnMaster> REVERSE POLARITY WAS VECTORIZED
21:12:46 * oerjan read that as VAPORIZED
21:13:58 <ais523> AnMaster: that all looks fine, some cases where I should probably use ifdef rather than if, but apart from that no serious errors
21:14:27 <AnMaster> #if (MULTITHREAD != 0) || (YUKDEBUG != 0) || defined(ICK_EC)
21:14:33 <ais523> AnMaster: why do that when #ifdef exists, except in complicated cases where you want to test more than one thing in the if?
21:15:01 <AnMaster> #if defined(MULTITHREAD) || defined(YUKDEBUG) || defined(ICK_EC)
21:15:08 <AnMaster> or should there be ! in front?
21:15:08 <ais523> AnMaster: no, because it might be defined to 0
21:15:21 <ais523> I want to test that it's defined and with a non-zero value
21:15:26 <AnMaster> ais523, but ICK_EC won't be that?
21:15:31 <ais523> #define MULTITHREAD 0 exists in several cases
21:15:37 <ais523> AnMaster: yes, that's right
21:15:50 <AnMaster> ais523, maybe time to update the ot same scheme
21:16:19 <AnMaster> sed 's/#define MULTITHREAD 0/#undef MULTITHREAD/'
21:16:29 -!- ais523 has quit ("http://www.mibbit.com ajax IRC Client").
21:16:48 -!- ais523 has joined.
21:16:52 <AnMaster> <ais523> AnMaster: yes, that's right
21:16:52 <AnMaster> <AnMaster> ais523, maybe time to update the ot same scheme
21:16:52 <AnMaster> <AnMaster> would make it easier to read
21:16:52 <AnMaster> <AnMaster> sed 's/#define MULTITHREAD 0/#undef MULTITHREAD/'
21:16:52 <AnMaster> <AnMaster> or something like that
21:17:07 <AnMaster> ais523, take your laptop with you next time!
21:17:10 <ais523> AnMaster: the problem is that the MULTITHREAD and the 0 are occasionally kept in different source files
21:17:14 <ais523> and my laptop's with me
21:17:18 <ais523> I just forgot to bring its power supply
21:17:24 <ais523> actually I might move onto my laptop now
21:17:30 <AnMaster> ais523, oh wait icc can auto-parallellise programs
21:17:33 <ais523> as the battery's charged and won't run out before I'm thrown out of here
21:17:53 <ais523> AnMaster: well if it doesn't misoptimise correct code there's no problem
21:18:24 <ais523> I haven't done anything weird-control-like that isn't allowed by the C standard
21:18:35 <ais523> I've just made a lot more interesting use of setjmp and friends than is normally considered sane
21:20:15 <AnMaster> ais523, anyway there is no need for -W these days
21:20:26 <AnMaster> use -Wextra if you have too, after checking it is GCC
21:20:27 <ais523> AnMaster: it's a synonym for -Wextra, so there is
21:21:01 <ais523> and as I said earlier, parts of C-INTERCAL were ported from pre-C89 C, so you can understand that it has trouble catching up
21:21:15 <AnMaster> lex.yy.c(2254): (col. 2) remark: LOOP WAS VECTORIZED.
21:21:15 <AnMaster> /tmp/ipo_icc1tzGiK.o: In function `main':
21:21:15 <AnMaster> /tmp/ipo_icc1tzGiK.c:(.text+0x30): undefined reference to `__kmpc_begin'
21:21:15 <AnMaster> /tmp/ipo_icc1tzGiK.c:(.text+0x3a): undefined reference to `__kmpc_global_thread_num'
21:21:15 <AnMaster> /tmp/ipo_icc1tzGiK.c:(.text+0x24ab): undefined reference to `__kmpc_end'
21:21:37 <AnMaster> had no problems with cfunge with that option
21:21:43 <ais523> AnMaster: mibbit changed parts of those error messages to sad faces
21:21:54 <AnMaster> ais523, well that sucks for you
21:22:31 <AnMaster> it should work with them combined
21:22:39 <ais523> I'm going to leave this computer and go onto my laptop now
21:22:45 -!- ais523 has quit ("mibbit.com: back soon").
21:24:44 -!- oklofok has joined.
21:24:46 <tusho> i should probably unignore AnMaster
21:24:49 <tusho> or i'll forget tomorrow
21:24:51 <AnMaster> ais: for log reading -parallel will make it multithreaded in ICC
21:24:53 <tusho> wait, that's a good thing. possibly
21:25:13 -!- oklopol has quit (Read error: 113 (No route to host)).
21:26:03 -!- LinuS has joined.
21:26:18 -!- calamari has joined.
21:27:37 -!- Tritonio_ has quit ("Leaving.").
21:28:25 -!- ais523 has joined.
21:28:53 <AnMaster> icc -O2 -W -Wall -parallel -Wall -Wcheck -wd810 -wd981 -no-gcc -xK -march=pentium3 -O3 -ipo -static -no-prec-div -diag-enable port-win -DICKINCLUDEDIR=\"/home/anmaster/local/ick/include/ick-0.29\" -DICKDATADIR=\"/home/anmaster/local/ick/share/ick-0.29\" -DICKBINDIR=\"/home/anmaster/local/ick/bin\" -DICKLIBDIR=\"/home/anmaster/local/ick/lib\" -DYYDEBUG -DICK_HAVE_STDINT_H=1 -I./src -I./temp -o temp/oil
21:29:00 <AnMaster> icc temp/perpet.o temp/parser.o temp/lexer.o temp/feh2.o temp/dekludge.o temp/oilout*.o temp/ick_lose.o temp/fiddle.o temp/uncommon.o -o bin/ick
21:29:07 <AnMaster> /tmp/ipo_iccY7jGt7.o: In function `main':
21:29:08 <AnMaster> /tmp/ipo_iccY7jGt7.c:(.text+0x30): undefined reference to `__kmpc_begin'
21:29:08 <AnMaster> /tmp/ipo_iccY7jGt7.c:(.text+0x3a): undefined reference to `__kmpc_global_thread_num'
21:29:08 <AnMaster> /tmp/ipo_iccY7jGt7.c:(.text+0x24a9): undefined reference to `__kmpc_end'
21:29:19 <ais523> AnMaster: you probably need -static on the link too
21:29:29 <AnMaster> you forgot to pass it in $CFLAGS
21:29:37 <AnMaster> you forgot to pass CFLAGS there
21:29:42 <AnMaster> unlike the other time you link
21:29:48 <ais523> that's because you pass $LDFLAGS when linking
21:30:02 <AnMaster> ais523, well all cases I seen it uses CFLAGS too when linking
21:30:47 <AnMaster> ais523, and you *do* pass that when compiling old
21:30:59 <ais523> $CFLAGS is for the compile normally
21:31:02 <AnMaster> so passing it in LDFLAGS as well would be double
21:31:07 <ais523> maybe I should do it so $CC is used for compile and $LD for link, and they're both the detected C compiler by default
21:31:10 <ais523> do I compile and link oil in one step?
21:32:38 <ais523> ok, looks like I have to work even more on the build system
21:32:41 <AnMaster> <AnMaster> ais: for log reading -parallel will make it multithreaded in ICC
21:33:09 <ais523> anyway I'm not sure -parallel will help all that much
21:33:15 <AnMaster> I think it basically does mapreduce()
21:33:25 <ais523> probably feh2.c could be redesigned so it would but atm it won't
21:33:52 <ais523> besides ick runs very fast compared to gcc, so normally it doesn't matter about optimising ick itself
21:34:11 <AnMaster> ais523, but would it break it's programs to be compiled with -parallel?
21:34:37 <ais523> AnMaster: I don't see how it could, I'm not doing anything disallowed by the C standard so unless it's listed as unsafe in the compiler docs it should be fine
21:34:52 <AnMaster> ais523, you said pthreads would break stuff?
21:35:20 <AnMaster> src/perpet.c(664): remark #1599: declaration hides variable "c" (declared at line 285)
21:35:22 <ais523> AnMaster: only if calls and returns don't match up
21:35:38 <ais523> AnMaster: that's why it's in a separate block, scoping exists for a reason
21:36:05 <AnMaster> just gcc will warn with -Wshadow for that too
21:36:20 <AnMaster> src/clc-cset.c(303): remark #593: variable "ssrecord" was set but never used
21:36:20 <AnMaster> int sstesting, ssbestsf, ssrecord, j, k;
21:36:40 <ais523> AnMaster: when I need a temporary variable I create a small block so that shadowing will prevent an identifier clash
21:36:54 <ais523> AnMaster: I can't even remember what ssrecord does offhand
21:36:57 <AnMaster> http://rafb.net/p/cIjSdJ39.html is the last log from main ick compile using icc
21:45:33 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | function g() is a big hint.
21:48:10 <tusho> will you talk to something other than silence now
21:48:21 <ais523> tusho: it depends on whether you say something interesting
21:48:32 <tusho> something interesting
21:48:34 <ais523> verifying that C-INTERCAL ports to compilers other than gcc is interesting
21:48:44 <ais523> and that's what I was doing, if you were wondering
21:49:12 <tusho> ais523: does it compile on my brain
21:49:22 <ais523> tusho: I don't know, it doesn't really compile in mine
21:49:31 <ais523> it's a bit too large to grasp all at once
21:49:33 <tusho> It sits at "DISPATCHED"!
21:49:44 <tusho> ais523: my brain is pretty damn awesome
21:49:46 <tusho> i think i could handle it
21:49:53 <ais523> well, you know where the code is
21:49:55 <tusho> if I augmented it with a large pen and paper extension
21:56:13 -!- psygnisfive has joined.
21:59:25 <oerjan> i don't think there are any bitches here. there is one dogface though.
22:11:15 -!- oerjan has quit ("And a nice evening to you too").
22:19:23 -!- kar8nga has left (?).
22:36:11 -!- jix has quit ("CommandQ").
22:40:11 <calamari> old news, but new to me... programmable wristwatch with a battery that lasts 2 years.. http://en.wikipedia.org/wiki/Timex_Datalink
22:40:39 <ais523> I don't think I've seen you here recently...
23:07:43 -!- ais523 has quit ("going home, and basically out of battery").
23:23:01 -!- KingOfKarlsruhe has quit (Remote closed the connection).
23:27:50 -!- psygnisfive has quit ("http://www.mibbit.com ajax IRC Client").
23:39:32 -!- LinuS has quit ("Puzzi. S, parlo proprio con te. Puzzi.").
00:00:52 <tusho> agora are trying to exile you because you're a shite speaker
00:23:56 -!- tusho has quit.
01:00:32 -!- olsner has quit ("Leaving").
01:00:54 -!- psygnisfive has joined.
01:09:01 -!- psygnisfive has quit ("http://www.mibbit.com ajax IRC Client").
02:25:58 -!- Corun has joined.
03:11:27 -!- Corun has quit ("BAKED").
03:24:32 -!- psygnisfive has joined.
03:27:55 <psygnisfive> oklofok, have i mentioned recently how hot you are?
03:45:23 -!- psygnisfive has quit ("http://www.mibbit.com ajax IRC Client").
03:45:34 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | fizzie pulls out his marijuana - "And this helped too".
03:58:52 -!- oerjan has joined.
05:18:37 -!- GreaseMonkey has joined.
05:28:33 -!- oerjan has quit ("leaving").
05:29:37 -!- Tritonio_ has joined.
06:49:43 -!- Tritonio_ has quit (Remote closed the connection).
07:05:43 -!- oklopol has joined.
07:05:43 -!- oklofok has quit (Read error: 104 (Connection reset by peer)).
07:34:19 -!- jix has joined.
07:49:38 -!- calamari has quit ("Leaving").
07:59:45 -!- oklopol has quit ("( www.nnscript.com :: NoNameScript 4.2 :: www.regroup-esports.com )").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:12:49 -!- KingOfKarlsruhe has joined.
08:20:49 -!- jix has quit ("CommandQ").
08:46:20 -!- oklopol has joined.
08:46:25 <fizzie> I have no recollection of the context the current topic has.
08:48:06 <fizzie> Apparently I woke up at 16:00 one Friday, and the topic was GregorR's speculation on the reason.
09:14:05 -!- oklopol has quit (Read error: 60 (Operation timed out)).
09:25:38 -!- kar8nga has joined.
09:26:27 <fizzie> fungot: How should I improve you next?
09:26:28 <fungot> fizzie: see this: slashdot.org/ comments.pl?sid=99801&cid=8509203 linux. or at least a few people are making silly things for linux
09:29:17 <fizzie> fungot: Uh... I don't quite get it. You already have a command line interface of sorts, and are running on Linux; and I'm not going to expose that stuff directly to people on the channel, nope.
09:29:18 <fungot> fizzie: but kelsey still has it. basically you get bloat at runtime instead of compiletime function an ok way to describe it. ( plt scheme actually has such a mechanism often named thus. all syntax-rules implementations based on this single statement of yours? :)
09:29:52 <fizzie> optbot: You're usually more coherent; do you have any good ideas?
09:30:02 <optbot> fizzie: !undaemon ctcp
09:30:27 <fizzie> optbot: fungot doesn't have any "ctcp" command, and I don't quite see the point.
09:30:27 <optbot> fizzie: things like online javadocs, tutorial sites and w3schools have saved me hundreds of dollars in books
09:30:28 <fungot> fizzie: according to our consensus, for " 3" does not mean that all rings should have a locale with an encoding that will be
09:31:00 <fizzie> Those things aren't very useful for serious advice. :/
09:45:34 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | lisp is nice too.
09:50:34 <fizzie> optbot: Isn't it traditionally "a cat" which is fine too, not lisp?
09:50:34 <optbot> fizzie: A recursive array.
09:50:46 <fizzie> A recursive array is fine too. Hmm, right.
10:14:19 -!- oklopol has joined.
10:22:31 -!- GreaseMonkey has quit ("Jesus loves you").
10:23:44 -!- GreaseMonkey has joined.
10:42:51 -!- oklofok has joined.
10:42:51 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
10:43:53 -!- GreaseMonkey has quit ("Jesus loves you").
11:02:43 -!- tusho has joined.
11:06:35 -!- LinuS has joined.
11:26:19 -!- oklofok has quit (Read error: 113 (No route to host)).
11:26:32 -!- oklopol has joined.
11:47:57 -!- oklofok has joined.
11:49:17 -!- oklopol has quit (Read error: 113 (No route to host)).
12:08:50 -!- ais523 has joined.
12:26:57 <ais523> I still haven't gone to bed yet
12:27:12 <ais523> I can't sleep for an entire night...
12:27:30 <tusho> i can, mostly because i stay up late.
12:27:54 <tusho> although things have been working out to about 8 hours of sleep recently
12:28:28 -!- LinuS has quit (Connection reset by peer).
12:29:25 <tusho> jksdfhisdfhsdkjfhkdjsfksdjf fuck reddit comments
12:29:29 <tusho> "[citation needed]!! HAHA! Xkcd!"
12:29:37 <tusho> what the fuck happened to DOING YOUR OWN RESEARCH
12:30:15 <Deewiant> tusho: to be fair, if you make an assertion, you should back it up
12:30:23 <tusho> Deewiant: of course
12:30:31 <tusho> but it's done when the poster has made a negative assertation
12:30:47 <tusho> "Hey, I bet this steals your passwords and eats your babies." "Um... no it doesn't?" "[CITATION NEEDED BITCH]"
12:31:05 <tusho> you're the one who made the statement, give ME the evidence
12:31:12 <ais523> hmm... there are burden of proof problems right there
12:31:42 <Deewiant> just post the source and they'll shut up :-P
12:31:56 <tusho> Deewiant: "but you could be running a modified version with extra evil"
12:32:04 <tusho> (seriously, I am 100% certain they would say that)
12:32:26 <ais523> #ifdef LICENCE_MANAGER
12:32:44 <ais523> (a line from pic30, a modified version of gcc with extra evil)
12:33:00 <tusho> Deewiant: but I see it all over reddit
12:33:02 <tusho> it's just annoying
12:33:07 <ais523> sorry, it's called MPLAB C30, pic30 is what gcc thinks of it as internally
12:33:13 <tusho> you can say whatever you want and if people challenge you you can just say [citation needed].
12:33:17 <tusho> bullshiiiiiiiiiiit
12:33:21 <ais523> tusho: citation needed
12:33:29 <tusho> ais523: [citation needed]
12:33:38 <Deewiant> tusho: ( ais523) tusho: citation needed
12:33:51 <tusho> ("that's evil" "i don't think it is..." "[citation needed]")
12:33:53 <ais523> tusho: you may laugh, but people actually use {{disputedtag}} on occasion
12:33:58 <tusho> (can be reduced to "that's evil" "[citation needed]" "[citation needed]")
12:34:01 <ais523> there have been edit wars over it too
12:34:10 <tusho> however, the ones who say [citation needed] are never the ones who understand burden of proof
12:34:13 <ais523> which means that there's a dispute over whether something is disputed or not
12:34:43 <ais523> tusho: there can be edit wars over the strangest things on wikis, Wikipedia gets them a lot but I think they affect other wikis too
12:35:01 <ais523> for instance there was an edit war about whether a particular truck in the background of an area in Pokemon was notable or not
12:35:09 <tusho> ais523: kind of related: people bugged me on WikiWikiWeb for not using my real name
12:35:15 <tusho> because apparently using my real name makes me more trustworthy.
12:35:19 <tusho> http://c2.com/cgi/wiki?TuSho
12:35:44 <ais523> tusho: it's not exactly that, it's that people who aren't trustworthy tend to be unwilling to reveal their own names for some reason
12:35:50 <ais523> so it works as a filter one way but not the other
12:35:57 <ais523> you exclude lots of people who are trustworthy too
12:36:10 <tusho> ais523: actually, when I was young and naive I'd have a good reason not to reveal my name
12:36:13 <tusho> my password was "elliott"...
12:36:53 <ais523> tusho: anyway, where's the history link on c2?
12:37:00 <ais523> as it is, it's very difficult to tell who's talking to you
12:37:11 <ais523> arguably it doesn't matter, but that goes against the thrust of what they were saying
12:38:43 <ais523> heh, c2 doesn't record contributors to a page forever, only for a certain length of time
12:38:55 <ais523> so it's simultaneously anonymous and requires real names
12:38:59 <ais523> that's an interesting compromise
12:39:37 <ais523> <spam I just got> Plastic SCM is saying goodbye to stuffy old software configuration management tools that are high on complexity and low on usability. With Plastic SCM every aspect of what you would expect from a configuration management tool has been enhanced. Trace the history of your projects with a number of graphical tools such as the per-file history that you can view through a 3D revision tree! How cool is that?!
12:39:48 <ais523> and it's more ontopic than the normal spam I come across
12:39:56 <ais523> doesn't make me want to buy their product though
12:41:12 <tusho> ais523: yes, that's intentional
12:41:19 <tusho> plastic scm is quite popular
12:41:22 <tusho> are you sure it's spam?
12:41:35 <tusho> i haven't heard of well-known companies spamming a lot, reall
12:41:35 <ais523> well, it's unsolicited bulk email
12:41:51 <ais523> Subject: ?spam? Our Version Control tool is not just cool looking, its smart too! Is yours?
12:42:03 <ais523> maybe someone else is spamming them
12:42:08 <ais523> but there's no obvious reason why
12:42:14 <ais523> it doesn't look like the work of a reputable company
12:42:29 <ais523> maybe a phishing attempt disguised as spam?
12:42:32 <ais523> that would be something new
12:42:43 <tusho> ais523: you can find all the revisions in the wiki data dir
12:42:49 <tusho> i can't remember where that is , though
12:42:52 <tusho> and again they get expired
12:43:00 <tusho> http://c2.com/cgi/quickDiff?TuSho
12:43:05 <tusho> (found by clicking the link) shows the last change
12:43:14 <tusho> it has no accounts, anyway
12:43:17 <tusho> so it's all honour system
12:43:50 <ais523> there is something very odd about that, but it resonated with me as being Wiki too
12:43:58 <ais523> which makes sense, as c2 is the Wiki with a capital W
12:44:15 <tusho> ais523: c2 is bizarre
12:44:21 <tusho> wikimedia is such a distant relative
12:44:26 <tusho> e.g. their Recentchanges is updated by a bot
12:44:29 <tusho> once every 24 hours
12:44:34 <tusho> just a regular pge
12:44:52 <ais523> yes, but even so I think I understand c2 in a way, pretty much any wiki model you'll have a faction of people on Wikipedia who thinks Wikipedia ought to work like that
12:45:14 <ais523> and you get used to the politics after a bit, c2 is a bit like Wikipedia would be with a different political party in charge
12:45:28 <tusho> ais523: it's kind of like america, isn't
12:45:31 <tusho> both the parties suck
12:45:36 <tusho> but one is mildly preferable :P
12:45:48 <ais523> tusho: which one depends on who you are, though
12:46:06 <tusho> http://c2.com/cgi/wiki?ChangesInWeekThirtyThree 33rd week of 2007 ... listing changes from 2008
12:46:11 <tusho> ais523: yea, i guess insane people differ ;)
12:46:27 <tusho> wonder how c2 would do citation needed.
12:46:32 <tusho> probably add a long italic comment below it.
12:46:54 <ais523> tusho: when I've worked on effective internal wikis they've ended up looking a lot like c2
12:47:04 <ais523> they normally act like extended group mind-maps, with hyperlinks
12:47:11 <tusho> which is a good thing
12:47:21 <tusho> although it's funny, wikis are actually a good replacement for most html sites
12:47:31 <ais523> Wikipedia is pretty strange as wikis go, it's sort of like using Google Docs to write an encyclopedia with a wiki attached for discussing it
12:48:59 <ais523> hmm... wiki software is strangely abusable too
12:49:13 <ais523> for instance I wrote a JavaScript multiplayer networked chess program
12:49:18 <ais523> using MediaWiki for data storage
12:49:52 <tusho> ais523: one problem I think mediawiki has
12:50:00 <tusho> is that was designed for 'everyone edits, better make it safe' first
12:50:18 <tusho> i think if you started with something made for a personal site-wiki-thingy that are quite popular these days - i.e. free for all, locked down permissions
12:50:25 <tusho> then put the restrictions etc on top of that
12:50:32 <tusho> it might result in something more flexible & less adhoc
12:50:50 <ais523> for wikis, adhoc is good
12:51:21 <tusho> but not in the part of the software meant to be structured, ais523
12:51:24 <tusho> i'm talking about the software
12:51:57 <tusho> e.g. for a personal wiki, you'd want something that you could poke about in standard tools for some purposes
12:52:05 <ais523> sort of like the monks from HHGTTG, but instead of demanding rigidly defined areas of doubt and uncertainty you're demanding a rigidly structured framework in which to be adhoc
12:52:09 <tusho> so you store stuff in the filename (not much relational about well, documents anyway)
12:52:26 <tusho> and use an existing VCS, etc
12:52:27 <ais523> tusho: yes, very INTERCAL
12:52:30 <tusho> and probably a DVCS so you could edit locally
12:52:37 <tusho> and then, wow, hey, you get merging
12:52:42 <tusho> which turns out to be helpful in a more open, public site!
12:52:44 <tusho> see, benefits like that
12:52:49 <ais523> btw were you reading what I said when I told you about my new evil idea for command line argument syntax?
12:53:12 <ais523> sorry, I like telling people about that sort of random evil
12:53:23 <ais523> I haven't implemented most of the random evil ideas I've come up with yet, though
12:53:52 <tusho> ais523: incidentally,
12:54:01 <tusho> http://developer.mozilla.org/En doesn't run on mediawiki, although it really looks like it at first glance
12:54:11 <tusho> "Powered by MindTouch Deki Enterprise Edition v.8.05.2b"
12:54:28 <tusho> http://developer.mozilla.org/index.php?title=En&action=history <-- The goddamn URL is even the same. The UI for the history is better, though.
12:56:21 <tusho> http://developer.mozilla.org/index.php?title=Special:Listusers&limit=50&offset=50
12:56:26 <tusho> that is the EXACT URI that mediawiki uses
12:56:33 <tusho> it doesn't look like it's based on MW, though
12:56:42 <ais523> tusho: the UI for the history is the same, but skinned differently
12:56:55 <tusho> ais523: but the other pages look different
12:56:59 <ais523> the confusing thing is it's using the same URIs as MediaWiki everywhere
12:57:02 <tusho> i think they just imitated mediawiki
12:57:10 <ais523> but doesn't have any of the other hallmarks of MediaWiki
12:57:17 <tusho> http://developer.mozilla.org/Project:en/About
12:57:23 <tusho> lots of language stuff in the url
12:57:27 <tusho> i am pretty sure it's not based on MW, anyway
12:57:32 <tusho> i guess they just imitated the UI they likec
12:59:22 <ais523> well it's open source, so I'm going to settle this the traditional open source way
13:00:18 <tusho> they only provide distro packages
13:00:20 <tusho> and a vmware thing
13:00:55 <tusho> ais523: http://wiki.developer.mindtouch.com/Deki_Wiki/Installation_and_Upgrade/1.9.0_Itasca_Source_Code_Install_and_Upgrade_Guide
13:01:02 <tusho> ok, THAT is obviously not mediawiki
13:01:13 <tusho> guess mozilla just made it looks like MW
13:02:37 <tusho> ais523: can you slap me, I'm about to go off writing a wiki engine
13:02:47 <ais523> tusho: no, slaps tend not to work over IRC
13:02:50 <ais523> at least not very well
13:02:54 <tusho> ais523: how about a Swhack
13:05:14 -!- Tritonio_ has joined.
13:05:18 <ais523> Deki Wiki looks worrying, anyway, it's full of dependencies on Windows and/or Mono
13:05:27 <ais523> "Adding services, like Microsoft Windows Live Controls, as a built-in component
13:05:27 <ais523> to a wiki is super interesting; MindTouch Deki Wiki is truly breaking new ground,"
13:05:27 <ais523> said George Moore, general manager, Windows Live Platform at Microsoft.
13:05:31 <ais523> that's from their README
13:05:39 <tusho> ais523: well, that's what microsoft want to do with it
13:05:44 <tusho> ais523: if you read their installation instructions, they're for mono
13:05:49 <tusho> nothing wrong with mono/C#
13:05:52 <tusho> nice VM, nice language
13:05:54 <ais523> well they have mono as a dependency
13:06:13 <ais523> and lots of people are paranoid about mono because they think installing it allows Microsoft to sue you some time down the line
13:06:13 <tusho> ais523: gnome depends on Mono these days
13:06:17 <tusho> http://www.gnome.org/projects/tomboy/
13:06:25 <tusho> a gnome/C# app that runs on Mono
13:06:29 <tusho> i don't think it'd even run on windows
13:06:33 <ais523> tusho: no it doesn't, the person in charge wants it to but there are no Mono dependencies in Gnome core nowadays
13:06:42 <tusho> ok, well ubuntu includes t
13:07:02 <ais523> apparently there are two programs in Ubuntu by default that depend on it
13:07:28 <ais523> also someone put in a dependency for OpenOffice.org on Mono but there isn't a dependency there actually and after removing the dependency it still works
13:07:41 <tusho> what gui toolkit does openoffice use again?
13:07:47 <tusho> it's some crazy shit that looks like java but isn't
13:08:26 <ais523> and arguably any GUI made by Sun ends up looking like Java, because it's the same GUI designers
13:09:08 <tusho> they should fire 'em
13:11:56 -!- tusho has changed nick to mupersan.
13:12:04 -!- mupersan has changed nick to tusho.
13:12:25 -!- tusho has changed nick to mupersan.
13:12:30 -!- mupersan has changed nick to tusho.
13:14:45 <tusho> Well, mupersan has been defeated.
13:14:55 <tusho> The name would trip me up if I didn't already have one.
13:15:23 <tusho> Hm. Now language choice will trip me up. Damn.
13:15:26 <ais523> tusho: the last few events here in #esoteric would look pretty weird to anyone who wasn't in the other channels that provide context
13:15:40 <ais523> oh, btw, hi optbot, hi fungot
13:15:41 <optbot> ais523: no it's not :(
13:15:41 <fungot> ais523: so include the code? :p) and all is well and good.' you can hang around in mystream. but when you pass your custom port to a procedure without naming it after " people who are used to
13:15:53 <fizzie> I, for one, am confused about what just happened.
13:16:26 <ais523> fizzie: I don't think it makes sense without having been in ##nomic at the same time
13:16:27 <fizzie> Especially with irssi's nick-tracking-for-query-windows, which added a "You are now talking with mupersan" line as the first line I noticed.
13:18:58 <ais523> fungot: provide some context for fizzie
13:19:05 <tusho> ais523: do you think I should give perl another chance for this?
13:19:19 <ais523> tusho: actually I'd rather like to see it in INTERCAL
13:19:26 <tusho> ais523: you can port it ;)
13:19:27 <ais523> but that would be really difficult
13:19:31 <fizzie> Wow, been a while since the last crash.
13:19:33 <tusho> i'm not insane enough
13:19:42 -!- fungot has quit (Read error: 131 (Connection reset by peer)).
13:19:48 <ais523> maybe I should make an INTERCAL backend for gcc, not sure if it would be easier or harder than brainfuck
13:20:01 <ais523> worryingly many of INTERCAL's commands are not too hard to explain to gcc
13:20:07 <fizzie> It saw that ais523 "provide some context" line and got confused.
13:20:13 <ais523> it can understand what ABSTAIN does to some extent, for instance
13:20:24 <ais523> but it tends to assume things that aren't true
13:20:25 -!- fungot has joined.
13:20:48 <fizzie> fungot: Feeling better?
13:20:49 <fungot> fizzie: ( indirectly via fnord and my blue fnord long underwear all ready to go through all words in the stdlib
13:20:59 <fizzie> Sounds... fungotty enough.
13:21:00 <fungot> fizzie: guess i've not done any forth coding since... well, physically around me without specifying " good stewart" versus " xtu". ( advanced in his mind uses it.
13:21:56 <fungot> ais523: those are just the ordinary ( for call/ cc))) hangs
13:23:58 <tusho> ais523: is there any actual justification for a lot of perl's weirdness?
13:24:04 <tusho> I can see how some of it leads to interesting stuff
13:24:21 <ais523> Perl is designed to be ruthlessly pragmatic AFAICT
13:24:57 <tusho> but a lot of the pragmatism is just silly & afaict not very helpful either
13:30:53 <tusho> ais523: does perl have a Git module?
13:31:02 <tusho> ah. it's part of official git
13:37:28 <fizzie> For disturbingly many X, "does perl have a X" has a positive answer.
13:39:36 -!- Judofyr_ has joined.
13:39:36 -!- Judofyr has quit (Read error: 104 (Connection reset by peer)).
13:42:00 <ais523> tusho: well in C you could import that with -lido, Perl naming conventions are a bit different though
13:42:18 <tusho> man someone make a protocol called ido already
13:43:13 <tusho> Hmm. I haven't bought any albums, recently, apart from this one.
13:43:19 * tusho Swhacks himself for being a naughty pirate.
13:43:23 * tusho denies that Swhack.
13:43:30 <tusho> (/me checks download status...)
13:44:10 -!- tritonio__ has joined.
13:44:44 <tusho> Why must there be throttles in the world.
13:44:45 -!- Tritonio_ has quit (Read error: 110 (Connection timed out)).
13:45:12 <ais523> tusho: to prevent one person being able to slashdot the entire Internet with wget
13:45:40 <ais523> (there are ways to set its settings so it'll download every web page linked from any other webpage recursively forever, which will end up downloading much of the Internet, but this is a bad idea)
13:46:10 <tusho> ais523: Or rather so that the file dump sites can sucker you into being a premium account. (I'd use bittorrent except 1. if a friend uploads it I can be sure of the quality & correct tags 2. It's more reliable, in general, whereas torrents often end up with incomplete files etc)
13:50:53 <tusho> Woop woop. Downloaded.
13:51:09 <ais523> tusho: what did you download?
13:51:26 <tusho> Ugh, my fonts have messed up.
13:51:32 <tusho> Always seems to happen after catting /dev/urandom.
13:51:40 <ais523> tusho: use the reset command?
13:51:52 <ais523> that cleans up a random cat for me
13:51:55 <tusho> ais523: no I mean literally
13:52:00 <tusho> even if I restart the terminal
13:52:05 <tusho> it's something to do with os x font caches
13:52:09 <tusho> I imagine leopard fixes it
13:52:11 <ais523> that's pretty bad terminal design...
13:52:19 <tusho> ais523: it happens with any terminal
13:52:21 <tusho> I think its an os bug
13:52:24 <tusho> but it rarely happens
13:52:33 <tusho> mostly if you give it really wacky unicode over the course of several days
13:52:38 <ais523> how can the OS mess up the fonts just because you catted something to a terminal?
13:53:51 <ais523> oh, btw I found an explanation of SGML comments that actually made sense
13:54:12 <ais523> it seems that <! -- this is a comment -- > is fine in SGML (and therefore in early versions of HTML)
13:54:26 <ais523> because <! starts a declaration, > ends it, and -- toggles a comment inside a declaration
13:54:46 <tusho> ah, that's how it got the syntax
13:54:50 <ais523> that's why <!----> starts and ends a comment but <!------> ends up inside a comment
13:54:53 -!- oklofok has quit (Read error: 113 (No route to host)).
13:55:16 -!- tusho has quit.
13:56:48 -!- jix has joined.
13:58:21 -!- tusho has joined.
13:58:41 <tusho> ugh, mouse out of battery again
13:58:50 <tusho> that does it, after this i'll put back in my crappy old wired mouse
13:59:02 <ais523> tusho: that's why I'm using a wired mouse at the moment too
13:59:10 <tusho> ais523: it didn't used to do this
13:59:14 <tusho> but it's been dropped a few times
13:59:16 <ais523> and this mouse is very crappy, I suspect it's made of cardboard but am not sure
13:59:25 <tusho> and I think that fucked it up
13:59:39 <tusho> (the batteries have a little checker thing on the side and they always have like a third)
13:59:45 <tusho> (and yet the mouse says they're dead)
14:00:40 <ais523> tusho: could be a loose connection causing resistance inside the mouse, the battery charge would appear lower to the mouse because less voltage and/or current would get through
14:00:40 <ais523> and I can see how dropping a mouse would cause a loose connection
14:00:55 <tusho> ais523: something over my head like that, yes
14:00:59 <tusho> it scratched the teflon base
14:01:08 <tusho> so now it's awkward to use on anything other than a fibrous mouse mat
14:01:11 <tusho> and it's slowed down a bit even on that
14:01:16 <tusho> so i had to turn accelleration up
14:02:38 <tusho> ais523: http://zeepmobile.com/ neat
14:02:52 <tusho> they use the last 40 chars of the message for ads though :(
14:03:30 <ais523> tusho: now all that's needed is someone interfaces it with Java, then we can plz send everyone the code
14:04:04 <ais523> sending SMS messages from Java was the original question that sparked off that particular meme
14:09:00 -!- oklopol has joined.
14:12:36 <oklopol> i want like a spec, but i'm too lazy to ggl
14:12:48 <tusho> hear that GregorR? we're pinging you
14:12:53 <tusho> like this: GregorR
14:16:41 <ais523> tusho: the FSF have released a new propaganda video which I'm watching atm, it's good if you like unintentional humour
14:16:48 <tusho> ais523: by stephen fry?
14:16:55 <tusho> i'll watch that in a bit
14:16:58 <tusho> i like stephen fry a lot
14:17:28 <ais523> basically they've persuaded him to spout propaganda lines explaining what FSF-free software is in terms that a kindergarten could understand
14:17:34 <ais523> which is all very patronising
14:18:01 <tusho> ais523: i'm sure he had a lot of fun being patronising too
14:18:43 <ais523> the FSF are still desperately trying to promote gNewSense
14:18:55 <tusho> yea, i read the reddit comments to that video and saw gnewsense
14:18:58 <tusho> and i just laughed
14:19:09 <tusho> oh FSF, when will you learn about reality?
14:20:23 <tusho> ais523: could you check if rutian's apache is gzipping pages it sends?
14:20:25 <ais523> they released it cc-nd
14:20:32 <ais523> tusho: I think I can check
14:20:48 <ais523> tusho: the FSF think propaganda should be no-derivs
14:20:55 <tusho> ais523: yea, god forbid they get made fun of
14:20:57 <ais523> the Emacs manual ended up being declared non-free by Debian
14:21:05 <ais523> until they changed their mind about that
14:21:21 <tusho> ais523: i think I might remix stephen fry's video to make the FSF look even more ridiculous (after watching it) and host it out of spite
14:21:34 <tusho> and have at the bottom, two links
14:21:41 <tusho> fsf.org - "Support free software!"
14:21:45 <fizzie> Lots of GNU program documentation is in Debian non-free, thanks to GFDL.
14:21:47 <tusho> creativecommons.org - "Support free culture!"
14:22:07 <tusho> fizzie: Hm, so Wikipedia isn't debian-free?
14:22:28 <ais523> tusho: it depends on what options on the GFDL you select
14:22:31 <ais523> Wikipedia is debian-free
14:22:40 <fizzie> According to vrms, I've got non-free packages like: autoconf-doc, gdb-doc, gcc-doc-base, ocaml-doc.
14:22:40 <ais523> but the GFDL has all sort of optional extras you can add on
14:22:55 <ais523> for including propaganda into a document in a non-free way
14:23:06 <ais523> as long as it's unrelated to the subject of the document
14:23:07 <fizzie> Immutable sections were the thing I saw people griping about.
14:23:09 <tusho> i have non-free software such as ... um ... I don't think it'll fit on an IRC line :P
14:23:32 <fizzie> Yes, well, I just selected some of the "-doc" packages I had; there's others.
14:23:36 <ais523> in other words GFDL lets you add a section of propaganda to your documentation that nobody's allowed to remove, as long as it has nothing to do with the content people are actually looking for
14:24:25 <ais523> of course people who try to use the GFDL sanely, like me and whoever selected the licence for Wikipedia, disable all the optional extras and just end up with a licence that actually resembles the cc licences a bit
14:24:55 <tusho> i'd say something witty but I can't think of anything to make this funnier :)
14:25:44 <ais523> I think the problem is that the FSF don't really 'get' free software, despite having invented it
14:26:06 <tusho> ais523: my take on it is that the FSF are obsessed with making the general public all brainwashed to support everything they say
14:26:15 <tusho> so they add loads of terms to obligate the spreading of the propaganda
14:26:27 <tusho> (exaggerated, of course, but the basic idea)
14:26:40 <tusho> they'd be good virus writers
14:26:41 <ais523> tusho: bad news, it isn't gzipping, I would tell you in #ESO but you aren't there
14:26:49 <tusho> ais523: ah, so that's why it's not all that fast
14:34:38 <AnMaster> ais523, http://rafb.net/p/dbkAv776.html
14:35:12 <ais523> AnMaster: those warnings aren't just in the compiler, they're in the C-INTERCAL manual too
14:35:22 <ais523> they're potential gotchas for people writing code to interface with INTERCAL code
14:35:47 <ais523> AnMaster: the manual warns that the variables won't be initialised and so don't rely on them being initialised
14:36:01 <ais523> AnMaster: yes, or goto into a block with initialised variables
14:36:13 <ais523> as in goto a; {int b; a: ; }
14:36:14 <AnMaster> ais523, anyway you could have a bug there
14:36:28 <AnMaster> ais523, and this is not with EC stuff
14:37:05 <ais523> actually that's just a false positive
14:37:16 <ais523> because those variables go out of scope before they can be used
14:37:24 <ais523> the code for -m is more like goto a; {int b=2; } a: ;
14:37:29 <ais523> which is clearly not a problem
14:37:52 <ais523> it's kind-of obvious that's happening from the error because it's skipping a huge number of variables with the same name
14:37:57 <ais523> which don't shadow each other
14:38:03 <ais523> so they all go out of scope before there's a problem
14:40:38 * tusho downloads some more stuff
14:42:24 <tusho> 17 minutes remaining...
14:44:55 <oklopol> http://www.vjn.fi/pb/p144322651.txt readable and/or Cish?
14:45:19 <tusho> oklopol: quite Cish
14:45:24 <ais523> oklopol: those bitfields will cause havoc on an 8-bit system
14:45:27 -!- Judofyr_ has quit (Read error: 104 (Connection reset by peer)).
14:45:34 <tusho> oklopol: use int argc, char **argv though
14:45:37 <tusho> instead of nargs,args
14:45:43 <ais523> they don't fit nicely on 8-bit boundaries
14:45:44 <tusho> but apart frmo that, it looks kind of like c from the 70s :P
14:46:00 -!- Judofyr has joined.
14:46:06 <oklopol> ais523: well then i'll just have to do the bitshifts manually.
14:46:21 <tusho> oklopol: do you care about 8 bit systems
14:46:21 <ais523> tusho: C from the 70s would be main()int argc;char** argv;{}
14:46:26 <tusho> ais523: well, you know what i mean
14:46:39 <oklopol> which basically means writing in python what the C compiler has for this exact case
14:46:57 <tusho> oklopol: just do what you're doing
14:47:05 <tusho> unless you wanna run it on a nes
14:47:48 -!- oklofok has joined.
14:47:48 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
14:47:55 <oklofok> i've managed to break another cable
14:48:09 <oklofok> "as always, i want it to run on my own computer, everything else is just gravy." was my last message, not sure if you got it.
14:49:16 <ais523> oklopol: no, leave it as it is
14:49:16 <ais523> the compiler will sort it out for you
14:49:16 -!- ais523 has quit (Remote closed the connection).
14:49:31 -!- ais523 has joined.
14:49:51 <oklofok> i need the bitfields to have that exact structure, because i'm writing that raw into a file
14:50:13 <oklofok> sort out the shifting the data into the struct?
14:50:25 <ais523> oklofok: C doesn't guarantee any structure in bitfields
14:50:36 <ais523> for instance, what's the endianess of a 26-bit int?
14:50:41 <oklofok> well that sucks donkey ass
14:50:46 <ais523> it will vary from system to system
14:50:58 -!- Judofyr has quit.
14:51:03 <ais523> the bits are guaranteed to be in the order you say but there may be padding between them
14:51:28 <oklofok> so basically i have to shift everything manually into an int
14:51:31 <ais523> gcc lets you remove the padding with __attribute__((__packed__)) but I'm not sure if that'll work on non-32-bit systems, where your bitfields cross the boundaries between ints
14:51:40 <ais523> manual shifting is safer, and easy
14:51:58 <oklofok> yeah, well, i'll stick with this one, and make a python program convert all that for me
14:52:11 <oklofok> not convert, shiftorize is the correct term
14:52:23 <tusho> oklofok: why not just use attribute packed
14:52:25 <tusho> it's probably the best
14:52:30 <tusho> after all, you only care about your system
14:52:30 -!- tritonio__ has quit (Client Quit).
14:52:31 <oklofok> anyway i have some business to attend to, see you in a bit
14:52:37 <oklofok> tusho: well i kinda missed that line :P
14:52:44 <oklofok> yeah, that'll indeed be okay
14:53:02 <oklofok> i think i automatically skip lines that contain something as complicated as __attribute__
14:53:25 <oklofok> you will have to tell me how that's used later, when i actually start making this
14:53:45 <ais523> oklofok: it isn't standard C, gcc lets you do that sort of thing but some compilers don't or have different syntax
14:53:59 <oklofok> ais523: yeah that's fine by me, but how exactly is it used?
14:54:22 <oklofok> do i just write __attribute__((__packed__)) in my diary or something?
14:54:28 <ais523> you put the syntax after the } of the struct definition
14:54:30 <oklofok> or should it be written in the code somewhere
14:54:58 <oklofok> but, ima take a break from irc now, see you in a bit ->
14:58:04 <ais523> tusho: heh, newlib is formed by combining code licenced under 28 different BSD-style licences and the LGPL
14:58:18 <ais523> that's legal, but hardly good style
14:58:53 <ais523> it makes the copyright notice stupidly long
14:59:19 <tusho> ais523: idea for a copyright license
14:59:34 <tusho> for each derivative
14:59:39 <tusho> you have to add one word to a one word story included with the program
15:00:20 <ais523> tusho: I wanted to write an anti-copyleft licence which was still open-source; all derivative works had to add an extra condition to the licence, preferably a silly one which hardly ever comes up
15:00:35 <ais523> therefore derivative works can be non-open-source but the original is open source
15:00:55 <ais523> I don't think I'd use such a licence except for something silly though
15:01:04 <ais523> I mean, sillier than usual
15:01:22 <tusho> ais523: what about a licensenomic
15:01:32 <tusho> different derivatives could vote on license changes in their parents
15:01:36 <ais523> tusho: combining a nomic legal system with a RL legal system?
15:01:58 <ais523> that would get very dangerous very quickly, especially when it came to indemnification
15:02:16 <tusho> ais523: it'd probably have a huge legalese of limitations
15:02:18 <ais523> you might end up having to pay Apple the damages for being sued by Microsoft, for instance
15:02:30 <tusho> it'd only be for silly things anyway
15:22:52 <oklofok> hmm, is there an assembly that requires you to declare a register before you use it
15:23:16 <oklofok> you could have the speed benefit of not having to push everything @ call, but still have the safety
15:23:42 <ais523> oklofok: C written entirely with gcc asm statements
15:24:29 <ais523> that gives you the speed benefit
15:24:38 <ais523> it's just very verbose
15:24:47 <ais523> the whole thing collapses into just the asm when it's compiled
15:25:09 * ais523 recalls writing asm like that on a different compiler because they didn't know how to use the assembler
15:25:20 <oklofok> but, you don't have to specify the registers you use, and that's a bit boring
15:25:31 <oklofok> actually you do have to do that
15:25:51 <oklofok> you will have to elaborate on how a register is declared in C
15:26:16 <ais523> oklofok: again you can't do that in general, in gcc you can declare a variable to be in a particular register
15:26:18 <oklofok> can't you just write any assembly you like?
15:26:31 <ais523> and in gcc you have to specify the inputs and outputs to each asm statement you write
15:27:08 <oklofok> i should learn more about gcc, it seems to be incredibly awesome and great
15:27:35 <ais523> it's good for doing non-portable stuff, and most of the stuff you're asking about can't be done portably
15:29:13 <oklofok> i don't care about portability, i mainly wanted to know whether that idea has been investigated
15:29:38 <ais523> gcc's asm is awesome compared to asm in all the other non-gcc-based compilers I've used
15:29:48 <oklofok> well, i invented it for my stack-language->brainfuck compiler as well, it's not really an invention; guess that's why i specifically asked whether it exists
15:29:58 <ais523> most of the others required you to guess where everything went when mixing asm and C
15:30:02 <ais523> in the same source file
15:45:34 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | print message.
15:46:30 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | you are not allowed to use a printout?.
15:46:35 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | Ah. Fine ;)..
16:04:34 -!- KingOfKarlsruhe has quit (Remote closed the connection).
16:10:35 -!- Tritonio_ has joined.
16:11:26 <AnMaster> <ais523> gcc lets you remove the padding with __attribute__((__packed__)) but I'm not sure if that'll work on non-32-bit systems, where your bitfields cross the boundaries between ints
16:11:26 <AnMaster> <ais523> manual shifting is safer, and easy
16:11:46 <ais523> AnMaster: what if you were on a system with 11-bit ints?
16:11:51 <ais523> not that they exist, but they could do in theory
16:12:22 <ais523> it would have to be 22-bit int, 33-bit or 44-bit long
16:12:30 <ais523> and long long would be 66 bits or more
16:18:36 -!- AnMaster_ has joined.
16:19:48 -!- AnMaster has quit (Nick collision from services.).
16:20:14 -!- AnMaster_ has changed nick to AnMaster.
16:20:27 <AnMaster> <ais523> not that they exist, but they could do in theory <-- last I saw from anyone else
16:20:29 <AnMaster> I said several lines after that though
16:20:42 <ais523> [16:11] <AnMaster> <ais523> gcc lets you remove the padding with __attribute__((__packed__)) but I'm not sure if that'll work on non-32-bit systems, where your bitfields cross the boundaries between ints
16:20:42 <ais523> [16:11] <AnMaster> <ais523> manual shifting is safer, and easy
16:20:42 <ais523> [16:11] <AnMaster> well
16:20:42 <ais523> [16:11] <AnMaster> in erlang it would be easy
16:20:42 <ais523> [16:11] <AnMaster> very easy
16:21:15 <AnMaster> ais523, http://rafb.net/p/yehiAb75.html
16:22:07 <ais523> _ means don't care in Prolog too
16:22:38 <AnMaster> well erlang doesn't do back tracking
16:24:01 <AnMaster> you would probably do it in two steps
16:24:29 <AnMaster> unless there was some easy way to see
16:24:46 -!- oklofok has quit (Read error: 113 (No route to host)).
16:24:49 <AnMaster> for example, first bit set of Opcode means that it is a "Rinstr"
16:24:54 -!- oklopol has joined.
16:25:30 <AnMaster> <<2#1:1,Opcode:5,Rs:5,Rt:5,Rd:5,Shamt:5,Funct:6>>
16:26:00 <AnMaster> I love Erlang pattern matching :)
16:26:34 <ais523> lots of langs have powerful pattern matching, unfortunately most of the really popular ones don't
16:26:38 -!- BMeph has joined.
16:26:54 <AnMaster> I saw some code to detect if it was a MPEG frame. the function prototype was: decode_header(<<2#11111111111:11,B:2,C:2,_D:1,E:4,F:2,G:1,Bits:9>>)
16:27:45 <AnMaster> ais523, anyway how many got such powerful bit matching syntax?
16:27:56 -!- BMeph has quit (Client Quit).
16:28:09 -!- BMeph has joined.
16:28:23 <AnMaster> it can also be used to construct, not just pattern match
16:28:34 <ais523> AnMaster: Prolog doesn't have bitwise variables but it can match arrays and tuples the same way as that, and likewise can construct the same way
16:28:53 <AnMaster> well erlang can do it for arrays and tuples too
16:29:37 <AnMaster> ais523, http://rafb.net/p/C7qQoh24.html
16:30:10 <ais523> in Prolog the entire lang's pattern matching, pretty much
16:30:45 <AnMaster> well erlang doesn't use backtracking, doesn't really make sense for something "soft realtime" (which erlang is, not hard realtime though)
16:30:53 <ais523> I should really write more Prolog, it's a beautiful language but I haven't written more than simple test programs in it
16:31:36 <AnMaster> ais523, back tracking wouldn't be good for something performance critical
16:31:49 <ais523> AnMaster: it depends on how deep it is
16:32:05 <ais523> you can write Prolog so that every predicate is deterministic, then all backtracking collapses into an if
16:32:13 -!- Mony has joined.
16:32:23 <AnMaster> ais523, does prolog have list comprehensions?
16:32:45 <ais523> I'm not entirely sure what a list comprehension is, but I'm pretty sure from memory that it does
16:33:23 <AnMaster> say you want to multiply each number in the list by 2
16:33:38 <AnMaster> 2> lists:map(fun(X) -> 2*X end, L).
16:33:44 -!- BMeph has quit ("http://www.mibbit.com ajax IRC Client").
16:33:48 <ais523> ah, that sort of thing's generally done using setof
16:33:59 <ais523> where the list comprehension is mixed into the syntax of the rest of the language
16:34:45 <ais523> doublemember(A,L) :- member(B,L), A is B*2;
16:34:51 <ais523> then you do setof(doublemember(A,L),A)
16:35:03 <ais523> that's almost exactly your list comprehension just with more verbose synta
16:35:42 <AnMaster> ais523, you can have several comma separated entries after the || there in erlang
16:35:44 <Deewiant> well, "list comprehension" generally means "that, but with less verbose syntax" :-)
16:36:03 <Deewiant> of course all list comprehensions can be rewritten in terms of combinators like map
16:36:09 <ais523> Deewiant: yes, a quick Wikipedia check shows that someone invented "Visual Prolog" which has a short syntax for a list comprehension
16:36:21 <AnMaster> 1> [ X || {a, X} <- [{a,1},{b,2},{c,3},{a,4},hello,"wow"]].
16:36:24 <ais523> Prolog tends to have consistent syntax rather than short syntax, though
16:36:31 <AnMaster> pattern matching everywhere! :)
16:36:46 <ais523> pretty much syntax can be deduced from the rules of the language
16:37:08 <ais523> ; , ! :- are pretty much the only control flow operators you need
16:37:13 <fizzie> List comprehensions have been all the rage after Python did them; they added those to Javascript, too. (In Mozilla, although it might be in a later ECMAScript version too.)
16:37:17 <ais523> and you don't need to write ; explicitly either
16:37:56 <AnMaster> ais523, um, erlang got if and case, but you can always use pattern matching instead
16:38:11 <AnMaster> however sometimes it is clearer with if and case
16:38:18 <AnMaster> than calling another function for it
16:38:22 <ais523> AnMaster: in Prolog it's always done with pattern matching
16:38:34 <AnMaster> ais523, sometimes the alternative is more readable
16:38:45 <ais523> it depends on if you're used to reading Prolog, I suppose
16:39:33 <tusho> max x y | x > y = x
16:39:38 <ais523> AnMaster: that looks like Prolog with a non-standard syntax
16:39:40 <tusho> max x y | x > y = x
16:39:46 <tusho> (just getting that in line :P)
16:39:59 <ais523> let me translate it into Prolog
16:40:01 <Deewiant> max x y = if x > y then x else y
16:40:19 <ais523> max(X,Y,R) :- X > Y, !, X=R
16:40:25 <AnMaster> well the "when" keyword in erlang is a guard
16:40:34 <AnMaster> can be used with pattern matching too
16:40:39 <ais523> hmm... that can be shortened
16:40:47 <ais523> max(X,Y,X) :- X > Y, !
16:41:04 <ais523> AnMaster: pattern matching
16:41:09 <ais523> it matches the argument to the function against the result
16:41:13 <AnMaster> ais523, it takes 3 parameters?
16:41:16 <ais523> there is no distinction in Prolog
16:41:24 <ais523> AnMaster: the return variable is always one of the arguments in Prolog
16:41:33 <ais523> things return values through their arguments
16:41:44 <ais523> apart from pass/fail Booleans
16:41:46 <AnMaster> ais523, so everything doesn't have a value in prolog?
16:41:54 <ais523> AnMaster: functions are only pass/fail
16:41:56 <tusho> AnMaster: prolog doesn't work like that
16:41:59 <ais523> well, not functions, predicates
16:42:02 <tusho> it's a totally different paradigm
16:42:16 <oklopol> "Most actual digital computers have only a finite store." <<< wonder what turing meant by this exactly
16:42:19 <ais523> they can put extra restrictions on their arguments as a side effect
16:42:21 <AnMaster> tusho, yes though ais523 seem to suggest it is close to erlang
16:42:27 <tusho> AnMaster: it's not
16:42:34 <ais523> AnMaster: no, I was suggesting it had similar pattern matching facilities
16:42:40 <ais523> Prolog is declarative, not functional
16:43:03 <AnMaster> ais523, well I read that erlang is classed as something in between declarative and functional
16:43:04 <Deewiant> well, functional is declarative to an extent
16:43:39 <ais523> Deewiant: yes, it can be, but it's not really crazy declarative like Prolog
16:43:40 <Deewiant> the difference is that prolog is logic programming
16:43:55 <ais523> Deewiant: apart from !
16:44:02 <ais523> the cut messes things up so beautifully
16:44:07 <ais523> although it's pretty hard to explain
16:44:36 <ais523> AnMaster: prevents backtracking backwards past the ! to earlier in the same predicate or an alternative to that predicate, backtracking has to go to a previous predicate instead
16:45:14 <AnMaster> ais523, does Prolog support files? sockets?
16:45:31 <ais523> probably the best way to explain to a C programmer is that the difference between no cut and cut is a bit like the difference between if(a){do_a();} if(b){do_b();} and if(a){do_a();} else if(b){do_b();}
16:45:40 -!- oerjan has joined.
16:45:54 <AnMaster> ais523, well I'm an erlang programmer too :P
16:46:00 <ais523> AnMaster: not sure if that's in the standard library, the original implementation implemented files in a pretty quaint way with routines with silly names that tended not to be copied
16:46:07 <ais523> AnMaster: but I don't know erlang and I do know C
16:46:29 <ais523> to get the Prolog equivalence working properly, think of do_a() and do_b() as either doing nothing or not returning depending on whether they can do something
16:46:30 <AnMaster> ais523, concurrency in prolog?
16:46:51 <ais523> AnMaster: they wouldn't mix well, loops in Prolog work differently from in most other languages
16:46:59 <ais523> well, you can loop by recursion, which functional programmers are fine with
16:47:06 <AnMaster> yes erlang does loops that way
16:47:09 <ais523> and you can loop by backtracking which is just weird if you're not used to it
16:47:31 <AnMaster> ais523, how do you cause a backtrack to happen?
16:47:44 <ais523> AnMaster: any command failing, normally due to a lack of pattern match
16:48:00 <AnMaster> ais523, won't it give up at some point?
16:48:03 <Deewiant> AnMaster: you can look at http://shootout.alioth.debian.org/gp4/prolog.php for instance for prolog programs
16:48:07 <ais523> AnMaster: when it runs out of possibilities
16:48:08 <AnMaster> when it tried all possibilities
16:48:14 <AnMaster> ais523, so how could you loop then?
16:48:22 <ais523> AnMaster: repeat. repeat:-repeat.
16:48:41 <ais523> that translates roughly as "One way to repeat is to do nothing; another way is to repeat."
16:48:53 <ais523> which means that there are an infinite number of different ways to repeat, due to the recursion
16:49:01 <tusho> ais523: you're kind of breaking AnMaster's brain
16:49:13 <AnMaster> ais523, is this like tail recursion? or does it eat up stack space
16:49:23 <tusho> AnMaster: you;re thinking way too low level
16:49:26 <ais523> AnMaster: it doesn't eat up stack space, nor trail space
16:49:43 <ais523> it does have a problem with nowhere to save data though unless you use things like assert
16:49:58 <ais523> so normally you implement your own leaky version of repeat so you can leave the loop at both ends
16:50:09 <oklopol> now is the loopie actually done by writing stuff in the first repeat?
16:50:17 <AnMaster> tusho, a non-tail recursion would eat up call stack space, while a tail recursive one would basically be translated to a goto to the start of the function
16:50:18 <oklopol> so you don't just infloop nop
16:50:28 <tusho> AnMaster: that's low-level thinking
16:50:38 <ais523> oklopol: no, a sample infloop printing hello world would be goal:- repeat, print("Hello, world!"), fail.
16:50:38 <tusho> prolog is a Very High Level language, as they're called
16:50:44 <AnMaster> tusho, "what the implementation is doing" thinking yes
16:50:55 <tusho> AnMaster: it is when you're thinking about the language
16:51:06 <tusho> it's why a ton of things i try and explain to you go over your head
16:51:07 <ais523> tusho: I know the naive way to implement prolog, so I can think in terms of implementations too
16:51:17 <tusho> ais523: but he's not thinking naively
16:51:20 <ais523> there are less naive ways that run a lot faster though
16:51:23 <tusho> he's thinking about optimizations and stuff
16:51:28 <tusho> it's just not productive in this situation
16:51:46 <ais523> tusho: you need to read several mathematical papers which I haven't read to understand how Prolog optimisation works, apparently
16:52:00 <AnMaster> if you want to do an infinite loop, for example a thread dispatching messages
16:52:19 <tusho> god, now I remember why I ignored AnMaster
16:52:22 <AnMaster> as you will run out of memory after some 10000 loops or so
16:52:32 <AnMaster> now this is very erlang style of thinking actually
16:52:45 <AnMaster> because erlang is kind of a mix between high and low level functional language
16:52:55 <ais523> AnMaster: tail recursion or backtracking in Prolog to prevent running out of stack, a good implementation won't run out of trail in tail-recursion either unless you're doing something silly like building an infinitely-long list
16:52:59 <AnMaster> erlang supports so called "linked in drivers" to interact with native code
16:53:14 <AnMaster> for example someone made a "SDL and OpenGL" linked in driver
16:53:29 <AnMaster> a 3D modelling program written in erlang
16:53:58 <AnMaster> ais523, indeed, but *non* tail recursion...
16:54:30 <ais523> AnMaster: well you wouldn't use that if you wanted to write an infinite loop
16:54:42 <ais523> that way you'd run out of both stack and trail, probably irrelevant which one runs out first
16:54:50 <oklopol> i don't believe in stack overflows
16:55:05 <AnMaster> ais523, exactly what I said...
16:55:43 <AnMaster> ais523, I'd say erlang is both high and low level
16:56:05 <AnMaster> high level functional programming is perfectly possible, but interacting with low level stuff is easy too
16:56:37 <AnMaster> not very odd when you think about it
16:56:40 <ais523> well Prolog is definitely high level, it doesn't even have anything very equivalent to what most languages call variables
16:56:46 <AnMaster> it is a general purpose programming language
16:57:04 <AnMaster> ais523, variables are "one time assign" in erlang if that is what you mean
16:57:24 <Deewiant> I heard somewhere that one of Prolog's original creators (or old developers) said that it would have been better off as a library in another language
16:58:14 <tusho> Deewiant: it's widely agreed on nowadays, I believe
16:58:21 <AnMaster> ais523, there *are* ways to get around that, for example using something called EDS tables, which are mostly used by the transaction database mnesia coded in erlang, it need to be stateful for obvious reasons
16:58:28 <ais523> AnMaster: variables are not exactly one time assign in Prolog, they get narrowed down over time
16:58:31 <tusho> Franz's Allegro Common Lisp has a prolog query language built in
16:58:33 <Deewiant> tusho: is there a semi-credible source for such a statement?
16:58:37 <tusho> Deewiant: my brain
16:58:38 <AnMaster> ais523, oh that is a new one hehe
16:58:55 <tusho> they dont' generally remember things
16:59:00 <tusho> sheesh, thought i was on to something then
16:59:03 <tusho> no semi-credible sources
16:59:11 <tusho> Deewiant: oh I know some VERY credible cocks
16:59:13 <tusho> IF YOU KNOW WHAT I MEAN
16:59:16 <tusho> ... I don't know what I mean.
16:59:45 <Deewiant> tusho: where do you get "it's widely agreed on", then :-)
17:01:03 <ais523> AnMaster: basically in SSA a variable gets a value once and never changes, in Prolog once it gets an actual value it never changes (although the assignment can be backtracked past), but variables can be unified with other variables causing the variables to have to have the same value once a value does appear
17:01:19 <Deewiant> tusho: your brain is that wide?
17:01:31 <tusho> Deewiant: my brain is a cock, i think
17:02:48 <oerjan> tusho: i was going to avoid saying that
17:02:59 <tusho> oerjan: it's ok, i can take the immaturity of this channel to new levels
17:03:02 -!- Tritonio_ has quit (Remote closed the connection).
17:03:04 <tusho> it's just hard finding a good time to do so
17:03:17 <AnMaster> ais523, this sounds more like an automated logic proof checker or so
17:03:21 <tusho> hmm it's also possible that my cock is a brain
17:03:24 <tusho> but that'd be weird.
17:03:35 <tusho> (I mean, weirder than this hypothetical "braincock")
17:03:49 <AnMaster> ais523, no, more like: you give it some rules, and it works out a result that fits with all the rules
17:03:49 <Deewiant> AnMaster: doesn't sound far off the mark, actually
17:04:00 <Deewiant> AnMaster: that's pretty much exactly it
17:04:29 <AnMaster> question: will it do "any ok match" or "best match""
17:04:34 <ais523> AnMaster: yes, were it not for the existence of ! that would be Prolog in a nutshell, ! throws the whole system quite out of kilter, which is why I like it
17:04:50 <AnMaster> you have the coast line of africa and south america, and want to find the best possible fit
17:04:55 <ais523> AnMaster: "first match", and you can get subsequent matches using something like setof or failing when you get a match you don't like the look of
17:05:20 <ais523> or in your case you could mess about with assert, which is another way to go insane in Prolog
17:05:31 <AnMaster> ais523, so prolog isn't suited for problems where there are "good" and "better" matches
17:05:53 <ais523> AnMaster: it's not really good for anything but headlong depth-first search which is bad for that sort of problem
17:06:07 <ais523> that sort of problem is trivial to specify in Prolog but very difficult to specify efficiently
17:06:10 <AnMaster> ais523, so what language would you recommend for the problem I suggested?
17:06:26 <oklopol> i'd recommend muture, if it existed yet
17:06:30 <tusho> how many albums have I downloaded today, 4 or 5?
17:06:46 <tusho> and one arrived that i'd bought
17:06:47 <ais523> AnMaster: not really sure, I can't think of one that fits offhand
17:07:00 <tusho> well, I like all of them so far, so that's good
17:07:03 -!- bsmntbombdood has quit (Connection reset by peer).
17:07:12 <oklopol> made muture exactly for that, running it as a human computer can already accomplish fun stuff
17:07:28 <AnMaster> ais523, actually I would use the "coast line" at say 1000 meters below the sea, I read somewhere that is a much closer fit than the "real" cost line
17:07:36 -!- bsmntbombdood has joined.
17:07:49 -!- bsmntbombdood has quit (Connection reset by peer).
17:08:23 -!- bsmntbombdood has joined.
17:08:28 <oerjan> the tectonic plates don't stop exactly at the seaside...
17:09:07 <AnMaster> oerjan, I'd blame erosion I guess
17:09:08 <oerjan> for example, i think britain is on the same plate as the rest of europe, and the north sea
17:09:54 <oerjan> also, sea level change
17:10:11 <oerjan> there was a relevant WP article...
17:15:15 <oerjan> http://en.wikipedia.org/wiki/Epeiric_sea i think it was
17:16:36 <oklopol> what *don't* you have vague knowledge about!
17:17:28 <oerjan> it's just a month or so since i discovered that article, and i had a hard time finding it again
17:18:32 <oerjan> (turned out North Sea had a link to it)
17:19:35 <oerjan> http://en.wikipedia.org/wiki/Transgression_(geology) is also relevant
17:25:50 <ais523> oh dear, tell me anyway
17:26:04 <tusho> a client filter that filters out messages like 'the game', 'i lost the game', 'the game: you all just lost it', etc
17:26:04 <ais523> (n.b. this tends to be my typical reaction to anyone who claims to have a new idea, not just you)
17:27:09 <oerjan> he never claimed it was new
17:30:36 <tusho> well, that was another good album
17:32:42 <tusho> oklopol: no, i said it was good but i was lying
17:32:47 <tusho> why would i tell the truth?
17:33:00 <oklopol> i have no idea how good was it?
17:33:31 <oerjan> tusho: because it's shiny!
17:34:04 <oerjan> er, what is that % doing there
17:34:52 <Deewiant> tusho: I had that thought approximately immediately when you said "Lost the game/"
17:35:01 <tusho> Deewiant: haha, awesome
17:35:34 <Deewiant> tusho: I was interested enough to look at /help ignore but too lazy to write the regex
17:36:25 <ais523> Deewiant: .*[Gg]ame.* should work for most cases
17:36:37 <Deewiant> ais523: a bit too inclusive :-)
17:36:58 <oerjan> TH/\T'5 WH/\T Y0U TH1NK
17:37:14 <oklopol> false positives are okay for that important a filtering
17:37:17 <fizzie> Also the ".*"s surrounding it are spurious, as it will accept a regex match anywhere in the string if you don't anchor it with ^/$.
17:37:32 <ais523> fizzie: ah, I didn't know whether it was anchored or not
17:37:37 <ais523> assuming anchored is more orthogonal
17:38:06 <oerjan> U \/\/ILL L0S3 TH3 G/\M3 /\NYH0\/\/
17:38:47 <ais523> oerjan: I have a Firefox extension to generate leet-speak, I only installed it for rot13 though and the leet came free with it
17:39:11 <ais523> Y()|_| J|_|57 L()57 7|-|3 64|\/|3
17:39:19 <tusho> ais523: GAME woul dwork with that, to
17:39:22 <oerjan> the question here is whether you have an extension to filter it, me thinks
17:39:25 <tusho> YOU JUST LOST THE GAME
17:39:35 <ais523> come to think of it that's sufficiently leet that I can't decipher it myself
17:39:47 <fizzie> I had an ircII script installed which did leet among other ugly formats, once.
17:40:11 <fizzie> It did not convert from leet back to plain text, though.
17:40:33 <ais523> fizzie: the leet back to plain text converter worked fine on that string I pasted
17:40:41 <Deewiant> a GAME fingerprint that maps A-Z to q?
17:40:58 <ais523> Deewiant: wouldn't that be kind of pointless?
17:41:25 <fizzie> Not just a "kind of", many kinds of.
17:41:25 <ais523> besides, it should probably make all of A-Z print out the source code to the GAME fingerprint
17:41:30 <ais523> in different programming languages
17:41:38 <oerjan> *, * -> *, * -> * -> *, etc.
17:42:02 <ais523> oerjan: is that a Haskell kind signature?
17:43:52 <fizzie> ^bf ++++++++++[>+++++++++++<-]>+[.----.++++]
17:43:53 <fungot> okokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokoko ...
17:44:03 <tusho> fizzie: a work of art
17:44:08 <tusho> oklopol: oko-approved?
17:44:33 <tusho> ^bf ++++++++++[>+++++++++++<-]>+[.----.++++]
17:44:33 <fungot> okokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokoko ...
17:45:17 * tusho considers setting up ESO's Shrine to Oko
17:45:37 <ais523> tusho: it's actually plp, there was an off-by-one error
17:47:03 <tusho> oklopol: the oko shrine will have everything getting bigger and smalling and flickering and will be impossible to navigate
17:47:06 <tusho> unless you are amazing.
17:47:23 <tusho> aww, oko.org is squatted :P
17:47:38 <oerjan> apparently okoko is a surname
17:47:50 <ais523> tusho: I once saw a website about how not to design websites
17:48:03 <ais523> and they'd invented a navigation system which was even worse than the one they liked least
17:48:11 <tusho> what was it called?
17:48:16 <fizzie> Osuuspankki (a Finnish bank) has taken oko.fi; that's not surprising. (Although they're not using that domain any more.)
17:48:35 <ais523> they were annoyed at navigation systems which just showed abstract shapes until rolled over
17:48:43 <ais523> so you had to roll over each image to tell where you could go
17:48:51 <tusho> oklopol: how many 'ko's does an oko site need?
17:48:55 <ais523> so they invented one where the targets of the link were randomised on each rollover
17:48:55 <tusho> okoko, okokokokokoko, etc?
17:49:29 <tusho> ais523: http://www.webpagesthatsuck.com/mysterymeatnavigation.html?
17:50:55 <tusho> okoko, okokoko, okokokokokokokokokoko, ...
17:53:21 <tusho> And the Wikipedia Terrible Main Page Suggestion Combined With Bad Sig award goes to...
17:53:23 <tusho> http://en.wikipedia.org/wiki/Talk:Main_Page#Icon
17:54:23 <ais523> tusho: there's a Main Page redesign competition-like object going on at the moment, there are therefore many candidates for the Wikipedia Terrible Main Page Suggestion award
17:54:29 <ais523> not sure about the Combined With Bad Sig part
17:54:40 <tusho> ais523: but that one is truly terrible, click the guys name and see it in action
17:54:56 <ais523> tusho: I've seen the barnstar in question befor
17:55:04 <tusho> ais523: but behind the logo?
17:55:07 <ais523> why do I keep leaving off the last character of sentences today?
17:56:03 <ais523> anyway, I tend to look suspectly at anyone with 4 collapsible boxes of userboxes on their userpage, at least as far as main page design is concerned
17:56:46 <Deewiant> oh wow, a wikipedia page that needs javascript
17:57:13 <ais523> most of the collapse stuff is designed to work without JS
17:57:24 <ais523> although the way it's abused for userpages probably it does need the JS installed
17:57:28 <Deewiant> I can't uncollapse anything with JS disabled
17:57:37 <Deewiant> and I do have JS disabled for wikipedia
17:57:49 <ais523> ugh, it should autoexpand without JS, someone's been messing up the autocollapse code for userpage use
17:57:56 <ais523> a whole lot of dubious coding practices happen on userpages
17:58:25 <tusho> hmm... if you can position:absolute things on wikipedia
17:58:33 <tusho> then you could do a MySpace(TM) and make your completely own page
17:58:36 <tusho> with just the basic chrome at the top
17:58:46 <tusho> it'd probably be removed, but damn, gotta try that
17:58:58 <tusho> oklopol: an oko shrine would have to run really fast, wouldn't it?
17:59:04 <tusho> because while oko code is not fast
17:59:15 <ais523> tusho: you can, but they started messing around with blacklisting various z-index messabouts because people were using them for trolling
17:59:29 <tusho> ais523: ah yes, that one
17:59:33 <tusho> GAWKY or something
17:59:40 <ais523> all the ones that spambots have used automatically will be blocked, so you'll have to write the code an entirely different way
18:00:00 <ais523> and no, the ascii goatse was something else but they blocked that too
18:00:30 <tusho> i need to incorporate oko javascript into this shrine
18:00:36 <tusho> perhaps news reports will be delivered by twitter
18:00:44 <tusho> and got by making an ajax request to the archives
18:00:51 <tusho> applying a formatting language for multi lines, etc
18:00:56 <tusho> and accounting for split over multiple messages
18:00:58 <tusho> then rendering it in the page
18:02:17 <tusho> ais523: http://www.toad.com/gnu/sysadmin/index.html#firefox-eula-sux
18:02:32 <ais523> tusho: Firefox has an EULA?
18:02:37 <tusho> ais523: apparently
18:02:42 <tusho> http://blogs.gnome.org/hughsie/2008/05/23/firefox-eula/
18:03:36 <ais523> well I never agreed to one on Ubuntu
18:03:45 <tusho> ais523: presumably ubuntu remove it
18:03:52 <ais523> yes, that's what I assumed
18:04:01 <ais523> it's not like an EULA does anything in open source software anyway
18:04:08 <tusho> ais523: speaking of browsers, seen google chrome?
18:04:10 <ais523> besides, sed on a binary is pretty weird...
18:04:15 <ais523> tusho: I've heard of it, but not seen it
18:04:18 <tusho> the process seperation is badly needed, and IE8 actually excels in this area
18:04:29 <tusho> and a new javascript VM is a plus too, js kind of sucks these days + a sandbox = yay
18:04:36 <tusho> also a lot of the UI ideas look quite nice
18:04:46 <Deewiant> just about every browser is getting a new JS engine anyway :-P
18:04:58 <tusho> should be coming out today for windows, apparently an os x version is following
18:05:01 <ais523> tusho: apparently Slashdot has just decided that IEb2 uses more memory than Windows XP
18:05:13 <tusho> ais523: no wifi, less space than a nomad, lame.
18:05:31 <ais523> s/nomad/monad/, or am I missing something here?
18:05:50 <tusho> ais523: http://apple.slashdot.org/article.pl?sid=01/10/23/1816257&tid=107
18:06:28 <ais523> tusho: ah, Slashdot editor deciding they didn't like the iPod
18:06:36 <tusho> ais523: cmdrtaco, even
18:06:40 <ais523> admittedly there are still people who don't like iPods, quite a few
18:06:41 <tusho> it's a rather famous post
18:06:48 <ais523> but they are popular amongst the people who do
18:07:02 <tusho> though mostly as a portable web browser.
18:07:07 <ais523> I don't use a mobile at all
18:07:11 <tusho> (and ipod, though less often)
18:07:17 <tusho> i never call anyone, pretty much
18:07:18 <ais523> arguably my laptop's a portable web browser, though
18:07:19 <tusho> except once recently
18:07:21 <tusho> and texts are rare.
18:07:36 <ais523> and it needs to be in range of a wifi connection I can access
18:08:01 <tusho> admittedly I generally use it to feed my web addiction before I go to sleep :\
18:12:45 -!- Mony has quit ("À vaincre sans péril on triomphe sans gloire...").
18:15:20 -!- kar8nga has left (?).
18:25:35 <tusho> http://www.kavoir.com/ <- crAAAAAAAAAAAAAAAAAAAAzy
18:31:59 -!- KingOfKarlsruhe has joined.
18:38:15 <tusho> http://news.cnet.com/8301-17939_109-10026577-2.html?part=rss&tag=feed&subj=Webware
18:38:32 <tusho> where do i opt-out?
18:38:42 <tusho> come to think of it, isn't this shit illegal?
18:39:03 <ais523> tusho: what are you referring to, the fact that the page you linked had no text put a headline?
18:39:15 <ais523> ah, it was just slow loading
18:39:31 <tusho> more to the new advance in the war against privacy.
18:40:18 <ais523> I normally don't worry about such software because it's too incompetent to do its job properly
18:40:32 <tusho> let's just hope it doesn't become competent
18:47:07 <fizzie> What is it exactly that you would want to be illegal?
18:47:33 <tusho> fizzie: I couldn't specify it exactly, but stuff like that. Anyone can just identify me in a photo like that.
18:47:39 <tusho> (Obviously, it won't be that good, but that's the IDEA)
18:48:02 <tusho> That's a violation of privacy.
18:49:33 <ais523> tusho: where exactly is the violation? People teaching Google what you look at? Google using that information to find other pictures of you? Somewhere else/
18:49:55 <tusho> ais523: the violation is in the use of the feature to identify me & others
18:50:08 <tusho> although since the feature has absolutely no other use, the feature itself is at fault
18:50:30 <ais523> tusho: presumably it's for people tagging their own images Facebook-style
18:50:34 <ais523> to help them tag more quickly
18:50:40 <tusho> ais523: yeah, and I think that's bad too
18:51:03 <tusho> i don't care if a photo you took has me in it. without my explicit consent you have no right to identify the figure as me
18:59:50 <tusho> ZOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
19:00:10 <ais523> on the subject of Web Pages That Suck, they found this: <http://www.webpagesthatsuck.com/worst-web-sites-of-2007-number10-moire.html> <-- warning don't visit if you suffer from epilepsy or similar problems
19:00:32 <ais523> sorry, <http://web.archive.org/web/20060613061524/http://moire.ch/>, I copied the wrong link
19:00:42 <ais523> make sure you have JS on or you won't be able to see what's wrong
19:01:13 <tusho> ais523: isn't that, like, an art site thing
19:01:16 <tusho> if so it kind of makes sense
19:01:29 <ais523> Deewiant: have you tried with?
19:01:40 <ais523> hmm... I wonder if that could be done with CSS nowadays, probably it could be
19:01:41 <tusho> ais523: i think it's not a bad design for an arty kind of site
19:01:47 <tusho> and no, it couldn't
19:01:50 <tusho> there's no < operator in css
19:01:53 <ais523> tusho: except for knocking you out when you move the mouse?
19:01:54 <tusho> you can't say "the parent of X"
19:01:58 <tusho> ais523: that's art ;
19:02:03 <tusho> the rule would be:
19:02:09 <tusho> a:hover < body { background: ...; }
19:02:21 <tusho> #link-about-trees:hover < body { background: green }
19:03:27 <ais523> still, I reckon that design's inexcusable on any website, no websites should require the user to navigate with the keyboard because using the mouse drives them insane
19:03:44 <ais523> also there's the apparent harmlessness of it before you hover the links
19:04:02 <tusho> i think it fits for a graphic design site, personally
19:04:44 <tusho> aww, they've changed it - http://moire.ch/
19:04:50 <ais523> and yes, no wonder they changed it
19:05:19 <ais523> tusho: most websites don't kill their users when they move the mouse from one end of the screen to the other
19:05:28 <tusho> that would be an awesome site
19:05:34 <tusho> ekillyourselfonline.com
19:05:38 <ais523> tusho: I wouldn't want to visit it, though
19:05:43 <ais523> I like the e in your name for it
19:05:52 <tusho> ais523: They could travel back in time and put commercials on superbowl
19:06:03 <tusho> they'd only cost $100million to make.
19:06:07 -!- Corun has joined.
19:06:15 <tusho> and think of the benefit: people could eKill themselves! online!
19:06:20 <ais523> tusho: there are standards for that sort of thing, the London 2012 Olympic adverts had to slow down because they flashed too quickly
19:06:55 <tusho> ais523: the seizures were because it sucked so much
19:06:58 <tusho> not because of the flashes
19:07:27 <ais523> tusho: they were, they have an automatic seizurometer
19:07:38 <ais523> they had to slow it down to 1/4 of the speed to explain what they were talking about on the news
19:07:39 <tusho> man I want one of them
19:07:47 <tusho> I thought you said
19:08:01 <ais523> umm... that doesn't even make sense
19:08:02 <tusho> egiveyourselfaseizureonline.com
19:08:40 <oerjan> and it's lightweight cousin, the seizurino
19:10:43 <fizzie> tusho: Okay, I was just checking that you don't advocate illegalizing facial recognition algorithms or something insane like that. (And sure the feature has other uses: you could use it to tag pictures from your collection containing the face of someone who consents, like yourself. In any case, it would probably be pretty hard to make it illegal to offer that sort of feature.)
19:11:25 <tusho> fizzie: well, you can easily identify yourself without automatic recognition...
19:11:32 <tusho> it's...not hard...
19:12:26 <fizzie> A friend with permission, then. And even tagging pictures containing yourself is hard if there are gazillions of them. Although I fail to see why anyone would want to add a "hey_look_its_me_hey_look_hey_look" tag.
19:12:38 <fizzie> eDeath sounds like something far less serious than death.
19:13:16 <AnMaster> <oerjan> seizure the moment <-- heh
19:13:17 <ais523> well lots of people tag photos on places like Facebook, I don't really understand it myself but apparently Facebook's quite popular
19:13:26 <oerjan> there is also the fancy design iDeath, which works straight out of the box
19:13:46 <fizzie> oerjan: You mean with plain old death you need to install all kinds of patches to make it work right?
19:14:24 <tusho> no, plain old death is ok but kind of buggy
19:14:35 <tusho> dthxi is the patch one
19:14:48 <fizzie> Death bugs might explain all the zombies that seem to be around.
19:14:51 <tusho> iDeath is fashionable. Hipsters use it. Slogan: Die Different.
19:15:03 -!- ais523 has left (?).
19:15:17 <oerjan> dthxbye _thinks_ it is fashionable
19:15:44 <AnMaster> oerjan, what about plain old Death?
19:16:03 <oerjan> it hasn't been fashionable for eons
19:16:25 <oerjan> it _does_ have a large installed base, though
19:16:33 <tusho> those were my analogies
19:17:43 <AnMaster> tusho, But some use the much more secure OpenDeath ;P
19:18:14 <oerjan> there was the Death Machine with its AI technology, but it was not commercially viable
19:18:20 <tusho> AnMaster: well, I parodied apple with iDeath and am arguably an Apple fanboy but apparently openbsd fanboys can't bring themselves to do that
19:18:47 <AnMaster> well I both like and dislike openbsd
19:19:07 <AnMaster> on one hand, they made some pretty good stuff: OpenSSH, the pf firewall...
19:19:26 <AnMaster> on the other: social skills = *even* less than tusho ;)
19:19:58 -!- ais523 has joined.
19:21:49 <fizzie> Your :'s line up! Awesome.
19:22:10 <ais523> fizzie: not really, given that the lines contain the same characters in a different order
19:25:37 <ais523> 656566969667596767665654657767444454646364454423435534432323321
19:26:25 <tusho> (+ 1 MOST-POSITIVE-BIGNUM)
19:26:44 <tusho> (http://jwz.livejournal.com/854482.html)
19:27:32 <tusho> AAAA_AAAAA_AAAAA_3
19:28:07 <tusho> oh ha ha, a joke from uncyclopedia
19:28:10 <tusho> those are always funny
19:28:25 <ais523> tusho: someone even based an esolang on it
19:28:31 <tusho> ais523: unfortunately.
19:28:36 <ais523> the strange thing about that joke is it has no obvious reason for existing
19:28:46 <ais523> or even an obvious reason why it's funny
19:28:50 <tusho> ais523: most uncyclopedia jokes are like that.
19:28:52 <Deewiant> http://uncyclopedia.org/wiki/AAAAAAAAA!
19:28:55 <tusho> they don't really have a justification.
19:28:59 <tusho> Deewiant: thank you, captain obvious!
19:29:03 <ais523> hmm... can a joke be funny if it has no punchline, and no setup?
19:29:11 <ais523> like the null string, for instance?
19:29:16 <oerjan> "Very few things are truly justified" -- Oscar Wilde
19:29:25 <Deewiant> tusho: more like, preventing others from having to search for it
19:29:33 <tusho> ais523: here's a funny joke:
19:29:42 <ais523> oerjan: nowadays, you can justify anything if you have a decent word processor
19:29:44 <tusho> ("BUNNIES!" is not a punchline.)
19:29:56 <tusho> ais523: ragged text is a lot nicer to read, though.
19:30:13 <ais523> I didn't say it was a good idea, and not everyone agrees with you
19:30:25 <Deewiant> I think AnMaster would disagree very much
19:30:30 <tusho> Deewiant: probably.
19:30:36 <tusho> though, uncontroversial is for screen use
19:30:41 <ais523> This sentence is not a punchline.
19:30:44 <AnMaster> <ais523> oerjan: nowadays, you can justify anything if you have a decent word processor << :D
19:30:47 <tusho> it has been studied a lot and proven that for screen use at least, ragged text is a LOT nicer
19:31:00 <ais523> AnMaster: it's not an original joke, I misquoted it from somewhere
19:31:05 <tusho> i prefer it overall, but for screen use there's really no controversy
19:31:08 <oerjan> AnMaster: Oscar Wilde did surprisingly well without one
19:31:16 <AnMaster> well I always use justified text
19:31:20 <ais523> tusho: on Wikipedia enough people wanted justified that they made it a preference option, and the devs hate adding preferences
19:31:33 <AnMaster> unless I use monospace of course
19:31:37 <ais523> although ragged is the default
19:31:59 <ais523> AnMaster: well, justifying program code is the sign either of an insane mind or an IOCCC entry
19:32:21 <tusho> AnMaster: you do not have to highlight everyone
19:32:22 <tusho> AnMaster: all the time
19:32:26 <oerjan> ais523: um i think one of those is contained in the other
19:32:27 <tusho> AnMaster: because if they've just talked
19:32:31 <tusho> AnMaster: then they're paying attention
19:32:33 <tusho> AnMaster: to the channel.
19:32:34 <AnMaster> ais523, I do tend to justify block comments however
19:32:35 <tusho> AnMaster: thank you.
19:33:01 <ais523> I tend to nick-prefix when there's more than one conversation going on at once
19:33:10 <AnMaster> yes and there was there for a bit
19:33:19 <ais523> if I have two conversations at once with the same person in the same channel I normally nick-prefix one and not the opther
19:33:34 <tusho> AnMaster: ais523: oerjan: In future I'm going to nickping everyone active when I want to address everyone
19:33:39 <tusho> AnMaster: ais523: oerjan: so i'm sure they can see it
19:33:51 <AnMaster> I agree with ais523 however there
19:34:04 <AnMaster> and I'm going to do something else: tusho
19:34:04 <ais523> tusho: optbot: fungot: that can get annoying when some of the addressees are irrelevant
19:34:05 <fungot> ais523: gambit's compiler is somewhat better than realtime, meaning joe and jane average don't use linux
19:34:05 <optbot> ais523: No. Everyone would have to leave here to keep the secret.
19:34:11 <AnMaster> I'm going to nick suffix: tusho
19:34:21 <tusho> i'm going to do something different too
19:34:31 <tusho> i just did it! ais523: i bet you can guess what it is
19:34:35 <AnMaster> is it classic? didn't know that, ais523
19:35:14 <ais523> anyway, I think I'll have a go at compiling newlib into brainfuck:AnMaster
19:35:19 <AnMaster> middle-fix it, tusho? I guess so
19:35:21 <tusho> ais523: don't wanna guess?
19:35:29 <ais523> that way I don't have to implement more than about 8 or so functions
19:35:38 <ais523> and a couple of them are trivial
19:35:40 <AnMaster> ais523, still don't have internet at home btw?
19:35:54 <oerjan> An: i like circumfix :Master
19:36:21 <AnMaster> that doesn't highlight (oerjan) highlight me
19:36:36 <ais523> oTeHrAjTa nC:O U L D M A K E I T H A R D T O H I G H L I G H T
19:36:59 <ais523> now please nobody tell me off for shouting
19:37:43 <ais523> wow, I'm surprised neither of you figured out what I just did
19:37:54 <tusho> i'm waiting ais523
19:38:03 <ais523> railfence can be hard to read but I put one set of characters in uppercase and the other in lowercase to make it easier
19:38:10 <ais523> read the uppercase and lowercase separately
19:38:25 <oerjan> ais523: what do you mean didn't figure out
19:38:28 <tusho> all 2003 logs are gone from http://tunes.org/~nef/logs/esoteric/
19:38:50 <ais523> tusho: do you still have them saved for optbot?
19:38:51 <optbot> ais523: nothing really
19:38:54 <oerjan> i don't have to comment on every obvious thing
19:39:24 <AnMaster> tusho, so upload them somewhere
19:39:35 <fizzie> Uh? There's still old/esoteric-03.zip there.
19:41:23 <tusho> is this nef guy dead?
19:41:34 <tusho> he does't seem to have updated thinsg since like 2006
19:49:52 -!- oerjan has quit ("ZZZZZZZZZZ").
19:55:02 -!- kar8nga has joined.
19:55:30 <fizzie> Oh, right; happened across that old old Penny Arcade comic the earlier webdesign conversation immediately reminded me of: http://www.penny-arcade.com/comic/1999/3/3
19:56:03 <ais523> fizzie: did you visit the website in question with JS on?
19:56:25 <fizzie> The one discussed here? Nope.
19:56:27 <tusho> for some years now
19:56:52 <tusho> it was kind of wheezing out the last breaths it could manage in 2003, 2004
19:56:58 <tusho> but had been inactive a little before that
19:57:05 <tusho> since then it's just a ghost town
19:57:23 <tusho> there are still people in #tunes but they never speak until you comment on how dead the place is and they joke that it'll be active again one day.
20:02:48 <tusho> ais523: well, that's the first time I've seen someone claim that the IE team has "imperial contempt for the world and all its people" seriously
20:03:09 <tusho> http://www.reddit.com/r/programming/comments/6z460/official_google_blog_a_fresh_take_on_the_browser/c059gba, third child now
20:05:24 <tusho> God damn. hoodwink.d (http://hoodwink.d/) is still down.
20:05:28 -!- olsner has joined.
20:05:50 <tusho> ais523: no, you have to add hoodwink.d to your hosts file to go to it
20:06:04 <ais523> so does it actually have a domain name then?
20:06:14 <tusho> nope, but the ip doesn't work directly as it hosts multiple sites
20:06:17 <tusho> so you have to add it to your hosts
20:06:18 <ais523> after all you could aim, say, example.com there if you really wanted to
20:06:27 <tusho> the Host header would be wrong
20:06:37 <tusho> anyway, it's a site+greasemonkey script by why the lucky stiff that lets you comment on any site at all
20:06:43 <tusho> it uses xpath expressions to find out where to put the comment box
20:06:49 <tusho> it's a little underground toy thing and it was a lot of fun
20:06:56 <tusho> but sometime in 2007 it just stopped working. :(
20:07:13 <ais523> that actually sounds like an interesting idea
20:07:31 -!- LinuS has joined.
20:07:49 <tusho> ais523: one of the funniest was on wikipedia
20:07:59 <tusho> people put nonsense articles in the comments for nonexistent articles
20:08:10 <tusho> so that you could actually go there and see the article, albeit not in the content box
20:09:17 <tusho> hey perhaps i could revive it myself
20:09:21 <tusho> ... Nah. Nobody would use it.
20:09:44 <fizzie> I think there have been at least some "leave comments on any site" thingies; never have used any of them, though.
20:10:00 <tusho> fizzie: this one was funnier, though, because of the undergroundness of it all
20:10:09 <tusho> it had its own little forum which didn't do any foruming at all
20:10:16 <tusho> it just had a hoodwink.d entry and put that in the content area
20:10:27 <tusho> so all it handled was giving a new uri out on request
20:10:34 <tusho> and to top it off, you couldn't see it
20:10:37 <tusho> if you went there, it just wasn't there
20:10:41 <tusho> because everything was display: none
20:10:44 <tusho> so you had to add a user style
20:12:07 <tusho> bye for a while (hour or so)
20:12:31 <fizzie> What sort of time zone was tusho in, anyway?
20:17:25 <AnMaster> are there any java fanboys here?
20:17:39 <ais523> I doubt it, we tend to scare them out of existence
20:17:39 <fizzie> The fact that the mentioned zeepmobile.com site only works in the US sort-of confused me.
20:17:58 <fizzie> What do you need a Java fanboy for?
20:18:31 <AnMaster> however I was looking for a fight with someone, since I tried to make a java app run and it just cause all sorts of problems
20:19:12 <fizzie> I'm sure there's a ##java or something.
20:19:26 <AnMaster> tusho, are you ignoring randomly currently?
20:20:26 <AnMaster> you will love this (and no: I'm making a joke, I don't really care about it, I was looking for something else when I came a across this) "Intel® VTune™ Performance Analyzer 9.0 for Linux" ... but I can't use it, not free software
20:20:33 <AnMaster> http://www.intel.com/cd/software/products/asmo-na/eng/vtune/239145.htm btw
20:20:47 <AnMaster> I was looking for ICC for Linux x86_64 download actually
20:20:53 <AnMaster> since I needed to try something out
20:21:25 <ais523> AnMaster: Intel invented powertop too IIRC, that's something that Windows has no real hope of replicating atm
20:21:39 <AnMaster> ais523, yes but powertop is open source
20:21:43 <fizzie> Isn't ICC a bit non-free, though?
20:21:53 <AnMaster> but I need to make sure stuff compiles
20:22:19 <AnMaster> Deewiant, it does compile on ICC
20:22:37 <AnMaster> but current software uses X, my P3 that got ICC on it doesn't have X
20:22:49 <AnMaster> it doesn't even have any screen
20:23:03 <AnMaster> Deewiant, gcc-llvm tested, works fine
20:23:24 -!- oklofok has joined.
20:23:26 <AnMaster> Borland, don't plan to pay anything
20:23:36 <Deewiant> hmm, I'm somewhat surprised you haven't at least heard of Comeau
20:23:46 <Deewiant> but I guess it's more of a C++ thing
20:23:49 <fizzie> Borland compilers are available, I think. At least some of 'em were at some point.
20:23:51 <ais523> AnMaster: pretty much nobody does all of C99, gcc implements the more often used bits though
20:23:52 <AnMaster> Deewiant, Comeau sounds slightly familiar
20:23:56 -!- oklopol has quit (Read error: 113 (No route to host)).
20:24:00 <AnMaster> ais523, err ICC does it more or less
20:24:11 <Deewiant> Comeau has pretty much the best standards support AFAICT
20:24:32 <ais523> I thought it supported C99 nowadays, I might be wrong though
20:25:05 <AnMaster> ais523, and about C99, iirc the ICC frontend is pretty good, oh and GCC are working on it too
20:25:19 <Deewiant> somewhat evidently: http://docs.sun.com/app/docs/doc/819-5265/bjayy?a=view
20:25:22 <ais523> part of the problem is that gcc's only about two-thirds of a compiler
20:25:29 <fizzie> http://gcc.gnu.org/c99status.html is looking reasonably good already.
20:25:35 <ais523> the libraries need to handle it too, also the linker
20:26:04 <Deewiant> on windows, the problem is the libraries
20:26:22 <Deewiant> MSVCRT doesn't have any C99 stuff
20:26:45 <Deewiant> I wouldn't be surprised if it lacked some obscure part of C90, too :-P
20:26:51 <AnMaster> and I was planning a project using complex numbers
20:27:18 <Deewiant> of course you might want to check what "broken" actually means
20:27:30 <Deewiant> for instance, VLAs are "broken" but most cases probably work fine
20:27:30 <AnMaster> Deewiant, and I got syntax errors from Visual Studio C++ Express or whatever it is called
20:27:34 <fizzie> You can also get Borland C++ Compiler 5.5 free-as-in-beer too. Very new; released in the year 2000.
20:27:35 <ais523> AnMaster: it's not very broken, it probably just doesn't conform with the specs in some cases
20:27:38 <AnMaster> was 2005 edition or 2008 edition
20:27:43 <AnMaster> Deewiant, and it was a legal C99 think
20:27:50 <ais523> fizzie: where? I still have bc4 at home
20:27:55 <ais523> so it would be an upgrade for me...
20:28:01 <Deewiant> AnMaster: well, it doesn't support C99 so that's not unexpected.
20:28:14 <fizzie> www.codegear.com/downloads/free/cppbuilder
20:28:52 <fizzie> I had 4.x from a pcplus magazine cover CD, too. That was some time ago.,
20:29:44 <AnMaster> fizzie, does it do C99 at all?
20:29:56 <ais523> AnMaster: no, it's for windows and is C89/C++98
20:30:09 <ais523> that's an improvement, bc4 was well before C++98
20:30:11 <AnMaster> no point in even trying cfunge under it
20:30:25 <fizzie> That's also the command-line stuff only; I had the IDE parts of bc4 too.
20:30:38 <ais523> and so its C++ wasn't very standard, I have #ifdefs all over my C++ code that I wrote to compile on both bc4 and g++
20:30:45 <ais523> fizzie: yes, I have the IDE parts too
20:30:47 <AnMaster> ICC handles the parts of C99 that cfunge use, So does GCC
20:30:55 <AnMaster> however there is a known library issue on FreeBSD
20:31:03 <AnMaster> FreeBSD lacks sinl() cosl() and such
20:31:05 <Deewiant> Comeau is the only compiler that supports the C++98 feature "export templates"
20:31:20 <AnMaster> Deewiant, "export templates" what is that?
20:31:39 <Deewiant> google it, I can't easily explain it in a few lines
20:31:44 <Deewiant> especially if you're unfamiliar with C++
20:31:59 <ais523> oh dear, yes Deewiant's right here
20:32:00 <AnMaster> and I know similiar concepts from other languages
20:32:04 <ais523> templates are bad enough as they are
20:32:23 <AnMaster> ais523, aren't templates like type generic classes or such?
20:32:27 <ais523> can cause all sorts of weirdness in C++, for instance they can do Turing-complete calculations at compile time
20:32:42 <ais523> AnMaster: a bit, well a lot really except there are a huge number of edge/corner cases
20:32:49 <Deewiant> but also Factorial<10> can give 3628800
20:32:57 <AnMaster> Deewiant, ok *that* is strange
20:32:58 <ais523> as a compile-time constant
20:33:14 <Deewiant> AnMaster: hehe, good luck copying stuff from CCBI when the next version comes out
20:33:20 <Deewiant> it uses templates a /LOT/ to generate code
20:33:22 <AnMaster> ah well the simple case here, that is about what C#'s generic classes implement
20:33:34 <AnMaster> Deewiant, and does D have that really
20:33:40 <ais523> because they're oh so esoteric
20:33:41 <Deewiant> yes, D's templates are more powerful than C++'s
20:33:43 <AnMaster> Deewiant, + you can't do that for all fingerprints
20:33:52 <ais523> Deewiant: no they aren't, C++'s are turing-complete
20:33:56 <Deewiant> you don't even know what I do :-P
20:34:13 <AnMaster> Deewiant, the stuff I reuse is basically when the fingerprint specs are too vague and you have already implemented it
20:34:18 <Deewiant> ais523: well, I suppose you know what I meant
20:34:20 <AnMaster> Deewiant, I implemented my SOCK not looking at your
20:34:44 <fizzie> I think C# generics have more in common with Java generics than C++ templates. Does C# even do code generation with them? Java ones at least are implemented with that type erasure thing.
20:35:10 <AnMaster> Deewiant, issues are stuff like butterfly operator in TOYS
20:35:27 <AnMaster> and 3DSP since I don't know matrix manipulation
20:35:42 <ais523> fizzie: Java templates are an utter mess, they tried to retrofit them to a language that doesn't like them
20:35:45 <AnMaster> fizzie, I think they could be done at runtime
20:36:06 <ais523> and as a result you have a lot of random arbitrary casts and such trying to get things to the right data type
20:36:13 <AnMaster> anyway doesn't lisp have some sort of powerful macros?
20:36:16 <fizzie> Well, they're not even called "templates" there.
20:36:32 <AnMaster> maybe you could approximate that using C++ templates!
20:36:34 <ais523> AnMaster: Lisp macros are like text substitution on steroids
20:36:45 <ais523> they're more like #define than template<typename x>
20:36:47 <Deewiant> D's have approximately the same power as those of Lisp
20:36:47 <AnMaster> ais523, how does that factorial one work?
20:36:53 <Deewiant> but the syntax is of course much uglier
20:36:56 <ais523> AnMaster: recursion in the template definition
20:37:01 <Deewiant> and they don't currently work on ASTs directly
20:37:09 <ais523> I couldn't write it offhand though, I'm not very good at writing C++ templates
20:37:16 <Deewiant> which makes it an occasional pain to work with
20:37:43 <AnMaster> what the heck does bitshift have to do with STDOUT?
20:37:45 <ais523> AnMaster: operand overloading
20:37:53 <AnMaster> ais523, yes but it is silly operator overloading
20:37:57 <ais523> the answer is "nothing, so we can use the << operator for something else"
20:38:04 <AnMaster> ais523, well that is confusing
20:38:24 <AnMaster> really operator overloading has it's uses
20:38:38 <AnMaster> say you implement a class that does number as fractions of BIGNUMS
20:38:54 <ais523> AnMaster: that's sane operator overloading, go and talk about it in a sane channel
20:38:56 <AnMaster> so you can represent stuff like 1/9 precisely
20:39:04 <AnMaster> then you could overload / * and so on
20:39:15 <AnMaster> but using << for "write to output"
20:39:18 <ais523> you can overload casts too in C++
20:39:26 <Deewiant> AnMaster: you've actually seen D's templates in CCBI already, mixin (Code!("NULL")) and so forth
20:39:33 <ais523> like define (int) to mean something different on your class
20:39:37 <ais523> then you can cast it to int easily
20:39:40 <Deewiant> AnMaster: so that you can do (int)bignum
20:39:59 <ais523> although C++ has 4 different types of cast so you can explain to the compiler why you're doing it
20:40:07 <ais523> one of which can only be resolved at runtime
20:40:19 <Deewiant> hooray for 5 different ways to cast
20:40:27 <ais523> because of polymorphism, the time an object looks like at compile time is not necessarily the type it actually is
20:41:22 <fizzie> If you want to see template nastinessitude, Boost is a nice place to look at; for example Boost.Lambda, http://www.boost.org/doc/libs/1_36_0/doc/html/lambda.html -- I _think_ the implementation was pretty template-heavy.
20:41:48 <fizzie> It is rather extreme in any case.
20:42:10 <AnMaster> <ais523> although C++ has 4 different types of cast so you can explain to the compiler why you're doing it
20:42:10 <AnMaster> <ais523> one of which can only be resolved at runtime
20:42:28 <ais523> AnMaster: const_cast which adds or removes const/volatile
20:42:46 <ais523> static_cast which is for casts that can be calculated at compile time
20:42:56 <Deewiant> AnMaster: the latter, implicit casting, wasn't included
20:42:58 <ais523> dynamic_cast is the one that only works at runtime
20:42:59 <AnMaster> ais523, ah ok, makes sense I guess
20:43:00 <Deewiant> AnMaster: with that, it's 6. :-P
20:43:06 <ais523> I've forgotten what the fourth named one is
20:43:29 <ais523> Deewiant: ah yes, taking the bit pattern of something and interpreting it as a different data type
20:43:32 <fizzie> With dynamic_cast<Foo*>(bar); you get a NULL out of it if "bar" is not a Foo pointer. Or something like that.
20:43:36 <ais523> like interpreting a pointer as an int
20:43:57 <fizzie> And reinterpret_cast is the one which looks most like the C casts.
20:43:57 <Deewiant> AnMaster: want to define a new union type every time you do that?
20:44:01 <ais523> AnMaster: yes, but that's type-punning and that's wrong, in fact it can be optimised to not work correctly in some cases in C++ I think
20:44:25 -!- minirop has joined.
20:44:44 <ais523> AnMaster: there's an example in the GCC docs, say you have a union of a float and an int, then you assign to the int and return a pointer to the float to the function, then access a float through that pointer
20:44:45 <Deewiant> AnMaster: http://en.wikipedia.org/wiki/Type_punning
20:44:47 <AnMaster> ais523, if union breaks the compiler is obviously wrong
20:45:04 <ais523> it's not necessarily going to have been set from the bits of the int, according to the C standard, it might just read garbage
20:45:07 <AnMaster> ais523, well I do use float/int unions
20:45:08 <ais523> due to the aliasing rules
20:45:15 <AnMaster> don't think I return pointers to one of them
20:45:19 <ais523> AnMaster: well on gcc it only breaks when pointers are involved
20:45:30 <AnMaster> ais523, no pointers except to the whole union
20:45:33 <fizzie> Yes; the C standard says that if you write a union using one member, you must not read it through any other member.
20:45:43 <ais523> <wikipedia> For example, reading from a different union member than the last one written invokes undefined behavior, but the effect in practice is usually to permit type punning.
20:46:02 <fizzie> Well, there was the wikipedia quote.
20:46:04 <AnMaster> how the heck can you then store a float in an int
20:46:07 <ais523> gcc deliberately allows it to work in the situation when you write from one and read from the other without doing anything tricky
20:46:20 <ais523> AnMaster: read up about the strict aliasing rules some time
20:46:23 <ais523> Deewiant: you can, memcpy()
20:46:25 <Deewiant> implementation-defined, not portable and all that.
20:46:28 <AnMaster> ais523, it works under other compilers too
20:46:45 <ais523> Deewiant: you can access both of them via unsigned char pointers
20:46:57 <Deewiant> that's actually well-defined? wow.
20:46:58 <ais523> unsigned char is special with respect to the aliasing rules
20:47:05 <ais523> it was special-cased in the standard
20:47:07 <Deewiant> ah, that rings a bell, yes indeed
20:47:08 <AnMaster> ais523, nice, so I just do: (float*)(unsigned char*)&myint?
20:47:41 <ais523> I think so, not sure though
20:47:51 <ais523> float would have to be the same size as int for that to make sense
20:48:00 <ais523> and the result's going to differ depending on padding, etc
20:48:11 <AnMaster> ais523, yes it would be int32_t actually
20:48:34 <fizzie> ais523: I'm not certain the memcpy apporach is safe; surely you can read all the bits of a float with memcpy (or through a unsigned char *), but the bit pattern might be some sort of a trap representation when interpreted as int. You could store the _value_ of the bytes in the integer if it's large enough, of course.
20:48:38 <AnMaster> ais523, so you mean you can't implement FPSP, FPDP and 3DSP in any portable way?
20:48:50 <ais523> course you can, you can memcpy
20:49:08 <ais523> and emulate 32-bit float yourself on targets which don't have it
20:49:18 -!- LinuS has quit ("Puzzi. S, parlo proprio con te. Puzzi.").
20:49:22 <ais523> fizzie: unsigned int isn't allowed to have trap representations
20:49:26 <ais523> but apart from that you're right
20:49:27 <AnMaster> ais523, well actually I would just error out on those
20:49:35 <AnMaster> I was adding size checks in cmakelists today
20:49:51 <AnMaster> ais523, "trap representations"?
20:49:55 <fizzie> ais523: Okay, I was in fact thinking there might be something special when one of the parties is an integer.
20:50:07 <ais523> well, if it's signed, you can have problems
20:50:17 <ais523> a trap representation's a number that causes a program to error if it's used
20:50:19 <AnMaster> well it would be in FPSP and FPDP
20:50:46 <ais523> 0x80000000 is common as a trap representation on 32-bit systems, and is in fact the only value allowed for one in a 32-bit signed int by the standard
20:50:56 <ais523> even more systems don't have a trap representation at all
20:51:00 <AnMaster> ais523, anyway how comes no tools "warn portability" checks actually warn about using an union there?
20:51:15 <ais523> AnMaster: because everyone does it anyway so no sane compiler manufacturer would break it
20:51:19 <fizzie> Still, with a large enough signed integer you could store the value of the float bytes in there.
20:51:27 <AnMaster> so I'll just depend on it then :)
20:51:35 <ais523> fizzie: or enough unsigned chars
20:51:55 <fizzie> Yes, but if you only have a single funge-cell to work with.
20:51:57 <AnMaster> ais523, um what if I want to use something that happens to be 0x80000000
20:52:26 <AnMaster> for example will those systems crash when the unix timestamp hit that value?
20:52:26 -!- moozilla has joined.
20:52:28 <ais523> AnMaster: the range of int doesn't include that number
20:52:43 <ais523> so such systems break 1 second earlier than other systmes
20:53:02 <ais523> AnMaster: yes it is, it's -2^31-1 to +2^31-1 with one trap representation
20:53:10 <ais523> that's 2^32 possibilities total, so 32 bit
20:53:18 <AnMaster> anyway we will all have 64-bit timestamps by then
20:53:29 <fizzie> And they might break harder; a trap representation might cause hard abort()s or something, instead of some sort of wrap-around.
20:53:35 <AnMaster> ais523, so what about those systems that doesn't have a trap?
20:53:41 <ais523> AnMaster: they roll over, normally
20:53:44 <AnMaster> Deewiant, well linux already got it in kernel iirc
20:53:59 <ais523> but incrementing a signed int past its maximum is undefined behaviour
20:54:06 <Deewiant> I wonder what will happen to embedded systems
20:54:09 <ais523> and in fact gcc takes advantage of this on occasion
20:54:57 <AnMaster> Deewiant, does Funge-98 say what should happen on funge cell overflow?
20:55:27 <AnMaster> Deewiant, does CCBI trap SIGPIPE?
20:55:43 <ais523> AnMaster: it's undefined in C for signed integers, wraparound for unsigned
20:55:43 <Deewiant> the bit representation is probably also unspecced
20:55:54 <ais523> this implies that unsigned can only have trap representations if it also has padding
20:55:54 <Deewiant> AnMaster: no, CCBI does nothing with signals.
20:55:58 <AnMaster> Deewiant, if it doesn't your SOCK could be non-conforming
20:56:09 <AnMaster> Deewiant, since you would crash on a SIGPIPE iirc if not handled
20:56:13 <Deewiant> AnMaster: do the SOCK specs say I have to trap SIGPIPE?
20:56:20 -!- RodgerTheGreat has joined.
20:56:21 <AnMaster> Deewiant, they say you have to reverse on error iirc
20:56:24 <RodgerTheGreat> http://archive.computerhistory.org/resources/text/GE/GE.Basic.1965.102646121.pdf
20:56:31 <AnMaster> Deewiant, and you get SIGPIPE on error
20:56:43 <Deewiant> AnMaster: that's not an error, that's a signal. :-P
20:56:48 <AnMaster> Deewiant, so just ignore SIGPIPE and use the PIPE return value
20:56:55 <AnMaster> Deewiant, yes but it is caused by an error
20:56:56 <Deewiant> AnMaster: but in all honesty most likely tango does something
20:57:08 <Deewiant> AnMaster: can you whip up a test program?
20:57:40 <AnMaster> Deewiant, not really, it happens on network errors iirc
20:58:24 <Deewiant> well I can just netcat something and Ctrl-C, or?
20:58:50 <AnMaster> I always heard it applies to sockets too, however http://en.wikipedia.org/wiki/SIGPIPE seems to say it is pipes only
20:58:58 <ais523> Deewiant: netcat and ctrl-d probably
20:59:20 <AnMaster> ais523, it is for sockets too right?
20:59:37 <olsner> sigpipe verily applies to sockets as well
20:59:46 <ais523> AnMaster: not sure, I don't know all that much POSIX yet
20:59:58 <AnMaster> ais523, you edit on wikipedia right? go fix http://en.wikipedia.org/wiki/SIGPIPE :P
21:00:19 <ais523> AnMaster: anyone can edit Wikipedia
21:00:32 <AnMaster> ais523, except I refuse for religious reasons :P
21:01:01 <Deewiant> and your religion doesn't prevent you from inciting others to do so?
21:01:11 <fizzie> Yes, and send() will give you a SIGPIPE if the socket has been shutdown(foo, SHUT_WR)ed, for example.
21:01:11 -!- megatron has quit (Read error: 110 (Connection timed out)).
21:01:40 <fizzie> I guess it might happen because of some network error too; at least it doesn't seem to be forbidden.
21:01:56 <AnMaster> Deewiant, indeed doing that is the command of the higher force
21:02:25 <Deewiant> this higher force sounds like an idiot
21:02:31 <AnMaster> fizzie, ah yes so if remote end does shutdown() on it?
21:11:42 <AnMaster> "one of the changes from C90 to C99 was to remove any restriction on accessing one member of a union when the last store was to a different one"
21:11:47 <ais523> AnMaster: http://wwwold.dkuug.dk/JTC1/SC22/WG14/www/docs/dr_257.htm
21:11:52 <ais523> that's to do with type punning in unions
21:11:56 <AnMaster> ais523, that was I was reading
21:12:05 <ais523> basically someone suggested that it should work the way that you suggested
21:12:09 <ais523> and the standards body said no
21:12:19 <ais523> but then, they say no to just about every defect report raised
21:12:25 <ais523> and it costs a lot of money to submit one to them
21:13:27 <AnMaster> <AnMaster> "one of the changes from C90 to C99 was to remove any restriction on accessing one member of a union when the last store was to a different one"
21:13:45 -!- LinuS has joined.
21:14:00 <ais523> from that sentence I can't figure out which direction the change was in
21:20:09 <AnMaster> ais523, hm http://wwwold.dkuug.dk/JTC1/SC22/WG14/www/docs/dr_283.htm
21:20:55 <ais523> AnMaster: well they didn't even answer...
21:21:22 <AnMaster> http://std.dkuug.dk/jtc1/sc22/wg14/www/docs/n980.htm
21:21:39 -!- kar8nga has quit (Read error: 110 (Connection timed out)).
21:25:21 <AnMaster> ais523, http://wwwold.dkuug.dk/JTC1/SC22/WG14/www/docs/dr_236.htm
21:27:34 <fizzie> Even if C99 had relaxed the aliasing rules re type-punning with unions, I'm still pretty sure that a float interpreted as int might well be that one allowed trap representation of a signed integer.
21:28:24 <AnMaster> fizzie, So FPSP and FPDP are basically broken?
21:28:47 <AnMaster> fizzie, for me it is just int64_t btw
21:28:55 <ais523> fizzie: AnMaster: luckily not with IEEE floats, 0x80000000 happens to be an invalid float
21:29:09 <AnMaster> ais523, ah which I actually say in README is needed
21:29:29 <AnMaster> * cfunge requires IEC 60559 floating-point arithmetic (please see Annex F in
21:29:29 <AnMaster> ISO/IEC 9899 for more details.)
21:29:43 <ais523> AnMaster: why does it require that sort of float arithmetic?
21:30:10 <ais523> hmm... I'm not sure if 0x00000080 is an invalid float though, what if floats are big-endian and ints are little-endian?
21:30:29 <AnMaster> ais523, because it is needed for FPDP and FPSP. You can't be sure it works otherwise
21:31:22 <ais523> AnMaster: what if you're using 64-bit funge?
21:31:44 <ais523> actually, that could break badly if you're compiling 32-bit on a 64-bit system
21:31:56 <ais523> because the two ints could quite possibly have 32 bits of padding between them
21:32:44 <ais523> in theory they could have 32 bits of padding between them anyway, but compilers tend not to do that without a reason
21:33:18 <AnMaster> it should be possible to access an int32_t at an address evenly divisible by sizeof(int32_t) I assume?
21:33:53 <AnMaster> it would be rather tricky to handle stuff if that wasn't true
21:34:04 <ais523> I'm not convinced, probably, but that's asking about alignment and all sorts of weird stuff happens when you think about alignment
21:34:17 <ais523> maybe someday I'll write a DS9K implementation that aligns all structs to prime numbers
21:34:23 <AnMaster> ais523, anyway if you like, rewrite FPSP and FPDP to be strictly conforming then!
21:35:05 <AnMaster> ais523, anyway that wouldn't work for double
21:35:15 <fizzie> I can easily imagine a system where int32_t is implemented as a 64-bit quantity with padding; perhaps because the system does not do any <64-bit access and the implementor doesn't want to do any shifting around.
21:35:17 <AnMaster> if what you say about padding ever happens
21:35:18 <ais523> AnMaster: accessing a char is always aligned
21:35:33 <ais523> so you just memcpy 4 chars at a time
21:35:53 <ais523> presumably you're assuming 8-bit char, some systems have 9-bit char but I seriously doubt cfunge would run on those the way you're doing things
21:36:15 <AnMaster> ais523, well I need to handle FPSP and FPDP
21:36:25 <AnMaster> and I need to conform to other parts of the befunge specs
21:36:32 <fizzie> With that int64_t, you could also store the 32-bit float bit-pattern as the value of an integer with something like: float f; int64_t i; ... unsigned char *p = (unsigned char *)&f; i = p[0] | (p[1] << 8) | (p[2] << 16) | (p[3] << 24);
21:36:57 <ais523> fizzie: yes, that's the sort of thing that can be done correctly
21:37:14 <AnMaster> fizzie, USE64 vs. USE32 is decided at compile time
21:37:17 <ais523> if -fweb and -O3 are on then gcc might not even slow down as a result
21:37:19 <fizzie> Of course that assumes CHAR_BIT == 8, sizeof(float) == 4 and sizeof(int64_t) == large enough.
21:37:25 <AnMaster> so that makes everything more complex
21:37:30 <ais523> and -fweb is implied by -funroll-loops
21:37:51 <ais523> fizzie: sizeof(int64_t) == 64/CHAR_BIT
21:37:56 <ais523> that's how int64_t is defined
21:38:41 <ais523> AnMaster: allows the compiler to change which register it's holding a register variable in midfunction
21:39:02 <AnMaster> ais523, well I don't declare any variable with register...
21:39:03 <ais523> it makes it near-impossible to explain to a debugger what's going on, but if you ask for funroll-loops it assumes you don't care much about that anyway
21:39:13 <ais523> AnMaster: -O3 auto-registers variables when it helps
21:39:20 <ais523> I think -O2 does too, for that matter
21:39:42 <AnMaster> ais523, ggdb4 obviously needs to be invented ;)
21:39:59 <tusho> ais523: google chrome is out
21:40:05 <tusho> http://www.google.com/chrome
21:40:09 <ais523> tusho: does it run in Wine, I wonder?
21:40:32 <AnMaster> can you use Windows Live search in it? XD
21:41:23 <fizzie> I guess you should be able to "portably" store a 32-bit IEEE float in a "long", since the value range of long is [-(2^31-1), 2^31-1] and that's enough distinct values to hold all the IEEE floats, which have at least that one illegal value.
21:42:06 <AnMaster> well unless anyone complains I won't change current one, unless you can come up with one universal and sane solution :P
21:42:23 <AnMaster> I hardly expect anyone to use cfunge on non-x86/x86_64
21:42:35 <ais523> tusho: I'm not downloading it anyway because I don't like their EULA
21:42:43 <AnMaster> and if someone actually hits an issue with it in a non-contrived case then I shall fix it
21:42:48 <ais523> which is actually potentially enforceable because you have to agree to it pre-download
21:42:49 <fizzie> Given how common the "union of float and int" (or even "union of int and pointer") approaches are, the current way probably works just about anywhere.
21:43:01 <ais523> at least it gets around many of the common problems with enforcing EULAs
21:43:09 <fizzie> Don't you want your cfunge to work on a DS9K? :p
21:43:21 <AnMaster> fizzie, well tell me what DS9K is
21:43:26 <ais523> AnMaster: would you consider an automated C to brainfuck translater to be a contrived case
21:43:34 <ais523> AnMaster: http://en.wikipedia.org/wiki/Special:Search?go=Go&search=DS9K, I wrote that article
21:43:38 <AnMaster> ais523, does it do such aligning issues?
21:44:02 <AnMaster> fizzie, oh that, and then: yes
21:44:03 <ais523> AnMaster: no alignment issues on gcc-bf, it aligns to 8 bits
21:44:09 -!- tusho has quit ("And then-").
21:44:16 <ais523> the DS9K has all alignment issues possible, except when you want it to
21:44:25 -!- oklofok has quit (Read error: 113 (No route to host)).
21:44:26 <AnMaster> ais523, well I checked it on 32-bit and 64-bit x86
21:44:31 -!- tusho has joined.
21:44:39 <AnMaster> once clang is ready I plan to make sure it works there too
21:44:46 <tusho> 1. it's open source, just remove the eula
21:44:47 <AnMaster> currently I can't get clang to build even so ;P
21:44:57 <tusho> ais523: 2. is it the stuff about sending your browser history to google
21:45:00 <tusho> because that has a setting to turn it off
21:45:09 <tusho> and yeah, that being default is the most braindeaded thing ever
21:45:34 -!- optbot has set topic: the entire backlog of #esoteric: http://tunes.org/~nef/logs/esoteric | i just meant, when you start going oracle, you might wanna rethink what it means for something to be "O(n)".
21:45:53 <fizzie> AnMaster: Was cfunge-0.3.0 recent enough to run fungot?
21:45:53 <ais523> tusho: it's the stuff about if you use any of their services they can change their Ts&Cs without telling you and if you use their services again you're bound by the new Ts&Cs
21:45:53 <fungot> fizzie: and more plus shipping ( honest). other scheme implementations but guile is my favorite. i.e. you never have to
21:46:03 <tusho> ais523: dude. everything has that
21:46:08 <tusho> seriously: everything
21:46:25 <ais523> tusho: well nowadays I don't agree to EULAs that require that, that's like zombifying yourself in Agora
21:46:39 <tusho> ais523: every EULA has done that since I can remember.
21:46:40 <fizzie> I don't think I have bzr here. :/
21:46:42 <ais523> how am I meant to check the Ts&Cs for scams when they can change while I'm looking
21:46:46 <tusho> you can't avoid it.
21:46:50 <AnMaster> fizzie, only later ones got SOCK it seems
21:47:01 <ais523> tusho: you can, most computer games come with a fixed EULA for instance
21:47:05 <ais523> that doesn't change behind your back
21:47:14 <tusho> all online services have it
21:47:15 <tusho> and most software.
21:47:31 <AnMaster> fizzie, so next release (a few weeks I guess, but I never make promises about that) will have it
21:47:38<