00:03:22 -!- MigoMipo has quit ("When two people dream the same dream, it ceases to be an illusion. KVIrc 3.4.2 Shiny http://www.kvirc.net"). 00:09:12 -!- ehird has quit (Ping timeout: 180 seconds). 00:10:49 * pikhq is probably slightly crazy. Or silly. 00:10:54 Template-like macros, anyone? 00:13:51 are they chocolate-covered? 00:15:21 No. 00:15:34 darn. 00:16:45 the nature is so beautiful 00:16:53 trees, especially 00:17:24 yay, trees 00:17:38 i want to touch them but the snow cover would be damaged 00:18:15 but i think it should start warming above -20 celsius now 00:18:57 -10.8 here, says the internet 00:19:06 pikhq: huh? 00:19:13 was near -30 during the week though 00:19:22 we had a Chinook yesterday 00:19:49 -!- Asztal has quit (Read error: 60 (Operation timed out)). 00:20:02 (Chinook = local name for Foehn wind) 00:20:14 was around -20 the rest of the week 00:21:05 coppro: Implementing something similar to C++ templates using macros. 00:21:15 oh 00:21:18 sounds scary 00:21:28 just having better template syntax would be good I think 00:21:31 "AEG registered the trademark Fön in 1908 for its hairdryer. The word became a genericized trademark and is now, with varying spelling, the standard term for "hairdryer" in several languages, such as Finnish, German, Swiss German, Danish, Italian, Dutch, Norwegian, Czech, Croatian, Latvian, Romanian, Hebrew, Slovak, Slovenian, Swedish, Russian, Ukrainian, Turkish and Swiss French." 00:21:34 coppro: do you have beautiful trees there? 00:21:35 -!- Asztal has joined. 00:21:44 oklofok: we do! But all the snow melted :( 00:21:54 probably not if I went to the mountains though 00:22:02 (not melted, not not beautiful) 00:22:03 coppro: The only scary bit is that it needs two GCC extensions to work similarly to C++ templates. 00:22:11 pikhq: O_o 00:22:11 ({ }), and functions on the stack. 00:22:15 oh 00:22:24 meh 00:22:35 you meant CPP 00:22:49 ... Yes... 00:23:16 In what other context would "similar to C++ templates using macros" make any sense? 00:24:07 any? 00:24:15 there are more than just CPP macros 00:24:40 And they don't really make sense when discussing "C++ templates", now do they? 00:24:52 well, you didn't explain the context 00:25:09 you may have just been trying to make some macro system with similar power or function to C++ templates for all I knew 00:25:30 Why would I do something like that? :P 00:28:10 yeah *that* would've been crazy. 00:28:47 we are mad here, but not _that_ mad 00:54:17 -!- kar8nga has quit (Remote closed the connection). 00:59:59 * SimonRC goes to bed. ( http://eatliver.com/i.php?n=5201 ) 01:01:10 very poignant 01:01:37 I DON'T GET IT 01:05:41 it's metaphorical 01:14:43 http://eatliver.com/i.php?n=5190 01:15:22 * oerjan suggests looking carefully at that one 01:19:04 hello, oerjan 01:19:51 hello, oklofok 01:20:10 hello, bsmntbombdood 01:25:58 hello, bsmntbombdood 01:36:00 helllllloe 02:16:01 -!- ehird has joined. 02:16:06 i'm *totally* dickinsonian 02:17:04 -!- ehird has left (?). 02:17:10 -!- ehird has joined. 02:21:59 -!- ehird_ has joined. 02:23:25 -!- ehird has quit (Ping timeout: 180 seconds). 02:25:18 -!- ehird has joined. 02:25:19 -!- ehird has quit (Client Quit). 02:25:46 -!- ehird has joined. 02:26:38 -!- ehird_ has quit (Ping timeout: 180 seconds). 02:31:29 -!- oerjan has quit ("Good night"). 02:41:58 -!- Gregor has quit (Read error: 110 (Connection timed out)). 02:44:39 pikhq: ping 02:44:47 ehird: Pong 02:44:54 pikhq: what's the Tile command to set theme? 02:44:57 tile::setTheme foo doesn't work 02:45:10 I've not messed with Tk 8.5. 02:45:18 bah 02:45:20 % package require tile 02:45:20 0.8.0 02:45:20 % tile::setTheme xpnative 02:45:20 invalid command name "tile::setTheme" 02:46:27 wiki.tcl.tk sez these should all work 02:46:42 * pikhq shruggeth 02:48:06 okay, one really dumb question though 02:48:12 I should use tclsh to execute a tcl script, right? 02:48:13 batch mode 02:48:17 (never wish) 02:49:06 Yes. 02:49:18 -!- coppro has quit (Read error: 104 (Connection reset by peer)). 02:49:31 The following instructions are for the Tile package, not for the ttk included in Tk 8.5. There are subtle differences, such as tile::setTheme becoming ttk::setTheme and others. 02:49:34 wish has no reason to exist any more; package require Tk. Always. 02:49:35 Badabingo. 02:49:44 pikhq: objection: interactive use 02:50:06 ehird: package require Tk works just as well in interactive use. 02:50:12 But it's more typing. 02:50:59 I take it you're not familiar with how there used to be a bunch of different tclsh's... 02:51:10 hmm 02:51:11 ttk::setTheme alt 02:51:11 button .b -text "Hello, world!" -command exit 02:51:11 pack .b 02:51:14 tclsh, wish, expect, expectk, etc. 02:51:22 I wonder if I have to prefix stuff with ttk:: to get it to actually use the widgets 02:51:26 because it doesn't seem to be changing anything 02:51:31 pikhq: erm, expect is a separate program 02:51:58 -!- Gregor has joined. 02:52:44 ehird: A Tcl shell with expect loaded. 02:57:30 http://wiki.tcl.tk/14796 02:57:32 :-( 02:57:37 I have to use ttk widgets to get theming. 02:57:45 I thought it was added to the base Tk widgets; lame. 02:58:10 -!- coppro has joined. 03:10:01 -!- ehird has quit (Remote closed the connection). 03:11:56 -!- ehird has joined. 03:12:04 Much better! 03:17:26 -!- BeholdMyGlory has quit (Remote closed the connection). 03:21:32 -!- FireFly has quit ("Leaving"). 04:17:14 -!- coppro has quit ("I am leaving. You are about to explode."). 04:37:00 #amend if anyone wants to discusserate my editorate btw. 04:49:09 -!- coppro has joined. 04:59:43 wb coppro 05:16:57 -!- ehird has quit (Read error: 60 (Operation timed out)). 06:05:02 -!- Pthing has quit (Remote closed the connection). 06:47:28 -!- MizardX has quit (Read error: 110 (Connection timed out)). 06:50:47 -!- lament has joined. 06:59:16 -!- Asztal has quit (Read error: 110 (Connection timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:16:23 -!- soupdragon has joined. 08:36:01 -!- AnMaster has quit (Read error: 104 (Connection reset by peer)). 08:38:56 -!- AnMaster has joined. 09:06:27 -!- lament has quit. 10:01:06 -!- kar8nga has joined. 10:20:28 -!- jpc has quit (Read error: 110 (Connection timed out)). 11:08:08 -!- soupdragon has quit (Read error: 54 (Connection reset by peer)). 11:08:24 -!- soupdragon has joined. 11:24:22 -!- FireFly has joined. 12:01:52 -!- oerjan has joined. 12:16:54 -!- ais523 has joined. 12:24:38 -!- olsner has quit (Read error: 110 (Connection timed out)). 12:25:17 -!- olsner has joined. 12:34:56 -!- MizardX has joined. 12:36:53 -!- augur has quit (Read error: 113 (No route to host)). 12:47:23 Side effects for any library function may include it returning NULL, the program exiting, or fucking output to standard output! 12:47:56 sounds like an esolang 13:00:36 -!- zeotrope has joined. 13:09:11 huh? where? 13:09:27 hi SimonRC 13:09:41 hi 13:16:09 -!- oerjan has quit ("leaving"). 13:29:37 -!- k has joined. 13:29:58 -!- kar8nga has quit (Nick collision from services.). 13:30:01 -!- k has changed nick to kar8nga. 13:42:00 -!- kar8nga has quit (Remote closed the connection). 13:49:25 does anyone know if information is transferred faster by reading or by listening. Assume a skilled reader and native speaker. 13:49:54 reading, absolutely 13:50:18 it's impossible to talk at the normal reading speed 13:50:22 true 13:50:39 oklofok, well what about news? Try talking as fast as they do on news on TV or radio 13:50:45 you will have a hard time managing that 13:51:09 (at least, most people have a hard time managing that) 13:51:55 even if i just mumble something like "bzzb" for every word, it will take about 3 times more to read something 13:52:04 looking at a sentence at a time vs. looking at a word at a time 13:52:05 -!- BeholdMyGlory has joined. 13:52:11 hm probably 13:52:33 a bit of an exaggeration maybe, but i think it's definitely reading. 13:52:45 (i did test the bzzb thing) 13:53:59 hm 13:59:43 bbl 14:00:03 ehird for the logs, here's a Perl6 code snippet for you: "subset Even of Int where { $_ % 2 == 0 }" 14:00:12 now if only we could persuade them to do type inference too, that would be perfect 14:00:41 (and as it's Perl6, I shudder at the $_ and think $^a would work better) 14:00:41 think an advanced perl6 compiler could prove that even + even = even? 14:02:55 no, it doesn't try to do type inference at all 14:04:14 ooh, it does work with $^a too 14:04:33 I bet it looks at how many arguments the block's expecting, and uses $_ or the first arg accordingly 14:05:03 works with pointy blocks too, this is fun 14:10:36 ais523, $^a ? 14:10:39 what does that mean 14:10:54 and why the alphanumeric bit. Did they run out of other symbols? 14:10:56 AnMaster: if you use variables starting $^ inside a block in perl6 14:11:03 then they become arguments to the block, in alphabetical order 14:11:09 hm okay 14:11:26 ais523, do they just take every feature they can think of and throw it in? 14:11:31 e.g. {"$^a $^c $^b"}<1 2 3> returns "1 3 2" 14:11:50 um, forgot the parens 14:12:06 > say {"$^a $^c $^b"}(|<1 2 3>) 14:12:08 1 3 2 14:12:16 and forgot to interpolate the param list 14:12:28 ais523, interpolate? 14:12:30 if you don't like the implicit alphabetical order thing, you can do it explicitly 14:12:31 the param list?! 14:12:43 AnMaster: func(<1 2 3>) passes it one argument, the list (1, 2, 3) 14:12:50 ah 14:12:54 func(|<1 2 3>) passes it three, 1, 2, and 3 14:13:04 well okay, varargs style kind of 14:13:05 which could of course be written func(1, 2, 3) 14:13:20 I can see why that other notation is useful 14:13:27 to pass varargs from an array 14:13:40 > say -> $first, $second, $third {"$first $third $second"}(|<1 2 3>) 14:13:41 1 3 2 14:13:54 or for invoking functions with a list of arguments and you don't know the function or the number of arguments until runtime 14:13:56 if you don't like alphabetical order, you can use a lambda instead 14:14:04 although it's kind-of weird that the lambda operator is -> {} 14:14:13 hm 14:14:41 > say (sub ($first, $second, $third) {"$first $third $second"})(|<1 2 3>) 14:14:44 1 3 2 14:14:48 that's perl5y syntax for a lambda, also accepted in perl6 14:15:23 > say (sub ($first, $second, $third) {"$first $third $second"})(:second(2), :third(3), :first(1)) 14:15:24 1 3 2 14:15:28 and you can name the arguments instead if you like 14:15:36 when calling a sub 14:15:58 > say -> $first, $second, $third {"$first $third $second"}(:second(2), :third(3), :first(1)) 14:15:59 1 3 2 14:16:07 with the pointy block too, it seems pointy blocks work identically to subs 14:22:51 -!- kar8nga has joined. 14:41:45 -!- jetxee has joined. 14:42:04 -!- jetxee has left (?). 14:48:14 ais523, pointy blocks? 14:48:27 AnMaster: the -> {} notation for lambdas 14:48:32 ah 14:48:39 ais523, thought you meant <> 14:48:46 looks pointy to me 14:49:01 > say {"$^a $^c $^b"}(:b(2), :c(3), :a(1)) 14:49:03 1 3 2 14:49:06 wow, that works as well? 14:49:09 I'm impressed 14:49:19 * ais523 abbreviates 14:49:57 hmm, seems they got rid of the :1a abbreviation for :a(1) 14:50:19 probably a good thing, that was beginning to get too silly for words 14:50:41 ais523, hm? 14:51:07 the only real reason they added :1a to the language 14:51:15 was so you could have a function with params called st, nd, and th 14:51:19 and do :2nd 14:51:21 err okay 14:51:27 are those reserved words? 14:51:28 also, to make Python programmer's heads explode 14:51:36 AnMaster: nothing's a reserved word in Perl6 14:51:47 ais523, then why can't you have params called st, nd or th? 14:51:51 you can 14:52:01 just you'd have to write :nd(2) rather than :2nd 14:52:07 which defeats the whole point in that naming 14:52:12 ais523, is that perl6 syntax? 14:52:21 because iirc you used shift or something in perl5 14:52:24 yes, although it's not stabilised yet 14:52:41 perl6 has actual syntax for arguments 14:52:46 rather than lumping them all in @_ 14:52:51 ais523, also I'd much rather use python than perl. Even for text processing 14:53:23 perl does make my head explode, Python only makes the frontal indention lobe explode 14:54:47 ais523, still I have found the secret of perl now 14:54:51 still,* 14:55:01 > sub if ($a) { say $a } ; if('Hello, world!'); 14:55:03 Hello, world! 14:55:33 if ?? 14:55:41 which is: if you can think of a single use case where it would be one letter shorter than current alternatives, implement the feature 14:55:56 soupdragon, he redefined if 14:56:02 read the line 14:56:02 no, I didn't 14:56:04 I defined it 14:56:08 the original usage of if still works 14:56:12 err 14:56:21 ais523, how can both work at once? 14:56:33 AnMaster, quantum physics 14:56:38 there's no code snippet where it's ambiguous whether you mean if the control-flow operator or if the function 14:57:41 soupdragon, :P 14:59:23 > if (1 != 2)+4 14:59:25 5 14:59:26 > if(1 != 2)+4 14:59:28 1 15:00:17 > if (1 != 2) { say "Hello, world!" } 15:00:19 Hello, world! 15:00:29 > if(1 != 2) { say "Hello, world!" } 15:00:30 Confused at line 1, near "{ say \"Hel" 15:00:34 whitespace sensitivity is fun 15:00:46 (those are, respectively, function, function, control operator, syntax error) 15:02:40 -!- lifthrasiir has quit (Read error: 60 (Operation timed out)). 15:23:55 -!- soupdragon has quit ("Leaving"). 15:24:45 -!- soupdragon has joined. 15:25:58 -!- soupdragon has quit (Client Quit). 15:29:19 -!- lieuwe has joined. 15:31:38 -!- soupdragon has joined. 15:38:23 i need a name for the esolang i'm making, hard to come up with something that isn't used already :-/ 15:38:34 call it lieuwe 15:38:59 soupdragon: ehrm, no, i wouldn't like my name all ofer ze interwebz 15:39:17 whats the language 15:39:20 whats it 15:39:21 show me 15:40:01 soupdragon: ehrm, no, i wouldn't like my name all ofer ze interwebz <-- if you don't, why are you using that nick on irc 15:40:02 (add[(get[foo]),(get[bar])]) to add two variables... 15:40:18 since this channel has public logs after all. 15:40:25 and do nothing with the result :-P 15:40:37 how is it eso? 15:40:45 lieuwe, looks just verbose, 15:40:48 lieuwe: ... You mean you don't go by Real "nick" Name? 15:40:49 s/,$// 15:40:58 soupdragon: not yet, need to add some odd funcs in... 15:41:08 ok 15:42:04 decisions, decisions... 15:43:16 pikhq: nope, atleast not here, i do on most forums... 15:43:48 Lame. 15:44:21 pikhq: ? 15:54:28 -!- uorygl has quit (Read error: 60 (Operation timed out)). 15:55:33 i need some moar ideas, is there some place where i can find high level esolangs? the wiki doesn't seem to have any... 15:55:47 Glass 15:56:21 -!- uorygl has joined. 15:58:40 -!- olsner has quit (Read error: 60 (Operation timed out)). 16:02:21 lieuwe: the issue is, most esolangs are created to explore a particular concept 16:02:31 whereas high-level languages tend to be full of lots of different concepts 16:02:54 and then there are languages which feel simultaneously high- and low-level, like INTERCAL 16:03:19 (the whole thing's pretty much an abstraction inversion; you have some rather high-level commands/operators, but they're mostly useful only for implementing low level commands/operators in) 16:04:13 ais523: hmm, yeah, i was thinking 'bout going in a different direction with this, i have the lexer/parser done, i was thinking about a esolang to python converter... or possibly just convert it to a ast and execute it... 16:04:32 and that users could define their own lang for it... 16:04:35 lieuwe: those are typical methods of implementing esolangs 16:05:28 (CLC-INTERCAL manual: http://smuggle.intercal.org.uk/manual/) 16:05:38 it has things like first-class filehandles 16:05:49 to the extent that you can steal a filehandle from another process and continue reading from it / writing to it 16:06:30 ais523: 0.o 16:06:45 CLC-INTERCAL has something very like object-orientation, too 16:07:30 and something which is vaguely similar to a reference, except it isn't 16:07:45 ais523: now that sounds like tho mother off all esolangs 16:08:03 huge progress has been made in INTERCAL development over the past few years 16:08:13 e.g. C-INTERCAL's threading model and CLC-INTERCAL's data type model 16:08:49 lieuwe: It is. 16:09:13 lieuwe: those are typical methods of implementing esolangs <-- typical? 16:09:27 "Caution! Under no circumstances confuse the mesh with the interleave operator, except under confusing circumstances!" 16:09:32 AnMaster: compilation to an existing high-level language, and tree-ising and then interpreting 16:09:33 well there are a few examples of it, but I wouldn't call it typical 16:09:43 ais523, ah hm. 16:09:46 pikhq: confusing mesh and interleave just gives you a syntax error anyway 16:09:54 ais523, misinterpreted you then. Thought you meant "doing like CLC" 16:09:57 oh 16:09:59 which is quite unusual afaik 16:10:09 no, that's certainly an atypical method of implementing an esolang 16:10:31 (CLC-INTERCAL is implemented in CLC-INTERCAL; most of the code that does the actual work, though, is in the VM, which is written in Perl) 16:10:39 lieuwe: Also, here's an operator: http://upload.wikimedia.org/wikipedia/commons/4/41/INTERCAL_Circuitous_Diagram.svg 16:10:55 pikhq: actually, I'm pretty sure that diagram is just a joke 16:11:06 some people have tried tracing it and it doesn't seem to mean anything meaningful 16:11:08 pikhq: O.o 16:11:11 ais523: Yes. 16:11:25 The select operator actually has mechanics... 16:11:29 Erm. Semantics. 16:11:35 Not a bus line to New York. 16:11:40 pikhq, it doesn't make sure even if you know what select does. 16:11:52 the biggest giveaway is that it takes two 8-bit arguments in the diagram 16:11:57 but two 16-bit arguments in the code 16:12:19 although it might be a stripped-down version, I suppose 16:12:53 ais523, but what does it do instead of select 16:13:12 who knows? 16:13:28 it uses a complicated version of logic, which has more than two values for its booleans 16:13:40 and does one of the outputs lead to power supply? 16:13:44 -!- olsner has joined. 16:13:48 look near the bottom 16:14:12 ais523, ^ 16:14:16 hi olsner 16:14:28 AnMaster: err, no, that looks more like they just grounded one of the wires 16:14:30 AnMaster: hiya 16:14:31 which might be an input for al I know 16:14:33 *all 16:14:40 standard method of indicating a constant 0 on a circuit diagram 16:14:46 horrible forcast here: -26 C during the night 16:14:53 ouch 16:14:54 ais523, oh right 16:15:44 ais523, what do you call the space below the house in English. Usually there is some inspection hatchet somewhere. Most of the time you can't stand straight in there 16:16:01 definitely not cellar. 16:16:08 AnMaster: "basement" and "cellar" are both used, but for larger spaces 16:16:09 Boden went from -31 to +.5 in one day 16:16:16 (a basement's somewhere you live in, a cellar's a storage space) 16:16:17 ais523, not large 16:16:23 but maybe half a meter high 16:16:28 I think it's pretty rare to have a small space beneath the house in the UK 16:16:32 you can't store stuff in it, nor live in it 16:16:32 so we don't have a word for it 16:16:33 AnMaster: "Crawl space". 16:16:36 pikhq, ah 16:16:38 normally it's just the foundations straight underneath 16:16:41 well "grund" in Swedish 16:16:47 pikhq: that would be the general term, not for a place under a house in particular 16:16:48 ais523, how do you inspect the foundations? 16:16:54 then 16:16:54 AnMaster: you don't? 16:16:56 ais523: Yes. 16:16:57 huh 16:16:58 or you dig up the floor, if you need to 16:17:22 the ground temperature in the UK rarely gets so low that it freezes pipes, or that you have to insulate the house from it 16:17:49 ais523, well we have a temp/humidity sensor in that crawl space in this house. The remote unit that you read the results on shows it as -1.2 C in there 16:17:57 and there are water pipes around there somewhere 16:18:03 :/ 16:18:26 it is rarely this cold for so long as it has been this winter 16:18:50 if it hits -20 C or so around here, it is usually just for a day or two. Rather than several weeks 16:19:01 it's been worse than usual here 16:19:08 but worse than usual is just -3 or so at night, and snow most days 16:19:09 there too? hm 16:19:13 -!- kar8nga has quit (Read error: 110 (Connection timed out)). 16:19:17 ais523, -3 *at night* 16:19:38 that's practically early spring! 16:19:51 yep, this is why we don't need underground crawl spaces 16:20:03 heh 16:21:16 -!- ehird has joined. 16:21:18 ais523, anyway the weather has been strange this weekend. Warmest place was somewhere up near the polar circle, and coldest in mid-south 16:21:36 Hi! 16:21:39 ehird, hello 16:21:54 #amend for talking about my text editor, btw. 16:21:58 *for talking 16:22:02 pikhq, do you americans have a specific name for that type of crawl spaces though? 16:22:10 ehird, alter you mean? 16:22:16 ehird, or how did the vote go? 16:22:24 AnMaster: No. 16:22:30 ehird, amend sounds so religious ;P 16:22:35 It doesn't come up enough generally. 16:22:36 Uh, I think it was 3:3:1. 16:22:45 AnMaster: No it doesn't. Alter does, though - altar. 16:22:59 Anyway, I prefer amend, so there. 16:23:02 ehird, "amen(d) - the fundamental(ist) text editor" 16:23:05 nice slogan? 16:23:15 Not... really, no. 16:23:25 Methinks I prefer "For the generalised transmogrifying of textual information." :-P 16:23:40 ehird, which one is most memorable? 16:23:59 Neither are memorable at all. 16:24:09 ehird: did you logread before coming online, by the way? 16:24:12 ehird, also amend sounds like it would be /etc/init.d/amend 16:24:15 doing so 16:24:17 as in: a daemon 16:24:50 Yeah, and amarok is a daemon that amaros. 16:25:03 ehird, what? 16:25:06 06:00:03 ehird for the logs, here's a Perl6 code snippet for you: "subset Even of Int where { $_ % 2 == 0 }" 16:25:07 k != d 16:25:08 .. 16:25:10 AnMaster: oops. 16:25:12 XD 16:25:18 ais523: yep, I know 16:25:42 such a pity it doesn't do type inference 16:25:46 ais523, that line gave me an idea btw: a mathematica/haskell/perl hybrid 16:25:52 although, type inference on dependent types is probably TC or even uncomputable 16:25:59 AnMaster: go away, that idea is inherently trolling 16:26:00 od: the o daemon 16:26:05 ais523, :D 16:26:16 fold: the fol daemon 16:26:17 ehird, well okay, not every such one 16:26:23 ehird, ld: the l daemon 16:26:54 ldd: the l daemon daemon 16:26:58 Our editor, who art in /usr/bin, 16:27:03 Hallowed by thy Name. 16:27:23 Thy ubiquity come. 16:27:29 Thy customisation will be done, 16:27:34 I /do/ actually like the idea of amen for the editor, and amend for an associated daemon 16:27:36 On Windows as it is in Linux. 16:27:43 Give us this day our daily mail. 16:27:49 And forgive us our permissions violations, 16:27:55 As we forgive those who violate permissions against us. 16:28:02 And lead us not into Emacs, 16:28:06 But deliver us from vim. 16:28:15 For thine is the transmogrification, 16:28:18 and the power, and the glory, 16:28:21 for ever and ever. 16:28:22 Amend. 16:28:29 ehird, that naming scheme doesn't follow: rpcbind: rpcbin daemon?. It is "rpcbind daemon" 16:28:37 as in, the d is doing twice the work 16:28:46 thus od could be the od daemon 16:29:01 so, to anger AnMaster and confuse ais523: KDE 4 is pretty nice. 16:29:23 theory: ehird actually likes all DEs 16:29:27 ehird, I can imagine worse things than KDE4 16:29:33 so far, it's consistent with the evidence 16:29:45 but I can count them on the fingers of one hand 16:29:58 also, shouldn't `subset Even of Int where { .% 2 == 0 }` work? 16:30:01 this is Perl 6, after all 16:30:05 -!- Asztal has joined. 16:30:17 ais523: no, I dislike OS X, and modern Windows, I think 16:30:21 ehird: I don't think % is a legal method name 16:30:24 also, I don't like GNOME as much as I used to. 16:30:33 ais523: every operator should be a method too, duh 16:30:48 ooh, maybe would 16:30:52 implicit $_ feels so wrong in Perl6, though 16:30:58 even though it's all over the place in Perl5 16:31:04 it's not implicit, it's . 16:31:13 it's much more Perl 6 than saying $_ imo 16:31:16 well, that's an implicit left argument to . 16:31:19 which is an operator 16:31:35 also, I don't like GNOME as much as I used to. <-- would you start liking it more if I said I thought KDE4 was better? 16:31:36 actually, I'd call prefix . and infix . different operators 16:31:47 AnMaster: Surprisingly enough, I don't care about your opinions. 16:31:59 ais523: also, have you tried Quassel IRC? Kubuntu includes it instead of Konversation, it's rubbish 16:32:05 no, I haven't 16:32:09 doesn't feel KDE-ish at all, it just feels unpolished and crappy 16:32:15 Konversation is much nicer 16:32:45 06:51:07 the only real reason they added :1a to the language 16:32:47 06:51:15 was so you could have a function with params called st, nd, and th 16:32:48 06:51:19 and do :2nd 16:32:50 Beautiful. 16:32:56 ais523: are you sure they got rid of it ratehr than rakudo not implementing it? 16:32:59 ooh, not sure 16:33:01 I remember trying konversation some time ago. Was pretty limited back then 16:33:03 also, you can do (2 nd) in Haskell 16:33:05 *rather 16:33:06 it could be that it just isn't implemented yet 16:33:09 but yeah, it would have been before I even was on freenode 16:33:15 probably the first irc client I used even 16:33:20 instance Num ((Integer -> a) -> a) where 16:33:28 fromInteger n f = f n 16:33:35 so (2 nd) -> (nd 2) 16:33:47 the first IRC client I used was Chatzilla 16:33:47 hm no, ksirc or something like that... I think that was before konversation even 16:33:55 which had loads of rough edges at the time, but was usable 16:34:24 I had a rather ridiculous problem with the WiFi here 16:34:32 ehird: o.O 16:34:36 It worked on the LiveCD, but activating the proprietary driver post-install just sat there and did nothing. 16:34:39 The solution? 16:34:45 # depmod -a 16:34:48 # modprobe wl 16:34:50 And do it again. 16:34:52 Go figure. 16:35:13 ehird: I had a very similar problem ages ago, trying to install NVidia graphics drivers on Linux 16:35:21 when for some reason there wasn't a packaged version, or I couldn't use it 16:35:28 (I think I might have been installing on a computer with no internet connection) 16:35:29 GRUB (2, even) installation worked fine though, no manual tweaking. Although at first it didn't seem to work, that was just because I forgot to shut down and start up again, which was required for GRUB on Mac or something for some reason. 16:35:53 the issue was that it had called its kernel module the exact same thing as one that already existed 16:36:10 Compositing wasn't on by default, but I just had to click an "Enable desktop effects" checkbox. 16:36:11 I think I fixed it by putting a modprobe in the startup scripts somewhere, to run with exactly the right timing to get the right module 16:36:25 All in all, I'm pretty happy. 16:36:36 ...apart from font rendering. 16:37:12 ehird: which OS is it this time? KDE/Linux? 16:37:20 Kubuntu. 16:37:53 * ehird wonders if the small default fonts are making him lean in, or whether he's just leaning in for no reason. 16:38:02 you mean, there's a version of Kubuntu that /didn't/ screw up the packaging? 16:38:09 Eh? 16:38:25 the Ubuntu people have been consistently bad at packaging KDE, for some reason I don't really understand 16:38:34 06:55:41 which is: if you can think of a single use case where it would be one letter shorter than current alternatives, implement the feature 16:38:37 yawn, perl trolling 16:38:41 how 1997 16:38:49 ais523: It seems alright here 16:39:02 -!- kar8nga has joined. 16:40:07 * ehird tries to figure out how to tell Emacs to disable the fringe 16:40:47 08:07:45 ais523: now that sounds like tho mother off all esolangs 16:40:50 C-INTERCAL is, very literally, that. 16:40:58 no, Princeton INTERCAL is 16:41:00 C-INTERCAL came later 16:41:07 Oops. 16:41:11 /C-/d 16:41:53 one of the few bits of surviving info about Princeton INTERCAL was that it internally represented numbers as their string representation, in binary 16:41:58 probably explains why it was so slow 16:43:06 08:16:48 ais523, how do you inspect the foundations? 16:43:08 08:16:54 then 16:43:09 08:16:54 AnMaster: you don't? 16:43:11 It worked on the LiveCD, but activating the proprietary driver post-install just sat there and did nothing. <-- what system is that? 16:43:14 !qdb 16:43:28 AnMaster: perhaps you could read a few lines on and see 16:43:44 ehird, like you do when log reading? 16:43:53 (hint: you don't) 16:45:15 the issue was that it had called its kernel module the exact same thing as one that already existed <-- hm. Why not move away the existing module somewhere else 16:45:45 AnMaster: because it was being maintained by the package manager 16:45:55 and I don't like messing with package-manager-maintained files 16:46:25 ais523, well, to begin with I'm pretty sure the nvidia module is called "nvidia". Not sure what else would be called that 16:46:36 another nvidia module, I assume 16:46:53 ais523, also, modprobe wouldn't work, would it? insmod might 16:47:08 unless modprobe does allow you to give the full path 16:47:08 AnMaster -- telling you your anecdote is WRONG since 2007. 16:47:08 hmm, not sure 16:47:15 WRONG, I tell you! WRONG! 16:47:17 was pretty sure it doesn't. Seems it does 16:47:29 hm, maybe it was under 2.4 it didn't allow that 16:47:33 anyway, I think it was a timing issue, more than giving the full path 16:47:48 ais523, timing + mounting file systems then? 16:47:57 yes, or maybe the initramfs 16:48:00 ah 16:48:02 could be 16:49:19 Someone guess what my hostname is. :P 16:49:39 31.236.104.91.in-addr.arpa domain name pointer customer11288.pool1.Greenwich-GLN5000-BAS0001.orangehomedsl.co.uk. 16:49:42 no need to guess 16:49:45 No, my hostname. 16:49:50 Not my domain name. 16:49:57 well okay. 16:50:08 ehird, any clues or hints? 16:50:11 * ehird wonders how to find what the default font rendering settings are if he's customised them 16:50:13 AnMaster: nope. 16:50:16 without that it is basically impossible 16:50:30 Fine, I'll say warm/cold depending. 16:50:34 you can try to guess the hostname of my current computer, too 16:50:42 ehird, tux? 16:50:52 I /think/ it's possible to determine it by having looked at my termcasts or something like that 16:50:52 Freezing. 16:50:54 what about the new quantum algorithm 16:50:57 ? 16:51:04 ehird, mac? 16:51:13 Freezing. 16:51:15 ehird, intercal? 16:51:17 does linear algebra without Gaussian elimination or something 16:51:20 Freezing. 16:51:27 ehird, ehird? 16:51:30 Freezing. 16:51:35 I have more imagination than this, you know. 16:51:58 Oh, I know, I can check the fonts.conf stuff on the CD. 16:52:00 ehird, well, is it the name of some animal? 16:52:07 No. 16:52:17 hm 16:52:28 ehird, is it related to programming? 16:52:39 No. Science, though. 16:52:44 ah hm 16:52:51 ehird, chemistry? 16:53:07 No. And I'm not going to do any more yes/nos now, back to cold/warm. :P 16:53:31 Planck? 16:53:43 Exactly middle temperature. 16:53:46 Einstein? 16:53:52 No, wait, Planck is lukewarm. 16:54:00 Einstein is slightly sub-lukewarm. 16:54:05 hm okay 16:54:10 Feynman 16:54:19 ais523: do you know where the root FS is on the Ubuntu CD roms? 16:54:20 ehird, ? 16:54:23 AnMaster: It's not a name. 16:54:25 hellooooo 16:54:27 oh 16:54:28 algorithm here 16:54:32 ehird: no, I don't 16:54:32 soupdragon: Poop. 16:54:51 I don't think I've ever actually looked at the CD ROM filesystem 16:54:57 just installed/liveCDed from them 16:54:58 ehird, well I give up 16:55:08 AnMaster: Okay, fine: Physics. Not a name. 16:55:12 hm 16:55:20 ehird, electron? 16:55:27 or not a name of a thing either? 16:55:40 Hot. 16:55:47 ehird, neutron? 16:55:59 ehird, about root fs of cd: iirc it is a squashfs image there 16:56:09 Can I do mount -t squashfs? 16:56:13 -!- Pthing has joined. 16:56:32 ehird, no clue. Also it might have been some other compressed fs than squashfs. 16:56:42 ehird, anyway the squashfs thing is a *file* on the cd 16:56:49 ehird: Yes, squashfs is in Linux. 16:56:51 so you would need to do a loopback mount 16:56:54 Yes 16:57:03 autorun.inf dists isolinux pics preseed ubuntu 16:57:04 casper install md5sum.txt pool README.diskdefines wubi.exe 16:57:09 I'm just going to do du 16:57:12 And find the biggest file 16:57:12 ehird, well you never answered: " ehird, neutron?" 16:57:15 ehird, file * 16:57:19 AnMaster: Hot. 16:57:19 would tell you 16:57:24 -!- kar8nga has quit. 16:57:26 ehird, positron? 16:57:35 676504 ./casper/filesystem.squashfs 16:57:36 -!- kar8nga has joined. 16:57:39 AnMaster: Hot. 16:57:41 ehird, proton? 16:57:44 ehird, why casper? 16:57:53 ehird, also "how hot" 16:58:00 AnMaster: Hot hot hot hot hot. 16:58:04 there are hell of a lot of elementary particles 16:58:07 You are three steps away from the answer in conceptspace. 16:58:12 It's not a single particle. 16:58:17 ehird, boson? 16:58:32 On fire 16:58:40 fermion? 16:58:52 Warm 16:58:59 -!- kar8nga has quit (Remote closed the connection). 16:58:59 huh 16:59:01 Okay, okay, fine: it's not a type of elementary particle. 16:59:05 -!- kar8nga has joined. 16:59:06 It's a type of composite particle. 16:59:32 ehird, but a proton is a composite one. Of 3 quarks iirc 16:59:40 -!- Slereah has joined. 16:59:44 Oh, shut up. 16:59:46 It's meson. 16:59:51 oh 17:00:19 hello 17:00:29 ais523, what about your hostname then 17:00:34 soupdragon: hi 17:00:36 I think it is ehird's turn to guess now 17:00:37 ais523: 17:00:38 I intend, without three objections, to set the contestmaster of Enigma 17:00:40 to 'none'. 17:00:41 might wanna do something about that 17:00:44 I noticed 17:00:45 ais523: ais523-laptop 17:00:48 ehird: no 17:00:51 darn 17:00:56 although that /is/ the default 17:01:03 the default? 17:01:06 this time I actually got to set one 17:01:08 what do you mean the default 17:01:09 ah 17:01:10 ais523: can you give me warm/cold stuff? 17:01:11 AnMaster: ubuntu 17:01:17 $username-$computertype 17:01:18 oh 17:01:19 right 17:01:31 ehird: not really, mostly because a) it takes effort, and b) it's the middle of winter anyway 17:01:34 Ubuntu sets the hostname based on the username? That's a bit odd 17:01:41 agreed 17:01:51 Deewiant: Ubuntu is designed around regular single-user machines, and it uses the first name as username by default. 17:01:55 Deewiant, ubuntu does not target multi user systems in 98% of the cases or so 17:02:00 So you get "elliott-desktop", which is a reasonable-ish hostname. 17:02:17 I suppose that makes sense 17:02:18 ais523: then I won't guess :p 17:02:20 btw, how do you detect if you are on a desktop, laptop or whatever 17:02:23 ehird: fair enoguh 17:02:34 ais523, hah at the second reason 17:02:36 I'll make it a more interesting longterm challenge, see how long it is before I let everyone know by accident 17:02:48 I won't be trying to hide it, but I won't be trying to drop clues either 17:03:06 I will now promptly forget about that challenge 17:03:07 I've already let everybody know my hostname by accident so I guess I've already lost 17:03:17 oh and I think I mentioned my hostname(s) in here before. 17:03:24 so pointless to ask anyone to guess 17:03:26 Gee, isit tux 17:03:27 *is it 17:03:36 ehird, not any longer on desktop 17:03:38 used to be 17:03:43 Dragon? 17:03:44 Poop? 17:03:51 ehird, dragon is my laptop. 17:04:01 And poop is your desktop? 17:04:05 Deewiant, no 17:04:27 ehird@meson:/mnt/poop/etc/fonts$ diff <(ls /etc/fonts/conf.d) <(ld conf.d) 17:04:31 *ls conf.d 17:04:34 Deewiant, poop must be that old p4 that broke down 17:04:39 Empty diff; hmph. 17:04:49 though it was just anmaster-desktop iirc XD 17:04:51 Aha, I have ~/.fonts.conf. 17:05:00 AnMaster: How Ubuntironic. 17:05:07 ehird, well it wasn't using ubuntu 17:05:27 ehird, it ran win xp, slackware, qnx, suse and gentoo during it's lifetime 17:05:29 iirc 17:05:36 probably some more distros 17:05:44 You used QNX as a main OS? 17:05:59 ehird, yes because it overwrote boot loader 17:06:03 * ehird rm .fonts.conf, reboot 17:06:08 so until I had time to fix that 17:06:18 -!- ehird has quit (Remote closed the connection). 17:06:32 also what is that metallish sound from my keyboard when I hit the key "g" 17:06:33 And all of those had the same hostname? How boring 17:06:37 it doesn't sound good at all 17:06:53 Deewiant, well yes. it was back before I was on irc iirc 17:06:59 had modem back then 17:07:07 adsl near the end 17:08:47 -!- ehird has joined. 17:08:49 anyway, no one up for guessing current hostname? it is temporarily assigned until I think of a better one 17:08:55 that should give you some help 17:08:58 Things look nice now. Yay! 17:09:02 AnMaster: anmaster-desktop 17:09:04 ehird: rebooted X? 17:09:06 ehird, alas no 17:09:11 ehird, freezing evne 17:09:12 even* 17:09:17 ais523: rebooted totally, because they removed ctrl-alt-backspace 17:09:22 AnMaster: Whether you were on IRC or not doesn't change the fact that it's boring :-P 17:09:41 quantum algorithm for linear equations 17:09:45 ehird: there's a setting to turn it back on, but annoyingly they didn't say where it was 17:09:53 and they got rid of dontzap in favour of a more general option 17:10:01 -!- Slereah_ has quit (Read error: 110 (Connection timed out)). 17:10:02 "I'm looking for a bug-free, efficiently multithreaded real-time clock + infix calculator hybrid." --reddit 17:10:06 ehird, so any more guesses? 17:10:11 AnMaster: Nope. 17:10:36 ais523, also what was your host name? 17:10:45 ehird, tux-arch 17:10:46 ;P 17:10:59 AnMaster: You are boring. 17:11:06 ehird, as I said: temporary 17:11:19 ehird, I plan to rename it in the same style as the other ones 17:11:23 ehird: oh, it's in the advanced tab under keyboard layouts in KDE, it seems 17:11:26 what an obvious place to put it! 17:11:45 ais523: I don't really care. 17:11:52 It reboots pretty quickly. :P 17:12:01 -!- HackEgo has joined. 17:12:02 -!- EgoBot has joined. 17:12:05 ehird: VM, or on the hardware? 17:12:09 Hardware. 17:12:09 ooh, hi HackEgo, EgoBot 17:12:20 ehird, however, "kraken" just doesn't cut it. Because sv:kraken = en:"the weak person"/"the poor person"(not about money, more like "poor you", when someone is sick) 17:12:40 Buy an old [34]86 and call it that 17:12:44 ehird, :D 17:12:55 Or 286, even 17:13:10 It will be your friend and it will run and old version of Slackware and it will do the things you tell it to do, slowly. 17:13:14 *run an old 17:13:42 ehird, and I need a fitting name. Since phoenix actually was symbolic, it was recovered from someone going to throw it away due to broken onboard vga port/graphics chipset (not sure which, never figured that out) 17:13:45 Hey, Konversation isn't set to join #amend by default. Let's fix that. 17:13:47 so it runs headless 17:13:53 That was easy. 17:14:00 dragon, well that thinkpad is quite powerful 17:14:02 ehird: right-click the tab, choose "Join on Connect"? 17:14:06 ais523: yep 17:14:09 ehird, it is usually easy for most irc client 17:14:11 clients* 17:14:19 there's a more longwinded way too, but no reason to use it 17:14:22 That doesn't change the fact that it was easy. 17:14:32 well, actually it is trivial for my bouncer, it automatically updates on join by default 17:14:44 ehird, it wasn't meant to 17:14:45 ehird, iirc xchat has the same feature 17:14:53 ais523, ? 17:14:58 ais523: I was talking to AnMaster. 17:15:06 ah 17:15:12 I was trying to parody AnMaster in my response, anyway 17:15:28 ehird's harder to parody, he doesn't have any really obvious typing conventions 17:15:56 My unpredictability is either a sign that I'm terribly interesting or simply too mundane to have patterns. 17:15:58 ais523, what was the convention in question. A bit hard for me to spot as a non-native speaker. 17:16:04 Anyone who isn't AnMaster is welcome to tell me which. :P 17:16:18 ehird, and my answer is "mu" 17:16:23 AnMaster: using , rather than : to highlight someone 17:16:27 * ehird reads "crawlspace" on reddit, goes argh 17:16:29 it's not a native speaking thing, but an IRC thing 17:16:33 ais523, that is due to irc client simply 17:16:40 Talking to oerjan makes me experience synchronicity or something 17:16:41 AnMaster: isn't it customizable? 17:16:44 ais523, it is 17:16:46 Chatzilla used , by default but I changed it 17:16:48 ais523, but I prefer it this way 17:17:03 , is grammatically incorrect. 17:17:08 "Elliott, but I prefer it this way." 17:17:18 it's not always grammatically incorrect 17:17:30 Well, it reads differently than it's supposed to on IRC, at least. 17:17:30 it's correct if used as "ais523, could you please go and implement Feather for me RIGHT NOW?" 17:17:34 And a lot of the time it's grammatically incorrect. 17:17:38 but incorrect when used for the normal IRC meaning 17:17:40 I thought the imitation part of "ehird, it wasn't meant to" was "it wasn't meant to". 17:17:48 That's the kind of thing AnMaster says a lot. 17:17:51 the whole thing was an imitation 17:17:52 ais523, would you do that? 17:17:53 including that bit 17:17:57 AnMaster: no, I'm busy 17:18:05 ais523, also I never said right now 17:18:18 that = "implement Feather for me RIGHT NOW". 17:18:22 ais523, iirc I usually just ask about *if there has been* any progress 17:18:24 So "would you do that" does indeed say "right now". 17:18:33 17:18:46 Sheesh, OS X lets me use C-a and C-e for start/end of line, but KDE doesn't. 17:18:46 ehird: oh, that was the natural interpretation for me 17:18:50 What has the world come to? 17:18:55 ais523: I was unsure too. 17:19:18 ais523, also that "would you do that" was a joke on what you said 17:19:23 anyway, you do realise you just made everything ever said in #esoteric a deliberate misinterpretation? 17:19:36 What? 17:19:42 ais523, hahah 17:19:43 oh my god 17:19:44 17:19:47 there, that's fixed it 17:19:49 Oh. 17:19:57 Who said I was using SGML/XML? 17:20:13 ehird, what were you using instead? 17:20:27 éß 17:20:33 ë 17:20:37 maybe Perl6 17:20:46 Gödel 17:20:49 Gödel 17:20:49 where would just be a literal '/deliberate-interpretation' 17:20:50 ais523, what does that do in perl6? if anything at all? 17:21:06 ais523: deliberate-*misinterpretation 17:21:06 AnMaster: <> quotes like "", except that it treats whitespace as commas rather than preserving it 17:21:23 ais523, but didn't you use <> to create a list or such before? 17:21:29 yes, exactly 17:21:32 I used 17:21:35 oh 17:21:37 which is equivalent to ('a', 'b', 'c') 17:21:38 right 17:22:02 wait, no, <> quotes like '' except it treats whitespace as commas 17:22:10 it's «» that quotes like "" 17:22:13 Hey, I can type £ as Compose L. 17:22:17 *Compose L -. 17:22:27 shift-3 probably works better 17:22:33 ais523, it wouldn't be perl if you couldn't escape whitespace inside <> 17:22:36 so how do you do that? 17:22:40 ais523: No, that's #. 17:22:47 ehird: US keyboard? aargh 17:22:49 ais523: I prefer the US layout, especially as I use # often - commenting, IRC, etc. 17:22:56 AnMaster: using «» and backslashing it 17:22:56 Also, " is a more common character than @. 17:22:57 ehird, US or US international? 17:23:00 ais523, where is # on UK? 17:23:01 It should be in the letter area. 17:23:07 AnMaster: to the left of return 17:23:09 unshifted 17:23:09 The UK layout is inferior in more or less every way, except perhaps \ placement. 17:23:13 *\| 17:23:19 ehird, tell me if you find out how to type pi using compose 17:23:23 I would like to know 17:23:25 never found it 17:23:45 ehird, where are *\| placed? 17:23:50 ehird: I think the UK layout's superior: it doesn't have one symbol on two different keys (except |, but that's technically two different symbols on Windows) 17:23:53 since they are in 3 different corners here 17:23:59 you can type # without using shift, and it's in an easy-to-press location 17:24:13 ais523, you have | on two different keys!? 17:24:18 I don't want to talk about the UK layout, anyway. 17:24:20 http://www.modeemi.fi/~tuomov/b/2009/updates/Compose.txt 17:24:27 AnMaster: altgr-`, shift-\ 17:24:28 No pi here, as far as I can tell. 17:24:30 You could add it. 17:24:34 although, they're different symbols in EBCDIC 17:24:39 one has a broken bar, the other is continuous 17:24:40 ais523, the former is ± here 17:24:48 the later... well that is tricky 17:24:49

: "((pi symbol))" Uxxxx # UNICODE NAME 17:25:49 ais523, wait, altgr- is ±, altgr+shift+ is ¬ 17:25:57 U03C0 # GREEK SMALL LETTER PI 17:26:06 π 17:26:07 So 17:26:10 ais523, and \ is altgr-+ so ¿ for shift-altgr-+ 17:26:23

: "π" U03C0 # GREEK SMALL LETTER PI 17:26:27 Just append to your Compose file. 17:26:28 You're welcome. 17:26:36 ehird, Now to locate the compose file 17:26:47 "locate Compose" 17:26:49 AnMaster: Create ~/.XCompose 17:26:53 /usr/share/X11/locale/(locale)/Compose 17:26:56 Or what BeholdMyGlory said. 17:26:58 ah 17:27:11 /usr/share/X11/locale/compose.dir 17:27:11 /usr/share/X11/xkb/symbols/compose 17:27:13 * ehird assigns the Windows keys to Compose. 17:27:14 are the closest one 17:27:20 BeholdMyGlory: Does that overwrite the global file or append? 17:27:26 you mean you can create a compose shortcut for a Unicode snowman? 17:27:28 none matches exactly what ehird suggested 17:27:33 ais523: EXCELLENT IDEA 17:27:40 Aww, sm is taken: ℠ 17:27:42 * AnMaster agrees with ehird on this 17:27:44 ehird: I don't know, I copied the global file to ~/.XCompose 17:27:58 BeholdMyGlory: is there any command to activate it or do I have to restart X? 17:28:09 No idea :P 17:28:16 ais523: Perhaps sy, as in unicode Snowman for You. 17:28:22 Or us, for Unicode Snowman. 17:28:38 incidentally, the Ubuntu wiki recommends using the SAK for restarting X nowadays 17:28:47 wow, DejaVu's snowman is brilliant 17:28:47 because you can't hit it by mistake using accessibility shortcuts 17:28:48 http://unicodesnowmanforyou.com/ 17:28:57 He's wearing a top hat, smiling, standing on a slope, and has snow around him 17:28:59 ooh, it's bigger than I remember it 17:29:06 SAK? 17:29:13 alt-(sysrq+k) 17:29:14 ostrange 17:29:16 strange* 17:29:25 my locale is not in /usr/share/X11/locale/ 17:29:51 would be sv_SE.UTF-8 17:30:18 oh the mapping file 17:30:20 en_US.UTF-8/Compose sv_SE.UTF-8 17:30:44 sv_SE = Swedish Swedish? 17:30:53 ais523, as opposed to sv_FI 17:31:05 I'm just amused that it's a different abbreviation at each side 17:31:19 ais523, I think SE is country code 17:31:27 and sv is language code or suc 17:31:28 such* 17:31:42 I wonder what the name of the Unicode Snowman is. 17:31:48 I need its name to add the Compose comment. :( 17:32:05 ehird: 'SNOWMAN' 17:32:34 Apparently include "%L" does something in .Xcompose. 17:32:40 I bet L=locale=include locale's compose. 17:32:46 why is there a snowman in Unicode anyway, by the way? 17:32:46 how does one reload the compose file 17:32:50 ais523: Why not? 17:32:54 AnMaster: Restart X, I guess 17:33:00 ehird: most things in Unicode are put there for a reason, I think 17:33:01 ehird, man page says it means "your locale" 17:33:04 %L that is 17:33:09 it's not like Unicode magically gathers characters without people agreeing on them 17:33:12 ais523: Perhaps a legacy character set 17:33:13 so someone must have put it ther 17:33:15 "and %L expands to the name of the locale specific Compose file (i.e., "/usr/share/X11/locale//Com‐ 17:33:15 pose"). 17:33:15 For example, you can include in your compose file the default Compose file by using: 17:33:15 include "%L"" 17:33:15 *there 17:33:20 ugh the formatting 17:33:20 AnMaster: Which man page? 17:33:26 ehird, man Compose 17:33:27 ehird: man 5 Compose 17:33:35 Deewiant, hah, beat you 17:33:39 I don't have it. 17:33:43 I do wonder, though, what it means by that 17:33:44 ehird, install it 17:33:44 ais523: some Ubuntu package? 17:33:54 Deewiant: That otherwrise it overwrites the locale's compose file. 17:33:56 ehird, find it with apt-file 17:33:58 *otherwise 17:33:59 ehird, very useful tool 17:34:04 ehird: either that's a really stupid comment, or I misunderstood the context of your sentence 17:34:06 I suspect the second 17:34:09 ehird, it allows you to search on files from not installed packages 17:34:13 ehird: I mean, /usr/share/X11/locale contains no compose file for any of my locales 17:34:21 Deewiant: Does for me. 17:34:27 ais523: ? 17:34:31 ehird: Well, what's your locale 17:34:35 Deewiant, compose.dir 17:34:35 C? :-P 17:34:38 Deewiant, it has a mapping 17:34:45 ehird: as in, an Ubuntu package wouldn't have put stuff in Unicode 17:34:48 Deewiant: Dunno, either US or brit I guess 17:34:51 see what I said about sv_SE -> en_US compose mapping above 17:34:53 ais523: I meant X11 manpages 17:34:54 AnMaster: Ah, indeed. 17:35:00 Which locale value does it use, though? 17:35:04 LANG? Something else? 17:35:08 Deewiant, no clue 17:35:48 ehird: I can find them in Japanese, but not English 17:35:52 I imagine the US and UK Compose files are much the same. 17:35:59 ais523: I'm just going to use apt-file 17:36:25 Well, I suppose it won't be LC_NUMERIC, LC_TIME, LC_MONETARY, LC_PAPER, LC_ADDRESS, LC_TELEPHONE, or LC_MEASUREMENT 17:36:31 that's crazy, why is there "xmanpages-ja - Japanese manual pages for X" but no "xmanpages"? 17:36:33 -!- EgoBot has quit (Remote closed the connection). 17:36:38 So I can fairly safely change my .XCompose to use %L 17:36:45 or anything else starting "xmanpages"? 17:36:53 -!- EgoBot has joined. 17:37:03 ais523, use apt-file 17:37:17 ehird@meson:~$ sudo apt-file update 17:37:18 Downloading complete file http://gb.archive.ubuntu.com/ubuntu/dists/karmic/Contents-i386.gz 17:37:19 Yawn. 17:37:24 ehird, it takes a bit yes 17:37:49 $ apt-file find /usr/share/man/man5/Compose.5.gz <-- no results. Maybe elsewhere on ubuntu? 17:38:16 Maybe it just doesn't exist. 17:38:33 Also, s/find/search/; use proper APT terminology, dammit. 17:38:43 ehird, it is find for apt-file 17:38:48 It's either. 17:38:49 well both 17:38:53 -!- HackEgo has quit (Remote closed the connection). 17:38:54 ehird, anything wrong with find 17:38:59 search|find Search files in packages 17:39:09 ehird, find is shorter to type 17:39:11 APT uses search, apt-file says "Search" as the verb and lists search first. You are a bad person :P 17:39:14 -!- HackEgo has joined. 17:39:31 Deewiant: Does the man page say anything about how to load .XCompose without restarting X? 17:40:04 ehird, alias qfile="apt-file find" alias qlist="dpkg -L" alias emerge="apt-get" ;P 17:40:10 There, now all my bots keep logs, so maybe I'll actually know WHY they quit :P 17:40:16 (no I don't use that, but the gentoo commands are shorter) 17:40:18 Compose doesn't have FOR ALL by default? Hmph 17:40:32 ehird, give me the line for it 17:40:33 ehird: Not that I can see 17:40:40 It has ≥ and ≤, though. 17:40:46 AnMaster: Give me the line for what? 17:40:56 Okay, it doesn't even have -> 17:41:00 That's bull fucking shit 17:41:04 ehird: It does say something about cache directories, though, and "see also - mkcomposecache(1)" 17:41:07 ehird, when you create the "for all" and "there exists" lines, give them to me 17:41:15 ehird, → is on altgr-i 17:41:16 Neither the directories mentioned nor that command exist here, though. 17:41:19 no need to use compose for it 17:41:20 :) 17:41:26 Fuck altgr 17:41:31 Compose is a far superior interface 17:41:33 ehird, you don't have altgr? 17:41:41 I have it, but I do not use it. 17:41:44 Compose is a superior interface. 17:41:51 Alt Gr is just Alt here. 17:41:52 ehird, it is faster to use altgr than compose though 17:41:55 couldn't you make altgr a compose key, leaving the windows-logo key for super? 17:41:58 No, it is not. 17:42:01 fewer key presses 17:42:05 ehird: My compose has -> → 17:42:15 Time(3k) - Time(2k) = Omega 17:42:21 ehird, mine has -> to → 17:42:22 as well 17:42:30 → 17:42:33 is altgr-i for me 17:42:35 ---> -> → 17:42:42 (k = keypress) 17:42:44 ais523, and does it work with compose? 17:42:54 C-x 8 is all the compose I need 17:43:14 ehird, you press altgr and i at about the same time. Not so for compose and then two separate keys 17:43:22 You can do Compose+x y. 17:43:25 ehird, compare shift-A and "shift, release, a" 17:43:46 ehird, hm true, but do you have to release x there? 17:43:48 And in fact, doing key combinations is not very ergonomic anyway. 17:43:55 AnMaster: Nope. 17:44:07 Wait, yes. 17:44:09 But who cares. 17:44:11 ehird, you do for -> at least 17:44:14 I can type it just as fast, so I don't care. 17:44:55 * ehird wonders how to express <>> in compose format 17:45:05 Deewiant, did you try pkgfile on mkcomposecache? 17:45:48 What's pkgfile? 17:45:53 poop ≠ dung 17:45:53 why does man Compose on ubuntu open run-mailcap(1) 17:46:00 that makes no sense whatsoever 17:46:12 Deewiant, like apt-file for arch 17:46:15 Deewiant, iirc you ran arch? 17:46:27 Deewiant, pkgfile is in pkgtools package iirc 17:46:33 I don't know what apt-file is either, but I suppose I can guess :-P 17:46:51 Evidently yes, in pkgtools 17:47:05 Deewiant, it's useful to find what package provides a given file. Also it installs a cronjob to update the db 17:47:10 iirc 17:47:37 Yes, it claims to have done so 17:47:53 $ pkgfile /usr/bin/pkgfile 17:47:53 community/pkgtools 17:48:12 Deewiant, unlike apt-file, pkgfile is fairly slow. 5-10 seconds on my sempron system 17:48:20 with next to no disk activity 17:48:33 so I suspect very inefficient searching 17:49:16 still useful though 17:49:23 Nothing for mkcomposecache 17:49:34 brb, restarting x 17:49:40 ais523: what's that command to restart x again? 17:49:42 sysrq+k? 17:49:49 alt-sysrq+k 17:50:04 -!- ehird has quit (Remote closed the connection). 17:50:44 -!- ehird has joined. 17:50:53 wb 17:51:00 π 17:51:02 ☃ 17:51:04 → 17:51:06 ← 17:51:11 I am happy now. 17:51:11 ehird, you can enable that ctrl-alt-backspace again. In gnome go to keyboard settings -> layouts -> layout options. I suspect something similar is possible in KDE 17:51:19 Wow, Kopete just notified me about every single online person after connecting. 17:51:22 it is an xkb option thingy 17:51:23 That was... interesting. 17:51:27 AnMaster: I don't want to, though. 17:51:30 Alt+Sysrq+K is just fine. 17:51:32 ehird: what, everyone online in the entire world? 17:51:32 ehird, ah okay 17:51:37 ais523: Har har. 17:51:50 π + 3 ≠ 6 17:52:03 ehird, I interpreted it like ais..., but realised that was stupid, thus didn't say anything 17:52:12 * ehird ♥ Unicode 17:52:15 an guessed it must be "friends" or something like that 17:52:22 * ehird ♥s Unicode, even 17:52:26 ehird, where do you have µ 17:52:26 AnMaster: People on my contact list, obviously. 17:52:35 Kopete being an instant messenger (sp?). 17:52:41 µ. 17:52:41 wait, people actually use contact lists? 17:52:43 Compose m u. 17:52:49 ais523: how else are you meant to use IM? 17:52:51 I just memorise the email addresses, or where to look them up 17:52:53 ehird, yeah, see. I don't jump to insane conclusions. Unlike ais523 17:52:57 >_< 17:53:10 likewise for IM, although I don't use it much if at all 17:53:15 ais523, in your mail client? you don't use any address book? 17:53:19 -_- 17:53:20 AnMaster: no 17:53:24 wth 17:53:26 I just use Gmail's email autocomplete 17:53:28 But for IM 17:53:28 ais523, paranoia? 17:53:29 apart from my sent and received folders 17:53:34 AnMaster: no, just too much effort 17:53:35 Ignoring the idiocy of remembering a bunch of crappy email addresses vs making one or two clicks to talk to someone, 17:53:40 That doesn't even tell me whether they're online or not. 17:53:53 ehird, how does gmail's auto complete work. Previous people you sent to? 17:53:56 ehird: why does it matter if they're online? 17:53:58 AnMaster: Or sent to you. 17:54:03 if so it is like auto collecting an address book 17:54:04 ais523: Because if they're not online, I can't talk to them. 17:54:08 AnMaster: Exactly. 17:54:12 you mean you don't agree to talk to them in advance?> 17:54:16 ehird, which my mail client does too 17:54:25 ais523: How would I do that? By IMing them? 17:54:30 "Hey, can I IM you?" "Sure." 17:54:32 "Hi." 17:54:49 Don't say "go up to them in person", I'm not about to go on a train or a plane every time I want to talk to someone. 17:55:11 ehird: how do you find out how they are in the first place? 17:55:18 all I can think of is Usenet or IRC 17:55:53 ais523, for me, the auto collected addresses for incomming are only done from those not marked (or later manually marked) as spam. And are not "bulk" priority (thus filtering mailing lists). And they are placed in a different category 17:55:57 I used to use forums quite a bit, so a lot of the contact list is degrees-of-separation'd from there. 17:56:01 so it is easy to weed them out should that be required 17:56:10 Admittedly I only talk to maybe 10 of the people on my list, but I'm way too lazy to strip it down. 17:56:43 as for IM: I don't use it 17:56:44 ehird: and they actually accept being IMed at random times just because they're online? 17:56:46 irc and email for me 17:56:51 sounds as bad as a mobile phone 17:56:51 forums I avoid when possible 17:56:55 ais523: If they have their IM client online, presumably they're willing to talk. 17:57:01 You're being pretty idiotic; purposeful or not? 17:57:06 ehird: maybe they're trying to talk to someone else? 17:57:18 ais523: Most people can hold two separate conversations at once. 17:57:19 ais523, how does " ehird: and they actually accept being IMed at random times just because they're online?" differ from IRC? 17:57:24 We do it often in this channel, you know. 17:57:24 and slightly purposeful, I'm being far more combative than I need to be 17:57:34 AnMaster: because nothing compels me to actually read IRC 17:57:42 or to turn highlight on for a channel 17:57:42 ais523: Or does it? 17:57:44 ais523: I think it does. 17:57:49 ais523: I think this compels you to read IRC. 17:57:53 ais523: In exactly the same way as IM. 17:57:55 ehird: I have unhighlighted a channel before now 17:58:00 although, not this one 17:58:16 but what I meant for talking to someone else is 17:58:23 if you want to talk to person A, you have to set the IM client to online 17:58:34 you do? 17:58:37 even if you aren't open to person B talking to you 17:58:45 Look, most people don't mind their friends striking up a conversation with them. 17:58:49 ais523, can't you set it to busy? 17:58:49 If you mind it, that's your problem. 17:59:01 In fact, most people *like* it when their friends talk to them. 17:59:05 as in, online but preocupied 17:59:07 ehird: I don't see how most people ever get anything done, then 17:59:26 ais523: Did you know that ~15 minute breaks every now and then actually make you more productive? 17:59:29 And what AnMaster said. 17:59:32 Put it on busy or offline. 17:59:33 ehird: yes 17:59:42 ehird, there is one difference to irc though. Well... to IRC channels. IRC /msg to a single person is more similar 17:59:44 and that is 17:59:46 If someone messages you, say "working, sorry". 17:59:49 Simple. 17:59:51 it is easier to just say "brb" or such 18:00:00 and ignore the channel for a few hours 18:00:07 (well "bbl" in that case I guess) 18:00:09 hmm, so it's an Internet version of mobile phones, effectively 18:00:13 when you need to do something else 18:00:20 ais523, now imagine IM on phones 18:00:23 Mobile phones don't have a busy status. 18:00:24 probably explains a lot, I don't really understand why people use mobiles either 18:00:28 AnMaster: "Imagine"? I have that. 18:00:39 ehird, well but ais523 is stuck in old tech... 18:00:43 ehird, I *know* it exists 18:00:52 (I am actually angry at people using mobiles, because of the passive effects on the rest of us) 18:00:52 I just wasn't sure ais523 did 18:00:58 ...? 18:01:07 AnMaster: I think ais523's internal model of social interaction is very, very different to the rest of us 18:01:15 (in particular, the general collapse of payphones, and people getting phoned at inconvenient moments while they're meant to be having meetings with you) 18:01:15 He seems to view starting a conversation with someone as rude 18:01:19 ehird: I do 18:01:28 Issues, I think is the word here. 18:01:34 Issues. 18:01:46 ehird, hey, I thought you considered my model of social interaction as different? 18:01:59 everyone probably has a different model of social interaction 18:02:05 AnMaster: Do you view starting a conversation as rude? 18:02:24 this argument is stupid 18:02:38 ehird, not unless it is a random idiot asking for "how do I get program y to work on vista?", for a program I'm just in the channel in 18:02:41 AnMaster: Then you're not that crazy. 18:02:44 I do get that type of /msg once in a while 18:02:49 Such a view is a very Finnish attitude to have, actually. 18:02:52 those are generally very irritating 18:02:56 Deewiant, which view? 18:03:10 SimonRC, was that self-referential? 18:03:10 Viewing starting a conversation as rude. 18:03:17 AnMaster: heh 18:03:17 oh 18:03:28 SimonRC, that was the only way I could read it though 18:04:04 This channel is now: The official poop channel 2010 18:04:11 no 18:04:20 All non-poop-related discussion is banned, although esolang discussion will be ignored by the powers that be. 18:04:40 sigh 18:04:41 anyway 18:05:03 ehird: err, arbitrarily changing the topic of a channel tends not to work if you aren't the founder, or at least an op 18:05:18 ehird, tell me if you find a way to reload compose without restarting X 18:05:28 otherwise I'm going to delay testing pi 18:05:30 I should know, most of my attempts to change it to being about esolangs fail 18:05:30 AnMaster: Stop being a pussy and press the keycombo. 18:05:40 Or the ☃ will be sad. 18:05:44 ? 18:05:53 ehird, what? ctrl-alt-backspace you mean? 18:05:59 Yes. 18:06:08 well no thanks, I have some long running stuff I don't want to abort 18:06:13 graphical ones 18:06:14 ehird: I've kept this X session running for about 3 days now 18:06:23 it's a bit annoying, though, because hibernate takes longer than shutting down 18:06:34 and weirdly, also corrupts the icon cache 18:06:40 ais523, hm. I usually keep X running for weeks 18:06:45 ais523, what? 18:06:55 AnMaster: the icons that show up when you press alt-tab 18:07:02 for some reason, on this computer hibernation corrupts them 18:07:05 I was pleasently surprised last night when suspend to RAM worked perfectly and quickly. 18:07:07 ais523, they are cached? 18:07:08 but has no visible other problems 18:07:11 Resume took a bit longer than OS X, but it was nice. 18:07:23 AnMaster: I assume so, otherwise htf could they change whilst leaving everything else the same? 18:07:25 ais523, also if that happened, I wouldn't trust hibernation, who knows what else it may corrupt 18:07:37 ais523, does restarting the program fix the icon? 18:07:40 AnMaster: yes 18:07:44 ais523, you used "htf"? 18:07:48 YOU? 18:07:52 * AnMaster blinks 18:08:02 AnMaster: yes, I don't see how it can be a swear word if it's that abbreviated 18:08:20 how very.... aisish 18:08:32 it has a meaning of its own 18:08:34 like "lol" 18:08:40 which is nowadays unusable for its original meaning 18:09:18 ais523, no it isn't. I tend to use "haha" when I actually doesn't laugh out loud. And "lol" only if I do that. which is rare 18:09:38 AnMaster: you're out of touch with modern usage, then 18:10:04 ais523, correction: I rebel against the modern usage 18:10:05 (also, usage differs by channel; for instance in pokemon IRC channels, it normally means "heh, someone sent out something laughably weak", or a similar build) 18:10:08 ais523, calling someone out of touch 18:10:09 classic 18:10:18 ehird: depends on what I'm calling them out of touch /with/ 18:10:23 ehird, I was considering saying that. Then realised I was too 18:10:39 ehird, I did not quite want you to have that much fun 18:10:51 [18:08] ais523, no it isn't. I tend to use "haha" when I actually doesn't laugh out loud. And "lol" only if I do that. which is rare 18:11:04 hey, there's a grammar mistake there 18:11:05 Yes, because it's not as if "haha" is an onomatapeeyuh (too lazy to spell) for out-loud laughter or anything. 18:11:09 ais523, don't* 18:11:09 and I only noticed the second time round 18:11:15 You're so rebellacious and prescriptivist. 18:11:16 ais523, the one I meant? 18:11:18 what's wrong with me? 18:11:19 AnMaster: yes 18:11:26 ais523, I think I wrote it as /me first then changed my mind 18:12:01 ehird, I never said I was consistent. 18:12:15 another IRC spec issue: technically, aren't people breaking the spec by replying to /me with a non-CTCP privmsg rather than a CTCP-ACTION reply? 18:12:27 ais523, NCTCP you mean 18:12:32 or whatever 18:12:37 not that there's anything wrong with that, I'm just amused at how far actual IRC usage differs from the spec 18:12:45 AnMaster: "CTCP-ACTION reply" 18:12:52 CTCP replies are notices 18:12:55 AnMaster: *I don't actually laugh out loud 18:12:59 sorry, had to fix it 18:13:05 ehird, see above 18:13:07 I fixed it 18:13:09 *Sorry, had to fix it, even. 18:13:14 I sometimes laugh out loud, and then it's really hard to express what I'm actually doing 18:13:20 CTCP is a separate spec 18:13:25 because "lol" is already taken, and typing it out is a pain 18:13:25 "when I actually don't laugh out loud" is not valid. 18:13:27 coppro: ok, point taken 18:13:29 ais523, well, not sure about action. Since it is rather different from the other ctcp 18:13:30 which is followed a lot less than the regular spec 18:13:32 ctcps* 18:13:40 ehird: yes it is 18:13:41 ais523, for VERSION and such sure 18:13:45 though the current iteration of IRC isn't exactly well-implemented either 18:13:53 the worst, though, is colors 18:13:57 no one implements CTCP colors 18:14:00 hmm, ctcps sounds like some sort of secure ctcp 18:14:02 mIRC does. 18:14:05 coppro, ctcp colours? 18:14:06 coppro: they exist? 18:14:06 As does ChatZilla. 18:14:08 what the heck is that 18:14:08 As does X-Chat. 18:14:13 Everyone implements IRC colours. 18:14:14 ehird: I thought mIRC sent special character codes 18:14:18 Oh. 18:14:19 rather than doing a CTCP for them 18:14:22 Okay then. 18:14:24 no, everyone implements mIRC colors 18:14:26 not CTCP ones 18:14:34 so what are ctcp colours 18:14:41 is* 18:14:51 not sure, but I think they might be based on literal control-Cs 18:14:57 like CTCP's based on literal control-As 18:15:02 http://www.invlogic.com/irc/ctcp.html#3.6 18:15:37 mIRC uses ^C 18:15:40 my guess is that the reason nobody implements that is that nobody implements CTCPs inline in normal messages 18:15:45 but CTCP uses ^FCA 18:15:50 which is strange 18:16:04 same with other formats 18:16:10 bold, for instance, is usually just ^B 18:16:13 not ^FB 18:17:24 coppro, what is the format of ? 18:17:35 hey that spec is spelled properly 18:17:37 18:17:37 almost done writing an overcomplicated bf->python converter... 18:17:46 *spelt 18:17:53 ehird, indeed 18:17:55 trying to work that out 18:17:56 lieuwe: Is it over 20 lines? 18:17:59 ah, so it is 18:18:01 yay 18:18:01 ehird: yes 18:18:05 AnMaster: Ot0-F, an index into the usual-ish 16-colour palette. 18:18:07 lieuwe: Rewrite it. 18:18:12 coppro, ? 18:18:12 :P 18:18:14 s/Ot/It's a hex digit in / 18:18:20 either IX, where X is a hex digit 18:18:28 or an #XXXXXX code 18:18:28 fizzie: that's a pretty crazy typo 18:18:33 ehird: it contains a tokenizer and a grammar analyzer, but the point is that you can write different langs for it... 18:18:48 ṕóóṕ 18:18:57 fizzie, is that for ctcp colour or mirc? 18:19:02 ehird: you could write a anything->anything converter for it... 18:19:13 oh it supports full also 18:19:15 rigt 18:19:16 right* 18:19:18 An anything->anything converter enabler? 18:19:24 You mean a language in which you can write compilers? 18:19:25 Underlambda! 18:19:39 ehird, over 20 lines is okay for optimising 18:19:40 ehird: pretty much, 18:19:40 ais523: Is Underlambda implemented yet? 18:19:44 * ais523 wants to write everything->underlambda and underlambda->everything 18:19:44 with enough optimising I mean 18:19:45 ehird: partially 18:19:50 the spec isn't pinned down yet 18:20:06 and derla, especially, is rather light on implemented commands 18:20:11 AnMaster: Right. The spec was a bit strange, since the part immediately before the color table says "Each colour will be an index, selected from the following table", but it indeed is either IX and #rrggbb. 18:20:18 next jobs are probably pinning down I/O, and string handling 18:20:37 fizzie, and where is the table? 18:21:04 AnMaster: In the spec coppro linked to. 18:21:04 oh there 18:21:09 not near the colour command at all 18:21:28 -!- kar8nga has quit (Remote closed the connection). 18:21:44 fizzie, oh that is I 18:21:47 fizzie, as defined above 18:22:21 AnMaster: Yes, I know. That's why the text immediately above the table is a bit misleading. 18:22:36 ais523, also everything->underlambda seems very ambitious. ;P 18:22:45 ais523, for a single compiler at least 18:22:47 AnMaster: maybe not directly 18:22:54 and it would be loads of separate compilers 18:23:12 maybe interp-bundling ones, I don't really care about efficiency for that bit 18:23:41 ais523, write a generic framework for esolang compiling. Oh wait, that won't work. There will be lots of esolangs that won't fit in such a framework, almost by definition 18:24:18 ais523, also, does underlambda support self modification? 18:24:32 not directly, in that the syntax is always the same 18:24:46 you can do some pretty heavy command redefinition with the preprocessor, but not at runtime 18:24:53 ais523, I meant as in "befunge98 -> underlambda" 18:24:56 AnMaster: In any case CTCP's one messy spec. That particular document says it's an Internet Draft, valid for a maximum of six months; and it's from February 1997. The "original" spec from 1994 -- http://www.irchelp.org/irchelp/rfc/ctcpspec.html -- doesn't specify the text formatting codes at all. 18:25:08 AnMaster: that's perfectly fine, you just bundle a befunge interp written in underlambda 18:25:15 ais523, well give up on "everything" then. For compilers. Interpreters would work 18:25:23 AnMaster: that is a compiler, technically 18:25:24 ais523, well true, but that hardly counts as compiling really 18:25:33 and the reason to do it like that is so that compilations can be chained 18:25:39 so you can, say, compile Unlambda to Thue 18:26:07 ais523, technically yes. But it isn't really in the spirit of compilation. 18:26:20 it is in the spirit of cross-implementing all esolangs, though 18:26:25 which is what Underlambda is for 18:26:54 ais523, not in the spirit, rather "in the interest" would be better there 18:27:00 i think i might have the most over-complicated hello world program in python here, 148 lines O.o 18:27:04 AnMaster: spirit too 18:27:12 lieuwe: you should see my hello world in brainfuck 18:27:16 that's several megabytes long 18:27:22 mostly stdlib overhead 18:27:36 lieuwe, because it was generated by his C->BF gcc backend 18:28:15 ais523: O.o, my hellow world was compiled from bf to python, imagine how long that one would be :-O 18:28:24 ais523, also, what about banana-scheme->unlambda? 18:28:42 ais523, and unlambda→ 18:29:02 AnMaster: only cross-implementing TC langs 18:29:09 and maybe sub-TC -> underlambda 18:29:13 unlambda itself is a pain to compile out of 18:29:19 so you'd want to go via underlambda 18:29:21 ais523, and underlambda->super-tc? 18:29:33 AnMaster: possibly, but it's so hard to test that I might not bother 18:29:45 ais523, oh? you said you wanted underlambda should be used for cross implementing? 18:29:55 if it is a pain to compile out of, then what is the point 18:30:11 you are muddling Unlambda and Underlambda 18:30:15 Unlambda = pain to compile out of 18:30:22 ais523, also can you really implement befunge98 with all fingerprints required for fungot to run in underlambda 18:30:23 AnMaster: ee ' /ignore foo all' maybe then. dunno, your fnord 18:30:26 Underlambda = easy to interpret out of, and moderately difficult to compile out of 18:30:27 ais523, typo then 18:30:40 AnMaster: as I said, I/O isn't decided yet 18:30:48 but nothing else should be problematic, given TCness and all 18:30:56 ais523, sure it would. Since it uses SOCK 18:30:59 for socket IO 18:31:12 ais523, you thought fungot used netcat or something? 18:31:13 AnMaster: are there any builtin plain string matching functions? i'm just using the windows standalone 18:31:51 psox 18:32:02 AnMaster: what's making you think that socket I/O isn't I/O? 18:32:02 all you need is stdio + special semantics for io 18:32:04 I don't get your reasoning here 18:32:12 ais523: Sockets are MAGIC, dude! 18:32:19 ais523, well, they are different from file IO 18:32:30 on unix it isn't just opening a file 18:32:48 -!- coppro has quit (Read error: 54 (Connection reset by peer)). 18:32:50 "I am the publisher of a now defunct and formerly popular avant-garde lifestyle magazine from the 70s and 80s. A magazine design enthusiast is now beginning to scan and post full copies of every issue of the magazine. Can anyone offer legal advice or a course of action to pursue (or provide me with a precedent that I can use against this guy)?" 18:32:52 ais523, plus, SOCK supports listening to incomming connections to. Which means bind() accept() and such 18:32:57 I like the part where he admits it's causing no damage whatsoever to him 18:33:01 AnMaster: it is still, nevertheless, I/O 18:33:21 -!- ais523 has left (?). 18:33:24 well true 18:33:34 blah = cat /dev/foop 18:33:39 blah == /dev/foop3 or w/e 18:33:41 tada, listening 18:33:43 hm? 18:33:57 ehird, how do you mean. 18:34:41 "accept incoming connection on port 5432 and return the handle for it" 18:34:57 * ehird wonders where the wastebasket is in kde 4 18:35:16 AnMaster: 18:35:20 open file /dev/listen 18:35:27 write "5432" 18:35:31 x = read 18:35:35 print x --> /dev/foop 18:35:38 open file x 18:35:40 y = read 18:35:46 print y --> /dev/foop47 18:35:49 open file y 18:35:52 ...use y as socket... 18:38:56 after i've implemented bf what should i implement next? 18:39:21 Underload! 18:39:37 -!- ais523 has joined. 18:39:40 π³ ≠ 27. Hooray for Compose. 18:39:44 re-implement CLC-INTERCAL? 18:39:46 ais523: I thought you were working. 18:39:48 SimonRC: ouch 18:39:49 I am 18:39:54 but I like keeping an eye on a channel 18:39:55 ehird, sure, but the OS doesn't have it? 18:39:57 I actually got something done, though 18:40:08 I'm going to continue working nevertheless, and may have to leave again 18:40:11 well, Plan9 does I guess 18:40:13 but not linux 18:40:38 ehird: implementing underload... 18:40:45 yay, Underload 18:40:53 lieuwe: compiling or interpreting? 18:41:14 ais523: compiles to python, which is interpreted... 18:41:22 Compiling Underload is fun. 18:41:28 I pioneered that 18:41:47 ehird: your optimised compiler is of a similar speed to derlo on large programs, I find 18:42:08 and derlo's memory usage is a lot lower when faced with code like :*:*:*:*:*:* 18:42:11 ais523: My compiler didn't optimise 18:42:18 well, you used -O3 18:42:20 Also, it would be "your optimising compiler". 18:42:22 that's a form of optimising 18:42:22 Oh. 18:42:29 I see. 18:42:35 ais523: It was just a proof of concept. 18:42:41 I could write a better one if I wanted. 18:42:49 derlo's more optimising, I hope to implement optimised integers at some point 18:42:50 Nobody said the strings and the code had to match, after all. 18:42:54 So you could do a good bit of optimising there. 18:42:58 grr, (set-fringe-style 'left-only) doesn't work 18:43:06 what is the fringe? 18:43:30 The little grey border to the left and right. 18:43:34 (X11 only.) 18:43:36 Well, graphical only. 18:44:04 ah, which shows you things like lines wrapping 18:44:36 It's ugly at the right because the scrollbar is right next to it for me. 18:44:53 Although I'd prefer it just be white, instead; having the text run right up against the scrollbar is ugly too. 18:45:19 I wish I knew how to set faces without using customise. 18:45:21 *customize 18:46:50 grr, why can't you drag to rearrange in KDE's taskbar? 18:47:23 -!- lieuwe has quit ("Page closed"). 18:47:27 ugh, how do you do comments in LaTeX again? 18:47:34 % Poop 18:47:45 Or % Poop if you want 18:47:46 hmm, I was wondering if it was \comment{} 18:47:46 ... 18:47:49 Or % Poop if you want 18:47:51 ... 18:47:54 Or %% Poop if you want 18:47:59 Konversation does %% -> %... 18:48:04 yes 18:48:12 because % introduces escape codes 18:48:16 %Atime%A 18:48:22 %Atime%A 18:48:24 No it doesn't 18:48:25 hmm, although you can't do ctcps with it it seems 18:48:30 poop 18:48:30 %Bbold%B works 18:48:31 poop 18:48:35 but this channel is +c 18:48:36 poop 18:48:41 poop 18:48:52 ehird: heh, %I = tab = italics 18:48:56 Yeah. 18:49:02 read it yet ehird 18:49:04 (Konversation treats tab as toggle-italics, which can be annoying) 18:49:08 soupdragon: Read what? 18:49:12 ais523: that's the correct interpretation 18:49:12 that buke 18:49:14 ehird: If you're talking about GNU Emacs, (set-fringe-style x) takes a cons cell as x, with car as the left fringe size in pixels and cdr as the right. The textual modes ("left-only" and so on) seem to only work if you use it interactively as M-x set-fringe-style. 18:49:16 metamorphisi 18:49:19 although some clients use it as invert 18:49:21 soupdragon: no 18:49:24 fizzie: Yes, I figured that out. 18:49:25 foo!!! 18:49:27 Thanks anyway. 18:49:32 There should be a way to enable formatting but no colours. 18:49:44 I like italics and bold but not red or green. 18:51:00 The simplest Emacs Lisp function ever written: 18:51:03 (defun run-frink () 18:51:05 (interactive) 18:51:05 ehird: do you care enough to write a patch? 18:51:06 (comint-run "frink")) 18:51:16 ais523: What, to the ircd? 18:51:22 I mean for +c and the like. 18:51:23 oh, you mean in a channel? 18:51:29 There should be +½c. 18:51:33 I thought you meant to Konversation, to display only the colours you liked 18:51:37 Naw. 18:51:42 so you could allow, say, soothing lilac but not clashing orange 18:52:00 ais523: you should join #amend. :| 18:52:08 not while I'm busy 18:52:16 stupid Research Skills course, it's the PhD version of PSE 18:52:18 Hey, there's less talk in there than in here. :P 18:52:28 ais523: lol 18:52:45 -!- kar8nga has joined. 18:52:59 (for people outside the UK who don't know: PSE (sometimes PSHE) is a relatively useless subject (Personal Skills [and Health] education) that's mandatory in UK schools) 18:53:23 (and is generally considered a waste of time; the syllabus theoretically includes potentially interesting areas, but the lessons never cover them) 18:53:28 I don't speak Arabic. - لا أتكلم العربية - lā atakallamu al-ʿarabīyah 18:53:28 I swear skills is a backronym from sex. 18:53:45 No hablas Inglais or something. 18:53:48 ehird I voted alter why is it not called alter? 18:54:01 ehird: it mostly/entirely isn't even sex education 18:54:01 soupdragon: turns out polls take more than one sample :D 18:54:02 as you know 18:54:17 ehird: what was the final result? 18:54:23 ais523: You can't prove that they didn't create it just to avoid having a lesson named sex education. :P 18:54:28 3:3:1 18:54:46 polls are wrong 18:54:47 (Ørjan picked Other, but refused to specify.) 18:54:51 in primary school, before we had sex classes we got sealed brown envelopes to give to our parents 18:54:52 ais523: We have (in theory) this mandatory "introduction to postgraduate studies" course, which should be in the spring period... but the "course portal" website only speaks of the 2009 iteration, the actual course-enrollment-system doesn't find *anything* with the course code, and the preliminary schedules published before Christmas also have it completely missing. 18:54:54 literacy! numeracy! computer-literacy! 18:55:03 and three others which nobody ever remembers! 18:55:05 soupdragon: Well, since it was a draw I just picked the one I liked best. 18:55:11 and the classroom rumour was "oh i heard of this! this is PSE and it means personal sex education" 18:55:16 reading, riting, rithmetic, rogramming 18:55:17 half true 18:55:38 oh, working with others, improving own learning and performance, and problem solvings 18:55:44 Reeling and writhing, etc. 18:55:52 *problem solving 18:55:55 Values 18:55:59 we had a class on Values 18:56:26 with a capital V 18:56:26 the four R's 18:56:31 the four Rs* 18:56:34 most of our PSE lessons were just incomprehensible 18:56:47 there was one about a moon mission with a list of phrases to put into order 18:56:52 XD 18:56:55 to do with prioritisation, or something 18:57:02 also, about half were spent teaching us how to fill out UCAS forms 18:57:03 Are you sure it wasn't the LSD lesson? 18:57:14 Oh, or the TPS lesson. 18:57:18 which I suppose is really relevant to the school's results 18:57:22 so it's important to them 18:57:42 there were also a couple with an automated careers thing 18:57:53 where you answered an 100-question questionnaire and it tried to guess which job you'd end up in 18:58:13 I don't think it was all that reliable 18:58:20 what did it say for you? 18:58:35 also isn't that terribly demoralising 18:58:40 "I want to be an astronaut!" "You will be a bin man" 18:58:45 yes 18:58:52 ehird: computer games programmer, I think 18:58:52 marxchat 18:58:53 A bin man must be something related to binary. 18:58:57 ais523: Close enough. 18:59:06 ehird: yes, that was one of the closer ones 18:59:13 although the questions were things like 18:59:18 I remember someone else in my class was told that they should become a croupier 18:59:21 "i like being ordered around to kill people" 18:59:26 and my form teacher was supposed to be a gardnere 18:59:29 *gardener 18:59:30 "i like doing scientific experiments" 18:59:46 "I like being ordered around to kill people as part of scientific experiments" 18:59:52 we didn't get anything as firm as one thing, just a list of like 30 or so things 18:59:57 ais523, still "working"? 18:59:59 yes 19:00:09 ais523, nice multitasking :) 19:00:57 yay Frink accepts π as pi 19:01:19 what is Frink? 19:01:26 http://futureboy.us/frinkdocs/ 19:01:27 and why are you going on about it so much? 19:01:35 I'm just setting it up in Linux. 19:01:45 And tested that Compose worked with it. 19:01:54 frink seems way cool 19:02:02 it totally is. :| 19:03:42 DSL designed for physical calculations? 19:04:18 hmm, with hints of Mathematicaitis about it 19:04:25 although, I suppose that sells to its target market 19:04:42 It's not even remotely Mathematica-like. 19:04:53 It's symbolic, yes, and it uses [] for function application because f(x) is f*x. 19:04:55 it made me think of mathematica 19:04:56 (I'm the sort of person who wonders why it should come with a historical exchange rate database rather than, say, having it as a library on a CPAN-alike) 19:05:00 fwiw I don't program in either langauge 19:05:09 (that's what I mean by Mathematicaitis in this case) 19:05:17 ais523: Because it's a calculator, not a batch programming language. 19:05:28 It does have non-core libraries, anyway: http://futureboy.us/fsp/frinklibs.fsp 19:05:35 still, it feels wrong not having that data be separate 19:05:49 Only if you think about it as a batch programming language. 19:06:30 even as an interactive language 19:07:17 Anyway, it's not just useful for physical calculations: it's also good for abstract calculations, regexp processing, screen scraping, translation, generating graphics, making simple web pages that can do calculations, and also calling out to Java if you like that kind of thing. 19:07:34 ais523: see, when you say "historical exchange rates should be in a library", I see that as 19:07:39 "regexp processing should be in a library in Perl" 19:07:48 it isn't, because it's far more convenient and quick to access this way 19:07:54 which is the intended use 19:08:15 meh, you could even set it to load by default 19:08:29 is Frink batch-usable even if that isn't the intended use? 19:09:06 Yes. 19:09:33 It's not so much unintended as not the main use. 19:09:50 Anyway, I find it more convenient this way and I'm sure Alan Eliasen, the author, does too. 19:10:08 Frink++ for the Junkyard Wars reference, anyway 19:10:13 I used to love Scrapheap Challenge 19:10:25 and the US version wasn't as ruined as the US versions of most gameshows are 19:11:00 "fathoms water gravity barrel" is one of my favourite strings. 19:13:40 So if one meter is 200 million beardseconds, why aren't we counting in 100 million beardseconds? 19:14:48 ehird: what, exactly? 19:14:56 ? 19:15:37 I guess 100 million beardseconds is 1 hMbs (hecto-mega beardsecond.) :-D 19:15:49 ehird: as in, does 100 million beardseconds = 0.5m exactly, or approximately? 19:15:58 1 beardsecond := 5 nm 19:16:03 It's a novelty unit, not an actual measured thing. 19:16:18 I guessed it was a novelty unit 19:16:23 although presumably the beard has an actual purpose 19:16:30 The beard-second is a unit of length inspired by the light year, but used for extremely short distances such as those in nuclear physics. The beard-second is defined as the length an average beard grows in one second. Kemp Bennet Kolb defines the distance as exactly 100 Ångströms,[3] while Nordling and Österman's Physics Handbook has it half the size at 5 nanometers.[4] Google Calculator supports the beard-second for unit conversions using the latter 19:16:32 conversion factor.[5] 19:16:40 I see 5 nm most often. 19:17:15 -!- lament has joined. 19:17:27 So, the kilometer will be replaced with the khMbs. 19:17:31 The kilo-hecta-mega beardsecond! 19:17:50 aka the hecto-giga beardsecond 19:18:33 http://www.google.co.ck/search?q=432+beard+seconds+in+attoparsecs 19:18:34 NICE 19:19:15 432 beardseconds -> attoparsecs 19:19:17 0.000070000832656209624476 19:19:21 Just to re-inject some Frink fanboyism into the discussion. 19:19:32 (Admittedly I had to do beardsecond := 5 nm, but it defined the plural form for me automatically.) 19:19:43 cool 19:21:07 ehird: also, it gets commented on by Peter Norvig, which is also very cool 19:21:41 ais523, who is that 19:21:52 AnMaster: you are no longer welcome here → 19:22:15 ehird, hey, ais523 didn't know who jwz was 19:22:24 AnMaster: http://en.wikipedia.org/wiki/Peter_Norvig 19:22:39 what's so good about Norvig? 19:22:40 oh that guy at google 19:22:41 I didn't actually know he worked for NASA/Google, though 19:22:42 jwz is just a cool dude, not an excellent computer scientist 19:22:49 I knew of him from his research 19:22:55 I only read his PAIP book 19:23:14 ais523, which part of it? 19:23:36 AnMaster: it's all over the place 19:23:48 as in, randomly searching for research you just think "oh, it's Norvig again" 19:23:50 he's that good 19:24:14 what did he do?? 19:24:22 I can't remember ever coming across his work :/ 19:24:40 soupdragon: then you're working in the wrong area 19:24:48 what are should I be in 19:24:56 the first time I saw his work it was some minor AI result 19:25:08 I read his AI book PAIP 19:25:37 to learn Lisp 19:30:40 Grr, I really want to move these taskbar items. 19:32:21 ehird, hm? 19:32:24 reoder? 19:32:26 re-order* 19:32:33 Yes. 19:32:42 ehird, from what, to what? 19:33:12 I want to move a window entry. 19:33:25 right 19:33:47 ehird, as in, move it from alphabetical order to something else? 19:33:57 It's not alphabetical, it's in opening order. 19:34:00 I just want to move one entry, ffs. 19:34:06 I se 19:34:08 see* 19:34:19 ehird, never heard of that feature 19:34:20 can't you just drag them? that works in Gnome, I thought it worked in KDE too 19:34:27 I thought it did too 19:34:28 AnMaster: what???? 19:34:32 oh it does indeed 19:34:37 [ Firefox poop ] 19:34:39 Click, drag, drop. 19:34:41 Moved. 19:34:44 ehird, well in firefox yes 19:34:44 This is really, really standard stuff. 19:34:47 ... 19:34:49 -!- augur has joined. 19:34:50 never tried in taskbar under gnome 19:34:50 I MEANT A FIREFOX WINDOW 19:35:00 pretty sure it didn't work in the taskbar of KDE 19:35:03 on KDE 3.5 19:35:17 ehird, oh I thought you meant system task bar 19:35:21 ehird: only a couple of days ago I saw someone shouting at Microsoft for not implementing that until Win7 when every other common OS had done it for years 19:35:22 I did. 19:35:25 AnMaster: yes, system task bar 19:35:36 ais523, heh 19:38:56 ehird: "I want to be an astronaut!" "You will be a bin man" <<< if a kid who initially wanted to be an astronaut decides to change his mind after getting the results, he probably didn't want it enough for it to have been a possibility anyway. 19:39:21 well, some people become binmen, presumably they do it through choice 19:39:42 oklofok good point !!! 19:39:44 not that it defeats your point, just attacking your example, for no reason 19:39:47 oklofok: no shit 19:39:49 it was a joke 19:40:09 ehird: um, that's no reason not to take it seriously 19:40:12 especially in /this/ channel 19:40:17 half the on-topic stuff we discuss is jokes 19:40:24 bah :P 19:41:47 nothing i see is either a joke or not, everything will be considered serious, and every answer will be considered a serious answer, while nothing at all is taken seriously at the same time. 19:42:25 this is what happens when environments are separated from the outer game, but made to look like it 19:42:38 oh my god the trees are beautiful 19:42:43 i was just outside again 19:42:47 and like... snow 19:42:53 and trees..... wow 19:43:03 the canal's nice here, it's frozen over 19:43:03 my head hurts 19:43:06 which is pretty rare 19:43:11 should read some measure theory, exam tomorrow 19:43:17 woah measure theory 19:43:33 frozen masses of water look sorta boring usually 19:43:38 "woah"? 19:43:50 woah 19:43:53 woah. 19:44:27 woajhhhhh 19:46:29 i already took the exam for the real analysis course following the measure theory course, and it wasn't too hard, by some logic this is probably even simpler. 19:46:57 i might even sleep a few hours tonight 19:47:02 I would have thought real analysis is easier than measure theory 19:47:29 hey kiddles 19:47:33 soupdragon: 19:47:35 no : 19:47:43 hello 19:48:06 our MT course was basically about lebesque and a few other measures, measurable functions, and basic results about lebesque integration 19:48:14 Lesbianesque. (What?) 19:48:29 the RA course builds a lot of structures over the framework 19:49:04 I want to write a spreadsheet program, but: 19:49:10 - it'd be best as a mode in my editor 19:49:13 - my editor isn't done yet. 19:49:14 but writing programs is annoying 19:49:14 Hmph. 19:49:15 i know 19:49:23 oklofok: Thankfully not :P 19:50:13 well it's a bit annoying! (?) 19:50:21 I wish kioslaves worked with Firefox so I could use man:/ :( 19:50:24 if you master all this stuff you can probably catch up with Terry Tao 19:50:44 ehird: is there an extension for that? 19:50:57 ais523: Probably not. 19:51:12 soupdragon: yes, the advanced courses of our university are so hard mastering their content makes you a supergenius 19:51:13 What would work is a KIOSlave FUSE FS. 19:51:38 Then you could rewrite it to file:///mnt/kioslaves/man:(1) 19:51:42 yep, apparently not 19:51:49 you'd expect someone to have written one by now 19:51:56 It's impossible. 19:51:56 I wish kioslaves worked with Firefox so I could use man:/ :( <-- I thought you hated firefox? 19:52:01 Extensions are just JavaScript. 19:52:01 saying it was shit and such 19:52:05 AnMaster: It is. 19:52:22 ehird: no they aren't, they can get into the internals too 19:52:25 e.g. vimperator 19:52:26 yeah ff is the shit 19:52:28 Extensions are just JavaScript. <-- in firefox? No you can load *.so 19:52:34 ehird: http://wiki.kde.org/tiki-index.php?page=KIO+Fuse+Gateway 19:52:36 ehird, then why use it 19:52:36 AnMaster: That's a plugin, not an extension. 19:52:44 And Netscape API plugins are just for embedded content. 19:52:48 ... Argh. 19:52:51 Dead link. 19:52:59 ais523: That's not getting into the internals. 19:53:06 Firefox's UI is written in XUL and JavaScript. 19:53:13 AnMaster: That's a plugin, not an extension. <-- no, you can load *.so in extensions too. At least for thunderbird. Enigmail does it 19:53:13 So of course JavaScript extensions can access it. 19:53:15 you can mess with the XUL, at least 19:53:20 I would be surprised if you can't in firefox too 19:53:20 * oklofok goes master stuff 19:53:22 -> 19:53:48 Anyway, hooking into Firefox's actual URL-loading code and routing it to KDE sounds unfun. 19:53:56 As in "huge pain in the arse" unfun. 19:54:31 ehird: http://wiki.kde.org/tiki-index.php?page=KIO+Fuse+Gateway <-- 404 19:54:35 oh said already 19:57:17 They should just replace KDE with fullscreen Konqueror. It can split the screen, it can browse the web, it can manage files, it can run a terminal, it can do remote file management, it can look at audio CDs like encoded files, it can install packages... 19:57:23 I see no issue with this! 19:57:55 reminds me of Emacs 19:59:14 augur, I am going to try and find a usage of the word 'and' in the non-conjunctive sense by searching the net. 20:00:02 -!- lieuwe has joined. 20:00:44 * ehird takes a deep breath, installs Flash. 20:00:49 in underload, does the ^ operator insert the item into the program, or replace the next op, or does it truncate the program? 20:00:57 soupdragon: what you might want to consider is situations in which "X and Y do V" does not imply "X does V and Y does V" 20:00:58 Insert the item into the program. 20:01:04 lieuwe: You can think of (...) as a function. 20:01:05 ^ is call. 20:01:11 Or (...) is a string and ^ is eval. 20:01:30 ehird: ah, so it inserts and then just continues with the rest off the program... 20:02:08 Of course, (...) differs from functions in most languages because you can print their contents and concatenate them (which is actually function composition - fun(f) return (fun(g) return (fun(x) return f(g(x)))) - but whatever). 20:02:22 lieuwe: Yeah; otherwise, complex control flow would be impossible. 20:02:27 ...at least, I think so. ais523? 20:02:55 lieuwe: basically, imagine characters removed from the program as they're executed 20:03:00 because there's no way to go back to them anyway 20:03:04 No, I meant 20:03:17 does the s operator print a newline? 20:03:19 ^ inserts the top stack element just after the current IP, without overwriting anything, it's an insert 20:03:20 Is Underload turing-complete if ^ is "execute the top element on the stack, then quit"? 20:03:22 lieuwe: No. 20:03:24 lieuwe: no, S doesn't 20:03:27 you can write ( 20:03:28 )S 20:03:30 to print a newline 20:03:35 ehird: ah, ok, thnx 20:03:46 ehird: I think so, because that's Muriel's control-flow operator 20:03:52 but it would be a different sort of language 20:04:29 Well, let's try and write programs in it! 20:04:59 Hmm. I just realised I don't have sound. 20:05:20 Fixed. 20:05:22 ais523: but if ^ truncates the program, it doesn't mean it quits there, the stack thingy could write to the program,(but that would be hard to program in :-p) 20:05:42 ^ is the only way to write to the program, though 20:05:55 you can see it in several different ways 20:06:03 truncating ^ 20:06:04 a function call, an eval, or replacing the ^ with the top stack element 20:06:05 hmm 20:06:07 * ehird writes an infinte loop 20:06:09 *infinite loop 20:06:10 (:^):^ 20:06:12 ehird: (:^):^ 20:06:12 Well that was easy 20:06:13 No change there 20:06:30 Gah, Flash on Linux is desynchronised from the audio as always. 20:06:53 ais523: hmm... the problem is that there's not really any simple-but-non-trivial Underload programs 20:07:05 because they're all either trivial, or mind-boggling 20:07:16 the fibonacci's pretty simple 20:07:20 well, actually 20:07:22 I think we can write 20:07:26 (x)^y 20:07:28 as 20:07:41 !ul (()(*))(~:^:S*a~^a~!~*~:(/)S^):^ 20:07:44 (x^)(y)~^ 20:07:45 No? 20:07:48 ^ul (()(*))(~:^:S*a~^a~!~*~:(/)S^):^ 20:07:49 */*/**/***/*****/********/*************/*********************/**********************************/*******************************************************/*****************************************************************************************/********************************************************************************* ...too much output! 20:07:55 Although that'd make (!)^foo problematic. 20:07:56 forgot EgoBot didn't do Underload... 20:08:00 oh, wait! 20:08:02 It's obvious 20:08:03 (x)^y 20:08:05 -> 20:08:08 (x)(y)*^ 20:08:16 yes 20:08:32 how do you handle (a^b)^c, though? 20:09:01 (a(b)*(c)*^)^ 20:09:19 by doing these rewrites: 20:09:22 (a^b)^c 20:09:31 (a(b)*^)^c 20:09:37 hmm, I'm not sure if that works if b manipulates the stack 20:09:38 (a(b)*^)(c)*^ 20:09:39 oh 20:09:42 There we go 20:09:46 Easy 20:09:58 ehird: easy, but wrong 20:10:13 executing that gives (a(b)*^c)^ 20:10:24 = a(b)*^c 20:10:40 and the c never runs because it's after an ^ 20:10:47 ah, of course 20:10:50 Let me continue the rewriting then 20:10:54 (a(b)*^)(c)*^ 20:11:01 (a(b)*^c)^ 20:11:05 (a(b)*(c)*^)^ 20:11:16 because (f)(g)* = (fg) 20:11:30 and then we just apply the regular a^b = a(b)*^ rule 20:11:36 what does (a)(^)*^b become? 20:11:47 (a)(^)*^b 20:11:54 (a)(^)*(b)*^ 20:11:59 (a^b)^ 20:12:04 ehird: you're evaluating the program, though 20:12:05 (a(b)*^)^ 20:12:12 ais523: This isn't a machine translation 20:12:15 This is for humans to do 20:12:19 is the S command always uppercase?(does it HAVE to be, or is lowercase also fine?) 20:12:25 ehird: but I mean, that process could go into an infinite loop 20:12:27 lieuwe: has to be uppercase 20:12:30 and a has to be lowercase 20:12:46 ais523: So apply human ingenuity. 20:12:48 ais523: :-p 20:12:59 For most programs, it should be a relatively simple translation. 20:13:21 ehird: I'm pretty sure it is TC, but that this isn't the way to go about a proof 20:14:22 I wasn't trying to prove it turing-complete. 20:14:33 I was trying to prove that it is quite a trivial variant of Underload for most programs. 20:14:48 I wouldn't call having to execute most of the program to compile a trivial variant 20:15:00 that's like, saying that replacing a program with its output is a trivial variant 20:16:08 It's a trivial variant FOR HUMANS TO TRANSLATE MOST PROGRAMS TO. 20:16:12 Jesus christ. 20:16:37 I wish this mouse's left button was as easy to press as its right button. 20:17:50 http://web11.twitpic.com/img/56256770-1eafd0a10499dc58601394e9fefa9c57.4b4a35c3-scaled.jpg Haskell's Tower of Babel 20:18:08 s/$/./ 20:18:10 ehird: I don't see how it's trivial at all, for large programs 20:18:35 almost done my implementation, only got ( and ) left to do... 20:20:08 hmm 20:20:20 Compose -> is → and Compose <- is ←, so what should up and down arrow be? 20:20:26 ^| and v|? 20:21:21 ehird: heh 20:22:04 {-# LANGUAGE IncomprehensibleTypes #-} 20:22:24 strangely, altgr seems to produce ←↓→ but not the other arrow 20:22:41 oh, crap, found something stupid in my implementation, it pushes the raw ops on the stack, not the python equivalent, darnit... ah, well, i'll continue tomorow... 20:22:44 -!- lieuwe has quit ("Page closed"). 20:22:57 ew, get a real client 20:23:13 if he pushes the python equivalent he's going to handily break S :) 20:23:17 the pitfalls of underload 20:23:17 I think lieuwe discovered the needing-to-store-two-representations issue 20:23:25 It's not an issue for interpreters. 20:23:42 it is in a way, just they use the same representation for both 20:24:16 So you have a two-representation problem with only one representation. 20:24:19 Uh-huh. 20:24:41 how easy is it to analyse to see if only the string meaning or only the code meaning are needed? 20:24:47 (in some cases at least) 20:25:22 SimonRC: needs string meaning = calls S while it is on top of stack 20:25:30 SimonRC: really difficult, in general 20:25:34 needs code meaning = calls ^ while it is on top of stack 20:25:42 "it" also includes being concatenated with another function 20:25:52 = halting problem in the purest sense 20:26:12 aye 20:26:50 you might be able to trace control flow to rule out some common cases 20:27:32 wtf, my compose doesn't have Compose - - = em-dash, either 20:27:36 * ehird makes note to add that 20:27:40 "I used to be a Zen Buddhist, and myself used to search endlessly for a "bigger picture". Then I got hungry, had a burrito, and was enlightened." --reddit 20:28:26 any opinions on compose combos for up and down arrow? 20:28:34 ^| and v| are ugly imo :/ 20:28:53 ehird: use the arrow keys? 20:28:53 I have been reading about some of factor's analysis. There was an almond-bread example that looked like over-HOFed stuff from Joy but translated into nice efficient machine code. Types were inferred all over the place and all the HOF-based control structures turned into loops and shit 20:29:12 Factor's compiler is amazing. 20:29:15 aye 20:29:36 it does have an advantage over Smalltalk though 20:29:41 binding is a bit later 20:29:52 ehird: you could probably do that with Underload too 20:30:03 SimonRC:, you mean. 20:30:09 also, arrow keys could work, but combined with what? 20:30:11 | up arrow? 20:30:17 that's less efficient to type than | ^ 20:30:21 just the up arrow? 20:30:26 This is Compose. 20:30:27 or can you not have a one-char compose? 20:30:28 It takes two keys. 20:30:29 most words have to be declared before use, unlike smalltalk/ruby 20:30:35 ehird: always exactly two? ugh 20:30:41 ais523: Well, no, N. 20:30:50 But if you have x y, you can't have multi_key x 20:30:52 or multi_key x y z 20:30:57 for obvious reasons 20:31:00 yep 20:31:06 how about composing the up-arrow with itself? 20:31:12 are you really going to use the arrow keys as the first part of a compose, though? 20:31:16 SimonRC: I would expect that to give me Knuth's arrow. 20:31:22 ais523: Perhaps someone else already did. 20:31:26 is that not an up arrow? 20:31:32 Two up arrows. 20:31:38 Well. 20:31:42 I guess that's just up arrow up arrow 20:31:52 I meant, is Knuth's arrow different from the up arrow glyph you want? 20:31:53 not for horizontal arrows 20:32:00 as you can't stack vertically in regular text 20:32:04 Unicode, you disappoint me 20:32:08 I'd put Knuth arrow on ^^, because it is related to exponentiation 20:32:12 Unicode, I am disappoint. 20:32:32 you disappoint me with a literal lack of points 20:32:33 codepoints, that is 20:32:35 unless it isn't what I think it is 20:33:39 Left, right, up, down, adding to the compose file la la la 20:34:08 UUDDLRLRBASS 20:34:27 So if mdash is -- what's endash? :P 20:34:30 - space? 20:34:32 --- 20:34:40 endash is SHORTER. 20:34:43 and besides, that's impossible 20:34:44 and I know what you said about prefixes 20:34:44 oh 20:34:47 if you have xy you can't have xyz :P 20:34:49 mdash is ---, ndash is -- 20:34:55 — and – 20:35:03 (Completely identical in this monospaced font) 20:35:09 look pretty differnt to me 20:35:14 Deewiant: I'm trying to insert the Unicode character with the Compose key, you dolt 20:35:15 but my ms are wider than my ns 20:35:19 so obviously I can't use the Unicode chars directly 20:35:26 ehird: I sort-of assumed compose would work like a modifier key 20:35:26 ehird: Meh, altgr :-P 20:35:32 you hold it down while you type what to compose, then let go 20:36:08 how about m- and n- 20:36:12 jsut how they sound 20:36:29 -!- ehird has quit (Remote closed the connection). 20:37:10 -!- ehird has joined. 20:37:48 did you get that? 20:38:18 compose should reflect the structure of the letters 20:38:25 i.e. "o -> ö 20:38:27 'o -> ó 20:38:31 `o -> ò 20:38:34 No output. 20:38:36 ss -> ß 20:38:46 Sußman 20:38:47 that's just to make it easier to remember 20:38:51 http://www.fileformat.info/info/unicode/char/search.htm?q=less%20than&preview=entity ;; what a useless set of results 20:39:02 ais523: I consider it a good design principle. 20:39:24 Incidentally, I actually saw KDE refer to a daemon as a dæmon, and I facepalmed. 20:40:28 why? 20:40:59 Because the Unix term is daemon. 20:41:31 arguably those are the same thing, though 20:41:45 as in, different graphical representations of the same word 20:41:50 æ is just kerning 20:41:54 I disagræ. 20:42:23 -!- FireFly has quit ("Leaving"). 20:42:55 -!- FireFly has joined. 20:45:48 anyone know of a unicode browsing app? 20:48:25 -!- lament_ has joined. 20:49:40 gnome-character-map ? 20:49:51 #define lambda(ret, body, ...) ({ ret __LAMBDA__ (__VA_ARGS__) { body }; __LAMBDA__; }) 20:49:52 Well, preferably not Gnome. 20:49:59 ... That kinda-sorta works. 20:50:17 That's the best you can do? 20:50:19 Behold: 20:51:08 * pikhq is anticipating Oleg's lambda. Which, though very much lambda, is not C. :P 20:51:09 #define lambda(params, ...) ({ __typeof__(({ __VA_ARGS__; }))__LAMBDA__ params { return ({ __VA_ARGS__; }); }; __LAMBDA__; }) 20:51:28 -!- lament has quit (Nick collision from services.). 20:51:28 -!- lament_ has changed nick to lament. 20:51:30 Okay, that's a good point. 20:51:33 lambda((int x), x*2) 20:52:08 -!- soupdragon has quit (Nick collision from services.). 20:52:25 -!- soupdragon has joined. 20:53:42 Bah. 20:53:55 Anyone know what the codepoints of <, >, ^, and | are? 20:54:00 *^ and 20:54:19 That doesn't work; __typeof__ strongly dislikes unknown variables... 20:54:34 pikhq: Oh, does it not? 20:54:54 #define lambda(params, ...) ({ __typeof__(lambda(params, ## __VA_ARGS__)) __LAMBDA__ params { return ({ __VA_ARGS__; }); }; __LAMBDA__; }) 20:54:57 XD 20:55:17 Thar. 20:55:22 pikhq, what is __LAMBDA__ defined as? 20:55:26 Nothing. 20:55:28 AnMaster: It isn't. 20:55:29 That defines __LAMBDA__. 20:55:47 It's just a name that's not likely to be in use. 20:56:00 oh ffs, gnu extensions 20:56:14 pikhq: Hey, if we restrict it to one parameter, we can do the typeof 20:56:17 By doing params; body 20:56:31 ehird: XD 20:56:40 ehird: And then, it's curry. Delicious curry. 20:56:52 ehird: I thought you couldn't pass lambdas like that out of the block they were defined in 20:57:04 ais523: No, it's out of the function. 20:57:05 I think. 20:57:07 at least in gcc 20:57:08 And you can pass them upwards. 20:57:11 Just not downwards. 20:57:12 pikhq, as far as I can see it defines lambda() not __LAMBDA__, and what is __LAMBDA__ good for? 20:57:22 ehird: that isn't passing it out, you're still inside the block 20:57:33 AnMaster: *sigh* 20:57:34 Learn C. 20:57:39 AnMaster: __LAMBDA__ is not defined in the C preprocessor. 20:57:46 ehird, I know C. Just not GNU statement crap 20:57:55 Nothing to do with GNU statement crap. 20:57:58 or typeof 20:57:59 You fail at the pre-processor. 20:58:05 pikhq's didn't use typeof. 20:58:09 pikhq, so why do you want it undefined 20:58:15 >_< 20:58:33 ({ }) is a GNU extension 20:58:36 In mine, __LAMBDA__ is defined as a function of type ret(*)(__VA_ARGS__). 20:58:37 as is nested functions 20:59:02 The the statement: ret __LAMBDA__(__VA_ARGS__) {body}; 20:59:06 s/The/By/ 20:59:36 That's a function declaration. The following __LAMBDA__ makes the result of ({ }) be the address to that function. 20:59:39 indeed. And I never bothered to learn any gnu extension apart from __attribute__, Because usually you can still compile the code with __attribute__ on other compilers (with relevant pre-processor code to just make it mean nothing) 20:59:47 while for other ones you would have to write the code twice 20:59:53 once for gnu and once for portable 20:59:54 The part you failed at is not a GNU extension. 21:00:41 pikhq, nasty, upper case name as a function name 21:01:11 AnMaster: It never escapes the ({ }) block. 21:01:29 and what on earth are the semantics for that now again 21:01:32 ehird: the part he may be failing at is defining functions inside other functions, which /is/ a GNU extension 21:01:35 not that I will remember it tomorrow 21:01:43 ais523, oh right that crap 21:01:44 AnMaster: same as for do {} in Perl 21:01:54 messes up with non-executable stacks too 21:01:59 AnMaster: Statement expression. 21:02:03 due to the trampoline fail 21:02:39 A similar thing can be done in C++. 21:02:50 Unlike this, the lambda macro in C++ is valid C++. 21:03:11 pikhq, which I don't really know much about, deciding to stop messing with C++ soon after I saw what templates could do 21:04:01 wow, that language is powerful, I must stop using it! 21:04:33 ais523, no, it was the messyness 21:05:17 ais523, like, not being able to place the methods of a template in a *.c (functions won't be there when template is instantiated in another file 21:05:18 and so on 21:05:40 probably it might work if you create dummy instantiation of those in that source file 21:05:51 but that is just ugly 21:06:23 ais523, in fact, rather than rant here I just refer you to the C++ FQA 21:06:31 read it already 21:07:56 also, horribly long compile time. I have yet to see any C++ compiler that manages at the speed of even gcc. And gcc is hardly fast. 21:08:29 and anything approaching the speed of tcc for c++? I'll believe it when I see it 21:09:42 (I really prefer being able to test often when developing. With no optimisation it should IMO be fast to compile. Oh also please stop abusing operator overloading,) 21:11:26 maybe someone could invent incremental compilation 21:11:30 so it recompiles only what's changed? 21:11:48 doing it at file-level is too coarse for C++, is the issue 21:13:33 -!- coppro has joined. 21:15:00 hi 21:15:23 ais523, well, I haven't seen that done for less than file level for C++. Well precompiled headers, but when I tried that I couldn't get it to work 21:15:44 think I managed to trigger ICE in gcc. That was during 4.1 or so, so it may be better nowdays 21:15:46 AnMaster: really? it's pretty easy 21:15:48 gcc header.h 21:16:00 "ICE"? 21:16:14 SimonRC, ... Internal Compiler Error 21:16:30 Sheesh, that guy doesn't know a jargon acronym I used! 21:16:40 I must express my shock with an ellipsis. 21:17:01 ais523, also it didn't work for more than one header. Nor if it wasn't the first header included 21:17:15 pikhq: I have a working lambda with __typeof__ 21:17:22 or, if you defined anything before including it (in the source file) 21:18:04 pikhq: http://sprunge.us/deGW 21:19:45 pikhq: http://sprunge.us/RTgd This version handles multiple statements in the body 21:19:52 I don't know how to fix the one-parameter-only issue, though. 21:20:15 For the lulz, here's how it desugars: 21:20:17 upto(10, ({ __typeof__( ({ int i; (void)printf("%d\n", i); }) ) __LAMBDA__(int i) { return ({ (void)printf("%d\n", i); }); }; __LAMBDA__; })); 21:24:18 fn(int i, (void)printf("%d\n", i)) could also be written as fn(int i, printf("%d\n", i); return) :-D 21:24:56 the multi-args problem can be "solved" with more parens 21:25:03 Nope. 21:25:10 Because __typeof__( ({ param; __VA_ARGS__; }) ) 21:25:16 param -> "int i;" 21:25:17 but if 21:25:22 params; -> "(int i, int j);" 21:25:25 that wouldn't work as a declaration 21:25:26 (would it?) 21:25:32 hm 21:25:42 that's... funky 21:26:19 how about "fn(int i; char j, ... )" 21:26:22 (ew) 21:26:28 ehird: Solution: K&R C params. 21:26:39 http://sprunge.us/IOdM 21:26:41 why are you putting the decls at the top of the block rather than doing typeof on the function itself anyway? 21:26:43 Advanced lambdaology! 21:26:58 SimonRC: erm 21:27:02 ah, I see now 21:27:04 does __typeof__(x) x = ... WORK? 21:27:13 SimonRC: fn(int i; int j, ...) is unworkable because we need to put it in the function params 21:27:42 oh bugger yes 21:27:54 answer: no, __typeof__(__LAMBDA__) __LAMBDA__(...) doesn't work 21:28:03 well I see that now 21:28:07 __typeof__( ({param_decl; __VA_ARGS__}) ) fn(params) param_decl 21:28:31 pikhq: Does GNU C99 support K&R parameters? 21:29:00 Anyway, you have to specify parameters like that in your actual FN usage that way. 21:29:05 Which is lame-butt. 21:29:05 you just need C1X-style type inference(!) 21:29:40 ehird: Yes. 21:29:44 We could use X-Macros w/ PARAMS(PARAM(int,i),...) to generate a file with the prototype and a file with the argument list. 21:29:50 Then #include that. :-D 21:30:13 Anyway, who needs multiple parameters when you have currying? 21:30:19 ehird: It even works with -std=c99 -pedantic 21:31:13 * ehird proceeds to implement the lambda calculus standard library in C. 21:31:19 Wait, no. 21:31:27 We can't even do currying. 21:31:34 Because you can't return a nested function. 21:31:39 They expire if you shove 'em down the stack. 21:32:13 That's the main reason for Apple's blocks having explicit copying for them, yeah... 21:32:29 I invoke Greenspun's Tenth Law and implement R5RS Scheme. 21:32:45 *Tenth Rule 21:32:54 Oh, wait, the Rule is for Common Lisp only. 21:32:57 Of course, you *could* implement a (stupid) copying scheme. 21:32:59 what were the other 9 rules? 21:33:23 also, I want to know which language Common Lisp is a badly designed implementation of half of 21:33:29 they weren't 21:33:42 ais523: itself 21:33:48 Just make sure the function ends with: { int end_func = UINT_MAX; } 21:33:53 Yes, Morris's Corollary is "...including Common Lisp." 21:33:59 The rule was written sometime around 1993 by Philip Greenspun. Although it is known as his tenth rule, there are in fact no preceding rules, only the tenth. The reason for this according to Greenspun: "Sorry, Han-Wen, but there aren't 9 preceding laws. I was just trying to give the rule a memorable name."[3] 21:34:03 And grep for UINT_MAX in your lambda copying function. 21:34:12 pikhq: O_O 21:34:37 ehird: ... Did I happen to mention that this is almost sure to break? 21:34:55 Oh, make it volatile. Less likely to break. 21:34:56 ("Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can." --Zawinski's Law of Software Envelopment) 21:35:10 -!- oerjan has joined. 21:36:44 s/read mail/post to twitter/ nowadays 21:37:05 Talking to oerjan makes me experience synchronicity or something 21:37:12 well, naturally. also, what? 21:37:53 what's ^'s codepoint? 21:38:03 oerjan: What to call a house's crawl space was being discussed earlier 21:38:18 ehird: in hex? 21:38:30 Yes. 21:38:31 "man ascii" says its 5e 21:38:34 *it's 21:38:38 Thanks. 21:38:40 `c printf("%x",'^'); 21:38:41 No output. 21:38:44 * oerjan doesn't recall that discussion. or know what a crawl space is. i guess i'll find out when i get to reddit. 21:38:50 !c printf("%x",'^'); 21:38:53 5e 21:38:57 helps to get the right bot... 21:38:57 oerjan: It was in here. 21:39:17 ^| for up arrow, but v| or |v for down arrow? 21:39:25 how does !c work? 21:39:27 pikhq: http://sprunge.us/RTgd This version handles multiple statements in the body <-- did I actually manage to convince you to use something that I recommended? 21:39:39 SimonRC: compiles and runs C, I think, adding an appropriate wrapper if necessary 21:39:42 AnMaster: No? 21:39:50 !c int main(void) { puts("Hello, world!"); } 21:39:59 ehird, well I'm pretty sure it was me who recommended that pastebin to you 21:39:59 !c puts("poop!") 21:40:00 poop! 21:40:03 ais523: massive security hole? 21:40:06 AnMaster: No, I told you about it. 21:40:08 SimonRC: plash'd. 21:40:11 Go on; try and break it. 21:40:14 God knows we have. 21:40:20 !c *NULL 21:40:27 ok 21:40:29 broke it 21:40:30 !!! 21:40:40 soupdragon: just no output 21:40:45 Kinda hard to break Plash. 21:40:53 that's just one interpretation ais :p 21:40:57 !c int main(void) { for(;;); return 0 } 21:40:58 Does not compile. 21:41:00 !c int main(void) { for(;;); return 0; } 21:41:03 oerjan, hi 21:41:04 !c printf("a"); printf("%d",*(int*)NULL); printf("b"); 21:41:09 ./interps/gcccomp/gcccomp: line 52: 24519 Segmentation fault /tmp/compiled.$$ 21:41:27 hi AnMaster 21:41:28 If you manage to break out of Plash's sandboxed libc, you find yourself in an empty chroot. 21:41:36 !c int main(void) { for(;;){malloc(99999); return 0; } 21:41:37 Does not compile. 21:41:44 With literally nothing but your program and ld. 21:41:44 SimonRC: unmatched braces 21:41:46 !c int main(void) { for(;;){malloc(9999);}; return 0; } 21:41:53 oerjan, I do have to say the annotation today was quite nice 21:41:55 v| or |v for down arrow? any opinions? 21:41:58 that'll just be an infinite loop that silently terminates after a bit 21:41:59 ehird: both 21:42:02 Alright 21:42:04 so you don't have to remember which 21:42:17 shouldn't timeouts give a message? 21:42:19 !c int main(void) { for(;;){fork();}; return 0; } 21:42:30 !c for(;;) printf("x"); 21:42:36 !c puts("POOP") 21:42:39 POOP 21:42:39 !c puts("POOP"); 21:42:41 * SimonRC is seeing what messages all the common stuff gives 21:42:42 POOP 21:42:50 !ps 21:43:18 hmm 21:44:13 ":39:53 < ehird> Go on; try and break it." 21:44:17 hmmmmmmmmmmmmmmm 21:44:39 !c for(;;) puts("beep"); 21:44:40 beep 21:44:47 !c for(;;) puts("beep"); 21:44:48 beep 21:44:52 huh 21:45:00 It DCCs you the rest of the output. 21:45:13 ehird: oh this will be fun 21:45:43 Plash is well-tested, mature open-source software. Your chance of breaking it via an IRC bot is extremely low. 21:45:53 true 21:45:59 "* SimonRC is seeing what messages all the common stuff gives" 21:46:00 Even if you do, your chance of breaking out of the empty chroot you will find yourself in is extremely low too. 21:46:22 geordi has some pretty crazy sandboxing too 21:46:35 for those of you who have used geordi 21:46:46 SimonRC: Here's the vector of attack I would suggest: Make it download (it has functionality to do this) a statically-linked executable. Plash modifies the dynamically-linked glibc. 21:46:53 SimonRC, also static binaries = no luck 21:46:54 Then, try and break out through syscalls. 21:46:56 I tried that in plash 21:47:04 it worked up to a point 21:47:20 Though, then you need to hope for a kernel bug. 21:47:23 !c for(int i = 1; i; i++) printf("%d", i); 21:47:36 pikhq: No, just kernel functionality which Plash doesn't want you using. 21:47:48 SimonRC, since it runs the process in an empty chroot with a preloaded libc replacement that calls a server outside the chroot for file IO and such... 21:47:55 Admittedly, you then need a kernel exploit for the chroot. 21:48:03 SimonRC, thus, static binary can't do anything 21:48:13 * ehird Alt+SysRq+K to reload .XCompose 21:48:17 -!- ehird has quit (Remote closed the connection). 21:48:32 I did try direct syscalls 21:48:54 hmm, I can't get it to spam me now 21:48:57 -!- ehird has joined. 21:48:59 !c for(int i = 1; i; i++) printf("%d\n", i); 21:49:02 1 21:49:06 Bah; its unworking is present. 21:49:06 Plash could start using ptrace for its sandboxing. 21:49:10 aha, needed a \n 21:49:13 ompose - -? No luck. 21:49:14 And then have direct control over the system calls. 21:49:15 ehird, I do believe you could do mischeif with sockets though 21:49:22 wouldn't allow break out 21:49:27 Oh! 21:49:30 but direct syscalls to directly work on sockets 21:49:30 gives up after 3500 lines 21:49:32 could be fun 21:49:56 Plash could start using ptrace for its sandboxing. <-- planned feature iirc. And then all hope is lost 21:50:05 we are assuming we run arbitrary machine code here, right? 21:50:10 SimonRC: You can. 21:50:12 !asm 21:50:17 You can also do !asm ...url... 21:50:19 or !c ...url... 21:50:23 !c char* a="!c char*a =|%s%c%s%c%s|; char* c=strdup(a); for(char *b=a; *b;) if(*b++=='|') b[-1]=0; printf(a+12,a,34,c,34,a+23);"; char* c=strdup(a); for(char *b=a; *b;) if(*b++=='|') b[-1]=0; printf(a+12,a,34,c,34,a+23); 21:50:25 ./interps/gcccomp/gcccomp: line 52: 25004 Segmentation fault /tmp/compiled.$$ 21:50:28 whoops 21:50:31 ais523, what? 21:50:38 how did you manage that 21:50:40 SimonRC: Not just "assuming". That's what Ptrace does. 21:50:53 ais523, does the compiler crash locally on that for you? 21:50:56 probably 21:51:00 It runs arbitrary machine code in a very safe way. 21:51:10 # Dashes 21:51:12 : "–" U2013 # EN DASH 21:51:14 : "—" U2014 # EM DASH 21:51:15 Shoulda known it already had it. 21:51:17 – 21:51:19 — 21:51:28 !c char* a="!c char*a =@%s%c%s%c%s@; char* c=strdup(a); for(char *b=a; *b;) if(*b++==64) b[-1]=0; printf(a+12,a,34,c,34,a+23);"; char* c=strdup(a); for(char *b=a; *b;) if(*b++==64) b[-1]=0; printf(a+12,a,34,c,34,a+23); 21:51:29 ./interps/gcccomp/gcccomp: line 52: 25053 Segmentation fault /tmp/compiled.$$ 21:51:34 ais523: what are you trying to do? 21:51:34 that fix is needed, at least 21:51:37 ehird: quine 21:51:41 heh 21:51:46 ais523, you should file a bug if that happens outside plash 21:51:54 against what? 21:52:06 oh not gcc? 21:52:09 -!- ehird has quit (Remote closed the connection). 21:52:09 ais523, misread the error 21:52:18 ais523, thought it was gcc itself that segfaulted 21:52:50 -!- ehird has joined. 21:53:03 ←→↑↓ 21:53:05 pikhq, anyway it doesn't currently use ptrace afaik 21:53:10 I wonder what I'd do for the diagonals. 21:53:19 pikhq, also I wonder how threads interact with this. 21:53:27 as in, pthreads 21:53:32 L/ \J r\ /7 ? 21:53:35 ehird: Do you know of any way to get an alt-code-like setp on X? 21:53:37 *setup 21:53:37 anyone up for writing a short pthreads test program? 21:53:40 I guess -^ for upleft, ^- for upright, v- for downleft and -v for downright. 21:53:44 coppro: alt-code-like? 21:53:52 where you type in a digit sequence 21:53:53 or compose-uparrow-rightarrow ? 21:53:59 SimonRC: can't do that, can you? 21:54:02 in my case, I'd just want the Unicode codepoint 21:54:03 dunno 21:54:05 coppro: Ah. 21:54:10 doesn't even compile, locally 21:54:10 coppro: Don't; Compose is far superior. ;-) 21:54:17 ehird: But less generic 21:54:21 and not mutually exclusive either 21:54:43 Look in System Settings → Region & Language → Keyboard Layout → Advanced 21:54:47 There might be something there. 21:54:51 s/Advanced$/Advanced./ 21:55:18 "Key sequence to kill the X server: [ ] Control + Alt + Backspace" 21:55:21 A GUI for everything! 21:55:37 heh 21:55:37 coppro: Nope, nothing there. 21:55:52 coppro: You could generate a Compose file with every codepoint. 21:55:59 so lets see 21:56:04 It'd be gigantic and X11 would take about five years to start, but it'd work. 21:56:25 yeah :( 22:00:10 ehird, downside of compose: no key repeat 22:00:10 !c char a[]="!c char a[]=@%s%c%s%c%s@; char* c=strdup(a); for(char *b=a; *b;) if(*b++==64) b[-1]=0; printf(a+13,a,34,c,34,a+24);"; char* c=strdup(a); for(char *b=a; *b;) if(*b++==64) b[-1]=0; printf(a+13,a,34,c,34,a+24); 22:00:12 !c char a[]="!c char a[]=@%s%c%s%c%s@; char* c=strdup(a); for(char *b=a; *b;) if(*b++==64) b[-1]=0; printf(a+13,a,34,c,34,a+24);"; char* c=strdup(a); for(char *b=a; *b;) if(*b++==64) b[-1]=0; printf(a+13,a,34,c,34,a+24); 22:00:13 →→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→ 22:00:15 found my error 22:00:19 long live altgr 22:00:23 for some reason I was trying to write to a constant string 22:00:46 ais523, turn on -Wwrite-strings ;P 22:00:52 AnMaster: how, with egobot? 22:00:57 also, easier just to fix the declaration 22:01:00 ais523, well, that I don't know 22:01:04 or write to c, fwiw 22:01:04 ais523, what? 22:01:09 that one warns you 22:01:09 ... 22:01:44 ais523, nice polygot. Now just make it output brainfuck or underload every other time 22:01:56 so you can run fungot against egobot 22:01:57 AnMaster: 1l 2l axo befunge bch bf8,16,32,64 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain rail sadol sceql udage01 unlambda whirl is that fnord 22:02:03 "Polyglor"? 22:02:05 *Polyglot 22:02:07 It's a quine. 22:02:13 ehird, err typo 22:02:15 or rather 22:02:18 I thought ahead 22:02:20 !c char* a="!c char*a =@%s%c%s%c%s@; char* c=strdup(a); for(char *b=c; *b;) if(*b++==64) b[-1]=0; printf(c+12,c,34,a,34,c+23);"; char* c=strdup(a); for(char *b=c; *b;) if(*b++==64) b[-1]=0; printf(c+12,c,34,a,34,c+23); 22:02:21 at the polygot 22:02:22 !c char*a ="!c char*a =@%s%c%s%c%s@; char* c=strdup(a); for(char *b=c; *b;) if(*b++==64) b[-1]=0; printf(c+12,c,34,a,34,c+23);"; char* c=strdup(a); for(char *b=c; *b;) if(*b++==64) b[-1]=0; printf(c+12,c,34,a,34,c+23); 22:02:40 AnMaster: 1l 2l axo befunge bch bf8,16,32,64 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain rail sadol sceql udage01 unlambda whirl is that fnord <-- what 22:02:41 AnMaster: you aren't using? it's not scheme! they look like cavemen." " if you like 22:02:51 fizzie!! what the hell was that string from 22:02:54 fungot itself? 22:03:06 hm no 22:03:09 possibly egobot 22:03:11 Yes. 22:03:13 EgoBot. 22:03:13 !c char*a="!c char*a=@%s%c%s%c%s@;char*c=strdup(a);for(char*b=c;*b;)if(*b++==64)b[-1]=0;printf(c+11,c,34,a,34,c+22);";char* c=strdup(a);for(char*b=c;*b;)if(*b++==64)b[-1]=0;printf(c+11,c,34,a,34,c+22); 22:03:15 !c char*a="!c char*a=@%s%c%s%c%s@;char*c=strdup(a);for(char*b=c;*b;)if(*b++==64)b[-1]=0;printf(c+11,c,34,a,34,c+22);";char*c=strdup(a);for(char*b=c;*b;)if(*b++==64)b[-1]=0;printf(c+11,c,34,a,34,c+22); 22:03:20 fungot is going to have a bot change. 22:03:21 ehird: rigght moving the stuff to colin. 22:03:21 !fnord 22:03:25 !c char*a="!c char*a=@%s%c%s%c%s@;char*c=strdup(a);for(char*b=c;*b;)if(*b++==64)b[-1]=0;printf(c+11,c,34,a,34,c+22);";char*c=strdup(a);for(char*b=c;*b;)if(*b++==64)b[-1]=0;printf(c+11,c,34,a,34,c+22); 22:03:28 !c char*a="!c char*a=@%s%c%s%c%s@;char*c=strdup(a);for(char*b=c;*b;)if(*b++==64)b[-1]=0;printf(c+11,c,34,a,34,c+22);";char*c=strdup(a);for(char*b=c;*b;)if(*b++==64)b[-1]=0;printf(c+11,c,34,a,34,c+22); 22:03:33 there we go 22:03:38 He is changing from the bot gender of fungot to EgoBot. 22:03:39 ehird: czech rock :d hope you're not disappointed, but i've never tried magic, so i'm supposed to be an atheist 22:03:42 His new name will apparently be "colin". 22:03:49 And he will be an atheist. 22:03:59 -!- kar8nga has quit (Read error: 104 (Connection reset by peer)). 22:04:00 * ehird nods head. Solemnly. 22:04:11 of course, I think it's possible to do a much shorter C quine than that 22:04:20 I think so too 22:04:27 just, not right now, I have work to do that I really should be doing 22:04:35 ais523, well yes. isn't there a zero byte one from IOCCC? 22:04:47 the geordi quine is geordi: { char y(34); stringstream i("geordi: { char y(34); stringstream i(!); string t; getline(i, t, '!'); cout << t << y << i.str() << y << i.rdbuf(); }"); string t; getline(i, t, '!'); cout << t << y << i.str() << y << i.rdbuf(); } 22:05:01 C will be a bit slower 22:05:02 AnMaster: that doesn't count 22:05:07 coppro that isn't C. That is C++ 22:05:10 I know 22:05:15 ais523, well the one byte one then? 22:05:20 int main(){char*x="printf(%c%s%c,34,x,34)";return printf(x,34,x,34);} 22:05:24 AnMaster: that wasn't a quine 22:05:25 ↑ C quine 22:05:38 Nobody said it was C. 22:05:38 ehird: how? 22:05:40 geordi runs C++. 22:05:43 ais523: How what? 22:05:44 it doesn't print the char* or the int main 22:05:47 Oops. 22:05:52 !c char*x="printf(%c%s%c,34,x,34)";return printf(x,34,x,34); 22:05:53 printf("printf(%c%s%c,34,x,34)",34,x,34) 22:06:05 Oops, right. 22:06:08 That's for the embedded version. 22:06:11 Let's try again: 22:06:14 !c return printf("printf(%c%s%c,34,x,34)",34,x,34); 22:06:15 Does not compile. 22:06:37 sec 22:07:20 int main(x,y){y="int main(x,y){y=%c%s%c;return printf(y,34,y,34);}";return printf(y,34,y,34);} 22:07:28 what languages allow you to read the program code from inside the program. I mean, non-esolangs 22:07:35 Note my wonderful casting powers. 22:07:51 without opening the source file (if compiled) 22:07:57 anyway that made me thing of a short bash quine 22:08:05 !bash echo "test, does this have bash?" 22:08:09 !sh echo "test, does this have bash?" 22:08:09 test, does this have bash? 22:08:12 hm 22:08:12 int main(int x,char**y){x="int main(int x,char**y){x=%c%s%c;return printf(x,34,x,34);}";return printf(x,34,x,34);} 22:08:16 !sh echo "$0" 22:08:17 /tmp/input.25413 22:08:18 ↑ Valid C. 22:08:20 !sh cat "$0" 22:08:21 cat "$0" 22:08:23 there 22:08:24 Behold my evil. 22:08:26 short bash quine! 22:08:45 AnMaster: Anyone who thinks that is a quine is an idiot who has not seen it before. 22:08:45 or shell one + cat 22:08:46 hm 22:08:53 Do you think you actually thought of that cheat yourself? 22:08:57 Colin is one of my computers, so that's probably something I said. 22:08:59 ehird, no 22:08:59 ehird: undefined behaviour, you need explicit casts to make it relevant 22:09:05 !perl #!/usr/bin/cat 22:09:06 Can't exec /usr/bin/cat at /tmp/input.25470 line 1. 22:09:10 !perl #!/bin/cat 22:09:11 #!/bin/cat 22:09:13 ehird, but I haven't read about it. I assumed someone else must have thought of it before 22:09:13 there we go 22:09:19 int main(int x,char**y){x=(int)"int main(int x,char**y){x=%c%s%c;return printf(x,34,x,34);}";return printf((char*)x,34,x,34);} 22:09:22 that's one of my favourite Perl quines just because it's so absurd 22:09:29 ais523: You can do %s on an int because printf just has ... 22:09:49 ehird: assuming int is the same size as a pointer, it's likely to work 22:10:05 but it's undefined behaviour even if they're the same, as the interp can use any implementation-defined tricks it likes to cast int to pointer 22:10:09 including changing the representation 22:10:15 ais523, why would perl even consider it may be invoked on a non-perl program? 22:10:22 int main(){char*x="int main(){char*x=%c%s%c;return printf(x,34,x,34);}";return printf(x,34,x,34);} 22:10:24 Shorter, anyway. 22:10:42 AnMaster: because you can do #!perl -w 22:10:48 so it just executes the program mentioned 22:10:50 AnMaster: so you can set perl as a generic command interpreter on a system that doesn't do shebangs 22:10:53 and it emulates them for you 22:10:59 * SimonRC goes for food 22:11:00 ais523: is that the real reason? wow 22:11:01 ehird: no, that's an entirely different sort of magic 22:11:15 if the name "perl" is in the string, it instead reads command-line options from it 22:11:20 well 22:11:21 ehird: according to the manpages, yes 22:11:21 I meant more like 22:11:25 #!/path/to/perl -w 22:12:15 that has the word "perl" in, so it'll run under whichever perl you ran it with 22:12:23 even more fun is "#!/bin/sh -- # -*- perl -*- -p" 22:12:28 which is an actual example in the manual 22:13:04 :D 22:13:08 If the #! line does not contain the word "perl", the program name after the #! is executed instead of the Perl interpreter. This is slightly bizarre, but it helps people on machines that don't do #!because they can tell a program that their SHELL is /usr/bin/perl, and Perl will then dispatch the program to the correct interpreter for them. 22:13:13 o.O 22:13:23 whoops, missed a space unwrapping that 22:13:28 If the #! line does not contain the word "perl", the program name after the #! is executed instead of the Perl interpreter. This is slightly bizarre, but it helps people on machines that don't do #! because they can tell a program that their SHELL is /usr/bin/perl, and Perl will then dispatch the program to the correct interpreter for them. 22:13:37 I like the "Hey, we added this so perl helps you do stuff, even if you don't code Perl that's okay, we're just here to help" 22:13:49 "It was just a few lines of code and we like you guys, so, you know." 22:13:57 "Set us as your command interpreter and whatnot." 22:13:58 reminds me of DNA Maze 22:14:09 version 2 ran the DOS equivalent of the UNIX command "reset" once it exited 22:14:16 so I could use it to restore messed-up ttys 22:14:22 :-D 22:14:34 XD 22:14:52 (it was used for other purposes too; I once replaced the entire DRM of a C compiler with DNA Maze) 22:14:55 http://simulacrum.dorm.duke.edu/allyourgoogle.svg 22:15:04 (stop playing the game, you can use your compiler now) 22:15:09 svg is awesome 22:15:12 I never thought I'd stare at a functional Google homepage. Rotating. 22:15:25 Very slow in Firefox, though. Let me try it in a WebKit browser. 22:15:32 ais523: brilliant 22:15:44 AnMaster: so you can set perl as a generic command interpreter on a system that doesn't do shebangs <-- wouldn't it make more sense to have a special purpose such program 22:15:56 AnMaster: Perl's a special purpose everything program 22:16:05 AnMaster: no, because if it's the 90s you don't have that kind of bandwidth 22:16:21 "swiss army chainsaw" 22:16:21 and if installing Perl helps you run Perlish stuff, which usually comes with shebangs, all the better 22:16:49 Perl is the antiunix 22:17:26 ais523, heh 22:17:28 On one tool for one job: "Those days are dead and gone and the eulogy was delivered by Perl." —Rob Pike 22:17:43 ehird, it would be a 10-20 line C program anyway 22:17:54 AnMaster: You don't have a C compiler. 22:18:09 ehird, okay, the binary would still be tiny 22:18:15 you probably have cc, given the time period in question 22:18:19 But it's not such a huge big deal, it's just a nicety. 22:18:24 Why bother to seek out such a program? 22:18:25 sure 22:18:38 perl programs traditionally do the reverse, too 22:18:43 ehird, that quote by Rob Pike seems to be a good summary 22:18:44 they're written as a perl/sh polyglot 22:18:53 ais523, they are? 22:18:54 so that systems that don't do #! re-invoke it under perl if it's run by sh by mistake 22:18:55 how and why 22:19:08 Like this: 22:19:10 okay that answers why, how 22:19:11 hm 22:19:11 eval 'exec perl -wS $0 ${1+"$@"}' 22:19:12 #!/usr/bin/perl 22:19:15 if $running_under_some_shell 22:19:19 ais523: ooh, synchronicity 22:19:27 I added the first line for you to append to 22:19:30 except I missed the seimcolon 22:19:36 ; 22:19:37 fixed 22:19:39 also, my first line came before yours, rather runing the effect at my end 22:19:40 that is out of order 22:19:45 Bah 22:19:50 #!/usr/bin/perl 22:19:53 eval 'exec perl -wS $0 ${1+"$@"}' 22:19:57 if $running_under_some_shell; 22:20:02 there we go 22:20:09 ah 22:20:13 fun 22:20:18 although, you'd want the -wS in the first line too, if you were using those options 22:20:29 ais523, why -wS? 22:20:31 sh has significant whitespace, so it never even looks at the third line 22:20:35 AnMaster: in the example in the manual 22:20:43 you could omit it, but -w is rather recommended 22:20:51 ais523, and yes I know sh well enough to know newline ends command 22:20:55 I guess the shebang should be #!/usr/bin/perl -wS 22:21:00 ais523: ooh, ridiculous Perl feature idea: 22:21:01 in Perl it doesn't, so it sees an if that fails 22:21:05 and doesn't run the line before 22:21:11 and eval is a valid Perl statement, so it parses 22:21:16 it looks for any line starting with "exec perl" before any other non-comment lines 22:21:18 and ignores it 22:21:19 ais523, undefined variable is false? 22:21:24 except, wait, no 22:21:27 AnMaster: yes, or an error if use strict; is in use 22:21:32 it looks for any line starting with "exec perl" before any other non-comment lines 22:21:36 so for a strict program, it would be 22:21:39 #!/usr/bin/perl -wS 22:21:46 ais523, why the eval? 22:21:47 and interprets all of the following arguments starting with - as arguments to Perl 22:21:49 so 22:21:51 #!/usr/bin/perl 22:21:51 eval 'exec perl -wS $0 ${1+"$@"}' 22:21:53 exec perl -wS 22:21:59 if $::running_under_some_shell; 22:22:00 erm 22:22:03 exec perl -wS "$@" 22:22:07 would be like #!/usr/bin/perl -wS, except working on non-shebang machines 22:22:09 AnMaster: to hide the shellcode inside from Perl 22:22:12 ais523: horrible and brilliant, methinks 22:22:16 ehird: yes 22:22:19 ehird, no it should be ${1+"$@"} most likely 22:22:24 to deal with old shells 22:22:51 anyway, perl sees what's effectively eval 'stuff in quotes' if 0; 22:22:55 and doesn't run the command at all 22:24:04 ais523, right 22:24:16 ais523, couldn't that eval mess up things though 22:24:22 AnMaster: no, because it /never runs/ 22:24:30 ais523, *for the shell* 22:24:38 no, because the shell just evals what's inside it 22:24:44 ais523, what if you pass some shell code as an argument. It looks improperly quoted 22:24:53 it's properly quoted, it's in single quotes 22:25:03 which just like in shells, don't need quoting of anything but ' inside them 22:25:08 oh hm 22:25:11 you can put literal anything but ' inside singlequotes, I think 22:25:11 read it as "" 22:25:13 well oaky 22:25:14 okay* 22:25:17 possibly even literal NUL, although I'm less sure of that 22:25:24 ais523, it can fail if $0 contains spaces 22:25:28 not the val 22:25:30 eval* 22:25:34 but the code after 22:25:49 AnMaster: ooh, well noticed, report it as a bug to the Perl people 22:25:49 ais523, as for literal NUL, those will cause bash at least to end the string there 22:25:57 as they are null terminated internally 22:26:03 AnMaster: yes, but there aren't any so it's irrelevant to this discussion 22:26:06 ais523, oh? wouldn't this differ between shell scripts 22:26:15 err 22:26:17 perl scripts 22:26:21 so it is up to each perl script 22:26:31 ais523, or is it from some manual page of perl? 22:26:31 yes, but they could fix the example in the manual 22:26:40 ais523, indeed. where is the bug tracker? 22:26:41 a2p does this: 22:26:45 #!/usr/bin/perl 22:26:46 eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' 22:26:48 if $running_under_some_shell; 22:26:50 # this emulates #! processing on NIH machines. 22:26:51 # (remove #! line above if indigestible) 22:27:02 I have no idea what "indigestible" means. 22:27:06 ehird, I have 22:27:08 ehird: unable to be eaten 22:27:08 you can't eat it 22:27:12 ... 22:27:15 I KNOW THAT 22:27:16 so, it means the #! causes an error 22:27:25 whereas it's a shebang to most shells, and a comment to most others 22:27:26 ehird, yes, as in shell or system can't handle #! 22:27:29 ofc, all this is no use on windows 22:27:30 maybe # isn't a comment 22:27:43 digest 22:27:45 digestible 22:27:47 indigestible 22:27:48 hmm, someone write a perl / DOS batch file polyglot 22:28:02 Okay. 22:28:03 where the batch file runs the perl 22:28:04 ais523, does perl use a mailing list or a bug tracker? 22:28:09 AnMaster: they use rt 22:28:14 ehird, rt? 22:28:15 AnMaster: mailing list is perl5-porters, but it has a bug tracker too 22:28:37 ais523, which manual page is it from? 22:28:41 http://rt.perl.org/perlbug/ 22:28:44 and it's on "perlrun" 22:29:09 ais523: is FOO = x; valid Perl? 22:29:17 wth is up with the login 22:29:22 ehird: no, there's no sigil 22:29:33 AnMaster: bitcard does the accounts for all the perl stuff 22:29:40 ais523, whatever that is 22:29:55 AnMaster: an account. 22:29:56 AnMaster: it's the accounts thing for Perl and CPAN 22:30:02 ais523: ok, let me rephrase 22:30:11 what can I put after FOO to make it a valid perl nop? 22:30:18 I guess FOO; works, but eh 22:30:24 FOO if 0; too 22:30:36 ais523, bitcard certainly seems trustworthy: "You have requested an encrypted page that contains some unencrypted information. Information that you see or enter on this page could easily be read by a third party." 22:30:43 hm, as long as FOO is purely alphanumeric and starts with a letter 22:30:47 does %0 work for "this program" in DOS? 22:30:49 AnMaster: isn't that IE's warning message? 22:30:50 AnMaster: tons of pages do that 22:30:54 ais523, firefox 22:30:55 AnMaster: stop whining 22:31:01 it's not like perl have some password-stealing conspiracy 22:31:08 ehird, I know one no other login pages doing that 22:31:12 or registration ones 22:31:16 wikipedia's did for ages 22:31:18 Nobody gives a fuck 22:31:20 I do know of pages once you are logged in 22:31:26 ehird, s/nobody/ehird/ 22:31:27 the point is, the bit you enter the password in is encrypted 22:31:33 No, I don't give a fuck. 22:31:36 err, doesn't* 22:31:38 so unless you're really scared of someone trying to MITM-interface-spoof you... 22:31:39 ehird, well 22:31:46 point is you shouldn't speak for everyone 22:31:49 I don't care, ais523 doesn't care, and you're the only person anal enough to care. 22:32:02 ehird: I care to the extent that sort of message is actually a security risk 22:32:06 I know ais523 doesn't care because he's explaining why it isn't a problem to you. 22:32:09 which is, not very much 22:32:21 so does %0 work in batch files as "this program"? 22:32:23 * AnMaster prepares mailinator 22:32:32 AnMaster: ... 22:32:41 Perl: Spammer extraordinaires 22:32:46 ehird: I'm not sure, but I wouldn't be surprised if it didn't 22:32:51 I'm pretty sure Larry Wall is too Christian to spam you 22:32:54 ehird, are email addresses public 22:33:03 ais523: can you use them in strings? 22:33:06 as on bugzilla 22:33:11 AnMaster: They're mangled, I believe. 22:33:13 foo AT bar DOT org 22:33:15 or whatever 22:33:17 ehird: it interpolates fine, I think 22:33:24 ehird, won't help much 22:33:26 the issue is more getting things to not interpolate, in DOS 22:33:41 there are quoting rules but they make no sense and I can't remember them 22:34:12 REM ; if (0) { 22:34:14 perl "%0" 22:34:15 REM ; } 22:34:17 print "Hello, world!\n"; 22:34:18 Tada. 22:34:34 Now to make it work with a shebang and for shebangless systems. 22:34:44 hmm... 22:34:51 I think the perl "%0" might fail there in Perl 22:34:59 ais523: it's in an if (0) 22:35:14 to Perl, it looks like this: 22:35:15 REM; 22:35:17 if (0) { 22:35:19 String found where operator expected at t.pl line 2, near "perl "%0"" 22:35:20 perl "%0" REM; 22:35:21 } 22:35:25 ais523: Huh. 22:35:27 qsort((int[]){5, 50, 1, 0}, 4, sizeof(int), lambda(int, (const void *x, const void *y), *x < *y?-1:*x > *y?1:0)); 22:35:30 Whooo. 22:35:31 followed by a missing semicolon error 22:35:31 #!/usr/bin/env perl will just try to execute the program #!/usr/bin/env with argument perl in batch, right? 22:35:37 ehird: it's parsing perl as "perl" 22:35:42 pikhq: Now make it work with typeof, bitch. 22:35:45 so you get "perl" "%0" REM 22:35:46 ais523: Ah. 22:35:47 which makes no sense 22:35:47 Easy to fix. 22:36:03 %{ is a string in perl, right? 22:36:04 Or a list 22:36:11 no, it's a dereferencing operator 22:36:15 %q{ then 22:36:16 for hash references 22:36:17 to } 22:36:23 REM ; %q{ 22:36:25 perl "%0" 22:36:26 no, that's a slice of the hash called q 22:36:26 REM %} 22:36:33 ehird: lambda((x, y), void *x; void *y;, *x < *y?-1:*x>*y?1:0) 22:36:36 try without the % sign 22:36:40 REM ; q{ 22:36:44 REM } 22:36:47 that works I think 22:36:48 REM ; q{ 22:36:50 perl "%0" 22:36:51 REM } 22:37:01 ais523: #!/usr/bin/env perl executes the program #!/usr/bin/env in batch, right? 22:37:06 ehird: I think so 22:37:09 pikhq: NO :| 22:37:21 (is #! a legal DOS directory name?) 22:37:25 ehird: Only way for it to work with more than 1 argument that I can think of. 22:37:28 ais523: Well, it'll error out anyway. 22:37:36 ais523: does x || y work in batch? 22:37:39 or do I need to do something else 22:37:42 haha, you must be kidding 22:37:47 first, you run a test command 22:37:51 then you use "if errorlevel" 22:37:54 It's much nicer to just write the return type. 22:37:55 yeah :P 22:37:58 pikhq: BAH 22:38:04 ok, forget shebangs, I'll just make it work in sh-doing systems 22:38:07 And... C-like. 22:38:08 although, wait no 22:38:12 that breaks if you don't run it from a shell 22:38:18 Well, as C-like as *lambda* can be. 22:38:34 ais523: @echo off disables echoing future lines before executing them 22:38:45 ais523: does that disable error messages too? 22:39:09 * ehird gets an idea 22:39:13 does x;y work in batch? 22:39:45 no, I don't think so 22:40:10 @REM ; q{ 22:40:11 @perl "%0" 22:40:13 } 22:40:14 print "Hello, world!\n"; 22:40:20 ↑ A silent version of my batch-perl-spawner. 22:40:52 ehird: Huh. Nested functions aren't on the stack. 22:41:20 Erm. Not necessarily. 22:41:23 Though they might be. 22:41:28 :/ 22:41:36 What does perl -S do, anyway? 22:42:38 not sure 22:42:59 GCC *claims* that if you call them after the containing function exits, all hell breaks loose. 22:43:03 haha, I'm loving this 22:43:07 this will be the best polyglot ever 22:43:24 The assembly it outputs sticks the nested functions inside the text section. 22:43:27 With mangled names. 22:43:31 ehird, will you make it work for sh systems too? 22:43:48 AnMaster: Shebang, sh, batch and perl will all be handled. 22:44:02 Batch might output an error before running the program, though. 22:44:09 Well, something like 22:44:11 ehird, okay that's impressive. Can't think of how you will handle #! in batch 22:44:13 the DOS side of it seems to work (thanks, DOSbox!) 22:44:13 #!/usr/bin/env perl 22:44:15 Command not found 22:44:17 although I'm not sure about the %0 22:44:25 It *seems* that if you simply don't refer to things in the outer function, you've got proper (but horribly inefficient) lambda. 22:44:38 pikhq: Meh. 22:44:40 pikhq: no, because the function is stored on the stack 22:44:44 ehird, that one doesn't pass on arguments with batch 22:44:45 ais523: no it isn't 22:44:47 as far as I can see 22:44:51 ais523: Not in the assembly I am looking at. 22:44:53 ehird: oh, right, just the trampoline 22:45:01 ais523: what's the batch for "all my arguments"? 22:45:20 ugh, %* I think 22:45:22 but I'm not sure 22:45:44 hmm 22:45:50 does eval "2+2", blah work in Perl? 22:45:57 doesn't have to work at runtime, actually, so I'm sure it does work 22:45:57 -!- soupdragon has quit ("Leaving"). 22:46:20 not %* it seems 22:46:54 gah I can't find where to file a bug at that rt.perl.org thingy 22:47:13 ais523: ok, I need your help: can you make "@REM 2>/dev/null" (without the quotes) valid Perl without sacrificing its sh semantics? 22:47:17 ais523, ^ 22:47:33 AnMaster: I'm not sure either 22:48:07 ais523: Here's how my GCC is pushing the address of a nested function: movl $comp_int.1972, %eax 22:48:16 pikhq: ah, must be optimising 22:48:20 well then, such a fucked up user interface, I'm not going to care 22:48:25 but it's not much of a lambda if you're referring to outside the function 22:48:25 ais523: it's for a greater good!!! 22:48:28 ehird: I'm thinking 22:48:36 *it's for the greater good 22:48:36 ais523: -O0. 22:48:43 pity "null" isn't a legal regex modifier 22:48:49 And passing it to qsort. 22:48:51 ah: 22:48:53 -S 22:48:55 makes Perl use the PATH environment variable to search for the program (unless the name of the program contains directory separators). 22:49:07 ais523: can you try echo %0 in dosbox for me to see if %0 works? 22:49:31 ais523: ooh, wait 22:49:32 seems not, you get a literal %0 22:49:36 @REM / 2>/dev/null 22:49:50 what about this: @REM = q= 2/dev/null #= 22:49:58 ehird: that isn't valid perl 22:50:12 ais523: yes, but it's close 22:50:23 ais523: that breaks the sh semantics 22:50:31 So, it's lambda, just not a closure. 22:50:34 $ perl -ce '@REM = q= 2/dev/null #=' 22:50:35 -e syntax OK 22:50:35 it must run a command starting with @REM and do 2>/dev/null 22:50:44 ehird: it does do that 22:50:48 "2/dev/null" 22:50:49 No, it doesn't. 22:50:49 oh, forgot the > 22:50:55 Is it valid with the >? 22:50:58 $ perl -ce '@REM = q= 2>/dev/null #=' 22:51:00 -e syntax OK 22:51:02 Yay. 22:51:05 yep, it's inside a string literal 22:51:13 the entire statement is rather meaningless, but who cares 22:51:24 doesn't matter 22:51:26 wait 22:51:28 that breaks in sh 22:51:32 because of the trailing #= 22:51:36 that's a comment in sh 22:51:40 no, ;#= is 22:51:42 but it's #= 22:51:45 and you can put it on the next line if you prefer 22:51:49 ais523: anyway, not acceptable; I need to have || right after it 22:51:56 No I can't, every line must start with @REM 22:52:01 in fact, you can just put the = in an arbitrary place later in the program 22:52:02 ehird, # is a comment even on same line isn't it? 22:52:07 @REM = q= 2>/dev/null 22:52:12 followed by an = somewhere much later 22:52:17 ais523: well, okay 22:52:19 just so long as there are no other = signs in-between 22:52:20 $ echo foo #bar 22:52:20 foo 22:52:22 ehird, ^ 22:52:33 ais523: that means I don't get to use my awesome hack though 22:52:38 which is? 22:52:42 eval 'exec perl blah;#', 22:52:47 @REM if $running_under_some_shell; 22:52:55 hahaha 22:53:05 wouldn't the eval break under DOS? 22:53:08 also, have fun with newline conventions 22:53:11 no, because it's part of 22:53:18 ais523, what does @REM mean to perl? 22:53:20 @REM 2>/dev/null || eval ... 22:53:25 AnMaster: the array called REM 22:53:25 AnMaster: array variable REM 22:53:28 ah 22:53:39 or in perl5, to be precise, "these REM" 22:53:48 because perl infers what sort of variable you mean from context 22:53:55 so it's "something containing multiple elements REM" 22:54:01 which in the abstract, must mean the array 22:54:02 ehird: So, yeah. I've got a non-closure lambda. 22:54:22 pikhq, is that well defined behaviour? 22:54:22 ais523: http://sprunge.us/LRfW 22:54:26 for gcc 22:54:32 if "%0" %* did what it should, this would work 22:54:41 as a batch file 22:54:53 it would output "#!/usr/bin/env perl" and then an error before running the program, however 22:54:54 AnMaster: It's *contrary to the documentation* when returning one of these lambdas. 22:54:54 oh, I think the semantics of % are different inside and out, just for fun 22:54:58 batch files are evil 22:55:01 In sh, it should work perfectly 22:55:05 But it works perfectly according to the generated code. 22:55:07 In perl, it should work perfectly 22:55:17 pikhq, well then, bad idea, depending on platform 22:55:19 Conclusion: I am a genius as soon as we can get "%0" and %* working. 22:55:31 pikhq, iirc trampolines are messier on RISC in general 22:55:31 AnMaster: The documentation claims it's on the stack. 22:55:40 pikhq, it might be 22:55:42 ooh, it can be made shorter 22:55:48 pikhq, if a trampoline is generated 22:55:51 you can combine the two qs 22:56:00 pikhq, a trampoline is on the stack. It may be that none is required 22:56:02 get rid of lines 3 and 4, and change line 6 to =; 22:56:04 AnMaster: When would one be generated? 22:56:14 * pikhq would like to try to force on. 22:56:16 #!/usr/bin/env perl 22:56:16 s/on/one/ 22:56:17 @REM =q= 2>/dev/null||exec /usr/bin/env perl -S $0 ${1+"$@"} 22:56:19 @REM =;q{ 22:56:20 @perl -S "%0" %* 22:56:22 } 22:56:23 ais523: yep 22:56:26 pikhq, either when it is needed, or always. I would suspect it may vary between versions 22:56:27 oh 22:56:28 you're right 22:56:30 you do not need to change the q delimeter from = to { 22:56:36 pikhq, so when you need a closure I believe 22:56:43 It certainly isn't "always"... 22:56:47 #!/usr/bin/env perl 22:56:48 pikhq, try using some variable from outside it 22:56:48 @REM =q= 2>/dev/null||exec /usr/bin/env perl -S $0 ${1+"$@"} 22:56:50 @perl -S "%0" %* 22:56:51 = 22:56:53 Beautiful 22:56:55 I picked = as it has no special meaning to the shell, but's a legal delimiter for q 22:56:58 pikhq, that isn't a compile time constant 22:56:59 Problems to solve: - "%0" %* - Shebang not erroring 22:57:00 and yes, is beautiful 22:57:02 as in, it can't be optimised away 22:57:08 AnMaster: K. 22:57:11 you need an @exit after that @perl line, though 22:57:24 Other systems can't control that, and need a totally devious construct that will work under any of csh, sh, or Perl, such as the following: 22:57:26 1. eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}' 22:57:27 2. & eval 'exec /usr/bin/perl -wS $0 $argv:q' 22:57:29 3. if $running_under_some_shell; 22:57:30 what are you two trying to do? provide a line that perl ignores but batch causes to be executed in perl? 22:57:30 ais523: csh, eh? 22:57:31 * pikhq does s/1/argc/ in his test. 22:57:32 pikhq, also, note that it might work differently on different targets. Like ARM, x86. x86-64, SPARC, PCC 22:57:33 PPC* 22:57:39 coppro: my current script will execute on: 22:57:41 coppro: write a perl/sh/bat polyglot that runs the perl program 22:57:47 ais523: also with a shebang! 22:57:49 Ahah. 22:57:50 * coppro cries 22:57:53 test.c:17: warning: generating trampoline in object (requires executable stack) 22:57:58 ais523: also, add csh to that list 22:58:02 I want to make it work in csh too 22:58:06 yay csh 22:58:10 YAY CSH 22:58:33 this will end in beautiful, beautiful tears 22:58:44 So, it would appear that it is in the text segment if it doesn't close. 22:59:49 are there any other notable shells? 23:00:24 $ perl -mysw 'f$env("procedure")' 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8' ! 23:00:25 $ exit++ + ++$status != 0 and $exit = $status = undef; 23:00:35 ^ perlrun's syntax on how to do the same thing under the VMS shell 23:00:35 ais523: what the fuck 23:00:42 oh god 23:00:57 ehird, remember OS/1 23:00:57 perl/bat/sh/csh/vms/shebang polyglot 23:00:59 err 23:00:59 I want to die now 23:00:59 OS/2 23:01:02 there's OS/2 too 23:01:06 AnMaster: no, I'd prefer to forget it 23:01:11 perl/bat/sh/csh/vms/os2/shebang polyglot 23:01:13 * ehird weeps 23:01:16 it must be doable, surely 23:01:19 if a little hard to test 23:01:24 It must be doable, unfortuantely. 23:01:28 *unfortunately 23:01:43 ehird, what is your current one 23:01:52 C is a language with first-class functions that aren't closures. >:D 23:02:02 This incantation is a bit much to remember, but Perl will display it for you if you say "perl "-V:startperl"". 23:02:09 pikhq: no, it has first-class function pointers 23:02:10 AnMaster: My current one is what I sprunged plus ais523's modifications 23:02:14 the functions themselves are second-class 23:02:14 I closed Emacs to kill the beast. 23:02:36 Go has both first-class functions AND first-class function pointers. 23:02:38 Take that. 23:02:44 ais523: But, but lambda(int, (int x, int y), x*y) ! 23:02:44 $ perl "-V:startperl" 23:02:45 startperl='#!/usr/bin/perl'; 23:02:48 pikhq, what happened when using trampoline? 23:02:56 boring 23:03:02 ehird, I lost track of it 23:03:07 AnMaster: ask ais523 23:03:12 he can do the mods to my latest version 23:03:15 -!- ais523 has quit ("I need to go home"). 23:03:16 CAN'T HE AIS523 23:03:18 :D 23:03:21 AnMaster: Oh, it works just fine so long as the lambda is only used when the defining function is on the stack. 23:03:34 ehird, hm? 23:03:40 GCC also warns you when it generates a trampoline. 23:03:47 well okay 23:05:27 A closure, hence, can easily be implemented in C: struct closure {void *function; void *free_variables} 23:06:25 ok, wtf? 23:06:31 bash is executing .bashrc but not .bash_profile 23:06:32 ehird, don't forget MPW and MacPerl 23:06:37 * pikhq shall soon be writing some bloody crazy C code. 23:06:58 ehird, see man bash. I end up sourcing files are required from each other -_- 23:07:14 ehird, short story bash_profile is for login shells 23:07:18 bashrc for normal ones 23:07:30 suggestion: source .bashrc from .bash_profile 23:07:59 further suggestion: if your distro doesn't do this, read man page to figure out how files in /etc/ are handled 23:08:17 ehird, the relevant section is INVOCATION 23:08:30 but I can't make bashrc include profile because profile includes bashrc 23:08:30 AnMaster: But I want profile to be loaded 23:08:30 when just bashrc would normally be 23:08:32 My distro has . ~/.bashrc in .profile and no .bash_profile 23:09:11 ehird, interactive shell? 23:09:44 When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes com‐ 23:09:44 mands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.pro‐ 23:09:44 file, in that order, and reads and executes commands from the first one that exists and is readable. 23:09:54 Maybe I'll just set up all the files so they all do . ~/.profile 23:09:54 and have everything in there 23:09:55 and 23:09:57 When an interactive shell that is not a login shell is started, bash reads and executes commands from ~/.bashrc, if that file exists. This 23:09:57 may be inhibited by using the --norc option. 23:10:10 ehird, I have all mine read ~/.bashrc instead 23:10:52 yeah, because bash is the only thing that could read ~/.profile. 23:11:21 ehird, also it behaves differently if invoked as bash or as sh 23:11:35 ehird, no, but I have bash specific code in ~/.bashrc 23:11:41 -!- FireFly has quit ("Leaving"). 23:11:56 ok, let me rephrase my question 23:12:15 where should I put environment variables that are applicable outside of shells but should be defined in both login and non-login interactive shells? 23:13:02 ehird, depends on how the distro is set up for sourcing other files 23:13:12 and you *will* need to source some file for it 23:13:40 ehird, anyway, if it is exported, that should solve it 23:14:01 when you run startx, the env variables will be inherited I believe 23:14:17 ehird@meson:~$ egrep '(bashrc|bash_profile|profile)' .bashrc .profile 23:14:18 .bashrc:# ~/.bashrc: executed by bash(1) for non-login shells. 23:14:20 .bashrc:# this, if it's already enabled in /etc/bash.bashrc and /etc/profile 23:14:21 .bashrc:# sources /etc/bash.bashrc). 23:14:23 .profile:# ~/.profile: executed by the command interpreter for login shells. 23:14:24 .profile:# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login 23:14:26 .profile:# the default umask is set in /etc/profile; for setting the umask 23:14:27 .profile: # include .bashrc if it exists 23:14:29 .profile: if [ -f "$HOME/.bashrc" ]; then 23:14:30 .profile: . "$HOME/.bashrc" 23:14:32 I wonder if Debian even thought about how to set it up nicely. 23:14:41 ehird, it loads bashrc 23:14:42 AnMaster: yeah, I'm just gonna kill X :-P 23:14:47 -!- ehird has quit (Remote closed the connection). 23:14:47 ehird, hm? 23:14:52 -!- BeholdMyGlory has quit (Remote closed the connection). 23:15:41 -!- ehird has joined. 23:15:43 do you even use startx? Not GDM/KDM or such? 23:15:47 also, night 23:15:49 I use KDM, yeah. 23:15:51 AnMaster: wait, 23:15:52 → 23:15:54 maybe I should just put them in bashrc 23:15:57 if profile loads bashrc 23:16:09 possibly. Night →→→ 23:17:28 -!- ehird has quit (Remote closed the connection). 23:18:09 -!- ehird has joined. 23:21:26 -!- jix has quit (Read error: 110 (Connection timed out)). 23:38:42 -!- bsmntbombdood_ has joined. 23:41:26 test.c:8: error: void value not ignored as it ought to be 23:41:29 FFFUUUU. 23:41:36 -!- augur has quit (Read error: 113 (No route to host)). 23:42:14 if you look into the void, the void looks back into you 23:42:54 I am never using a void value that I can find... 23:43:21 Unfortunately, GCC's line numbers are monumentally unuseful when it comes to macros. 23:44:58 run cpp on it :P 23:45:27 Not helpful at all. 23:45:37 Did you know that CPP omits newlines? 23:48:32 Yes. 23:51:04 pikhq: Behold: Go has both first-class functions and first-class function pointers. And they are both closures. http://sprunge.us/KHOM 23:51:17 Well, I have a somewhat unwieldy C closure definition. 23:51:28 pikhq: Don't you wish you were programming in Go now? 23:51:29 :P 23:51:31 (return type must be a pointer.) 23:51:55 (oh, and you need to be explicit about what you're closing. *Really* explicit.) 23:52:17 S'ok, PHP 6 requires that too XD 23:52:27 pikhq: Oi. Drool over http://sprunge.us/KHOM. 23:52:51 That is spiffy. 23:54:35 http://sprunge.us/UViC 23:54:44 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)). 23:54:51 It's a painful fib function! 23:55:25 http://sprunge.us/DUSj lambda.h 23:55:50 I can see the C commitee accepting that as a standard heater for C11. 23:56:04 But you'll have to rename it stdlam.h, and rename lambda to _LAMBDA. 23:56:09 (It would be _Lambda, but it's a macro.) 23:56:11 No wait. 23:56:12 Is that a compliment or an insult? :P 23:56:16 -!- bsmntbombdood__ has joined. 23:56:17 isalpha is a macro too 23:56:19 So, _Lambda 23:56:35 And closure would have to become _Closure, but stdlam.h can do #define closure _Closure. 23:56:56 call would have to become _Call, and it would be a macro. 23:57:02 Wait, it is a macro. 23:57:03 Whatever. 23:57:34 pikhq: Make one that actually closes over something. 23:57:56 ehird: The example I pasted is closing over the fib closure. 23:58:23 anyone know how to set an alarm with kde? 23:58:44 I could, of course, make its closing a bit more substantial. Un momento. 23:59:17 Close over multiple variables in separate locations. 23:59:19 I'll wait here. 23:59:38 A suggested (simple) example?