←2010-01-09 2010-01-10 2010-01-11→ ↑2010 ↑all
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 <pikhq> Template-like macros, anyone?
00:13:51 <oerjan> are they chocolate-covered?
00:15:21 <pikhq> No.
00:15:34 <oerjan> darn.
00:16:45 <oklofok> the nature is so beautiful
00:16:53 <oklofok> trees, especially
00:17:24 <oerjan> yay, trees
00:17:38 <oklofok> i want to touch them but the snow cover would be damaged
00:18:15 <oerjan> but i think it should start warming above -20 celsius now
00:18:57 <oklofok> -10.8 here, says the internet
00:19:06 <coppro> pikhq: huh?
00:19:13 <oklofok> was near -30 during the week though
00:19:22 <coppro> we had a Chinook yesterday
00:19:49 -!- Asztal has quit (Read error: 60 (Operation timed out)).
00:20:02 <coppro> (Chinook = local name for Foehn wind)
00:20:14 <coppro> was around -20 the rest of the week
00:21:05 <pikhq> coppro: Implementing something similar to C++ templates using macros.
00:21:15 <coppro> oh
00:21:18 <coppro> sounds scary
00:21:28 <coppro> just having better template syntax would be good I think
00:21:31 <oerjan> "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 <oklofok> coppro: do you have beautiful trees there?
00:21:35 -!- Asztal has joined.
00:21:44 <coppro> oklofok: we do! But all the snow melted :(
00:21:54 <coppro> probably not if I went to the mountains though
00:22:02 <coppro> (not melted, not not beautiful)
00:22:03 <pikhq> coppro: The only scary bit is that it needs two GCC extensions to work similarly to C++ templates.
00:22:11 <coppro> pikhq: O_o
00:22:11 <pikhq> ({ }), and functions on the stack.
00:22:15 <coppro> oh
00:22:24 <coppro> meh
00:22:35 <coppro> you meant CPP
00:22:49 <pikhq> ... Yes...
00:23:16 <pikhq> In what other context would "similar to C++ templates using macros" make any sense?
00:24:07 <coppro> any?
00:24:15 <coppro> there are more than just CPP macros
00:24:40 <pikhq> And they don't really make sense when discussing "C++ templates", now do they?
00:24:52 <coppro> well, you didn't explain the context
00:25:09 <coppro> 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 <pikhq> Why would I do something like that? :P
00:28:10 <oklofok> yeah *that* would've been crazy.
00:28:47 <oerjan> 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 <oerjan> very poignant
01:01:37 <oklofok> I DON'T GET IT
01:05:41 <oerjan> it's metaphorical
01:14:43 <oerjan> http://eatliver.com/i.php?n=5190
01:15:22 * oerjan suggests looking carefully at that one
01:19:04 <bsmntbombdood> hello, oerjan
01:19:51 <bsmntbombdood> hello, oklofok
01:20:10 <oerjan> hello, bsmntbombdood
01:25:58 <uorygl> hello, bsmntbombdood
01:36:00 <oklofok> helllllloe
02:16:01 -!- ehird has joined.
02:16:06 <ehird> 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 <ehird> pikhq: ping
02:44:47 <pikhq> ehird: Pong
02:44:54 <ehird> pikhq: what's the Tile command to set theme?
02:44:57 <ehird> tile::setTheme foo doesn't work
02:45:10 <pikhq> I've not messed with Tk 8.5.
02:45:18 <ehird> bah
02:45:20 <ehird> % package require tile
02:45:20 <ehird> 0.8.0
02:45:20 <ehird> % tile::setTheme xpnative
02:45:20 <ehird> invalid command name "tile::setTheme"
02:46:27 <ehird> wiki.tcl.tk sez these should all work
02:46:42 * pikhq shruggeth
02:48:06 <ehird> okay, one really dumb question though
02:48:12 <ehird> I should use tclsh to execute a tcl script, right?
02:48:13 <ehird> batch mode
02:48:17 <ehird> (never wish)
02:49:06 <pikhq> Yes.
02:49:18 -!- coppro has quit (Read error: 104 (Connection reset by peer)).
02:49:31 <ehird> 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 <pikhq> wish has no reason to exist any more; package require Tk. Always.
02:49:35 <ehird> Badabingo.
02:49:44 <ehird> pikhq: objection: interactive use
02:50:06 <pikhq> ehird: package require Tk works just as well in interactive use.
02:50:12 <ehird> But it's more typing.
02:50:59 <pikhq> I take it you're not familiar with how there used to be a bunch of different tclsh's...
02:51:10 <ehird> hmm
02:51:11 <ehird> ttk::setTheme alt
02:51:11 <ehird> button .b -text "Hello, world!" -command exit
02:51:11 <ehird> pack .b
02:51:14 <pikhq> tclsh, wish, expect, expectk, etc.
02:51:22 <ehird> I wonder if I have to prefix stuff with ttk:: to get it to actually use the widgets
02:51:26 <ehird> because it doesn't seem to be changing anything
02:51:31 <ehird> pikhq: erm, expect is a separate program
02:51:58 -!- Gregor has joined.
02:52:44 <pikhq> ehird: A Tcl shell with expect loaded.
02:57:30 <ehird> http://wiki.tcl.tk/14796
02:57:32 <ehird> :-(
02:57:37 <ehird> I have to use ttk widgets to get theming.
02:57:45 <ehird> 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 <ehird> 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 <ehird> #amend if anyone wants to discusserate my editorate btw.
04:49:09 -!- coppro has joined.
04:59:43 <ehird> 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 <ais523> <lalaland4711> Side effects for any library function may include it returning NULL, the program exiting, or fucking output to standard output!
12:47:56 <ais523> sounds like an esolang
13:00:36 -!- zeotrope has joined.
13:09:11 <SimonRC> huh? where?
13:09:27 <soupdragon> hi SimonRC
13:09:41 <SimonRC> 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 <AnMaster> does anyone know if information is transferred faster by reading or by listening. Assume a skilled reader and native speaker.
13:49:54 <oklofok> reading, absolutely
13:50:18 <oklofok> it's impossible to talk at the normal reading speed
13:50:22 <AnMaster> true
13:50:39 <AnMaster> oklofok, well what about news? Try talking as fast as they do on news on TV or radio
13:50:45 <AnMaster> you will have a hard time managing that
13:51:09 <AnMaster> (at least, most people have a hard time managing that)
13:51:55 <oklofok> even if i just mumble something like "bzzb" for every word, it will take about 3 times more to read something
13:52:04 <oklofok> looking at a sentence at a time vs. looking at a word at a time
13:52:05 -!- BeholdMyGlory has joined.
13:52:11 <AnMaster> hm probably
13:52:33 <oklofok> a bit of an exaggeration maybe, but i think it's definitely reading.
13:52:45 <oklofok> (i did test the bzzb thing)
13:53:59 <AnMaster> hm
13:59:43 <AnMaster> bbl
14:00:03 <ais523> ehird for the logs, here's a Perl6 code snippet for you: "subset Even of Int where { $_ % 2 == 0 }"
14:00:12 <ais523> now if only we could persuade them to do type inference too, that would be perfect
14:00:41 <ais523> (and as it's Perl6, I shudder at the $_ and think $^a would work better)
14:00:41 <soupdragon> think an advanced perl6 compiler could prove that even + even = even?
14:02:55 <ais523> no, it doesn't try to do type inference at all
14:04:14 <ais523> ooh, it does work with $^a too
14:04:33 <ais523> I bet it looks at how many arguments the block's expecting, and uses $_ or the first arg accordingly
14:05:03 <ais523> works with pointy blocks too, this is fun
14:10:36 <AnMaster> ais523, $^a ?
14:10:39 <AnMaster> what does that mean
14:10:54 <AnMaster> and why the alphanumeric bit. Did they run out of other symbols?
14:10:56 <ais523> AnMaster: if you use variables starting $^ inside a block in perl6
14:11:03 <ais523> then they become arguments to the block, in alphabetical order
14:11:09 <AnMaster> hm okay
14:11:26 <AnMaster> ais523, do they just take every feature they can think of and throw it in?
14:11:31 <ais523> e.g. {"$^a $^c $^b"}<1 2 3> returns "1 3 2"
14:11:50 <ais523> um, forgot the parens
14:12:06 <ais523> > say {"$^a $^c $^b"}(|<1 2 3>)
14:12:08 <ais523> 1 3 2
14:12:16 <ais523> and forgot to interpolate the param list
14:12:28 <AnMaster> ais523, interpolate?
14:12:30 <ais523> if you don't like the implicit alphabetical order thing, you can do it explicitly
14:12:31 <AnMaster> the param list?!
14:12:43 <ais523> AnMaster: func(<1 2 3>) passes it one argument, the list (1, 2, 3)
14:12:50 <AnMaster> ah
14:12:54 <ais523> func(|<1 2 3>) passes it three, 1, 2, and 3
14:13:04 <AnMaster> well okay, varargs style kind of
14:13:05 <ais523> which could of course be written func(1, 2, 3)
14:13:20 <AnMaster> I can see why that other notation is useful
14:13:27 <AnMaster> to pass varargs from an array
14:13:40 <ais523> > say -> $first, $second, $third {"$first $third $second"}(|<1 2 3>)
14:13:41 <ais523> 1 3 2
14:13:54 <AnMaster> 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 <ais523> if you don't like alphabetical order, you can use a lambda instead
14:14:04 <ais523> although it's kind-of weird that the lambda operator is -> {}
14:14:13 <AnMaster> hm
14:14:41 <ais523> > say (sub ($first, $second, $third) {"$first $third $second"})(|<1 2 3>)
14:14:44 <ais523> 1 3 2
14:14:48 <ais523> that's perl5y syntax for a lambda, also accepted in perl6
14:15:23 <ais523> > say (sub ($first, $second, $third) {"$first $third $second"})(:second(2), :third(3), :first(1))
14:15:24 <ais523> 1 3 2
14:15:28 <ais523> and you can name the arguments instead if you like
14:15:36 <ais523> when calling a sub
14:15:58 <ais523> > say -> $first, $second, $third {"$first $third $second"}(:second(2), :third(3), :first(1))
14:15:59 <ais523> 1 3 2
14:16:07 <ais523> 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 <AnMaster> ais523, pointy blocks?
14:48:27 <ais523> AnMaster: the -> {} notation for lambdas
14:48:32 <AnMaster> ah
14:48:39 <AnMaster> ais523, thought you meant <>
14:48:46 <AnMaster> looks pointy to me
14:49:01 <ais523> > say {"$^a $^c $^b"}(:b(2), :c(3), :a(1))
14:49:03 <ais523> 1 3 2
14:49:06 <ais523> wow, that works as well?
14:49:09 <ais523> I'm impressed
14:49:19 * ais523 abbreviates
14:49:57 <ais523> hmm, seems they got rid of the :1a abbreviation for :a(1)
14:50:19 <ais523> probably a good thing, that was beginning to get too silly for words
14:50:41 <AnMaster> ais523, hm?
14:51:07 <ais523> the only real reason they added :1a to the language
14:51:15 <ais523> was so you could have a function with params called st, nd, and th
14:51:19 <ais523> and do :2nd
14:51:21 <AnMaster> err okay
14:51:27 <AnMaster> are those reserved words?
14:51:28 <ais523> also, to make Python programmer's heads explode
14:51:36 <ais523> AnMaster: nothing's a reserved word in Perl6
14:51:47 <AnMaster> ais523, then why can't you have params called st, nd or th?
14:51:51 <ais523> you can
14:52:01 <ais523> just you'd have to write :nd(2) rather than :2nd
14:52:07 <ais523> which defeats the whole point in that naming
14:52:12 <AnMaster> ais523, is that perl6 syntax?
14:52:21 <AnMaster> because iirc you used shift or something in perl5
14:52:24 <ais523> yes, although it's not stabilised yet
14:52:41 <ais523> perl6 has actual syntax for arguments
14:52:46 <ais523> rather than lumping them all in @_
14:52:51 <AnMaster> ais523, also I'd much rather use python than perl. Even for text processing
14:53:23 <AnMaster> perl does make my head explode, Python only makes the frontal indention lobe explode
14:54:47 <AnMaster> ais523, still I have found the secret of perl now
14:54:51 <AnMaster> still,*
14:55:01 <ais523> > sub if ($a) { say $a } ; if('Hello, world!');
14:55:03 <ais523> Hello, world!
14:55:33 <soupdragon> if ??
14:55:41 <AnMaster> 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 <AnMaster> soupdragon, he redefined if
14:56:02 <AnMaster> read the line
14:56:02 <ais523> no, I didn't
14:56:04 <ais523> I defined it
14:56:08 <ais523> the original usage of if still works
14:56:12 <AnMaster> err
14:56:21 <AnMaster> ais523, how can both work at once?
14:56:33 <soupdragon> AnMaster, quantum physics
14:56:38 <ais523> there's no code snippet where it's ambiguous whether you mean if the control-flow operator or if the function
14:57:41 <AnMaster> soupdragon, :P
14:59:23 <ais523> > if (1 != 2)+4
14:59:25 <ais523> 5
14:59:26 <ais523> > if(1 != 2)+4
14:59:28 <ais523> 1
15:00:17 <ais523> > if (1 != 2) { say "Hello, world!" }
15:00:19 <ais523> Hello, world!
15:00:29 <ais523> > if(1 != 2) { say "Hello, world!" }
15:00:30 <ais523> Confused at line 1, near "{ say \"Hel"
15:00:34 <ais523> whitespace sensitivity is fun
15:00:46 <ais523> (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 <lieuwe> i need a name for the esolang i'm making, hard to come up with something that isn't used already :-/
15:38:34 <soupdragon> call it lieuwe
15:38:59 <lieuwe> soupdragon: ehrm, no, i wouldn't like my name all ofer ze interwebz
15:39:17 <soupdragon> whats the language
15:39:20 <soupdragon> whats it
15:39:21 <soupdragon> show me
15:40:01 <AnMaster> <lieuwe> 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 <lieuwe> (add[(get[foo]),(get[bar])]) to add two variables...
15:40:18 <AnMaster> since this channel has public logs after all.
15:40:25 <lieuwe> and do nothing with the result :-P
15:40:37 <soupdragon> how is it eso?
15:40:45 <AnMaster> lieuwe, looks just verbose,
15:40:48 <pikhq> lieuwe: ... You mean you don't go by Real "nick" Name?
15:40:49 <AnMaster> s/,$//
15:40:58 <lieuwe> soupdragon: not yet, need to add some odd funcs in...
15:41:08 <soupdragon> ok
15:42:04 <lieuwe> decisions, decisions...
15:43:16 <lieuwe> pikhq: nope, atleast not here, i do on most forums...
15:43:48 <pikhq> Lame.
15:44:21 <lieuwe> pikhq: ?
15:54:28 -!- uorygl has quit (Read error: 60 (Operation timed out)).
15:55:33 <lieuwe> 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 <pikhq> Glass
15:56:21 -!- uorygl has joined.
15:58:40 -!- olsner has quit (Read error: 60 (Operation timed out)).
16:02:21 <ais523> lieuwe: the issue is, most esolangs are created to explore a particular concept
16:02:31 <ais523> whereas high-level languages tend to be full of lots of different concepts
16:02:54 <ais523> and then there are languages which feel simultaneously high- and low-level, like INTERCAL
16:03:19 <ais523> (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 <lieuwe> 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 <lieuwe> and that users could define their own lang for it...
16:04:35 <ais523> lieuwe: those are typical methods of implementing esolangs
16:05:28 <ais523> (CLC-INTERCAL manual: http://smuggle.intercal.org.uk/manual/)
16:05:38 <ais523> it has things like first-class filehandles
16:05:49 <ais523> to the extent that you can steal a filehandle from another process and continue reading from it / writing to it
16:06:30 <lieuwe> ais523: 0.o
16:06:45 <ais523> CLC-INTERCAL has something very like object-orientation, too
16:07:30 <ais523> and something which is vaguely similar to a reference, except it isn't
16:07:45 <lieuwe> ais523: now that sounds like tho mother off all esolangs
16:08:03 <ais523> huge progress has been made in INTERCAL development over the past few years
16:08:13 <ais523> e.g. C-INTERCAL's threading model and CLC-INTERCAL's data type model
16:08:49 <pikhq> lieuwe: It is.
16:09:13 <AnMaster> <ais523> lieuwe: those are typical methods of implementing esolangs <-- typical?
16:09:27 <pikhq> "Caution! Under no circumstances confuse the mesh with the interleave operator, except under confusing circumstances!"
16:09:32 <ais523> AnMaster: compilation to an existing high-level language, and tree-ising and then interpreting
16:09:33 <AnMaster> well there are a few examples of it, but I wouldn't call it typical
16:09:43 <AnMaster> ais523, ah hm.
16:09:46 <ais523> pikhq: confusing mesh and interleave just gives you a syntax error anyway
16:09:54 <AnMaster> ais523, misinterpreted you then. Thought you meant "doing like CLC"
16:09:57 <ais523> oh
16:09:59 <AnMaster> which is quite unusual afaik
16:10:09 <ais523> no, that's certainly an atypical method of implementing an esolang
16:10:31 <ais523> (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 <pikhq> lieuwe: Also, here's an operator: http://upload.wikimedia.org/wikipedia/commons/4/41/INTERCAL_Circuitous_Diagram.svg
16:10:55 <ais523> pikhq: actually, I'm pretty sure that diagram is just a joke
16:11:06 <ais523> some people have tried tracing it and it doesn't seem to mean anything meaningful
16:11:08 <lieuwe> pikhq: O.o
16:11:11 <pikhq> ais523: Yes.
16:11:25 <pikhq> The select operator actually has mechanics...
16:11:29 <pikhq> Erm. Semantics.
16:11:35 <pikhq> Not a bus line to New York.
16:11:40 <AnMaster> pikhq, it doesn't make sure even if you know what select does.
16:11:52 <ais523> the biggest giveaway is that it takes two 8-bit arguments in the diagram
16:11:57 <ais523> but two 16-bit arguments in the code
16:12:19 <ais523> although it might be a stripped-down version, I suppose
16:12:53 <AnMaster> ais523, but what does it do instead of select
16:13:12 <ais523> who knows?
16:13:28 <ais523> it uses a complicated version of logic, which has more than two values for its booleans
16:13:40 <AnMaster> and does one of the outputs lead to power supply?
16:13:44 -!- olsner has joined.
16:13:48 <AnMaster> look near the bottom
16:14:12 <AnMaster> ais523, ^
16:14:16 <AnMaster> hi olsner
16:14:28 <ais523> AnMaster: err, no, that looks more like they just grounded one of the wires
16:14:30 <olsner> AnMaster: hiya
16:14:31 <ais523> which might be an input for al I know
16:14:33 <ais523> *all
16:14:40 <ais523> standard method of indicating a constant 0 on a circuit diagram
16:14:46 <AnMaster> horrible forcast here: -26 C during the night
16:14:53 <ais523> ouch
16:14:54 <AnMaster> ais523, oh right
16:15:44 <AnMaster> 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 <AnMaster> definitely not cellar.
16:16:08 <ais523> AnMaster: "basement" and "cellar" are both used, but for larger spaces
16:16:09 <olsner> Boden went from -31 to +.5 in one day
16:16:16 <ais523> (a basement's somewhere you live in, a cellar's a storage space)
16:16:17 <AnMaster> ais523, not large
16:16:23 <AnMaster> but maybe half a meter high
16:16:28 <ais523> I think it's pretty rare to have a small space beneath the house in the UK
16:16:32 <AnMaster> you can't store stuff in it, nor live in it
16:16:32 <ais523> so we don't have a word for it
16:16:33 <pikhq> AnMaster: "Crawl space".
16:16:36 <AnMaster> pikhq, ah
16:16:38 <ais523> normally it's just the foundations straight underneath
16:16:41 <AnMaster> well "grund" in Swedish
16:16:47 <ais523> pikhq: that would be the general term, not for a place under a house in particular
16:16:48 <AnMaster> ais523, how do you inspect the foundations?
16:16:54 <AnMaster> then
16:16:54 <ais523> AnMaster: you don't?
16:16:56 <pikhq> ais523: Yes.
16:16:57 <AnMaster> huh
16:16:58 <ais523> or you dig up the floor, if you need to
16:17:22 <ais523> 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 <AnMaster> 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 <AnMaster> and there are water pipes around there somewhere
16:18:03 <AnMaster> :/
16:18:26 <AnMaster> it is rarely this cold for so long as it has been this winter
16:18:50 <AnMaster> 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 <ais523> it's been worse than usual here
16:19:08 <ais523> but worse than usual is just -3 or so at night, and snow most days
16:19:09 <AnMaster> there too? hm
16:19:13 -!- kar8nga has quit (Read error: 110 (Connection timed out)).
16:19:17 <AnMaster> ais523, -3 *at night*
16:19:38 <AnMaster> that's practically early spring!
16:19:51 <ais523> yep, this is why we don't need underground crawl spaces
16:20:03 <AnMaster> heh
16:21:16 -!- ehird has joined.
16:21:18 <AnMaster> 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 <ehird> Hi!
16:21:39 <AnMaster> ehird, hello
16:21:54 <ehird> #amend for talking about my text editor, btw.
16:21:58 <ehird> *for talking
16:22:02 <AnMaster> pikhq, do you americans have a specific name for that type of crawl spaces though?
16:22:10 <AnMaster> ehird, alter you mean?
16:22:16 <AnMaster> ehird, or how did the vote go?
16:22:24 <pikhq> AnMaster: No.
16:22:30 <AnMaster> ehird, amend sounds so religious ;P
16:22:35 <pikhq> It doesn't come up enough generally.
16:22:36 <ehird> Uh, I think it was 3:3:1.
16:22:45 <ehird> AnMaster: No it doesn't. Alter does, though - altar.
16:22:59 <ehird> Anyway, I prefer amend, so there.
16:23:02 <AnMaster> ehird, "amen(d) - the fundamental(ist) text editor"
16:23:05 <AnMaster> nice slogan?
16:23:15 <ehird> Not... really, no.
16:23:25 <ehird> Methinks I prefer "For the generalised transmogrifying of textual information." :-P
16:23:40 <AnMaster> ehird, which one is most memorable?
16:23:59 <ehird> Neither are memorable at all.
16:24:09 <ais523> ehird: did you logread before coming online, by the way?
16:24:12 <AnMaster> ehird, also amend sounds like it would be /etc/init.d/amend
16:24:15 <ehird> doing so
16:24:17 <AnMaster> as in: a daemon
16:24:50 <ehird> Yeah, and amarok is a daemon that amaros.
16:25:03 <AnMaster> ehird, what?
16:25:06 <ehird> 06:00:03 <ais523> ehird for the logs, here's a Perl6 code snippet for you: "subset Even of Int where { $_ % 2 == 0 }"
16:25:07 <AnMaster> k != d
16:25:08 <AnMaster> ..
16:25:10 <ehird> AnMaster: oops.
16:25:12 <ehird> XD
16:25:18 <ehird> ais523: yep, I know
16:25:42 <ais523> such a pity it doesn't do type inference
16:25:46 <AnMaster> ais523, that line gave me an idea btw: a mathematica/haskell/perl hybrid
16:25:52 <ais523> although, type inference on dependent types is probably TC or even uncomputable
16:25:59 <ais523> AnMaster: go away, that idea is inherently trolling
16:26:00 <ehird> od: the o daemon
16:26:05 <AnMaster> ais523, :D
16:26:16 <ehird> fold: the fol daemon
16:26:17 <AnMaster> ehird, well okay, not every such one
16:26:23 <AnMaster> ehird, ld: the l daemon
16:26:54 <AnMaster> ldd: the l daemon daemon
16:26:58 <ehird> Our editor, who art in /usr/bin,
16:27:03 <ehird> Hallowed by thy Name.
16:27:23 <ehird> Thy ubiquity come.
16:27:29 <ehird> Thy customisation will be done,
16:27:34 <ais523> I /do/ actually like the idea of amen for the editor, and amend for an associated daemon
16:27:36 <ehird> On Windows as it is in Linux.
16:27:43 <ehird> Give us this day our daily mail.
16:27:49 <ehird> And forgive us our permissions violations,
16:27:55 <ehird> As we forgive those who violate permissions against us.
16:28:02 <ehird> And lead us not into Emacs,
16:28:06 <ehird> But deliver us from vim.
16:28:15 <ehird> For thine is the transmogrification,
16:28:18 <ehird> and the power, and the glory,
16:28:21 <ehird> for ever and ever.
16:28:22 <ehird> Amend.
16:28:29 <AnMaster> ehird, that naming scheme doesn't follow: rpcbind: rpcbin daemon?. It is "rpcbind daemon"
16:28:37 <AnMaster> as in, the d is doing twice the work
16:28:46 <AnMaster> thus od could be the od daemon
16:29:01 <ehird> so, to anger AnMaster and confuse ais523: KDE 4 is pretty nice.
16:29:23 <ais523> theory: ehird actually likes all DEs
16:29:27 <AnMaster> ehird, I can imagine worse things than KDE4
16:29:33 <ais523> so far, it's consistent with the evidence
16:29:45 <AnMaster> but I can count them on the fingers of one hand
16:29:58 <ehird> also, shouldn't `subset Even of Int where { .% 2 == 0 }` work?
16:30:01 <ehird> this is Perl 6, after all
16:30:05 -!- Asztal has joined.
16:30:17 <ehird> ais523: no, I dislike OS X, and modern Windows, I think
16:30:21 <ais523> ehird: I don't think % is a legal method name
16:30:24 <ehird> also, I don't like GNOME as much as I used to.
16:30:33 <ehird> ais523: every operator should be a method too, duh
16:30:48 <ais523> ooh, maybe would
16:30:52 <ais523> implicit $_ feels so wrong in Perl6, though
16:30:58 <ais523> even though it's all over the place in Perl5
16:31:04 <ehird> it's not implicit, it's .
16:31:13 <ehird> it's much more Perl 6 than saying $_ imo
16:31:16 <ais523> well, that's an implicit left argument to .
16:31:19 <ais523> which is an operator
16:31:35 <AnMaster> <ehird> 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 <ehird> actually, I'd call prefix . and infix . different operators
16:31:47 <ehird> AnMaster: Surprisingly enough, I don't care about your opinions.
16:31:59 <ehird> ais523: also, have you tried Quassel IRC? Kubuntu includes it instead of Konversation, it's rubbish
16:32:05 <ais523> no, I haven't
16:32:09 <ehird> doesn't feel KDE-ish at all, it just feels unpolished and crappy
16:32:15 <ehird> Konversation is much nicer
16:32:45 <ehird> 06:51:07 <ais523> the only real reason they added :1a to the language
16:32:47 <ehird> 06:51:15 <ais523> was so you could have a function with params called st, nd, and th
16:32:48 <ehird> 06:51:19 <ais523> and do :2nd
16:32:50 <ehird> Beautiful.
16:32:56 <ehird> ais523: are you sure they got rid of it ratehr than rakudo not implementing it?
16:32:59 <ais523> ooh, not sure
16:33:01 <AnMaster> I remember trying konversation some time ago. Was pretty limited back then
16:33:03 <ehird> also, you can do (2 nd) in Haskell
16:33:05 <ehird> *rather
16:33:06 <ais523> it could be that it just isn't implemented yet
16:33:09 <AnMaster> but yeah, it would have been before I even was on freenode
16:33:15 <AnMaster> probably the first irc client I used even
16:33:20 <ehird> instance Num ((Integer -> a) -> a) where
16:33:28 <ehird> fromInteger n f = f n
16:33:35 <ehird> so (2 nd) -> (nd 2)
16:33:47 <ais523> the first IRC client I used was Chatzilla
16:33:47 <AnMaster> hm no, ksirc or something like that... I think that was before konversation even
16:33:55 <ais523> which had loads of rough edges at the time, but was usable
16:34:24 <ehird> I had a rather ridiculous problem with the WiFi here
16:34:32 <pikhq> ehird: o.O
16:34:36 <ehird> It worked on the LiveCD, but activating the proprietary driver post-install just sat there and did nothing.
16:34:39 <ehird> The solution?
16:34:45 <ehird> # depmod -a
16:34:48 <ehird> # modprobe wl
16:34:50 <ehird> And do it again.
16:34:52 <ehird> Go figure.
16:35:13 <ais523> ehird: I had a very similar problem ages ago, trying to install NVidia graphics drivers on Linux
16:35:21 <ais523> when for some reason there wasn't a packaged version, or I couldn't use it
16:35:28 <ais523> (I think I might have been installing on a computer with no internet connection)
16:35:29 <ehird> 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 <ais523> the issue was that it had called its kernel module the exact same thing as one that already existed
16:36:10 <ehird> Compositing wasn't on by default, but I just had to click an "Enable desktop effects" checkbox.
16:36:11 <ais523> 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 <ehird> All in all, I'm pretty happy.
16:36:36 <ehird> ...apart from font rendering.
16:37:12 <ais523> ehird: which OS is it this time? KDE/Linux?
16:37:20 <ehird> 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 <ais523> you mean, there's a version of Kubuntu that /didn't/ screw up the packaging?
16:38:09 <ehird> Eh?
16:38:25 <ais523> the Ubuntu people have been consistently bad at packaging KDE, for some reason I don't really understand
16:38:34 <ehird> 06:55:41 <AnMaster> 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 <ehird> yawn, perl trolling
16:38:41 <ehird> how 1997
16:38:49 <ehird> 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 <ehird> 08:07:45 <lieuwe> ais523: now that sounds like tho mother off all esolangs
16:40:50 <ehird> C-INTERCAL is, very literally, that.
16:40:58 <ais523> no, Princeton INTERCAL is
16:41:00 <ais523> C-INTERCAL came later
16:41:07 <ehird> Oops.
16:41:11 <ehird> /C-/d
16:41:53 <ais523> 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 <ais523> probably explains why it was so slow
16:43:06 <ehird> 08:16:48 <AnMaster> ais523, how do you inspect the foundations?
16:43:08 <ehird> 08:16:54 <AnMaster> then
16:43:09 <ehird> 08:16:54 <ais523> AnMaster: you don't?
16:43:11 <AnMaster> <ehird> 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 <ehird> !qdb
16:43:28 <ehird> AnMaster: perhaps you could read a few lines on and see
16:43:44 <AnMaster> ehird, like you do when log reading?
16:43:53 <AnMaster> (hint: you don't)
16:45:15 <AnMaster> <ais523> 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 <ais523> AnMaster: because it was being maintained by the package manager
16:45:55 <ais523> and I don't like messing with package-manager-maintained files
16:46:25 <AnMaster> 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 <ais523> another nvidia module, I assume
16:46:53 <AnMaster> ais523, also, modprobe wouldn't work, would it? insmod might
16:47:08 <AnMaster> unless modprobe does allow you to give the full path
16:47:08 <ehird> AnMaster -- telling you your anecdote is WRONG since 2007.
16:47:08 <ais523> hmm, not sure
16:47:15 <ehird> WRONG, I tell you! WRONG!
16:47:17 <AnMaster> was pretty sure it doesn't. Seems it does
16:47:29 <AnMaster> hm, maybe it was under 2.4 it didn't allow that
16:47:33 <ais523> anyway, I think it was a timing issue, more than giving the full path
16:47:48 <AnMaster> ais523, timing + mounting file systems then?
16:47:57 <ais523> yes, or maybe the initramfs
16:48:00 <AnMaster> ah
16:48:02 <AnMaster> could be
16:49:19 <ehird> Someone guess what my hostname is. :P
16:49:39 <AnMaster> domain name pointer customer11288.pool1.Greenwich-GLN5000-BAS0001.orangehomedsl.co.uk.
16:49:42 <AnMaster> no need to guess
16:49:45 <ehird> No, my hostname.
16:49:50 <ehird> Not my domain name.
16:49:57 <AnMaster> well okay.
16:50:08 <AnMaster> 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 <ehird> AnMaster: nope.
16:50:16 <AnMaster> without that it is basically impossible
16:50:30 <ehird> Fine, I'll say warm/cold depending.
16:50:34 <ais523> you can try to guess the hostname of my current computer, too
16:50:42 <AnMaster> ehird, tux?
16:50:52 <ais523> I /think/ it's possible to determine it by having looked at my termcasts or something like that
16:50:52 <ehird> Freezing.
16:50:54 <soupdragon> what about the new quantum algorithm
16:50:57 <soupdragon> ?
16:51:04 <AnMaster> ehird, mac?
16:51:13 <ehird> Freezing.
16:51:15 <AnMaster> ehird, intercal?
16:51:17 <soupdragon> does linear algebra without Gaussian elimination or something
16:51:20 <ehird> Freezing.
16:51:27 <AnMaster> ehird, ehird?
16:51:30 <ehird> Freezing.
16:51:35 <ehird> I have more imagination than this, you know.
16:51:58 <ehird> Oh, I know, I can check the fonts.conf stuff on the CD.
16:52:00 <AnMaster> ehird, well, is it the name of some animal?
16:52:07 <ehird> No.
16:52:17 <AnMaster> hm
16:52:28 <AnMaster> ehird, is it related to programming?
16:52:39 <ehird> No. Science, though.
16:52:44 <AnMaster> ah hm
16:52:51 <AnMaster> ehird, chemistry?
16:53:07 <ehird> No. And I'm not going to do any more yes/nos now, back to cold/warm. :P
16:53:31 <AnMaster> Planck?
16:53:43 <ehird> Exactly middle temperature.
16:53:46 <AnMaster> Einstein?
16:53:52 <ehird> No, wait, Planck is lukewarm.
16:54:00 <ehird> Einstein is slightly sub-lukewarm.
16:54:05 <AnMaster> hm okay
16:54:10 <AnMaster> Feynman
16:54:19 <ehird> ais523: do you know where the root FS is on the Ubuntu CD roms?
16:54:20 <AnMaster> ehird, ?
16:54:23 <ehird> AnMaster: It's not a name.
16:54:25 <soupdragon> hellooooo
16:54:27 <AnMaster> oh
16:54:28 <soupdragon> algorithm here
16:54:32 <ais523> ehird: no, I don't
16:54:32 <ehird> soupdragon: Poop.
16:54:51 <ais523> I don't think I've ever actually looked at the CD ROM filesystem
16:54:57 <ais523> just installed/liveCDed from them
16:54:58 <AnMaster> ehird, well I give up
16:55:08 <ehird> AnMaster: Okay, fine: Physics. Not a name.
16:55:12 <AnMaster> hm
16:55:20 <AnMaster> ehird, electron?
16:55:27 <AnMaster> or not a name of a thing either?
16:55:40 <ehird> Hot.
16:55:47 <AnMaster> ehird, neutron?
16:55:59 <AnMaster> ehird, about root fs of cd: iirc it is a squashfs image there
16:56:09 <ehird> Can I do mount -t squashfs?
16:56:13 -!- Pthing has joined.
16:56:32 <AnMaster> ehird, no clue. Also it might have been some other compressed fs than squashfs.
16:56:42 <AnMaster> ehird, anyway the squashfs thing is a *file* on the cd
16:56:49 <pikhq> ehird: Yes, squashfs is in Linux.
16:56:51 <AnMaster> so you would need to do a loopback mount
16:56:54 <ehird> Yes
16:57:03 <ehird> autorun.inf dists isolinux pics preseed ubuntu
16:57:04 <ehird> casper install md5sum.txt pool README.diskdefines wubi.exe
16:57:09 <ehird> I'm just going to do du
16:57:12 <ehird> And find the biggest file
16:57:12 <AnMaster> ehird, well you never answered: "<AnMaster> ehird, neutron?"
16:57:15 <AnMaster> ehird, file *
16:57:19 <ehird> AnMaster: Hot.
16:57:19 <AnMaster> would tell you
16:57:24 -!- kar8nga has quit.
16:57:26 <AnMaster> ehird, positron?
16:57:35 <ehird> 676504 ./casper/filesystem.squashfs
16:57:36 -!- kar8nga has joined.
16:57:39 <ehird> AnMaster: Hot.
16:57:41 <AnMaster> ehird, proton?
16:57:44 <AnMaster> ehird, why casper?
16:57:53 <AnMaster> ehird, also "how hot"
16:58:00 <ehird> AnMaster: Hot hot hot hot hot.
16:58:04 <AnMaster> there are hell of a lot of elementary particles
16:58:07 <ehird> You are three steps away from the answer in conceptspace.
16:58:12 <ehird> It's not a single particle.
16:58:17 <AnMaster> ehird, boson?
16:58:32 <ehird> On fire
16:58:40 <AnMaster> fermion?
16:58:52 <ehird> Warm
16:58:59 -!- kar8nga has quit (Remote closed the connection).
16:58:59 <AnMaster> huh
16:59:01 <ehird> Okay, okay, fine: it's not a type of elementary particle.
16:59:05 -!- kar8nga has joined.
16:59:06 <ehird> It's a type of composite particle.
16:59:32 <AnMaster> ehird, but a proton is a composite one. Of 3 quarks iirc
16:59:40 -!- Slereah has joined.
16:59:44 <ehird> Oh, shut up.
16:59:46 <ehird> It's meson.
16:59:51 <AnMaster> oh
17:00:19 <soupdragon> hello
17:00:29 <AnMaster> ais523, what about your hostname then
17:00:34 <ehird> soupdragon: hi
17:00:36 <AnMaster> I think it is ehird's turn to guess now
17:00:37 <ehird> ais523:
17:00:38 <ehird> I intend, without three objections, to set the contestmaster of Enigma
17:00:40 <ehird> to 'none'.
17:00:41 <ehird> might wanna do something about that
17:00:44 <ais523> I noticed
17:00:45 <ehird> ais523: ais523-laptop
17:00:48 <ais523> ehird: no
17:00:51 <ehird> darn
17:00:56 <ais523> although that /is/ the default
17:01:03 <AnMaster> the default?
17:01:06 <ais523> this time I actually got to set one
17:01:08 <AnMaster> what do you mean the default
17:01:09 <AnMaster> ah
17:01:10 <ehird> ais523: can you give me warm/cold stuff?
17:01:11 <ehird> AnMaster: ubuntu
17:01:17 <ehird> $username-$computertype
17:01:18 <AnMaster> oh
17:01:19 <AnMaster> right
17:01:31 <ais523> ehird: not really, mostly because a) it takes effort, and b) it's the middle of winter anyway
17:01:34 <Deewiant> Ubuntu sets the hostname based on the username? That's a bit odd
17:01:41 <ais523> agreed
17:01:51 <ehird> Deewiant: Ubuntu is designed around regular single-user machines, and it uses the first name as username by default.
17:01:55 <AnMaster> Deewiant, ubuntu does not target multi user systems in 98% of the cases or so
17:02:00 <ehird> So you get "elliott-desktop", which is a reasonable-ish hostname.
17:02:17 <Deewiant> I suppose that makes sense
17:02:18 <ehird> ais523: then I won't guess :p
17:02:20 <AnMaster> btw, how do you detect if you are on a desktop, laptop or whatever
17:02:23 <ais523> ehird: fair enoguh
17:02:34 <AnMaster> ais523, hah at the second reason
17:02:36 <ais523> I'll make it a more interesting longterm challenge, see how long it is before I let everyone know by accident
17:02:48 <ais523> I won't be trying to hide it, but I won't be trying to drop clues either
17:03:06 <ehird> I will now promptly forget about that challenge
17:03:07 <Deewiant> I've already let everybody know my hostname by accident so I guess I've already lost
17:03:17 <AnMaster> oh and I think I mentioned my hostname(s) in here before.
17:03:24 <AnMaster> so pointless to ask anyone to guess
17:03:26 <ehird> Gee, isit tux
17:03:27 <ehird> *is it
17:03:36 <AnMaster> ehird, not any longer on desktop
17:03:38 <AnMaster> used to be
17:03:43 <ehird> Dragon?
17:03:44 <ehird> Poop?
17:03:51 <AnMaster> ehird, dragon is my laptop.
17:04:01 <Deewiant> And poop is your desktop?
17:04:05 <AnMaster> Deewiant, no
17:04:27 <ehird> ehird@meson:/mnt/poop/etc/fonts$ diff <(ls /etc/fonts/conf.d) <(ld conf.d)
17:04:31 <ehird> *ls conf.d
17:04:34 <AnMaster> Deewiant, poop must be that old p4 that broke down
17:04:39 <ehird> Empty diff; hmph.
17:04:49 <AnMaster> though it was just anmaster-desktop iirc XD
17:04:51 <ehird> Aha, I have ~/.fonts.conf.
17:05:00 <ehird> AnMaster: How Ubuntironic.
17:05:07 <AnMaster> ehird, well it wasn't using ubuntu
17:05:27 <AnMaster> ehird, it ran win xp, slackware, qnx, suse and gentoo during it's lifetime
17:05:29 <AnMaster> iirc
17:05:36 <AnMaster> probably some more distros
17:05:44 <ehird> You used QNX as a main OS?
17:05:59 <AnMaster> ehird, yes because it overwrote boot loader
17:06:03 * ehird rm .fonts.conf, reboot
17:06:08 <AnMaster> so until I had time to fix that
17:06:18 -!- ehird has quit (Remote closed the connection).
17:06:32 <AnMaster> also what is that metallish sound from my keyboard when I hit the key "g"
17:06:33 <Deewiant> And all of those had the same hostname? How boring
17:06:37 <AnMaster> it doesn't sound good at all
17:06:53 <AnMaster> Deewiant, well yes. it was back before I was on irc iirc
17:06:59 <AnMaster> had modem back then
17:07:07 <AnMaster> adsl near the end
17:08:47 -!- ehird has joined.
17:08:49 <AnMaster> anyway, no one up for guessing current hostname? it is temporarily assigned until I think of a better one
17:08:55 <AnMaster> that should give you some help
17:08:58 <ehird> Things look nice now. Yay!
17:09:02 <ehird> AnMaster: anmaster-desktop
17:09:04 <ais523> ehird: rebooted X?
17:09:06 <AnMaster> ehird, alas no
17:09:11 <AnMaster> ehird, freezing evne
17:09:12 <AnMaster> even*
17:09:17 <ehird> ais523: rebooted totally, because they removed ctrl-alt-backspace
17:09:22 <Deewiant> AnMaster: Whether you were on IRC or not doesn't change the fact that it's boring :-P
17:09:41 <soupdragon> quantum algorithm for linear equations
17:09:45 <ais523> ehird: there's a setting to turn it back on, but annoyingly they didn't say where it was
17:09:53 <ais523> 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 <ehird> "I'm looking for a bug-free, efficiently multithreaded real-time clock + infix calculator hybrid." --reddit
17:10:06 <AnMaster> ehird, so any more guesses?
17:10:11 <ehird> AnMaster: Nope.
17:10:36 <AnMaster> ais523, also what was your host name?
17:10:45 <AnMaster> ehird, tux-arch
17:10:46 <AnMaster> ;P
17:10:59 <ehird> AnMaster: You are boring.
17:11:06 <AnMaster> ehird, as I said: temporary
17:11:19 <AnMaster> ehird, I plan to rename it in the same style as the other ones
17:11:23 <ais523> ehird: oh, it's in the advanced tab under keyboard layouts in KDE, it seems
17:11:26 <ais523> what an obvious place to put it!
17:11:45 <ehird> ais523: I don't really care.
17:11:52 <ehird> It reboots pretty quickly. :P
17:12:01 -!- HackEgo has joined.
17:12:02 -!- EgoBot has joined.
17:12:05 <ais523> ehird: VM, or on the hardware?
17:12:09 <ehird> Hardware.
17:12:09 <ais523> ooh, hi HackEgo, EgoBot
17:12:20 <AnMaster> 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 <ehird> Buy an old [34]86 and call it that
17:12:44 <AnMaster> ehird, :D
17:12:55 <ehird> Or 286, even
17:13:10 <ehird> 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 <ehird> *run an old
17:13:42 <AnMaster> 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 <ehird> Hey, Konversation isn't set to join #amend by default. Let's fix that.
17:13:47 <AnMaster> so it runs headless
17:13:53 <ehird> That was easy.
17:14:00 <AnMaster> dragon, well that thinkpad is quite powerful
17:14:02 <ais523> ehird: right-click the tab, choose "Join on Connect"?
17:14:06 <ehird> ais523: yep
17:14:09 <AnMaster> ehird, it is usually easy for most irc client
17:14:11 <AnMaster> clients*
17:14:19 <ais523> there's a more longwinded way too, but no reason to use it
17:14:22 <ehird> That doesn't change the fact that it was easy.
17:14:32 <AnMaster> well, actually it is trivial for my bouncer, it automatically updates on join by default
17:14:44 <ais523> ehird, it wasn't meant to
17:14:45 <AnMaster> ehird, iirc xchat has the same feature
17:14:53 <AnMaster> ais523, ?
17:14:58 <ehird> ais523: I was talking to AnMaster.
17:15:06 <ais523> ah
17:15:12 <ais523> I was trying to parody AnMaster in my response, anyway
17:15:28 <ais523> ehird's harder to parody, he doesn't have any really obvious typing conventions
17:15:56 <ehird> My unpredictability is either a sign that I'm terribly interesting or simply too mundane to have patterns.
17:15:58 <AnMaster> ais523, what was the convention in question. A bit hard for me to spot as a non-native speaker.
17:16:04 <ehird> Anyone who isn't AnMaster is welcome to tell me which. :P
17:16:18 <AnMaster> ehird, and my answer is "mu"
17:16:23 <ais523> AnMaster: using , rather than : to highlight someone
17:16:27 * ehird reads "crawlspace" on reddit, goes argh
17:16:29 <ais523> it's not a native speaking thing, but an IRC thing
17:16:33 <AnMaster> ais523, that is due to irc client simply
17:16:40 <ehird> Talking to oerjan makes me experience synchronicity or something
17:16:41 <ais523> AnMaster: isn't it customizable?
17:16:44 <AnMaster> ais523, it is
17:16:46 <ais523> Chatzilla used , by default but I changed it
17:16:48 <AnMaster> ais523, but I prefer it this way
17:17:03 <ehird> , is grammatically incorrect.
17:17:08 <ehird> "Elliott, but I prefer it this way."
17:17:18 <ais523> it's not always grammatically incorrect
17:17:30 <ehird> Well, it reads differently than it's supposed to on IRC, at least.
17:17:30 <ais523> it's correct if used as "ais523, could you please go and implement Feather for me RIGHT NOW?"
17:17:34 <ehird> And a lot of the time it's grammatically incorrect.
17:17:38 <ais523> but incorrect when used for the normal IRC meaning
17:17:40 <ehird> I thought the imitation part of "ehird, it wasn't meant to" was "it wasn't meant to".
17:17:48 <ehird> That's the kind of thing AnMaster says a lot.
17:17:51 <ais523> the whole thing was an imitation
17:17:52 <AnMaster> ais523, would you do that?
17:17:53 <ais523> including that bit
17:17:57 <ais523> AnMaster: no, I'm busy
17:18:05 <AnMaster> ais523, also I never said right now
17:18:18 <ehird> that = "implement Feather for me RIGHT NOW".
17:18:22 <AnMaster> ais523, iirc I usually just ask about *if there has been* any progress
17:18:24 <ehird> So "would you do that" does indeed say "right now".
17:18:33 <ehird> </deliberate-misinterpretation>
17:18:46 <ehird> Sheesh, OS X lets me use C-a and C-e for start/end of line, but KDE doesn't.
17:18:46 <ais523> ehird: oh, that was the natural interpretation for me
17:18:50 <ehird> What has the world come to?
17:18:55 <ehird> ais523: I was unsure too.
17:19:18 <AnMaster> ais523, also that "would you do that" was a joke on what you said
17:19:23 <ais523> anyway, you do realise you just made everything ever said in #esoteric a deliberate misinterpretation?
17:19:36 <ehird> What?
17:19:42 <AnMaster> ais523, hahah
17:19:43 <soupdragon> oh my god
17:19:44 <ais523> <style> deliberate-misinterpretation { interpretation: correct !important; } </style>
17:19:47 <ais523> there, that's fixed it
17:19:49 <ehird> Oh.
17:19:57 <ehird> Who said I was using SGML/XML?
17:20:13 <AnMaster> ehird, what were you using instead?
17:20:27 <ehird> éß
17:20:33 <ehird> ë
17:20:37 <ais523> maybe Perl6
17:20:46 <ehird> Gödel
17:20:49 <ehird> Gödel
17:20:49 <ais523> where </deliberate-interpretation> would just be a literal '/deliberate-interpretation'
17:20:50 <AnMaster> ais523, what does that do in perl6? if anything at all?
17:21:06 <ehird> ais523: deliberate-*misinterpretation
17:21:06 <ais523> AnMaster: <> quotes like "", except that it treats whitespace as commas rather than preserving it
17:21:23 <AnMaster> ais523, but didn't you use <> to create a list or such before?
17:21:29 <ais523> yes, exactly
17:21:32 <ais523> I used <a b c>
17:21:35 <AnMaster> oh
17:21:37 <ais523> which is equivalent to ('a', 'b', 'c')
17:21:38 <AnMaster> right
17:22:02 <ais523> wait, no, <> quotes like '' except it treats whitespace as commas
17:22:10 <ais523> it's «» that quotes like ""
17:22:13 <ehird> Hey, I can type £ as Compose L.
17:22:17 <ehird> *Compose L -.
17:22:27 <ais523> shift-3 probably works better
17:22:33 <AnMaster> ais523, it wouldn't be perl if you couldn't escape whitespace inside <>
17:22:36 <AnMaster> so how do you do that?
17:22:40 <ehird> ais523: No, that's #.
17:22:47 <ais523> ehird: US keyboard? aargh
17:22:49 <ehird> ais523: I prefer the US layout, especially as I use # often - commenting, IRC, etc.
17:22:56 <ais523> AnMaster: using «» and backslashing it
17:22:56 <ehird> Also, " is a more common character than @.
17:22:57 <AnMaster> ehird, US or US international?
17:23:00 <AnMaster> ais523, where is # on UK?
17:23:01 <ehird> It should be in the letter area.
17:23:07 <ais523> AnMaster: to the left of return
17:23:09 <ais523> unshifted
17:23:09 <ehird> The UK layout is inferior in more or less every way, except perhaps \ placement.
17:23:13 <ehird> *\|
17:23:19 <AnMaster> ehird, tell me if you find out how to type pi using compose
17:23:23 <AnMaster> I would like to know
17:23:25 <AnMaster> never found it
17:23:45 <AnMaster> ehird, where are *\| placed?
17:23:50 <ais523> 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 <AnMaster> since they are in 3 different corners here
17:23:59 <ais523> you can type # without using shift, and it's in an easy-to-press location
17:24:13 <AnMaster> ais523, you have | on two different keys!?
17:24:18 <ehird> I don't want to talk about the UK layout, anyway.
17:24:20 <ehird> http://www.modeemi.fi/~tuomov/b/2009/updates/Compose.txt
17:24:27 <ais523> AnMaster: altgr-`, shift-\
17:24:28 <ehird> No pi here, as far as I can tell.
17:24:30 <ehird> You could add it.
17:24:34 <ais523> although, they're different symbols in EBCDIC
17:24:39 <ais523> one has a broken bar, the other is continuous
17:24:40 <AnMaster> ais523, the former is ± here
17:24:48 <AnMaster> the later... well that is tricky
17:24:49 <ehird> <Multi_key> <p> <i> : "((pi symbol))" Uxxxx # UNICODE NAME
17:25:49 <AnMaster> ais523, wait, altgr-<forward accent, as in é, dead key> is ±, altgr+shift+<forward accent shifted to `> is ¬
17:25:57 <ehird> U03C0 # GREEK SMALL LETTER PI
17:26:06 <ehird> π
17:26:07 <ehird> So
17:26:10 <AnMaster> ais523, and \ is altgr-+ so ¿ for shift-altgr-+
17:26:23 <ehird> <Multi_key> <p> <i> : "π" U03C0 # GREEK SMALL LETTER PI
17:26:27 <ehird> Just append to your Compose file.
17:26:28 <ehird> You're welcome.
17:26:36 <AnMaster> ehird, Now to locate the compose file
17:26:47 <ehird> "locate Compose"
17:26:49 <BeholdMyGlory> AnMaster: Create ~/.XCompose
17:26:53 <ehird> /usr/share/X11/locale/(locale)/Compose
17:26:56 <ehird> Or what BeholdMyGlory said.
17:26:58 <AnMaster> ah
17:27:11 <AnMaster> /usr/share/X11/locale/compose.dir
17:27:11 <AnMaster> /usr/share/X11/xkb/symbols/compose
17:27:13 * ehird assigns the Windows keys to Compose.
17:27:14 <AnMaster> are the closest one
17:27:20 <ehird> BeholdMyGlory: Does that overwrite the global file or append?
17:27:26 <ais523> you mean you can create a compose shortcut for a Unicode snowman?
17:27:28 <AnMaster> none matches exactly what ehird suggested
17:27:33 <ehird> ais523: EXCELLENT IDEA
17:27:40 <ehird> Aww, sm is taken: ℠
17:27:42 * AnMaster agrees with ehird on this
17:27:44 <BeholdMyGlory> ehird: I don't know, I copied the global file to ~/.XCompose
17:27:58 <ehird> BeholdMyGlory: is there any command to activate it or do I have to restart X?
17:28:09 <BeholdMyGlory> No idea :P
17:28:16 <ehird> ais523: Perhaps sy, as in unicode Snowman for You.
17:28:22 <ehird> Or us, for Unicode Snowman.
17:28:38 <ais523> incidentally, the Ubuntu wiki recommends using the SAK for restarting X nowadays
17:28:47 <ehird> wow, DejaVu's snowman is brilliant
17:28:47 <ais523> because you can't hit it by mistake using accessibility shortcuts
17:28:48 <ehird> http://unicodesnowmanforyou.com/
17:28:57 <ehird> He's wearing a top hat, smiling, standing on a slope, and has snow around him
17:28:59 <ais523> ooh, it's bigger than I remember it
17:29:06 <ehird> SAK?
17:29:13 <ais523> alt-(sysrq+k)
17:29:14 <AnMaster> ostrange
17:29:16 <AnMaster> strange*
17:29:25 <AnMaster> my locale is not in /usr/share/X11/locale/
17:29:51 <AnMaster> would be sv_SE.UTF-8
17:30:18 <AnMaster> oh the mapping file
17:30:20 <AnMaster> en_US.UTF-8/Compose sv_SE.UTF-8
17:30:44 <ais523> sv_SE = Swedish Swedish?
17:30:53 <AnMaster> ais523, as opposed to sv_FI
17:31:05 <ais523> I'm just amused that it's a different abbreviation at each side
17:31:19 <AnMaster> ais523, I think SE is country code
17:31:27 <AnMaster> and sv is language code or suc
17:31:28 <AnMaster> such*
17:31:42 <ehird> I wonder what the name of the Unicode Snowman is.
17:31:48 <ehird> I need its name to add the Compose comment. :(
17:32:05 <Deewiant> ehird: 'SNOWMAN'
17:32:34 <ehird> Apparently include "%L" does something in .Xcompose.
17:32:40 <ehird> I bet L=locale=include locale's compose.
17:32:46 <ais523> why is there a snowman in Unicode anyway, by the way?
17:32:46 <AnMaster> how does one reload the compose file
17:32:50 <ehird> ais523: Why not?
17:32:54 <ehird> AnMaster: Restart X, I guess
17:33:00 <ais523> ehird: most things in Unicode are put there for a reason, I think
17:33:01 <AnMaster> ehird, man page says it means "your locale"
17:33:04 <AnMaster> %L that is
17:33:09 <ais523> it's not like Unicode magically gathers characters without people agreeing on them
17:33:12 <ehird> ais523: Perhaps a legacy character set
17:33:13 <ais523> so someone must have put it ther
17:33:15 <AnMaster> "and %L expands to the name of the locale specific Compose file (i.e., "/usr/share/X11/locale/<localename>/Com‐
17:33:15 <AnMaster> pose").
17:33:15 <AnMaster> For example, you can include in your compose file the default Compose file by using:
17:33:15 <AnMaster> include "%L""
17:33:15 <ais523> *there
17:33:20 <AnMaster> ugh the formatting
17:33:20 <ehird> AnMaster: Which man page?
17:33:26 <AnMaster> ehird, man Compose
17:33:27 <Deewiant> ehird: man 5 Compose
17:33:35 <AnMaster> Deewiant, hah, beat you
17:33:39 <ehird> I don't have it.
17:33:43 <Deewiant> I do wonder, though, what it means by that
17:33:44 <AnMaster> ehird, install it
17:33:44 <ehird> ais523: some Ubuntu package?
17:33:54 <ehird> Deewiant: That otherwrise it overwrites the locale's compose file.
17:33:56 <AnMaster> ehird, find it with apt-file
17:33:58 <ehird> *otherwise
17:33:59 <AnMaster> ehird, very useful tool
17:34:04 <ais523> ehird: either that's a really stupid comment, or I misunderstood the context of your sentence
17:34:06 <ais523> I suspect the second
17:34:09 <AnMaster> ehird, it allows you to search on files from not installed packages
17:34:13 <Deewiant> ehird: I mean, /usr/share/X11/locale contains no compose file for any of my locales
17:34:21 <ehird> Deewiant: Does for me.
17:34:27 <ehird> ais523: ?
17:34:31 <Deewiant> ehird: Well, what's your locale
17:34:35 <AnMaster> Deewiant, compose.dir
17:34:35 <Deewiant> C? :-P
17:34:38 <AnMaster> Deewiant, it has a mapping
17:34:45 <ais523> ehird: as in, an Ubuntu package wouldn't have put stuff in Unicode
17:34:48 <ehird> Deewiant: Dunno, either US or brit I guess
17:34:51 <AnMaster> see what I said about sv_SE -> en_US compose mapping above
17:34:53 <ehird> ais523: I meant X11 manpages
17:34:54 <Deewiant> AnMaster: Ah, indeed.
17:35:00 <Deewiant> Which locale value does it use, though?
17:35:04 <Deewiant> LANG? Something else?
17:35:08 <AnMaster> Deewiant, no clue
17:35:48 <ais523> ehird: I can find them in Japanese, but not English
17:35:52 <ehird> I imagine the US and UK Compose files are much the same.
17:35:59 <ehird> ais523: I'm just going to use apt-file
17:36:31 <ais523> 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 <Deewiant> So I can fairly safely change my .XCompose to use %L
17:36:45 <ais523> or anything else starting "xmanpages"?
17:36:53 -!- EgoBot has joined.
17:37:03 <AnMaster> ais523, use apt-file
17:37:17 <ehird> ehird@meson:~$ sudo apt-file update
17:37:18 <ehird> Downloading complete file http://gb.archive.ubuntu.com/ubuntu/dists/karmic/Contents-i386.gz
17:37:19 <ehird> Yawn.
17:37:24 <AnMaster> ehird, it takes a bit yes
17:37:49 <AnMaster> $ apt-file find /usr/share/man/man5/Compose.5.gz <-- no results. Maybe elsewhere on ubuntu?
17:38:16 <ehird> Maybe it just doesn't exist.
17:38:33 <ehird> Also, s/find/search/; use proper APT terminology, dammit.
17:38:43 <AnMaster> ehird, it is find for apt-file
17:38:48 <ehird> It's either.
17:38:49 <AnMaster> well both
17:38:53 -!- HackEgo has quit (Remote closed the connection).
17:38:54 <AnMaster> ehird, anything wrong with find
17:38:59 <ehird> search|find <pattern> Search files in packages
17:39:09 <AnMaster> ehird, find is shorter to type
17:39:11 <ehird> 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 <ehird> Deewiant: Does the man page say anything about how to load .XCompose without restarting X?
17:40:04 <AnMaster> ehird, alias qfile="apt-file find" alias qlist="dpkg -L" alias emerge="apt-get" ;P
17:40:10 <Gregor> There, now all my bots keep logs, so maybe I'll actually know WHY they quit :P
17:40:16 <AnMaster> (no I don't use that, but the gentoo commands are shorter)
17:40:18 <ehird> Compose doesn't have FOR ALL by default? Hmph
17:40:32 <AnMaster> ehird, give me the line for it
17:40:33 <Deewiant> ehird: Not that I can see
17:40:40 <ehird> It has ≥ and ≤, though.
17:40:46 <ehird> AnMaster: Give me the line for what?
17:40:56 <ehird> Okay, it doesn't even have ->
17:41:00 <ehird> That's bull fucking shit
17:41:04 <Deewiant> ehird: It does say something about cache directories, though, and "see also - mkcomposecache(1)"
17:41:07 <AnMaster> ehird, when you create the "for all" and "there exists" lines, give them to me
17:41:15 <AnMaster> ehird, → is on altgr-i
17:41:16 <Deewiant> Neither the directories mentioned nor that command exist here, though.
17:41:19 <AnMaster> no need to use compose for it
17:41:20 <AnMaster> :)
17:41:26 <ehird> Fuck altgr
17:41:31 <ehird> Compose is a far superior interface
17:41:33 <AnMaster> ehird, you don't have altgr?
17:41:41 <ehird> I have it, but I do not use it.
17:41:44 <ehird> Compose is a superior interface.
17:41:51 <ehird> Alt Gr is just Alt here.
17:41:52 <AnMaster> ehird, it is faster to use altgr than compose though
17:41:55 <ais523> couldn't you make altgr a compose key, leaving the windows-logo key for super?
17:41:58 <ehird> No, it is not.
17:42:01 <AnMaster> fewer key presses
17:42:05 <Deewiant> ehird: My compose has -> →
17:42:15 <ehird> Time(3k) - Time(2k) = Omega
17:42:21 <AnMaster> ehird, mine has -> to →
17:42:22 <AnMaster> as well
17:42:30 <ais523>
17:42:33 <ais523> is altgr-i for me
17:42:35 <soupdragon> ---> -> →
17:42:42 <ehird> (k = keypress)
17:42:44 <AnMaster> ais523, and does it work with compose?
17:42:54 <ais523> C-x 8 is all the compose I need
17:43:14 <AnMaster> ehird, you press altgr and i at about the same time. Not so for compose and then two separate keys
17:43:22 <ehird> You can do Compose+x y.
17:43:25 <AnMaster> ehird, compare shift-A and "shift, release, a"
17:43:46 <AnMaster> ehird, hm true, but do you have to release x there?
17:43:48 <ehird> And in fact, doing key combinations is not very ergonomic anyway.
17:43:55 <ehird> AnMaster: Nope.
17:44:07 <ehird> Wait, yes.
17:44:09 <ehird> But who cares.
17:44:11 <AnMaster> ehird, you do for -> at least
17:44:14 <ehird> 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 <AnMaster> Deewiant, did you try pkgfile on mkcomposecache?
17:45:48 <Deewiant> What's pkgfile?
17:45:53 <ehird> poop ≠ dung
17:45:53 <AnMaster> why does man Compose on ubuntu open run-mailcap(1)
17:46:00 <AnMaster> that makes no sense whatsoever
17:46:12 <AnMaster> Deewiant, like apt-file for arch
17:46:15 <AnMaster> Deewiant, iirc you ran arch?
17:46:27 <AnMaster> Deewiant, pkgfile is in pkgtools package iirc
17:46:33 <Deewiant> I don't know what apt-file is either, but I suppose I can guess :-P
17:46:51 <Deewiant> Evidently yes, in pkgtools
17:47:05 <AnMaster> Deewiant, it's useful to find what package provides a given file. Also it installs a cronjob to update the db
17:47:10 <AnMaster> iirc
17:47:37 <Deewiant> Yes, it claims to have done so
17:47:53 <AnMaster> $ pkgfile /usr/bin/pkgfile
17:47:53 <AnMaster> community/pkgtools
17:48:12 <AnMaster> Deewiant, unlike apt-file, pkgfile is fairly slow. 5-10 seconds on my sempron system
17:48:20 <AnMaster> with next to no disk activity
17:48:33 <AnMaster> so I suspect very inefficient searching
17:49:16 <AnMaster> still useful though
17:49:23 <Deewiant> Nothing for mkcomposecache
17:49:34 <ehird> brb, restarting x
17:49:40 <ehird> ais523: what's that command to restart x again?
17:49:42 <ehird> sysrq+k?
17:49:49 <ais523> alt-sysrq+k
17:50:04 -!- ehird has quit (Remote closed the connection).
17:50:44 -!- ehird has joined.
17:50:53 <ais523> wb
17:51:00 <ehird> π
17:51:02 <ehird>
17:51:04 <ehird>
17:51:06 <ehird>
17:51:11 <ehird> I am happy now.
17:51:11 <AnMaster> 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 <ehird> Wow, Kopete just notified me about every single online person after connecting.
17:51:22 <AnMaster> it is an xkb option thingy
17:51:23 <ehird> That was... interesting.
17:51:27 <ehird> AnMaster: I don't want to, though.
17:51:30 <ehird> Alt+Sysrq+K is just fine.
17:51:32 <ais523> ehird: what, everyone online in the entire world?
17:51:32 <AnMaster> ehird, ah okay
17:51:37 <ehird> ais523: Har har.
17:51:50 <ehird> π + 3 ≠ 6
17:52:03 <AnMaster> ehird, I interpreted it like ais..., but realised that was stupid, thus didn't say anything
17:52:12 * ehird ♥ Unicode
17:52:15 <AnMaster> an guessed it must be "friends" or something like that
17:52:22 * ehird ♥s Unicode, even
17:52:26 <AnMaster> ehird, where do you have µ
17:52:26 <ehird> AnMaster: People on my contact list, obviously.
17:52:35 <ehird> Kopete being an instant messenger (sp?).
17:52:41 <ehird> µ.
17:52:41 <ais523> wait, people actually use contact lists?
17:52:43 <ehird> Compose m u.
17:52:49 <ehird> ais523: how else are you meant to use IM?
17:52:51 <ais523> I just memorise the email addresses, or where to look them up
17:52:53 <AnMaster> ehird, yeah, see. I don't jump to insane conclusions. Unlike ais523
17:52:57 <ehird> >_<
17:53:10 <ais523> likewise for IM, although I don't use it much if at all
17:53:15 <AnMaster> ais523, in your mail client? you don't use any address book?
17:53:19 <AnMaster> -_-
17:53:20 <ais523> AnMaster: no
17:53:24 <AnMaster> wth
17:53:26 <ehird> I just use Gmail's email autocomplete
17:53:28 <ehird> But for IM
17:53:28 <AnMaster> ais523, paranoia?
17:53:29 <ais523> apart from my sent and received folders
17:53:34 <ais523> AnMaster: no, just too much effort
17:53:35 <ehird> Ignoring the idiocy of remembering a bunch of crappy email addresses vs making one or two clicks to talk to someone,
17:53:40 <ehird> That doesn't even tell me whether they're online or not.
17:53:53 <AnMaster> ehird, how does gmail's auto complete work. Previous people you sent to?
17:53:56 <ais523> ehird: why does it matter if they're online?
17:53:58 <ehird> AnMaster: Or sent to you.
17:54:03 <AnMaster> if so it is like auto collecting an address book
17:54:04 <ehird> ais523: Because if they're not online, I can't talk to them.
17:54:08 <ehird> AnMaster: Exactly.
17:54:12 <ais523> you mean you don't agree to talk to them in advance?>
17:54:16 <AnMaster> ehird, which my mail client does too
17:54:25 <ehird> ais523: How would I do that? By IMing them?
17:54:30 <ehird> "Hey, can I IM you?" "Sure."
17:54:32 <ehird> "Hi."
17:54:49 <ehird> 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 <ais523> ehird: how do you find out how they are in the first place?
17:55:18 <ais523> all I can think of is Usenet or IRC
17:55:53 <AnMaster> 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 <ehird> 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 <AnMaster> so it is easy to weed them out should that be required
17:56:10 <ehird> 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 <AnMaster> as for IM: I don't use it
17:56:44 <ais523> ehird: and they actually accept being IMed at random times just because they're online?
17:56:46 <AnMaster> irc and email for me
17:56:51 <ais523> sounds as bad as a mobile phone
17:56:51 <AnMaster> forums I avoid when possible
17:56:55 <ehird> ais523: If they have their IM client online, presumably they're willing to talk.
17:57:01 <ehird> You're being pretty idiotic; purposeful or not?
17:57:06 <ais523> ehird: maybe they're trying to talk to someone else?
17:57:18 <ehird> ais523: Most people can hold two separate conversations at once.
17:57:19 <AnMaster> ais523, how does "<ais523> ehird: and they actually accept being IMed at random times just because they're online?" differ from IRC?
17:57:24 <ehird> We do it often in this channel, you know.
17:57:24 <ais523> and slightly purposeful, I'm being far more combative than I need to be
17:57:34 <ais523> AnMaster: because nothing compels me to actually read IRC
17:57:42 <ais523> or to turn highlight on for a channel
17:57:42 <ehird> ais523: Or does it?
17:57:44 <ehird> ais523: I think it does.
17:57:49 <ehird> ais523: I think this compels you to read IRC.
17:57:53 <ehird> ais523: In exactly the same way as IM.
17:57:55 <ais523> ehird: I have unhighlighted a channel before now
17:58:00 <ais523> although, not this one
17:58:16 <ais523> but what I meant for talking to someone else is
17:58:23 <ais523> if you want to talk to person A, you have to set the IM client to online
17:58:34 <AnMaster> you do?
17:58:37 <ais523> even if you aren't open to person B talking to you
17:58:45 <ehird> Look, most people don't mind their friends striking up a conversation with them.
17:58:49 <AnMaster> ais523, can't you set it to busy?
17:58:49 <ehird> If you mind it, that's your problem.
17:59:01 <ehird> In fact, most people *like* it when their friends talk to them.
17:59:05 <AnMaster> as in, online but preocupied
17:59:07 <ais523> ehird: I don't see how most people ever get anything done, then
17:59:26 <ehird> ais523: Did you know that ~15 minute breaks every now and then actually make you more productive?
17:59:29 <ehird> And what AnMaster said.
17:59:32 <ehird> Put it on busy or offline.
17:59:33 <ais523> ehird: yes
17:59:42 <AnMaster> ehird, there is one difference to irc though. Well... to IRC channels. IRC /msg to a single person is more similar
17:59:44 <AnMaster> and that is
17:59:46 <ehird> If someone messages you, say "working, sorry".
17:59:49 <ehird> Simple.
17:59:51 <AnMaster> it is easier to just say "brb" or such
18:00:00 <AnMaster> and ignore the channel for a few hours
18:00:07 <AnMaster> (well "bbl" in that case I guess)
18:00:09 <ais523> hmm, so it's an Internet version of mobile phones, effectively
18:00:13 <AnMaster> when you need to do something else
18:00:20 <AnMaster> ais523, now imagine IM on phones
18:00:23 <ehird> Mobile phones don't have a busy status.
18:00:24 <ais523> probably explains a lot, I don't really understand why people use mobiles either
18:00:28 <ehird> AnMaster: "Imagine"? I have that.
18:00:39 <AnMaster> ehird, well but ais523 is stuck in old tech...
18:00:43 <AnMaster> ehird, I *know* it exists
18:00:52 <ais523> (I am actually angry at people using mobiles, because of the passive effects on the rest of us)
18:00:52 <AnMaster> I just wasn't sure ais523 did
18:00:58 <AnMaster> ...?
18:01:07 <ehird> AnMaster: I think ais523's internal model of social interaction is very, very different to the rest of us
18:01:15 <ais523> (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 <ehird> He seems to view starting a conversation with someone as rude
18:01:19 <ais523> ehird: I do
18:01:28 <ehird> Issues, I think is the word here.
18:01:34 <ehird> Issues.
18:01:46 <AnMaster> ehird, hey, I thought you considered my model of social interaction as different?
18:01:59 <ais523> everyone probably has a different model of social interaction
18:02:05 <ehird> AnMaster: Do you view starting a conversation as rude?
18:02:24 <SimonRC> this argument is stupid
18:02:38 <AnMaster> 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 <ehird> AnMaster: Then you're not that crazy.
18:02:44 <AnMaster> I do get that type of /msg once in a while
18:02:49 <Deewiant> Such a view is a very Finnish attitude to have, actually.
18:02:52 <AnMaster> those are generally very irritating
18:02:56 <AnMaster> Deewiant, which view?
18:03:10 <AnMaster> SimonRC, was that self-referential?
18:03:10 <Deewiant> Viewing starting a conversation as rude.
18:03:17 <SimonRC> AnMaster: heh
18:03:17 <AnMaster> oh
18:03:28 <AnMaster> SimonRC, that was the only way I could read it though
18:04:04 <ehird> This channel is now: The official poop channel 2010
18:04:11 <AnMaster> no
18:04:20 <ehird> All non-poop-related discussion is banned, although esolang discussion will be ignored by the powers that be.
18:04:40 <AnMaster> sigh
18:04:41 <AnMaster> anyway
18:05:03 <ais523> 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 <AnMaster> ehird, tell me if you find a way to reload compose without restarting X
18:05:28 <AnMaster> otherwise I'm going to delay testing pi
18:05:30 <ais523> I should know, most of my attempts to change it to being about esolangs fail
18:05:30 <ehird> AnMaster: Stop being a pussy and press the keycombo.
18:05:40 <ehird> Or the ☃ will be sad.
18:05:44 <AnMaster> ?
18:05:53 <AnMaster> ehird, what? ctrl-alt-backspace you mean?
18:05:59 <ehird> Yes.
18:06:08 <AnMaster> well no thanks, I have some long running stuff I don't want to abort
18:06:13 <AnMaster> graphical ones
18:06:14 <ais523> ehird: I've kept this X session running for about 3 days now
18:06:23 <ais523> it's a bit annoying, though, because hibernate takes longer than shutting down
18:06:34 <ais523> and weirdly, also corrupts the icon cache
18:06:40 <AnMaster> ais523, hm. I usually keep X running for weeks
18:06:45 <AnMaster> ais523, what?
18:06:55 <ais523> AnMaster: the icons that show up when you press alt-tab
18:07:02 <ais523> for some reason, on this computer hibernation corrupts them
18:07:05 <ehird> I was pleasently surprised last night when suspend to RAM worked perfectly and quickly.
18:07:07 <AnMaster> ais523, they are cached?
18:07:08 <ais523> but has no visible other problems
18:07:11 <ehird> Resume took a bit longer than OS X, but it was nice.
18:07:23 <ais523> AnMaster: I assume so, otherwise htf could they change whilst leaving everything else the same?
18:07:25 <AnMaster> ais523, also if that happened, I wouldn't trust hibernation, who knows what else it may corrupt
18:07:37 <AnMaster> ais523, does restarting the program fix the icon?
18:07:40 <ais523> AnMaster: yes
18:07:44 <AnMaster> ais523, you used "htf"?
18:07:48 <AnMaster> YOU?
18:07:52 * AnMaster blinks
18:08:02 <ais523> AnMaster: yes, I don't see how it can be a swear word if it's that abbreviated
18:08:20 <AnMaster> how very.... aisish
18:08:32 <ais523> it has a meaning of its own
18:08:34 <ais523> like "lol"
18:08:40 <ais523> which is nowadays unusable for its original meaning
18:09:18 <AnMaster> 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 <ais523> AnMaster: you're out of touch with modern usage, then
18:10:04 <AnMaster> ais523, correction: I rebel against the modern usage
18:10:05 <ais523> (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 <ehird> ais523, calling someone out of touch
18:10:09 <ehird> classic
18:10:18 <ais523> ehird: depends on what I'm calling them out of touch /with/
18:10:23 <AnMaster> ehird, I was considering saying that. Then realised I was too
18:10:39 <AnMaster> ehird, I did not quite want you to have that much fun
18:10:51 <ehird> [18:08] <AnMaster> 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 <ais523> hey, there's a grammar mistake there
18:11:05 <ehird> Yes, because it's not as if "haha" is an onomatapeeyuh (too lazy to spell) for out-loud laughter or anything.
18:11:09 <AnMaster> ais523, don't*
18:11:09 <ais523> and I only noticed the second time round
18:11:15 <ehird> You're so rebellacious and prescriptivist.
18:11:16 <AnMaster> ais523, the one I meant?
18:11:18 <ais523> what's wrong with me?
18:11:19 <ais523> AnMaster: yes
18:11:26 <AnMaster> ais523, I think I wrote it as /me first then changed my mind
18:12:01 <AnMaster> ehird, I never said I was consistent.
18:12:15 <ais523> 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 <AnMaster> ais523, NCTCP you mean
18:12:32 <AnMaster> or whatever
18:12:37 <ais523> 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 <ais523> AnMaster: "CTCP-ACTION reply"
18:12:52 <ais523> CTCP replies are notices
18:12:55 <ehird> AnMaster: *I don't actually laugh out loud
18:12:59 <ehird> sorry, had to fix it
18:13:05 <AnMaster> ehird, see above
18:13:07 <AnMaster> I fixed it
18:13:09 <ehird> *Sorry, had to fix it, even.
18:13:14 <ais523> I sometimes laugh out loud, and then it's really hard to express what I'm actually doing
18:13:20 <coppro> CTCP is a separate spec
18:13:25 <ais523> because "lol" is already taken, and typing it out is a pain
18:13:25 <ehird> "when I actually don't laugh out loud" is not valid.
18:13:27 <ais523> coppro: ok, point taken
18:13:29 <AnMaster> ais523, well, not sure about action. Since it is rather different from the other ctcp
18:13:30 <coppro> which is followed a lot less than the regular spec
18:13:32 <AnMaster> ctcps*
18:13:40 <ais523> ehird: yes it is
18:13:41 <AnMaster> ais523, for VERSION and such sure
18:13:45 <coppro> though the current iteration of IRC isn't exactly well-implemented either
18:13:53 <coppro> the worst, though, is colors
18:13:57 <coppro> no one implements CTCP colors
18:14:00 <ais523> hmm, ctcps sounds like some sort of secure ctcp
18:14:02 <ehird> mIRC does.
18:14:05 <AnMaster> coppro, ctcp colours?
18:14:06 <ais523> coppro: they exist?
18:14:06 <ehird> As does ChatZilla.
18:14:08 <AnMaster> what the heck is that
18:14:08 <ehird> As does X-Chat.
18:14:13 <ehird> Everyone implements IRC colours.
18:14:14 <ais523> ehird: I thought mIRC sent special character codes
18:14:18 <ehird> Oh.
18:14:19 <ais523> rather than doing a CTCP for them
18:14:22 <ehird> Okay then.
18:14:24 <coppro> no, everyone implements mIRC colors
18:14:26 <coppro> not CTCP ones
18:14:34 <AnMaster> so what are ctcp colours
18:14:41 <AnMaster> is*
18:14:51 <ais523> not sure, but I think they might be based on literal control-Cs
18:14:57 <ais523> like CTCP's based on literal control-As
18:15:02 <coppro> http://www.invlogic.com/irc/ctcp.html#3.6
18:15:37 <coppro> mIRC uses ^C
18:15:40 <ais523> my guess is that the reason nobody implements that is that nobody implements CTCPs inline in normal messages
18:15:45 <coppro> but CTCP uses ^FCA<color><color>
18:15:50 <ais523> which is strange
18:16:04 <coppro> same with other formats
18:16:10 <coppro> bold, for instance, is usually just ^B
18:16:13 <coppro> not ^FB
18:17:24 <AnMaster> coppro, what is the format of <color>?
18:17:35 <AnMaster> hey that spec is spelled properly
18:17:37 <AnMaster> <colour>
18:17:37 <lieuwe> almost done writing an overcomplicated bf->python converter...
18:17:46 <ehird> *spelt
18:17:53 <AnMaster> ehird, indeed
18:17:55 <coppro> trying to work that out
18:17:56 <ehird> lieuwe: Is it over 20 lines?
18:17:59 <coppro> ah, so it is
18:18:01 <coppro> yay
18:18:01 <lieuwe> ehird: yes
18:18:05 <fizzie> AnMaster: Ot0-F, an index into the usual-ish 16-colour palette.
18:18:07 <ehird> lieuwe: Rewrite it.
18:18:12 <AnMaster> coppro, ?
18:18:12 <ehird> :P
18:18:14 <fizzie> s/Ot/It's a hex digit in /
18:18:20 <coppro> either IX, where X is a hex digit
18:18:28 <coppro> or an #XXXXXX code
18:18:28 <ais523> fizzie: that's a pretty crazy typo
18:18:33 <lieuwe> ehird: it contains a tokenizer and a grammar analyzer, but the point is that you can write different langs for it...
18:18:48 <ehird> ṕóóṕ
18:18:57 <AnMaster> fizzie, is that for ctcp colour or mirc?
18:19:02 <lieuwe> ehird: you could write a anything->anything converter for it...
18:19:13 <AnMaster> oh it supports full also
18:19:15 <AnMaster> rigt
18:19:16 <AnMaster> right*
18:19:18 <ehird> An anything->anything converter enabler?
18:19:24 <ehird> You mean a language in which you can write compilers?
18:19:25 <ais523> Underlambda!
18:19:39 <AnMaster> ehird, over 20 lines is okay for optimising
18:19:40 <lieuwe> ehird: pretty much,
18:19:40 <ehird> ais523: Is Underlambda implemented yet?
18:19:44 * ais523 wants to write everything->underlambda and underlambda->everything
18:19:44 <AnMaster> with enough optimising I mean
18:19:45 <ais523> ehird: partially
18:19:50 <ais523> the spec isn't pinned down yet
18:20:06 <ais523> and derla, especially, is rather light on implemented commands
18:20:11 <fizzie> 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 <ais523> next jobs are probably pinning down I/O, and string handling
18:20:37 <AnMaster> fizzie, and where is the table?
18:21:04 <fizzie> AnMaster: In the spec coppro linked to.
18:21:04 <AnMaster> oh there
18:21:09 <AnMaster> not near the colour command at all
18:21:28 -!- kar8nga has quit (Remote closed the connection).
18:21:44 <AnMaster> fizzie, oh that is I<value from colour table>
18:21:47 <AnMaster> fizzie, as defined above
18:22:21 <fizzie> AnMaster: Yes, I know. That's why the text immediately above the table is a bit misleading.
18:22:36 <AnMaster> ais523, also everything->underlambda seems very ambitious. ;P
18:22:45 <AnMaster> ais523, for a single compiler at least
18:22:47 <ais523> AnMaster: maybe not directly
18:22:54 <ais523> and it would be loads of separate compilers
18:23:12 <ais523> maybe interp-bundling ones, I don't really care about efficiency for that bit
18:23:41 <AnMaster> 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 <AnMaster> ais523, also, does underlambda support self modification?
18:24:32 <ais523> not directly, in that the syntax is always the same
18:24:46 <ais523> you can do some pretty heavy command redefinition with the preprocessor, but not at runtime
18:24:53 <AnMaster> ais523, I meant as in "befunge98 -> underlambda"
18:24:56 <fizzie> 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 <ais523> AnMaster: that's perfectly fine, you just bundle a befunge interp written in underlambda
18:25:15 <AnMaster> ais523, well give up on "everything" then. For compilers. Interpreters would work
18:25:23 <ais523> AnMaster: that is a compiler, technically
18:25:24 <AnMaster> ais523, well true, but that hardly counts as compiling really
18:25:33 <ais523> and the reason to do it like that is so that compilations can be chained
18:25:39 <ais523> so you can, say, compile Unlambda to Thue
18:26:07 <AnMaster> ais523, technically yes. But it isn't really in the spirit of compilation.
18:26:20 <ais523> it is in the spirit of cross-implementing all esolangs, though
18:26:25 <ais523> which is what Underlambda is for
18:26:54 <AnMaster> ais523, not in the spirit, rather "in the interest" would be better there
18:27:00 <lieuwe> i think i might have the most over-complicated hello world program in python here, 148 lines O.o
18:27:04 <ais523> AnMaster: spirit too
18:27:12 <ais523> lieuwe: you should see my hello world in brainfuck
18:27:16 <ais523> that's several megabytes long
18:27:22 <ais523> mostly stdlib overhead
18:27:36 <AnMaster> lieuwe, because it was generated by his C->BF gcc backend
18:28:15 <lieuwe> ais523: O.o, my hellow world was compiled from bf to python, imagine how long that one would be :-O
18:28:24 <AnMaster> ais523, also, what about banana-scheme->unlambda?
18:28:42 <AnMaster> ais523, and unlambda→<various slightly sub-TC languages>
18:29:02 <ais523> AnMaster: only cross-implementing TC langs
18:29:09 <ais523> and maybe sub-TC -> underlambda
18:29:13 <ais523> unlambda itself is a pain to compile out of
18:29:19 <ais523> so you'd want to go via underlambda
18:29:21 <AnMaster> ais523, and underlambda->super-tc?
18:29:33 <ais523> AnMaster: possibly, but it's so hard to test that I might not bother
18:29:45 <AnMaster> ais523, oh? you said you wanted underlambda should be used for cross implementing?
18:29:55 <AnMaster> if it is a pain to compile out of, then what is the point
18:30:11 <ais523> you are muddling Unlambda and Underlambda
18:30:15 <ais523> Unlambda = pain to compile out of
18:30:22 <AnMaster> ais523, also can you really implement befunge98 with all fingerprints required for fungot to run in underlambda
18:30:23 <fungot> AnMaster: ee ' /ignore foo all' maybe then. dunno, your fnord
18:30:26 <ais523> Underlambda = easy to interpret out of, and moderately difficult to compile out of
18:30:27 <AnMaster> ais523, typo then
18:30:40 <ais523> AnMaster: as I said, I/O isn't decided yet
18:30:48 <ais523> but nothing else should be problematic, given TCness and all
18:30:56 <AnMaster> ais523, sure it would. Since it uses SOCK
18:30:59 <AnMaster> for socket IO
18:31:12 <AnMaster> ais523, you thought fungot used netcat or something?
18:31:13 <fungot> AnMaster: are there any builtin plain string matching functions? i'm just using the windows standalone
18:31:51 <ehird> psox
18:32:02 <ais523> AnMaster: what's making you think that socket I/O isn't I/O?
18:32:02 <ehird> all you need is stdio + special semantics for io
18:32:04 <ais523> I don't get your reasoning here
18:32:12 <ehird> ais523: Sockets are MAGIC, dude!
18:32:19 <AnMaster> ais523, well, they are different from file IO
18:32:30 <AnMaster> 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 <ehird> "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 <AnMaster> ais523, plus, SOCK supports listening to incomming connections to. Which means bind() accept() and such
18:32:57 <ehird> I like the part where he admits it's causing no damage whatsoever to him
18:33:01 <ais523> AnMaster: it is still, nevertheless, I/O
18:33:21 -!- ais523 has left (?).
18:33:24 <AnMaster> well true
18:33:34 <ehird> blah = cat /dev/foop
18:33:39 <ehird> blah == /dev/foop3 or w/e
18:33:41 <ehird> tada, listening
18:33:43 <AnMaster> hm?
18:33:57 <AnMaster> ehird, how do you mean.
18:34:41 <AnMaster> "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 <ehird> AnMaster:
18:35:20 <ehird> open file /dev/listen
18:35:27 <ehird> write "5432"
18:35:31 <ehird> x = read
18:35:35 <ehird> print x --> /dev/foop
18:35:38 <ehird> open file x
18:35:40 <ehird> y = read
18:35:46 <ehird> print y --> /dev/foop47
18:35:49 <ehird> open file y
18:35:52 <ehird> ...use y as socket...
18:38:56 <lieuwe> after i've implemented bf what should i implement next?
18:39:21 <ehird> Underload!
18:39:37 -!- ais523 has joined.
18:39:40 <ehird> π³ ≠ 27. Hooray for Compose.
18:39:44 <SimonRC> re-implement CLC-INTERCAL?
18:39:46 <ehird> ais523: I thought you were working.
18:39:48 <ehird> SimonRC: ouch
18:39:49 <ais523> I am
18:39:54 <ais523> but I like keeping an eye on a channel
18:39:55 <AnMaster> ehird, sure, but the OS doesn't have it?
18:39:57 <ais523> I actually got something done, though
18:40:08 <ais523> I'm going to continue working nevertheless, and may have to leave again
18:40:11 <AnMaster> well, Plan9 does I guess
18:40:13 <AnMaster> but not linux
18:40:38 <lieuwe> ehird: implementing underload...
18:40:45 <ais523> yay, Underload
18:40:53 <ais523> lieuwe: compiling or interpreting?
18:41:14 <lieuwe> ais523: compiles to python, which is interpreted...
18:41:22 <ehird> Compiling Underload is fun.
18:41:28 <ehird> I pioneered that</ego>
18:41:47 <ais523> ehird: your optimised compiler is of a similar speed to derlo on large programs, I find
18:42:08 <ais523> and derlo's memory usage is a lot lower when faced with code like :*:*:*:*:*:*
18:42:11 <ehird> ais523: My compiler didn't optimise
18:42:18 <ais523> well, you used -O3
18:42:20 <ehird> Also, it would be "your optimising compiler".
18:42:22 <ais523> that's a form of optimising
18:42:22 <ehird> Oh.
18:42:29 <ehird> I see.
18:42:35 <ehird> ais523: It was just a proof of concept.
18:42:41 <ehird> I could write a better one if I wanted.
18:42:49 <ais523> derlo's more optimising, I hope to implement optimised integers at some point
18:42:50 <ehird> Nobody said the strings and the code had to match, after all.
18:42:54 <ehird> So you could do a good bit of optimising there.
18:42:58 <ehird> grr, (set-fringe-style 'left-only) doesn't work
18:43:06 <ais523> what is the fringe?
18:43:30 <ehird> The little grey border to the left and right.
18:43:34 <ehird> (X11 only.)
18:43:36 <ehird> Well, graphical only.
18:44:04 <ais523> ah, which shows you things like lines wrapping
18:44:36 <ehird> It's ugly at the right because the scrollbar is right next to it for me.
18:44:53 <ehird> Although I'd prefer it just be white, instead; having the text run right up against the scrollbar is ugly too.
18:45:19 <ehird> I wish I knew how to set faces without using customise.
18:45:21 <ehird> *customize
18:46:50 <ehird> grr, why can't you drag to rearrange in KDE's taskbar?
18:47:23 -!- lieuwe has quit ("Page closed").
18:47:27 <ais523> ugh, how do you do comments in LaTeX again?
18:47:34 <ehird> % Poop
18:47:45 <ehird> Or % Poop if you want
18:47:46 <ais523> hmm, I was wondering if it was \comment{}
18:47:46 <ehird> ...
18:47:49 <ehird> Or % Poop if you want
18:47:51 <ehird> ...
18:47:54 <ehird> Or %% Poop if you want
18:47:59 <ehird> Konversation does %% -> %...
18:48:04 <ais523> yes
18:48:12 <ais523> because % introduces escape codes
18:48:16 <ais523> %Atime%A
18:48:22 <ehird> %Atime%A
18:48:24 <ehird> No it doesn't
18:48:25 <ais523> hmm, although you can't do ctcps with it it seems
18:48:30 <ehird> poop
18:48:30 <ais523> %Bbold%B works
18:48:31 <ehird> poop
18:48:35 <ais523> but this channel is +c
18:48:36 <ehird> poop
18:48:41 <ehird> poop
18:48:52 <ais523> ehird: heh, %I = tab = italics
18:48:56 <ehird> Yeah.
18:49:02 <soupdragon> read it yet ehird
18:49:04 <ais523> (Konversation treats tab as toggle-italics, which can be annoying)
18:49:08 <ehird> soupdragon: Read what?
18:49:12 <ehird> ais523: that's the correct interpretation
18:49:12 <soupdragon> that buke
18:49:14 <fizzie> 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 <soupdragon> metamorphisi
18:49:19 <ehird> although some clients use it as invert
18:49:21 <ehird> soupdragon: no
18:49:24 <ehird> fizzie: Yes, I figured that out.
18:49:25 <soupdragon> foo!!!
18:49:27 <ehird> Thanks anyway.
18:49:32 <ehird> There should be a way to enable formatting but no colours.
18:49:44 <ehird> I like italics and bold but not red or green.
18:51:00 <ehird> The simplest Emacs Lisp function ever written:
18:51:03 <ehird> (defun run-frink ()
18:51:05 <ehird> (interactive)
18:51:05 <ais523> ehird: do you care enough to write a patch?
18:51:06 <ehird> (comint-run "frink"))
18:51:16 <ehird> ais523: What, to the ircd?
18:51:22 <ehird> I mean for +c and the like.
18:51:23 <ais523> oh, you mean in a channel?
18:51:29 <ehird> There should be +½c.
18:51:33 <ais523> I thought you meant to Konversation, to display only the colours you liked
18:51:37 <ehird> Naw.
18:51:42 <ais523> so you could allow, say, soothing lilac but not clashing orange
18:52:00 <ehird> ais523: you should join #amend. :|
18:52:08 <ais523> not while I'm busy
18:52:16 <ais523> stupid Research Skills course, it's the PhD version of PSE
18:52:18 <ehird> Hey, there's less talk in there than in here. :P
18:52:28 <ehird> ais523: lol
18:52:45 -!- kar8nga has joined.
18:52:59 <ais523> (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 <ais523> (and is generally considered a waste of time; the syllabus theoretically includes potentially interesting areas, but the lessons never cover them)
18:53:28 <soupdragon> I don't speak Arabic. - لا أتكلم العربية - lā atakallamu al-ʿarabīyah
18:53:28 <ehird> I swear skills is a backronym from sex.
18:53:45 <ehird> No hablas Inglais or something.
18:53:48 <soupdragon> ehird I voted alter why is it not called alter?
18:54:01 <ais523> ehird: it mostly/entirely isn't even sex education
18:54:01 <ehird> soupdragon: turns out polls take more than one sample :D
18:54:02 <ais523> as you know
18:54:17 <ais523> ehird: what was the final result?
18:54:23 <ehird> ais523: You can't prove that they didn't create it just to avoid having a lesson named sex education. :P
18:54:28 <ehird> 3:3:1
18:54:46 <soupdragon> polls are wrong
18:54:47 <ehird> (Ørjan picked Other, but refused to specify.)
18:54:51 <Pthing> in primary school, before we had sex classes we got sealed brown envelopes to give to our parents
18:54:52 <fizzie> 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 <ais523> literacy! numeracy! computer-literacy!
18:55:03 <ais523> and three others which nobody ever remembers!
18:55:05 <ehird> soupdragon: Well, since it was a draw I just picked the one I liked best.
18:55:11 <Pthing> and the classroom rumour was "oh i heard of this! this is PSE and it means personal sex education"
18:55:16 <soupdragon> reading, riting, rithmetic, rogramming
18:55:17 <Pthing> half true
18:55:38 <ais523> oh, working with others, improving own learning and performance, and problem solvings
18:55:44 <ehird> Reeling and writhing, etc.
18:55:52 <ais523> *problem solving
18:55:55 <Pthing> Values
18:55:59 <Pthing> we had a class on Values
18:56:26 <ehird> with a capital V
18:56:26 <soupdragon> the four R's
18:56:31 <soupdragon> the four Rs*
18:56:34 <ais523> most of our PSE lessons were just incomprehensible
18:56:47 <ais523> there was one about a moon mission with a list of phrases to put into order
18:56:52 <ehird> XD
18:56:55 <ais523> to do with prioritisation, or something
18:57:02 <ais523> also, about half were spent teaching us how to fill out UCAS forms
18:57:03 <ehird> Are you sure it wasn't the LSD lesson?
18:57:14 <ehird> Oh, or the TPS lesson.
18:57:18 <ais523> which I suppose is really relevant to the school's results
18:57:22 <ais523> so it's important to them
18:57:42 <ais523> there were also a couple with an automated careers thing
18:57:53 <ais523> where you answered an 100-question questionnaire and it tried to guess which job you'd end up in
18:58:13 <ais523> I don't think it was all that reliable
18:58:20 <ehird> what did it say for you?
18:58:35 <ehird> also isn't that terribly demoralising
18:58:40 <ehird> "I want to be an astronaut!" "You will be a bin man"
18:58:45 <Pthing> yes
18:58:52 <ais523> ehird: computer games programmer, I think
18:58:52 <Pthing> marxchat
18:58:53 <fizzie> A bin man must be something related to binary.
18:58:57 <ehird> ais523: Close enough.
18:59:06 <ais523> ehird: yes, that was one of the closer ones
18:59:13 <Pthing> although the questions were things like
18:59:18 <ais523> I remember someone else in my class was told that they should become a croupier
18:59:21 <Pthing> "i like being ordered around to kill people"
18:59:26 <ais523> and my form teacher was supposed to be a gardnere
18:59:29 <ais523> *gardener
18:59:30 <Pthing> "i like doing scientific experiments"
18:59:46 <ehird> "I like being ordered around to kill people as part of scientific experiments"
18:59:52 <Pthing> we didn't get anything as firm as one thing, just a list of like 30 or so things
18:59:57 <AnMaster> ais523, still "working"?
18:59:59 <ais523> yes
19:00:09 <AnMaster> ais523, nice multitasking :)
19:00:57 <ehird> yay Frink accepts π as pi
19:01:19 <ais523> what is Frink?
19:01:26 <ehird> http://futureboy.us/frinkdocs/
19:01:27 <ais523> and why are you going on about it so much?
19:01:35 <ehird> I'm just setting it up in Linux.
19:01:45 <ehird> And tested that Compose worked with it.
19:01:54 <soupdragon> frink seems way cool
19:02:02 <ehird> it totally is. :|
19:03:42 <ais523> DSL designed for physical calculations?
19:04:18 <ais523> hmm, with hints of Mathematicaitis about it
19:04:25 <ais523> although, I suppose that sells to its target market
19:04:42 <ehird> It's not even remotely Mathematica-like.
19:04:53 <ehird> It's symbolic, yes, and it uses [] for function application because f(x) is f*x.
19:04:55 <soupdragon> it made me think of mathematica
19:04:56 <ais523> (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 <soupdragon> fwiw I don't program in either langauge
19:05:09 <ais523> (that's what I mean by Mathematicaitis in this case)
19:05:17 <ehird> ais523: Because it's a calculator, not a batch programming language.
19:05:28 <ehird> It does have non-core libraries, anyway: http://futureboy.us/fsp/frinklibs.fsp
19:05:35 <ais523> still, it feels wrong not having that data be separate
19:05:49 <ehird> Only if you think about it as a batch programming language.
19:06:30 <ais523> even as an interactive language
19:07:17 <ehird> 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 <ehird> ais523: see, when you say "historical exchange rates should be in a library", I see that as
19:07:39 <ehird> "regexp processing should be in a library in Perl"
19:07:48 <ehird> it isn't, because it's far more convenient and quick to access this way
19:07:54 <ehird> which is the intended use
19:08:15 <ais523> meh, you could even set it to load by default
19:08:29 <ais523> is Frink batch-usable even if that isn't the intended use?
19:09:06 <ehird> Yes.
19:09:33 <ehird> It's not so much unintended as not the main use.
19:09:50 <ehird> Anyway, I find it more convenient this way and I'm sure Alan Eliasen, the author, does too.
19:10:08 <ais523> Frink++ for the Junkyard Wars reference, anyway
19:10:13 <ais523> I used to love Scrapheap Challenge
19:10:25 <ais523> and the US version wasn't as ruined as the US versions of most gameshows are
19:11:00 <ehird> "fathoms water gravity barrel" is one of my favourite strings.
19:13:40 <ehird> So if one meter is 200 million beardseconds, why aren't we counting in 100 million beardseconds?
19:14:48 <ais523> ehird: what, exactly?
19:14:56 <ehird> ?
19:15:37 <ehird> I guess 100 million beardseconds is 1 hMbs (hecto-mega beardsecond.) :-D
19:15:49 <ais523> ehird: as in, does 100 million beardseconds = 0.5m exactly, or approximately?
19:15:58 <ehird> 1 beardsecond := 5 nm
19:16:03 <ehird> It's a novelty unit, not an actual measured thing.
19:16:18 <ais523> I guessed it was a novelty unit
19:16:23 <ais523> although presumably the beard has an actual purpose
19:16:30 <ehird> 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 <ehird> conversion factor.[5]
19:16:40 <ehird> I see 5 nm most often.
19:17:15 -!- lament has joined.
19:17:27 <ehird> So, the kilometer will be replaced with the khMbs.
19:17:31 <ehird> The kilo-hecta-mega beardsecond!
19:17:50 <ehird> aka the hecto-giga beardsecond
19:18:33 <soupdragon> http://www.google.co.ck/search?q=432+beard+seconds+in+attoparsecs
19:18:34 <soupdragon> NICE
19:19:15 <ehird> 432 beardseconds -> attoparsecs
19:19:17 <ehird> 0.000070000832656209624476
19:19:21 <ehird> Just to re-inject some Frink fanboyism into the discussion.
19:19:32 <ehird> (Admittedly I had to do beardsecond := 5 nm, but it defined the plural form for me automatically.)
19:19:43 <soupdragon> cool
19:21:07 <ais523> ehird: also, it gets commented on by Peter Norvig, which is also very cool
19:21:41 <AnMaster> ais523, who is that
19:21:52 <ehird> AnMaster: you are no longer welcome here →
19:22:15 <AnMaster> ehird, hey, ais523 didn't know who jwz was
19:22:24 <ais523> AnMaster: http://en.wikipedia.org/wiki/Peter_Norvig
19:22:39 <soupdragon> what's so good about Norvig?
19:22:40 <AnMaster> oh that guy at google
19:22:41 <ais523> I didn't actually know he worked for NASA/Google, though
19:22:42 <ehird> jwz is just a cool dude, not an excellent computer scientist
19:22:49 <ais523> I knew of him from his research
19:22:55 <soupdragon> I only read his PAIP book
19:23:14 <AnMaster> ais523, which part of it?
19:23:36 <ais523> AnMaster: it's all over the place
19:23:48 <ais523> as in, randomly searching for research you just think "oh, it's Norvig again"
19:23:50 <ais523> he's that good
19:24:14 <soupdragon> what did he do??
19:24:22 <soupdragon> I can't remember ever coming across his work :/
19:24:40 <ais523> soupdragon: then you're working in the wrong area
19:24:48 <soupdragon> what are should I be in
19:24:56 <ais523> the first time I saw his work it was some minor AI result
19:25:08 <soupdragon> I read his AI book PAIP
19:25:37 <soupdragon> to learn Lisp
19:30:40 <ehird> Grr, I really want to move these taskbar items.
19:32:21 <AnMaster> ehird, hm?
19:32:24 <AnMaster> reoder?
19:32:26 <AnMaster> re-order*
19:32:33 <ehird> Yes.
19:32:42 <AnMaster> ehird, from what, to what?
19:33:12 <ehird> I want to move a window entry.
19:33:25 <AnMaster> right
19:33:47 <AnMaster> ehird, as in, move it from alphabetical order to something else?
19:33:57 <ehird> It's not alphabetical, it's in opening order.
19:34:00 <ehird> I just want to move one entry, ffs.
19:34:06 <AnMaster> I se
19:34:08 <AnMaster> see*
19:34:19 <AnMaster> ehird, never heard of that feature
19:34:20 <ais523> can't you just drag them? that works in Gnome, I thought it worked in KDE too
19:34:27 <ehird> I thought it did too
19:34:28 <ehird> AnMaster: what????
19:34:32 <AnMaster> oh it does indeed
19:34:37 <ehird> [ Firefox poop ]
19:34:39 <ehird> Click, drag, drop.
19:34:41 <ehird> Moved.
19:34:44 <AnMaster> ehird, well in firefox yes
19:34:44 <ehird> This is really, really standard stuff.
19:34:47 <ehird> ...
19:34:49 -!- augur has joined.
19:34:50 <AnMaster> never tried in taskbar under gnome
19:34:50 <ehird> I MEANT A FIREFOX WINDOW
19:35:00 <AnMaster> pretty sure it didn't work in the taskbar of KDE
19:35:03 <AnMaster> on KDE 3.5
19:35:17 <AnMaster> ehird, oh I thought you meant system task bar
19:35:21 <ais523> 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 <ehird> I did.
19:35:25 <ais523> AnMaster: yes, system task bar
19:35:36 <AnMaster> ais523, heh
19:38:56 <oklofok> 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 <ais523> well, some people become binmen, presumably they do it through choice
19:39:42 <soupdragon> oklofok good point !!!
19:39:44 <oklofok> not that it defeats your point, just attacking your example, for no reason
19:39:47 <ehird> oklofok: no shit
19:39:49 <ehird> it was a joke
19:40:09 <ais523> ehird: um, that's no reason not to take it seriously
19:40:12 <ais523> especially in /this/ channel
19:40:17 <ais523> half the on-topic stuff we discuss is jokes
19:40:24 <ehird> bah :P
19:41:47 <oklofok> 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 <oklofok> this is what happens when environments are separated from the outer game, but made to look like it
19:42:38 <oklofok> oh my god the trees are beautiful
19:42:43 <oklofok> i was just outside again
19:42:47 <oklofok> and like... snow
19:42:53 <oklofok> and trees..... wow
19:43:03 <ais523> the canal's nice here, it's frozen over
19:43:03 <oklofok> my head hurts
19:43:06 <ais523> which is pretty rare
19:43:11 <oklofok> should read some measure theory, exam tomorrow
19:43:17 <soupdragon> woah measure theory
19:43:33 <oklofok> frozen masses of water look sorta boring usually
19:43:38 <oklofok> "woah"?
19:43:50 <soupdragon> woah
19:43:53 <oklofok> woah.
19:44:27 <Pthing> woajhhhhh
19:46:29 <oklofok> 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 <oklofok> i might even sleep a few hours tonight
19:47:02 <soupdragon> I would have thought real analysis is easier than measure theory
19:47:29 <augur> hey kiddles
19:47:33 <augur> soupdragon:
19:47:35 <augur> no :
19:47:43 <soupdragon> hello
19:48:06 <oklofok> our MT course was basically about lebesque and a few other measures, measurable functions, and basic results about lebesque integration
19:48:14 <ehird> Lesbianesque. (What?)
19:48:29 <oklofok> the RA course builds a lot of structures over the framework
19:49:04 <ehird> I want to write a spreadsheet program, but:
19:49:10 <ehird> - it'd be best as a mode in my editor
19:49:13 <ehird> - my editor isn't done yet.
19:49:14 <oklofok> but writing programs is annoying
19:49:14 <ehird> Hmph.
19:49:15 <oklofok> i know
19:49:23 <ehird> oklofok: Thankfully not :P
19:50:13 <oklofok> well it's a bit annoying! (?)
19:50:21 <ehird> I wish kioslaves worked with Firefox so I could use man:/ :(
19:50:24 <soupdragon> if you master all this stuff you can probably catch up with Terry Tao
19:50:44 <ais523> ehird: is there an extension for that?
19:50:57 <ehird> ais523: Probably not.
19:51:12 <oklofok> soupdragon: yes, the advanced courses of our university are so hard mastering their content makes you a supergenius
19:51:13 <ehird> What would work is a KIOSlave FUSE FS.
19:51:38 <ehird> Then you could rewrite it to file:///mnt/kioslaves/man:(1)
19:51:42 <ais523> yep, apparently not
19:51:49 <ais523> you'd expect someone to have written one by now
19:51:56 <ehird> It's impossible.
19:51:56 <AnMaster> <ehird> I wish kioslaves worked with Firefox so I could use man:/ :( <-- I thought you hated firefox?
19:52:01 <ehird> Extensions are just JavaScript.
19:52:01 <AnMaster> saying it was shit and such
19:52:05 <ehird> AnMaster: It is.
19:52:22 <ais523> ehird: no they aren't, they can get into the internals too
19:52:25 <ais523> e.g. vimperator
19:52:26 <oklofok> yeah ff is the shit
19:52:28 <AnMaster> <ehird> Extensions are just JavaScript. <-- in firefox? No you can load *.so
19:52:34 <pikhq> ehird: http://wiki.kde.org/tiki-index.php?page=KIO+Fuse+Gateway
19:52:36 <AnMaster> ehird, then why use it
19:52:36 <ehird> AnMaster: That's a plugin, not an extension.
19:52:44 <ehird> And Netscape API plugins are just for embedded content.
19:52:48 <pikhq> ... Argh.
19:52:51 <pikhq> Dead link.
19:52:59 <ehird> ais523: That's not getting into the internals.
19:53:06 <ehird> Firefox's UI is written in XUL and JavaScript.
19:53:13 <AnMaster> <ehird> 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 <ehird> So of course JavaScript extensions can access it.
19:53:15 <ais523> you can mess with the XUL, at least
19:53:20 <AnMaster> I would be surprised if you can't in firefox too
19:53:20 * oklofok goes master stuff
19:53:22 <oklofok> ->
19:53:48 <ehird> Anyway, hooking into Firefox's actual URL-loading code and routing it to KDE sounds unfun.
19:53:56 <ehird> As in "huge pain in the arse" unfun.
19:54:31 <AnMaster> <pikhq> ehird: http://wiki.kde.org/tiki-index.php?page=KIO+Fuse+Gateway <-- 404
19:54:35 <AnMaster> oh said already
19:57:17 <ehird> 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 <ehird> I see no issue with this!
19:57:55 <ais523> reminds me of Emacs
19:59:14 <soupdragon> 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 <lieuwe> 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 <augur> 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 <ehird> Insert the item into the program.
20:01:04 <ehird> lieuwe: You can think of (...) as a function.
20:01:05 <ehird> ^ is call.
20:01:11 <ehird> Or (...) is a string and ^ is eval.
20:01:30 <lieuwe> ehird: ah, so it inserts and then just continues with the rest off the program...
20:02:08 <ehird> 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 <ehird> lieuwe: Yeah; otherwise, complex control flow would be impossible.
20:02:27 <ehird> ...at least, I think so. ais523?
20:02:55 <ais523> lieuwe: basically, imagine characters removed from the program as they're executed
20:03:00 <ais523> because there's no way to go back to them anyway
20:03:04 <ehird> No, I meant
20:03:17 <lieuwe> does the s operator print a newline?
20:03:19 <ais523> ^ inserts the top stack element just after the current IP, without overwriting anything, it's an insert
20:03:20 <ehird> Is Underload turing-complete if ^ is "execute the top element on the stack, then quit"?
20:03:22 <ehird> lieuwe: No.
20:03:24 <ais523> lieuwe: no, S doesn't
20:03:27 <ais523> you can write (
20:03:28 <ais523> )S
20:03:30 <ais523> to print a newline
20:03:35 <lieuwe> ehird: ah, ok, thnx
20:03:46 <ais523> ehird: I think so, because that's Muriel's control-flow operator
20:03:52 <ais523> but it would be a different sort of language
20:04:29 <ehird> Well, let's try and write programs in it!
20:04:59 <ehird> Hmm. I just realised I don't have sound.
20:05:20 <ehird> Fixed.
20:05:22 <lieuwe> 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 <ais523> ^ is the only way to write to the program, though
20:05:55 <ais523> you can see it in several different ways
20:06:03 <ehird> truncating ^
20:06:04 <ais523> a function call, an eval, or replacing the ^ with the top stack element
20:06:05 <ehird> hmm
20:06:07 * ehird writes an infinte loop
20:06:09 <ehird> *infinite loop
20:06:10 <ehird> (:^):^
20:06:12 <ais523> ehird: (:^):^
20:06:12 <ehird> Well that was easy
20:06:13 <ehird> No change there
20:06:30 <ehird> Gah, Flash on Linux is desynchronised from the audio as always.
20:06:53 <ehird> ais523: hmm... the problem is that there's not really any simple-but-non-trivial Underload programs
20:07:05 <ehird> because they're all either trivial, or mind-boggling
20:07:16 <ais523> the fibonacci's pretty simple
20:07:20 <ehird> well, actually
20:07:22 <ehird> I think we can write
20:07:26 <ehird> (x)^y
20:07:28 <ehird> as
20:07:41 <ais523> !ul (()(*))(~:^:S*a~^a~!~*~:(/)S^):^
20:07:44 <ehird> (x<get to y>^)(y)~^
20:07:45 <ehird> No?
20:07:48 <ais523> ^ul (()(*))(~:^:S*a~^a~!~*~:(/)S^):^
20:07:49 <fungot> */*/**/***/*****/********/*************/*********************/**********************************/*******************************************************/*****************************************************************************************/********************************************************************************* ...too much output!
20:07:55 <ehird> Although that'd make (!)^foo problematic.
20:07:56 <ais523> forgot EgoBot didn't do Underload...
20:08:00 <ehird> oh, wait!
20:08:02 <ehird> It's obvious
20:08:03 <ehird> (x)^y
20:08:05 <ehird> ->
20:08:08 <ehird> (x)(y)*^
20:08:16 <ais523> yes
20:08:32 <ais523> how do you handle (a^b)^c, though?
20:09:01 <ehird> (a(b)*(c)*^)^
20:09:19 <ehird> by doing these rewrites:
20:09:22 <ehird> (a^b)^c
20:09:31 <ehird> (a(b)*^)^c
20:09:37 <ais523> hmm, I'm not sure if that works if b manipulates the stack
20:09:38 <ehird> (a(b)*^)(c)*^
20:09:39 <ehird> oh
20:09:42 <ehird> There we go
20:09:46 <ehird> Easy
20:09:58 <ais523> ehird: easy, but wrong
20:10:13 <ais523> executing that gives (a(b)*^c)^
20:10:24 <ais523> = a(b)*^c
20:10:40 <ais523> and the c never runs because it's after an ^
20:10:47 <ehird> ah, of course
20:10:50 <ehird> Let me continue the rewriting then
20:10:54 <ehird> (a(b)*^)(c)*^
20:11:01 <ehird> (a(b)*^c)^
20:11:05 <ehird> (a(b)*(c)*^)^
20:11:16 <ehird> because (f)(g)* = (fg)
20:11:30 <ehird> and then we just apply the regular a^b = a(b)*^ rule
20:11:36 <ais523> what does (a)(^)*^b become?
20:11:47 <ehird> (a)(^)*^b
20:11:54 <ehird> (a)(^)*(b)*^
20:11:59 <ehird> (a^b)^
20:12:04 <ais523> ehird: you're evaluating the program, though
20:12:05 <ehird> (a(b)*^)^
20:12:12 <ehird> ais523: This isn't a machine translation
20:12:15 <ehird> This is for humans to do
20:12:19 <lieuwe> is the S command always uppercase?(does it HAVE to be, or is lowercase also fine?)
20:12:25 <ais523> ehird: but I mean, that process could go into an infinite loop
20:12:27 <ais523> lieuwe: has to be uppercase
20:12:30 <ais523> and a has to be lowercase
20:12:46 <ehird> ais523: So apply human ingenuity.
20:12:48 <lieuwe> ais523: :-p
20:12:59 <ehird> For most programs, it should be a relatively simple translation.
20:13:21 <ais523> ehird: I'm pretty sure it is TC, but that this isn't the way to go about a proof
20:14:22 <ehird> I wasn't trying to prove it turing-complete.
20:14:33 <ehird> I was trying to prove that it is quite a trivial variant of Underload for most programs.
20:14:48 <ais523> I wouldn't call having to execute most of the program to compile a trivial variant
20:15:00 <ais523> that's like, saying that replacing a program with its output is a trivial variant
20:16:08 <ehird> It's a trivial variant FOR HUMANS TO TRANSLATE MOST PROGRAMS TO.
20:16:12 <ehird> Jesus christ.
20:16:37 <ehird> I wish this mouse's left button was as easy to press as its right button.
20:17:50 <ehird> http://web11.twitpic.com/img/56256770-1eafd0a10499dc58601394e9fefa9c57.4b4a35c3-scaled.jpg Haskell's Tower of Babel
20:18:08 <ehird> s/$/./
20:18:10 <ais523> ehird: I don't see how it's trivial at all, for large programs
20:18:35 <lieuwe> almost done my implementation, only got ( and ) left to do...
20:20:08 <ehird> hmm
20:20:20 <ehird> Compose -> is → and Compose <- is ←, so what should up and down arrow be?
20:20:26 <ehird> ^| and v|?
20:21:21 <SimonRC> ehird: heh
20:22:04 <SimonRC> {-# LANGUAGE IncomprehensibleTypes #-}
20:22:24 <ais523> strangely, altgr seems to produce ←↓→ but not the other arrow
20:22:41 <lieuwe> 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 <SimonRC> ew, get a real client
20:23:13 <ehird> if he pushes the python equivalent he's going to handily break S :)
20:23:17 <ehird> the pitfalls of underload
20:23:17 <ais523> I think lieuwe discovered the needing-to-store-two-representations issue
20:23:25 <ehird> It's not an issue for interpreters.
20:23:42 <ais523> it is in a way, just they use the same representation for both
20:24:16 <ehird> So you have a two-representation problem with only one representation.
20:24:19 <ehird> Uh-huh.
20:24:41 <SimonRC> how easy is it to analyse to see if only the string meaning or only the code meaning are needed?
20:24:47 <SimonRC> (in some cases at least)
20:25:22 <ehird> SimonRC: needs string meaning = calls S while it is on top of stack
20:25:30 <ais523> SimonRC: really difficult, in general
20:25:34 <ehird> needs code meaning = calls ^ while it is on top of stack
20:25:42 <ehird> "it" also includes being concatenated with another function
20:25:52 <ehird> = halting problem in the purest sense
20:26:12 <SimonRC> aye
20:26:50 <ais523> you might be able to trace control flow to rule out some common cases
20:27:32 <ehird> wtf, my compose doesn't have Compose - - = em-dash, either
20:27:36 * ehird makes note to add that
20:27:40 <ehird> "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 <ehird> any opinions on compose combos for up and down arrow?
20:28:34 <ehird> ^| and v| are ugly imo :/
20:28:53 <ais523> ehird: use the arrow keys?
20:28:53 <SimonRC> 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 <ehird> Factor's compiler is amazing.
20:29:15 <SimonRC> aye
20:29:36 <SimonRC> it does have an advantage over Smalltalk though
20:29:41 <SimonRC> binding is a bit later
20:29:52 <ais523> ehird: you could probably do that with Underload too
20:30:03 <ehird> SimonRC:, you mean.
20:30:09 <ehird> also, arrow keys could work, but combined with what?
20:30:11 <ehird> | up arrow?
20:30:17 <ehird> that's less efficient to type than | ^
20:30:21 <ais523> just the up arrow?
20:30:26 <ehird> This is Compose.
20:30:27 <ais523> or can you not have a one-char compose?
20:30:28 <ehird> It takes two keys.
20:30:29 <SimonRC> most words have to be declared before use, unlike smalltalk/ruby
20:30:35 <ais523> ehird: always exactly two? ugh
20:30:41 <ehird> ais523: Well, no, N.
20:30:50 <ehird> But if you have <Multi_key> x y, you can't have multi_key x
20:30:52 <ehird> or multi_key x y z
20:30:57 <ehird> for obvious reasons
20:31:00 <ais523> yep
20:31:06 <SimonRC> how about composing the up-arrow with itself?
20:31:12 <ais523> are you really going to use the arrow keys as the first part of a compose, though?
20:31:16 <ehird> SimonRC: I would expect that to give me Knuth's arrow.
20:31:22 <ehird> ais523: Perhaps someone else already did.
20:31:26 <SimonRC> is that not an up arrow?
20:31:32 <ehird> Two up arrows.
20:31:38 <ehird> Well.
20:31:42 <ehird> I guess that's just up arrow up arrow
20:31:52 <SimonRC> I meant, is Knuth's arrow different from the up arrow glyph you want?
20:31:53 <ais523> not for horizontal arrows
20:32:00 <ais523> as you can't stack vertically in regular text
20:32:04 <ais523> Unicode, you disappoint me
20:32:08 <SimonRC> I'd put Knuth arrow on ^^, because it is related to exponentiation
20:32:12 <ehird> Unicode, I am disappoint.
20:32:32 <ais523> you disappoint me with a literal lack of points
20:32:33 <ais523> codepoints, that is
20:32:35 <SimonRC> unless it isn't what I think it is
20:33:39 <ehird> Left, right, up, down, adding to the compose file la la la
20:34:08 <SimonRC> UUDDLRLRBASS
20:34:27 <ehird> So if mdash is -- what's endash? :P
20:34:30 <ehird> - space?
20:34:32 <ais523> ---
20:34:40 <ehird> endash is SHORTER.
20:34:43 <ehird> and besides, that's impossible
20:34:44 <ais523> and I know what you said about prefixes
20:34:44 <ais523> oh
20:34:47 <ehird> if you have xy you can't have xyz :P
20:34:49 <ais523> mdash is ---, ndash is --
20:34:55 <Deewiant> — and –
20:35:03 <Deewiant> (Completely identical in this monospaced font)
20:35:09 <ais523> look pretty differnt to me
20:35:14 <ehird> Deewiant: I'm trying to insert the Unicode character with the Compose key, you dolt
20:35:15 <ais523> but my ms are wider than my ns
20:35:19 <ehird> so obviously I can't use the Unicode chars directly
20:35:26 <ais523> ehird: I sort-of assumed compose would work like a modifier key
20:35:26 <Deewiant> ehird: Meh, altgr :-P
20:35:32 <ais523> you hold it down while you type what to compose, then let go
20:36:08 <SimonRC> how about m- and n-
20:36:12 <SimonRC> jsut how they sound
20:36:29 -!- ehird has quit (Remote closed the connection).
20:37:10 -!- ehird has joined.
20:37:48 <SimonRC> did you get that?
20:38:18 <ehird> compose should reflect the structure of the letters
20:38:25 <ehird> i.e. "o -> ö
20:38:27 <ehird> 'o -> ó
20:38:31 <ehird> `o -> ò
20:38:34 <HackEgo> No output.
20:38:36 <ehird> ss -> ß
20:38:46 <soupdragon> Sußman
20:38:47 <ais523> that's just to make it easier to remember
20:38:51 <ehird> http://www.fileformat.info/info/unicode/char/search.htm?q=less%20than&preview=entity ;; what a useless set of results
20:39:02 <ehird> ais523: I consider it a good design principle.
20:39:24 <ehird> Incidentally, I actually saw KDE refer to a daemon as a dæmon, and I facepalmed.
20:40:28 <ais523> why?
20:40:59 <ehird> Because the Unix term is daemon.
20:41:31 <ais523> arguably those are the same thing, though
20:41:45 <ais523> as in, different graphical representations of the same word
20:41:50 <ais523> æ is just kerning
20:41:54 <ehird> I disagræ.
20:42:23 -!- FireFly has quit ("Leaving").
20:42:55 -!- FireFly has joined.
20:45:48 <ehird> anyone know of a unicode browsing app?
20:48:25 -!- lament_ has joined.
20:49:40 <SimonRC> gnome-character-map ?
20:49:51 <pikhq> #define lambda(ret, body, ...) ({ ret __LAMBDA__ (__VA_ARGS__) { body }; __LAMBDA__; })
20:49:52 <ehird> Well, preferably not Gnome.
20:49:59 <pikhq> ... That kinda-sorta works.
20:50:17 <ehird> That's the best you can do?
20:50:19 <ehird> Behold:
20:51:08 * pikhq is anticipating Oleg's lambda. Which, though very much lambda, is not C. :P
20:51:09 <ehird> #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 <pikhq> Okay, that's a good point.
20:51:33 <ehird> lambda((int x), x*2)
20:52:08 -!- soupdragon has quit (Nick collision from services.).
20:52:25 -!- soupdragon has joined.
20:53:42 <ehird> Bah.
20:53:55 <ehird> Anyone know what the codepoints of <, >, ^, and | are?
20:54:00 <ehird> *^ and
20:54:19 <pikhq> That doesn't work; __typeof__ strongly dislikes unknown variables...
20:54:34 <ehird> pikhq: Oh, does it not?
20:54:54 <ehird> #define lambda(params, ...) ({ __typeof__(lambda(params, ## __VA_ARGS__)) __LAMBDA__ params { return ({ __VA_ARGS__; }); }; __LAMBDA__; })
20:54:57 <ehird> XD
20:55:17 <pikhq> Thar.
20:55:22 <AnMaster> pikhq, what is __LAMBDA__ defined as?
20:55:26 <ehird> Nothing.
20:55:28 <pikhq> AnMaster: It isn't.
20:55:29 <ehird> That defines __LAMBDA__.
20:55:47 <pikhq> It's just a name that's not likely to be in use.
20:56:00 <AnMaster> oh ffs, gnu extensions
20:56:14 <ehird> pikhq: Hey, if we restrict it to one parameter, we can do the typeof
20:56:17 <ehird> By doing params; body
20:56:31 <pikhq> ehird: XD
20:56:40 <pikhq> ehird: And then, it's curry. Delicious curry.
20:56:52 <ais523> ehird: I thought you couldn't pass lambdas like that out of the block they were defined in
20:57:04 <ehird> ais523: No, it's out of the function.
20:57:05 <ehird> I think.
20:57:07 <ais523> at least in gcc
20:57:08 <ehird> And you can pass them upwards.
20:57:11 <ehird> Just not downwards.
20:57:12 <AnMaster> pikhq, as far as I can see it defines lambda() not __LAMBDA__, and what is __LAMBDA__ good for?
20:57:22 <ais523> ehird: that isn't passing it out, you're still inside the block
20:57:33 <ehird> AnMaster: *sigh*
20:57:34 <ehird> Learn C.
20:57:39 <pikhq> AnMaster: __LAMBDA__ is not defined in the C preprocessor.
20:57:46 <AnMaster> ehird, I know C. Just not GNU statement crap
20:57:55 <ehird> Nothing to do with GNU statement crap.
20:57:58 <AnMaster> or typeof
20:57:59 <ehird> You fail at the pre-processor.
20:58:05 <ehird> pikhq's didn't use typeof.
20:58:09 <AnMaster> pikhq, so why do you want it undefined
20:58:15 <ehird> >_<
20:58:33 <ais523> ({ }) is a GNU extension
20:58:36 <pikhq> In mine, __LAMBDA__ is defined as a function of type ret(*)(__VA_ARGS__).
20:58:37 <ais523> as is nested functions
20:59:02 <pikhq> The the statement: ret __LAMBDA__(__VA_ARGS__) {body};
20:59:06 <pikhq> s/The/By/
20:59:36 <pikhq> That's a function declaration. The following __LAMBDA__ makes the result of ({ }) be the address to that function.
20:59:39 <AnMaster> 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 <AnMaster> while for other ones you would have to write the code twice
20:59:53 <AnMaster> once for gnu and once for portable
20:59:54 <ehird> The part you failed at is not a GNU extension.
21:00:41 <AnMaster> pikhq, nasty, upper case name as a function name
21:01:11 <pikhq> AnMaster: It never escapes the ({ }) block.
21:01:29 <AnMaster> and what on earth are the semantics for that now again
21:01:32 <ais523> ehird: the part he may be failing at is defining functions inside other functions, which /is/ a GNU extension
21:01:35 <AnMaster> not that I will remember it tomorrow
21:01:43 <AnMaster> ais523, oh right that crap
21:01:44 <ais523> AnMaster: same as for do {} in Perl
21:01:54 <AnMaster> messes up with non-executable stacks too
21:01:59 <pikhq> AnMaster: Statement expression.
21:02:03 <AnMaster> due to the trampoline fail
21:02:39 <pikhq> A similar thing can be done in C++.
21:02:50 <pikhq> Unlike this, the lambda macro in C++ is valid C++.
21:03:11 <AnMaster> 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 <ais523> wow, that language is powerful, I must stop using it!
21:04:33 <AnMaster> ais523, no, it was the messyness
21:05:17 <AnMaster> 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 <AnMaster> and so on
21:05:40 <AnMaster> probably it might work if you create dummy instantiation of those in that source file
21:05:51 <AnMaster> but that is just ugly
21:06:23 <AnMaster> ais523, in fact, rather than rant here I just refer you to the C++ FQA
21:06:31 <ais523> read it already
21:07:56 <AnMaster> 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 <AnMaster> and anything approaching the speed of tcc for c++? I'll believe it when I see it
21:09:42 <AnMaster> (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 <ais523> maybe someone could invent incremental compilation
21:11:30 <ais523> so it recompiles only what's changed?
21:11:48 <ais523> doing it at file-level is too coarse for C++, is the issue
21:13:33 -!- coppro has joined.
21:15:00 <ehird> hi
21:15:23 <AnMaster> 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 <AnMaster> think I managed to trigger ICE in gcc. That was during 4.1 or so, so it may be better nowdays
21:15:46 <ais523> AnMaster: really? it's pretty easy
21:15:48 <ais523> gcc header.h
21:16:00 <SimonRC> "ICE"?
21:16:14 <AnMaster> SimonRC, ... Internal Compiler Error
21:16:30 <ehird> Sheesh, that guy doesn't know a jargon acronym I used!
21:16:40 <ehird> I must express my shock with an ellipsis.
21:17:01 <AnMaster> ais523, also it didn't work for more than one header. Nor if it wasn't the first header included
21:17:15 <ehird> pikhq: I have a working lambda with __typeof__
21:17:22 <AnMaster> or, if you defined anything before including it (in the source file)
21:18:04 <ehird> pikhq: http://sprunge.us/deGW
21:19:45 <ehird> pikhq: http://sprunge.us/RTgd This version handles multiple statements in the body
21:19:52 <ehird> I don't know how to fix the one-parameter-only issue, though.
21:20:15 <ehird> For the lulz, here's how it desugars:
21:20:17 <ehird> upto(10, ({ __typeof__( ({ int i; (void)printf("%d\n", i); }) ) __LAMBDA__(int i) { return ({ (void)printf("%d\n", i); }); }; __LAMBDA__; }));
21:24:18 <ehird> 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 <SimonRC> the multi-args problem can be "solved" with more parens
21:25:03 <ehird> Nope.
21:25:10 <ehird> Because __typeof__( ({ param; __VA_ARGS__; }) )
21:25:16 <ehird> param -> "int i;"
21:25:17 <ehird> but if
21:25:22 <ehird> params; -> "(int i, int j);"
21:25:25 <ehird> that wouldn't work as a declaration
21:25:26 <ehird> (would it?)
21:25:32 <SimonRC> hm
21:25:42 <SimonRC> that's... funky
21:26:19 <SimonRC> how about "fn(int i; char j, ... )"
21:26:22 <SimonRC> (ew)
21:26:28 <pikhq> ehird: Solution: K&R C params.
21:26:39 <ehird> http://sprunge.us/IOdM
21:26:41 <SimonRC> why are you putting the decls at the top of the block rather than doing typeof on the function itself anyway?
21:26:43 <ehird> Advanced lambdaology!
21:26:58 <ehird> SimonRC: erm
21:27:02 <SimonRC> ah, I see now
21:27:04 <ehird> does __typeof__(x) x = ... WORK?
21:27:13 <ehird> SimonRC: fn(int i; int j, ...) is unworkable because we need to put it in the function params
21:27:42 <SimonRC> oh bugger yes
21:27:54 <ehird> answer: no, __typeof__(__LAMBDA__) __LAMBDA__(...) doesn't work
21:28:03 <SimonRC> well I see that now
21:28:07 <pikhq> __typeof__( ({param_decl; __VA_ARGS__}) ) fn(params) param_decl
21:28:31 <ehird> pikhq: Does GNU C99 support K&R parameters?
21:29:00 <ehird> Anyway, you have to specify parameters like that in your actual FN usage that way.
21:29:05 <ehird> Which is lame-butt.
21:29:05 <SimonRC> you just need C1X-style type inference(!)
21:29:40 <pikhq> ehird: Yes.
21:29:44 <ehird> 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 <ehird> Then #include that. :-D
21:30:13 <ehird> Anyway, who needs multiple parameters when you have currying?
21:30:19 <pikhq> 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 <ehird> Wait, no.
21:31:27 <ehird> We can't even do currying.
21:31:34 <ehird> Because you can't return a nested function.
21:31:39 <ehird> They expire if you shove 'em down the stack.
21:32:13 <pikhq> That's the main reason for Apple's blocks having explicit copying for them, yeah...
21:32:29 <ehird> I invoke Greenspun's Tenth Law and implement R5RS Scheme.
21:32:45 <ehird> *Tenth Rule
21:32:54 <ehird> Oh, wait, the Rule is for Common Lisp only.
21:32:57 <pikhq> Of course, you *could* implement a (stupid) copying scheme.
21:32:59 <ais523> what were the other 9 rules?
21:33:23 <ais523> also, I want to know which language Common Lisp is a badly designed implementation of half of
21:33:29 <SimonRC> they weren't
21:33:42 <SimonRC> ais523: itself
21:33:48 <pikhq> Just make sure the function ends with: { int end_func = UINT_MAX; }
21:33:53 <ehird> Yes, Morris's Corollary is "...including Common Lisp."
21:33:59 <ehird> 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 <pikhq> And grep for UINT_MAX in your lambda copying function.
21:34:12 <ehird> pikhq: O_O
21:34:37 <pikhq> ehird: ... Did I happen to mention that this is almost sure to break?
21:34:55 <pikhq> Oh, make it volatile. Less likely to break.
21:34:56 <ehird> ("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 <SimonRC> s/read mail/post to twitter/ nowadays
21:37:05 <oerjan> <ehird> Talking to oerjan makes me experience synchronicity or something
21:37:12 <oerjan> well, naturally. also, what?
21:37:53 <ehird> what's ^'s codepoint?
21:38:03 <ehird> oerjan: What to call a house's crawl space was being discussed earlier
21:38:18 <SimonRC> ehird: in hex?
21:38:30 <ehird> Yes.
21:38:31 <SimonRC> "man ascii" says its 5e
21:38:34 <SimonRC> *it's
21:38:38 <ehird> Thanks.
21:38:40 <ais523> `c printf("%x",'^');
21:38:41 <HackEgo> 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 <ais523> !c printf("%x",'^');
21:38:53 <EgoBot> 5e
21:38:57 <ais523> helps to get the right bot...
21:38:57 <ehird> oerjan: It was in here.
21:39:17 <ehird> ^| for up arrow, but v| or |v for down arrow?
21:39:25 <SimonRC> how does !c work?
21:39:27 <AnMaster> <ehird> 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 <ais523> SimonRC: compiles and runs C, I think, adding an appropriate wrapper if necessary
21:39:42 <ehird> AnMaster: No?
21:39:50 <ais523> !c int main(void) { puts("Hello, world!"); }
21:39:59 <AnMaster> ehird, well I'm pretty sure it was me who recommended that pastebin to you
21:39:59 <ehird> !c puts("poop!")
21:40:00 <EgoBot> poop!
21:40:03 <SimonRC> ais523: massive security hole?
21:40:06 <ehird> AnMaster: No, I told you about it.
21:40:08 <ehird> SimonRC: plash'd.
21:40:11 <ehird> Go on; try and break it.
21:40:14 <ehird> God knows we have.
21:40:20 <soupdragon> !c *NULL
21:40:27 <SimonRC> ok
21:40:29 <soupdragon> broke it
21:40:30 <soupdragon> !!!
21:40:40 <ais523> soupdragon: just no output
21:40:45 <pikhq> Kinda hard to break Plash.
21:40:53 <soupdragon> that's just one interpretation ais :p
21:40:57 <SimonRC> !c int main(void) { for(;;); return 0 }
21:40:58 <EgoBot> Does not compile.
21:41:00 <SimonRC> !c int main(void) { for(;;); return 0; }
21:41:03 <AnMaster> oerjan, hi
21:41:04 <ais523> !c printf("a"); printf("%d",*(int*)NULL); printf("b");
21:41:09 <EgoBot> ./interps/gcccomp/gcccomp: line 52: 24519 Segmentation fault /tmp/compiled.$$
21:41:27 <oerjan> hi AnMaster
21:41:28 <pikhq> If you manage to break out of Plash's sandboxed libc, you find yourself in an empty chroot.
21:41:36 <SimonRC> !c int main(void) { for(;;){malloc(99999); return 0; }
21:41:37 <EgoBot> Does not compile.
21:41:44 <pikhq> With literally nothing but your program and ld.
21:41:44 <ais523> SimonRC: unmatched braces
21:41:46 <SimonRC> !c int main(void) { for(;;){malloc(9999);}; return 0; }
21:41:53 <AnMaster> oerjan, I do have to say the annotation today was quite nice
21:41:55 <ehird> v| or |v for down arrow? any opinions?
21:41:58 <ais523> that'll just be an infinite loop that silently terminates after a bit
21:41:59 <ais523> ehird: both
21:42:02 <ehird> Alright
21:42:04 <ais523> so you don't have to remember which
21:42:17 <SimonRC> shouldn't timeouts give a message?
21:42:19 <SimonRC> !c int main(void) { for(;;){fork();}; return 0; }
21:42:30 <ais523> !c for(;;) printf("x");
21:42:36 <ehird> !c puts("POOP")
21:42:39 <EgoBot> POOP
21:42:39 <ehird> !c puts("POOP");
21:42:41 * SimonRC is seeing what messages all the common stuff gives
21:42:42 <EgoBot> POOP
21:42:50 <ais523> !ps
21:43:18 <SimonRC> hmm
21:44:13 <SimonRC> ":39:53 < ehird> Go on; try and break it."
21:44:17 <SimonRC> hmmmmmmmmmmmmmmm
21:44:39 <SimonRC> !c for(;;) puts("beep");
21:44:40 <EgoBot> beep
21:44:47 <SimonRC> !c for(;;) puts("beep");
21:44:48 <EgoBot> beep
21:44:52 <SimonRC> huh
21:45:00 <ehird> It DCCs you the rest of the output.
21:45:13 <SimonRC> ehird: oh this will be fun
21:45:43 <ehird> Plash is well-tested, mature open-source software. Your chance of breaking it via an IRC bot is extremely low.
21:45:53 <SimonRC> true
21:45:59 <SimonRC> "* SimonRC is seeing what messages all the common stuff gives"
21:46:00 <ehird> 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 <coppro> geordi has some pretty crazy sandboxing too
21:46:35 <coppro> for those of you who have used geordi
21:46:46 <ehird> 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 <AnMaster> SimonRC, also static binaries = no luck
21:46:54 <ehird> Then, try and break out through syscalls.
21:46:56 <AnMaster> I tried that in plash
21:47:04 <AnMaster> it worked up to a point
21:47:20 <pikhq> Though, then you need to hope for a kernel bug.
21:47:23 <SimonRC> !c for(int i = 1; i; i++) printf("%d", i);
21:47:36 <ehird> pikhq: No, just kernel functionality which Plash doesn't want you using.
21:47:48 <AnMaster> 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 <ehird> Admittedly, you then need a kernel exploit for the chroot.
21:48:03 <AnMaster> 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 <AnMaster> I did try direct syscalls
21:48:54 <SimonRC> hmm, I can't get it to spam me now
21:48:57 -!- ehird has joined.
21:48:59 <SimonRC> !c for(int i = 1; i; i++) printf("%d\n", i);
21:49:02 <EgoBot> 1
21:49:06 <ehird> Bah; its unworking is present.
21:49:06 <pikhq> Plash could start using ptrace for its sandboxing.
21:49:10 <SimonRC> aha, needed a \n
21:49:13 <ehird> ompose - -? No luck.
21:49:14 <pikhq> And then have direct control over the system calls.
21:49:15 <AnMaster> ehird, I do believe you could do mischeif with sockets though
21:49:22 <AnMaster> wouldn't allow break out
21:49:27 <ehird> Oh!
21:49:30 <AnMaster> but direct syscalls to directly work on sockets
21:49:30 <SimonRC> gives up after 3500 lines
21:49:32 <AnMaster> could be fun
21:49:56 <AnMaster> <pikhq> Plash could start using ptrace for its sandboxing. <-- planned feature iirc. And then all hope is lost
21:50:05 <SimonRC> we are assuming we run arbitrary machine code here, right?
21:50:10 <ehird> SimonRC: You can.
21:50:12 <ehird> !asm
21:50:17 <ehird> You can also do !asm ...url...
21:50:19 <ehird> or !c ...url...
21:50:23 <ais523> !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 <EgoBot> ./interps/gcccomp/gcccomp: line 52: 25004 Segmentation fault /tmp/compiled.$$
21:50:28 <ais523> whoops
21:50:31 <AnMaster> ais523, what?
21:50:38 <AnMaster> how did you manage that
21:50:40 <pikhq> SimonRC: Not just "assuming". That's what Ptrace does.
21:50:53 <AnMaster> ais523, does the compiler crash locally on that for you?
21:50:56 <ais523> probably
21:51:00 <pikhq> It runs arbitrary machine code in a very safe way.
21:51:10 <ehird> # Dashes
21:51:12 <ehird> <Multi_key> <minus> <minus> <period> : "–" U2013 # EN DASH
21:51:14 <ehird> <Multi_key> <minus> <minus> <minus> : "—" U2014 # EM DASH
21:51:15 <ehird> Shoulda known it already had it.
21:51:17 <ehird>
21:51:19 <ehird>
21:51:28 <ais523> !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 <EgoBot> ./interps/gcccomp/gcccomp: line 52: 25053 Segmentation fault /tmp/compiled.$$
21:51:34 <ehird> ais523: what are you trying to do?
21:51:34 <ais523> that fix is needed, at least
21:51:37 <ais523> ehird: quine
21:51:41 <ehird> heh
21:51:46 <AnMaster> ais523, you should file a bug if that happens outside plash
21:51:54 <ais523> against what?
21:52:06 <AnMaster> oh not gcc?
21:52:09 -!- ehird has quit (Remote closed the connection).
21:52:09 <AnMaster> ais523, misread the error
21:52:18 <AnMaster> ais523, thought it was gcc itself that segfaulted
21:52:50 -!- ehird has joined.
21:53:03 <ehird> ←→↑↓
21:53:05 <AnMaster> pikhq, anyway it doesn't currently use ptrace afaik
21:53:10 <ehird> I wonder what I'd do for the diagonals.
21:53:19 <AnMaster> pikhq, also I wonder how threads interact with this.
21:53:27 <AnMaster> as in, pthreads
21:53:32 <SimonRC> L/ \J r\ /7 ?
21:53:35 <coppro> ehird: Do you know of any way to get an alt-code-like setp on X?
21:53:37 <coppro> *setup
21:53:37 <AnMaster> anyone up for writing a short pthreads test program?
21:53:40 <ehird> I guess -^ for upleft, ^- for upright, v- for downleft and -v for downright.
21:53:44 <ehird> coppro: alt-code-like?
21:53:52 <coppro> where you type in a digit sequence
21:53:53 <SimonRC> or compose-uparrow-rightarrow ?
21:53:59 <ehird> SimonRC: can't do that, can you?
21:54:02 <coppro> in my case, I'd just want the Unicode codepoint
21:54:03 <SimonRC> dunno
21:54:05 <ehird> coppro: Ah.
21:54:10 <ais523> doesn't even compile, locally
21:54:10 <ehird> coppro: Don't; Compose is far superior. ;-)
21:54:17 <coppro> ehird: But less generic
21:54:21 <coppro> and not mutually exclusive either
21:54:43 <ehird> Look in System Settings → Region & Language → Keyboard Layout → Advanced
21:54:47 <ehird> There might be something there.
21:54:51 <ehird> s/Advanced$/Advanced./
21:55:18 <ehird> "Key sequence to kill the X server: [ ] Control + Alt + Backspace"
21:55:21 <ehird> A GUI for everything!
21:55:37 <coppro> heh
21:55:37 <ehird> coppro: Nope, nothing there.
21:55:52 <ehird> coppro: You could generate a Compose file with <Multi_key> <U> <plus> every codepoint.
21:55:59 <AnMaster> so lets see
21:56:04 <ehird> It'd be gigantic and X11 would take about five years to start, but it'd work.
21:56:25 <coppro> yeah :(
22:00:10 <AnMaster> ehird, downside of compose: no key repeat
22:00:10 <ais523> !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 <EgoBot> !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 <AnMaster> →→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
22:00:15 <ais523> found my error
22:00:19 <AnMaster> long live altgr
22:00:23 <ais523> for some reason I was trying to write to a constant string
22:00:46 <AnMaster> ais523, turn on -Wwrite-strings ;P
22:00:52 <ais523> AnMaster: how, with egobot?
22:00:57 <ais523> also, easier just to fix the declaration
22:01:00 <AnMaster> ais523, well, that I don't know
22:01:04 <ais523> or write to c, fwiw
22:01:04 <AnMaster> ais523, what?
22:01:09 <AnMaster> that one warns you
22:01:09 <AnMaster> ...
22:01:44 <AnMaster> ais523, nice polygot. Now just make it output brainfuck or underload every other time
22:01:56 <AnMaster> so you can run fungot against egobot
22:01:57 <fungot> 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 <ehird> "Polyglor"?
22:02:05 <ehird> *Polyglot
22:02:07 <ehird> It's a quine.
22:02:13 <AnMaster> ehird, err typo
22:02:15 <AnMaster> or rather
22:02:18 <AnMaster> I thought ahead
22:02:20 <ais523> !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 <AnMaster> at the polygot
22:02:22 <EgoBot> !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> <fungot> 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 <fungot> AnMaster: you aren't using? it's not scheme! they look like cavemen." " if you like
22:02:51 <AnMaster> fizzie!! what the hell was that string from
22:02:54 <AnMaster> fungot itself?
22:03:06 <AnMaster> hm no
22:03:09 <AnMaster> possibly egobot
22:03:11 <ehird> Yes.
22:03:13 <ehird> EgoBot.
22:03:13 <ais523> !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 <EgoBot> !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 <ehird> fungot is going to have a bot change.
22:03:21 <fungot> ehird: rigght moving the stuff to colin.
22:03:21 <AnMaster> !fnord
22:03:25 <ais523> !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 <EgoBot> !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 <ais523> there we go
22:03:38 <ehird> He is changing from the bot gender of fungot to EgoBot.
22:03:39 <fungot> 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 <ehird> His new name will apparently be "colin".
22:03:49 <ehird> 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 <ais523> of course, I think it's possible to do a much shorter C quine than that
22:04:20 <coppro> I think so too
22:04:27 <ais523> just, not right now, I have work to do that I really should be doing
22:04:35 <AnMaster> ais523, well yes. isn't there a zero byte one from IOCCC?
22:04:47 <coppro> 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 <coppro> C will be a bit slower
22:05:02 <ais523> AnMaster: that doesn't count
22:05:07 <AnMaster> coppro that isn't C. That is C++
22:05:10 <coppro> I know
22:05:15 <AnMaster> ais523, well the one byte one then?
22:05:20 <ehird> int main(){char*x="printf(%c%s%c,34,x,34)";return printf(x,34,x,34);}
22:05:24 <ais523> AnMaster: that wasn't a quine
22:05:25 <ehird> ↑ C quine
22:05:38 <ehird> Nobody said it was C.
22:05:38 <ais523> ehird: how?
22:05:40 <ehird> geordi runs C++.
22:05:43 <ehird> ais523: How what?
22:05:44 <ais523> it doesn't print the char* or the int main
22:05:47 <ehird> Oops.
22:05:52 <soupdragon> !c char*x="printf(%c%s%c,34,x,34)";return printf(x,34,x,34);
22:05:53 <EgoBot> printf("printf(%c%s%c,34,x,34)",34,x,34)
22:06:05 <ehird> Oops, right.
22:06:08 <ehird> That's for the embedded version.
22:06:11 <ehird> Let's try again:
22:06:14 <soupdragon> !c return printf("printf(%c%s%c,34,x,34)",34,x,34);
22:06:15 <EgoBot> Does not compile.
22:06:37 <ehird> sec
22:07:20 <ehird> 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 <AnMaster> what languages allow you to read the program code from inside the program. I mean, non-esolangs
22:07:35 <ehird> Note my wonderful casting powers.
22:07:51 <AnMaster> without opening the source file (if compiled)
22:07:57 <AnMaster> anyway that made me thing of a short bash quine
22:08:05 <AnMaster> !bash echo "test, does this have bash?"
22:08:09 <AnMaster> !sh echo "test, does this have bash?"
22:08:09 <EgoBot> test, does this have bash?
22:08:12 <AnMaster> hm
22:08:12 <ehird> 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 <AnMaster> !sh echo "$0"
22:08:17 <EgoBot> /tmp/input.25413
22:08:18 <ehird> ↑ Valid C.
22:08:20 <AnMaster> !sh cat "$0"
22:08:21 <EgoBot> cat "$0"
22:08:23 <AnMaster> there
22:08:24 <ehird> Behold my evil.
22:08:26 <AnMaster> short bash quine!
22:08:45 <ehird> AnMaster: Anyone who thinks that is a quine is an idiot who has not seen it before.
22:08:45 <AnMaster> or shell one + cat
22:08:46 <AnMaster> hm
22:08:53 <ehird> Do you think you actually thought of that cheat yourself?
22:08:57 <fizzie> Colin is one of my computers, so that's probably something I said.
22:08:59 <AnMaster> ehird, no
22:08:59 <ais523> ehird: undefined behaviour, you need explicit casts to make it relevant
22:09:05 <ais523> !perl #!/usr/bin/cat
22:09:06 <EgoBot> Can't exec /usr/bin/cat at /tmp/input.25470 line 1.
22:09:10 <ais523> !perl #!/bin/cat
22:09:11 <EgoBot> #!/bin/cat
22:09:13 <AnMaster> ehird, but I haven't read about it. I assumed someone else must have thought of it before
22:09:13 <ais523> there we go
22:09:19 <ehird> 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 <ais523> that's one of my favourite Perl quines just because it's so absurd
22:09:29 <ehird> ais523: You can do %s on an int because printf just has ...
22:09:49 <ais523> ehird: assuming int is the same size as a pointer, it's likely to work
22:10:05 <ais523> 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 <ais523> including changing the representation
22:10:15 <AnMaster> ais523, why would perl even consider it may be invoked on a non-perl program?
22:10:22 <ehird> 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 <ehird> Shorter, anyway.
22:10:42 <ehird> AnMaster: because you can do #!perl -w
22:10:48 <ehird> so it just executes the program mentioned
22:10:50 <ais523> AnMaster: so you can set perl as a generic command interpreter on a system that doesn't do shebangs
22:10:53 <ais523> and it emulates them for you
22:10:59 * SimonRC goes for food
22:11:00 <ehird> ais523: is that the real reason? wow
22:11:01 <ais523> ehird: no, that's an entirely different sort of magic
22:11:15 <ais523> if the name "perl" is in the string, it instead reads command-line options from it
22:11:20 <ehird> well
22:11:21 <ais523> ehird: according to the manpages, yes
22:11:21 <ehird> I meant more like
22:11:25 <ehird> #!/path/to/perl -w
22:12:15 <ais523> that has the word "perl" in, so it'll run under whichever perl you ran it with
22:12:23 <ais523> even more fun is "#!/bin/sh -- # -*- perl -*- -p"
22:12:28 <ais523> which is an actual example in the manual
22:13:04 <coppro> :D
22:13:08 <ais523> <perlrun> 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 <pikhq> o.O
22:13:23 <ais523> whoops, missed a space unwrapping that
22:13:28 <ais523> <perlrun> 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 <ehird> 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 <ehird> "It was just a few lines of code and we like you guys, so, you know."
22:13:57 <ehird> "Set us as your command interpreter and whatnot."
22:13:58 <ais523> reminds me of DNA Maze
22:14:09 <ais523> version 2 ran the DOS equivalent of the UNIX command "reset" once it exited
22:14:16 <ais523> so I could use it to restore messed-up ttys
22:14:22 <ehird> :-D
22:14:34 <pikhq> XD
22:14:52 <ais523> (it was used for other purposes too; I once replaced the entire DRM of a C compiler with DNA Maze)
22:14:55 <ehird> http://simulacrum.dorm.duke.edu/allyourgoogle.svg
22:15:04 <ais523> (stop playing the game, you can use your compiler now)
22:15:09 <coppro> svg is awesome
22:15:12 <ehird> I never thought I'd stare at a functional Google homepage. Rotating.
22:15:25 <ehird> Very slow in Firefox, though. Let me try it in a WebKit browser.
22:15:32 <ehird> ais523: brilliant
22:15:44 <AnMaster> <ais523> 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 <ais523> AnMaster: Perl's a special purpose everything program
22:16:05 <ehird> AnMaster: no, because if it's the 90s you don't have that kind of bandwidth
22:16:21 <ais523> "swiss army chainsaw"
22:16:21 <ehird> and if installing Perl helps you run Perlish stuff, which usually comes with shebangs, all the better
22:16:49 <coppro> Perl is the antiunix
22:17:26 <AnMaster> ais523, heh
22:17:28 <ehird> On one tool for one job: "Those days are dead and gone and the eulogy was delivered by Perl." —Rob Pike
22:17:43 <AnMaster> ehird, it would be a 10-20 line C program anyway
22:17:54 <ehird> AnMaster: You don't have a C compiler.
22:18:09 <AnMaster> ehird, okay, the binary would still be tiny
22:18:15 <ais523> you probably have cc, given the time period in question
22:18:19 <ehird> But it's not such a huge big deal, it's just a nicety.
22:18:24 <ehird> Why bother to seek out such a program?
22:18:25 <AnMaster> sure
22:18:38 <ais523> perl programs traditionally do the reverse, too
22:18:43 <AnMaster> ehird, that quote by Rob Pike seems to be a good summary
22:18:44 <ais523> they're written as a perl/sh polyglot
22:18:53 <AnMaster> ais523, they are?
22:18:54 <ais523> so that systems that don't do #! re-invoke it under perl if it's run by sh by mistake
22:18:55 <AnMaster> how and why
22:19:08 <ehird> Like this:
22:19:10 <AnMaster> okay that answers why, how
22:19:11 <AnMaster> hm
22:19:11 <ais523> eval 'exec perl -wS $0 ${1+"$@"}'
22:19:12 <ehird> #!/usr/bin/perl
22:19:15 <ais523> if $running_under_some_shell
22:19:19 <ehird> ais523: ooh, synchronicity
22:19:27 <ehird> I added the first line for you to append to
22:19:30 <ais523> except I missed the seimcolon
22:19:36 <ehird> ;
22:19:37 <ehird> fixed
22:19:39 <ais523> also, my first line came before yours, rather runing the effect at my end
22:19:40 <AnMaster> that is out of order
22:19:45 <ehird> Bah
22:19:50 <ais523> #!/usr/bin/perl
22:19:53 <ais523> eval 'exec perl -wS $0 ${1+"$@"}'
22:19:57 <ais523> if $running_under_some_shell;
22:20:02 <ais523> there we go
22:20:09 <AnMaster> ah
22:20:13 <AnMaster> fun
22:20:18 <ais523> although, you'd want the -wS in the first line too, if you were using those options
22:20:29 <AnMaster> ais523, why -wS?
22:20:31 <ais523> sh has significant whitespace, so it never even looks at the third line
22:20:35 <ais523> AnMaster: in the example in the manual
22:20:43 <ais523> you could omit it, but -w is rather recommended
22:20:51 <AnMaster> ais523, and yes I know sh well enough to know newline ends command
22:20:55 <ehird> I guess the shebang should be #!/usr/bin/perl -wS
22:21:00 <ehird> ais523: ooh, ridiculous Perl feature idea:
22:21:01 <ais523> in Perl it doesn't, so it sees an if that fails
22:21:05 <ais523> and doesn't run the line before
22:21:11 <ais523> and eval is a valid Perl statement, so it parses
22:21:16 <ehird> it looks for any line starting with "exec perl" before any other non-comment lines
22:21:18 <ehird> and ignores it
22:21:19 <AnMaster> ais523, undefined variable is false?
22:21:24 <ehird> except, wait, no
22:21:27 <ais523> AnMaster: yes, or an error if use strict; is in use
22:21:32 <ehird> it looks for any line starting with "exec perl" before any other non-comment lines
22:21:36 <ais523> so for a strict program, it would be
22:21:39 <ais523> #!/usr/bin/perl -wS
22:21:46 <AnMaster> ais523, why the eval?
22:21:47 <ehird> and interprets all of the following arguments starting with - as arguments to Perl
22:21:49 <ehird> so
22:21:51 <ehird> #!/usr/bin/perl
22:21:51 <ais523> eval 'exec perl -wS $0 ${1+"$@"}'
22:21:53 <ehird> exec perl -wS
22:21:59 <ais523> if $::running_under_some_shell;
22:22:00 <ehird> erm
22:22:03 <ehird> exec perl -wS "$@"
22:22:07 <ehird> would be like #!/usr/bin/perl -wS, except working on non-shebang machines
22:22:09 <ais523> AnMaster: to hide the shellcode inside from Perl
22:22:12 <ehird> ais523: horrible and brilliant, methinks
22:22:16 <ais523> ehird: yes
22:22:19 <AnMaster> ehird, no it should be ${1+"$@"} most likely
22:22:24 <AnMaster> to deal with old shells
22:22:51 <ais523> anyway, perl sees what's effectively eval 'stuff in quotes' if 0;
22:22:55 <ais523> and doesn't run the command at all
22:24:04 <AnMaster> ais523, right
22:24:16 <AnMaster> ais523, couldn't that eval mess up things though
22:24:22 <ais523> AnMaster: no, because it /never runs/
22:24:30 <AnMaster> ais523, *for the shell*
22:24:38 <ais523> no, because the shell just evals what's inside it
22:24:44 <AnMaster> ais523, what if you pass some shell code as an argument. It looks improperly quoted
22:24:53 <ais523> it's properly quoted, it's in single quotes
22:25:03 <ais523> which just like in shells, don't need quoting of anything but ' inside them
22:25:08 <AnMaster> oh hm
22:25:11 <ais523> you can put literal anything but ' inside singlequotes, I think
22:25:11 <AnMaster> read it as ""
22:25:13 <AnMaster> well oaky
22:25:14 <AnMaster> okay*
22:25:17 <ais523> possibly even literal NUL, although I'm less sure of that
22:25:24 <AnMaster> ais523, it can fail if $0 contains spaces
22:25:28 <AnMaster> not the val
22:25:30 <AnMaster> eval*
22:25:34 <AnMaster> but the code after
22:25:49 <ais523> AnMaster: ooh, well noticed, report it as a bug to the Perl people
22:25:49 <AnMaster> ais523, as for literal NUL, those will cause bash at least to end the string there
22:25:57 <AnMaster> as they are null terminated internally
22:26:03 <ais523> AnMaster: yes, but there aren't any so it's irrelevant to this discussion
22:26:06 <AnMaster> ais523, oh? wouldn't this differ between shell scripts
22:26:15 <AnMaster> err
22:26:17 <AnMaster> perl scripts
22:26:21 <AnMaster> so it is up to each perl script
22:26:31 <AnMaster> ais523, or is it from some manual page of perl?
22:26:31 <ais523> yes, but they could fix the example in the manual
22:26:40 <AnMaster> ais523, indeed. where is the bug tracker?
22:26:41 <ehird> a2p does this:
22:26:45 <ehird> #!/usr/bin/perl
22:26:46 <ehird> eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
22:26:48 <ehird> if $running_under_some_shell;
22:26:50 <ehird> # this emulates #! processing on NIH machines.
22:26:51 <ehird> # (remove #! line above if indigestible)
22:27:02 <ehird> I have no idea what "indigestible" means.
22:27:06 <AnMaster> ehird, I have
22:27:08 <ais523> ehird: unable to be eaten
22:27:08 <soupdragon> you can't eat it
22:27:12 <ehird> ...
22:27:15 <ehird> I KNOW THAT
22:27:16 <ais523> so, it means the #! causes an error
22:27:25 <ais523> whereas it's a shebang to most shells, and a comment to most others
22:27:26 <AnMaster> ehird, yes, as in shell or system can't handle #!
22:27:29 <ais523> ofc, all this is no use on windows
22:27:30 <AnMaster> maybe # isn't a comment
22:27:43 <soupdragon> digest
22:27:45 <soupdragon> digestible
22:27:47 <soupdragon> indigestible
22:27:48 <ais523> hmm, someone write a perl / DOS batch file polyglot
22:28:02 <ehird> Okay.
22:28:03 <ais523> where the batch file runs the perl
22:28:04 <AnMaster> ais523, does perl use a mailing list or a bug tracker?
22:28:09 <ehird> AnMaster: they use rt
22:28:14 <AnMaster> ehird, rt?
22:28:15 <ais523> AnMaster: mailing list is perl5-porters, but it has a bug tracker too
22:28:37 <AnMaster> ais523, which manual page is it from?
22:28:41 <ais523> http://rt.perl.org/perlbug/
22:28:44 <ais523> and it's on "perlrun"
22:29:09 <ehird> ais523: is FOO = x; valid Perl?
22:29:17 <AnMaster> wth is up with the login
22:29:22 <ais523> ehird: no, there's no sigil
22:29:33 <ais523> AnMaster: bitcard does the accounts for all the perl stuff
22:29:40 <AnMaster> ais523, whatever that is
22:29:55 <ehird> AnMaster: an account.
22:29:56 <ais523> AnMaster: it's the accounts thing for Perl and CPAN
22:30:02 <ehird> ais523: ok, let me rephrase
22:30:11 <ehird> what can I put after FOO to make it a valid perl nop?
22:30:18 <ehird> I guess FOO; works, but eh
22:30:24 <ehird> FOO if 0; too
22:30:36 <AnMaster> 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 <ais523> hm, as long as FOO is purely alphanumeric and starts with a letter
22:30:47 <ehird> does %0 work for "this program" in DOS?
22:30:49 <ais523> AnMaster: isn't that IE's warning message?
22:30:50 <ehird> AnMaster: tons of pages do that
22:30:54 <AnMaster> ais523, firefox
22:30:55 <ehird> AnMaster: stop whining
22:31:01 <ehird> it's not like perl have some password-stealing conspiracy
22:31:08 <AnMaster> ehird, I know one no other login pages doing that
22:31:12 <AnMaster> or registration ones
22:31:16 <ais523> wikipedia's did for ages
22:31:18 <ehird> Nobody gives a fuck
22:31:20 <AnMaster> I do know of pages once you are logged in
22:31:26 <AnMaster> ehird, s/nobody/ehird/
22:31:27 <ais523> the point is, the bit you enter the password in is encrypted
22:31:33 <ehird> No, I don't give a fuck.
22:31:36 <AnMaster> err, doesn't*
22:31:38 <ais523> so unless you're really scared of someone trying to MITM-interface-spoof you...
22:31:39 <AnMaster> ehird, well
22:31:46 <AnMaster> point is you shouldn't speak for everyone
22:31:49 <ehird> I don't care, ais523 doesn't care, and you're the only person anal enough to care.
22:32:02 <ais523> ehird: I care to the extent that sort of message is actually a security risk
22:32:06 <ehird> I know ais523 doesn't care because he's explaining why it isn't a problem to you.
22:32:09 <ais523> which is, not very much
22:32:21 <ehird> so does %0 work in batch files as "this program"?
22:32:23 * AnMaster prepares mailinator
22:32:32 <ehird> AnMaster: ...
22:32:41 <ehird> Perl: Spammer extraordinaires
22:32:46 <ais523> ehird: I'm not sure, but I wouldn't be surprised if it didn't
22:32:51 <ehird> I'm pretty sure Larry Wall is too Christian to spam you
22:32:54 <AnMaster> ehird, are email addresses public
22:33:03 <ehird> ais523: can you use them in strings?
22:33:06 <AnMaster> as on bugzilla
22:33:11 <ehird> AnMaster: They're mangled, I believe.
22:33:13 <ehird> foo AT bar DOT org
22:33:15 <ehird> or whatever
22:33:17 <ais523> ehird: it interpolates fine, I think
22:33:24 <AnMaster> ehird, won't help much
22:33:26 <ais523> the issue is more getting things to not interpolate, in DOS
22:33:41 <ais523> there are quoting rules but they make no sense and I can't remember them
22:34:12 <ehird> REM ; if (0) {
22:34:14 <ehird> perl "%0"
22:34:15 <ehird> REM ; }
22:34:17 <ehird> print "Hello, world!\n";
22:34:18 <ehird> Tada.
22:34:34 <ehird> Now to make it work with a shebang and for shebangless systems.
22:34:44 <ehird> hmm...
22:34:51 <ais523> I think the perl "%0" might fail there in Perl
22:34:59 <ehird> ais523: it's in an if (0)
22:35:14 <ehird> to Perl, it looks like this:
22:35:15 <ehird> REM;
22:35:17 <ehird> if (0) {
22:35:19 <ais523> String found where operator expected at t.pl line 2, near "perl "%0""
22:35:20 <ehird> perl "%0" REM;
22:35:21 <ehird> }
22:35:25 <ehird> ais523: Huh.
22:35:27 <pikhq> 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 <pikhq> Whooo.
22:35:31 <ais523> followed by a missing semicolon error
22:35:31 <ehird> #!/usr/bin/env perl will just try to execute the program #!/usr/bin/env with argument perl in batch, right?
22:35:37 <ais523> ehird: it's parsing perl as "perl"
22:35:42 <ehird> pikhq: Now make it work with typeof, bitch.
22:35:45 <ais523> so you get "perl" "%0" REM
22:35:46 <ehird> ais523: Ah.
22:35:47 <ais523> which makes no sense
22:35:47 <ehird> Easy to fix.
22:36:03 <ehird> %{ is a string in perl, right?
22:36:04 <ehird> Or a list
22:36:11 <ais523> no, it's a dereferencing operator
22:36:15 <ehird> %q{ then
22:36:16 <ais523> for hash references
22:36:17 <ehird> to }
22:36:23 <ehird> REM ; %q{
22:36:25 <ehird> perl "%0"
22:36:26 <ais523> no, that's a slice of the hash called q
22:36:26 <ehird> REM %}
22:36:33 <pikhq> ehird: lambda((x, y), void *x; void *y;, *x < *y?-1:*x>*y?1:0)
22:36:36 <ais523> try without the % sign
22:36:40 <ais523> REM ; q{
22:36:44 <ais523> REM }
22:36:47 <ais523> that works I think
22:36:48 <ehird> REM ; q{
22:36:50 <ehird> perl "%0"
22:36:51 <ehird> REM }
22:37:01 <ehird> ais523: #!/usr/bin/env perl executes the program #!/usr/bin/env in batch, right?
22:37:06 <ais523> ehird: I think so
22:37:09 <ehird> pikhq: NO :|
22:37:21 <ais523> (is #! a legal DOS directory name?)
22:37:25 <pikhq> ehird: Only way for it to work with more than 1 argument that I can think of.
22:37:28 <ehird> ais523: Well, it'll error out anyway.
22:37:36 <ehird> ais523: does x || y work in batch?
22:37:39 <ehird> or do I need to do something else
22:37:42 <ais523> haha, you must be kidding
22:37:47 <ais523> first, you run a test command
22:37:51 <ais523> then you use "if errorlevel"
22:37:54 <pikhq> It's much nicer to just write the return type.
22:37:55 <ehird> yeah :P
22:37:58 <ehird> pikhq: BAH
22:38:04 <ehird> ok, forget shebangs, I'll just make it work in sh-doing systems
22:38:07 <pikhq> And... C-like.
22:38:08 <ehird> although, wait no
22:38:12 <ehird> that breaks if you don't run it from a shell
22:38:18 <pikhq> Well, as C-like as *lambda* can be.
22:38:34 <ehird> ais523: @echo off disables echoing future lines before executing them
22:38:45 <ehird> ais523: does that disable error messages too?
22:39:09 * ehird gets an idea
22:39:13 <ehird> does x;y work in batch?
22:39:45 <ais523> no, I don't think so
22:40:10 <ehird> @REM ; q{
22:40:11 <ehird> @perl "%0"
22:40:13 <ehird> }
22:40:14 <ehird> print "Hello, world!\n";
22:40:20 <ehird> ↑ A silent version of my batch-perl-spawner.
22:40:52 <pikhq> ehird: Huh. Nested functions aren't on the stack.
22:41:20 <pikhq> Erm. Not necessarily.
22:41:23 <pikhq> Though they might be.
22:41:28 <pikhq> :/
22:41:36 <ehird> What does perl -S do, anyway?
22:42:38 <ais523> not sure
22:42:59 <pikhq> GCC *claims* that if you call them after the containing function exits, all hell breaks loose.
22:43:03 <ehird> haha, I'm loving this
22:43:07 <ehird> this will be the best polyglot ever
22:43:24 <pikhq> The assembly it outputs sticks the nested functions inside the text section.
22:43:27 <pikhq> With mangled names.
22:43:31 <AnMaster> ehird, will you make it work for sh systems too?
22:43:48 <ehird> AnMaster: Shebang, sh, batch and perl will all be handled.
22:44:02 <ehird> Batch might output an error before running the program, though.
22:44:09 <ehird> Well, something like
22:44:11 <AnMaster> ehird, okay that's impressive. Can't think of how you will handle #! in batch
22:44:13 <ais523> the DOS side of it seems to work (thanks, DOSbox!)
22:44:13 <ehird> #!/usr/bin/env perl
22:44:15 <ehird> Command not found
22:44:17 <ais523> although I'm not sure about the %0
22:44:25 <pikhq> 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 <ehird> pikhq: Meh.
22:44:40 <ais523> pikhq: no, because the function is stored on the stack
22:44:44 <AnMaster> ehird, that one doesn't pass on arguments with batch
22:44:45 <ehird> ais523: no it isn't
22:44:47 <AnMaster> as far as I can see
22:44:51 <pikhq> ais523: Not in the assembly I am looking at.
22:44:53 <ais523> ehird: oh, right, just the trampoline
22:45:01 <ehird> ais523: what's the batch for "all my arguments"?
22:45:20 <ais523> ugh, %* I think
22:45:22 <ais523> but I'm not sure
22:45:44 <ehird> hmm
22:45:50 <ehird> does eval "2+2", blah work in Perl?
22:45:57 <ehird> 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 <ais523> not %* it seems
22:46:54 <AnMaster> gah I can't find where to file a bug at that rt.perl.org thingy
22:47:13 <ehird> 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 <AnMaster> ais523, ^
22:47:33 <ais523> AnMaster: I'm not sure either
22:48:07 <pikhq> ais523: Here's how my GCC is pushing the address of a nested function: movl $comp_int.1972, %eax
22:48:16 <ais523> pikhq: ah, must be optimising
22:48:20 <AnMaster> well then, such a fucked up user interface, I'm not going to care
22:48:25 <ais523> but it's not much of a lambda if you're referring to outside the function
22:48:25 <ehird> ais523: it's for a greater good!!!
22:48:28 <ais523> ehird: I'm thinking
22:48:36 <ehird> *it's for the greater good
22:48:36 <pikhq> ais523: -O0.
22:48:43 <ais523> pity "null" isn't a legal regex modifier
22:48:49 <pikhq> And passing it to qsort.
22:48:51 <ehird> ah:
22:48:53 <ehird> -S
22:48:55 <ehird> makes Perl use the PATH environment variable to search for the program (unless the name of the program contains directory separators).
22:49:07 <ehird> ais523: can you try echo %0 in dosbox for me to see if %0 works?
22:49:31 <ehird> ais523: ooh, wait
22:49:32 <ais523> seems not, you get a literal %0
22:49:36 <ehird> @REM / 2>/dev/null
22:49:50 <ais523> what about this: @REM = q= 2/dev/null #=
22:49:58 <ais523> ehird: that isn't valid perl
22:50:12 <ehird> ais523: yes, but it's close
22:50:23 <ehird> ais523: that breaks the sh semantics
22:50:31 <pikhq> So, it's lambda, just not a closure.
22:50:34 <ais523> $ perl -ce '@REM = q= 2/dev/null #='
22:50:35 <ais523> -e syntax OK
22:50:35 <ehird> it must run a command starting with @REM and do 2>/dev/null
22:50:44 <ais523> ehird: it does do that
22:50:48 <ehird> "2/dev/null"
22:50:49 <ehird> No, it doesn't.
22:50:49 <ais523> oh, forgot the >
22:50:55 <ehird> Is it valid with the >?
22:50:58 <ais523> $ perl -ce '@REM = q= 2>/dev/null #='
22:51:00 <ais523> -e syntax OK
22:51:02 <ehird> Yay.
22:51:05 <ais523> yep, it's inside a string literal
22:51:13 <ais523> the entire statement is rather meaningless, but who cares
22:51:24 <ehird> doesn't matter
22:51:26 <ehird> wait
22:51:28 <ehird> that breaks in sh
22:51:32 <ehird> because of the trailing #=
22:51:36 <ais523> that's a comment in sh
22:51:40 <ehird> no, ;#= is
22:51:42 <ehird> but it's #=
22:51:45 <ais523> and you can put it on the next line if you prefer
22:51:49 <ehird> ais523: anyway, not acceptable; I need to have || right after it
22:51:56 <ehird> No I can't, every line must start with @REM
22:52:01 <ais523> in fact, you can just put the = in an arbitrary place later in the program
22:52:02 <AnMaster> ehird, # is a comment even on same line isn't it?
22:52:07 <ais523> @REM = q= 2>/dev/null
22:52:12 <ais523> followed by an = somewhere much later
22:52:17 <ehird> ais523: well, okay
22:52:19 <ais523> just so long as there are no other = signs in-between
22:52:20 <AnMaster> $ echo foo #bar
22:52:20 <AnMaster> foo
22:52:22 <AnMaster> ehird, ^
22:52:33 <ehird> ais523: that means I don't get to use my awesome hack though
22:52:38 <ais523> which is?
22:52:42 <ehird> eval 'exec perl blah;#',
22:52:47 <ehird> @REM if $running_under_some_shell;
22:52:55 <ais523> hahaha
22:53:05 <ais523> wouldn't the eval break under DOS?
22:53:08 <ais523> also, have fun with newline conventions
22:53:11 <ehird> no, because it's part of
22:53:18 <AnMaster> ais523, what does @REM mean to perl?
22:53:20 <ehird> @REM 2>/dev/null || eval ...
22:53:25 <ais523> AnMaster: the array called REM
22:53:25 <ehird> AnMaster: array variable REM
22:53:28 <AnMaster> ah
22:53:39 <ais523> or in perl5, to be precise, "these REM"
22:53:48 <ais523> because perl infers what sort of variable you mean from context
22:53:55 <ais523> so it's "something containing multiple elements REM"
22:54:01 <ais523> which in the abstract, must mean the array
22:54:02 <pikhq> ehird: So, yeah. I've got a non-closure lambda.
22:54:22 <AnMaster> pikhq, is that well defined behaviour?
22:54:22 <ehird> ais523: http://sprunge.us/LRfW
22:54:26 <AnMaster> for gcc
22:54:32 <ehird> if "%0" %* did what it should, this would work
22:54:41 <ehird> as a batch file
22:54:53 <ehird> it would output "#!/usr/bin/env perl" and then an error before running the program, however
22:54:54 <pikhq> AnMaster: It's *contrary to the documentation* when returning one of these lambdas.
22:54:54 <ais523> oh, I think the semantics of % are different inside and out, just for fun
22:54:58 <coppro> batch files are evil
22:55:01 <ehird> In sh, it should work perfectly
22:55:05 <pikhq> But it works perfectly according to the generated code.
22:55:07 <ehird> In perl, it should work perfectly
22:55:17 <AnMaster> pikhq, well then, bad idea, depending on platform
22:55:19 <ehird> Conclusion: I am a genius as soon as we can get "%0" and %* working.
22:55:31 <AnMaster> pikhq, iirc trampolines are messier on RISC in general
22:55:31 <pikhq> AnMaster: The documentation claims it's on the stack.
22:55:40 <AnMaster> pikhq, it might be
22:55:42 <ehird> ooh, it can be made shorter
22:55:48 <AnMaster> pikhq, if a trampoline is generated
22:55:51 <ais523> you can combine the two qs
22:56:00 <AnMaster> pikhq, a trampoline is on the stack. It may be that none is required
22:56:02 <ais523> get rid of lines 3 and 4, and change line 6 to =;
22:56:04 <pikhq> AnMaster: When would one be generated?
22:56:14 * pikhq would like to try to force on.
22:56:16 <ehird> #!/usr/bin/env perl
22:56:16 <pikhq> s/on/one/
22:56:17 <ehird> @REM =q= 2>/dev/null||exec /usr/bin/env perl -S $0 ${1+"$@"}
22:56:19 <ehird> @REM =;q{
22:56:20 <ehird> @perl -S "%0" %*
22:56:22 <ehird> }
22:56:23 <ehird> ais523: yep
22:56:26 <AnMaster> pikhq, either when it is needed, or always. I would suspect it may vary between versions
22:56:27 <ehird> oh
22:56:28 <ehird> you're right
22:56:30 <ais523> you do not need to change the q delimeter from = to {
22:56:36 <AnMaster> pikhq, so when you need a closure I believe
22:56:43 <pikhq> It certainly isn't "always"...
22:56:47 <ehird> #!/usr/bin/env perl
22:56:48 <AnMaster> pikhq, try using some variable from outside it
22:56:48 <ehird> @REM =q= 2>/dev/null||exec /usr/bin/env perl -S $0 ${1+"$@"}
22:56:50 <ehird> @perl -S "%0" %*
22:56:51 <ehird> =
22:56:53 <ehird> Beautiful
22:56:55 <ais523> I picked = as it has no special meaning to the shell, but's a legal delimiter for q
22:56:58 <AnMaster> pikhq, that isn't a compile time constant
22:56:59 <ehird> Problems to solve: - "%0" %* - Shebang not erroring
22:57:00 <ais523> and yes, is beautiful
22:57:02 <AnMaster> as in, it can't be optimised away
22:57:08 <pikhq> AnMaster: K.
22:57:11 <ais523> you need an @exit after that @perl line, though
22:57:24 <ehird> 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 <ehird> 1. eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}'
22:57:27 <ehird> 2. & eval 'exec /usr/bin/perl -wS $0 $argv:q'
22:57:29 <ehird> 3. if $running_under_some_shell;
22:57:30 <coppro> what are you two trying to do? provide a line that perl ignores but batch causes to be executed in perl?
22:57:30 <ehird> ais523: csh, eh?
22:57:31 * pikhq does s/1/argc/ in his test.
22:57:32 <AnMaster> pikhq, also, note that it might work differently on different targets. Like ARM, x86. x86-64, SPARC, PCC
22:57:33 <AnMaster> PPC*
22:57:39 <ehird> coppro: my current script will execute on:
22:57:41 <ais523> coppro: write a perl/sh/bat polyglot that runs the perl program
22:57:47 <ehird> ais523: also with a shebang!
22:57:49 <pikhq> Ahah.
22:57:50 * coppro cries
22:57:53 <pikhq> test.c:17: warning: generating trampoline in object (requires executable stack)
22:57:58 <ehird> ais523: also, add csh to that list
22:58:02 <ehird> I want to make it work in csh too
22:58:06 <ais523> yay csh
22:58:10 <ehird> YAY CSH
22:58:33 <ehird> this will end in beautiful, beautiful tears
22:58:44 <pikhq> So, it would appear that it is in the text segment if it doesn't close.
22:59:49 <ais523> are there any other notable shells?
23:00:24 <ais523> $ perl -mysw 'f$env("procedure")' 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8' !
23:00:25 <ais523> $ exit++ + ++$status != 0 and $exit = $status = undef;
23:00:35 <ais523> ^ perlrun's syntax on how to do the same thing under the VMS shell
23:00:35 <ehird> ais523: what the fuck
23:00:42 <ehird> oh god
23:00:57 <AnMaster> ehird, remember OS/1
23:00:57 <ehird> perl/bat/sh/csh/vms/shebang polyglot
23:00:59 <AnMaster> err
23:00:59 <ehird> I want to die now
23:00:59 <AnMaster> OS/2
23:01:02 <ais523> there's OS/2 too
23:01:06 <ehird> AnMaster: no, I'd prefer to forget it
23:01:11 <ehird> perl/bat/sh/csh/vms/os2/shebang polyglot
23:01:13 * ehird weeps
23:01:16 <ais523> it must be doable, surely
23:01:19 <ais523> if a little hard to test
23:01:24 <ehird> It must be doable, unfortuantely.
23:01:28 <ehird> *unfortunately
23:01:43 <AnMaster> ehird, what is your current one
23:01:52 <pikhq> C is a language with first-class functions that aren't closures. >:D
23:02:02 <ais523> <perlrun> This incantation is a bit much to remember, but Perl will display it for you if you say "perl "-V:startperl"".
23:02:09 <ais523> pikhq: no, it has first-class function pointers
23:02:10 <ehird> AnMaster: My current one is what I sprunged plus ais523's modifications
23:02:14 <ais523> the functions themselves are second-class
23:02:14 <ehird> I closed Emacs to kill the beast.
23:02:36 <ehird> Go has both first-class functions AND first-class function pointers.
23:02:38 <ehird> Take that.
23:02:44 <pikhq> ais523: But, but lambda(int, (int x, int y), x*y) !
23:02:44 <ais523> $ perl "-V:startperl"
23:02:45 <ais523> startperl='#!/usr/bin/perl';
23:02:48 <AnMaster> pikhq, what happened when using trampoline?
23:02:56 <ais523> boring
23:03:02 <AnMaster> ehird, I lost track of it
23:03:07 <ehird> AnMaster: ask ais523
23:03:12 <ehird> he can do the mods to my latest version
23:03:15 -!- ais523 has quit ("I need to go home").
23:03:16 <ehird> CAN'T HE AIS523
23:03:18 <ehird> :D
23:03:21 <pikhq> 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 <AnMaster> ehird, hm?
23:03:40 <pikhq> GCC also warns you when it generates a trampoline.
23:03:47 <AnMaster> well okay
23:05:27 <pikhq> A closure, hence, can easily be implemented in C: struct closure {void *function; void *free_variables}
23:06:25 <ehird> ok, wtf?
23:06:31 <ehird> bash is executing .bashrc but not .bash_profile
23:06:32 <AnMaster> ehird, don't forget MPW and MacPerl
23:06:37 * pikhq shall soon be writing some bloody crazy C code.
23:06:58 <AnMaster> ehird, see man bash. I end up sourcing files are required from each other -_-
23:07:14 <AnMaster> ehird, short story bash_profile is for login shells
23:07:18 <AnMaster> bashrc for normal ones
23:07:30 <AnMaster> suggestion: source .bashrc from .bash_profile
23:07:59 <AnMaster> further suggestion: if your distro doesn't do this, read man page to figure out how files in /etc/ are handled
23:08:17 <AnMaster> ehird, the relevant section is INVOCATION
23:08:30 <ehird> but I can't make bashrc include profile because profile includes bashrc
23:08:30 <ehird> AnMaster: But I want profile to be loaded
23:08:30 <ehird> when just bashrc would normally be
23:08:32 <ehird> My distro has . ~/.bashrc in .profile and no .bash_profile
23:09:11 <AnMaster> ehird, interactive shell?
23:09:44 <AnMaster> 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 <AnMaster> 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 <AnMaster> file, in that order, and reads and executes commands from the first one that exists and is readable.
23:09:54 <ehird> Maybe I'll just set up all the files so they all do . ~/.profile
23:09:54 <ehird> and have everything in there
23:09:55 <AnMaster> and
23:09:57 <AnMaster> 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 <AnMaster> may be inhibited by using the --norc option.
23:10:10 <AnMaster> ehird, I have all mine read ~/.bashrc instead
23:10:52 <ehird> yeah, because bash is the only thing that could read ~/.profile.
23:11:21 <AnMaster> ehird, also it behaves differently if invoked as bash or as sh
23:11:35 <AnMaster> ehird, no, but I have bash specific code in ~/.bashrc
23:11:41 -!- FireFly has quit ("Leaving").
23:11:56 <ehird> ok, let me rephrase my question
23:12:15 <ehird> 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 <AnMaster> ehird, depends on how the distro is set up for sourcing other files
23:13:12 <AnMaster> and you *will* need to source some file for it
23:13:40 <AnMaster> ehird, anyway, if it is exported, that should solve it
23:14:01 <AnMaster> when you run startx, the env variables will be inherited I believe
23:14:17 <ehird> ehird@meson:~$ egrep '(bashrc|bash_profile|profile)' .bashrc .profile
23:14:18 <ehird> .bashrc:# ~/.bashrc: executed by bash(1) for non-login shells.
23:14:20 <ehird> .bashrc:# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
23:14:21 <ehird> .bashrc:# sources /etc/bash.bashrc).
23:14:23 <ehird> .profile:# ~/.profile: executed by the command interpreter for login shells.
23:14:24 <ehird> .profile:# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
23:14:26 <ehird> .profile:# the default umask is set in /etc/profile; for setting the umask
23:14:27 <ehird> .profile: # include .bashrc if it exists
23:14:29 <ehird> .profile: if [ -f "$HOME/.bashrc" ]; then
23:14:30 <ehird> .profile: . "$HOME/.bashrc"
23:14:32 <ehird> I wonder if Debian even thought about how to set it up nicely.
23:14:41 <AnMaster> ehird, it loads bashrc
23:14:42 <ehird> AnMaster: yeah, I'm just gonna kill X :-P
23:14:47 -!- ehird has quit (Remote closed the connection).
23:14:47 <AnMaster> ehird, hm?
23:14:52 -!- BeholdMyGlory has quit (Remote closed the connection).
23:15:41 -!- ehird has joined.
23:15:43 <AnMaster> do you even use startx? Not GDM/KDM or such?
23:15:47 <AnMaster> also, night
23:15:49 <ehird> I use KDM, yeah.
23:15:51 <ehird> AnMaster: wait,
23:15:52 <AnMaster>
23:15:54 <ehird> maybe I should just put them in bashrc
23:15:57 <ehird> if profile loads bashrc
23:16:09 <AnMaster> 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 <pikhq> test.c:8: error: void value not ignored as it ought to be
23:41:29 <pikhq> FFFUUUU.
23:41:36 -!- augur has quit (Read error: 113 (No route to host)).
23:42:14 <oerjan> if you look into the void, the void looks back into you
23:42:54 <pikhq> I am never using a void value that I can find...
23:43:21 <pikhq> Unfortunately, GCC's line numbers are monumentally unuseful when it comes to macros.
23:44:58 <ehird> run cpp on it :P
23:45:27 <pikhq> Not helpful at all.
23:45:37 <pikhq> Did you know that CPP omits newlines?
23:48:32 <ehird> Yes.
23:51:04 <ehird> 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 <pikhq> Well, I have a somewhat unwieldy C closure definition.
23:51:28 <ehird> pikhq: Don't you wish you were programming in Go now?
23:51:29 <ehird> :P
23:51:31 <pikhq> (return type must be a pointer.)
23:51:55 <pikhq> (oh, and you need to be explicit about what you're closing. *Really* explicit.)
23:52:17 <ehird> S'ok, PHP 6 requires that too XD
23:52:27 <ehird> pikhq: Oi. Drool over http://sprunge.us/KHOM.
23:52:51 <pikhq> That is spiffy.
23:54:35 <pikhq> http://sprunge.us/UViC
23:54:44 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
23:54:51 <pikhq> It's a painful fib function!
23:55:25 <pikhq> http://sprunge.us/DUSj lambda.h
23:55:50 <ehird> I can see the C commitee accepting that as a standard heater for C11.
23:56:04 <ehird> But you'll have to rename it stdlam.h, and rename lambda to _LAMBDA.
23:56:09 <ehird> (It would be _Lambda, but it's a macro.)
23:56:11 <ehird> No wait.
23:56:12 <pikhq> Is that a compliment or an insult? :P
23:56:16 -!- bsmntbombdood__ has joined.
23:56:17 <ehird> isalpha is a macro too
23:56:19 <ehird> So, _Lambda
23:56:35 <ehird> And closure would have to become _Closure, but stdlam.h can do #define closure _Closure.
23:56:56 <ehird> call would have to become _Call, and it would be a macro.
23:57:02 <ehird> Wait, it is a macro.
23:57:03 <ehird> Whatever.
23:57:34 <ehird> pikhq: Make one that actually closes over something.
23:57:56 <pikhq> ehird: The example I pasted is closing over the fib closure.
23:58:23 <ehird> anyone know how to set an alarm with kde?
23:58:44 <pikhq> I could, of course, make its closing a bit more substantial. Un momento.
23:59:17 <ehird> Close over multiple variables in separate locations.
23:59:19 <ehird> I'll wait here.
23:59:38 <pikhq> A suggested (simple) example?
←2010-01-09 2010-01-10 2010-01-11→ ↑2010 ↑all