00:00:34 oh hm you limit kipple stacks to length 32256 iiuc 00:01:07 also it's spelled "instantiate" ;D 00:03:30 Gregor: can ORK do recursive objects, and so e.g. linked lists? 00:03:43 oerjan: I don't recall :) 00:03:56 hm 00:08:51 -!- FireFly has quit (Quit: swatted to death). 00:30:44 http://www.reddit.com/r/DebateReligion/stylesheet.css huh, they're actually interfering with RES 00:32:54 Gah, there's a lot of vitriol in that subreddit 00:35:17 DebateReligion -> "there's a lot of vitriol in that subreddit" -> duh 00:47:58 That's a little creepy 00:48:00 Oh, oops 00:48:03 /** 'Force' users to use the subreddit style **/ 01:07:32 @src reverse 01:07:33 reverse = foldl (flip (:)) [] 01:17:34 lol, told someone I was playing with Minecraft, he thought I meant minesweeper 01:18:05 Oh, or maybe he was joking 01:22:44 _someone_ probably made minesweeper in minecraft 01:22:53 with real explosions 01:24:26 Yes, someone actually did. 01:52:36 -!- copumpkin has quit (Ping timeout: 240 seconds). 01:53:01 -!- copumpkin has joined. 02:00:08 -!- CakeProphet has quit (Ping timeout: 276 seconds). 02:02:05 -!- cheater_ has quit (Ping timeout: 255 seconds). 02:15:07 -!- cheater_ has joined. 02:21:04 -!- pikhq_ has joined. 02:24:17 -!- pikhq has quit (Ping timeout: 258 seconds). 03:21:17 -!- azaq23 has quit (Ping timeout: 255 seconds). 03:38:17 -!- azaq23 has joined. 03:46:08 -!- BeholdMyGlory has quit (Remote host closed the connection). 04:08:28 -!- quintopia has quit (Read error: Operation timed out). 04:08:36 -!- quintopia has joined. 04:08:47 Linux 3.0 is out. 04:09:21 !python sum(['aaa','bbb','ccc']) 04:09:22 Traceback (most recent call last): 04:09:41 Is there any reason why sum doesn't work on any data type that defines '+'? 04:12:51 With the possible condition that it's order is not guaranteed if it's not cumulative, not associative or has side effects? 05:08:54 -!- atehwa has joined. 05:16:35 -!- zzo38 has joined. 05:17:05 I played D&D game today. Can you guess the number of each of our experience points (me and my brother) (including both individual and group XP)? 05:18:51 Yes. Do I have any decent chance of guessing correctly? No. 05:21:09 69? 05:22:17 No. More than 69. Note we have experience level 20 currently 05:22:42 And that it is not enough to go to level 21 05:24:18 zzo38: 19,0000 experience? 05:24:44 That is the starting experience for level 20. (Also the comma doesn't belong there) 05:24:48 Erm. 190,000, and why the hell did I do Japanese/Chinese grouping for that. 05:24:56 Yes. 05:25:01 That's the joke. 05:25:14 I meant the amount gained, not the total amount. 05:25:17 Though I wonder if that's actually doable in a single encounter. 05:25:26 Yes. 05:26:16 We don't use encounter experience anyways; the DM assigns XP based on other things, including encounters and other stuff 05:27:06 (But not the encounter experience table used in the book; instead XP is assigned based on what is achieved, meaning if an encounter is achieved then that counts too but based on achievements rather than encounter levels) 05:27:18 I suppose if you somehow stumbled across a vorpal sword at level one and then killed a deity, you could hit level 20. 05:27:38 pikhq_: No. Because we also use the rule no more than 1 level up per session. 05:27:52 zzo38: Lame. 05:28:05 And like I said we use achievement-based XP, not encounter-based XP. I prefer these differences in rules actually. 05:28:08 that is indeed lame 05:28:13 pikhq_: standard D&D rule is max 1 level per encounter 05:28:19 what if you decide to play twice as long one day 05:28:32 you have to arbitrarily break into smaller sessions? 05:28:35 quintopia: Then a session break is added at one point, when XP is counted 05:28:48 lame 05:28:52 coppro: Lame. 05:29:25 We use max 1 level per session, and I like it this way so do the other players and the DM 05:29:53 *Personally*, I prefer to have the DM arbitrarily do a level bump. 05:29:58 But that's just me. 05:30:28 So, XP is never counted except at the end of a session. You cannot level up during a session, even if there is a magic effect that adds XP to your total, in which case it is done immediately but does not level up until end of session 05:30:31 (I happen to dislike CR and experience costs) 05:30:52 I also happen to dislike CR. 05:31:07 Experience costs though, I don't dislike as much. 05:31:07 You can kill deities in D&D without being one? 05:31:11 Sgeo: Yes. 05:31:23 Sgeo: D&D deities are just extraordinarily strong beings. 05:31:24 Sgeo: Depends on the campaign too. 05:31:43 Presuming a "standard" setting; some settings can very well have omnipotent, immortal deities. 05:31:57 pikhq_: Yes. Depends on the campaign. 05:32:20 nearly every roleplaying game has an omnipotent immortal deity 05:32:31 Of course, in most RPGs everything can be modified by the campaign. 05:32:34 coppro: The DM? 05:32:55 pikhq_: yeah 05:35:57 Well, in Forgotten Realms, there is one metadeity (the book says it is a deity but I don't believe them) 05:36:49 Ao? 05:37:47 Yes, I mean Ao 05:38:54 Do you believe me or do you believe the book (or do you believe both)? 05:39:48 I'm inclined to call Ao the in-setting manifestation of the DM, personally. 05:39:53 Or a metadeity. 05:42:58 O, so you have your own opinion. That is OK, too. 05:44:48 I updated the pre-game copies of the character sheets on my computer since both of our character also speak Thesk language too. 05:46:24 (Since both of us are escaped slaves from the Thesk island, him a arena slave and me a magical assistance slave. We are saved by a dwarf who says we need to do them a favor or be dead by magic, but we don't even know what that favor is!) 05:54:18 -!- zzo38 has quit (Remote host closed the connection). 06:14:05 so i discovered visualboy advance emulator already contains an interframe filter.. i thought i was clever thinking of interframe filters for emulators the other day but clearly some movement has been made in that direction already 06:32:37 -!- oerjan has quit (Quit: Good night). 06:40:34 So. In Java you can mess with boxing with reflection. In Scala, a lot of language features use boxing "backstage" 06:40:50 I wonder what kind of tangled messes you can create with that kind of functionality. 06:44:48 (maybe "functionality" should be in quotes) 06:51:27 -!- Sgeo has quit (Ping timeout: 255 seconds). 06:55:33 -!- azaq23 has quit (Quit: Leaving.). 07:01:50 -!- Sgeo has joined. 07:27:42 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)). 07:28:05 -!- monqy has quit (Quit: hello). 07:28:09 ping 07:29:23 Ping ping here and a ping ping there and... I'm sure there's a song like that. 07:29:26 -!- rodgort has joined. 07:29:40 Undoubtedly 07:30:06 -!- CakeProphet has joined. 07:30:06 -!- CakeProphet has quit (Changing host). 07:30:06 -!- CakeProphet has joined. 07:50:53 -!- CakeProphet has quit (Ping timeout: 240 seconds). 07:52:51 -!- CakeProphet has joined. 08:22:46 -!- Taneb has joined. 08:38:55 -!- NihilistDandy has quit (Read error: Operation timed out). 08:40:06 -!- NihilistDandy has joined. 08:44:47 -!- Nihilist1andy has joined. 08:47:21 -!- copumpkin has quit (Ping timeout: 250 seconds). 08:47:45 -!- copumpkin has joined. 09:17:47 -!- CakeProphet has quit (Ping timeout: 240 seconds). 09:47:02 -!- copumpkin has quit (Ping timeout: 246 seconds). 09:47:38 -!- copumpkin has joined. 10:29:58 -!- shachaf has quit (Remote host closed the connection). 10:54:43 -!- CakeProphet has joined. 10:54:48 -!- CakeProphet has quit (Changing host). 10:54:48 -!- CakeProphet has joined. 10:58:06 -!- NihilistDandy has quit (Quit: leaving). 10:58:07 -!- Nihilist1andy has quit (Quit: leaving). 10:59:44 > map (\x -> join((+) `ap` (+x)) x) [1..] 10:59:45 Occurs check: cannot construct the infinite type: a = a -> b 11:00:03 > map (\x -> (+) `ap` (+x) x) [1..] 11:00:04 No instance for (GHC.Enum.Enum (a -> a)) 11:00:04 arising from a use of `e_11' at... 11:00:22 :t (+) `ap` (+3) 11:00:23 forall a. (Num a) => a -> a 11:00:43 > map (\x -> (+) `ap` (+x) x x) [1..] 11:00:44 Occurs check: cannot construct the infinite type: t = t -> a -> a 11:01:41 @pl (\x -> (+) `ap` (+x) x x) 11:01:42 ((+) `ap`) . join (join (+)) 11:01:54 :t ( 11:01:55 parse error (possibly incorrect indentation) 11:02:05 :t (\x -> (+) `ap` (+x) x x) 11:02:07 Occurs check: cannot construct the infinite type: t = t -> a -> a 11:02:07 Probable cause: `x' is applied to too few arguments 11:02:07 In the second argument of `(+ x)', namely `x' 11:02:26 uh... 11:02:31 :t (\x -> (+) `ap` (+3) x x) 11:02:32 Occurs check: cannot construct the infinite type: t = t -> a -> a 11:02:32 Probable cause: `x' is applied to too few arguments 11:02:32 In the second argument of `(+ 3)', namely `x' 11:03:04 ?ty ap (+) (+3) 11:03:05 forall a. (Num a) => a -> a 11:03:16 :t (\x -> (+) `ap` (+3) x) 11:03:17 forall a. (Num a) => (a -> a) -> a -> a 11:03:30 > map (\x -> (+) `ap` (+3) x) [0..] 11:03:32 No instance for (GHC.Enum.Enum (a -> a)) 11:03:32 arising from a use of `e_130' a... 11:03:36 and now that. 11:03:47 ?ty ap (+) ((+3) 0) 11:03:48 forall a. (Num a) => a -> a 11:04:43 :t (\x -> (+) `ap` (+x) x) 11:04:45 forall a. (Num a) => (a -> a) -> a -> a 11:04:50 @pl (\x -> (+) `ap` (+x) x) 11:04:50 ((+) `ap`) . join (+) 11:06:43 @pl (\x -> (+) `ap` (x+x)) 11:06:44 ((+) `ap`) . join (+) 11:08:24 huh? 11:08:45 > (+) `ap` 3 11:08:46 Overlapping instances for GHC.Show.Show (a -> a) 11:08:46 arising from a use of `... 11:09:03 :t (+) `ap` 3 11:09:05 forall a. (Num a) => a -> a 11:09:08 :t (+) `ap` 3 4 11:09:10 forall a. (Num a) => a -> a 11:09:34 um okay. 11:09:34 does anyone know whether there has been serious attempts at implementing a rewriter engine for undirected graphs? 11:10:12 not that I know of, it doesn't sound impossible at all though. 11:10:34 Weren't there some attempts at Eodermdrome implementation? 11:10:52 That's where the design of grrr died off, and that's where eodermdrome is lacking. 11:11:23 grrr was supposed to be "graph reduction renderer", to visually explore undirected (but labeled) graph rewriting 11:12:01 visualisation would be even more useful for eodermdrome, though. 11:12:47 From March of this year: 11:12:48 I am also totally disappointed at the lack of interest in my plans for an Eodermdrome implementations. 11:12:48 Phantom__Hoover: The language is cursed: people always just talk about implementing it, but never do. (Did oklopol have an eodermdrome thing or how was it?) 11:12:48 [2008-07-17 19:06:16] < oklopol> i implemented eodermdrome 11:13:29 hmmm 11:14:28 I have a vague feeling that oklopol's implementation was something incredibly slow. 11:14:51 I wouldn't be surprised 11:14:54 http://www.vjn.fi/pb/p565155612.txt 11:15:01 Hmm, no, that was just a running example. 11:15:02 CakeProphet: Caleskell has instance Num (a -> a), which can make some things confusing 11:15:53 Because basically, you can just brute-force the search for rewritable subnets 11:16:03 and that _is_ incredibly slow. 11:16:13 http://www.vjn.fi/pb/p646231414.txt <-- yeah, okay, so it's not quite an implementation of the language yet. 11:16:56 There might be later pastes too. 11:17:09 It's just that oklopol's not very good at sharing what he does with others. 11:18:29 I do recall wondering whether NAUTY would have been of any use in an Eodermdrome impl. 11:18:59 But it might be that it doesn't help in the subgraph isomorphism problem at all. 11:19:54 hmmm 11:19:56 There are of course other libraries too. 11:20:14 the esolang community has a great record of wasting work :) 11:20:45 Googling with the obvious words finds Python bindings for something called "VF" that speaks of subgraphs, isomorphisms, and has functions that start with "match", which is of course a good sign. 11:20:55 Haven't bothered to read any documentation. 11:21:40 it might be almost a comparable effort to find out whether some given program does what I was talking about, as to write the frigging program. 11:25:20 wow, seems I _have_ actually documented grrr partially 11:25:26 Maybe I'll have to add that to the wiki. 11:29:09 I've just made a surprisingly good BF Joust program 11:29:39 I'm all ears. 11:29:40 -!- mycroftiv has quit (Ping timeout: 264 seconds). 11:30:50 -!- mycroftiv has joined. 11:30:57 !bfjoust lowgate >>>>>>>>>([[-[++]]]>)*21 11:31:06 ​Score for Taneb_lowgate: 13.4 11:32:01 Not mad 11:32:12 Quite bad, though 11:32:29 why does it have double [[]] ? 11:32:52 So it doesn't commit suicide if it wins 11:32:56 The [++] loop may get locked if there is an odd cell 11:33:14 That would explain why it loses so often 11:34:19 atehwa: There's that GrGen graph rewriting systemajomatic -- http://www.info.uni-karlsruhe.de/software/grgen/index.php -- I suppose it's more commonly used with directed labeled graphs, but the feature list seems to suggest the edges can be undirected too. I don't know the details of the pattern-matching/rewriting language it uses though. 11:34:40 I'll translate my python system into JavaScript 11:34:50 So it's faster 11:35:02 Then, I'll learn C and translate it into that 11:35:05 fizzie: I just checked out NAUTY, and it is only partially applicable 11:35:17 because IIUC it does not search for subgraphs 11:35:37 Then my genetic program will RUE THE DAY 11:35:38 and brute-forcing subgraphs then checking for graph isomorphism is even worse 11:35:51 atehwa: Right. The VF library seems rather more applicable, but the website for that seems to be a bit down. 11:36:21 maybe the website has a difficult life situation :( 11:36:24 Taneb: That "fizzie_evo_4" on the hill has also been evolvamated. (Well, for some values of, anyway.) 11:39:03 VFlib seems to be a library of _graphs_ :) 11:40:00 I think that's just misleading body text. 11:40:20 yes, seems so. 11:40:56 http://portal.acm.org/citation.cfm?id=840896 describes what they use. 11:41:07 The library itself lives in some .it address that doesn't want to speak to me. 11:41:23 It's Italy, maybe it's on strike. (Who said the art of stereotypisms is dead?) 11:41:47 http://www.cs.sunysb.edu/~algorith/implement/vflib/distrib/ 11:42:40 That would involve untarballing a tarball to see what it has eaten, far too much work. 11:43:14 There is also http://www710.univ-lyon1.fr/~csolnon/LAD.html 11:43:21 well, it has the library and some documentation. But you need not bother, this was my quest originally anyway :) 11:43:59 LAD's based on a later-published algorithm than VF, so it's unambiguously better. 11:44:14 (I mean, they wouldn't have gotten it published if it were worse, right?) 11:44:46 LAD seems good, on the surface, at least :) 11:45:07 They do benchmark against VF. :p 11:45:50 LAD seems to be really minimalistic, too. 11:46:02 so it could be rather easy to extend. 11:46:18 -!- shachaf has joined. 11:50:44 although, it might not make sense to build a graph rewriting implementation on pure static subgraph isomorphism matcher, either 11:51:12 because different rewritings can fire others, and there's much room for optimisation there 11:51:23 but maybe it's a good starting point anyway. 11:53:05 oh. Seems LAD's algorithm might not be applicable to graph patterns where there are constraints that some edges _not_ exist 11:53:16 which is the case of eodermdrome "closed" nodes 12:00:56 This is a lot more interesting that I'd thought :) 12:05:06 Right, Eodermdrome matching is sort of between finding an isomorphic subgraph and an isomorphic induced subgraph. 12:05:22 yep 12:05:34 actually the matching rules for eodermdrome are smart indeed 12:06:13 it's a very nifty way to specify _two_ kinds of constraints on the graph. 12:06:34 namely, the existence of some arcs, and the absence of others 12:06:53 while still being able to leave the existence of some arcs as "don't care" 12:08:05 It's also very "intuitive" how to do the replacement, with the open nodes being the ones that are used to "hang" the new graph in place to the larger state graph. 12:08:47 this is super-perplexing 12:08:52 ? 12:09:04 python is caching something somewhere, and i have no idea where it's happening and how to turn it off 12:09:35 fizzie: true, although the rules make it impossible to disconnect arbitrary subgraphs 12:10:05 because in order to leave a node open, you have to mention it on both sides 12:10:27 and in order to mention two nodes on RHS, you have to connect them directly or indirectly 12:11:36 so anytime you want to disconnect a node from some other node, you have to close it - and that means it cannot have a subgraph behind it 12:12:31 but effectively, the rules of eodermdrome just enforce that the rewrite rules never even produce disjoint graphs. 12:13:04 cheater_: reload(module)? 12:20:26 yeah, except uwsgi doesn't reload the module on every refresh :p 12:20:32 i've fixed it tho 12:29:32 :/ 12:36:33 I keep typing undefined as underfined 12:36:49 Got an error message: underfined is not defined 12:37:02 Thought it was ironic until I realised my typo 12:37:25 @pl scanl f a = map (foldl f a) . inits 12:37:26 scanl = flip flip inits . (((.) . map) .) . foldl 12:45:35 I've translated my BFJoust interpreter to JavaScript 12:47:04 why would you do such a th--oh, cool. 12:49:55 I think Perl was the earliest language in the C family to have map and filter operators. 12:50:09 depending on when they were added. 13:09:07 @pl map f (x:xs) = f x : map f xs 13:09:08 map = fix (flip flip tail . (ap .) . flip flip head . ((.) .) . liftM2 flip (((.) . (:)) .)) 13:09:55 @pl map f ls = case ls of [] -> []; (x:xs) -> f x : map f xs 13:09:56 (line 1, column 26): 13:09:56 unexpected ">" or "-" 13:09:56 expecting variable, "(", operator or end of input 13:20:51 does anyone out there actually use F#? 13:20:58 have you guys ever used F#? 13:22:40 I don't know any F# users, no. 13:32:37 -!- copumpkin has changed nick to nmcblanket. 13:32:53 -!- nmcblanket has changed nick to copumpkin. 13:33:30 according to wikipedia it is a variant of ML 13:35:22 -!- BeholdMyGlory has joined. 13:37:46 The other sort of algebraic data type mentioned, "discriminated unions" (type-safe versions of C unions), can be defined to hold a value of any of a pre-defined type. 13:37:59 why does Microsoft have to rename everything terribly. 13:38:32 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 13:38:35 I actually heard someone use the term "managed language" in a conversation recently. 13:39:33 which I'm pretty sure just means that it runs on a virtual machine and is bytecode compiled. 13:39:53 but for some reason Microsoft has to define these new names for things and use those instead, as though it is different somehow. 13:43:09 The managed/unmanaged distinction is theirs, yes. 13:45:29 this person said they do not like managed languages. I ask them what they thought that meant 13:45:44 they said it means that it has "hidden code" such as garbage collectors. 13:45:45 As far as I understand it, managed code is anything represented in the CIL bytecode, though the runtime does not actually run that, it native-code compiles it. I guess it counts as a form of JIT. 13:45:49 I was like... are you serious? 13:46:42 This was spoken in the context of not liking managed languages. So in essence he was saying he doesn't like garbage collection or virtual machines. 13:47:04 infuriating, but oh well. 13:47:13 Well, I guess that's his prerogative? 13:47:17 indeed. 13:47:26 even if it is based on stupidity... 13:47:57 I asked him if he had any problem with using libraries, since this is "hidden code that could potentially cause bugs not in your own code" 13:48:01 he was ambivalent. 13:48:15 I'm sure there are still happy assembly coders who don't like any safety features either. 13:48:50 it's just the idea that using a garbage collector will somehow result in all of these bugs that you have no control over 13:48:58 it is a silly one. 13:49:10 Oh, I thought it was about the performance issue. 13:49:18 nope. hidden code. 13:49:27 causes bugs. 13:49:48 but if you "aren't new to programming" then manual memory management is practically bugfree.... 13:49:49 Just saying "hidden code" might equally well mean performance overhead. But I guess you were there. 13:49:57 Well, that is silly. 13:50:21 yeah, I was saying that manual memory management will result in /more/ bugs than using a well-tested garbage collector., 13:51:24 and his rebuttal was that experienced programmers don't have to worry about that. 13:51:27 or something. 13:51:38 I don't know. I am infuriated. :P I should stop remembering this conversation. 13:52:51 I can't wait to interact with these people in a work environment. 13:53:14 they will hate me because I will be all snobby about everything. :P 13:53:25 JUST WAIT. 13:53:33 a few years from now. 13:53:37 when I have graduated. 13:54:49 I wonder what language I will be programming in when I get a job. My money is on Java or C# if it's a software company. Or Javascript, PHP, Python if it's web programming. 13:55:26 People do serious web-things in quite a plethora of languages nowadays. 13:55:29 but there's a lot of possibilities, these are just common languages for those things. 13:55:32 yes. 13:55:47 Ruby or even Perl is a possibility for web programming. 13:56:09 ActionScript for sure 13:57:11 I once found a programming gig for SBCL (Lisp) 13:57:33 but I didn't have any qualifications for it, unfortunately. 13:57:53 I was looking forward to mind-numbing layers of parentheses. 13:58:17 SSH Communications famously (well, not quite) mentioned they use Scheme a lot in one of their job ads. 13:58:25 in possibly the oldest language that is still in common use. 13:58:55 in the form of dialects, granted. 14:01:24 -!- copumpkin has joined. 14:01:39 I once got a summer job at Nokia (well, their research side) for knowing Perl. Or maybe Befunge. 14:02:05 Perl is what they wanted done, but esolangs were discussed quite a lot at the interview. 14:02:05 lol, nice. 14:02:15 I should list my esolangs then. :) 14:02:44 I might list Lisp even though I don't really know it, lol. 14:03:01 meaning I don't comfortably know a common dialects idioms. 14:04:16 but I read SICP, so that counts for something. :P 14:05:01 fizzie: did they care about having any kind of work experience with Perl, or was just knowing Perl enough? 14:06:03 Well, they wanted someone who knew Perl, not just knew about Perl. But certainly no Microsoft Certified Perl Expert qualifications. 14:06:35 right, I'm just wondering how they verified such things. 14:07:16 By asking me, basically. 14:07:31 ah, cool. 14:07:40 this is promising. 14:07:45 There was no Perl quiz or anything, I mean. They just asked me how well I knew it. 14:07:54 because it means I can use knowledge of multiple languages in a job interview as an advantage. 14:07:54 Then I had to formulate some sort of an answer. 14:08:11 https://gist.github.com/1023982 oh god I'm gonna barf. 14:08:13 apparently fizzie has had too many fried beans today 14:09:29 http://www.rte.ie/news/2011/0722/oslo.html 14:09:30 Elizacat: what's wrong with that? 14:09:36 that looks perfectly reasonable to me. 14:09:42 There's been an explostion in Oslo. 14:09:58 a class with lambdas 14:10:02 that one really just made me puke 14:10:05 whoever does that needs to be killed 14:10:14 it's not that lambdas are bad 14:10:20 don't use them like THAT 14:10:21 it's just that Python's lambdas are bad. 14:10:36 I don't find lambdas very useful outside of functional programming languages 14:10:36 :P 14:10:54 well, when you can add multiple statements to it 14:10:55 it is. 14:10:59 python's lambdas aren't bad, they're just useless 14:11:09 I think this is a subset of "bad" 14:11:19 useless is bad. 14:11:19 cheater_, yet everyone whines when they are proposed for removal... :p 14:11:32 i would much rather like anonymous functions 14:11:40 nobody uses lambdas 14:12:04 yes, anonymous functions are lambdas technically. this is what I'm referring to. 14:12:31 but Python has a terrible way of delimiting blocks and so anonymous functions are syntactically difficult. 14:14:28 !perl print map {s/a/b/g;s/c/d/g;} "abcdefg" 14:14:29 Modification of a read-only value attempted at /tmp/input.11021 line 1. 14:15:12 lame 14:15:25 !perl print map {s/a/b/gr . s/c/d/gr;} "abcdefg" 14:15:25 Bareword found where operator expected at /tmp/input.11157 line 1, near "s/a/b/gr" 14:16:12 turns out I apparently don't know Perl 14:16:18 even though that's what I've been programming in for the past few months. 14:18:28 but anyways, point to be made is: Perl has anonymous subroutines. people use them. 14:18:50 the whole "lambdas are bad style" thing in Python is probably a result of lambdas looking ugly and being highly constrained in Python. 14:20:05 but hey, the lambda-only class definition actually doesn't look too bad. It's kind of fun to see how you could write a class functionally in Python. 14:21:17 -!- lambdabot has quit (Ping timeout: 240 seconds). 14:22:01 CakeProphet, not in python 14:22:21 CakeProphet, a lambda is an expression, in python a function can be multiple expressions, unlike in many languages that have lambdas 14:22:34 ...yes, I know how it works in Python. 14:22:39 it's because python is descriptive rather than declarative 14:22:51 or rather prescriptive 14:22:58 ...imperitive? 14:23:38 I don't think you describe computations in Python by how they "should" work 14:23:40 well, i think "imperative" does not focus on the important aspect of the difference between so called "imperative" languages and so called "functional" langauges 14:23:44 well, maybe you do that in all languages. I don't know. 14:23:59 i mean you can perfectly well say that python is an imperative, functional language 14:24:13 except it's not really all that functional. 14:24:25 functional means a function is a first class object 14:24:31 which it is, because you can manipulate functions 14:24:33 it has first-class functions. that's pretty much the extent of it. 14:24:48 i rather like to use "declarative" for what people call "functional" because you can say that the nature of those languages is that they say what things are, rather than how to build them 14:24:53 but it's not really a functional paradigm. but sure, it's functional. 14:25:01 that's the problem 14:25:07 that's why i say "declarative" instead 14:25:08 I suppose. 14:25:15 that makes sense. 14:25:35 and that's why i call "imperative" prescriptive, because it prescribes how to get something 14:25:35 but I think "has first class functions" is a very flimsy definition of a functional language. 14:25:55 i'd word your concern differently 14:25:56 not really what I connotate from the word functional. 14:26:07 "functional" is a very flimsy description of haskell, erlang, ocaml and lisp 14:26:47 C has first-class function pointers. is it functional? :P 14:27:01 i don't know C well enough to answer that question 14:27:15 I could write a map in C, it would just need an extra length parameter. 14:27:47 yeah but it wouldn't be declarative 14:28:28 I could write it recursively if that's what you mean. 14:28:46 you wouldn't declare the map function as its first argument applied to the head of the second, plus map applied to the first argument and tail of the second 14:29:15 yeah, but that's unnatural for the language, and wrong, because it would probably give you a stack overflow 14:29:33 without adding several more parameters it would also be in-place. 14:30:07 stack overflow depends on the length of the array and the size of the call stack of course. 14:30:13 yes 14:30:24 alternatively, if your recursion would just mean you pass the recursed function the pointer+1, then you're again iterating 14:30:38 which is not really declarative 14:30:43 but by your very weak definition of functional, C is functional. 14:30:51 i don't know 14:30:55 but i wouldn't be surprised? 14:30:58 if not declarative (aka what I consider functional to mean) 14:31:03 i mean in C you can have SMC 14:31:16 and you can create, modify, append, concatenate, and remove functions 14:31:26 you can copy and overwrite them 14:31:43 so to that extent, C is very much functional 14:32:00 it has even features no other languages have such as concatenation of function bodies 14:32:29 also, I don't really see the distinction between incrementing a pointer recursively as "iterating" and getting the head and tail of a linked list as being "declarative" 14:33:11 well let's think of it as an index, rather than a pointer, that starts at 0, then it's 1, 2, and so on 14:33:34 this index gives you, at any point, information about the global structure 14:34:00 it tells the body of the function "at this point, you are at the 60th element" 14:34:03 that is iteration 14:34:05 not really. 14:34:14 I can't go back to the 0th element from a recursive call. 14:34:26 with head/tail you can't 14:34:44 because you don't know where you are - your context always assumes that what you're passed is the whole thing 14:34:46 yes, also with recursive pointer increments and a length parameter, you cannot deduce where the start of the list is. 14:34:56 excuse me, array. 14:34:59 why can't you? 14:35:17 because it's not just an index, you can't just set it back to 0 14:35:26 and you have no other information to get you back to the original index. 14:35:40 the length parameter won't help you. 14:35:56 but that's what i was talking about 14:35:57 an index 14:36:01 my function is something like f(i, list, func) { list[i] = func(list[i]); f(i++, list, func); } 14:36:20 it's a reference to a location in memory, that I am shifting forward one location each recursive iteration. 14:36:36 similar to how a linked list works, but contiguous in memory. 14:36:56 of course, if you're given a pointer, then it would be f(start, size, list, func) { list[start] = func(list[start]); f(start+size, size, list, func); } 14:37:03 ok, i know what you mean 14:37:37 it's the same thing basically, that if the expressions have no side effects, then what you do in the recursion does not matter. The distinction between iteration and recursion is meaningless because they are equivalent. 14:37:44 but in what i just wrote you're still describing HOW to do something, instead of what you are getting 14:38:01 you're describing the action of going form list to map(list, func) 14:38:40 in haskell, you are describing the structure of map list func and you are describing it with the nouns "map", "list" and "func" 14:39:40 so maybe it's that in a prescriptive language basically you have nouns and verbs, in a declarative language you have no verbs 14:40:09 you don't "do to " 14:40:35 I use verbs all the time in Haskell. 14:40:38 instead you say " is an " 14:40:46 can you give me an example? 14:40:49 map... 14:40:56 map f over list 14:41:00 it's a command. 14:41:04 fold as well 14:41:05 well, that's just a way to read it 14:41:12 yes, as is your definition of nouns and verbs... 14:41:56 i would say, map paintRed fence = "a fence which is red" 14:42:09 you would say map paintRed fence = "a fence which has been painted red" 14:42:30 I suppose. I'm just saying a function is very much like a verb. 14:42:46 well, i wouldn't say so 14:42:54 i would say a function is just a parametrized value 14:43:14 when you define the function, you *declare* what it is 14:43:20 but when you use it, you are using it like a verb. 14:43:33 not really - when you use the function, you declare what the output is 14:43:40 y = f x 14:43:58 i declare y to be an x-ish f 14:44:12 "y is an f of subtype x" 14:44:18 this is just completely arbitrary. 14:44:26 to perspective. 14:44:32 > map (+1) [1..] 14:44:44 "hey computer, map this function over this list" 14:44:51 "a list of 1, 2, .. incremented by one" 14:45:13 where "incremented by" is an adverb 14:45:22 lol 14:45:38 so map isn't a verb, it's "a list of" :P 14:45:40 which is a nount 14:45:41 got it. 14:45:59 well, that's just what i think when i see map (+1) [1..] 14:46:12 the reason I say functions are like verbs is because they take arguments 14:46:18 similar to how language verbs have subjects and objects. 14:46:36 nouns are more like the constants. 14:47:05 this discussion resonates quite a lot with what i thought when i first started studying mathematics at the university and first started hearing how people actually talk about mathematical objects at work 14:47:14 adjectives and adverbs are also like functions in that they augment or modify existing things (aka their argument) 14:47:31 it was always a case of "function f is ...", never a case of "to get the value of function f, you do ..." 14:47:46 right, but functions /do/ things. 14:47:49 they compute 14:47:56 i differ 14:47:56 you declare them, by stating what they are, yes. 14:48:21 a function in mathematics is a constant value, with an argument, which is applied via the substitution principle 14:48:42 let's say you have your value q = 1+2 14:49:28 then you can have your value q(x) = 1+x, where what you do is you first take say q(100), then you expand it to 1+x, and then you substitute x := 100 14:49:29 but a function is also an abstraction of a computation. It maps one set of values to another set. 14:49:47 yes, but a map is a static object 14:49:52 it doesn't change, move, or run 14:49:55 it just is there 14:49:58 ...sure. 14:50:14 every function exists already in Functions 14:50:23 Functions is the set of all functions. :p 14:50:35 I'm not saying you describe functions by saying what they do. I'm saying that functions themselves describe an action. 14:50:52 there's a very important notion in mathematics that mathematical objects do not get created, they get discovered 14:50:59 they've been there all the time, behind your back 14:51:28 so in this way, the \Gamma function wasn't discovered, it was described 14:51:30 that's a philosphical point I don't think I necessarily agree with. At least not for every mathematical object. 14:51:43 er 14:51:51 *it wasn't created, it was described 14:51:55 to me it's just a system. it's arbitrary in its man-made rules. 14:52:02 can you name a mathematical object which was *created*? 14:52:13 no, you don't create concepts. 14:52:32 but you said you don't agree and that some objects were created 14:52:42 unless you were referring to something else? 14:53:21 I just don't believe they are discovered. As if they had existed this whole time. I believe they are constructed at which point they become defined. I don't think nature cares about our abstractions. 14:53:42 we just describe what already existed in nature with concepts we create over time. 14:53:48 so... I suppose I am saying they are created. 14:54:52 ah, instead i see it this way.. imagine you're in a huge town where you've never been, everyone speaks a language you don't know 14:55:07 you start out at some point and there are trees and you can punch them 14:55:24 you can go to places, and see new things 14:55:31 but they do not have to correspond to anything that actually exists. I could devise a completely arbitrary set of rules. would I have simply discovered that mathematical system or did I create it artificially? 14:55:34 if you remember the path to those things, that's your definition 14:55:44 however, those things were there before you have defined them 14:55:46 and if I discovered it, where was it hiding all of this time? :P 14:55:58 well why are you on that island first of all? 14:56:11 i mean what is your business there sir? 14:56:22 er, I wasn't referring to your metaphor, actually. 14:57:07 well, your set of rules is the pathway in your mental considerations of mathematics 14:57:24 which lets you arrive at the concept of that mathematical system 14:57:35 it was there, you just haven't ever taken this path before 14:58:17 it just seems somewhat arrogant to say that mathematics, which is inherently a human conception, somehow /is/ the innate properties of the universe, and not merely an artificial description. 14:58:42 ah, but mathematics has nothing to do with the universe 14:58:49 it's completely disconnected 14:59:05 trying to assign cosmical properties to mathematical objects is called physics 14:59:19 and then they only say that the mathematics in question are a model, not that they're the real thing 14:59:22 but I kind of associate existence with being a part of the universe.. 14:59:44 so basically what you are saying to me is that you can discover mathematical objects, but they don't really exist. 14:59:46 no physicist will tell you that the string theory is the nature of the universe 15:00:11 er, no 15:00:17 I don't know, existence is a tricky thing. 15:00:36 i'm saying that mathematical objects exist, and that they always have, and that they are not assigned to any physical objects. 15:00:42 right. 15:00:56 physical in the meaning of "tangible" 15:01:26 ideas exist, certainly. But how do you discover ideas? 15:01:39 they must be made by an intelligence being at some point. 15:01:50 *intelligent 15:02:22 (don't give me that platonic ideal crap :P ) 15:02:23 i would say that definitions can be made 15:02:30 there might have been no definition of the idea 15:02:39 which means the idea was outside of your holographic bubble 15:02:59 you can create a definition, by which you arrive at the concept 15:03:17 but the creation of the definition is a secondary concern, it's a means to an end: the concept 15:03:31 I don't know, I just find it strange to thing that the idea of freedom of speech existed before any intelligent life thought it up. 15:03:31 the concept, in itself, is what interests us, not the definition of it 15:03:45 s/thing/think 15:04:08 notice how even in english you can "have" an idea, but not "create" an idea 15:04:15 you have it, meaning you grasp it 15:04:22 it's in your hand 15:04:45 before, it was not available 15:04:56 sort of like a fruit high up on a tree 15:05:13 yes I can understand all of that. I just don't believe there's much distinction then, really. 15:05:23 well there is 15:05:31 what we are talking about is practically the same. because an idea might as well not exist until it is available to us. 15:05:42 because look at it: the definition of an idea is secondary to the idea itself, would you agree? 15:05:45 so... whether ot not it existed before someone thought of it is somewhat irrelevant. 15:05:52 the definition being our action of discovering the idea 15:06:43 I guess. This is just all too human-centered (or intelligence-centered, if you prefer) to really convince me that these things existed since the dawn of time. 15:07:04 ah, but look at it this way 15:07:15 the time interval known as a second has existed before humanity 15:07:29 it would be very egoistic to think that seconds have not existed before humans described them 15:07:49 the interval of time existed sure, but seconds as an idea didn't. 15:07:52 there were intervals of time of length one second before humanity! 15:07:57 well, anyways 15:08:27 what i'm trying to say is that the difference between the idea and definition is similar to the difference between declarative and prescriptive definitions 15:08:45 I... guess? 15:08:49 idea :: definition == declarative definition :: prescriptive definition 15:09:00 a prescriptive definition is that one step further from the idea 15:09:24 I will write a language that goes one step closer than declarative! 15:09:38 that would be neat 15:09:41 i wonder what that would be 15:09:42 where the ideas just exist without definition or something. 15:09:52 magic. 15:10:04 or impossible probably. 15:10:25 Impossible magic 15:10:26 hmmm, can I be an agnostic on the matter? 15:10:35 well you can see that a prescriptive definition could be improved 15:10:43 i wonder what the next step would be 15:11:14 i mean in prescriptive definitions, imo, we have verbs, nouns, and adjectives from which we make those definitions 15:11:16 we can't know if the idea existed before the point of grasping because it was not known to us before that point. 15:11:27 in declarative definitions we seem to have nouns and adjectives 15:11:33 can we do with just adjectives? 15:11:59 I don't think natural language makes a very good metaphor for programming languages. 15:12:01 can i say "x is five-element, rising, starting-with-one"? 15:12:15 would that be a definition for [1, ... 5]? 15:12:21 some of the worst ideas in Perl are based on natural language metaphor 15:12:41 I mean, they're comparable. 15:12:52 but sentences cannot have as deep of a structure as a program expression. 15:13:07 could you call this a "descriptive language"? 15:13:09 do the distinction between verbs and adjectives and adverbs as separate modifiers becomes more irrelevant. 15:13:26 descriptive, imperitive, or interrogative 15:13:48 no i mean this "adjectives only" language 15:13:52 oh. 15:13:53 can it be called "descriptive"? 15:14:01 uh, well, I would call any language descriptive. 15:14:08 because that is what language is for. 15:14:21 but really, if you define things with adjectives, you define everything by describing it, right? 15:14:43 yes. I can't really imagine how you would not describe something in a language. 15:14:50 how do I write an algorithm in C without describing it in some way? 15:15:37 well you construct things 15:15:39 By not using any comments? 15:15:48 in C you basically construct things 15:15:50 And obfuscating it loads? 15:15:57 yes, but I describe those constructions. 15:16:07 with elements of a language. 15:16:12 yeah but that's on meta-level to the language 15:16:16 don't mix those up 15:16:49 in C you say "take some flour, some eggs, some water, and baking powder, mix them together, and you have dough" 15:17:02 in haskell you say "dough is a micture of flour, eggs, water, and baking powder" 15:17:10 yes, you describe the steps. functions are descriptions of algorithms. 15:17:19 you don't describe the steps on haskell 15:17:27 indeed, you describe what it is. 15:18:11 basically what I am saying is that all languages are descriptive. You cannot have a language that does not describe something. 15:18:13 maybe not with dough, but with e.g. a milk shake it's not important if you first put the strawberries, the milk, or the sugar in the mixer 15:18:38 Unless you have a chocolate milkshake 15:19:07 which means that you don't need to be told the consequence of actions of putthing those things in the shaker 15:19:10 Taneb, heh 15:19:17 CakeProphet, yes, on a meta-level you're right, but you're again talking in terms of the meta-language, not the language itself 15:19:24 sure, C describes actions.. 15:19:33 but the language itself is actions. 15:19:47 or rather 15:19:53 a PROGRAM in C is actions 15:19:57 the language is a...... description of actions. 15:19:58 C is the description of those actions 15:20:02 yeah ok 15:20:09 that's good, we have converged there nicely 15:20:22 a haskell program is a declaration of objects 15:20:31 or items 15:20:38 The declarations are describtions 15:20:55 well, i wouldn't say so. 15:21:07 is a cookie dough recipe a description of a ready cookie? 15:21:14 the thing with declarative programming languages is that they still semantically perform computations 15:21:15 not so much 15:21:17 is it? 15:21:20 and I often prefer to think in this way when I am writing in them. 15:21:23 It is a description of how to make a cookie 15:21:30 yeah 15:21:36 but it's the cookie that interests us 15:21:37 Still a description 15:22:04 in C, you define cookie as "take dough igredients, put in dish one by one, stir, put on pan, bake in 180 degrees for 1 hour" 15:22:12 that's probably a very wrong recipe 15:22:30 It doesn't have any chocolate chips 15:22:47 but sometimes my approach is flawed. For example, using the approach of asking "how do I get the fibonacci sequence in Haskell", I would never think of the this definition 15:22:52 in haskell, you define cookie as "a heat-treated mixture of dough ingredients" 15:22:59 fibs = 0 : 1 : zipWith (+) fibs (tails fibs) 15:23:07 With chocolate chips 15:23:08 er *tail 15:23:33 CakeProphet, i'm not even debating the practicality of those families of languages 15:23:36 anyways, think about this 15:23:44 yeah I wasn't even debating with those statements. :P 15:23:52 in prescriptive and declarative languages, you *start out with something* 15:24:16 meaning that you have to have items, and from these items new items are generated 15:24:17 sure, can't make something from nothing. :P 15:24:24 or rather: new items are defined in relation from old items 15:24:26 well you sure can 15:24:57 it's sort of similar to a definition of a geometric complex 15:25:02 is that the right word? 15:25:11 let me quickly google 15:25:13 like a... building? 15:25:17 or do you mean like geometric series? 15:25:25 I think he means like a pentagon 15:25:38 to me "geometric complex" means a building. lol 15:25:51 geometric structure? geometric object? geometric construction? 15:26:00 The last one sounds right 15:26:04 those are all pretty synonymy 15:26:10 with complex. except object. 15:26:16 or better yet 15:26:20 let's talk about just sets 15:26:27 mathematics loves sets. 15:26:30 a convex set is simple to describe 15:26:30 sounds fun. 15:26:48 a convex set is the intersection of convex sets 15:27:04 a convex geometrical complex is even simpler to describe 15:27:12 it's an intersection of half-spaces 15:27:38 a half-space is a set where on one side of a surface it's full, and on the other side it's empty 15:27:38 don't you need to define certain sets as convex sets in order to actuall have any convex sets? 15:27:56 so you make a convex geometrical complex by taking a block of wood, and lopping off bits in straight cuts 15:28:09 nope, you don't need to 15:28:13 it was just an example 15:28:46 but the definition is recursive. I don't see how it could apply to anything if there's nothing that is innately convex. 15:28:58 exactly 15:29:01 " a convex set is the intersection of convex sets" <<< what :D 15:29:02 but it's declarative 15:29:22 right, but... it declares nothing. 15:29:39 that is true for any family of sets 15:30:02 NOT FOR CONCAVE SETS, SUCKER 15:30:09 is {1,2,3} a convex set? What are the convex sets it is an intersection of, and how are those sets convex? 15:30:28 CakeProphet, yeah, that was not a definition, it was just a picture i used 15:30:36 a visualization 15:30:44 look at the convex geometrical complex 15:30:50 oh so it's just a property of convex sets and not the definition. 15:30:53 it's defined as an intersection of half-spaces 15:31:25 i have defined half-spaces declaratively, and i have defined convex geometrical complexes declaratively 15:31:36 what was the point again? :P 15:31:40 well here's the thing 15:32:19 you can also define convex sets like this. it's a bit more complicated, but you define some starting sets, and then you can create all convex sets from them. 15:32:27 BUT 15:32:32 you can also define convex sets like this: 15:32:51 a convex set is a set which is convex 15:32:56 meaning, it has the property of convexity 15:33:02 lol 15:33:04 a test for the property of convexity looks like this: 15:33:10 a true statement is a statement that is true. 15:33:32 for any two points of the set, create a line segment between those two points. if the line segment is a subset of the set in question, then that set is convex. 15:33:48 this has to hold for all pairs of points. 15:33:57 the wording there isn't perfect :) 15:34:16 i understand that it looks banal right now 15:34:29 but once you start adding more and more adjectives you can e.g. define a torus, a sphere, and so on 15:34:44 my perfectionistic brain is formulating all kinds of nasty inconsistencies in your terribly non-rigorous definition. 15:34:50 (not really) 15:35:50 a ball is a set which is open and which has the property of neighbourhood, meaning that all points are within a neighbourhood to a special point called the center 15:36:18 " NOT FOR CONCAVE SETS, SUCKER" <<< a concave set is the intersection of concave sets, but i guess you meant convex sets are closed under intersection? so are the finite sets. 15:36:31 ice cream is delicious 15:36:39 however i am still starting with the definition of "set" 15:36:41 BUT! 15:36:56 in mathematics, you can lead everything back to the definition of a set 15:37:23 meaning that if you start out with any definition, it turns out it's just a bunch of sets glued together in special ways. 15:37:33 the "set" is the Ur-Element 15:37:45 it's what the whole world is made out of, in mathematics 15:38:11 in computer languages you have many non-equal Ur-Elements 15:38:11 yep, turns out stuff is just groups of stuff. 15:38:26 you have functions, integers, floats, etc 15:39:16 anyways, what i think i'm saying is that in a declarative language you define things with other things 15:39:16 typeglobs, don't forget those. 15:39:31 whereas in a descriptive language, you would define things without other things 15:39:48 i wonder if that's a good idea at all 15:39:55 the fiboncci sequence is...... 15:40:04 uh, what do I say now? 15:40:09 yeah, good question 15:40:33 let's look at it differently 15:40:48 let's talk about.. cars 15:42:24 in C you'd say to get a maserati GT you'd take a ferrari 430, you'd then change the body work, and then you'd furnish it with a nice interior 15:43:13 in haskell, you'd say a maserati gt is a ferrari 430 - bodywork - interior + new body work + new interior 15:43:27 actually in C a masterati GT is just a bunch of pointers. 15:43:38 and bytes. 15:44:00 in a descriptive language, you'd say a maserati gt is a car which is this and this long, it's this and this high, its dimensions are this and that, and its parts are made out of the following materials 15:44:25 basically, you have just defined a maserati GT without ever knowing that there's something called a ferrari 430 15:44:52 so to program descriptively is to program declaratively in a roundabout way. 15:44:53 of course, if your description is detailed enough, you will have defined a car which requires what we know as the ferrari 430 engine 15:44:59 well not really 15:45:12 because you can describe things imprecisely or more precisely 15:45:33 you could say "a ball is a set with the property of neighborhood" 15:45:48 and for most things, this will fit well enough 15:46:05 of course, for a real ball, d(B) = {} 15:46:14 whereas for our imprecise ball, d(B) = S 15:46:42 however, that's not really important if you're just using balls to, say, define what a 3-dimensional object is 15:47:09 i guess that's an improvement over declarative languages 15:47:56 a different example 15:48:06 persons 15:48:13 people :) 15:48:56 -!- FireyFly has joined. 15:49:07 you can say in C "to construct Joe, you take Chandler's sperm, and Monica's egg, you fertilize it, you grow the fetus in a womb, and then you let it mature for 30 years and you have Joe" 15:49:22 in Haskell you can say "Joe is the son of Chandler and Monica" 15:50:02 in a descriptive language you would say "Joe has medium-short dark hair, black eyes, of italian descent, is 30 years old, slightly overweight, and likes sandwiches" 15:51:49 > (`replicateM` "+-[]<>.,") >>= [0..] 15:52:23 in brainfuck, you'd say one of the strings that this Haskell program produces 15:52:31 I wasn't really sure how to work that in English so I did that instead. 15:52:41 +is Joe 15:53:57 i'm not sure how that is related. 15:54:06 i'm not saying it's unrelated, i just can't parse this. 15:57:47 -!- MDude has joined. 16:00:46 did i explain well what "descriptive" is? 16:02:17 Would it be wrong to improve other's BF Joust programs and submit them to EgoJoust as my own? 16:02:39 no it would be cool 16:02:49 -!- FireyFly has changed nick to FireFly. 16:03:02 Even if it was only an extremely minor improvement? 16:03:13 EVEN MORE SO. 16:03:14 lol 16:03:20 Oh, I'm feeling to guilty. 16:03:37 FireFly? I improved your BF Joust program "meh" 16:03:53 Heh 16:04:03 Do you want it? 16:04:13 Sure, why not 16:04:26 "->(+>->)*4([-]>)*21" 16:04:41 Your original stopped just short of the finish on the longest tape length 16:04:48 ah 16:11:11 You going to submit that, or can I? 16:12:09 well SOMEONE submit it already :\ 16:12:19 think about the children 16:12:46 !bfjoust fireflys_meh_improved ->(+>->)*4([-]>)*21 16:12:48 ​Score for Taneb_fireflys_meh_improved: 20.6 16:27:27 You could just.. you know, borrow it 16:27:29 I don't mind 16:27:50 and also rename it :P 16:36:29 How do I rename it? 16:36:36 And what should I rename it to? 16:42:37 -!- MigoMipo has joined. 16:42:39 -!- copumpkin has quit (Ping timeout: 276 seconds). 16:44:51 Hang on, switching computers 16:45:00 -!- copumpkin has joined. 16:45:34 -!- Taneb has quit (Remote host closed the connection). 16:50:56 -!- Taneb has joined. 17:03:20 I've adjusted my random BF program generator to only make ones with matching brackets 17:09:28 Well, apparently Python has a maximum recursion depth 17:09:30 Damn 17:10:17 Makes a ridiculously long error message 17:13:50 -!- calamari has joined. 17:19:19 While loops work almost as well 17:29:35 -!- augur has quit (Ping timeout: 240 seconds). 17:34:27 -!- calamari has quit (Quit: Leaving). 17:34:36 yeah python only does fail recursion 17:34:39 -!- augur has joined. 17:45:45 -!- Taneb has quit (Ping timeout: 252 seconds). 17:54:31 -!- zzo38 has joined. 17:59:03 -!- Taneb has joined. 18:00:23 -!- quintopia has quit (Ping timeout: 240 seconds). 18:03:30 -!- ais523 has joined. 18:04:49 -!- monqy has joined. 18:09:28 wow, that was an unexpected security update 18:09:34 arbitrary code execution in logrotate, of all things 18:09:36 Which one? 18:09:44 drivers/net/loopback.c is so strange... 217 lines... And absolutely no code related to handling packets at all. Just some statistics stuff and driver registering/deregistering code 18:09:45 wtf 18:09:53 zzo38: the Debian/Ubuntu package 18:09:54 ais523, what...? 18:09:57 ais523, how? 18:10:00 also vlc, but that's more plausible 18:10:15 Vorpal: giving it a malformed config filename on the command line 18:10:25 presumably it calculates its length wrong and does a buffer overflow, or something 18:10:37 ais523, so it requires root then basically on normal setups? 18:11:00 I'm not too worried then. No obvious way to use this for privilege escalation. 18:11:39 Vorpal: indeed, it seems not to be suid 18:11:40 so it's probably OK 18:11:45 There was a privilege escalation bug in logrotate earlier. 18:11:50 Though not in the default configuration. 18:12:02 fizzie: I assume it has some SUID configuration? 18:12:25 "A shell command injection flaw was found in the way logrotate handled the shred directive. A specially-crafted log file could cause logrotate to execute arbitrary commands with the privileges of the user running logrotate (root, by default). Note: The shred directive is not enabled by default. (CVE-2011-1154)" 18:12:31 -!- Taneb has quit (Ping timeout: 252 seconds). 18:12:34 Though you'd still need to be able to craft that logfile. 18:12:46 I don't know how specially it would need to be crafted. 18:12:59 I.e. would it be enough to just write a user-agent field in an apache log or something. 18:13:04 they never do say, for good reason 18:14:08 The summary may also be a bit misleading; from the CVE overview it looks like you'd need to put shell metacharacters in the log file name itself. 18:14:28 So just being able to insert stuff in a logfile wouldn't be enough. 18:14:37 is logrotate written in shellscript? or just uses the shell to do some of its commands? 18:15:07 "The shred_file function in logrotate.c in logrotate 3.7.9 and earlier might allow --" 18:15:14 So the latter. 18:16:09 my mind immediately went "bash has functions, and a .c extension doesn't necessarily mean anything" 18:16:12 but I admit you're probably right 18:16:35 The "shred" configuration directive causes it to use an external command for supposedly-secure log file deletion. 18:16:46 I guess it was passing the log file name to that without worrying about metacharacters. 18:17:15 And did it in a systemy fashion and not an execy one. 18:17:18 -!- BeholdMyGlory has quit (Remote host closed the connection). 18:17:33 Depends whether it goes through the shell parsing and whether the filename starts with - 18:17:56 ais523, hm.... echo -n '#!/bin/bash\n...' > foo.hs 18:18:09 err 18:18:11 echo -e 18:18:13 not -n 18:18:15 duh 18:19:10 -!- BeholdMyGlory has joined. 18:20:23 One thing you can do on shebang lines is to type -- after the name of the program, at least, is my idea. But modern kernel don't do suid with #! scripts anyways... but I still type -- when a shell script meant to be run on root account anyways 18:34:36 Vorpal: don't you need both? 18:34:43 echo has to quote its command line literally if the first arg isn't -n 18:34:54 so in POSIX mode, you have to do -n -e in order to get escaping with GNU echo 18:35:17 ais523, heh 18:35:22 ais523, I didn't know that 18:35:26 ais523, what about -ne? 18:35:33 I think they have to be separate 18:35:48 (POSIX leaves -n's behaviour impl-defined; GNU echo defines it as "suppress final newline and also accept the -e option") 18:36:05 ais523, implementation defined? Seriously? 18:36:14 Vorpal: there's a lot of impl-defined stuff in POSIX 18:36:17 ais523, so... what do other echos do with -n 18:36:28 Vorpal: some echo it literally 18:36:41 heh 18:36:57 Vorpal: That's the traditional UNIX behavior. 18:37:07 I've been discovering all sorts of interesting things about POSIX recently 18:37:13 such as mount(2) being nonstandard 18:37:23 it's Linux-specific; I certainly didn't expect that 18:37:23 pikhq_, so why did POSIX say that -n was implementation defined at all? Why not just don't have it? 18:37:35 Vorpal: because some echos do suppress final newline on -n 18:37:40 ais523, afaik mount(1) is non-standard too 18:37:51 Vorpal: Echo cannot accept arguments. 18:37:59 pikhq_, yes it can... -n :P 18:38:04 Vorpal: mount(1) isn't a syscall, so I didn't look at it 18:38:07 Vorpal: No. 18:38:18 Vorpal: POSIX forbids echo from accepting arguments. 18:38:20 pikhq_, according to ais523 and POSIX? 18:38:34 Vorpal: It also leaves "-n" implementation-defined. 18:38:38 right 18:38:47 Vorpal: But it's not an argument. 18:38:48 pikhq_, which leaves a way open for it to accept options :P 18:38:52 oh, so it doesn't take -n as an argument, it takes it as a string that might cause it to act differently 18:38:57 hehe 18:39:01 ais523: Precisely. 18:39:09 ais523, though at least freebsd has mount(1) I know. Probably a few other *nix too 18:39:26 Vorpal: mount(1) is available in pretty much every UNIX. 18:39:29 I imagine most *nix do, because the FHS is written in a way that expects mount(1) exists 18:39:34 so I'm pretty surprise it isn't standard 18:39:51 and I'd expect mount(2) to exist in a range of Unices too, just because mount(1) has to do the mounting somehow 18:40:05 pikhq_, hm. what is the difference between POSIX and Unix exactly? The SuS I guess? But I haven't seen that for ages 18:40:21 Vorpal: POSIX is a "portable operating system" specification. 18:40:36 pikhq_, where is Unix defined then, the extra bits like mount(1) and so on 18:40:37 Vorpal: UNIX is a class of operating systems which generally meet the above spec. 18:40:44 Loosely defined. 18:40:52 for instance, I think Cygwin aims to be POSIXy, not UNIXy 18:40:57 pikhq_, Single Unix Specification, remember seeing that somewhere... 18:41:04 but that was like years ago 18:41:06 btw, I went and wrote my own statically-linked version of true(1) 18:41:08 and straced it 18:41:11 2004 edition or something 18:41:14 The SUS is a strict superset of POSIX. 18:41:17 ais523, and? 18:41:21 any guesses as to which syscalls it uses? (it uses three of them) 18:41:30 pikhq_, I haven't seen any SUS for POSIX.1-2008 yet 18:41:38 err, four, I think there's a call to brk in there too 18:41:39 ais523, well exit is one 18:41:44 Vorpal: It exists. 18:41:46 yep, that's the obvious one 18:41:51 SUSv4. 18:42:01 it also uses mmap (presumably startup code getting memory) 18:42:03 pikhq_, isn't that for the 2001 version? 18:42:06 and uname, which is the WTFy one 18:42:08 ais523, hm. 18:42:15 yeah wtf 18:42:17 You could make "true" and "false" programs shell builtins or write them as programs using machine code, it would not be too difficult to do on each machine; you can also have a C version of the program in case using on computers that it hasn't been ported yet. 18:42:32 Vorpal: No, that's v3. 18:42:33 zzo38: true generally doesn't need to be massively optimised 18:42:39 although I'm a little unsure as to what it's doing calling uname 18:42:40 Also, mount is not SUS. 18:42:41 zzo38, it is a shell built-in in bash 18:42:50 $ type true 18:42:50 true is a shell builtin 18:42:51 and this is a version of true I wrote myself, it called no functions 18:42:55 same for false 18:42:58 -!- Taneb has joined. 18:42:58 Vorpal: $ type `which true` 18:43:06 ais523, yes, it is that as well 18:43:11 I know 18:43:14 Of course it doesn't *need* to be massively optimized, although it can be done so easily since you don't need all the C stuff and so on. 18:43:22 zzo38: You need to be able to exec true and false in POSIX. 18:43:23 $ type `which true` 18:43:23 /bin/true is /bin/true 18:43:24 Hello 18:43:27 happily, ls isn't segfaulting any more 18:43:27 (silly output) 18:43:44 I think I may actually have found a kernel bug; my statically-linked version of cat ended up with two stacks at one point, which overlapped 18:43:59 Vorpal: Also fun: there is precisely one file guaranteed to exist in POSIX. 18:44:02 but it's hard to tell, because what I was doing was insane 18:44:03 ais523, how? 18:44:04 Vorpal: /dev/null. 18:44:04 -!- copumpkin has quit (Ping timeout: 264 seconds). 18:44:07 I'll see if I can reproduce it standalone 18:44:07 hm 18:44:13 pikhq_, :D 18:44:23 Vorpal: it turns out that Linux doesn't like you mmaping to the stack guard page 18:44:30 ais523, I can imagine that 18:44:31 pikhq_: Yes you can just make a machine code file. Such optimization is not particularly important although it can be done very easily. 18:44:34 -!- copumpkin has joined. 18:44:35 ais523, why the fuck would you even do that 18:44:35 (the page before the stack that's unallocated so stack overflows can cause segfaults) 18:44:45 Vorpal: well, nothing was using it... 18:44:57 but it reacts to it by allowing the map and shrinking the stack one page 18:45:00 (You might even be able to store the program in the ELF header, and this can be done for some other programs too) 18:45:02 Damn 18:45:02 pikhq_, where is /dev/zero defined btw? I kind of relied on that in some shell scripts I think. Nothing to serious if the file is not there 18:45:10 Just wrote =+ 1 instead of += 1 18:45:13 the bug seems to happen if you do it repeatedly, after doing it twice I ended up with two stacks of different lengths, according to /proc/self/maps 18:45:28 Vorpal: well, nothing was using it... <-- were you out of other available pages to mmap? 18:45:33 Vorpal: no 18:45:38 Plus side is, I have ice cream 18:45:44 ais523, did you even *need* to specify a specific address to mmap it at? 18:45:45 but I'd written "mmap the last available page before the stack", without thinking of implications 18:45:48 and yes, I did 18:45:54 Vorpal: Traditional behavior. 18:46:01 ais523, why on earth? Hardware related? 18:46:03 although the exact value didn't matter, I needed to specify something 18:46:06 and no, not because of that 18:46:10 ais523, then what 18:46:18 pikhq_, ouch 18:46:20 this program is insane, I thought you'd realised that by now 18:46:32 I mean, how else can you make ls segfault? 18:46:34 ais523, how soon until you can tell us what on earth it does 18:46:42 Vorpal: when I've finished it) 18:46:42 It's also LSB. 18:46:51 s/\)// 18:46:54 Along with /dev/tty, and *nothing else*. 18:46:56 The reason they purchased ice cream is because ice cream is good to eat and anyways they don't sell cane. O no, their mother will get mad at them when they get home. 18:47:00 ais523, any idea when that is? next week? next month? next year? in 10 years? 18:47:14 about a week of actually working on it 18:47:19 and I probably won't work on it continuously 18:47:22 ais523, You are making interest sky rocket when you keep mentioning it like this :P 18:47:27 Vorpal: I know 18:47:40 btw, what API does X use to actually draw on screen? framebuffer? 18:47:46 ais523, I will be feel very let down if it isn't something spectacular! 18:47:55 ais523, I presume it depends on the driver. 18:48:01 hmm, that makes sense 18:48:07 annoying, but makes sense 18:48:11 I don't want to have to reimplement X too 18:48:13 ais523, for most drivers, part is done in kernel 18:48:25 ais523, not only for binary drivers 18:48:34 reimplementing init was easy, reimplementing mmap only took a day or so (because I hadn't realised that ASLR was turned on, and then it took me a while to figure out how to turn it off for just one process) 18:49:28 ais523, my guess for something like nvidia binary driver would be that it mmaps a range of shared pages with the kernel module... And what the kernel does is hard to know, some DMA thing probably 18:49:40 ais523: The fuck are you *doing*? 18:49:52 pikhq_: it's a secret for now 18:50:01 ais523, I would presume a similar setup for most other drivers 18:50:09 at the moment specifically, I'm making a list of all the syscalls in Linux and sorting them into categories 18:50:10 ais523, at least all that have hardware acceleration 18:50:34 ais523, somehow I can't imagine controlling a screen by PIO using syscalls for each written byte :P 18:50:35 Anyways, *most* Linux X drivers are actually going through the DRM layer. 18:50:36 Linux actually has undocumented syscalls, but from a grep of the kernel, they all appear to do nothing 18:50:42 Which is not even *slightly* X-specific. 18:51:00 ais523, undocumented ones such as? 18:51:03 what I'm trying to do with that is to confuse X into thinking it's talking to the kernel, when in fact it's talking to a usermode process 18:51:08 and to grab its output/input 18:51:14 Vorpal: let me check 18:51:29 ais523: Um, good luck in the general case. 18:51:37 Vorpal: _newselect 18:51:40 pikhq_: indeed 18:51:47 ais523, that uh... How would you grab it's output? That doesn't even make sense. Use a X server that targets vnc or such instead. Much saner 18:51:55 ais523: It's effectively a kernel-mode process for some drivers. 18:51:56 I seen some of those 18:51:57 I'm trying to work out whether it's easier or harder than reimplementing X 18:52:21 ais523, just reuse an X server that uses vnc as backend 18:52:23 that exists 18:52:30 There is also Wayland, although in my opinion neither X nor Wayland is designed perfectly. 18:52:35 hmm, that might be worth considering 18:52:39 Namely, anything where it needs to have the GPU's framebuffer mmaped. 18:52:59 ais523, I assume you don't care about hardware acceleration anyway... Because that will be impossible in your setup. 18:53:03 what about SDL? it appears to use framebuffer as a fallback (I actually ran Wesnoth on the control-alt-F1 console, although I had to be root), but I can't figure out what it's using as its first choice 18:53:10 Vorpal: I do care, I want to make sure it isn't being used 18:53:18 ais523: Depends on environment variables. 18:53:26 ais523, then the vnc variant should work :P 18:53:28 hmm, good to know 18:54:02 ais523, I believe there is an x11-framebuffer server too 18:54:12 forgot what it was called 18:54:21 the one thing I've pretty much admitted defeat on is UIDs, I don't think you can namespace those in Linux 18:54:44 Vorpal: well, if everything went through framebuffer, then it'd make life easier, as framebuffer is just the one character special device 18:54:47 to implement 18:54:48 pikhq_, do you know where the code for the loopback interface is in the kernel? It isn't drivers/net/loopback.c, at least not for the actual packet handling... 18:55:24 ais523, that is just one X11 backend though. You are not going to pull this off for the general case. 18:56:20 it doesn't need to be the general case wrt X backends 18:56:22 just wrt programs 18:56:25 Meh, a conforming C environment is permitted to make X just summon nasal demons, anyways. 18:56:37 most programs don't care about the backend, just the frontend 18:57:14 What I would think can be good is to have a SDL-like interface, where you have different windows and the window manager owns the root window and can intercept things from the child windows and do some other stuff. And can also have clipboard buffers such as PRIMARY, SECONDARY, CLIPBOARD. The "screen size" is actually the size of the window 18:57:22 ais523, well as long as you don't plan to get nvidia-settings, catalyst-control-center or other similar softwares running :P 18:57:34 Vorpal: heh, I think I'll give a miss on nvidia-settings 18:57:39 Vorpal: Nasal demons. 18:57:41 I don't think I'd expect that to work 18:57:43 Vorpal: :) 18:57:47 even ping(1) I'm putting off for later 18:57:57 pikhq_, right 18:58:17 ais523, hm shouldn't be TOO hard in 3.0 what with the new SOCK_ICMP thingy 18:58:48 yep, it's doable, it's just not a priority 18:58:55 ais523, http://kernelnewbies.org/LinuxChanges#line-69 18:58:58 the problem is simulating the other end of the connection 18:59:08 to get it to send the pong 18:59:09 ais523, what the... 18:59:38 ais523, you know what might be easier? Running two linux in qemu and set up a virtual network between them 18:59:45 linux instances* 18:59:48 It should do so that you can run Linux properly with various devices but not needing any proprietary drivers running on the CPU. 19:00:09 (And not even included in the system) 19:00:37 Vorpal: well, yes, that seems like the simplest method 19:00:46 ais523, I'm pretty certain you are doing some sort of layer-above-kernel to virtualise or emulate user space programs, making them not know what their environment is 19:00:58 I don't know why you are doing it this insane way you are doing though 19:01:08 so probably I have missed some important thing here 19:01:13 Vorpal: yes, that's a decent description for what I'm doing, although it doesn't explain why 19:01:19 as you've noted 19:01:51 Is there USB Plan 9 Protocol drivers for Windows and Linux? (and also FreeBSD and Mac OS X) 19:02:12 ais523, oh there are plenty of reasons, I just don't know which one. Could be as a security measure for example. Or for running older software. Or for a controlled testbed environment (the "simulating the other end of the connection" bit seems to point at this) 19:02:19 and there are plenty of other options 19:02:50 ais523, that "always pid 2" points towards a controlled reproducible testbed environment too 19:03:01 Are there any USB devices that use Plan 9 Protocol? 19:03:08 zzo38: I doubt it 19:03:13 .... what 19:03:15 Plan 9 isn't all that popular among hardware manufacturers 19:03:24 wouldn't USB devices use the USB protocol? 19:03:38 I mean, how the fuck would it even work otherwise 19:04:18 Vorpal: No, I mean using the Plan 9 Protocol on top of the USB protocol. 19:04:36 -!- Phantom_Hoover has joined. 19:04:39 zzo38, on top of which USB device type protocol? 19:04:50 I mean it defines things like mass storage, HID, and so on iirc 19:05:09 hm I guess there is some type reserved for "vendor specific" 19:05:12 I don't know, maybe it is necessary to add a new device type (or maybe not) 19:05:51 Or as an alternate data on top of an existing protocol depending on the device (if this is possible) 19:06:19 no idea 19:06:49 Because I think they should be designed any new kind of USB device, instead of using proprietary protocols you can use Plan 9 Protocol instead. 19:08:01 Does Plan 9 even have a driver for using Plan 9 Protocol on USB? 19:08:18 what /is/ the plan 9 protocol exactly? 19:08:56 Vorpal: It's Plan 9's remote filesystem protocol. 19:09:05 And, being Plan 9, therefore Plan 9's remote everything protocol. 19:09:15 pikhq_, so not suitable for general purpose USB really? 19:09:20 Sure it is! 19:09:25 pikhq_, what about interrupts? 19:09:29 Remember, everything is a file. 19:09:40 For reals. 19:10:00 pikhq_, yes I know. But what about interrupts, suspending the usb bus, and so on 19:10:29 Dunno. 19:14:20 * Phantom_Hoover notes that Dresden Codak remains on the tenth strip of an arc that began over a year ago. 19:14:30 Hmm. 19:14:39 I want to try OS/2 Warp now 19:16:40 * pikhq_ notes that Dresden Codak has the worst update schedule. 19:16:52 pikhq_, ah, I see your mistake. 19:17:01 You are assuming that there *is* an update schedule. 19:17:10 Phantom_Hoover: That is the worst update schedule. 19:17:38 pikhq_, can it be called an update schedule if there are no updates? 19:17:42 pikhq_, what about that webcomic that elliott talk about. That hardly ever updates? 19:17:52 I forgot what it was called? 19:17:52 Perry Bible? 19:17:57 s/?// 19:18:02 Phantom_Hoover, I think it had Torvalds in it 19:18:19 and RMS and so on 19:18:22 Oh, Everybody Loves Eric Raymond. 19:18:36 Phantom_Hoover, that hardly ever updates either 19:18:39 The one which, when it updates, will be the harbinger of the apocalypse. 19:18:49 right 19:19:11 my point was, that must be a worse update schedule 19:20:39 You are making the same mistake. 19:20:56 For there to be an update schedule, updates must, at some point, come out. 19:21:06 Phantom_Hoover, it is an update-schedule: int days_to_next_updates = random() 19:21:16 can't they be scheduled to come out once every ten years, or whatever? 19:21:18 You could just as well ask the update schedule of a banana. 19:21:21 Vorpal: what's RAND_MAX on your system? 2^32-1? 19:21:31 ais523, well random returns a long int on my system 19:21:35 hm 19:21:42 ais523, rand() != random() though 19:21:47 oh, right 19:21:49 different types on return value 19:21:55 ais523, indeed, but to infer this two updates ten years apart would have to have come and less than ten years would have had to have passed since the last. 19:22:36 Phantom_Hoover: what if it was stated rather than inferred? 19:23:05 ais523, then it would only be worth considering if it was not completely at odds with the evidence. 19:23:26 random() in POSIX is said to return in the [0, 2^31-1] range. 19:23:33 hm 19:23:51 Admittedly, as it stands, ELER is scheduled to update on 21st December 2012. 19:23:52 While rand() returns from 0 to RAND_MAX, and RAND_MAX >= 32767. 19:23:54 ooh, thanks for linking me that page about changes in 3.0 19:24:14 setns() looks... useful for what I'm doing 19:24:22 although the workaround with clone() flags is working well for me so far 19:24:25 ais523, lol 19:25:00 ais523, I presume you are using ptrace for this? To be able to catch system calls happening 19:25:07 indeed 19:25:19 I tried single-step but it was too slow 19:25:28 ais523, that still doesn't deal with stuff like me opening /dev/console and doing ioctls on it 19:25:36 I have a program that does that even 19:25:39 I'm going to have to, umm, reimplement all of /dev 19:25:50 except /dev/null and /dev/zero, those were easy 19:25:58 ais523, fun. ALSA is going to be very very latency sensitive :P 19:25:59 as the existing devices work for those 19:26:07 ais523: Add /dev/tty and you will have reimplemented everything a LSB application can use. 19:26:10 :) 19:26:15 pikhq_: LSB? 19:26:20 pikhq_, what, really!? 19:26:21 Linux Standard Base. 19:26:24 -!- oerjan has joined. 19:26:29 oerjan, hi 19:26:36 Vorpal: Yes, really. 19:26:38 I'm probably going to make a pty and connect stdout/in/err to it 19:26:43 I may as well place it at /dev/tty too 19:26:51 you can copy ptys just by copying device numbers, right? 19:26:52 what *is* /dev/null btw? 19:26:55 hi Vorpal 19:26:58 Vorpal: EOF 19:27:04 pikhq_, and that isn't in LSB? 19:27:04 Vorpal: it's a character special file, reads always return EOF, writes always succeed but do nothing 19:27:15 Vorpal: /dev/null, /dev/zero, and /dev/tty are in LSB. 19:27:17 ais523: Don't forget /dev/full. 19:27:18 and why on earth is /dev/full useful? 19:27:23 Vorpal: for testing programs 19:27:26 aha 19:27:32 /dev/bull 19:27:34 Vorpal: That is the entire contents of the LSB /dev hierarchy. 19:27:34 you can redirect stdout to /dev/full, and see if they behave gracefully or stupidly 19:27:54 $ cp /etc/passwd /dev/full 19:27:56 cp: writing `/dev/full': No space left on device 19:28:18 it's a great way of checking to see if people are checking the return value of fclose() 19:28:19 ais523, hm... there are some devices in my /dev that would be very hard to do in user space 19:28:35 Vorpal: well, it depends on if people are actually using them 19:28:39 pikhq_, what about /dev/urandom? 19:28:46 I'm starting off with an empty /dev, and implementing things in it as necessary 19:28:50 ais523, /dev/random and /dev/urandom will be easy too 19:28:55 oh no they won't :) 19:29:06 ais523, ... definitely testbed :P 19:29:32 I thought of putting /dev/zero at each of them, but I'm worried some programs will go into infinite loops if their randomness sources do that 19:29:36 ais523, /dev/snapshot, /dev/vga_arbiter /dev/rtc0, /dev/sda 19:29:48 Make /dev/random return this: 19:29:52 ais523, of course if you don't want to implement fake "running as root" it will be way easier 19:29:53 /dev/sda is easy, it's readable only by root 19:30:00 and I'm not faking running as root 19:30:03 > map (%256) [0..] 19:30:10 partly because root can trivially escape a chroot 19:30:12 Vorpal: Nope. 19:30:20 (mkdir x; chroot x; cd ..; chroot .) 19:30:26 ais523, then you make a lot of system calls return EACCESS or similar 19:30:28 lambdabottttt 19:30:31 ;a; 19:30:31 lambdabot is missing? :( 19:30:34 I think that mechanism of escaping chroots is in there deliberate 19:30:38 *deliberately 19:30:43 Vorpal: I'm not emulating every system call 19:30:46 just tinkering with their params a bit 19:30:49 and return values 19:30:58 ais523: Stallman didn't design the chroot syscall. 19:31:00 ais523, I see... 19:31:19 Lymee: you can use EgoBot, although it is a bit different, and has trouble with infinite list output (so use take to shorten it) 19:31:22 ais523, also /proc/self will be fun 19:31:42 ais523, especially the very weird symlinks found in there... 19:31:43 Vorpal: that's one of the few things I have workign correctly already 19:31:54 You know, NOMW could be made Turing-complete (or whatever the probabilistic equivalent is) using a crossover square, I think. 19:31:55 Lymee: oh also % won't be imported by default 19:31:56 in fact, I'm catting things in /proc/self in order to test my program 19:31:58 ais523, what? symlinks to removed files in /dev/fd wortk? 19:32:00 work* 19:32:11 Say that if a square is +, then a bobule can enter it, but it cannot leave by a 90-degree angle from the way it entered. 19:32:15 did you know that Linux allows you to mount multiple proc filesystems /that give different results/? 19:32:19 !haskell take 80 $ map (Ratio.%256) [0..] 19:32:24 ​[0%1,1%256,1%128,3%256,1%64,5%256,3%128,7%256,1%32,9%256,5%128,11%256,3%64,13%256,7%128,15%256,1%16,17%256,9%128,19%256,5%64,21%256,11%128,23%256,3%32,25%256,13%128,27%256,7%64,29%256,15%128,31%256,1%8,33%256,17%128,35%256,9%64,37%256,19%128,39%256,5%32,41%256,21%128,43%256,11%64,45%256,23%128,47%256,3%16,49%256,25%128,51%256,13%64,53%256,27%128,55%256,7%32,57%256,29%128,59%256,15%64,61%256,31%128,63%256,1%4,65%256,33%128,67%256,17%64,69%256,35%128,71%256,9%32 19:32:29 ais523, yes, all that fancy namespace crap 19:32:32 um 19:32:33 that's what I'm doing 19:32:34 ais523, my kernel is compiled without it 19:32:41 because to me, it is useless 19:32:44 well, you won't be able to run my program then 19:32:46 it's pretty useful to me 19:32:49 !haskell take 80 $ map ((flip mod) 256) [0..] 19:32:52 Boom, transistors. 19:32:52 ​[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79] 19:33:00 ais523, well if you tell me what your program is I might recompile the kernel :P 19:33:05 heh 19:33:07 Lymee: you can use (`mod` 256) 19:33:15 those options are on by default, right? 19:33:17 -!- elliott_ has joined. 19:33:19 ais523, btw, have you check if plash does what you want? 19:33:23 othewrise everyone will have to recompile their kernel 19:33:31 ais523: oh, have you revealed what it is? 19:33:36 no 19:33:39 ais523, uh no idea. I incrementally updated my .config over the years 19:33:45 Vorpal's been guessing, and come to similar conclusions to you 19:34:04 elliott_, no but he leaked enough and I'm pretty certain he is doing something like virtualisation or emulation of user space programs 19:34:15 that's the obvious part 19:34:23 "for what purpose" is the part I guessed at 19:34:24 elliott_, *probably* for some sort of controlled reproducible test bed system. 19:34:50 that is a good description, although I don't mind you figuring out that part, because it's reasonably obvious and not the whole thing 19:35:02 elliott_, since it seems he wants to emulate remote network (wrt ping) and /dev/urandom "wouldn't be easy" 19:35:07 no, I don't 19:35:10 Don't you hate it when you try to do something awesome, then realize it's completely mathematically impossible? 19:35:11 I turned off networking so I wouldn't have to do that 19:35:16 ais523, right 19:35:37 Sgeo: it doesn't happen too much 19:35:41 -!- sebbu2 has joined. 19:35:41 -!- sebbu2 has quit (Changing host). 19:35:41 -!- sebbu2 has joined. 19:36:10 Lymee: every ordinary identifier can be turned into an operator by putting `` around it, and every operator identifier can be turned into an ordinary one by putting () around it. (although you cannot iterate this) 19:36:33 -!- sebbu has quit (Ping timeout: 258 seconds). 19:37:17 although you need a ghc option to do it for types 19:38:28 oerjan, it is sad that you can't iterate it. That would allow stuff like `(* 2 +)` or such 19:38:32 (well not exactly that) 19:38:54 Vorpal: that's not quite iterating, although yes that might be useful 19:39:01 oerjan, indeed 19:39:09 That could be an extension, right? 19:39:13 yeah 19:39:21 oerjan, but iterating it is only really useful if you can build up expressions between the iterations 19:39:24 but afaik it hasn't been implemented 19:39:38 oerjan, I mean `(`(+)`)` is utterly useless 19:39:44 yeah 19:39:57 Agda seems to use _+_ rather than (+); is there any reason for the change? 19:40:09 _+_ looking more mathematical, perhaps? 19:40:17 (its syntax is otherwise mostly identical to Haskell's with a few extensions) 19:42:36 ais523: isn't that sort of part of its mixfix syntax, you can have as many _'s as you want 19:42:49 aha, that may be what it's about 19:42:51 I didn't know it did that 19:42:53 Can a Haskell code be prettyprinted? 19:42:57 and that's quite a nifty feature 19:43:00 * oerjan doesn't actually know agda 19:43:00 zzo38: I don't see why not 19:43:05 oerjan: neither do I 19:43:12 And what is _+_ and (+) means? 19:43:13 but it turns out I have an Agda fanatic as a coworker 19:43:19 and want to be able to at least vaguely understand what he's doing 19:43:39 zzo38: those are agda's and haskell's way of referring to the + operator as a value, respectively 19:43:59 (of function type) 19:44:07 oerjan: actually, in Agda there's no + operator by default, you have to implement it by hand 19:44:13 ah 19:44:18 http://www.impredicative.com/ur/tutorial/intro.html not that far down, but so far, I think I can wrap my brain around it 19:44:45 I spoke too soon, this syntax I need to slow down for 19:45:32 Awesome, compose is more understandable than id :/ 19:45:47 zzo38: there is a program called hs2tex or something like that which prettyprints haskell, i believe people sometimes use it for math papers. it replaces -> and stuff with proper math symbols. 19:45:51 Yes I do think being able to refer to operators as function value can be useful in some cases. 19:45:57 (Well, compose has more... elaboration in its syntax, which makes it more uunderstandable by context) 19:46:04 fun id [a] (x : a) : a = x 19:46:09 fun id [a] (x : a) : a = x 19:46:10 oops 19:46:15 fun compose [a] [b] [c] (f : b -> c) (g : a -> b) (x : a) : c = f (g x) 19:46:40 zzo38: also ghc has an option for allowing unicode for many things 19:46:41 oerjan: Does it just put every line without > at the start directly as TeX codes? 19:47:01 oerjan: actually, in Agda there's no + operator by default, you have to implement it by hand <-- not in the standard library!? 19:47:08 And lines with > prettyprinted Haskell codes converted to TeX? 19:47:11 Vorpal: you even have to implement integers by hand 19:47:16 zzo38: hm i would guess it uses the \begin{code} convention 19:47:22 ais523, what does the standard library have then 19:47:25 my coworker's master's project was about automatically detecting people trying to implement integers and optimising them into native integers 19:47:31 heh 19:47:43 ais523, why not make a standard library with these in? 19:48:14 possibly there is one; I'm not too clear on the details 19:48:50 Yes I do think being able to refer to operators as function value can be useful in some cases. <-- it is quite frequently used 19:48:51 Well I suppose it can be modified to use > if you prefer that way 19:49:20 !haskell zipWith (+) [1..10] [100, 200.. 1000] 19:49:23 ​[101,202,303,404,505,606,707,808,909,1010] 19:49:35 oerjan: Well, in Haskell perhaps it is very useful although in other programming language with function values it can be useful in a few cases to be able to make such thing. 19:51:35 fun id [a] (x : a) : a = x <-- i guess agda's type system requires that for flexible use. the a would be an implicit type parameter, i think? 19:51:49 Agda? 19:52:00 That's Ur that I pasted 19:52:03 oh. 19:52:04 For proper Knuth-style literate programming, you would also have index, table of contents, named chunks, and possibly a macro preprocessor if it is useful. (As well as commands that affect how the different kind of operators and so on are treated when making the printout) 19:52:37 Sgeo: i thought you were still talking about agda. although my guess for what the ur means still stands. 19:52:58 I was never talking about Agda. Other people were talking about Agda. 19:53:12 And... I _think_ that guess is correct 19:53:21 Are there symbols or combinations of symbols not used in Haskell? I read the documentation. Is `` (with nothing in between) invalid, for example? Others? 19:53:25 Sgeo: which is why i was confused, you gave a link and i frequently don't bother to visit links 19:53:31 "Then there's parametric polymorphism. Unlike in ML and Haskell, polymorphic functions in Ur/Web often require full type annotations. That is because more advanced features (which we'll get to in the next chapter) make Ur type inference undecidable." 19:53:36 so i assumed you were linking to an agda tutorial 19:54:12 Sgeo: oh it's that dependent web language that was posted on reddit? 19:54:43 with a for hire ad, iirc 19:54:44 I didn't know it was posted on Reddit, but "dependent web language" sounds right. Well, for Ur/Web. Ur itself is not necessarily web related 19:54:58 *hiring 19:55:16 oh so there's a plain ur too... 19:55:28 * oerjan may not have bothered to visit that link either ;D 19:55:29 But what else I want to have is Literate LLVM, maybe I will invent that some day (I can call it LWEB maybe) 19:55:40 (with file extension .llw) 19:55:57 I dislike LLVM, it makes all sorts of assumptions that are true in practice but I don't like 19:56:30 is C-- dead? 19:56:31 There are a few things I also dislike about LLVM, although I have made suggestions to correct these things. 19:56:45 02:59:42: Yet Another Haskell Tutorial by some guy Hal Daume 19:56:45 oh dear 19:56:57 monqy: it's only ever been alive in GHC, I think 19:56:58 One thing I like to have would be constraint analysis. 19:57:10 about what is that itidus20 quote 19:57:18 monqy: what he's reading 19:57:19 (I even have ideas about how constraint analysis would work.) 19:57:22 oh wait this is an ancient log 19:57:23 well 19:57:25 ancient =a day 19:57:36 zzo38: well if you use latex you can use its table of contents feature, i assume 19:57:49 zzo38: i believe `` is a syntax error, yes. 19:58:04 zzo38: well if you use latex you can use its table of contents feature, i assume 19:58:09 oerjan: don't talk to zzo about latex :O 19:58:18 O KAY 19:58:27 Oracle have bought ksplice? 19:58:30 I didn't see that one coming 19:58:36 although in retrospect, it's not a ridiculous thing for them to do 19:58:36 but that's what most people using hs2tex would be doing 19:59:12 That is, you can use things that would be syntax error in Haskell to get out of Haskell code mode, if making a Knuth-style literate programming system for Haskell... 19:59:17 Hmm 19:59:38 I don't know if I understand enough ML to grasp this module system stuff :/ 19:59:52 zzo38: i believe (almost?) every printable ascii character is either alphanumeric, a legal operator character, or used in the syntax. 19:59:55 My understanding of everything prior was fueled by my understanding of Haskell 19:59:57 (in haskell) 19:59:58 Oracle have bought ksplice? 19:59:59 ouch 20:00:01 just ouch 20:00:45 oerjan: Yes, but some combinations can be syntax errors, which is why you can use those combinations for such things. 20:01:05 Is `` the only one such or is other combinations possible that can do that? 20:01:07 zzo38: and mostly everything which does not combine into an operator or an identifier (which might be a keyword in either case) will split 20:01:22 most characters are legal inside strings 20:01:30 I suppose """ may be a combination that isn't legal in any context at all but comments 20:01:38 how do Haskell comments work again? 20:01:57 (or can you write a "string1""string2" in Haskell?) 20:02:03 > (++) "a""b" 20:02:08 zzo38: '' is also illegal at the start of a token i think, since ' needs to be escaped inside character classes. and also anything with ' ...more than one character representation... ' 20:02:15 @eval (++) "a""b" 20:02:19 *character literals 20:02:48 inside strings, you can get errors due to nonexisting escapes 20:02:56 !haskell "\fnord" 20:02:58 ​"\fnord" 20:03:01 oops 20:03:02 oerjan, could do that as an extension. Overloaded Character literals or something 20:03:09 oh wait \f _is_ an escape 20:03:20 !haskell "\possibly not fnord" 20:03:33 oerjan, it probably drops errors 20:03:34 that gave an error 20:03:39 it does for me anyway 20:03:42 Vorpal: no, it sends them in DCC 20:03:49 oerjan, ah.. DCC is broken for me 20:03:55 Ok, so if I understand this correctly, kinds are ... bigger in Ur than in Haskell, in that they encompass more than just types 20:04:05 Kinds are the "types" of more than types 20:05:15 Oh, derp, I misunderstood what it meant by "type families", so now that bit's clearer. What I said just before is still true though 20:05:27 Sgeo: i don't know. 20:06:30 zzo38: mind you '' is still legal inside other identifiers, because of haskell's decision to support the common mathematical x', x'' naming 20:06:55 Ok, I think I'm getting this 20:07:28 I read the document it seems the "\&" is good, some C document says only 2 hex digits after \x but I have had it allow any number of "\x000000000000000" is still a single character, for example. So, if it had "\&" like Haskell then you can avoid that. Maybe I can make a next version of Enhanced CWEB to support such things and convert it to work with a C compiler. 20:08:08 zzo38: ,+ is another sequence which i don't think is legal, because most operators cannot begin an unparenthesized expression 20:08:37 (, being a delimiter and so not part of an operator) 20:09:12 oerjan, it would be legal in a haskell comment 20:09:46 Yes, and in strings, but there would be a parser to check for these things which needs to do so anyways for prettyprinting and indexing. 20:10:35 I dislike LLVM, it makes all sorts of assumptions that are true in practice but I don't like <-- well if you're big enough you can probably get a patch in to add options, like the ghc people did 20:10:48 oerjan: it's more its fundamental design 20:10:54 ais523, what sort of things does it assume? 20:11:07 Maybe some things can be done using LLVM metadata? 20:11:20 12:49:55: I think Perl was the earliest language in the C family to have map and filter operators. 20:11:20 FSVO C family 20:11:24 Vorpal: that all its commands can be implemented via native-code commands that have the same semantics as one of its operators 20:11:33 Perl is C family? 20:11:35 That is, have a metadata to tell it what thing not to assume, maybe 20:11:37 according to CakeProphet 20:11:39 Perl's Awk family. 20:11:49 If it can be said to have a family at all. 20:12:12 ais523, uh they probably can. Using something like libgcc in worst case 20:12:20 oh dear <-- you think YAHT is too obsolete? i already advised him that he should get the haskell platform instead of hugs if he was serious (he said, hypocritically >:) ) 20:12:25 Vorpal: it's a false assumption for BF 20:12:47 ais523, Ah, what in specific can you not implement by emulation? 20:12:52 oerjan: Yeah, I told him about LYAH later I think 20:13:01 gcc tries not to make that assumption; it doesn't actually /work/, but that's due to bugs not design issues 20:13:03 oerjan: and I saw that at the time, that's what made me realise it was an old conversation 20:13:05 I mean... Haskell's more C family than Perl. 20:13:12 Because Haskell allows for direct memory access. 20:13:14 pikhq_: Well, er, no. 20:13:17 Well. 20:13:20 Vorpal: well, BF requires a temporary to do the equivalent of MOV from x86 20:13:27 Technically, C doesn't. Just common implementations do. 20:13:33 gcc has actually taken that possibility into account; LLVM hasn't 20:13:47 elliott_: I realise that Haskell isn't very C-like. Neither is Perl. 20:14:04 -!- CakeProphet has quit (Ping timeout: 264 seconds). 20:14:08 bye 20:14:08 Perl also allows for direct memory access, I think, somehow 20:14:13 ais523, okay, but surely that could be done in the code gen by having every other cell be a temporary? 20:14:13 probably a really obscure method involving libraries 20:14:23 Oh, right, it *is* Perl. 20:14:26 It has everything. 20:14:28 Vorpal: gcc-bf reserves a temporary for that 20:14:48 oh no 20:14:48 ais523, right 20:14:54 but it's ugly having to do most of the code generation in ld 20:14:55 ais523, so it can be done then in bf 20:15:02 (or can you write a "string1""string2" in Haskell?) <-- yes 20:15:04 I'd rather have the compiler do it 20:15:04 I mean it isn't fundamentally impossible 20:15:23 gcc-bf I mostly gave up on when it came to implementing rightshifts and multiplication 20:15:26 > "a""b" 20:15:28 too much effort 20:15:30 ais523, ah 20:15:40 elliott_: I've been getting no reply from lambdabot trying that 20:15:48 looking at the users lists, I suspect it's because lambdabot isn't here 20:15:51 :D 20:15:53 rather than because it barfs on it, though 20:16:06 heh 20:16:07 !haskell "a""b" 20:16:07 not on Freenode, in fact 20:16:12 Vorpal: won't work 20:16:19 !haskell print "oh""no" 20:16:22 hm 20:16:23 !haskell putStr ((++) "a""b") 20:16:25 ab 20:16:31 I win, I think 20:16:34 yes 20:16:34 rest in peace lambdabot???? 20:16:41 monqy: it'll probably be back later 20:16:48 nap in peace 20:16:50 rest in pace;sdgfh 20:16:57 `addquote rest in peace lambdabot???? monqy: it'll probably be back later nap in peace 20:17:00 ais523, hm I wonder why pthread_cancel is defined as a weak symbol in my libgcc 20:17:01 528) rest in peace lambdabot???? monqy: it'll probably be back later nap in peace 20:17:14 along with a few more pthread functions 20:17:23 Vorpal: I'm not sure, I don't think I'm going to get pthreads workign 20:17:24 *working 20:17:32 14:22:39: it's because python is descriptive rather than declarative 20:17:32 14:22:51: or rather prescriptive 20:17:32 14:23:40: well, i think "imperative" does not focus on the important aspect of the difference between so called "imperative" languages and so called "functional" langauges 20:17:32 this log is unbearably bad 20:17:36 at least, not if the threads use futexes, which they probably will 20:17:45 as they do too much in userspace 20:17:50 elliott_: *wince* 20:17:52 ais523, maybe some other libgcc function depends on pthread calls iff pthread is loaded? 20:17:55 elliott_: wait what? 20:18:02 I can't figure out if that's wrong or meaningless 20:18:04 ais523, and just stubs it out if it doesn't need to care about threads? 20:18:09 or correct but pointless, like a tautology 20:18:13 Vorpal: perhaps 20:18:15 maybe errno 20:18:20 ais523: that applies to most things cheater_ says 20:18:30 14:23:59: i mean you can perfectly well say that python is an imperative, functional language 20:18:36 cool story, tell me more 20:18:44 14:24:25: functional means a function is a first class object 20:18:44 i see 20:19:02 dying 20:19:05 14:26:07: "functional" is a very flimsy description of haskell, erlang, ocaml and lisp 20:19:05 common lisp is not a functional language. nor is scheme. 20:19:11 the others are. well, maybe not erlang. 20:19:13 ais523, possibly some functions like __register_frame_info_table_bases or __emutls_register_common that are in there 20:19:23 __enable_execute_stack? What? Come on 20:19:35 some unwind functions there too 20:19:37 I have a lot of ideas of how constraint analysis could work in LLVM. There can be forward constraints, and in some cases (such as reaching "unreachable") backward constraints, and then constranits based on trap values (such as "add nuw"), etc 20:19:45 so, any idea what _newselect(2) is for? 20:19:51 it isn't documented, and it isn't implemented either AFAICT 20:20:06 not even as a redirect to _ni_syscall like the other unimplemented syscalls 20:20:16 I suppose I could try calling it to see what error I got, but that feels messy 20:20:19 ais523, where is it even mentioned it? 20:20:24 -!- KingOfKarlsruhe has joined. 20:20:32 Vorpal: in the kernel headers that specify syscall numbers 20:20:33 s/it\?/it/ 20:20:37 heh 20:20:48 and the number doesn't seem to clash with any others 20:20:50 ais523, is it a low or high number? 20:20:54 mediumish 20:20:56 hm 20:21:04 could be some abandoned thing 20:21:11 the leading underscore confuses me too 20:21:13 What else I would like in LLVM is if you can tell it to store constant values in code space if possible (in the alignment padding, or in case it exactly matches an instruction), and store variables in the immediate operands to instructions if possible, etc 20:21:15 syscall names normally don't start with one of those 20:21:20 abandoned thing is my guess too 20:22:14 ais523, greping kernel sources reveals #define __NR__newselect in lots of arch/*/include/asm/unistd.h plus this line: 20:22:17 ./scripts/checksyscalls.sh:#define __IGNORE__newselect 20:22:32 Vorpal: indeed, I did that too 20:22:33 ./arch/blackfin/include/asm/unistd.h:/* 142 __NR__newselect obsolete */ 20:22:33 hm 20:22:37 well 20:22:45 asm/unistd.h is the file responsible for syscall numbers (in the various arches) 20:22:47 -!- nooga has joined. 20:22:55 ais523, I find this quite amusing: ./arch/mips/include/asm/unistd.h:#define __NR__newselect(__NR_Linux + 142) 20:22:58 and checksyscalls.sh checks to see that every syscall is implemented on every arch, minus the ones defined as ignored 20:22:59 __NR_Linux? 20:23:14 Vorpal: maybe it's trying to avoid a number clash with some other OS 20:23:24 #define __NR_Linux 4000 20:23:31 * Linux o32 style syscalls are in the range from 4000 to 4999. 20:23:50 heh 20:23:55 there is a huge #ifdef here 20:24:00 * Linux 64-bit syscalls are in the range from 5000 to 5999. 20:24:00 */ 20:24:00 #define __NR_Linux 5000 20:24:02 further down 20:24:11 and then the entire define list AGAIN 20:24:22 why the hell do they repeat the lines like: 20:24:24 #define __NR_read (__NR_Linux + 0) 20:24:33 oh god 20:24:37 it is different for different modes 20:24:39 #define __NR_syscall (__NR_Linux + 0) 20:24:41 for another one 20:24:53 x86 and x64 have different syscall numbers 20:25:03 and one syscall (mmap2) actually takes different parameters on the two architectures 20:25:07 Do you know anything about constraint analysis? 20:25:07 ais523, why on earth? 20:25:13 * Linux N32 syscalls are in the range from 6000 to 6999. 20:25:13 */ 20:25:13 #define __NR_Linux 6000 20:25:21 Vorpal: well, mmap2 is designed for 32-bit systems to open files larger than 32 bits 20:25:26 heh 20:25:32 and ditto for 64 bits, but they changed the scaling factor 20:25:32 ais523, so it isn't needed on 64-bit then 20:25:39 ais523, err what 20:25:49 mmap2 is like mmap but you specify the offset in units of 4K 20:25:54 (4KiB, that is) 20:26:01 ais523, you mean larger than 64 bits on x86-64? 20:26:09 except on 64-bit, you specify the offsets in units of the page size 20:26:10 Vorpal: I think so 20:26:15 which might not be 4KiB exactly 20:26:29 ais523, err x86/x86-64 page size *is* 4KiB 20:26:44 Vorpal: that makes the man page look a bit weird 20:26:58 ais523, unless you mean huge-pages, but they are the exception, not the nrom 20:26:58 perhaps they're allowing for a potential future change in page size, but think it'll only happen on 64-bit platforms not 32-bit platforms 20:26:59 norm* 20:27:12 like, allows you to create specially crafted 1 MB or larger pages 20:27:21 it's probably about that, then 20:27:21 common lisp is not a functional language. nor is scheme. <-- i think that's a rather big shift from the historical use of the phrase. like refusing to call neanderthals humans. 20:27:40 ais523, no it can't be... because that is decided on by a per-page basis 20:27:50 ais523, so that doesn't make any sense here 20:28:18 oerjan: OK, Scheme probably counts 20:28:23 oerjan: But Common Lisp is unquestionably non-functional 20:28:25 Ask any Lisper 20:28:30 it's hard to define functional languages well 20:28:46 oerjan: Higher-order functions are rare in Common Lisp outside of things like map 20:28:55 And those are usually done with LOOP or ITERATE, even 20:29:01 my working definition of non-imperative is languages in which assignment to mutable variables is nonidiomatic 20:29:15 in common Lisp, setq is fairly common, isn't it? 20:29:17 $ getconf PAGESIZE 20:29:21 4096 20:29:27 Vorpal: it's 4096 on my system too 20:29:36 ais523: setf is common, steq isn't 20:29:38 setq 20:29:41 ais523, any x86 system will give that. Same for x86-64 20:29:46 what does setf do? 20:29:53 14:41:56: i would say, map paintRed fence = "a fence which is red" 20:29:53 14:42:09: you would say map paintRed fence = "a fence which has been painted red" 20:29:59 this is the stupidest thing ever omg shut up you idiot 20:30:17 ais523: (let ((x (cons 9 0))) (setf (car x) 0) x) ==> (0 . 0) 20:30:19 wow what 20:30:21 i 20:30:23 elliott_: I'd interpret "map paintRed fence" as "what results when every component of a fence is painted red" 20:30:24 basically it's setq that can set forms with defined setters, too 20:30:39 ah, OK, a generalised version 20:30:40 so it doubles as a raw variable setter and a structure mutator 20:30:49 yep, it's generally referred to as generalised setq 20:30:52 the f is for Form 20:30:54 setq is set quote 20:30:58 because it used to be (set 'var x) 20:31:05 back when lisps were dynamically scoped and also crap 20:31:13 like in C++, setq corresponds to memcpy(&a, &b, sizeof b) and setf corresponds to a=b? 20:31:53 ais523: Sure, although it's more like a=b where a must be a variable name 20:31:58 That memcpy can also write to structure members 20:32:30 $ getconf -a | grep PAGE 20:32:30 PAGESIZE 4096 20:32:30 PAGE_SIZE 4096 20:32:31 what? 20:33:11 PAGES_I_ZE 20:33:29 oerjan, alas, they forgot that one 20:34:22 actually, isn't it possible to overload & in C++? 20:34:25 oesrijgreoijg 20:34:43 elliott_: memcpy(&a + offsetof(foo, b), &b + offsetof(foo, b), sizeof(b.foo)); ? 20:34:46 ais523: Yes. 20:34:49 ais523: Also *. 20:34:54 what about sizeof? 20:34:55 ais523: And cast to void*. 20:34:59 overloading unary * makes more sense 20:35:03 ais523, not -> though afaik 20:35:06 or maybe 20:35:07 hm 20:35:25 -> is overloadable, IIRC. 20:35:27 isn't it either -> or . you can't overload? 20:35:33 "[...] demos that intentionally use incorrect style because it's easier to present in a short demo [...] 20:35:33 That one" 20:35:33 But the "." is not, and neither is the ternary operator. 20:35:35 Or sizeof. 20:35:40 http://www.reddit.com/r/programming/comments/hidsa/opa_one_language_for_all_the_stack_forget/ 20:35:57 operator-> is overloadable. 20:35:58 And the :: namespace thing, and the ".*" pointer-to-member mess. 20:36:04 Also ->* 20:36:10 what does .* actually do? 20:36:38 Sgeo: OPA is similar to Ur/Web 20:36:45 Oh, it's possible to overload *every cast* in C++. 20:36:47 but with more marketing, and unfortunately less typing 20:36:48 ais523: It's used when invoking a pointer-to-member-function. 20:36:52 "also, not to be an ass, but generally speaking and talking about UR (that you mentioned), i don't really trust a web framework with such a raw site." lol 20:36:59 i wish webtards would stop finding Ur 20:37:20 is ur any good should i learn it 20:37:32 elliott_, is that a Opa person who said that or a random person? 20:37:46 is opa any good should i learn it 20:37:58 Sgeo: a random person 20:38:03 monqy: ur is good 20:38:10 oh lol, Ur's site has now been updated 20:38:11 pikhq_, you can't overload casts *between* built in types though 20:38:14 not even with friend 20:38:18 i'll learn ur 20:38:39 ais523: "Foo foo; void (Foo::*)(int) bar = &Foo::baz; foo.*bar(42);" is basically "Foo foo; foo.baz(42);" except messier. 20:39:03 C++ sucks so badly 20:39:04 ah, I see 20:39:16 nooga: Shhh, C++ is good because of C++ sudoku 20:39:22 what 20:39:57 nooga: it's where you try to accomplish some usually-functional-programming-related task in C++0x 20:40:07 It's great, it's the best game, I play it regularly 20:40:20 for instance: maybe in C++ seems easy, but you _cannot_ do it with just a pointer to T 20:40:25 because that forbids T from being a reference type 20:40:37 you have to end up taking advantage of everything being convertible to a bunch of chars and back 20:42:09 ingenious 20:44:33 14:59:05: trying to assign cosmical properties to mathematical objects is called physics 20:44:38 stop 20:44:39 talking 20:44:39 in the past 20:45:48 isnt that backwards wow is cheater_ serious in the past 20:45:49 elliott_, only if you promise never to get born 20:45:59 cheater_ are you serious in the past 20:46:05 monqy, totally srs 20:46:12 :o 20:46:16 cheater_: fuck off 20:46:33 elliott_, are you trying to annoy me or arouse me? 20:46:46 I'm wondering whether to logread to see if elliott_'s cheater quotes are real or fake quotes designed to make him look stupid 20:47:03 cheater_: are you trying to be a boring, egotistic shitheadeaded idiot or does it come without effort 20:47:05 ais523, no they're real quotes that are designed to make me look stupid 20:47:06 ais523: real 20:47:19 "shitheadeaded" im good with words 20:47:34 elliott_, it comes naturally 20:47:35 you're missing a d at the end 20:47:48 shitheadeadedison 20:48:06 jesus christ how long does this log go on for 20:48:20 YOUR 20:48:21 15:42:24: in C you'd say to get a maserati GT you'd take a ferrari 430, you'd then change the body work, and then you'd furnish it with a nice interior 20:48:21 15:43:13: in haskell, you'd say a maserati gt is a ferrari 430 - bodywork - interior + new body work + new interior 20:48:21 this is literally the worst car analogy i've ever read 20:48:21 WHOLE 20:48:22 LIFE. 20:48:32 that's how long this log goes on for. 20:48:42 elliott_: that isn't quite as stupid as some of the tohers 20:48:46 *others 20:48:50 ais523: the others aren't car analogies 20:48:51 although admittedly that isn't difficult 20:49:10 elliott_, i'm glad, i really like car analogies, it's great to reach something outstanding 20:49:11 I don't consider car analogies inherently stupid, incidentally 20:49:39 ais523, monads are like cars 20:49:44 what isnt stupid about car analogies 20:49:57 most car analogies don't compare things to cars in general 20:50:03 but specific parts of cars or models of car 20:50:07 monqy, elliott_ is smart about everything.. so i'd say elliott 20:50:25 elliott_ is like a car analogy? 20:50:40 monqy, i think he's like a bad car analogy 20:51:17 monqy, i'd say elliott :: humans == maserati gt analogy :: car analogies 20:52:53 monqy: is he really trying to deconvert a cultist of zepto 20:53:43 elliott_: oh, disaster: sg(1) is an actual command, so we can't call scapegoat that 20:53:55 it's the group equivalent of sg(1) 20:54:00 *of su(1) 20:54:06 how have I never tried to run sg before? 20:54:19 ais523: we could lobby for sg to be renamed :-P 20:54:22 because it isn't very useful except on a very large system 20:54:23 i take it car anaology analogies are unzepto 20:54:26 Or just assume the truth, that nobody uses it 20:54:31 ais523: no but I mean, when talking about scapegoat 20:54:38 and is redundant to newgrp anyway 20:54:42 elliott_: ah, I see 20:54:57 wait, why do sg and newgrp both exist? 20:55:07 Huh. 20:55:11 ais523: see, we can totally call it sg, it'll be our campaign against redundancy 20:55:25 ais523: oh, sg lets you execute a command, but newgrp doesn't 20:55:26 I know that, mathematically, something can't work, but I can't figure out what's wrong with my idea of how to do it 20:55:27 so sg is redundant 20:55:31 sg appears to have a better name and slightly more options 20:55:31 because the shell does that job with newgrp 20:55:37 I can't see the flaw that I know must be there 20:55:39 ais523: yes but we deserve that name more >:| 20:55:42 well, back to reading about 12DL8 20:55:44 Sgeo: sigh what is it 20:55:55 who do I complain to about design flaws in UNIX? 20:56:05 elliott_, actually, I'm currently rethinking it in terms of something simpler 20:56:22 ais523: I wish I knew 20:56:29 wow, sg has an amateurish manpage 20:56:33 ais523: I'd have a nice cup of tea and a sit down with them 20:56:34 it's like it's trying to justify its existence 20:56:36 And talk for about three days 20:56:48 User Commands 02/14/2011 SG(1) 20:56:49 I wonder which is specified by POSIX? 20:57:00 also contains typos, like "doesnt" 20:58:12 Derp, that was obvious 20:59:50 (I thought maybe you could enumerate through all uncountably infinite states of an infinite 2d binary grid by starting at one point, on and off, then expanding it, etc. I finally realized that those are counting through finite pieces of the grid, not the actual infinite grid 20:59:57 * Sgeo can be slow sometimes 21:00:13 X_X 21:00:52 And yes, I had to rephrase that in terms of 1d before I got it :( 21:01:31 what were you trying to count? the polyset of R**2? 21:01:34 *powerset 21:01:39 I don't know if polyset is even a real word 21:02:09 In fairness, the motivating thoughtss were in terms of Game of Life, where even on an infinite grid, any particular finite subgrid, at any particular finite time, could only have been influenced by a finite area around it 21:03:22 ais523: you can't do struct foo = ((struct foo){...}) in C99, right? 21:03:26 it has to be struct foo = {...} 21:03:28 there are a countable number of black/white colored 2D grids that have only finitely many black squares, I think 21:03:35 elliott_: I think you can, actually 21:03:42 as you can put any expression you like as an initializer 21:03:57 it's the difference between putting a struct initializer there and a struct constant there, but I think they're both legal 21:04:12 ais523: ISTR it not working, but -- oh, I rememberw hat was wrong 21:04:15 struct foo = {} is almost certainly more efficient, though 21:04:17 you can do 21:04:18 or equal 21:04:22 struct foo = {a,b,{c,d}} 21:04:24 but you can't do 21:04:28 struct foo = {a,b,(struct bar){c,d}) 21:04:30 struct foo = {a,b,(struct bar){c,d}} 21:04:31 -!- quintopia has joined. 21:04:32 -!- quintopia has quit (Changing host). 21:04:32 -!- quintopia has joined. 21:04:32 for whatever reason 21:04:39 because semantically, ((struct foo){...}) should make a new struct then copy 21:04:47 and yes, the reason there is that it doesn't know what type the outside struct should be 21:05:20 err, howso? 21:05:37 because C isn't like Perl, context comes from the inside not the outside 21:05:47 so it sees type var = expression, not type var = initializer 21:05:51 and then doesn't know what type the expression is 21:05:56 from the expression itself 21:07:48 Anyways, it should be perfectly possible to make a viewer that lets you view finite pieces of a infinite GoL soup (given unbounded disk space) 21:07:51 18:40:05: pikhq_, hm. what is the difference between POSIX and Unix exactly? The SuS I guess? But I haven't seen that for ages 21:07:54 SuS requires XSI 21:07:56 POSIX doesn't 21:08:00 I think 21:08:09 elliott_, that's all!? 21:08:10 Maybe not efficiently, but that's not the same as impossible 21:08:18 what's XSI? 21:08:20 elliott_, XSI isn't really that big 21:08:22 a binary standard? 21:08:39 ais523: No, just a handful of extra things. 21:08:40 ais523, last I checked strdup was XSI but not POSIX 21:08:43 for example 21:08:44 ah, aha 21:08:53 pretty much everything does strdup even if it isn't standard, though 21:08:57 I've been known to actually use it 21:09:11 I'm pretty sure even Win32 C environments have it. 21:09:12 `addquote pretty much everything does strdup even if it isn't standard, though I've been known to actually use it 21:09:13 -!- FireFly has quit (Quit: swatted to death). 21:09:13 529) pretty much everything does strdup even if it isn't standard, though I've been known to actually use it 21:09:25 I can't remember if I've ever used alloca 21:09:57 Vorpal: follow the standard 21:09:59 Oh, in recent POSIX it's actually base, not XSI. 21:10:04 also, how was that funny 21:10:06 strdup is still useful function, but they don't have memdup. 21:10:08 ah 21:10:39 zzo38: have you ever written a program in which memdup would be useful? 21:10:54 I find even memcpy, memset, etc, I don't use very often (although I use them occasionally) 21:10:54 Suppose you want to look at a 5x5 piece at generation 20 21:10:56 ais523: Actually, memdup could be useful with a somewhat smart libc. 21:11:05 ais523: I do not remember. 21:11:05 ais523: Namely, one that manages to get the kernel to COW it. 21:11:07 pikhq_: what for? 21:11:10 ah, I see 21:11:23 Then, just randomly generate that pieces, as well as 20 cells surrounding it at all sides, and evolve it 21:11:25 that would only really work for entire pages 21:11:33 (Store what you use somewhere) 21:11:50 I have never used alloca in C, although if I write a program in LLVM, I might use it sometimes (LLVM optimizers can change alloca to SSA in some cases) 21:11:52 The 5x5 piece is correct, even if the 20 cells surrounding it aren't 21:12:02 18:45:02: Damn 21:12:02 18:45:10: Just wrote =+ 1 instead of += 1 21:12:04 Ritchie? Is that you? 21:12:28 No reason you couldn't check to see if the memory block in question is wholy contained on pages. 21:12:32 alloca does have genuine use-cases, I sort-of wish it was standard 21:12:35 18:46:42: It's also LSB. 21:12:35 18:46:54: Along with /dev/tty, and *nothing else*. 21:12:37 /dev/null isn't LSB? 21:12:38 *were 21:12:49 elliott_: /dev/null is as well. 21:12:49 elliott_, it is. /dev/null is even POSIX 21:12:53 elliott_: We went over this. 21:13:01 Whoever decided to make =+ to add instead of += made a stupid mistake on the day that they did so. 21:13:02 pikhq_: OK :P 21:13:06 ais523: just use recursion to do alloca 21:13:23 ais523: It's less useful with variable arrays, though. 21:13:23 elliott_: heh, that could get a bit messy 21:13:24 elliott_, that has a lot of overhead 21:13:33 (Even smart people make a stupid mistake sometimes... but that is how you can learn from it, too.) 21:13:33 elliott_, and might insert things in the middle 21:13:34 Which, incidentally, are no longer guaranteed in C. 21:13:42 elliott_, it would work for linked lists I guess 21:13:48 Am I just being boring? 21:14:19 always 21:14:38 18:54:02: ais523, I believe there is an x11-framebuffer server too 21:14:45 Xfbdev from XDrive, now standard Xorg 21:14:45 pikhq_: which version did they remove them in? 21:14:49 elliott_: thanks 21:14:56 variable arrays? 21:15:01 ah 21:15:13 at least Wesnoth was a little buggy running in framebuffer, though; it was leaving cursor droppings 21:15:16 elliott_: presumably VLAs 21:15:43 at least Wesnoth was a little buggy running in framebuffer, though; it was leaving cursor droppings <-- that was not Xfbdev I think 21:15:47 ais523: why is qemu not suitable for your purpose, btw? 21:15:52 Vorpal: it wasn't, it was SDL 21:15:54 ais523, rather it was probably SDL's fbcon backend 21:15:54 that could give you a controlled environment 21:15:55 or such 21:15:59 ais523: C1X has variable length arrays as an optional feature, not mandatory. 21:16:00 What is most levels of indirection you have used? 21:16:05 in C pointers? 21:16:06 elliott_: that would give too much away 21:16:10 let's just say I tried 21:16:24 ais523: I hate you so much 21:16:31 ais523: This because some implementors really struggled with it, and even refused to actually implement it. 21:16:34 ais523, how are we supposed to guess before you tell us unless you give us more hints? 21:16:40 `addquote ais523, how are we supposed to guess before you tell us unless you give us more hints? 21:16:41 530) ais523, how are we supposed to guess before you tell us unless you give us more hints? 21:16:45 Most obviously, Microsoft. 21:16:48 Vorpal: you aren't 21:16:49 `delquote 529 21:16:50 ​*poof* 21:16:53 ais523, damn 21:16:55 swap an unfunny quote for a funny one 21:16:57 which one was 529? 21:16:59 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]). 21:17:03 ais523: you saying you used strdup 21:17:05 There's actually a decent chance that Microsoft will implement C1X, though. 21:17:05 ah 21:17:09 you're right, that isn't too funny 21:17:18 elliott_, why was that one unfunny. 21:17:26 What with the *mandatory* features being not that much on top of what they'll need for C++0x. 21:17:27 Microsoft not implementing C99 will marginalise them in the communities that care about C99 21:17:28 It seems some of the features of C1X that are made optional are some features of C99 that I don't like. Is that partially it? 21:17:30 it was still somewhat funny 21:17:30 Vorpal: because it didn't have any comedic elements 21:17:36 which is, umm, people looking for a FORTRAN replacement, mostly 21:17:43 elliott_: it had one, which wasn't very good 21:17:52 What features of C1X are not optional features? 21:18:00 which was implying that I only used library functions which had passed some sort of Ais523 Approval Test^TM 21:18:04 zzo38: presumably quite a lot 21:18:08 zzo38: I imagine things like addition 21:18:11 elliott_, it did. It would be like ais523 torrenting something almost 21:18:13 zzo38: functions, perhaps? 21:18:27 Vorpal: what, using strdup? 21:18:31 ais523, heh 21:18:31 Yes, addition, functions, etc. I mean any C99 features and new features 21:18:43 19:08:18: what /is/ the plan 9 protocol exactly? 21:18:43 9P 21:18:44 99% OF USES OF STRDUP ARE ILLEGAL! 21:18:44 ais523, how would you torrent using strdup 21:18:50 elliott_, *aha* 21:18:50 Not things such as addition and function 21:18:51 zzo38: Unicode, anonymous structs and unions, alignment specification, type-generic expressions. 21:19:00 Vorpal: you misparsed my sentence 21:19:04 `addquote 99% OF USES OF STRDUP ARE ILLEGAL! 21:19:05 530) 99% OF USES OF STRDUP ARE ILLEGAL! 21:19:07 ais523, oh.... right 21:19:14 elliott_, now that one wasn't very funny :P 21:19:14 I was trying to guess at what "it" in your sentence referred to 21:19:25 zzo38: So, in large part features most compilers already *have*. 21:19:31 Anonymous structs and unions are useful I have used it a lot. 21:19:32 ais523, the quote 21:19:42 Vorpal: it was ais acting very out of character, when taken out of context 21:19:44 and it's also absurd 21:19:48 elliott_, yes 21:19:51 Hmm, the flag of Hawaii still has a Union Jack on it for some reason. 21:19:53 it is, therefore, quotable 21:19:55 but for reasons other than humour 21:19:57 elliott_: it's only funny out of context 21:19:57 Oh, yeah, and static assertions. 21:20:02 but agreed 21:20:07 elliott_, yeah mine was quotable too 21:20:07 And gone is gets. 21:20:12 Vorpal: oh, shut up 21:20:16 and the allcaps are a giveaway that it was meant to be in a context 21:20:17 http://pastebin.com/MthxxLrd 21:20:18 you never win quote wars, stop trying 21:20:20 elliott_, for stylistic reasons 21:20:27 you're like asiekierka trying to set the topic to something idiotic 21:20:30 this hack is quite nice 21:20:32 cto 21:20:33 elliott_, no I don't do that 21:20:33 Vorpal, would you just shut up OK. 21:20:34 you know it's not going to work 21:20:42 What are 99% uses of strdup which are illegal? 21:20:51 Never have you added a disputed quote that was even vaguely amusing. 21:20:53 zzo38: strdup can be used to transfer illegal material across the internet 21:20:58 elliott_: who does "you" refer to there? 21:21:05 ais523: {asiekierka,Vorpal} 21:21:10 thanks 21:21:50 a sufficiently advanced operating system probably could do network access with strdup 21:21:56 I don't think 99% uses of strdup necessarily has anything to do with internet at all 21:22:12 zzo38: you've pretty much completely missed the context 21:22:16 but it would take too long to explain 21:22:22 OK 21:22:43 -!- confab has joined. 21:22:52 confabulations 21:22:57 wow that's a word??? 21:23:09 http://pastebin.com/MthxxLrd http://pastebin.com/MthxxLrd http://pastebin.com/MthxxLrd 21:23:10 omg it is. 21:23:11 it successfully confabulated you 21:23:24 with zzo 21:25:06 how many people here know of the sendfile(2) system call? 21:25:09 it looks really interesting 21:25:18 and I wonder if cp is implemented in terms of it 21:25:27 Not GNU cp, at least. 21:25:38 It implements a complex buffering scheme on top of stdio. 21:25:41 pity it's nonportable (it's in the category of "widely implemented but not with the same semantics on every platform", like ptrace) 21:25:48 how many people here know of the sendfile(2) system call? 21:25:49 everyone 21:25:54 it's used in every web server ever 21:26:11 that makes sense 21:26:37 ais523: and 21:26:38 Presently (Linux 2.6.9): in_fd, must correspond to a file which supports 21:26:38 mmap(2)-like operations (i.e., it cannot be a socket); and out_fd must refer 21:26:38 to a socket. 21:26:42 ais523: so you can't do cp or anything with it 21:26:47 that's a really stupid restriction, though 21:26:48 oh, that's ridiculous 21:27:14 I missed that bit 21:27:43 let's all rage at stupid restrictions on sendfile for a bit 21:28:33 ais523: it probably exploits some property of sockets 21:28:38 and obviously uses memory mapping to read from the FD 21:28:50 yep, thus the "must be mmapable" restriction 21:29:05 ais523: but it would avoid buffer copying and syscall overhead, I suppose, even without those restrictions 21:29:19 yep, I bet the kernel would be faster at copying one fd to another than userspace would 21:29:22 ais523: have I raved yet today about how syscalls are the cost of a CALL instruction in @? 21:29:32 elliott_: not while I've been in here 21:29:49 ais523: woo rave rave rave 21:29:53 what's the benefit of using CALL over using INT? 21:30:00 ais523: much faster 21:30:04 syscalls are really expensive 21:30:06 function calls arent 21:30:07 't 21:30:20 well, technically @ has no syscalls, you just get passed functions that happen to access hardware in a privileged manner 21:30:24 but the point is that it has no syscall overhead 21:30:27 elliott_: are they expensive because they use INT? or for some other reason? 21:30:34 ais523: It's a context switch. 21:30:37 ais523: because interrupts are slow, I think, and because you have to copy data 21:30:39 and what pikhq_ said 21:30:43 what you probably mean is, "system calls don't need context switches" 21:30:49 right 21:30:50 which is a better thing to rave about 21:30:54 ais523: To do a context switch, you have to flush the pipeline and the page table. 21:30:57 i'm no OS guy, unfortunately; not yet 21:31:10 And, hence, the cache. 21:31:15 ais523: incidentally, a _lot_ of Synthesis' speed improvements came from optimising the kernel<->user space transition 21:31:19 BUT NOT AS MUCH AS @ DOES 21:31:27 /* The whole purpose of this file is for GDB and GDB only. Don't read too much into it. Don't use it for anything other than GDB unless you know what you are doing. */ 21:31:40 do those warnings ever stop anyone? 21:31:47 No. 21:31:59 I've all but given up on access restrictions of any kind in programming, because nobody ever cares about them 21:32:00 elliott_: they didn't stop me, although they did vaguely make me want to look at GDB source as that's the only place I was going to get decent documentation 21:32:12 in the end, I looked at various other sources, including the kernel's 21:32:14 although some are necessary for security (<-- @ view of things showing through) 21:32:39 what it really means is "we don't think anything important but gdb is going to use this code, so we aren't going to bother to document it" 21:32:45 for instance, you don't want any old code getting the "cast a bunch of bytes into an arbitrary type" function 21:32:53 and it was a pain to work out what it did, as a result 21:32:57 because you could construct a safe pointer-accessor object pointing to some privileged code 21:32:59 it's a really really system-specific file, anyway 21:33:03 and cast it to a pointer-accessor 21:33:12 and use it to get a hold of e.g. the send byte to port function 21:33:23 elliott_: that sounds a bit like Java's security model 21:33:34 ais523: Java doesn't use capability security, AFAIK 21:33:42 @ is practically based around it 21:33:55 especially because its native means of execution is basically arbitrary remote code execution 21:34:02 elliott_: it theoretically uses SecurityManager, which is designed around capabilities, it just makes a hash of it 21:34:08 (you just reference an object that happens to not be on your computer, and it fetches it from the @ternet) 21:34:24 (it could be a game of Asteroids, say) 21:34:27 struct user_regs_struct { long int ebx; long int ecx; long int edx; long int esi; long int edi; long int ebp; long int eax; long int xds; long int xes; long int xfs; long int xgs; long int orig_eax; long int eip; long int xcs; long int eflags; long int esp; long int xss; }; 21:34:28 (and it'd run and display as native code) 21:34:32 most system-specific struct ever? 21:34:35 (note: this means that I basically have Flash but better) 21:34:46 (you can embed games into a page, and they're exactly identical to native-code games) 21:34:47 elliott_: or ActiveX but less broken? 21:34:50 ais523: well, indeed 21:35:01 I am using that struct 21:35:05 it's also kind of like the original web browser in that there's no local/remote distinction 21:35:06 ais523: ouch 21:35:10 to get at the arguments to syscalls, which are in registers at the time 21:35:30 Linux only allows six arguments to a syscall, because then it runs out of registers 21:35:43 elliott_: I take it that @ isn't based around arbitrary *machine code* execution, though. 21:35:50 ais523: why not just use __asm__? 21:35:57 pikhq_: well, no 21:36:01 elliott_: for what? 21:36:07 I'm trying to get at the args to a syscall in a different process 21:36:09 ais523: to get at registers 21:36:12 a 21:36:13 h 21:36:27 so I'm looking for the context-switched-out copy of the registers, not the current process registers 21:36:39 the whole file is about grabbing the context that's been switched out of a process 21:37:18 it's different for x86 and x64 for that reason (I'm aiming at x86 for the time being) 21:37:33 "x64" 21:37:34 please don't 21:37:40 elliott_: sorry 21:37:47 hmm, I hope there's an Intel chip actually ending in that 21:37:53 the platform needs some name 21:37:54 so I can talk about it and confuse people 21:38:06 they should call their 64-b 21:38:07 struct user_regs_struct 21:38:09 { 21:38:10 long int ebx; 21:38:12 long int ecx; 21:38:13 long int edx; 21:38:14 ais523: I usually say x86-64, because it's official enough, generic, and underscores are ugly 21:38:15 long int esi; 21:38:16 long int edi; 21:38:18 long int ebp; 21:38:19 long int eax; 21:38:21 long int xds; 21:38:22 long int xes; 21:38:24 long int xfs; 21:38:25 long int xgs; 21:38:27 long int orig_eax; 21:38:28 long int eip; 21:38:30 long int xcs; 21:38:31 long int eflags; 21:38:33 long int esp; 21:38:34 long int xss; 21:38:36 }; 21:38:37 gah, what just happened? 21:38:39 did I accidentally paste a 20-line struct? 21:38:39 ais523: I'm annoyed at you for being ais523, because Vorpal would have whined at anyone else by now 21:38:40 if so, sorry 21:38:43 yes, but I don't mind 21:38:56 * ais523 puts a single letter on the clipboard 21:39:01 just in case it happens again 21:43:32 -!- elliott_ has quit (Remote host closed the connection). 21:43:46 (Actually my D&D character also speaks Thesk language (due to being slavery there (do you like to nest parentheses this much? (I don't know)))) 21:43:49 -!- azaq23 has joined. 21:44:07 -!- elliott has joined. 21:44:52 zzo38: I nested parentheses like that in the C-INTERCAL manual once 21:44:58 but as a joke, not because it was useful 21:45:38 ais523: In what part of the manual? 21:45:47 > let x = "Maybe. " ++ show [var x] in x 21:45:49 oops 21:45:54 zzo38: I can't remember 21:45:59 I think it mentioned recursion, but I'm not sure why 21:46:03 LAMBDABOOOOOT 21:46:10 you could search the manual for ))), it would probably find the relevant section quite quickly 21:46:34 who gave you the boot 21:48:40 > let x = "Maybe. " ++ show [var x] in x 21:48:42 what is this meant to be? 21:48:45 Maybe. [Maybe. [...? 21:48:56 -!- quintopi1 has joined. 21:49:32 -!- quintopi2 has joined. 21:51:07 ais523: I'm annoyed at you for being ais523, because Vorpal would have whined at anyone else by now <-- what? 21:51:18 -!- oklopol has quit (Ping timeout: 252 seconds). 21:52:52 -!- quintopi1 has quit (Client Quit). 21:53:16 -!- quintopi2 has quit (Client Quit). 21:54:08 elliott: yes. 21:54:37 hm probably the var should be at the outside. 21:54:56 > var (show "x") 21:55:05 ho hum 21:55:28 oh right 21:57:33 -!- oklopol has joined. 22:00:46 "JavaScript must be enabled in your browser to display the table of contents." 22:00:54 (On an Opa book) 22:01:10 That's.. not encouraging to any beliefs that you gracefully degrade 22:03:17 opa sucks 22:04:00 wtf is opa? yet another active worlds? 22:04:26 lol 22:04:36 elliott, because it's more specialized than Ur, which allows for more than just web stuff, or for other reasons too? 22:04:55 because it's like Ur without the only thing that makes Ur interesting, i.e. the type and module system 22:05:51 Maybe I'm interested in the web stuff 22:06:21 maybe im allowed to say opa sucks regardless 22:15:38 -!- CakeProphet has joined. 22:15:39 -!- CakeProphet has quit (Changing host). 22:15:39 -!- CakeProphet has joined. 22:22:02 -!- NihilistDandy has joined. 22:24:20 -!- Taneb has quit (Quit: Page closed). 22:24:50 -!- Taneb has joined. 22:31:12 I have read of the Gnostica game using tarot cards and Icehouse pyramids. Can a similar (but different) game be made using Fanucci cards? And maybe instead of Icehouse you can use some different kind of board, too. 22:33:34 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:57:34 `addquote Non sequitur is my forte On-topic discussion is my piano Bowls of sugary breakfast cereal is my mezzoforte Full fat milk is my pianissimo 22:57:36 531) Non sequitur is my forte On-topic discussion is my piano Bowls of sugary breakfast cereal is my mezzoforte Full fat milk is my pianissimo 22:58:11 those weren't non-sequiturs! 22:58:21 neither was this banana 22:58:33 `delquote 531 22:58:34 ​*poof* 22:58:39 `addquote Non sequitur is my forte On-topic discussion is my piano Bowls of sugary breakfast cereal is my mezzoforte Full fat milk is my pianissimo On which note, I'm hungry 22:58:40 531) Non sequitur is my forte On-topic discussion is my piano Bowls of sugary breakfast cereal is my mezzoforte Full fat milk is my pianissimo On which note, I'm hungry 22:58:45 ( Ha. Note) 22:58:52 lol 22:59:05 That's the second accidental pun I've made in the past five minutes 22:59:42 well please drop that pun before you hurt any more people 22:59:56 im hurt 23:00:07 "Shoe size is a UK 11" "11+25=36" "36/12=3" "That means my feet are about a foot long" "...Handy" 23:00:08 * oerjan gives monqy the banana 23:00:27 joy 23:00:36 I think your feet is supposed to be about a foot long, that is why they made up a foot measurement, isn't it? 23:00:49 -!- copumpkin has joined. 23:00:57 zzo38: The foot measurement is arbitrary and silly. Something about some king or other 23:01:07 I thought that was the Yard? 23:01:27 The Yard is busy with a scandal. Let's leave them out of this 23:01:33 NihilistDandy: Yes, I think it might be the king's foot size, they measured, and that is approximately one foot. 23:01:33 monqy: is it cold there its cold here 23:01:37 Topical humoUr 23:02:06 elliott: It's 100˚F here 23:02:19 Heat wave _-_ 23:02:29 lol texans 23:02:47 New Hampshire, actually 23:02:58 oh wait 23:03:01 New Hampshire? 23:03:03 that was your freenode sevrer location 23:03:08 That's in New Hampshire! 23:03:14 I know, right? 23:03:16 isn't new hampshire the one with all the stupid libertarians trying to make a ~free state~ 23:03:24 I think Bill Bryson lives there 23:03:26 No, there are like 5 of those 23:03:28 Or lived there or something 23:03:36 I think that's Quebec 23:03:38 And Bill Bryson lives in Massachusetts, now. He used to live here, though 23:03:42 NihilistDandy: but it's _one_ of them 23:03:52 LIVE FREE OR DIE 23:03:53 http://freestateproject.org/ 23:03:54 yep 23:03:55 new hampshire 23:04:02 elliott: its suny here 23:04:11 It's night-y here 23:04:12 Oh, those people 23:04:24 so what are your social services like what with your lack of decent taxation and all :P 23:04:25 elliott: foggy mornigsn though not cold nice though i like foggy i like cold i wish it were colder 23:04:37 monqy: what tepermature was ite; 23:04:43 elliott: Better than most of the country, actually 23:04:47 i would like cold but it makes my body parts cold and that makes walking hard 23:04:56 NihilistDandy: good job usa 23:05:05 elliott: ihave no theremometre 23:05:15 monqy: tr;y using google 23:05:22 ; is the best key to typo with imo 23:05:31 its good 23:05:31 http://www.google.com/search?hl=en&source=hp&biw=723&bih=658&q=temperature+where+monqy+is&oq=temperature+where+monqy+is&aq=f&aqi=&aql=&gs_sm=e&gs_upl=5183l10342l0l10493l34l23l2l8l8l0l247l1768l1.9.2l12 23:05:34 permature theremin 23:05:39 I have completed my thereminometer, which measures the number of theremins in a 50 foot radius. Current reading: 1 23:05:41 theremometre? 23:06:04 NihilistDandy: theremin buddies o/ 23:06:09 19 degres it lokes like??? not too bad????? 23:06:11 It'd be nigh-impossible to make Massachusetts a "libertarian paradise". 23:06:13 do you never play yours too 23:06:16 Taneb: we are clearly asymptotically approaching a spelling singularity 23:06:21 What with the People's Republic of Cambridge and all. 23:06:23 elliott: I actually do, sometimes 23:06:29 monqy: it is like eleven degrees in here or something 23:07:03 now that it has reached #esoteric, there cannot be much time left 23:07:29 oerjan: no its just me and monqy we don't lieke keybwords they do what we dont want them to be oding a lot 23:07:41 *alot 23:07:45 NihilistDandy: thanks you 23:08:09 elliott: that's what you _think_, but it is spreading 23:08:22 Where's Staffordshire again? 23:08:31 Like, how far South? 23:08:35 in about a year and a half, it reaches critical mass 23:08:47 Taneb: birmingham 23:08:49 aisland 23:08:49 Taneb: It's in the middle 23:08:55 Okay 23:08:59 west midlands 23:09:04 http://en.wikipedia.org/wiki/Staffordshire 23:09:31 NihilistDandy: why drag the poor alot into this 23:09:47 oerjan: The alots know what they did to deserve it 23:09:58 rip alots 23:10:22 rip alots? that's just horribly cruel 23:10:35 Sir Rip-Alot 23:10:53 How could you be so mean to alots? 23:11:10 Damn blood pressure... 23:11:13 It's too low 23:11:27 I react badly to changes in altitude 23:11:39 As in, headaches 23:11:40 Taneb is irc from everest 23:11:49 I've been smoking for four years, and my blood pressure is in the good range. I presume that this makes me better than science 23:11:50 changes in altitude make my ears anoying 23:11:52 is it cold there Taneb too am i the only cold person in hexham 23:11:54 Taneb: hq_> How could you be so mean to alots? 23:11:58 01:11 Tanewat 23:12:01 smokeing is bad for you... 23:12:09 monqy: Apparently not *that* bad 23:12:11 that was not a good cut and paste 23:12:12 long cancer 23:12:19 I'm not that cold, but I have a warm house 23:12:28 maybe i should try pushing ^C 23:12:38 Taneb: your mother was a hamster and your father smelt of elderberries 23:12:41 But yeah, it's pretty cold outside 23:12:53 why do people smoke it has like the most boring effect of any drug 23:13:09 "it makes me feel a bit better i GUESS" WRONG you're just a lameo who picked the wrong addiction 23:13:10 elliott: Because it's cool, of course 23:13:12 Eggar's saying the wind's coming from the West, so it may get warmer 23:13:16 -!- confab has left. 23:13:18 And I'm not an addict 23:13:21 It's a luxury item 23:13:22 they should put different warnings on the packets 23:13:23 WARNING: LAMEST DRUG 23:13:27 noboyd would buy it 23:13:27 ^^ 23:13:33 DOESN'T EVEN DO THAT MUCH 23:13:43 KNOWN BY THE STATE OF WHEREVER TO BE A WASTE OF MONEY PRETTY MUCH 23:13:57 GET WEED INSTEAD? 23:13:59 precisely 23:14:02 IT'S NOT TAXED 23:14:31 Unless you take the unofficial danger tax as a tax 23:14:49 -!- Taos has joined. 23:14:49 in the title of the page it says "Well-Typed - The Haskell Consultants" but i want to know who are the haskell conraisins? 23:14:52 -!- ghoulmaster has joined. 23:15:16 ghoulmaster: hello 23:15:23 hey elliott 23:15:44 * oerjan finds the new nicks suspicious 23:15:48 They try to sell you overpriced dried grapes, claiming that they're functional 23:15:50 Taos has been here before 23:15:54 oh 23:15:57 ghoulmaster: hello we are about programming 23:15:58 haskell conraisinjs? 23:15:59 elliott: have I now? 23:16:00 `addquote in the title of the page it says "Well-Typed - The Haskell Consultants" but i want to know who are the haskell conraisins? 23:16:01 532) in the title of the page it says "Well-Typed - The Haskell Consultants" but i want to know who are the haskell conraisins? 23:16:07 monqy: get it, sultanas 23:16:16 elliott: i know 23:16:16 sultans 23:16:25 of swing? 23:16:34 ghoulmaster: ok, lots of people don't :P 23:16:47 Wait, this is about programming?~ 23:16:53 elliott: lol i could see that with the name... 23:16:58 I thought this was a comparative literature channel 23:17:04 ghoulmaster: precisely 23:17:11 Really? I thought this was to do with elephants 23:17:20 I don't remember coming here before 23:17:23 NihilistDandy: Comparative algorithmically-generated literature channel. 23:17:33 Neat, isn't it? 23:17:36 pikhq_: Ah, of course. The veil lifts 23:17:45 brainfuck derivative party channel 23:18:02 -!- Somelauw has joined. 23:18:08 ok _who_ mentioned us and where 23:18:13 #haskell again? 23:18:21 the conraisins are about raisin money 23:18:22 nope 23:18:23 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 23:18:30 elliott: I mentioned us in #nethack once, I think 23:18:30 Brainfuck has disappointing few brains and barely any fucks 23:18:36 i read it as "raisin monqy" and got real confused 23:18:51 Taneb: Barely any == 0? 23:18:58 Taneb: s/disappointing/disappointingly/ 23:19:01 so i can addquote it without lying 23:19:03 plz 23:19:03 thx 23:19:04 If I ever get laid because of brainfuck, that will be the real brainfuck 23:19:22 NihilistDandy: its worked for me 23:19:27 8)))) 23:19:31 MY MIND 23:19:34 NihilistDandy: I can spell your name in + and > and < and - 23:19:35 Especially if it's with a human heart 23:19:37 now shag me? 23:19:42 There is a book about esolangs 23:19:43 Taneb: surely you mean brain 23:19:46 http://www.barnesandnoble.com/w/esoteric-programming-languages-books-llc/1022380853?ean=9781155349770&itm=1&usri=brainfuck 23:19:53 Sgeo: omg no that was my calling 23:19:56 by Books LLC? 23:19:58 i am suspicious of this 23:20:03 but i'm going to buy it anyway 23:20:14 nice overview too 23:20:15 i bet it's wikipedia 23:20:21 Purchase includes free access to book updates online and a free trial membership in the publisher's book club where you can select from more than a million books without charge. 23:20:25 elliott: I mean what I say 23:20:30 the description is from wikipedia 23:20:45 also esolangs... wtf 23:20:48 who copied who 23:20:58 Take a wild guess 23:21:07 NihilistDandy: no, it is _quite possible_ wp copied us, which is legal 23:21:10 the other way around is not 23:21:27 Oh, I meant the book 23:21:29 if the contents are an exact match with the Wikipedia category, I think that's it 23:21:44 I mean the articles 23:22:06 the excerpt is an exact match with Wikipedia 23:22:09 oh 23:22:13 so I suspect it is indeed a Wikipedia excerpt book 23:22:13 that text is not actually in the eoslangs article 23:22:14 lol 23:22:16 its just in the google summary 23:22:17 ais523: right 23:22:25 ais523: I kind of still want to own it :) 23:22:29 just for that cover 23:22:47 it's probably an autogenerated cover 23:22:47 is it worth 12 pounds????? we report, you decide 23:22:51 ais523: precisely 23:22:58 I'll bet it's printed on toilet paper and recycled newsprint 23:23:00 note that it lists Esoteric Programming Language as a language 23:23:02 how do you go from ISBN → Amazon link? 23:23:08 ais523: YES I WANT IT BECAUSE IT IS BAD OK 23:23:46 I just cooked my own brainfuck interpreter 23:23:47 http://www.amazon.com/s?search-alias=stripbooks&field-isbn=1155349776 23:23:52 ais523: hmm, I see no GFDL on that Barns an dNoble page 23:24:01 thank you, Special:Booksources 23:24:04 rip :( 23:24:14 i guess i have to buy it from barnes and noble then 23:24:16 it's a no-results-found on Amazon, though 23:24:26 http://www.amazon.com/Esoterics-Websters-Quotations-Facts-Phrases/dp/0546763294/ref=sr_1_1?s=books&ie=UTF8&qid=1311376994&sr=1-1 what the fuck 23:24:27 http://www.amazon.com/Esoteric-Programming-Languages-Kvikkalkul-Instruction/dp/images/1155349776 --Google 23:24:30 We're sorry. The Web address you entered is not a functioning page on our site --Amazon 23:24:35 WHO IS RIGHT???? 23:24:38 alternatively: http://books.google.com/books?id=kHOLSQAACAAJ&dq=isbn:1155349776&hl=en&ei=ngYqTtqMLdTE8QPPsvH-Cw&sa=X&oi=book_result&ct=result&resnum=1&ved=0CCgQ6AEwAA 23:24:42 Sgeo: ? 23:24:52 " This is not an encyclopedic book, but rather a collage of statements made using the word "esoterics," or related words (e.g. inflections, synonyms or antonyms)." 23:24:55 -!- Taos has left. 23:24:59 the "related books" there is suspicious 23:25:05 Sgeo: heh, lol 23:25:06 So, just... random sentences that have the word "esoteric" 23:25:08 looks like another generated thing 23:25:17 "the editorial decision to include or exclude terms is purely a computer-generated linguistic process." 23:25:25 Sgeo: no, "esoterics" 23:25:30 How very esoteric 23:25:32 oh, esoteric too 23:25:34 * Phantom_Hoover → sleep 23:25:37 um 23:25:40 I want to buy this too.... 23:25:41 it's forty pages 23:25:42 -!- Phantom_Hoover has quit (Quit: Leaving). 23:25:53 you could also buy a copy of "Non-English-Based Programming Languages: Brainfuck, Plankalkül, Befunge, Rapira, Malbolge, Non-English-Based Programming Languages, False" 23:25:55 Price:£27.50 & this item Delivered FREE in the UK with Super Saver Delivery. See details and conditions 23:25:55 o;h 23:26:03 ais523: god dammit why are there so many books i want??????? 23:26:08 wait omg Plankalkül?? 23:26:13 awesome 23:26:18 elliott: why would you buy books that were that autogenerated? 23:26:22 does it include that one with "GRUNNUR"; 23:26:22 Well, goodnight folks 23:26:25 i should make a program to write novels for me..........make$$$$$$$$ 23:26:25 is that a wiki book? 23:26:29 fjolnir 23:26:32 -!- Taneb has quit (Quit: Page closed). 23:26:39 sorry Fjölnir 23:26:42 omg it's in the category 23:26:43 i bet it does 23:26:45 omg omg omg i want it 23:26:50 I WANT ALL THE SHITTY BOOKS 23:26:59 elliott: calm down 23:27:10 ais523: i can;t im onverhwlemed 23:27:15 * elliott cries 23:27:19 -!- Taos has joined. 23:27:26 ____ _ _ 23:27:27 / ___| ___ ___ __| | |__ _ _ ___ 23:27:27 | | _ / _ \ / _ \ / _` | '_ \| | | |/ _ \ 23:27:27 | |_| | (_) | (_) | (_| | |_) | |_| | __/ 23:27:27 \____|\___/ \___/ \__,_|_.__/ \__, |\___| 23:27:29 |___/ 23:27:36 wat 23:27:45 hi 23:27:56 I suppose your not in a terminal 23:27:56 Taos: you too 23:28:10 what about my not in a terminal 23:28:12 I use a variable-width font for IRC 23:28:16 means me pumping figlet into the shell does nothing for you 23:28:19 It says Goodbye, btw 23:28:19 which technically has nothing to do with whether I'm in a terminal or not 23:28:24 Taos: it doesn't pump into /our/ shell 23:28:28 although my terminal's fixed-width as it would otherwise be hard to play NetHack 23:28:29 it pumps into yours 23:28:31 but why does it say goodbye........................... 23:28:43 because I got bored and wanted to say that 23:28:46 oh 23:28:46 monqy, he's surrounded #esoteric with TNT 23:28:47 ok 23:28:53 double ok 23:29:01 Sgeo: its demo time 23:29:16 is figlet some sort of alternative version of banner(1)? 23:29:20 that uses a less overblown font? 23:29:23 o_O 23:29:27 there are people who don't know what figlet is? 23:29:31 ha 23:29:34 figlet is basically super-general banner 23:29:37 it has font files, etc. 23:30:00 http://www.figlet.org/ 23:30:09 its the first thing I install 23:30:15 Taos: not cowsay? :( 23:30:29 wow, I made a major discovery today: pressing / in the Gnome file chooser dialog box makes it actually add a textbox you can type the filename in 23:30:33 -!- Somelauw has quit (Quit: leaving). 23:30:33 elliott: thats second 23:30:43 that really makes that dialog box about 50% less stupid 23:30:49 elliott@katia:~/Code/mcmap$ figlet im cow | cowsay 23:30:49 _________________________________________ 23:30:49 | \ / __/ _ \ \ /\ / / | | | | | | | | | 23:30:49 | (_| (_) \ V V / |_|_| |_| |_| \___\___/ | 23:30:50 \ \_/\_/ / 23:30:52 ----------------------------------------- 23:30:53 _ _ 23:30:53 __| | ___ __ _ ___ ___ ___ ___ ___ ___ ___ __ _ ___ __| | 23:30:53 / _` |/ _ \ / _` |/ _ \/ _ \/ __|/ _ \ / __|/ _ \/ _ \ / _` |/ _ \ / _` | 23:30:53 | (_| | (_) | | (_| | __/ __/\__ \ __/ \__ \ __/ __/ | (_| | (_) | (_| | 23:30:53 \__,_|\___/ \__, |\___|\___||___/\___| |___/\___|\___| \__, |\___/ \__,_| 23:30:54 \ ^__^ 23:30:56 |___/ |___/ 23:30:56 \ (oo)\_______ 23:30:58 (__)\ )\/\ 23:31:00 ||----w | 23:31:01 im literally dead 23:31:02 || || 23:31:02 irl 23:31:04 good 23:31:08 yay now everyone is piping into irc 23:31:10 Only works if your window is wide enough 23:31:12 my job here is done 23:31:27 I'm disappointed that the first thing you install isn't sdate 23:31:34 sdate? 23:31:38 Today is Prickle-Prickle, the 58th day of Confusion in the YOLD 3177 23:31:46 totally gotta install taht! 23:31:47 * elliott tries sdate ddate 23:31:54 doesn't work :( 23:31:57 ok i can see it now 23:32:13 sdate is pretty good at breaking programs randomly 23:32:15 the first one however makes little to no sense 23:32:25 sdate ddate: Today is Prickle-Prickle, the 58th day of Confusion in the YOLD 3159 23:32:37 The Glorious Glasgow Haskell Compilation System, version 7.0.4 23:32:51 because the vast majority of programs assume that September is only 30 days long, and that the library function will never return anything outside that range 23:32:54 GHCi, version 7.0.4: http://www.haskell.org/ghc/ :? for help 23:32:54 Loading package ghc-prim ... linking ... done. 23:32:54 Loading package integer-gmp ... linking ... done. 23:32:54 Loading package base ... linking ... done. 23:32:54 Loading package ffi-1.0 ... linking ... done. 23:32:55 Prelude> Leaving GHCi. 23:32:58 ais523: heh 23:33:00 ais523: why does it break programs randomly 23:33:02 Today is Pungenday,the 57th day of Confusion in the YOLD 3177 23:33:09 Taos: because it uses eternal september dates 23:33:11 Different time zone 23:33:11 which aren't, technically, valid 23:33:16 Right? 23:33:17 Taos: because the vast majority of programs assume that September is only 30 days long, and that the library function will never return anything outside that range 23:33:27 thats odd 23:33:30 im tired 23:33:38 hmm, only about two years until the thousandth of september 23:33:40 erm 23:33:40 sdate's a prefix to other commands that modifies dates to just be expressed in terms of september 1993 23:33:42 hmm, only about two years until the seven thousandth of september 23:33:48 gah -- now i forget what font I was using 23:33:59 /bin/sh: -c: line 0: unexpected EOF while looking for matching `"' 23:34:00 /bin/sh: -c: line 1: syntax error: unexpected end of file 23:34:06 _ 23:34:07 | |__ _ _ ___ 23:34:07 | '_ \| | | |/ _ \ 23:34:07 | |_) | |_| | __/ 23:34:07 |_.__/ \__, |\___| 23:34:08 -!- Taos has quit (Quit: leaving). 23:34:13 lmao 23:34:14 bue 23:34:20 elliott: ? 23:34:25 ais523: at his /bin/sh failure 23:34:29 ah, OK 23:34:29 with his /exec line 23:34:31 and his quitting too early 23:34:38 s/his/gender neutral pronoun/ 23:34:42 _ _ _ 23:34:42 | |__ _ _ ___ | |__ _ _ ___ | |__ _ _ ___ 23:34:42 | '_ \| | | |/ _ \ | '_ \| | | |/ _ \ | '_ \| | | |/ _ \ 23:34:42 | |_) | |_| | __/ | |_) | |_| | __/ | |_) | |_| | __/ 23:34:42 |_.__/ \__,_|\___| |_.__/ \__,_|\___| |_.__/ \__,_|\___| 23:34:42 -- 23:34:44 23:34:59 `addquote bue 23:35:01 533) bue 23:35:07 hey ais523, how much would you hate me if I violated XDG standards 23:35:09 immprtalized 23:35:11 NihilistDandy: he didnt say bue >:| 23:35:14 WHat's YOLD? 23:35:16 `delquote 533 23:35:17 ​*poof* 23:35:24 `addquote _ | |__ _ _ ___ | '_ \| | | |/ _ \ | |_) | |_| | __/ |_.__/ \__, |\___| 23:35:26 533) _ | |__ _ _ ___ | '_ \| | | |/ _ \ | |_) | |_| | __/ |_.__/ \__, |\___| 23:35:28 NihilistDandy: fixed that for you 23:35:31 Sgeo: YOLD is the year indication for the Discordian calendar. 23:35:37 FINE~ 23:35:42 elliott: I'm not sure what XDG standards are 23:35:44 so I'm not sure yet 23:35:59 ais523: well the one in particular is why you have a ~/.config/ directory 23:36:06 ah, aha 23:36:07 and also ~/.cache, and I think ~/.local too 23:36:14 I noticed Wesnoth being changed to comply with those 23:36:17 What command is ais523 using to get that? 23:36:22 ais523: it's an environment variable so you can move ~/.config, it's horribly broken though 23:36:25 so are there any books published about esoteric programming languages? 23:36:25 there's no way to get regular dotfiles with it 23:36:30 so you have to reserve a directory for it 23:36:36 I mostly just ignore those standards 23:36:36 i'm adding configuration to mcmap 23:36:37 other than auto-generated 23:36:39 and i just want to use ~/.mcmap 23:36:40 and don't mind whether people follow it or not 23:36:50 ais523: ok, thanks, although it's fizzie's opinion that actually matters :P 23:36:53 itidus20: Why would someone publish such a book? 23:36:59 Oh, ddate, derp 23:37:00 although, programs I've worked on have used ~/.acehackrc and ~/.taeb 23:37:01 cant hide from esoteric 23:37:05 itidus20: I have seen some magazine articles in some magazines about Linux. I have also seen there is a Japanese book that describes a few esolangs including one of my own. 23:37:10 Sgeo: it wasn't me using ddate 23:37:11 Also, I think INTERCAL might have a book out there some where 23:37:13 so are there any books published about esoteric programming languages? 23:37:13 dude 23:37:16 Oh 23:37:17 we just linked to one 23:37:19 and talked about it 23:37:28 it isn't really a book about esolangs 23:37:29 zzo38: which book 23:37:35 ais523: sure it is >:| 23:37:35 other than auto-generated 23:37:35 so much as a book containing Wikipedia articles about esolangs 23:37:42 xD 23:37:48 -!- MigoMipo has quit (Read error: Connection reset by peer). 23:37:51 ais523: is a book that has a bunch of articles written by its author about esolangs not a book about esolangs? 23:37:59 wikipedia's just happen to have really long author lists, that's all 23:38:02 itidus20: it's not a physical book yet AFAIK, but the C-INTERCAL Revamped Reference Manual is an esolang-related book 23:38:13 elliott: the author's written as "Books, LLC" 23:38:24 elliott: I forget its title although I know there is a book that parts of it describe a few esolangs including one of my own. And it is Japanese book. 23:38:24 not as the actual authors of the book 23:38:34 ais523: pseudonym 23:38:43 doing that's actually illegal under the GFDL, if you make a compilation out of GFDL stuff you have to list at least five actual authors on the title page 23:38:46 unless there are less than five 23:38:46 ais523: and changing an author name hardly affects what a book is about 23:38:52 it would be a bit of a pointless exercize i know 23:38:57 but presumably the CC-by-sa license is more lenient 23:39:46 it would be a piece of trash text no doubt 23:39:49 It is why, when I write a book usually I do not use the GFDL. I don't care whether or not they list the author, or how the book is organized, or whatever. They would have to change it for various purposes including different paper sizes, and so on. 23:40:01 zzo38, famous pubished author 23:40:27 elliott: What about famous pubished author? 23:40:31 its you 23:40:37 Is it? I don't think so. 23:40:44 I have never published a book (yet). 23:40:57 Are you sure? 23:41:52 looking on the wikipedia wiki, there were printed INTERCAL manuals 23:42:08 Like I said :D 23:42:13 itidus20: yes, the original manuals were printed, and the electronic version of the manuals based on them 23:42:25 and proofread against the paper manuals by someone else 23:42:45 also, I'm not sure if "wikipedia wiki" = Wikipedia or Wikimedia Meta-Wiki 23:42:46 notice how i phrased it so that wikipedia is just a specialization of a wiki 23:42:57 yeah you're not sure.. 23:43:07 all the better for me to do such things 23:43:14 as, e.g. "nethack wiki" = "wiki about NetHack" = "nethackwiki.com", I'd assume "wikipedia wiki" = "wiki about Wikipedia" = "meta.wikimedia.org" 23:43:16 If in some day, I publish some book, that might include some of the programs I have written too, but also some other books, possibly. However I never yet publish any book. 23:43:34 `addquote If in some day, I publish some book, that might include some of the programs I have written too, but also some other books, possibly. However I never yet publish any book. 23:43:36 534) If in some day, I publish some book, that might include some of the programs I have written too, but also some other books, possibly. However I never yet publish any book. 23:43:37 ais, the "about" is a misnomer 23:43:41 NihilistDandy: that was just regular zzo 23:43:43 :P 23:43:46 I liked it 23:43:46 :D 23:44:06 i see what has happened here though 23:44:08 itidus20: well, would you interpret "nethack wiki" as implying that NetHack is a wiki? 23:44:08 yeah, but if we addquoted everything zzo38 said... :D 23:44:18 ais: ok i see now... hahahha 23:44:23 so it's the nethack wiki wiki 23:44:45 im dead 23:44:48 NihilistDandy: I am OK whether you put my quotations or not, it doesn't matter to me either way, but also either way I can collect them by looking at the list of the quotations that are available. 23:44:56 nethack which is a wiki.....is a wiki 23:44:58 :D 23:45:09 zzo is a warrior-poet 23:45:25 the name is formally "nethack wiki" and "nethack wiki" is a wiki, hence: nethack wiki wiki 23:45:37 itidus20: this is really bad terminology 23:45:50 is nethack wiki wiki a wiki 23:45:51 wiki wiki wiki wack 23:45:59 west jim west 23:46:07 wiki wild wild west 23:46:08 :D 23:46:16 <3 itidus20 23:46:35 ok i suppose i have created a tautology 23:46:37 ais523: so scapegoat................................. 23:46:40 needs to exist....... 23:46:48 elliott, as does Feather 23:46:52 * Sgeo runs 23:47:01 as does zepto 23:47:02 elliott: agreed 23:47:12 you win 23:47:17 wikipedia it is 23:47:19 scapegoat needs to be written in zepto-feather 23:47:25 un-zepto 23:47:44 Yay, 0 infections found 23:47:46 Feather would be a really really bad language to write a VCS in, I imagine 23:48:05 Sgeo: does that mean that your virus protection is good or your virus scanner is bad? 23:48:14 all i know about feather is what i read on the wiki page 23:48:17 ais523: I was about to ask who said he was talking about computer viruses 23:48:22 but then I realise that you didn't imply that, either 23:48:30 so thus wikipedia could be "most prolific encyclopedia wiki" vs "nethack wiki" 23:48:35 haha 23:48:44 can wikis be prolific 23:48:50 elliott: only with a nonstandard (but correct) definition of "or" 23:48:52 i guess not.. 23:48:59 ais523, well, the scanner is by ESET, which has a good reputation 23:49:01 itidus20: That sounds like a poor translation of an ancient Chinese manuscript 23:49:06 Sgeo: oh right, they do 23:49:09 that would be a fallacy of some kind 23:49:11 Sorry to burst the not-a-computer-virus buble 23:49:13 bubble 23:49:15 ais523: Why? 23:49:17 ancient chinese manuscript wiki wiki 23:49:29 ais523: I suppose you jumped to "virus" 23:49:30 From infection 23:49:38 There's certainly infection protection and infection scanners in the real world 23:49:44 ITT statements end in wiki wiki 23:50:01 sgeo was inspecting his wiki wiki 23:50:01 Now there is also wiki related to TeXnicard project (on Redmine), but it is currently empty (except for the file that says it is currently empty) 23:50:11 iykwim wiki wiki 23:50:15 well there are many encyclopedia wikis.. but wikipedia is the biggest 23:50:16 zzo38, the file is a lie! 23:50:29 Sgeo: I know..... but, it is mostly empty. 23:50:35 Empty wiki 23:50:52 Empty wiki wiki, a wiki cataloging empty wikis 23:51:06 And also an empty wiki about wikis 23:51:24 i was wrong about wiki wiki 23:51:26 Just realized that one wiki can be both 23:51:27 it is a tautology 23:51:43 im fish 23:51:49 swim 23:51:52 hi 23:51:52 ok 23:52:01 I'm a leaf on the wind 23:52:05 im monqy 23:52:06 hi 23:52:10 dunno if anyone's noticed, but me and monqy are pretty much the biggest contributors to this channel 23:52:16 what would you do without us??? 23:52:20 elliott: how do you do a paragraph break in Markdown? 23:52:36 the front page of the patch-tag wiki about AceHack accidentally got Slashdotted 23:52:39 elliott: Probably have a life 23:52:42 Is it a blank line? I don't know. 23:52:46 oh, right, there is a para break there 23:52:50 i'm sort of a parasite on a channel, but i am great at generating randomness 23:52:51 just that the styling's so bad I can't see it 23:53:10 itidus20: you're like sgeo but more so. bizarro sgeo. 23:53:11 ais523: two lines 23:53:12 I know a blank line is a paragraph break on MediaWiki, and in TeX, too, by default. 23:53:12 clearly what we need here is the wiki monads and comonads 23:53:20 elliott: yep, I thought it wasn't working 23:53:26 ais523: patch-tag is a really ugly website :( 23:53:29 in a bad usability way 23:53:32 yes 23:53:35 agreed 23:53:45 also acehack has like fifty problems, did you know, i remember telling you about them and them being dismissed :D 23:53:46 I'm just using it for hosting, really, it's not a "proper" website 23:53:51 elliott: I know 23:53:55 monqy: last night in my dreams I saw a false photo album of my childhood... looking ghostly 23:54:01 `addquote monqy: last night in my dreams I saw a false photo album of my childhood... looking ghostly 23:54:02 535) monqy: last night in my dreams I saw a false photo album of my childhood... looking ghostly 23:54:11 Last night in my dreams I was a banana... looking ghostly 23:54:15 elliott, so I can say random gibberish and get quoted for it? 23:54:18 itidus20: i saw a dancing cgi skeleton named malaria. i danced and played with him. 23:54:22 Sgeo: that was funny gibberish 23:54:28 `addquote itidus20: i saw a dancing cgi skeleton named malaria. i danced and played with him. 23:54:30 536) itidus20: i saw a dancing cgi skeleton named malaria. i danced and played with him. 23:54:35 elliott: My lenses are made of bananas 23:54:37 with join :: Wiki (Wiki a) -> Wiki a and cojoin :: Wiki a -> Wiki (Wiki a) 23:54:43 NihilistDandy: nope, quotes are closed i'm afraid 23:54:54 I wasn't looking for a quote :P 23:55:01 NihilistDandy, I'm a banana. Your lenses are made out of me. 23:55:06 AGH 23:55:12 wow, how long has that slashdot article been without comments, ais523? 23:55:14 I mean, with only two 23:55:21 elliott: probably about five minutes 23:55:24 it only just went up 23:55:25 oh 23:55:25 Sgeouiggol 23:55:27 and #junethack are panicking 23:55:29 what timezone does /. use, anyway? 23:55:47 elliott: to my view, it uses my timezone 23:55:49 What /. article? 23:55:51 but that's possibly because I'm logged in 23:55:53 ais523: feel free to explain that one to them 23:55:56 http://games.slashdot.org/story/11/07/22/2338215/First-NetHack-Cross-Variant-Summer-Tournament 23:55:59 you could start with "He's an idiot" 23:56:03 heh, I just esolanged Slashdot 23:56:08 I wonder if it can take the load? 23:56:14 *esotericed 23:56:20 esolanging it would be putting it on the wiki 23:56:20 It's ok guys. I am doing what I can to keep my psyche and ego surviving. All the while the threat of ww3 looms, the mortality of family and friends(loved ones?) and sooner or llater my own mortality. 23:56:34 `addquote It's ok guys. I am doing what I can to keep my psyche and ego surviving. All the while the threat of ww3 looms, the mortality of family and friends(loved ones?) and sooner or llater my own mortality. 23:56:36 537) It's ok guys. I am doing what I can to keep my psyche and ego surviving. All the while the threat of ww3 looms, the mortality of family and friends(loved ones?) and sooner or llater my own mortality. 23:56:40 ais523: how did junethack react to my brilliance.............. 23:56:47 It didn't. 23:56:50 itidus20: god bless you 23:56:55 elliott: I don't get it 23:57:04 ais523: itidus20 is the best, any questions? 23:57:07 oh, you mean in channel? 23:57:09 they ignored you 23:57:14 oh 23:57:16 :( 23:57:20 i sohuld say hi to them so they dont ignore me 23:57:23 ais523, I just tried to tell elliott that 23:57:34 i accepted it 23:57:35 I think he just did to me what #junethack did to elliott 23:57:37 but then, time passed 23:57:47 why would anyone ignore elliott 23:57:55 monqy: self-loathing? 23:57:56 note that I'm an op on #junethack, so don't try anything too trollish 23:58:06 ais523: its ok ur my pal i know you wouldn't ban me or anything 23:58:40 * oerjan cackles evilly for no specific reason 23:58:43 elliott: you're acting out of character now 23:58:58 ais523: i'm acting perfectly in character, you just don't understand the levels i operate on 23:59:22 ok i'm done, i hope they accept my apology 23:59:26 PROFUNDITY RISING 23:59:27 but i'm too embarrassed to stay there to accept it 23:59:30 who wants thack in june, anyway