00:04:23 -!- copumpkin has joined. 00:05:59 -!- TeruFSX has quit (Ping timeout: 246 seconds). 00:32:01 -!- augur has quit (Remote host closed the connection). 01:37:47 -!- augur has joined. 01:38:28 coppro, sure 01:39:13 -!- itidus21 has joined. 01:42:01 -!- itidus20 has quit (Ping timeout: 258 seconds). 01:43:11 coppro, ? 01:43:42 Sgeo: someone else already did 01:43:45 thanks though 01:43:55 Ah, ok 01:46:55 total used free shared buffers cached 01:46:55 Mem: 16037 7654 8383 0 353 5648 01:46:55 -/+ buffers/cache: 1652 14385 01:46:55 Swap: 4094 6 4088 01:47:02 how the heck... 01:47:06 how can I be using swap!? 01:47:13 I mean. come ON 01:47:36 The kernel doesn't unswap pages except on demand. 01:47:47 This is generally a pessimisation. 01:48:04 pikhq_, well no issue here, I'm just confused that I started using swap at all 01:48:09 I haven't been doing anything heavy 01:48:40 Hmm. 16 gigs? Yeah, it'd be pretty hard to make that swap. 01:48:54 pikhq_, indeed 01:48:59 $ swapon -s 01:48:59 FilenameTypeSizeUsedPriority 01:48:59 /dev/sda3 partition209647630961 01:48:59 /dev/sdb3 partition209647630961 01:49:00 so uh 01:49:03 how did that happen 01:56:51 -!- CakeProphet has quit (Ping timeout: 255 seconds). 01:59:22 -!- oerjan has joined. 02:01:48 -!- cheater has quit (Ping timeout: 255 seconds). 02:04:40 boo! 02:04:40 oerjan: You have 1 new message. '/msg lambdabot @messages' to read it. 02:05:51 -!- CakeProphet has joined. 02:05:51 -!- CakeProphet has quit (Changing host). 02:05:51 -!- CakeProphet has joined. 02:07:13 WHAT COULD POSSIBLY. BUT _POSSIBLY_. GO WRONG??????? 02:07:15 No. 02:08:33 -!- TeruFSX has joined. 02:11:23 -!- Patashu has joined. 02:14:53 The person who formulated the Sanskrit language 02:15:38 essentially inventing something like BNF millennia before bachus-naur were born, afaiu 02:16:06 and, iirc, with a smattering of Perligata, except sanskrit rather than latin. 02:18:22 -!- Sgeo_ has joined. 02:18:37 -!- jcp|other has joined. 02:19:00 -!- Sgeo has quit (Ping timeout: 250 seconds). 02:19:46 -!- jcp|1 has quit (Ping timeout: 252 seconds). 02:20:00 CakeProphet: you're the only person who consistently complains about other people being rude to you, so either there's institutionalised oppression or you're just misreading tones 02:20:25 -!- jcp has quit (Ping timeout: 250 seconds). 02:20:27 (jerk) 02:22:05 *+his 02:27:29 -!- jcp has joined. 02:30:29 But barely any esoteric markup or query languages 02:30:46 -!- madbr has joined. 02:30:47 would zzo's texnicard count? 02:30:49 welp 02:30:57 hello 02:31:03 hi 02:31:12 I'm writing impossible to read code into a commercial lib :o 02:31:29 how job securing 02:31:32 oerjan, suggestion intercal/sql hybrid. Both are traditionally upper case 02:32:23 FROM .1 <- SELECT PLEASE (222) NEXT. 02:32:27 heh 02:32:36 oerjan, joins could be done with COME FROM 02:32:49 SOMEHOW 02:33:14 i wonder if INTERCAL has a suitable set of instructions for monadic use. 02:33:58 oerjan: basically I'm writing Arm SIMD code 02:34:06 it's 2~4 times faster than C++ 02:34:19 ooh 02:34:40 But because math operations are pipelined you have to scramble your code to make it go faster 02:37:09 ^scramble your code 02:37:09 yu oedcro 02:37:25 good job fungot 02:37:26 monqy: whenever the quota for this referendum must list both the current players. if the 02:37:33 if the what 02:37:35 you get 2 operations per cycle! 02:37:49 but one of them has to be math and one of them has to be load/store 02:38:15 also if you start a multiply the result isn't available until 5 or 6 cycles later 02:38:22 if you read it before that it stalls 02:38:41 this is the kind of thing a good compiler _should_ be able to do by itself, right? 02:38:57 Dunno 02:39:26 There are intrinsincs for C++, maybe the compiler produces good code with those 02:39:36 Also dunno if compilers do pipelining 02:51:46 -!- madbr has quit (Read error: Connection reset by peer). 03:00:23 -!- madbr has joined. 03:00:25 -!- jcp|1 has joined. 03:01:02 -!- jcp has quit (Ping timeout: 240 seconds). 03:02:27 -!- madbr has quit (Read error: Connection reset by peer). 03:02:34 -!- jcp|other has quit (Ping timeout: 255 seconds). 03:05:40 -!- lament has joined. 03:07:00 -!- jcp has joined. 03:07:17 -!- CakeProphet has quit (Ping timeout: 246 seconds). 03:09:24 -!- madbr has joined. 03:17:24 Pratchett without footnotes = fail 03:29:11 -!- pumpkin has joined. 03:33:44 -!- madbr has quit (Read error: Connection reset by peer). 03:33:55 -!- copumpkin has quit (Ping timeout: 276 seconds). 03:41:55 -!- madbr has joined. 03:46:32 -!- madbr has quit (Read error: Connection reset by peer). 03:51:00 -!- TeruFSX has quit (Ping timeout: 276 seconds). 03:51:35 -!- pumpkin has changed nick to copumpkin. 03:52:41 -!- madbr has joined. 03:56:55 -!- madbr has quit (Read error: Connection reset by peer). 03:58:25 -!- TeruFSX has joined. 04:01:46 -!- augur has quit (Remote host closed the connection). 04:03:57 -!- madbr has joined. 04:14:42 -!- madbr has quit (Read error: Connection reset by peer). 04:21:47 -!- madbr has joined. 04:23:57 -!- madbr has quit (Read error: Connection reset by peer). 04:26:15 -!- MDude has changed nick to MSleep. 04:30:46 -!- madbr has joined. 04:33:03 -!- madbr has quit (Read error: Connection reset by peer). 04:40:20 -!- madbr has joined. 04:41:18 -!- TeruFSX has quit (Ping timeout: 252 seconds). 04:47:53 -!- TeruFSX has joined. 04:49:26 -!- madbr has quit (Read error: Connection reset by peer). 04:53:55 -!- augur has joined. 04:56:46 -!- madbr has joined. 04:59:01 -!- madbr has quit (Read error: Connection reset by peer). 05:05:07 -!- madbr has joined. 05:07:43 -!- madbr has quit (Read error: Connection reset by peer). 05:13:29 -!- madbr has joined. 05:15:55 -!- madbr has quit (Read error: Connection reset by peer). 05:17:17 11:08:35 But they always change it to the Magic the Gathering/Brainfuck idea. 05:17:20 11:08:46 Seems more like a persistent person. 05:17:33 actually it's simply changing it to the very oldest version of the page. 05:18:02 why is this channel so sleepy of late 05:18:12 only a few hours activity each day 05:18:20 quintopia: vacation time? 05:18:30 makes sense 05:18:36 thats where ive been 05:19:11 perhaps there's some kind of link which causes that oldest version to be saved, which a spambot has picked up. 05:19:37 or maybe it has a very broken way of following links. hm. 05:20:29 well can you lock it to reversion? 05:21:52 -!- madbr has joined. 05:22:21 i'm not an admin. 05:22:35 ah 05:24:26 -!- madbr has quit (Read error: Connection reset by peer). 05:30:57 -!- madbr has joined. 05:32:32 -!- madbr has quit (Read error: Connection reset by peer). 05:32:44 Or otherwise i'd have banned Nthern for not responding to my messages. Grmle. 05:32:52 *Grmble. 05:33:40 icwutudidthar 05:34:05 usure? 05:36:58 -!- TeruFSX has quit (Ping timeout: 276 seconds). 05:39:18 -!- madbr has joined. 05:41:27 -!- madbr has quit (Read error: Connection reset by peer). 05:44:45 -!- Patashu has quit (Ping timeout: 252 seconds). 05:47:35 -!- madbr has joined. 05:49:52 -!- madbr has quit (Read error: Connection reset by peer). 05:57:50 -!- madbr has joined. 05:59:58 -!- madbr has quit (Read error: Connection reset by peer). 06:06:09 -!- madbr has joined. 06:08:12 -!- madbr has quit (Read error: Connection reset by peer). 06:16:26 -!- madbr has joined. 06:19:02 -!- madbr has quit (Read error: Connection reset by peer). 06:24:46 -!- madbr has joined. 06:26:52 -!- madbr has quit (Read error: Connection reset by peer). 06:33:06 -!- madbr has joined. 06:35:27 -!- madbr has quit (Read error: Connection reset by peer). 06:41:24 -!- madbr has joined. 06:43:42 -!- madbr has quit (Read error: Connection reset by peer). 06:45:10 -!- cheater has joined. 06:50:00 -!- madbr has joined. 06:52:12 -!- madbr has quit (Read error: Connection reset by peer). 07:00:45 -!- madbr has joined. 07:02:50 -!- madbr has quit (Read error: Connection reset by peer). 07:09:08 -!- madbr has joined. 07:11:40 -!- madbr has quit (Read error: Connection reset by peer). 07:17:28 -!- madbr has joined. 07:19:42 -!- madbr has quit (Read error: Connection reset by peer). 07:20:57 -!- Taneb has joined. 07:25:51 Has anybody cared to make a category for languages where the computation always terminates? They form quite an important subclass of languages. 07:25:51 -!- madbr has joined. 07:27:08 this class of languages has seen a lot of research, too, such as Curry's ?I calculus ('53). 07:27:08 -!- madbr has quit (Read error: Connection reset by peer). 07:27:55 -!- oerjan has quit (Quit: leaving). 07:28:04 -!- cheater has quit (Ping timeout: 255 seconds). 07:30:13 @Taneb test 07:30:13 Unknown command, try @list 07:34:21 -!- madbr has joined. 07:36:37 -!- madbr has quit (Read error: Connection reset by peer). 07:39:28 and, for instance, almost all "regular" mathematical functions are computable by languages that only have loops that always terminate. Ackermann's function is not one of them. :) 07:40:28 -!- cheater has joined. 07:40:32 Ah, I misremembered ?I's computational class - but what about primitive recursive functions? 07:42:41 -!- madbr has joined. 07:42:48 -!- cheater has quit (Excess Flood). 07:43:02 languages where computation always terminates fall into one of a number of classes 07:43:17 hence http://esoteric.voxelperfect.net/wiki/Category:Computational_class 07:43:51 oh wait, nevermind. 07:45:11 -!- madbr has quit (Read error: Connection reset by peer). 07:45:27 -!- cheater has joined. 07:45:27 -!- cheater has quit (Excess Flood). 07:45:43 -!- itidus21 has changed nick to itidus20. 07:53:34 I still need a name for my esoteric markup langauge 07:54:00 Boxen? 07:54:12 -!- madbr has joined. 07:56:32 -!- madbr has quit (Read error: Connection reset by peer). 07:58:18 lament: yes, the class of always-terminating languages is missing from there 07:58:58 also, while important theoretically, the Chomsky hierarchy of languages is by no means the only, or even the most important, classification criterion. 08:00:37 -!- cheater has joined. 08:02:32 -!- madbr has joined. 08:04:48 -!- madbr has quit (Read error: Connection reset by peer). 08:12:46 -!- madbr has joined. 08:15:04 -!- madbr has quit (Read error: Connection reset by peer). 08:16:31 -!- FireFly has joined. 08:16:50 -!- lament has quit (Read error: Operation timed out). 08:16:52 -!- Taneb has quit (Ping timeout: 252 seconds). 08:23:06 -!- madbr has joined. 08:25:26 -!- madbr has quit (Read error: Connection reset by peer). 08:26:27 -!- monqy has quit (Quit: hello). 08:33:14 -!- madbr has joined. 08:35:23 -!- madbr has quit (Read error: Connection reset by peer). 08:41:35 -!- madbr has joined. 08:43:42 -!- madbr has quit (Read error: Connection reset by peer). 08:49:55 -!- madbr has joined. 08:52:06 -!- madbr has quit (Read error: Connection reset by peer). 08:58:19 -!- madbr has joined. 09:00:26 -!- madbr has quit (Read error: Connection reset by peer). 09:06:47 -!- madbr has joined. 09:08:56 -!- madbr has quit (Read error: Connection reset by peer). 09:15:09 -!- madbr has joined. 09:17:20 -!- madbr has quit (Read error: Connection reset by peer). 09:23:28 -!- madbr has joined. 09:25:50 -!- madbr has quit (Read error: Connection reset by peer). 09:33:34 -!- madbr has joined. 09:35:50 -!- madbr has quit (Read error: Connection reset by peer). 09:41:55 -!- madbr has joined. 09:44:22 -!- madbr has quit (Read error: Connection reset by peer). 09:50:16 -!- madbr has joined. 09:52:23 -!- madbr has quit (Read error: Connection reset by peer). 09:58:36 -!- madbr has joined. 10:00:30 -!- madbr has quit (Read error: Connection reset by peer). 10:06:54 -!- Patashu has joined. 10:06:56 -!- madbr has joined. 10:07:19 another ddr video! http://www.youtube.com/watch?v=yueZ1Dsm9JI \o/ 10:09:18 -!- madbr has quit (Read error: Connection reset by peer). 10:09:36 -!- CakeProphet has joined. 10:15:48 -!- madbr has joined. 10:17:55 -!- madbr has quit (Read error: Connection reset by peer). 10:24:06 -!- madbr has joined. 10:26:22 -!- madbr has quit (Read error: Connection reset by peer). 10:32:28 -!- madbr has joined. 10:34:35 -!- madbr has quit (Read error: Connection reset by peer). 10:40:48 -!- madbr has joined. 10:42:59 -!- madbr has quit (Read error: Connection reset by peer). 10:49:09 -!- madbr has joined. 10:51:27 -!- madbr has quit (Read error: Connection reset by peer). 10:57:29 -!- madbr has joined. 10:59:42 -!- madbr has quit (Read error: Connection reset by peer). 11:07:42 -!- madbr has joined. 11:09:55 -!- Nisstyre has quit (Ping timeout: 255 seconds). 11:09:55 -!- madbr has quit (Read error: Connection reset by peer). 11:11:19 -!- Nisstyre has joined. 11:16:02 -!- madbr has joined. 11:18:17 -!- madbr has quit (Read error: Connection reset by peer). 11:24:23 -!- madbr has joined. 11:26:29 -!- madbr has quit (Read error: Connection reset by peer). 11:32:43 -!- madbr has joined. 11:35:01 -!- madbr has quit (Read error: Connection reset by peer). 11:40:58 -!- cheater has quit (Ping timeout: 255 seconds). 11:42:50 -!- madbr has joined. 11:45:03 -!- madbr has quit (Read error: Connection reset by peer). 11:51:11 -!- madbr has joined. 11:53:15 -!- madbr has quit (Read error: Connection reset by peer). 11:59:34 -!- madbr has joined. 12:01:58 -!- madbr has quit (Read error: Connection reset by peer). 12:02:02 -!- azaq23 has joined. 12:07:56 -!- madbr has joined. 12:09:57 -!- madbr has quit (Read error: Connection reset by peer). 12:11:12 -!- boily has joined. 12:16:16 -!- madbr has joined. 12:18:22 -!- madbr has quit (Read error: Connection reset by peer). 12:24:36 -!- madbr has joined. 12:26:52 -!- madbr has quit (Read error: Connection reset by peer). 12:34:56 -!- madbr has joined. 12:37:05 -!- madbr has quit (Read error: Connection reset by peer). 12:42:14 -!- TeruFSX has joined. 12:43:27 -!- madbr has joined. 12:43:43 -!- pikhq_ has quit (Ping timeout: 240 seconds). 12:43:49 -!- pikhq has joined. 12:46:02 -!- madbr has quit (Read error: Connection reset by peer). 12:52:09 -!- madbr has joined. 12:54:27 -!- madbr has quit (Read error: Connection reset by peer). 13:00:33 -!- madbr has joined. 13:02:55 -!- madbr has quit (Read error: Connection reset by peer). 13:08:56 -!- madbr has joined. 13:09:30 -!- TeruFSX has quit (Ping timeout: 252 seconds). 13:10:57 -!- madbr has quit (Read error: Connection reset by peer). 13:17:51 -!- madbr has joined. 13:19:31 -!- madbr has quit (Read error: Connection reset by peer). 13:27:59 -!- madbr has joined. 13:30:10 -!- madbr has quit (Read error: Connection reset by peer). 13:36:20 -!- madbr has joined. 13:38:36 -!- madbr has quit (Read error: Connection reset by peer). 13:44:40 -!- madbr has joined. 13:46:52 -!- madbr has quit (Read error: Connection reset by peer). 13:54:46 -!- madbr has joined. 13:56:51 -!- Taneb has joined. 13:56:52 -!- madbr has quit (Read error: Connection reset by peer). 13:56:56 Hello 14:02:59 -!- Patashu has quit (Quit: MSN: Patashu@hotmail.com , Gmail: Patashu0@gmail.com , AIM: Patashu0 , YIM: patashu2 .). 14:04:55 -!- madbr has joined. 14:05:09 What's an unimplemented esolang deserving implemenation 14:05:11 ? 14:07:04 -!- madbr has quit (Read error: Connection reset by peer). 14:09:02 Just do Category:Unimplemented in alphabetical order. 14:09:11 For the common good. 14:11:07 Good idea! 14:11:20 0x29c! 14:15:16 -!- madbr has joined. 14:21:18 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 14:23:55 -!- madbr has quit (Read error: Connection reset by peer). 14:28:51 -!- Taneb has quit (Ping timeout: 260 seconds). 14:30:31 -!- Phantom_Hoover has joined. 14:30:35 INTERNET 14:30:35 Phantom_Hoover: You have 7 new messages. '/msg lambdabot @messages' to read them. 14:31:04 -!- madbr has joined. 14:31:10 -!- oerjan has joined. 14:32:18 -!- BeholdMyGlory has quit (Remote host closed the connection). 14:32:19 -!- madbr has quit (Read error: Connection reset by peer). 14:37:32 -!- Slereah has quit. 14:38:06 -!- Taneb has joined. 14:39:31 -!- madbr has joined. 14:42:58 -!- madbr has quit (Read error: Connection reset by peer). 14:47:28 -!- copumpkin has joined. 14:49:24 -!- cheater has joined. 14:51:57 -!- madbr has joined. 14:59:57 -!- cheater has quit (Ping timeout: 250 seconds). 15:01:32 -!- madbr has quit (Read error: Connection reset by peer). 15:04:40 -!- lament has joined. 15:05:51 -!- cheater has joined. 15:06:22 -!- MSleep has changed nick to MDude. 15:10:13 -!- cheater has quit (Ping timeout: 255 seconds). 15:10:14 -!- madbr has joined. 15:11:16 -!- cheater has joined. 15:12:19 -!- madbr has quit (Read error: Connection reset by peer). 15:14:52 "EDIT: Thanks to everyone who wrote with an explanation, especially the electronics engineers. I now have about 11 different plausible explanations for this behaviour. Only 3 of which involve actual time warps. :-) 15:14:56 " 15:15:54 (on yesterday's iwc annotation) 15:16:17 Oh DMM 15:16:29 Today's annotation is pretty funny 15:17:21 however, it may be assumed that hordes are attracted to hoards. 15:17:37 There is little data on the reverse 15:17:55 ah. 15:18:18 well i'm sure genghis khan got plenty of tribute 15:18:44 True, that 15:19:39 -!- madbr has joined. 15:19:53 -!- cheater has quit (Ping timeout: 250 seconds). 15:21:46 interestingly, that edit above could have fit just as well in CoAP. where it seems to me DMM is making a much larger fraction of the posts than he used to... 15:22:33 I put events from my life into CoAP, what's saying DMM doesn't? 15:22:39 heh 15:22:53 Today's CoAP is a DMM work! 15:23:59 ...let's hope it's not based on a real life event. 15:24:42 Actually, DMM and the comic irregulars do a lot at work that isn't necassarily work 15:24:50 Such as writing Darths and Droids 15:25:13 yes, but at least they _claim_ to do it during lunch hour 15:25:45 And making the CiSRA puzzles 15:25:54 Which is backed by Canon, so it may be work 15:25:59 yes, but that might be something ... right 15:26:58 i just have this image of DMM being the world's best time planner. 15:27:30 He is a time ninja 15:27:53 CoAP? 15:28:00 comments on a postcard 15:28:01 Comments on a Postcard 15:28:05 Oh, that one. 15:28:14 *CoaP in that case, but whatever. 15:28:37 * oerjan is busted 15:28:40 He is a time ninja 15:28:48 This is the real reason his clock is running slow. 15:30:12 this reminds me of someone mentioning that one of tvtropes' memes is wild mass guessing "* is a time lord". i wonder if someone put it on a DMM related page... 15:30:12 -!- madbr has quit (Read error: Connection reset by peer). 15:30:47 oerjan, I have a suspicion that it'll be part of a crackdown at some point. 15:30:58 Given TV Tropes' recent swerves towards awfulness. 15:31:50 google doesn't find either "DMM is a time lord" or "David Morgan-Mar is a time lord", anyway 15:32:07 You know your duty. 15:32:38 Speaking of the CiSRA puzzles, anyone want to form a team 15:32:48 i avoid my duties by carefully never registering to anything new 15:34:08 I've got a few of the answers in 1D 15:34:46 6 is Iguanas in Pyjamas, 7 is Seal or no Seal, 9 is Harry Otter, 14 is Swan with the Wind 15:37:10 -!- madbr has joined. 15:38:50 -!- cheater has joined. 15:38:50 -!- madbr has quit (Read error: Connection reset by peer). 15:47:31 -!- madbr has joined. 15:49:56 -!- madbr has quit (Read error: Connection reset by peer). 15:56:11 -!- madbr has joined. 15:58:17 -!- madbr has quit (Read error: Connection reset by peer). 16:05:28 -!- madbr has joined. 16:06:52 -!- Taneb has quit (Ping timeout: 260 seconds). 16:06:52 -!- madbr has quit (Read error: Connection reset by peer). 16:08:43 -!- cheater has quit (Ping timeout: 255 seconds). 16:09:05 -!- cheater has joined. 16:10:43 -!- monqy has joined. 16:13:47 -!- madbr has joined. 16:15:27 -!- madbr has quit (Read error: Connection reset by peer). 16:18:23 -!- Taneb has joined. 16:19:29 -!- lament has quit (Ping timeout: 258 seconds). 16:23:03 -!- pumpkin has joined. 16:23:16 -!- madbr has joined. 16:24:56 -!- copumpkin has quit (Ping timeout: 246 seconds). 16:28:05 http://www.reddit.com/r/math/comments/j297s/if_g_o_f_is_surjective_why_doesnt_g_need_to_be/ 16:28:11 I can make head nor tail of this question. 16:30:46 -!- cheater has quit (Ping timeout: 255 seconds). 16:30:46 -!- madbr has quit (Read error: Connection reset by peer). 16:32:47 aibohphobia 16:32:52 The fear of palindromes 16:35:11 he should have used notation more suitable for ascii 16:36:56 -!- madbr has joined. 16:38:19 well the title has g and f switched, anyway 16:38:38 Yes. 16:38:54 because if g o f is surjective, then g definitely is. 16:39:45 But the answers confuse me even more, because none of them are the obvious reply. 16:41:21 -!- madbr has quit (Read error: Connection reset by peer). 16:41:27 -!- ais523 has joined. 16:41:52 well it's obvious from the actual question that he meant to ask about f o g, in which case g doesn't need to be surjective. 16:42:19 -!- pumpkin has changed nick to copumpkin. 16:42:41 oerjan, yeah, but the answers to *that* make no sensee. 16:42:44 *sense 16:43:56 -!- TeruFSX has joined. 16:45:48 frozenzephyr's answer looks clear enough... 16:48:26 -!- madbr has joined. 16:49:19 Oh, yes. 16:50:57 -!- madbr has quit (Read error: Connection reset by peer). 16:52:49 -!- cheater has joined. 16:56:21 -!- BeholdMyGlory has joined. 16:57:37 -!- madbr has joined. 17:00:01 -!- madbr has quit (Read error: Connection reset by peer). 17:01:54 -!- Behold has joined. 17:02:16 -!- BeholdMyGlory has quit (Ping timeout: 255 seconds). 17:02:33 -!- Behold has changed nick to BeholdMyGlory. 17:07:13 -!- cheater has quit (Ping timeout: 255 seconds). 17:07:42 -!- cheater has joined. 17:07:55 -!- madbr has joined. 17:09:59 -!- madbr has quit (Read error: Connection reset by peer). 17:12:37 -!- cheater has quit (Ping timeout: 255 seconds). 17:16:39 -!- madbr has joined. 17:19:02 -!- madbr has quit (Read error: Connection reset by peer). 17:19:06 http://www.bay12forums.com/smf/index.php?topic=56305.0 17:19:12 Oh my god this is amazing. 17:19:15 Bay 12? 17:19:22 DF. 17:19:24 That sounds like Dwarf Fortress 17:20:50 -!- TeruFSX has quit (Ping timeout: 264 seconds). 17:20:59 It is. 17:21:21 Dwarf Fortress science seems to be along the lines of "how can we trick the game into letting us do X implausible thing?" 17:21:47 If real-world science was like that I would be happy. 17:22:12 If real world science was like that, everyone would be a scientist 17:22:14 Although it's engineering, not science. 17:23:51 well, it's science if you don't know what the rules are, and engineering if you do 17:25:00 Yeah, and this is a kind of blend of the two, I suppose. 17:25:01 -!- madbr has joined. 17:25:08 "Okay, class, today we'll be making a perpetual motion engine! Urist McStudent, you grab a pickaxe and dig a channel to this pattern, Solon McPupil, you start filling those buckets with water" 17:25:31 -!- cheater has joined. 17:25:34 They know the rules pretty well, but not the exact particulars relevant to the problem. 17:25:55 It's SCIENCE is more fun to say than It's ENGINEERING 17:26:29 I base all my desicions on what is more fun to say 17:27:02 http://df.magmawiki.com/index.php/DF2010:Tower-cap 17:27:15 Taneb, that 'fun' in the DF sense? 17:27:30 Almost. 17:27:34 " The concept of things smaller than monarch butterflies, however, has led to enormous controversy. Although, obviously, it would be hard to see something smaller than a butterfly, it should be possible to show that it exists because, just like butterflies, it would sometimes get stuck in doors and prevent them from closing." 17:28:11 (For those who forgot or are scum and haven't read Boatmurdered, the fall of Boatmurdered was largely due to a butterfly jamming a crucial door.) 17:28:45 I have read Boatmurdered, but I forgot 17:28:52 me too 17:28:58 I thought the fall of Boatmurdered was largely due to people deliberately trying to kill it, though 17:28:58 I couldn't get into Boutmurdered 17:29:15 ...I've just had an idea 17:29:43 Us lot, doing a bloodline game! 17:29:43 ais523, well, ISTR that the disaster that brought it to its knees and final tantrum spiral was that the main doors weren't closed in time after the lava flood was triggered. 17:29:56 Taneb, regrettably, neither me nor ais have played DF. 17:29:58 most of us don't play DF 17:30:10 Even. Better. 17:30:15 Lymee has, but I wouldn't let Lymee near anything I wanted to survive for more than twenty seconds. 17:30:19 -!- cheater has quit (Ping timeout: 250 seconds). 17:30:27 Taneb, can it wait until next Monday? 17:30:35 Probably 17:30:55 on a PC, I tend to only (although not exclusively) play open-source games 17:30:55 Lymee has, but I wouldn't let Lymee near anything I wanted to survive for more than twenty seconds. 17:30:58 Even better 17:31:01 the ones that aren't, I've generally paid money for 17:31:11 Phantom_Hoover, is that so? 17:31:21 although a couple came free with packets of breakfast cereal 17:31:22 You can pay money for Dwarf Fortress if you reeeaaally want to 17:31:28 Would you like to see what I do if I want a fortress dead? 17:31:32 Lymee, THE PAIN OF ELLIOTT'S RUTIAN TEST SERVER STILL STABS AT MY HEART 17:31:51 THE SPIDERS, OH GOD, THE SPIDERS 17:31:58 Or you can put it on a memory stick and put it in your cereal box 17:32:49 heh 17:32:58 just because it's happened so far, doesn't mean it'll always happen in future 17:34:03 -!- madbr has quit (Read error: Connection reset by peer). 17:36:23 Lymee, also, killing a fortress... isn't the hardest thing. 17:36:55 Actually, a good way to make a fort invasion-proof is to make the entrance be a "magma elevator", a 1-tile shaft filled with magma, that is kept from falling all the way down by a set of pumps. Since dwarves are not subject to temperature while falling, as it was proved on the Last Stand thread, your dorfs would fall through several levels of magma unharmed, while any flying foe that attempted to do the same would be burned to a crisp 17:36:56 instantly. 17:37:21 I once tried to make an indoor fishing place. It worked. 17:37:27 Until it didn't. 17:37:59 Ended having a river flooding into my fortress 17:38:51 brb 17:41:15 -!- madbr has joined. 17:43:39 -!- madbr has quit (Read error: Connection reset by peer). 17:44:05 -!- cheater has joined. 17:44:50 When I tried to play DF I just ended up tripping over my own perfectionism. 17:47:18 * Sgeo_ is undecided whether to return his new Nook Touch and wait to see what the new Kindle will be like, or to get a Sony, or what 17:49:08 I think you want neither of all those things 17:49:35 -!- madbr has joined. 17:49:35 Sgeo_, the origin of suffering is desire for e-book readers. 17:49:58 -!- cheater has quit (Ping timeout: 255 seconds). 17:50:09 Sgeo_: can I persuade you to mindlessly boycott Sony without telling you why? 17:50:19 ais523, no. 17:50:27 hmm, I was just wondering 17:50:30 Well, you might be able to, but I don't see how 17:50:38 And if I knew about it, I'd stop 17:50:50 Sgeo_, if you don't boycott Sony, ais523 will find you and hit you. 17:51:16 ais523, may I ask why you'd want me to boycott Sony? 17:51:26 Sgeo_: sure, it's IRC, you can ask anything 17:51:31 but I didn't say I wanted you to boycott Sony 17:51:42 I just said I wondered whether I could persuade you to 17:52:21 I think I may be too easily persuadable 17:52:34 Persuaded to get a Nook :/ 17:53:15 Although most of my issues are things that could in theory be fixed in updates 17:53:21 s/most/all/ 17:54:48 the screaming of the damned will be greatly reduced in the next version 17:55:04 also the head of hitler 17:55:15 they've got a workaround for that already 17:55:52 yeah they'll just keep the brain in a jar. although it's said someone at canon may have a patent on that. 17:57:37 i have a couple of ebook readers...kindle for android, something kindle-like for ipod, calibre's built-in reader... 17:57:37 -!- madbr has quit (Read error: Connection reset by peer). 17:57:49 these all have all the things i'm looking for in a reader 17:57:54 aka "free" 17:58:17 -!- Taneb has quit (Ping timeout: 260 seconds). 17:58:19 quintopia, is 'working' not another? 17:59:01 well i could hardly call them readers did they not display text in a readable form, could i? 18:00:20 On some level, perhaps. 18:01:20 -!- Taneb has joined. 18:01:25 they work and i did not pay for them. i am satisfied. 18:02:42 -!- cheater has joined. 18:02:47 someday when i have disposable income, and e-ink is true color and fast, i'll consider getting something with that 18:04:29 -!- madbr has joined. 18:04:58 imagine an e-ink laptop that is front-lit by a single led in the keyboard base. 18:05:12 that thing would use so little power if done right 18:06:35 Imagine an unlit e-ink laptop, and one of those "shake and it produces enough energy for the LED" flashlights that you hold with the other hand. That thing would be so user-friendly, it's not even a thing. 18:06:36 -!- madbr has quit (Read error: Connection reset by peer). 18:07:24 fizzie, well, your average redditor wouldn't have a problem with the hand movement. 18:07:53 -!- TeruFSX has joined. 18:08:51 *chirp* 18:09:55 * ais523 chirps in real life 18:10:06 charp 18:10:08 I actually got quite good at doing chirps, and I'm not entirely sure why 18:10:11 ais523, ah, you are a giant insect. 18:10:19 cherp 18:10:24 THAT EXPLAINS THE BEARD 18:10:32 wait i thought Gregor was the giant insect 18:10:52 oerjan, antisemite. 18:11:21 no, dung beetle 18:11:34 -!- cheater has quit (Ping timeout: 255 seconds). 18:11:54 hard to tell the difference, i know 18:12:46 -!- cheater has joined. 18:13:32 -!- madbr has joined. 18:15:58 -!- madbr has quit (Read error: Connection reset by peer). 18:19:15 O HI 18:19:40 -!- Phantom_Hoover has quit (Ping timeout: 255 seconds). 18:21:53 -!- madbr has joined. 18:23:11 -!- angstrom has joined. 18:23:12 -!- madbr has quit (Read error: Connection reset by peer). 18:23:24 * oerjan spots someone tiny 18:23:35 :-> 18:26:01 -!- cheater_ has joined. 18:27:57 -!- cheater has quit (Ping timeout: 250 seconds). 18:32:08 -!- madbr has joined. 18:34:26 -!- madbr has quit (Read error: Connection reset by peer). 18:37:37 -!- TeruFSX has quit (Ping timeout: 276 seconds). 18:40:29 -!- madbr has joined. 18:41:16 -!- cheater_ has quit (Ping timeout: 255 seconds). 18:45:01 -!- madbr has quit (Read error: Connection reset by peer). 18:51:10 -!- madbr has joined. 18:53:26 -!- madbr has quit (Read error: Connection reset by peer). 18:54:56 -!- MigoMipo has joined. 19:01:17 -!- madbr has joined. 19:01:25 -!- cheater has joined. 19:02:26 -!- madbr has quit (Read error: Connection reset by peer). 19:05:57 -!- cheater_ has joined. 19:06:01 -!- cheater has quit (Ping timeout: 255 seconds). 19:09:44 -!- madbr has joined. 19:10:31 -!- cheater_ has quit (Ping timeout: 255 seconds). 19:12:04 -!- madbr has quit (Read error: Connection reset by peer). 19:15:45 I'm still reading that DF submarine thread 19:16:00 it got even better at the point where someone suggested making a submarine intended for working under magma out of ice 19:18:51 -!- madbr has joined. 19:21:03 -!- madbr has quit (Read error: Connection reset by peer). 19:22:53 -!- zzo38 has joined. 19:23:25 -!- cheater_ has joined. 19:27:46 -!- madbr has joined. 19:29:53 -!- madbr has quit (Read error: Connection reset by peer). 19:34:01 ais523: could a DF submarine be powered and directed? 19:34:27 quintopia: at the point in the thread I've reached, they haven't got them to work at all yet 19:34:34 they tend to act in ways that defy physics 19:35:22 DF? 19:35:42 -!- Taneb has quit (Ping timeout: 260 seconds). 19:36:01 dwarf fortres 19:36:03 *fortress 19:36:44 -!- sebbu2 has joined. 19:36:49 ah. not my metier 19:38:37 -!- madbr has joined. 19:38:54 -!- sebbu has quit (Ping timeout: 252 seconds). 19:40:18 -!- madbr has quit (Read error: Connection reset by peer). 19:41:30 -!- derrik has joined. 19:47:16 -!- madbr has joined. 19:49:21 -!- madbr has quit (Read error: Connection reset by peer). 19:50:07 ais523, if someone were to make a haskell based dsl for describing FPGA programs, would the clock skew through a circuit belong in the function type? 19:50:42 measuring clock skew at all is probably the wrong level of abstraction 19:51:05 why is it? 19:51:21 because it depends on the physical dimensions of the chip 19:51:40 that's not wayward 19:53:17 -!- KingOfKarlsruhe has joined. 19:58:21 -!- madbr has joined. 20:00:47 -!- madbr has quit (Read error: Connection reset by peer). 20:06:02 -!- boily has quit (Ping timeout: 260 seconds). 20:08:40 -!- madbr has joined. 20:11:01 -!- madbr has quit (Read error: Connection reset by peer). 20:16:59 -!- madbr has joined. 20:19:29 -!- madbr has quit (Read error: Connection reset by peer). 20:22:05 -!- BeholdMyGlory has quit (Remote host closed the connection). 20:25:16 -!- madbr has joined. 20:26:44 -!- madbr has quit (Read error: Connection reset by peer). 20:35:33 -!- madbr has joined. 20:37:41 -!- madbr has quit (Read error: Connection reset by peer). 20:38:38 I made many improvements to the program for typesetting Bird style Haskell programs. Currently this is still the non-prettyprinting version. (If I make prettyprinting, it will be a separate file) 20:39:27 It doesn't work if you have an outer control sequence at the beginning of a paragraph, but now it makes \bye to be not outer. 20:41:54 The updated file is: http://sprunge.us/YZfh 20:43:11 Why has more than once the list of ideas being replaced by 'This is a list of ideas of programming languages and other stuff. * Magic The Gathering card deck of Brainfuck'? 20:43:34 zzo38: confused spambot 20:43:53 -!- madbr has joined. 20:46:19 -!- madbr has quit (Read error: Connection reset by peer). 20:52:02 -!- myndzi has joined. 20:53:26 -!- madbr has joined. 20:55:29 -!- madbr has quit (Read error: Connection reset by peer). 21:01:49 -!- madbr has joined. 21:04:05 -!- madbr has quit (Read error: Connection reset by peer). 21:06:33 -!- evincar has joined. 21:07:49 -!- Adaria has joined. 21:07:56 * Adaria waves. 21:08:22 * ais523 waves back 21:08:44 Seems quiet in here. 21:09:09 it depends on the time of day 21:09:13 most of the most active people aren't here right now 21:09:16 It is 21:09:37 Lots of people but not much going on, wish people wouldn't just idle like that. 21:09:51 Makes it seem more is here than there is. 21:09:52 idling's usual so that conversations get a chance to get started 21:09:59 if a conversation starts, then people have a chance to join in 21:10:09 -!- madbr has joined. 21:10:12 if people leave as soon as there isn't a conversation, then it won't get started at all 21:10:24 I assume you're new to IRC? 21:12:03 Gah one thing about the client I use can't go back and see things I missed. Bah. 21:12:03 -!- madbr has quit (Read error: Connection reset by peer). 21:12:35 If I missit the first time it's gone. Meh, screen reader. 21:13:00 that sounds like the shittiest client ever 21:13:34 it sounds like Vorpal's client 21:13:58 -!- Taneb has joined. 21:14:06 miranda, eh 21:14:07 Well it's not the client as much as it is the fact I can't see it. Have the same issue with mIRC. Screen reader and all, can't find one that is more accessible with them. Chatting in a normal window is fine but for some reason chat window like this doesn't let me tab to the output like it should. 21:14:12 Hello! 21:14:44 you could look at the logs. 21:15:06 oh, I see, it's an accessibility problem 21:15:06 I don't think this one makes them and if it does not sure where... But good itea there. 21:15:14 unfortunately, most programs are really bad about that 21:15:15 Exactly. 21:15:17 Adaria: this may help: http://forums.miranda-im.org/showthread.php?24751-How-to-define-scrollback 21:15:20 this channel is publicly logged. 21:15:24 link in the topic 21:15:36 and you can ask the client to repeat the topic to you by writing /topic 21:15:50 what screen reader? 21:16:39 -!- derrik has left. 21:18:44 -!- madbr has joined. 21:19:15 It's been awhile since I've hung out on here, but I'm too lazy to check the logs. :P 21:20:51 -!- madbr has quit (Read error: Connection reset by peer). 21:21:48 OK there, set up logging, should help. 21:22:11 In some cases scrollback might not be a feature of the client, it will be feature of the terminal emulator 21:23:31 zzo38: most people don't use clients that work like that 21:23:45 * oerjan recalls ircII did 21:23:56 It depends whether or not it uses graphical user interface 21:25:28 Scrolling back works fine in PM and IM windows using MirandaIM but chat windows act differently apparently. It's not a huge deal now that I got logging on. 21:26:10 what screen reader do you use 21:26:52 Found two "accessible" IRC clients, IMC and NightOwl but the latter has a runtime error and the former the link is broken to download. I may have better luck on my main PC using mIRC and TIRC scripts for jaws, I am on my netbook at the moment using NVDA, no scripts for it yet. 21:27:58 -!- madbr has joined. 21:29:50 -!- madbr has quit (Read error: Connection reset by peer). 21:29:56 So, this room had a cunfusing room desc on it, what usually goes on in here? 21:30:10 The name makes sense but the desc did not. 21:30:23 That's pretty much it. 21:30:25 mirc with jaws appears to be the only solution around 21:30:33 Officially, we discuss esoteric programming languages 21:30:35 we do things here related to computing mostly 21:30:41 It's usually related to programming, but we're not picky. 21:31:01 The other day, we discussed chess variant markup languages 21:31:04 Ah ok, esoteric to me was not tech related heh. Ah well. 21:31:11 it's a common mistake 21:31:19 unfortunately, we're not entirely sure where you should go instead 21:31:23 Stay and have fun! 21:31:25 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]). 21:31:28 This server has SO many rooms though it's insane. 21:31:36 but if you find out, let us know so we can send other people there for you to talk to 21:31:52 Freenode's mostly a programming (specifically open source) network 21:32:02 so more or less everything here is tech related 21:32:06 one way or another 21:32:51 That's fine, I am not a tech minded ... well ok I am but I know zip about languages, I'm more of a play with hardware and new tech toys than software bit. 21:33:29 If there is some new tech out there that seems interesting to me, I wanna play with it. 21:33:31 you might consider a different network then. 21:33:47 Nah, we could use a hardware guy. 21:33:50 I think 21:33:57 or girl 21:34:10 There are six thousand chans on freenode, I'm sure I'll find something. 21:34:13 Guy is gender neutral to me 21:34:20 cool 21:34:26 again 21:34:28 let us know 21:35:23 Female here but I use guy as androgenous too. 21:36:16 Adaria: So are you visually impaired, or do you just feel like using a screen reader? 21:36:22 Or I guess unisex would be the proper word, meh whatever, it works for both. 21:36:28 evincar: heh, in most channels, there wouldn't even be a need to ask 21:36:33 here, that's actually a plausible question 21:36:38 -!- madbr has joined. 21:36:48 ais523: I know, right. :P 21:36:55 Imagine an adrogenous specific pronoun 21:37:02 "it"? 21:37:11 Completely blind here. 21:37:31 To me, "it" is that's more of non-human 21:38:42 Completely blind? 21:38:42 -!- madbr has quit (Read error: Connection reset by peer). 21:38:54 I've never met anyone who's been completely blind before 21:39:28 I've met a blind person, worked as a programmer 21:39:30 May be getting an IRC client for my phone. iPhone, some love it, others hate it but to me it is truly a lifeline. 21:39:52 I know someone who can only read things within about 2cm of their eyes 21:40:00 watching them reading is bizarre 21:40:29 -!- elliott_ has joined. 21:40:33 That person needs glasses, methinks 21:40:57 I don't think that's the problem, or it'd have been fixed like that already 21:40:57 I went blind last year, well lost my good eye, other was blind already. I could never be a programmer, it would fry my brain, I have great reading comprehension and hands on with science stuff but programming languages are just as hard for me as math. 21:41:03 Taneb: I think glasses aren't likely to be able to help much if you see that badly from the start 21:41:03 even shortsightedness isn't that shortsighted 21:41:19 ais523: ping 21:41:26 elliott_: pong 21:41:29 Shortsightedness can vary a lot 21:41:31 ah good, I'm connected 21:41:31 that was an unexpected ping 21:41:32 * oerjan met a blind mathematician once 21:41:35 as I'd talked about a minute ago 21:41:44 you could have /ctcp pinged yourself 21:41:54 that bounces off the server twice, so it's a good way to check connectedness 21:42:04 I'm mildly short-sighted, I use my glasses to watch TV and in lessons, but otherwise I'm fine 21:42:22 Wheras my dad has more extreme short-sightedness 21:42:29 If they can't read but that close they might want to try braille. Even though tech is making braille seem so non essential, there really is nothing like being able to read yourself in your own head so to speak. 21:42:42 ais523: I had thoughts wrt the @ pointer thing. 21:43:03 To the point when I tried on his glasses the only thing I could focus on was about a mile away 21:43:06 also hi Adaria 21:43:15 elliott_: I had thoughts with respect to @ too 21:43:23 I get sick of trying to 'read' my own writing in stories and the screen reader just kills the tone that I might otherwise be able to put into it if I could read it myself. 21:43:25 I concluded a lot of interesting things, which are probably mutually contradictory 21:43:28 ais523: oh dear; you first, please tell me they don't involve Feather 21:43:28 Adaria: I talked a bit with a blind programmer once. I don't recall if he was born sighted, but I gathered it was a real challenge to hold everything in his head at once, especially with all of the screen-reader noise from punctuation. 21:43:48 elliott_: they don't 21:43:50 i imagine blind programming is a bit like using ed 21:43:53 but it's almost as brainfrying, but for different reasons 21:43:58 without any commands to print multiple lines at once 21:44:38 ais523: the good news with my thoughts is that, I think I have a pointer-passing capability model that works across networks with no need to have computer-to-computer communication different from intra-computer communication 21:44:44 but, you first 21:45:18 hmm, I'm in the middle of a bunch of things at the moment, also I was half-asleep and can't quite remember 21:45:33 :( 21:45:34 okay then 21:45:40 ais523: I'll wait to tell mine too then 21:45:43 but one was that what's possible in the language should match what's possible in the actual real word 21:45:44 *world 21:45:57 like? 21:45:57 OK gonna go get food. I'll beback later on. 21:46:01 Bye 21:46:16 Turing complete languages are impossible in the real world 21:46:20 like it's possible that information currently on another machine will be inaccessible, and that another machine might not cooperate if you tell it to do something 21:46:37 so the language should be able to understand that concept, in terms of exceptions or via some other method 21:46:49 -!- MigoMipo_ has joined. 21:47:26 ais523: well, yes, I already had plans for that, but I think my new model makes it easier 21:47:29 ais523: Please, monads, not exceptions. I like locality. :P 21:47:38 -!- madbr has joined. 21:47:42 evincar: um "monad" means nothing here 21:47:46 a specific monad might have some meaning 21:47:48 evincar: I'm not making assumptions about what the language feature /is/, just that it exists 21:47:53 speaking of being unable to real world turing complete, I was just reading the bitbitjump talk page. that was crazy. 21:47:53 Either, for instance, or ErrorT 21:48:09 elliott_: another thing was, that for your capabilities, you don't want to be passing references to objects themselves 21:48:12 ElliottT 21:48:14 evincar: "Monad" only makes sense in languages with particular forms of typing. 21:48:16 but references to closures that operate on those objects 21:48:21 elliott_: Monadic error handling. I'd rather be concise and understandable than pedantically correct. :P 21:48:43 except it wasn't understandcable ;_): 21:48:48 e.g. if you pass a reference to that logically means "anyone with the reference can do anything to that object on my computer, even if my computer's turned off" 21:48:53 evincar: well, that is just exceptions 21:48:57 which doesn't make sense, so that operation should be physically impossible 21:48:59 evincar: "Monad" only makes sense in languages with particular forms of typing. 21:48:59 nah 21:49:14 instead, you can pass a closure that looks into a lookup table on your own computer and then operates on the object 21:49:18 they're just less visible in less powerful languages 21:49:22 that way, you can do the equivalent of deleting an object if you change the lookup table 21:49:26 elliott_: In any case, I like explicit handling rather than implicit propagation. 21:49:36 That's what I was getting at. 21:49:41 another thing I noticed is that for practical use, it would make sense to have something that keeps around references to things, and can search and return them 21:49:48 evincar: it's not really monadic then, it's just returning Either 21:49:54 elliott_: Actually. ... Yeah, I think you could pull it off in C, so. :P 21:49:56 but that's a monad too, that gives you implicit propagation 21:50:01 -!- MigoMipo has quit (Ping timeout: 250 seconds). 21:50:02 so that if you're not using an object, just wanting to save it for later use, you can just leave one reference to it in that 21:50:11 I think that's the @-y equivalent of a filesystem 21:50:12 ais523: well, all that means is that pointers may take a long time to dereference; generalisation: an infinite time; generalisation: dereferencing a pointer may result in _|_; i.e. it can error out too 21:50:19 I like this channel. I pretty much need to have to wikis open just to have a clue what's going on 21:50:26 ais523: Anyway, my method solves this, I think 21:50:31 Makes a change from IRL 21:50:41 Where everyone expects me to know everything 21:50:53 What's a monad? 21:50:54 elliott_: Not at all. Saying "this function returns either a value or an error" is very different from saying "this function either returns a value or yields an error". 21:51:10 evincar: 21:51:14 They propagate by different means, and one is more explicit than t'other. 21:51:19 foo a = do x <- bar a; y <- quux x; return y 21:51:25 Taneb: I think a monad is something in Haskell 21:51:27 abc a b = do x <- foo a; y <- quux a; return (x+y) 21:51:40 evincar: these both return Either SomeError Integer 21:51:48 evincar: note how abc's code looks just like exception-using code 21:51:53 and the errors explicitly propagate to its return 21:52:12 (Either SomeError String) is an explicit error-tagged return type 21:52:20 Taneb: Simple answer: a monad is a type with functions "(<<=) :: (Monad m) => m a -> (a -> m b) -> m b" and "return :: (Monad m) => a -> m a". 21:52:20 And (Either SomeError) is a monad 21:52:25 pikhq: >>= 21:52:30 evincar: But what the monad provides is /implicit/ error propagation 21:52:31 elliott_: Thanks. Thinko. 21:52:33 Just like exceptions 21:52:38 In fact, this model is identical to checked exceptions 21:52:57 elliott_: Only via implicit typing, unless I'm mistaken? 21:53:02 ? 21:53:10 What do you mean by implicit typing and how is it related here? 21:53:34 Basically, monadic error handling doesn't make error handling explicit; it does the opposite, it lets you use an explicit "error or result" type as if it were implicit, by abstracting the transformation of results monadically. 21:53:42 You still have to note what errors you produce in the return type. 21:53:49 But this is just like Java's checked exceptions. 21:53:57 It is exception-based error handling. 21:54:05 (in the context of being monadic) 21:54:15 I'm with you. I just disagree that they're "just like" one another. 21:54:21 It is identical. 21:54:28 Do you know what Java's checked exceptions are? 21:54:38 Methods have to record, in their type signature, what exceptions they can throw. 21:54:46 int foo(int n) throws SomeError; 21:54:51 foo :: Int -> Either SomeError Int 21:55:05 Yes. But it is recorded separately from return type. That's all. 21:55:13 It's a different abstraction for the same thing. 21:55:38 I prefer to unify them in the return type rather than saying "exceptions are magical things that perform stack unwinding etc." 21:55:39 Well, I would argue "different"; you can very simply mechanically translate each model into the other. And it's right in the type signature. 21:55:44 It's "implemented" differently, that's true. 21:56:04 -!- oerjan has quit (Quit: Good night). 21:56:17 But still, I'd say that a monadic model of error handling is the same as checked exceptions. (And the same as unchecked exceptions if you make "SomeError" an existential on some Exception typeclass.) 21:57:04 Oh, they're identical in function, sure. They just differ in form. 21:57:14 form as in syntax or what 21:57:54 I hope I can try to make a program in TeX for parsing Haskell codes 21:58:11 monqy: That, and implementation; in C++ I can return a boost::optional from every function, or I can throw exceptions. 21:58:47 monqy: Exceptions are more idiomatic to that language, but I would prefer the other route. 21:58:50 evincar: Well, that's just because C++ has really awkward syntax :) 21:59:08 elliott_: On this, all can agree. 21:59:19 But yeah, checked exceptions are actually a Good Thing. It's just that Java is never used functionally enough for them to be useful rather than annoying. 21:59:32 elliott_: Functionally meaning "as a functional language"? 21:59:41 Yes. But also those other meanings, too. :-) 21:59:56 Tony Morris will now beat me over the head with a baseball bat and shout about the Functional Java library. 22:00:18 elliott_: Oh, don't worry, you said "used". 22:00:34 Hardly anyone uses that library, so. :) 22:00:37 Heh. Well, Everything is an Object (Except Primitives (Except with Autoboxing)) isn't the best model for a type system, unsurprisingly. 22:01:01 evincar: Psuedostatic typing is an awful thing. :P 22:01:19 pikhq: It's a rather amazing library as an achievement 22:01:30 Not sure I could use it without the lambda syntax that's coming though 22:02:01 How would a subject orientated language work? 22:02:21 that's OOP 22:02:28 Taneb: However you want. "Subject/object" isn't the distinction you want to make here. 22:02:39 a [linguistics]object oriented language would just be OOP with inversion of control everywhere 22:02:48 apples have to know how a human eats them 22:03:16 evincar: What happened to that language that I forget the details of that we talked about in here when I was sleep-deprived in-between discussions about cities and libertarianism... I think... ? 22:03:17 "Object-oriented programming" is a refinement of structured programming. 22:03:30 -!- augur has changed nick to augur[afk]. 22:03:45 elliott_: Oh, you mean my research language, the one based on adjectives? 22:04:45 evincar: I'm... not sure. I seem to recall telling you that the imperative control structures you insisted on bolting on to it were ruining the cool idea at the core, but I don't remember more than that. :p 22:06:20 Yeah, that was the one. It was based entirely on the conjecture that you can perform computation with continuous descriptions of information rather than discrete units of it. 22:06:59 Evaluation was basically graph reduction, as you'd expect with any relatively simple functional language. 22:07:10 That seems suspect, since the real numbers aren't computable. :p 22:07:18 and why did it have imperative control structures 22:07:42 monqy: man why did you remind me of the bitbitjump talk page 22:07:56 bitbitjump talk page made me sad 22:08:30 elliott_: I don't mean continuous in the sense of a continuous quantity. I just mean that "objects" need not be independent instances, but rather named regions of a description space. 22:08:35 -!- Patashu has joined. 22:08:44 Whose borders are not necessarily sharply defined. 22:08:55 monqy: Because I was still feeling out the idea to see what could work. 22:09:04 did it work 22:09:26 I haven't really been working on it. So many other things are going on. :P 22:09:50 ais523: how long are you going to be here? wondering whether it's worth collecting my thoughts on my model to tell you 22:10:18 elliott_: probably a while, but maybe not, and I'm also not paying much attention 22:10:26 so it's probably not going to be as rewarding as you'd hope 22:10:52 ais523: meh, I won't bother then 22:10:57 but I do think it solved all of your complaints 22:11:09 elliott_: Now you've piqued my curiosity. 22:11:38 elliott_: that seems reasonable 22:11:40 evincar: err, do you know what @ is? I'll have to send you at.html if not 22:11:49 elliott_: I do not. 22:12:01 ais523: and it also allows the capability model to work across the network, rather than a separate communication method being used across the network 22:12:27 bleh, the file should be called @.html 22:12:33 because @ is a placeholder, not an actual name 22:12:36 also, ...................... 22:12:39 evincar: see /msg 22:12:40 my . key is broken 22:12:44 not completely, but working intermittently 22:13:18 evincar: Also install Bitstream Charter it is a cool typeface. (I am not saying this because at.html requests it first in the CSS. Honest.) 22:14:35 -!- madbr has quit (Read error: Connection reset by peer). 22:15:14 elliott_: oh, here's today's dose of Secret Project spoilers: http://codepad.org/oP5twvVz 22:15:20 that isn't the project itself, it's a test program 22:15:26 which now runs correctly under it 22:15:32 I think I have the basics of timing determinism down 22:15:33 ais523: does NetHack? 22:15:45 not yet 22:15:49 it will eventually, I imagine 22:15:55 the difficult part there is the I/O 22:16:05 ais523: ha, I just teased another spoiler out of you 22:16:08 I've had things fail to reproduce because of the buffer size on the input side of /dev/tty 22:16:09 you tested NetHack 22:16:14 actually, I didn't 22:16:22 then how do you know? :-P 22:16:26 I answered the question based on my own knowledge of how implemented my thing is 22:16:27 spoiler: teased 22:16:47 now we know you haven't tested nethack 22:17:00 also, atm it runs executables independent of any environment 22:17:07 so it doesn't work for things that refer to other files 22:17:18 monqy: yesssssssss 22:17:20 except, atm, I put the entirety of /usr inside the chroot because shared libraries 22:17:37 "I think one can build a real TC machine. Let a real computer be able to request a bank of additional memory. Someone is obliged to go buy memory and provide to the computer. The computer can switch between the banks of memory in only left/right way, so the address space of the computer remains the same. Now this whole system, the real computer and the person serving as a provider of additional memory, will be really a Turing-complete machine." 22:17:38 eventually I'll have to get specific versions of the shared libraries in case they don't return the same pointer every time, or something 22:17:51 only finite amounts of storage exist in the universe! 22:18:17 ais523: thanks captain obvious 22:18:32 ais523: now let me introduce you to your new colleage, N. S. Sherlock 22:18:35 elliott_: I'm replying to whoever made that quote 22:18:58 Depends whether the universe is unbounded or not 22:19:05 Taneb: it is 22:19:12 AND IT ISN'T 22:19:18 observe above: helpfulness 22:19:24 according to current belief, only a finite amount of it is accessible 22:19:30 and the size is large but measurable 22:19:42 If it is, we can store information as the distance between two arbitary points. 22:19:50 This information is not necassarily accessible 22:20:02 Taneb: umm, that doesn't help you build a UTM 22:20:05 Don't forget it'll be made fuzzy due to heisenburg stuff 22:20:12 You can't store real numbers as distances 22:20:13 I'm not saying it does 22:20:19 ais523: Isn't it something silly like "infinite from our perspective but with finite storage" 22:20:28 I'm no physicist, mind you 22:20:43 I think it's write-only memory 22:20:58 elliott_: the reachable boundary is finite and you can measure its location 22:21:06 ais523: But I read that the "blowing up a balloon" model for explaining the universe's expansion was disliked nowadays because evidence shows to the topology of the universe being flat and infinite 22:21:19 [asterisk]evidence suggests that the blah blah 22:22:26 -!- madbr has joined. 22:22:29 According to this paper 'The universe can have performed no more than $10^{120}$ ops on $10^{90}$ bits.' 22:22:48 anyway, Linux's API for interrupting a sleep three times, by ignored signal then ignored signal then handled signal, is really frustrating 22:22:52 but I think I got it working 22:22:57 ais523: I was hoping you'd have an answer to that :( 22:23:07 elliott_: I don't 22:24:44 evincar has been engulfed by the sheer power of @ 22:24:45 -!- madbr has quit (Read error: Connection reset by peer). 22:24:50 Would it be possible to invent a program doing Knuth-style literate programming for Haskell by using Template Haskell? 22:24:53 Patashu: op seems a bit vaguely-defined 22:25:13 -!- augur[afk] has changed nick to augur. 22:25:21 it's probably defined better in the paper 22:27:02 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 22:27:21 I've just had a thought 22:27:28 -!- FireFly has quit (Quit: swatted to death). 22:27:57 Any number can be represented as unary, right? 22:28:16 I've just had an idea for representing a series of numbers as unary 22:28:23 -!- quintopia has quit (Ping timeout: 276 seconds). 22:28:25 Based on powers of primes 22:28:30 It's probably been done before 22:28:41 Taneb: Any natural number. And I bet I've had the same idea. :P 22:28:49 evincar: PSHT 22:28:53 But lets say you wanted [2,6,9] 22:29:04 Just define a spiral path through all {x,y} tuples, that's how you biject rationals onto integers 22:29:10 and then a new path through all {x,y,z} tuples... 22:29:19 You'd record it as 2^2 * 3^6 * 5^9 22:29:36 Patashu: Naturally. ;) 22:29:50 Patashu: you can obviously do N^(n+1) => N^n given (N,N) => N 22:29:55 pretty inefficient though 22:30:00 as far as number size goes 22:30:13 Hmm, that sounds like it would work 22:30:20 Curse you, prime factorization, for making problems so simple! *fist shake!* 22:30:51 Of course, [2,6,9] would be 5695312500, which is huge 22:31:17 Taneb: Look up Fractran, by the way. 22:31:29 -!- madbr has joined. 22:31:38 Fractran is substaintially different 22:31:53 That's a series of fractions, this is a single unary number 22:32:15 -!- quintopia has joined. 22:32:15 -!- quintopia has quit (Changing host). 22:32:16 -!- quintopia has joined. 22:32:22 I was just making sure you were aware of it. It's relevant. 22:32:23 evincar: So disappointed in you right now. 22:32:27 Of course, this gives me an idea 22:32:29 elliott_: Yes? 22:32:46 A fractran program expressed in this notation! 22:33:01 evincar: BEING GIVEN AT.HTML AND NOT IMMEDIATELY TELLING ME ABOUT YOUR NEW DEDICATION TO THE CULT OF @ IS UNACCEPTABLE 22:33:43 elliott_: So with regard to the thing about trusted code, how do you define "damage" to the system? 22:33:59 Argh, stop picking on the parts I just dropped as random unformed ideas. :p 22:34:20 evincar: You could bundle (machine code, proof that it accesses no memory it was not passed and did not allocate). 22:34:24 The whole thing is a series of such. 22:34:30 Random unformed ideas. 22:34:37 Then you make them into a thing that works. 22:34:40 This pain inside! 22:34:50 Anyway, there are better-formed ideas, they're just not interesting as an introduction. 22:34:52 evincar: You could bundle (machine code, proof that it accesses no memory it was not passed and did not allocate). 22:35:05 + doesn't access any ports it isn't passed, blah blah 22:35:17 Basically just something to guarantee that it does not violate the safety guarantees that the compiler offers. 22:35:25 I'm not sure this is a practical idea though, formal verification is very hard. 22:36:20 Yeah, I think that level of security is going to be tremendously difficult to attain. I mean, if you control the system from the ground up (which you do) and you ensure that all of your code is perfect (which it won't be), you might have a chance. Maybe. 22:36:42 Umm, no, the "level of security" required to be proven there is a very easy minimum standard to attain. 22:36:52 But if the whole thing is incrementally developed, fully tested, formally verified, etc., you stand a chance. 22:37:01 No, it does not require perfect coding at all. 22:37:06 I'm not a proponent of TDD, but I play one on TV. :P 22:37:19 Don't try and make technical claims about my system based on a very broad general introduction I wrote months ago :P 22:37:30 Not gonna. That's as technical as I'm getting. 22:37:31 I'm trying to parse "TDD" as an emoticon 22:37:38 And I'll be back from food shortly. 22:37:41 It's working 22:37:45 But yes, that's not the plan wrt formal verification at all 22:37:48 -!- evincar has changed nick to evincar[afk]. 22:38:45 it's probably better to work on source code rather than machine code, use a type checker to prove safety, and then hope there are no security bugs in the compiler 22:39:43 ais523: It was intended as an alternate route into the system, but yeah, now I'm wishing I edited it out 22:39:48 ais523: But -- 22:40:00 As far as security bugs in the compiler go, I think any sort of exploitable bug is really contrived in @'s context 22:40:26 @? 22:40:53 Taneb: Ugh, come ooooon 22:40:56 Not again :-P 22:41:01 elliott_: one that dereferenced an integer as a pointer would probably be enough 22:41:15 ais523: Compilers for things like Haskell, interpreters for languages like Python and Ruby -- why do they segfault? Usually the compilers segfault because of a system call or a broken allocation/GC, and interpreters usually segfault because [lol C]. 22:41:16 but luckily that's pretty easy to avoid 22:41:31 I mean, it's not contrived, it's just easy to avoid 22:41:32 In @, there are no "system calls" like that, everything is more or less memory safe 22:41:39 And the compiler is written in @lang, not C 22:42:00 The allocator/GC has to be pretty good, yeah, but OTOH, if the GC allocates a used object, that just results in crashing, not a security bug. 22:42:09 Unless a dangerous object gets allocated RIGHT THERE the next second. 22:43:00 such bugs have been exploited before :) 22:43:45 olsner: The situations I know of are also contrived in @ :-P 22:44:47 How do you write C programs in @? 22:45:05 zzo38: by using a C compiler 22:45:56 normally, if a race condition like that exists, it can be manipulated to happen 22:46:04 But I thought @ is not C? 22:46:22 zzo38: Linux isn't written in Pascal, but you can still compile Pascal programs on Linux 22:46:23 -!- MigoMipo_ has quit (Read error: Connection reset by peer). 22:47:43 I know. But I don't know how @ works, you said there is no systems calls, everything is memory safe, etc 22:47:43 -!- madbr has quit (Read error: Connection reset by peer). 22:47:56 Does anything special required? 22:48:09 presumably C programs would run in a VM 22:48:14 Not a VM per se 22:48:19 or, not exactly 22:48:21 but the same concept 22:48:28 Pointers probably wouldn't be integers 22:48:42 Is programming for the GPU safe? Since as far as I'm aware the GPU doesn't have system calls 22:48:47 zzo38: Well, you can't have pointers be direct memory addresses. 22:48:51 Patashu: GPU has no OS 22:48:55 they would be convertible to integers in C, because in C you can decompose anything into a sequence of octet 22:49:04 but they probably wouldn't correspond to memory addresses 22:49:08 zzo38: But with a richer pointer type inherited from @, and a libc, you could do it fine 22:49:26 O, that's how it works. 22:49:47 C isn't memory safe, but all non-memory-safe usages of C are either bugs or pathological things that can be handled specially, like using invalid memory as a RNG seed 22:49:54 (Usually that's just a bad idea, though) 22:49:57 ais523: indeed 22:50:05 ais523: but, you only have to do the conversion when it's actually casted and read from 22:50:10 yep 22:50:11 you can just store them as pointer objects before that 22:50:17 Would LLVM codes be compiled into whatever code @ uses? Does @ use native code or almost native code or something else or whatever? 22:50:22 which, happily, desugar to memory addresses or something close to it (probably tagged) in @ 22:50:23 well, if people are passing around pointers to pointers and memcpy them 22:50:31 -!- copumpkin has joined. 22:50:35 you have to deal with that situation somehow 22:50:40 also, what about unions? 22:51:01 zzo38: Well, the main programming language for @ is @lang, which is a completely new language; but I have a feeling that lower down, there'll be a (memory-safe, etc.) LLVM-style language 22:51:10 A C compiler would want to output that, instead 22:51:39 ais523: @ still has byte arrays, you know 22:51:54 Yes, I know there is C compiler into LLVM so probably it can be used. Maybe some of the commands in LLVM won't work 22:52:02 ais523: But a more high-level representation may be preferable for debugging and @ integration 22:52:34 ais523: Which may have a performance penalty, of course, but it shouldn't be that bad (because, after all, @lang should have acceptable performance for just about anything in the first place). 22:52:47 Is it a subset of the available LLVM commands? Is there some new commands? Can you tell me what it is? 22:53:07 zzo38: I'm not very knowledgable about LLVM's IR instructions. 22:53:15 But I think most of them should map fairly directly. 22:53:33 elliott_: it has byte arrays, just can't interpret them as anything but bytes 22:53:38 zzo38: The "low-level" language will probably have some kind of strong typing, so that it's invalid to, say, load an integer into a register, and then try and dereference it. 22:53:40 in particular, how do you safely convert them /back/ into pointers? 22:54:05 ais523: Well, that's true. (Note that you _can_ do that as a user; I think the difference is that those are in boxes.) 22:54:13 Basically, you can inspect anything in a box totally, but you can't inspect values itself. 22:54:27 You can look at the source code to a function if it's in a box, but you can't look at the source code to a function value (that would break parametricity) 22:54:41 That way, @ can be totally inspectable without breaking all sorts of important theoretical properties. 22:54:42 Hopefully. 22:55:08 ais523: And if the C compiler has enough access to the pointers it uses, it might be able to have them in boxes? I'm... not sure. 22:55:16 But yeah, a higher-level representation would be easier. 22:55:32 pointers as indexes into a byte array would be easiest for C 22:55:39 possibly not best, but easiest 22:55:42 ais523: One way you could do it is to have the C heap -- yeah. 22:55:52 -!- madbr has joined. 22:55:52 -!- invariable has joined. 22:55:58 ais523: The thing is that that should, in @, desugar to direct memory-array access. 22:56:07 -!- invariable has left. 22:56:20 So it'll require a separate heap, but it'll be fast. 22:56:25 that would work, I think; to cast byte array to pointer, you just have to check to see if it's in range 22:56:38 also, are you planning to use the MMU for anything? my guess is no, but I'm not sure 22:56:56 elliott_: LLVM does not allow loading an integer into a register and then try to dereference it directly; you need to cast it first. So, you could have in @ that the LLVM commands for doing that are not allowed. 22:56:59 Well, the whole idea of @ is that if your language has these strong safety guarantees, then you can compile it to really unsafe code, which is fast. 22:57:13 Well, the MMU would actually be pretty handy in @. 22:57:27 zzo38: Right. Casting to a pointer would have to be restricted. Of course, if you use a separate heap, like ais523 is talking about, you can allow free casting and all that. 22:57:29 the MMU wouldn't be helpful for safety 22:57:30 It's just less integrated that way. 22:57:34 but I'm wondering if it would still be useful anyway 22:57:40 ais523: Erm, I forget exactly what the MMU handles >_> 22:57:53 ais523: No, but it'd make it easier to handle the fact that the disk is nothing more than another tier of memory. 22:57:53 elliott_: memory, it manages memory :) 22:57:55 Just cross-process memory safety? 22:57:56 elliott_: Paging. 22:58:00 Right, same thing. 22:58:01 LLVM also does allow pointer types to specify which memory area it points into, and you can have many memory areas. 22:58:01 *All* paging. 22:58:19 Cross-process memory safety isn't actually a feature of the MMU *itself*. 22:58:20 So maybe @ can define what those areas are. 22:58:20 ais523: Well... the MMU is useful in that I load pages from disk and map them with the MMU. 22:58:28 zzo38: Yes, that would be useful. 22:58:46 That's done pretty much exclusively by having the kernel swap the page tables on context switches. 22:59:32 It's both essential to process safety with direct memory access *and* not designed for it. :) 22:59:38 But yes, I'm afraid I'm not too good at my compartmentalisation of an extended IBM PC; I know mostly what it can do, but not what handles what, as far as the actual core architecture goes. 22:59:47 So I'm not sure if the MMU can help. 22:59:59 elliott_: It will. 23:00:19 Well, beyond that. 23:00:29 Just nowhere near as much as it would on traditional OS designs. 23:00:51 what the MMU basically does is pagefault if you try to access memory that's on the disk at the time 23:01:04 and transfer control to some sort of pagefault handler, which is meant to be part of the kernel 23:01:22 And maps between virtual memory and real, physical RAM (obviously) 23:01:26 now, I don't think there's any particular security issue with paging arbitrary bits of memory in/out of the places they're meant to be anyway 23:01:39 unless you could use it for a DOS 23:02:09 -!- azaq23 has quit (Quit: Leaving.). 23:02:12 ais523: right, that's useful because @'s orthogonal persistence can use it, I think 23:02:26 yep 23:02:28 It's also useful for COW. 23:02:37 oh right, that too 23:02:59 If you're asking me about @, surely you're paying enough attention for me to explain my thoughts on the network-capability model? :-P 23:03:17 heh 23:03:43 I suppose what an MMU really does, fundamentally (other than mapping virtual to real pointers), is to call a function when someone tries to dereference pointers to particular memory locations 23:03:47 and there are all sorts of uses for that 23:05:32 Yes there can be a lot of uses of such things, I think. 23:06:36 -!- evincar[afk] has changed nick to evincar. 23:06:37 -!- madbr has quit (Read error: Connection reset by peer). 23:06:37 On AMD64 it can also call a function when someone tries to execute from particular memory locations. 23:06:41 ais523: anyway, the idea I had was: you know how I said you could ask any machine for an object by giving it its identifier, and it'd decide whether to give it or not? 23:06:52 elliott_: yes? 23:06:54 (also recent x86) 23:06:56 one sec 23:08:14 ais523: well, that's wrong, that isn't how it should work at all 23:08:49 ais523: What's the basic mechanism by which objects can be accessed by code in the object-capability model? Simple: Another piece of code, which already has the reference, passes it to your code. (Functions returning a reference are equivalent to this by CPS.) 23:09:20 that makes more sense 23:09:29 that isn't the model yet 23:09:30 you saying the original idea was wrong, that is 23:09:33 Right 23:09:46 ais523: So, say computer B wants to give an object reference to computer A, which is the computer owned by our protagonist, who will be left unnamed, as they are irrelevant. 23:09:48 elliott_: So you rely on the type system to prevent the user from breaking anything, and you give the user everything they need. 23:09:54 By user I mean programmer of course. 23:09:56 evincar: I'll answer after finishing explaining to ais523 23:10:08 ais523: More precisely: 23:10:25 ais523: Object X on computer B wants to give (an object reference to Z) to object Y on computer A. 23:10:29 Or, 23:10:40 ais523: B/X wants to give (an object reference to B/Z) to A/Y. 23:10:58 With me? (We assume B wants A to access Z via B for simplicity.) 23:11:19 and Z is on B? 23:11:25 yep 23:11:27 Objects aren't "on" anywhere. 23:11:29 But, yeah. 23:11:36 Objects just "exist". :p 23:11:40 I mean, where the data is physically stored 23:11:43 Right. 23:11:46 which is irrelevant from the user's point of view 23:11:54 but very relevant wrt the network protocol 23:12:00 ais523: OK, so let's also assume that B/X has the public key of A/Y. 23:12:07 that's a sensible assumption 23:12:11 public keys are known by everyone 23:12:17 (Yes, an object with a public key; next they'll want to marry, but let's just assume so.) 23:12:42 -!- Taneb has quit (Ping timeout: 260 seconds). 23:12:52 Would you have to make some way of doing this using LLVM? 23:12:56 ais523: B/X sends the following (we assume they have a communication channel open, the means is unspecified; just like we assume there's a function call going on normally) to A/Y, encrypted to A/Y's public key, so that nobody can snoop on it: 23:13:02 zzo38: no, this is a higher-level detail than that 23:13:22 ais523: (a public key, a socket) 23:13:25 ais523: More precisely: 23:13:38 ais523: (B/Z's public key, a socket to B) 23:13:47 ais523: The socket can be sent as (host, port) of course. 23:13:51 It's allocated for the purpose. 23:13:58 hmm, it seems to me as if both halves of your keypair are private 23:14:07 This isn't a keypair. 23:14:09 we need better terminology 23:14:14 I mean, you're saying "public key" 23:14:14 ais523: No, it's not private. 23:14:21 ais523: You can encrypt messages to a public key with GPG, can you not? 23:14:21 ah, and the socket is guessable 23:14:26 so why does it need encryption? 23:14:36 ais523: Ummm, this is a different socket. You are misunderstanding. 23:14:43 Let me tell you the whole model. 23:14:46 go on 23:14:53 what I mean is, is B/Z's public key public knowledge? 23:15:03 -!- madbr has joined. 23:15:10 Yes. 23:15:17 It's sent over the wire in case A/Y doesn't know it. 23:15:29 ah, OK 23:15:39 so why is the pubkey/socket pair encrypted? 23:15:47 the host is probably obvious, and there's a reasonably small number of ports 23:15:59 ais523: OK, awit, I made a mistake. 23:16:00 so the encryption doesn't seem to gain you anything 23:16:01 Give me a minute. 23:16:03 ah, OK 23:17:25 -!- madbr has quit (Read error: Connection reset by peer). 23:17:43 ais523: B/X sends encrypt((a newly-generated private key, B/Z's public key, (B's host, a newly-allocated port)), A/Y's public key) over its communication channel to A/Y. A/Y connects to the (host,port) and sends the time, or something, signed with the private key it received. This socket is "connected" to B/Z (it's actually operating-system-level, but this is the model). B/Z sends itself (serialised in the form of bytes, etc.) down the socket, signed 23:17:43 to B/Z's key. 23:17:46 hmm, you know how X determines if someone's allowed to pop up windows on your screen? using a random key, that's stored in a file only you can read and regenerated every time it starts 23:17:56 A/Y checks the signature, sees that it's correct, and knows that it has received B/Z. 23:18:20 "sends the time" is to prevent replay attacks? 23:18:24 Yes. 23:18:38 oh wait, there's more 23:18:40 stop for a second 23:18:40 stop typing 23:18:45 I wasn't typing! 23:19:03 ais523: B/X sends encrypt((a newly-generated private key, B/Z's public key, (B's host, a newly-allocated port)), A/Y's public key) over its communication channel to A/Y. A/Y connects to the (host,port) and sends the time, or something, signed with the private key it received. This socket is "connected" to B/Z (it's actually operating-system-level, but this is the model). B/Z sends itself (serialised in the form of bytes, etc.) down the socket, signed 23:19:03 to B/Z's key, __and encrypted with A/Y's public key__. 23:19:08 A/Y decrypts it, checks the key, and we're done. 23:19:15 ais523: Behind the scenes, B/X told B/Z "I'm about to give someone a pointer to you; here is a newly-generated private key, and their public key". 23:19:24 -!- TeruFSX has joined. 23:19:25 (It actually tells the operating system, but again, this is an abstraction.) 23:19:43 B/Z will not give itself to anyone who isn't marked as about to be given itself. 23:19:52 i.e. it will not give itself to anyone who can't sign with their key. 23:19:56 (Their newly-generated key.) 23:20:11 ais523: A fundamental point of this security model is: It doesn't matter if anyone can see every single bit of traffic on the internet. 23:20:16 yep 23:20:19 ais523: In fact, hosts become an optimisation. 23:20:27 ais523: You could have only two operations in the entire networking stack: 23:20:31 - Send packet to entire internet; 23:20:34 - Receive a packet from the internet. 23:20:34 so, hmm, is this giving B/Z itself? or a copy? 23:20:47 ais523: What's the difference? Objects are immutable. 23:20:57 elliott_: You functional devil, you. 23:21:01 ah, fair enough, that's something I didn't grasp about how you were using "object" 23:21:05 evincar: Quite. 23:21:16 ais523: It's intentionally vague. But objects being mutable seems to mess up the model. 23:21:19 so the only possible way to delete something is to remove all references to it 23:21:47 ais523: Anyway, 23:22:11 elliott_: Well, mutating a singly-referenced object can be a good optimisation for destroying and replacing it. 23:22:18 I'm puzzled at how you can implement Internet-wide garbage collection 23:22:27 or how this will work without it 23:22:28 ais523: One cool thing is this: 23:22:31 Who sent a packet is also irrelevant. 23:22:34 evincar: that is indeed just an optimisation, though 23:22:39 Destinations are irrelevant, sources are irrelevant. 23:23:02 ais523: Anyway, it's quite a high-overhead model, but it does capture (up to the cryptographic system being broken) a secure passing of a pointer. 23:23:08 Optimising it... well, that can come later. 23:23:32 ais523: Why do you need Internet-wise garbage collection? Garbage collection matters only to individual computers which don't like running out of disk. 23:23:52 elliott_: in case you garbage-collect an object that another system was about to ask you for a copy of 23:24:07 e.g. X wants to pass a copy of Z to Y 23:24:10 or Z itself 23:24:11 either will do 23:24:15 then it forgets about Z 23:24:17 elliott_: Yeah, you run into synchronisation issues with the garbage collector there. 23:24:22 ais523: I think that cross-network pointers are weak references by definition 23:24:25 -!- madbr has joined. 23:24:28 elliott_: ah, OK 23:24:29 ais523: but, umm, if they're not: 23:24:32 that fits in with my thinking too 23:24:37 ais523: Obviously X stores all the people waiting to get Z 23:24:42 in that the language should only allow you to express operations that make physical sense 23:24:49 ais523: If pointers just expire after a certain amount of time, then that gets removed 23:24:51 And those all count as references 23:24:52 X storing all the people waiting to get Z is very vulnerable to denial-of-service 23:24:57 yes, true 23:25:00 but 23:25:02 it has to anyway 23:25:02 and bringing time into the matter seems really awkward and un@like 23:25:05 so that it knows the generated keys 23:25:11 and their public keys 23:25:15 shouldn't /Z/ be storing that info? 23:25:28 umm, I'm mixing up machines and objects 23:25:32 can you switch to the machine/object notation for objects? 23:25:36 and restaet things? 23:25:44 specifically 23:25:44 e.g. X wants to pass a copy of Z to Y 23:25:44 or Z itself 23:25:44 either will do 23:25:44 then it forgets about Z 23:25:55 B/Z, B/X, A/Y 23:26:00 note that if I could avoid using TCP, the machine part is irrelevant 23:26:02 but I can't really 23:26:06 and "it" = "then X forgets about Z" 23:26:15 ais523: umm, so 23:26:18 also, UDP sounds like a better fit for what you're doing 23:26:22 e.g. B/X wants to pass a copy of B/Z to A/Y 23:26:24 or B/Z itself 23:26:25 either will do 23:26:31 yep 23:26:33 then B/X forgets about B/Z 23:26:36 yep 23:26:51 ais523: forgets as in, B/X pops out of the call frame that looked up B/Z from a hash table, and now it holds no reference? 23:26:52 for instance 23:27:05 (I was going to say "sets the variable holding B/Z to null", but, haha, functional) 23:27:09 elliott_: yes, for instance 23:27:15 or "the variable holding B/Z goes out of scope" 23:27:20 which works both functionally and imperatively 23:27:28 Right 23:27:30 also, UDP sounds like a better fit for what you're doing 23:27:32 Agreed, possibly 23:27:35 ais523: Hmm 23:27:51 ais523: And we assume that the only thing with a reference to B/Z locally is B/X? 23:27:54 yes 23:27:55 So that when it goes out of scope, B/Z is (locally) garbage 23:27:58 yep 23:28:18 I think using weak pointers is the best solution here 23:28:28 well, weak references 23:28:34 ais523: Well, B (the operating system) holds a table of all (generated public key, receiving machine's public key) waiting to receive Z 23:28:37 "pointer" carries extra baggage I'm not happy with in this ontext 23:28:41 And those can count as references 23:28:44 Those have to expire anyway 23:28:49 So time is unavoidably a factor 23:28:53 elliott_: and expires them if the other side is being slow? 23:28:57 Yeah. 23:28:58 fair enough, I think 23:29:02 I think they count as references without any special support 23:29:09 Just use a tuple database or whatever 23:29:17 And store (Z, gen_pubkey, recv_pubkey) 23:29:29 ais523: hmm, wait 23:29:55 ais523: B/X can cheat A/Y out of B/Z 23:29:59 oh wait, B/X can lie to A/Y anyway 23:30:02 by just sending a junk reference 23:30:06 yep, it's allowed to 23:30:09 right 23:30:12 because it was A/Y that asked it for the reference 23:30:22 I was thinking it could snap up B/Z before A/Y does, because it knows the private key used 23:30:25 but that's okay 23:30:26 B/Z can also cheat A/Y out of itself, but arguably, in that case it was lying to B/X 23:30:35 indeed 23:30:58 OK, I think this is a workable and secure model, albeit a very slow and memory-hogging one (every object needs a key!) 23:31:06 But optimising it can come later 23:31:25 objects need keys only if something's trying to pass them over the network 23:31:38 I hope your computers have thermal noise diodes in, btw, or they're going to run out of entropy pretty quickly 23:31:44 haha 23:31:52 Well, I think I can avoid explicitly using GPG keys or whatever 23:31:55 I'm not sure how, though 23:31:57 [asterisk]PGP 23:32:07 ais523: most ISPs filter out traffic that is invalid TCP and UDP, right? hmm, wait, it's irrelevant, nobody will be a @protocol router anyway 23:32:14 so I have to layer this on top of... probably UDP, lower overhead 23:32:34 ais523: unfortunately, what I would like is not even valid IP -- I would like to remove the source field, as it's irrelevant 23:32:42 elliott_: it's not so much "filter out", but routers are generally told not to forward things they don't understand 23:32:44 So is the destination field, but it helps for routing. :p 23:32:58 so you'll send the message and it just won't be routed 23:33:02 ais523: right 23:33:13 you can just ignore the source header, IIRC it can be faked anyway 23:33:21 it wastes four bytes :( 23:33:29 your objects contain keys 23:33:34 they'll be way longer than four bytes 23:33:41 ermm, define keys 23:33:43 you mean their identifier? 23:33:52 no, the private keys you were referring to earlier 23:33:54 With this model, you don't actually need objects to have any global name at all 23:34:01 ais523: oh, well right, like I said I'm optimising that :P 23:34:07 ais523: for instance, you can send all of an object's dependencies in one go 23:34:14 rather than opening a communication channel for each 23:34:36 ais523: Ideally, I would just hook up the entire world to one big Ethernet cable, and everyone would see everyone's packets, and computers would process every one of them, and only respond to the ones it can decrypt 23:34:41 but that seems rather unlikely 23:35:15 I think routing to particular destinations will save you processor time in trying to decrypt things you don't have the key for 23:35:17 I think ais523's question messed with my head 23:35:19 Good job 23:35:21 which is a really useful optimisation 23:35:26 Sgeo_: which question? 23:35:30 ais523: indeed 23:35:39 ais523: the question is how to abstract it entirely from the user 23:35:42 elliott_, about whether he could persuade me not to buy a Sony ereader for no reason 23:35:57 Sgeo_: oh wow, I'm totally going to logread 23:36:06 Sgeo_, about when in the logs? 23:36:11 Earlier today 23:36:14 elliott_: I asked if (I could persuade Sgeo_ to boycott Sony without telling him the reason) 23:36:43 (sorry about the parens, I couldn't figure out how else to make the sentence unambiguous) 23:36:47 ais523: Sgeo_ is pro at understanding 23:37:04 the question wasn't a request for him to boycott Sony; it was a question about whether I could persuade him to 23:37:04 10:31:59 Sgeo_: can I persuade you to mindlessly boycott Sony without telling you why? <-- ah I found it 23:37:11 I take it Sgeo_ is avoiding the Kindle because he's a hipster 23:37:19 if he's considering Sony products it can't be for ethics 23:37:33 elliott_, I'm actually considering getting a Kindle now, but not a current Kindle 23:37:36 elliott_: shush, you'll let him know why he's supposed to boycott Sony! 23:37:47 ais523: umm, but I just realised I don't completely recall myself 23:37:59 ais523: I have this tendency to remember opinions and drop their justifications to save storage space; this is probably dangerous 23:38:02 heh 23:38:20 I think sony uh 23:38:21 did some stuff 23:38:22 yeah 23:38:28 I remember that when Sony did their most recent thing that got people to boycott them, there were lots of people saying that they would boycott them except that they were boycotting them already 23:38:34 and couldn't boycott further 23:38:34 * elliott_ appends list to things he needs to master to create @: networking 23:38:39 and oh dear, I hate networking 23:38:41 The rootkit stuff was in 2005, right? And as far as security is concerned, I could just not buy from the Sony eBookstore 23:38:44 *appends to list of things 23:38:45 networking...:( 23:39:00 ais523: oops, yes 23:39:04 it's a set, anyway, not a list 23:39:07 the list is named "things he needs to master to create @" 23:39:11 and, hmm, good point 23:39:19 can you append to a set? 23:39:25 no, only insert 23:39:33 10:51:58 I actually got quite good at doing chirps, and I'm not entirely sure why <-- you need to record and upload that 23:39:37 you can probably append to a set in PHP 23:39:48 Vorpal: the word has a technical meaning 23:39:53 ais523: The thing with this networking model is that I'm not sure what it looks like inside the OS itself... 23:39:57 ais523, oh... right 23:40:19 ais523: I'm sceptical of anything which presents a remote object as the same kind of thing as a local one, because it can take a lot longer to access 23:40:26 ais523, so it was a terrible pun in the context? 23:40:28 (not being able to access it at all isn't an issue here because of the new model) 23:40:47 ais523: At the same time, it's hard to unify local and remote objects without... unifying them 23:41:30 22:58:39: Oh. Fuck. 23:41:31 22:58:51: So, the Treasury has the authority to mint coins of arbitrary designation. 23:41:31 22:59:10: We could remain "solvent" by having them mint a $2 trillion coin. And deposit it in the Fed. 23:41:31 22:59:25: And have a nice, tidy hyperinflation problem. 23:41:34 oh my god i want to see that coin 23:41:54 I'm not at all convinced that unifying remote/local is useful, mostly because I'm generally offline 23:42:07 pikhq: are they restricted in the number of coins they can mint? or the total value of the coins they can mint? 23:42:10 I'm generally offline when I'm on my laptop 23:42:17 elliott_: Won't it simply not matter if they are unified? If I want some object, I'm going to need to create it or get it from somewhere. Both have a (practically) predictable cost. 23:42:17 because university wlan is so shitty :P 23:42:28 ais523: No. 23:42:33 ais523: Well, with all due respect, I find your opinions on the matter of the internet to be... outdated. :) 23:42:42 ais523: They have permission to mint. However much they want. 23:42:47 ais523: Not that @ won't be useful for you, but the internet is pretty important to @. 23:43:02 elliott_: Can you give a specific example of a case where a developer would be trying to access a known object that is definitely remote without knowledge that it is? 23:43:06 evincar: one second 23:43:09 I need to reply to ais523 :P 23:43:20 pikhq: so presumably the reason why you mint one G$2 coin rather than a trillion $2 coins is just one of practicality? 23:43:26 ais523: Yes. 23:44:02 ais523: I read an interesting interview (I think (i.e. I think it was an interview)) with the creator of HyperCard where he recounted that the reason HyperCard didn't become the web is because at Apple, they did things by thinking about an individual computer as the "whole thing", and added networking on as a very separate, disconnected component; later on, he was at Sun, and when they drew diagrams, they drew the networking lines before the actual co 23:44:02 mputers 23:44:11 Of course it's more a nice image than an intellectual breakthrough. 23:44:27 But I do think "every computer a fortress" is clearly the wrong way to go about things by now. 23:44:36 (Note: I don't like the Cloud(tm).) 23:44:55 elliott_: Won't it simply not matter if they are unified? If I want some object, I'm going to need to create it or get it from somewhere. Both have a (practically) predictable cost. 23:45:00 It's hard to say you want "some object". 23:45:24 In fact I'm not even sure how you go about retrieving objects with this new model; you could start with a permanent socket, and hope that whoever selected your permanent socket selected something useful like @oogle 23:45:31 which will give you pointers to other objects 23:45:33 I'm really not sure 23:45:42 elliott_: Can you give a specific example of a case where a developer would be trying to access a known object that is definitely remote without knowledge that it is? 23:45:49 evincar: the problem is that you think the problem only applies to developers 23:45:53 all these details matter at the user-level too 23:46:02 when you hear "object" in @, that's not a system detail, that's something the user interacts with too 23:46:26 elliott_: Right, I should've used the hypernym. :P 23:47:02 But really, the user is in all likelihood going to know what they don't "have" locally and will have to "get", even if the "getting" is transparent. 23:47:17 evincar: Well, here's a "he's joking OR IS HE" answer based on current computers that I'm not sure applies to @ but hey why not: When you go to google.com, do you have to specify whether you mean the cached copy or the remote copy? 23:47:50 elliott_: I always *mean* the remote copy. Whether I get it is not up to me, though. 23:47:54 anyway, consider things like Plan 9's 9P, or sshfs, where you can mount remote computers and they appear as local filenames... but suddenly everything is awkward, because ls does a thousand stat calls and so takes a year to run on this medium-sized directory. 23:48:10 So that's a leaky abstraction. 23:48:28 Filesystem calls are meant to be reasonably fast (as far as hard drives go...); with a remote filesystem, they are decidedly not. 23:48:35 So the abstraction leaks, and it's questionable whether it was a good idea in the first place. 23:48:41 I want to avoid that with @. 23:48:56 anyway, consider things like Plan 9's 9P, or sshfs, where you can mount remote computers and they appear as local filenames... but suddenly everything is awkward, because ls does a thousand stat calls and so takes a year to run on this medium-sized directory. <-- sshfs is only useful over lan 23:49:09 I use it to easily move stuff over gbit ethernet 23:49:12 between laptop and desktop 23:49:14 elliott_: So you bundle filesystem calls to only be done locally, then sent remotely. Or something. 23:49:21 You can patch that leak. 23:49:25 elliott_, I never even tried sshfs to a remote server. that would be mad 23:49:29 Vorpal: [word meaning "I have no response"] 23:49:35 ais523: I invented yr word, see above 23:49:47 If it takes me 200ms to get a directory listing, that's still tolerable over a 2ms listing. 23:49:48 evincar: umm, @ has no filesystem 23:49:51 elliott_, how so? 23:50:01 Vorpal: what an infuriatingly unanswerable question 23:50:03 elliott_, I was just agreeing with you 23:50:06 evincar: and if I unify local and remote objects, there is nothing like bundling 23:50:13 Vorpal: that needs a response? 23:50:18 elliott_, no 23:50:23 Vorpal: then "how so?"? 23:50:25 elliott_, why did you try to answer it 23:50:42 elliott_: You mentioned filesystems first. @ still has the concept of objects that are had (well, whose ownership is shared) and objects that must be gotten. 23:50:47 Vorpal: [word meaning "I have no response"] <-- no one required your response 23:50:57 evincar: It does? 23:50:58 elliott_: Even if it's hidden, it's not going away. 23:51:08 Vorpal: you usually ping people repeatedly when they don't respond 23:51:32 err, do I? and how is thated related to this? 23:51:46 I usually do it when there are a lot of talking in the channel 23:51:51 Vorpal: Well, in my experience you do; and it's related because I was letting you know I'd read what you said 23:51:58 ah 23:52:21 -!- bsmntbombdood has quit (Quit: leaving). 23:52:31 evincar: The unification being discussed is in some ways about "hiding" that... can I just allocate you another week to explain @ like ais523 has had? :-P 23:52:52 I wanted to do constraint analysis in LLVM. I don't know if they have that. 23:53:57 elliott_: Heh, I guess I'll have to come back. And do some log-skimming. 23:54:27 There's about three years of logs where @ is mentioned, if you'd like to go on a binge :-P 23:55:20 elliott_, that is about 1.8 years worth of reading in total I estimate, probably 4 months of reading about @ 23:55:37 Vorpal: Surely less; "elliottOS" didn't come up very often 23:55:46 elliott_, several weeks at least 23:56:02 Dammit, elliott_, why didn't you pick a more searchable working title? >:| 23:56:15 evincar: you may enjoy codu's rsync service. 23:56:24 I suppose you can make up one library allowing access files and directories anyways even if there isn't any, in case you run a program that uses such things. 23:56:27 evincar: do !logs for more info :P 23:56:36 then grep for elliottOS\|ehirdOS\|@, I suppose 23:56:38 hmm 23:56:41 then grep for elliottOS\|ehirdOS\|\b@\b, I suppose 23:56:45 zzo38: indeed 23:57:19 elliott_, what was that nick starting with t that you used? 23:57:29 elliott_, I forgot 23:57:31 umm, I don't recall one starting with t 23:57:34 do you mean estoppel? 23:57:37 no 23:57:38 oh, tusho 23:57:42 yeah 23:57:48 elliott_, was it ever tushoOS? 23:57:51 guess not 23:57:52 I used that until I got tired of puns (mostly blaming augur) 23:57:56 Vorpal: I don't think so :P 23:58:02 elliott_, what puns? I forgot 23:58:04 elliott_: hello. 23:58:09 02:07:13: WHAT COULD POSSIBLY. BUT _POSSIBLY_. GO WRONG??????? 23:58:09 02:07:15: No. 23:58:09 :D 23:58:11 aieee 23:58:17 Vorpal: NO I HAVE WASHED MY HANDS AND ALSO AUGUR IS HERE. 23:58:23 elliott_, oh right 23:58:29 * augur grabs elliott_'s tusho 23:58:34 those kind of puns, Vorpal! 23:58:51 02:14:53: The person who formulated the Sanskrit language 23:58:51 02:15:38: essentially inventing something like BNF millennia before bachus-naur were born, afaiu 23:58:51 02:16:06: and, iirc, with a smattering of Perligata, except sanskrit rather than latin. 23:58:51 "millennia" -- are we talking about a programming language called Sanskrit, or Sanskrit itself? :D 23:58:57 ARE THEY THE SAME THING 23:59:22 And this is why I come here.