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:39:13 -!- itidus21 has joined.
01:42:01 -!- itidus20 has quit (Ping timeout: 258 seconds).
01:43:42 <coppro> Sgeo: someone else already did
01:46:55 <Vorpal> total used free shared buffers cached
01:46:55 <Vorpal> Mem: 16037 7654 8383 0 353 5648
01:46:55 <Vorpal> -/+ buffers/cache: 1652 14385
01:47:06 <Vorpal> how can I be using swap!?
01:47:36 <pikhq_> The kernel doesn't unswap pages except on demand.
01:47:47 <pikhq_> This is generally a pessimisation.
01:48:04 <Vorpal> pikhq_, well no issue here, I'm just confused that I started using swap at all
01:48:09 <Vorpal> I haven't been doing anything heavy
01:48:40 <pikhq_> Hmm. 16 gigs? Yeah, it'd be pretty hard to make that swap.
01:48:59 <Vorpal> FilenameTypeSizeUsedPriority
01:48:59 <Vorpal> /dev/sda3 partition209647630961
01:48:59 <Vorpal> /dev/sdb3 partition209647630961
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 <lambdabot> 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 <oerjan> <elliott> WHAT COULD POSSIBLY. BUT _POSSIBLY_. GO WRONG???????
02:08:33 -!- TeruFSX has joined.
02:11:23 -!- Patashu has joined.
02:14:53 <oerjan> <Taneb> The person who formulated the Sanskrit language
02:15:38 <oerjan> essentially inventing something like BNF millennia before bachus-naur were born, afaiu
02:16:06 <oerjan> 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 <oerjan> <elliott_> 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 <oerjan> <elliott_ under breath> (jerk)
02:27:29 -!- jcp has joined.
02:30:29 <oerjan> <Taneb> But barely any esoteric markup or query languages
02:30:46 -!- madbr has joined.
02:30:47 <oerjan> would zzo's texnicard count?
02:31:12 <madbr> I'm writing impossible to read code into a commercial lib :o
02:31:32 <Vorpal> oerjan, suggestion intercal/sql hybrid. Both are traditionally upper case
02:32:23 <oerjan> FROM .1 <- SELECT PLEASE (222) NEXT.
02:32:36 <Vorpal> oerjan, joins could be done with COME FROM
02:33:14 <oerjan> i wonder if INTERCAL has a suitable set of instructions for monadic use.
02:33:58 <madbr> oerjan: basically I'm writing Arm SIMD code
02:34:06 <madbr> it's 2~4 times faster than C++
02:34:40 <madbr> But because math operations are pipelined you have to scramble your code to make it go faster
02:37:26 <fungot> monqy: whenever the quota for this referendum must list both the current players. if the
02:37:35 <madbr> you get 2 operations per cycle!
02:37:49 <madbr> but one of them has to be math and one of them has to be load/store
02:38:15 <madbr> also if you start a multiply the result isn't available until 5 or 6 cycles later
02:38:22 <madbr> if you read it before that it stalls
02:38:41 <oerjan> this is the kind of thing a good compiler _should_ be able to do by itself, right?
02:39:26 <madbr> There are intrinsincs for C++, maybe the compiler produces good code with those
02:39:36 <madbr> 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 <Sgeo_> 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 <oerjan> 11:08:35 <DocHerrings> But they always change it to the Magic the Gathering/Brainfuck idea.
05:17:20 <oerjan> 11:08:46 <DocHerrings> Seems more like a persistent person.
05:17:33 <oerjan> actually it's simply changing it to the very oldest version of the page.
05:18:02 <quintopia> why is this channel so sleepy of late
05:18:12 <quintopia> only a few hours activity each day
05:18:20 <oerjan> quintopia: vacation time?
05:19:11 <oerjan> perhaps there's some kind of link which causes that oldest version to be saved, which a spambot has picked up.
05:19:37 <oerjan> or maybe it has a very broken way of following links. hm.
05:20:29 <quintopia> well can you lock it to reversion?
05:21:52 -!- madbr has joined.
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 <oerjan> Or otherwise i'd have banned Nthern for not responding to my messages. Grmle.
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 <atehwa> 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 <atehwa> 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:34:21 -!- madbr has joined.
07:36:37 -!- madbr has quit (Read error: Connection reset by peer).
07:39:28 <atehwa> 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 <atehwa> 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 <lament> languages where computation always terminates fall into one of a number of classes
07:43:17 <lament> hence http://esoteric.voxelperfect.net/wiki/Category:Computational_class
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 <Taneb> I still need a name for my esoteric markup langauge
07:54:12 -!- madbr has joined.
07:56:32 -!- madbr has quit (Read error: Connection reset by peer).
07:58:18 <atehwa> lament: yes, the class of always-terminating languages is missing from there
07:58:58 <atehwa> 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 <Patashu> 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).
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 <Taneb> What's an unimplemented esolang deserving implemenation
14:07:04 -!- madbr has quit (Read error: Connection reset by peer).
14:09:02 <fizzie> Just do Category:Unimplemented in alphabetical order.
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 <lambdabot> 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 <oerjan> "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:15:54 <oerjan> (on yesterday's iwc annotation)
15:16:29 <Taneb> Today's annotation is pretty funny
15:17:21 <oerjan> however, it may be assumed that hordes are attracted to hoards.
15:17:37 <Taneb> There is little data on the reverse
15:18:18 <oerjan> well i'm sure genghis khan got plenty of tribute
15:19:39 -!- madbr has joined.
15:19:53 -!- cheater has quit (Ping timeout: 250 seconds).
15:21:46 <oerjan> 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 <Taneb> I put events from my life into CoAP, what's saying DMM doesn't?
15:22:53 <Taneb> Today's CoAP is a DMM work!
15:23:59 <oerjan> ...let's hope it's not based on a real life event.
15:24:42 <Taneb> Actually, DMM and the comic irregulars do a lot at work that isn't necassarily work
15:24:50 <Taneb> Such as writing Darths and Droids
15:25:13 <oerjan> yes, but at least they _claim_ to do it during lunch hour
15:25:45 <Taneb> And making the CiSRA puzzles
15:25:54 <Taneb> Which is backed by Canon, so it may be work
15:25:59 <oerjan> yes, but that might be something ... right
15:26:58 <oerjan> i just have this image of DMM being the world's best time planner.
15:27:30 <Taneb> He is a time ninja
15:28:00 <oerjan> comments on a postcard
15:28:01 <Taneb> Comments on a Postcard
15:30:12 <oerjan> 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 <Phantom_Hoover> oerjan, I have a suspicion that it'll be part of a crackdown at some point.
15:31:50 <oerjan> google doesn't find either "DMM is a time lord" or "David Morgan-Mar is a time lord", anyway
15:32:38 <Taneb> Speaking of the CiSRA puzzles, anyone want to form a team
15:32:48 <oerjan> i avoid my duties by carefully never registering to anything new
15:34:08 <Taneb> I've got a few of the answers in 1D
15:34:46 <Taneb> 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 <Phantom_Hoover> http://www.reddit.com/r/math/comments/j297s/if_g_o_f_is_surjective_why_doesnt_g_need_to_be/
16:30:46 -!- cheater has quit (Ping timeout: 255 seconds).
16:30:46 -!- madbr has quit (Read error: Connection reset by peer).
16:32:52 <Taneb> The fear of palindromes
16:35:11 <quintopia> he should have used notation more suitable for ascii
16:36:56 -!- madbr has joined.
16:38:19 <oerjan> well the title has g and f switched, anyway
16:38:54 <oerjan> because if g o f is surjective, then g definitely is.
16:39:45 <Phantom_Hoover> 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 <oerjan> 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 <Phantom_Hoover> oerjan, yeah, but the answers to *that* make no sensee.
16:43:56 -!- TeruFSX has joined.
16:45:48 <oerjan> frozenzephyr's answer looks clear enough...
16:48:26 -!- madbr has joined.
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 <Phantom_Hoover> http://www.bay12forums.com/smf/index.php?topic=56305.0
17:19:24 <Taneb> That sounds like Dwarf Fortress
17:20:50 -!- TeruFSX has quit (Ping timeout: 264 seconds).
17:21:21 <ais523> Dwarf Fortress science seems to be along the lines of "how can we trick the game into letting us do X implausible thing?"
17:22:12 <Taneb> If real world science was like that, everyone would be a scientist
17:23:51 <ais523> well, it's science if you don't know what the rules are, and engineering if you do
17:25:00 <Phantom_Hoover> Yeah, and this is a kind of blend of the two, I suppose.
17:25:01 -!- madbr has joined.
17:25:08 <Taneb> "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 <Phantom_Hoover> They know the rules pretty well, but not the exact particulars relevant to the problem.
17:25:55 <Taneb> It's SCIENCE is more fun to say than It's ENGINEERING
17:26:29 <Taneb> I base all my desicions on what is more fun to say
17:27:34 <Phantom_Hoover> " 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 <Phantom_Hoover> (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 <ais523> I have read Boatmurdered, but I forgot
17:28:58 <ais523> I thought the fall of Boatmurdered was largely due to people deliberately trying to kill it, though
17:28:58 <Taneb> I couldn't get into Boutmurdered
17:29:15 <Taneb> ...I've just had an idea
17:29:43 <Taneb> Us lot, doing a bloodline game!
17:29:43 <Phantom_Hoover> 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 <Phantom_Hoover> Taneb, regrettably, neither me nor ais have played DF.
17:29:58 <ais523> most of us don't play DF
17:30:15 <Phantom_Hoover> 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:55 <ais523> on a PC, I tend to only (although not exclusively) play open-source games
17:30:55 <Taneb> <Phantom_Hoover> Lymee has, but I wouldn't let Lymee near anything I wanted to survive for more than twenty seconds.
17:31:01 <ais523> the ones that aren't, I've generally paid money for
17:31:11 <Lymee> Phantom_Hoover, is that so?
17:31:21 <ais523> although a couple came free with packets of breakfast cereal
17:31:22 <Taneb> You can pay money for Dwarf Fortress if you reeeaaally want to
17:31:28 <Lymee> Would you like to see what I do if I want a fortress dead?
17:31:32 <Phantom_Hoover> Lymee, THE PAIN OF ELLIOTT'S RUTIAN TEST SERVER STILL STABS AT MY HEART
17:31:58 <Taneb> Or you can put it on a memory stick and put it in your cereal box
17:32:58 <ais523> 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 <Phantom_Hoover> Lymee, also, killing a fortress... isn't the hardest thing.
17:36:55 <ais523> <Areku> 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:37:21 <Taneb> I once tried to make an indoor fishing place. It worked.
17:37:59 <Taneb> Ended having a river flooding into my fortress
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 <Phantom_Hoover> 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 <olsner> I think you want neither of all those things
17:49:35 -!- madbr has joined.
17:49:35 <Phantom_Hoover> Sgeo_, the origin of suffering is desire for e-book readers.
17:49:58 -!- cheater has quit (Ping timeout: 255 seconds).
17:50:09 <ais523> Sgeo_: can I persuade you to mindlessly boycott Sony without telling you why?
17:50:27 <ais523> hmm, I was just wondering
17:50:30 <Sgeo_> Well, you might be able to, but I don't see how
17:50:38 <Sgeo_> And if I knew about it, I'd stop
17:50:50 <Phantom_Hoover> Sgeo_, if you don't boycott Sony, ais523 will find you and hit you.
17:51:16 <Sgeo_> ais523, may I ask why you'd want me to boycott Sony?
17:51:26 <ais523> Sgeo_: sure, it's IRC, you can ask anything
17:51:31 <ais523> but I didn't say I wanted you to boycott Sony
17:51:42 <ais523> I just said I wondered whether I could persuade you to
17:52:21 <Sgeo_> I think I may be too easily persuadable
17:52:34 <Sgeo_> Persuaded to get a Nook :/
17:53:15 <Sgeo_> Although most of my issues are things that could in theory be fixed in updates
17:54:48 <oerjan> the screaming of the damned will be greatly reduced in the next version
17:55:15 <quintopia> they've got a workaround for that already
17:55:52 <oerjan> 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 <quintopia> 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 <quintopia> these all have all the things i'm looking for in a reader
17:58:17 -!- Taneb has quit (Ping timeout: 260 seconds).
17:59:01 <quintopia> well i could hardly call them readers did they not display text in a readable form, could i?
18:01:20 -!- Taneb has joined.
18:01:25 <quintopia> they work and i did not pay for them. i am satisfied.
18:02:42 -!- cheater has joined.
18:02:47 <quintopia> 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 <quintopia> imagine an e-ink laptop that is front-lit by a single led in the keyboard base.
18:05:12 <quintopia> that thing would use so little power if done right
18:06:35 <fizzie> 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 <Phantom_Hoover> fizzie, well, your average redditor wouldn't have a problem with the hand movement.
18:07:53 -!- TeruFSX has joined.
18:10:08 <ais523> I actually got quite good at doing chirps, and I'm not entirely sure why
18:10:32 <oerjan> wait i thought Gregor was the giant insect
18:11:34 -!- cheater has quit (Ping timeout: 255 seconds).
18:11:54 <oerjan> 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: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: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 <ais523> I'm still reading that DF submarine thread
19:16:00 <ais523> 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 <quintopia> ais523: could a DF submarine be powered and directed?
19:34:27 <ais523> quintopia: at the point in the thread I've reached, they haven't got them to work at all yet
19:34:34 <ais523> they tend to act in ways that defy physics
19:35:42 -!- Taneb has quit (Ping timeout: 260 seconds).
19:36:44 -!- sebbu2 has joined.
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 <cheater_> 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 <ais523> measuring clock skew at all is probably the wrong level of abstraction
19:51:21 <ais523> because it depends on the physical dimensions of the chip
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 <zzo38> 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 <zzo38> 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 <zzo38> The updated file is: http://sprunge.us/YZfh
20:43:11 <zzo38> 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 <ais523> 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:09:09 <ais523> it depends on the time of day
21:09:13 <ais523> most of the most active people aren't here right now
21:09:37 <Adaria> Lots of people but not much going on, wish people wouldn't just idle like that.
21:09:51 <Adaria> Makes it seem more is here than there is.
21:09:52 <ais523> idling's usual so that conversations get a chance to get started
21:09:59 <ais523> if a conversation starts, then people have a chance to join in
21:10:09 -!- madbr has joined.
21:10:12 <ais523> if people leave as soon as there isn't a conversation, then it won't get started at all
21:10:24 <ais523> I assume you're new to IRC?
21:12:03 <Adaria> 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 <Adaria> If I missit the first time it's gone. Meh, screen reader.
21:13:00 <quintopia> that sounds like the shittiest client ever
21:13:34 <ais523> it sounds like Vorpal's client
21:13:58 -!- Taneb has joined.
21:14:07 <Adaria> 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:44 <monqy> you could look at the logs.
21:15:06 <ais523> oh, I see, it's an accessibility problem
21:15:06 <Adaria> I don't think this one makes them and if it does not sure where... But good itea there.
21:15:14 <ais523> unfortunately, most programs are really bad about that
21:15:17 <quintopia> Adaria: this may help: http://forums.miranda-im.org/showthread.php?24751-How-to-define-scrollback
21:15:20 <monqy> this channel is publicly logged.
21:15:36 <ais523> and you can ask the client to repeat the topic to you by writing /topic
21:16:39 -!- derrik has left.
21:18:44 -!- madbr has joined.
21:19:15 <evincar> 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 <Adaria> OK there, set up logging, should help.
21:22:11 <zzo38> In some cases scrollback might not be a feature of the client, it will be feature of the terminal emulator
21:23:31 <ais523> zzo38: most people don't use clients that work like that
21:23:56 <zzo38> It depends whether or not it uses graphical user interface
21:25:28 <Adaria> 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:52 <Adaria> 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 <Adaria> So, this room had a cunfusing room desc on it, what usually goes on in here?
21:30:10 <Adaria> The name makes sense but the desc did not.
21:30:23 <Taneb> That's pretty much it.
21:30:25 <quintopia> mirc with jaws appears to be the only solution around
21:30:33 <Taneb> Officially, we discuss esoteric programming languages
21:30:35 <quintopia> we do things here related to computing mostly
21:30:41 <evincar> It's usually related to programming, but we're not picky.
21:31:01 <Taneb> The other day, we discussed chess variant markup languages
21:31:04 <Adaria> Ah ok, esoteric to me was not tech related heh. Ah well.
21:31:19 <ais523> unfortunately, we're not entirely sure where you should go instead
21:31:23 <Taneb> Stay and have fun!
21:31:25 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.87 [Firefox 5.0/20110615151330]).
21:31:28 <Adaria> This server has SO many rooms though it's insane.
21:31:36 <ais523> but if you find out, let us know so we can send other people there for you to talk to
21:31:52 <ais523> Freenode's mostly a programming (specifically open source) network
21:32:02 <ais523> so more or less everything here is tech related
21:32:51 <Adaria> 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 <Adaria> If there is some new tech out there that seems interesting to me, I wanna play with it.
21:33:31 <quintopia> you might consider a different network then.
21:33:47 <Taneb> Nah, we could use a hardware guy.
21:34:10 <Adaria> There are six thousand chans on freenode, I'm sure I'll find something.
21:34:13 <Taneb> Guy is gender neutral to me
21:35:23 <Adaria> Female here but I use guy as androgenous too.
21:36:16 <evincar> Adaria: So are you visually impaired, or do you just feel like using a screen reader?
21:36:22 <Adaria> Or I guess unisex would be the proper word, meh whatever, it works for both.
21:36:28 <ais523> evincar: heh, in most channels, there wouldn't even be a need to ask
21:36:33 <ais523> here, that's actually a plausible question
21:36:38 -!- madbr has joined.
21:36:55 <Taneb> Imagine an adrogenous specific pronoun
21:37:11 <Adaria> Completely blind here.
21:37:31 <Taneb> To me, "it" is that's more of non-human
21:38:42 -!- madbr has quit (Read error: Connection reset by peer).
21:38:54 <Taneb> I've never met anyone who's been completely blind before
21:39:28 <olsner> I've met a blind person, worked as a programmer
21:39:30 <Adaria> 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 <ais523> I know someone who can only read things within about 2cm of their eyes
21:40:00 <ais523> watching them reading is bizarre
21:40:29 -!- elliott_ has joined.
21:40:33 <Taneb> That person needs glasses, methinks
21:40:57 <ais523> I don't think that's the problem, or it'd have been fixed like that already
21:40:57 <Adaria> 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 <olsner> Taneb: I think glasses aren't likely to be able to help much if you see that badly from the start
21:41:03 <ais523> even shortsightedness isn't that shortsighted
21:41:29 <Taneb> Shortsightedness can vary a lot
21:41:31 <ais523> that was an unexpected ping
21:41:32 * oerjan met a blind mathematician once
21:41:35 <ais523> as I'd talked about a minute ago
21:41:44 <ais523> you could have /ctcp pinged yourself
21:41:54 <ais523> that bounces off the server twice, so it's a good way to check connectedness
21:42:04 <Taneb> I'm mildly short-sighted, I use my glasses to watch TV and in lessons, but otherwise I'm fine
21:42:22 <Taneb> Wheras my dad has more extreme short-sightedness
21:42:29 <Adaria> 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 <elliott_> ais523: I had thoughts wrt the @ pointer thing.
21:43:03 <Taneb> To the point when I tried on his glasses the only thing I could focus on was about a mile away
21:43:15 <ais523> elliott_: I had thoughts with respect to @ too
21:43:23 <Adaria> 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 <ais523> I concluded a lot of interesting things, which are probably mutually contradictory
21:43:28 <elliott_> ais523: oh dear; you first, please tell me they don't involve Feather
21:43:28 <evincar> 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:50 <elliott_> i imagine blind programming is a bit like using ed
21:43:53 <ais523> but it's almost as brainfrying, but for different reasons
21:43:58 <elliott_> without any commands to print multiple lines at once
21:44:38 <elliott_> 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:45:18 <ais523> 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:40 <elliott_> ais523: I'll wait to tell mine too then
21:45:43 <ais523> but one was that what's possible in the language should match what's possible in the actual real word
21:45:57 <Adaria> OK gonna go get food. I'll beback later on.
21:46:16 <Taneb> Turing complete languages are impossible in the real world
21:46:20 <ais523> 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 <ais523> 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 <elliott_> ais523: well, yes, I already had plans for that, but I think my new model makes it easier
21:47:29 <evincar> ais523: Please, monads, not exceptions. I like locality. :P
21:47:38 -!- madbr has joined.
21:47:42 <elliott_> evincar: um "monad" means nothing here
21:47:46 <elliott_> a specific monad might have some meaning
21:47:48 <ais523> evincar: I'm not making assumptions about what the language feature /is/, just that it exists
21:47:53 <monqy> speaking of being unable to real world turing complete, I was just reading the bitbitjump talk page. that was crazy.
21:47:53 <elliott_> Either, for instance, or ErrorT
21:48:09 <ais523> elliott_: another thing was, that for your capabilities, you don't want to be passing references to objects themselves
21:48:14 <pikhq> evincar: "Monad" only makes sense in languages with particular forms of typing.
21:48:16 <ais523> but references to closures that operate on those objects
21:48:21 <evincar> elliott_: Monadic error handling. I'd rather be concise and understandable than pedantically correct. :P
21:48:43 <monqy> except it wasn't understandcable ;_):
21:48:48 <ais523> e.g. if you pass a reference to <object on my computer> 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 <elliott_> evincar: well, that is just exceptions
21:48:57 <ais523> which doesn't make sense, so that operation should be physically impossible
21:48:59 <elliott_> <pikhq> evincar: "Monad" only makes sense in languages with particular forms of typing.
21:49:14 <ais523> 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 <elliott_> they're just less visible in less powerful languages
21:49:22 <ais523> that way, you can do the equivalent of deleting an object if you change the lookup table
21:49:26 <evincar> elliott_: In any case, I like explicit handling rather than implicit propagation.
21:49:36 <evincar> That's what I was getting at.
21:49:41 <ais523> 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 <elliott_> evincar: it's not really monadic then, it's just returning Either
21:49:54 <pikhq> elliott_: Actually. ... Yeah, I think you could pull it off in C, so. :P
21:49:56 <elliott_> but that's a monad too, that gives you implicit propagation
21:50:01 -!- MigoMipo has quit (Ping timeout: 250 seconds).
21:50:02 <ais523> 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 <ais523> I think that's the @-y equivalent of a filesystem
21:50:12 <elliott_> 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 <Taneb> 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 <elliott_> ais523: Anyway, my method solves this, I think
21:50:31 <Taneb> Makes a change from IRL
21:50:41 <Taneb> Where everyone expects me to know everything
21:50:54 <evincar> 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:14 <evincar> They propagate by different means, and one is more explicit than t'other.
21:51:19 <elliott_> foo a = do x <- bar a; y <- quux x; return y
21:51:25 <zzo38> Taneb: I think a monad is something in Haskell
21:51:27 <elliott_> abc a b = do x <- foo a; y <- quux a; return (x+y)
21:51:40 <elliott_> evincar: these both return Either SomeError Integer
21:51:48 <elliott_> evincar: note how abc's code looks just like exception-using code
21:51:53 <elliott_> and the errors explicitly propagate to its return
21:52:12 <elliott_> (Either SomeError String) is an explicit error-tagged return type
21:52:20 <pikhq> 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 <elliott_> And (Either SomeError) is a monad
21:52:30 <elliott_> evincar: But what the monad provides is /implicit/ error propagation
21:52:31 <pikhq> elliott_: Thanks. Thinko.
21:52:38 <elliott_> In fact, this model is identical to checked exceptions
21:52:57 <evincar> elliott_: Only via implicit typing, unless I'm mistaken?
21:53:10 <elliott_> What do you mean by implicit typing and how is it related here?
21:53:34 <elliott_> 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 <elliott_> You still have to note what errors you produce in the return type.
21:53:49 <elliott_> But this is just like Java's checked exceptions.
21:53:57 <elliott_> It is exception-based error handling.
21:54:05 <elliott_> (in the context of being monadic)
21:54:15 <evincar> I'm with you. I just disagree that they're "just like" one another.
21:54:28 <elliott_> Do you know what Java's checked exceptions are?
21:54:38 <elliott_> Methods have to record, in their type signature, what exceptions they can throw.
21:54:46 <elliott_> int foo(int n) throws SomeError;
21:54:51 <elliott_> foo :: Int -> Either SomeError Int
21:55:05 <evincar> Yes. But it is recorded separately from return type. That's all.
21:55:13 <evincar> It's a different abstraction for the same thing.
21:55:38 <evincar> I prefer to unify them in the return type rather than saying "exceptions are magical things that perform stack unwinding etc."
21:55:39 <elliott_> 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 <elliott_> It's "implemented" differently, that's true.
21:56:04 -!- oerjan has quit (Quit: Good night).
21:56:17 <elliott_> 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 <evincar> Oh, they're identical in function, sure. They just differ in form.
21:57:14 <monqy> form as in syntax or what
21:57:54 <zzo38> I hope I can try to make a program in TeX for parsing Haskell codes
21:58:11 <evincar> monqy: That, and implementation; in C++ I can return a boost::optional from every function, or I can throw exceptions.
21:58:47 <evincar> monqy: Exceptions are more idiomatic to that language, but I would prefer the other route.
21:58:50 <elliott_> evincar: Well, that's just because C++ has really awkward syntax :)
21:59:08 <evincar> elliott_: On this, all can agree.
21:59:19 <elliott_> 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 <evincar> elliott_: Functionally meaning "as a functional language"?
21:59:41 <elliott_> Yes. But also those other meanings, too. :-)
21:59:56 <elliott_> Tony Morris will now beat me over the head with a baseball bat and shout about the Functional Java library.
22:00:18 <pikhq> elliott_: Oh, don't worry, you said "used".
22:00:34 <pikhq> Hardly anyone uses that library, so. :)
22:00:37 <evincar> Heh. Well, Everything is an Object (Except Primitives (Except with Autoboxing)) isn't the best model for a type system, unsurprisingly.
22:01:01 <pikhq> evincar: Psuedostatic typing is an awful thing. :P
22:01:19 <elliott_> pikhq: It's a rather amazing library as an achievement
22:01:30 <elliott_> Not sure I could use it without the lambda syntax that's coming though
22:02:01 <Taneb> How would a subject orientated language work?
22:02:28 <evincar> Taneb: However you want. "Subject/object" isn't the distinction you want to make here.
22:02:39 <elliott_> a [linguistics]object oriented language would just be OOP with inversion of control everywhere
22:02:48 <elliott_> apples have to know how a human eats them
22:03:16 <elliott_> 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 <evincar> "Object-oriented programming" is a refinement of structured programming.
22:03:30 -!- augur has changed nick to augur[afk].
22:03:45 <evincar> elliott_: Oh, you mean my research language, the one based on adjectives?
22:04:45 <elliott_> 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 <evincar> 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 <evincar> Evaluation was basically graph reduction, as you'd expect with any relatively simple functional language.
22:07:10 <elliott_> That seems suspect, since the real numbers aren't computable. :p
22:07:18 <monqy> and why did it have imperative control structures
22:07:42 <elliott_> monqy: man why did you remind me of the bitbitjump talk page
22:07:56 <monqy> bitbitjump talk page made me sad
22:08:30 <evincar> 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 <evincar> Whose borders are not necessarily sharply defined.
22:08:55 <evincar> monqy: Because I was still feeling out the idea to see what could work.
22:09:26 <evincar> I haven't really been working on it. So many other things are going on. :P
22:09:50 <elliott_> 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 <ais523> elliott_: probably a while, but maybe not, and I'm also not paying much attention
22:10:26 <ais523> so it's probably not going to be as rewarding as you'd hope
22:10:52 <elliott_> ais523: meh, I won't bother then
22:10:57 <elliott_> but I do think it solved all of your complaints
22:11:09 <evincar> elliott_: Now you've piqued my curiosity.
22:11:38 <ais523> elliott_: that seems reasonable
22:11:40 <elliott_> evincar: err, do you know what @ is? I'll have to send you at.html if not
22:12:01 <elliott_> 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 <ais523> bleh, the file should be called @.html
22:12:33 <ais523> because @ is a placeholder, not an actual name
22:12:36 <ais523> also, ......................
22:12:44 <ais523> not completely, but working intermittently
22:13:18 <elliott_> 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 <ais523> elliott_: oh, here's today's dose of Secret Project spoilers: http://codepad.org/oP5twvVz
22:15:20 <ais523> that isn't the project itself, it's a test program
22:15:26 <ais523> which now runs correctly under it
22:15:32 <ais523> I think I have the basics of timing determinism down
22:15:49 <ais523> it will eventually, I imagine
22:15:55 <ais523> the difficult part there is the I/O
22:16:05 <elliott_> ais523: ha, I just teased another spoiler out of you
22:16:08 <ais523> I've had things fail to reproduce because of the buffer size on the input side of /dev/tty
22:16:26 <ais523> I answered the question based on my own knowledge of how implemented my thing is
22:16:47 <monqy> now we know you haven't tested nethack
22:17:00 <ais523> also, atm it runs executables independent of any environment
22:17:07 <ais523> so it doesn't work for things that refer to other files
22:17:20 <ais523> except, atm, I put the entirety of /usr inside the chroot because shared libraries
22:17:37 <elliott_> "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 <ais523> 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 <ais523> only finite amounts of storage exist in the universe!
22:18:17 <elliott_> ais523: thanks captain obvious
22:18:32 <elliott_> ais523: now let me introduce you to your new colleage, N. S. Sherlock
22:18:35 <ais523> elliott_: I'm replying to whoever made that quote
22:18:58 <Taneb> Depends whether the universe is unbounded or not
22:19:24 <ais523> according to current belief, only a finite amount of it is accessible
22:19:30 <ais523> and the size is large but measurable
22:19:42 <Taneb> If it is, we can store information as the distance between two arbitary points.
22:19:50 <Taneb> This information is not necassarily accessible
22:20:02 <elliott_> Taneb: umm, that doesn't help you build a UTM
22:20:05 <Patashu> Don't forget it'll be made fuzzy due to heisenburg stuff
22:20:12 <Patashu> You can't store real numbers as distances
22:20:13 <Taneb> I'm not saying it does
22:20:19 <elliott_> ais523: Isn't it something silly like "infinite from our perspective but with finite storage"
22:20:43 <Taneb> I think it's write-only memory
22:20:58 <ais523> elliott_: the reachable boundary is finite and you can measure its location
22:21:06 <elliott_> 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 <elliott_> [asterisk]evidence suggests that the blah blah
22:22:26 -!- madbr has joined.
22:22:29 <Patashu> According to this paper 'The universe can have performed no more than $10^{120}$ ops on $10^{90}$ bits.'
22:22:48 <ais523> 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 <ais523> but I think I got it working
22:22:57 <elliott_> ais523: I was hoping you'd have an answer to that :(
22:24:44 <elliott_> evincar has been engulfed by the sheer power of @
22:24:45 -!- madbr has quit (Read error: Connection reset by peer).
22:24:50 <zzo38> Would it be possible to invent a program doing Knuth-style literate programming for Haskell by using Template Haskell?
22:24:53 <elliott_> Patashu: op seems a bit vaguely-defined
22:25:13 -!- augur[afk] has changed nick to augur.
22:25:21 <Patashu> it's probably defined better in the paper
22:27:02 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:27:21 <Taneb> I've just had a thought
22:27:28 -!- FireFly has quit (Quit: swatted to death).
22:27:57 <Taneb> Any number can be represented as unary, right?
22:28:16 <Taneb> 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 <Taneb> Based on powers of primes
22:28:30 <Taneb> It's probably been done before
22:28:41 <evincar> Taneb: Any natural number. And I bet I've had the same idea. :P
22:28:53 <Taneb> But lets say you wanted [2,6,9]
22:29:04 <Patashu> Just define a spiral path through all {x,y} tuples, that's how you biject rationals onto integers
22:29:10 <Patashu> and then a new path through all {x,y,z} tuples...
22:29:19 <Taneb> You'd record it as 2^2 * 3^6 * 5^9
22:29:50 <elliott_> Patashu: you can obviously do N^(n+1) => N^n given (N,N) => N
22:30:13 <Patashu> Hmm, that sounds like it would work
22:30:20 <Patashu> Curse you, prime factorization, for making problems so simple! *fist shake!*
22:30:51 <Taneb> Of course, [2,6,9] would be 5695312500, which is huge
22:31:17 <evincar> Taneb: Look up Fractran, by the way.
22:31:29 -!- madbr has joined.
22:31:38 <Taneb> Fractran is substaintially different
22:31:53 <Taneb> 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 <evincar> I was just making sure you were aware of it. It's relevant.
22:32:23 <elliott_> evincar: So disappointed in you right now.
22:32:27 <Taneb> Of course, this gives me an idea
22:32:46 <Taneb> A fractran program expressed in this notation!
22:33:01 <elliott_> evincar: BEING GIVEN AT.HTML AND NOT IMMEDIATELY TELLING ME ABOUT YOUR NEW DEDICATION TO THE CULT OF @ IS UNACCEPTABLE
22:33:43 <evincar> elliott_: So with regard to the thing about trusted code, how do you define "damage" to the system?
22:33:59 <elliott_> Argh, stop picking on the parts I just dropped as random unformed ideas. :p
22:34:20 <elliott_> evincar: You could bundle (machine code, proof that it accesses no memory it was not passed and did not allocate).
22:34:24 <evincar> The whole thing is a series of such.
22:34:37 <evincar> Then you make them into a thing that works.
22:34:50 <elliott_> Anyway, there are better-formed ideas, they're just not interesting as an introduction.
22:34:52 <elliott_> <elliott_> evincar: You could bundle (machine code, proof that it accesses no memory it was not passed and did not allocate).
22:35:05 <elliott_> + doesn't access any ports it isn't passed, blah blah
22:35:17 <elliott_> Basically just something to guarantee that it does not violate the safety guarantees that the compiler offers.
22:35:25 <elliott_> I'm not sure this is a practical idea though, formal verification is very hard.
22:36:20 <evincar> 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 <elliott_> Umm, no, the "level of security" required to be proven there is a very easy minimum standard to attain.
22:36:52 <evincar> But if the whole thing is incrementally developed, fully tested, formally verified, etc., you stand a chance.
22:37:01 <elliott_> No, it does not require perfect coding at all.
22:37:06 <evincar> I'm not a proponent of TDD, but I play one on TV. :P
22:37:19 <elliott_> 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 <evincar> Not gonna. That's as technical as I'm getting.
22:37:31 <Taneb> I'm trying to parse "TDD" as an emoticon
22:37:38 <evincar> And I'll be back from food shortly.
22:37:45 <elliott_> 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 <ais523> 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 <elliott_> ais523: It was intended as an alternate route into the system, but yeah, now I'm wishing I edited it out
22:40:00 <elliott_> As far as security bugs in the compiler go, I think any sort of exploitable bug is really contrived in @'s context
22:41:01 <ais523> elliott_: one that dereferenced an integer as a pointer would probably be enough
22:41:15 <elliott_> 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 <ais523> but luckily that's pretty easy to avoid
22:41:31 <ais523> I mean, it's not contrived, it's just easy to avoid
22:41:32 <elliott_> In @, there are no "system calls" like that, everything is more or less memory safe
22:41:39 <elliott_> And the compiler is written in @lang, not C
22:42:00 <elliott_> 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 <elliott_> Unless a dangerous object gets allocated RIGHT THERE the next second.
22:43:00 <olsner> such bugs have been exploited before :)
22:43:45 <elliott_> olsner: The situations I know of are also contrived in @ :-P
22:44:47 <zzo38> How do you write C programs in @?
22:45:56 <ais523> normally, if a race condition like that exists, it can be manipulated to happen
22:46:04 <zzo38> But I thought @ is not C?
22:46:22 <elliott_> 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 <zzo38> 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 <zzo38> Does anything special required?
22:48:09 <ais523> presumably C programs would run in a VM
22:48:28 <elliott_> Pointers probably wouldn't be integers
22:48:42 <Patashu> Is programming for the GPU safe? Since as far as I'm aware the GPU doesn't have system calls
22:48:47 <elliott_> zzo38: Well, you can't have pointers be direct memory addresses.
22:48:55 <ais523> they would be convertible to integers in C, because in C you can decompose anything into a sequence of octet
22:49:04 <ais523> but they probably wouldn't correspond to memory addresses
22:49:08 <elliott_> zzo38: But with a richer pointer type inherited from @, and a libc, you could do it fine
22:49:26 <zzo38> O, that's how it works.
22:49:47 <elliott_> 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 <elliott_> (Usually that's just a bad idea, though)
22:50:05 <elliott_> ais523: but, you only have to do the conversion when it's actually casted and read from
22:50:11 <elliott_> you can just store them as pointer objects before that
22:50:17 <zzo38> 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 <elliott_> which, happily, desugar to memory addresses or something close to it (probably tagged) in @
22:50:23 <ais523> well, if people are passing around pointers to pointers and memcpy them
22:50:31 -!- copumpkin has joined.
22:50:35 <ais523> you have to deal with that situation somehow
22:50:40 <ais523> also, what about unions?
22:51:01 <elliott_> 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 <elliott_> A C compiler would want to output that, instead
22:51:39 <elliott_> ais523: @ still has byte arrays, you know
22:51:54 <zzo38> 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 <elliott_> ais523: But a more high-level representation may be preferable for debugging and @ integration
22:52:34 <elliott_> 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 <zzo38> Is it a subset of the available LLVM commands? Is there some new commands? Can you tell me what it is?
22:53:07 <elliott_> zzo38: I'm not very knowledgable about LLVM's IR instructions.
22:53:15 <elliott_> But I think most of them should map fairly directly.
22:53:33 <ais523> elliott_: it has byte arrays, just can't interpret them as anything but bytes
22:53:38 <elliott_> 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 <ais523> in particular, how do you safely convert them /back/ into pointers?
22:54:05 <elliott_> 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 <elliott_> Basically, you can inspect anything in a box totally, but you can't inspect values itself.
22:54:27 <elliott_> 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 <elliott_> That way, @ can be totally inspectable without breaking all sorts of important theoretical properties.
22:55:08 <elliott_> 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 <elliott_> But yeah, a higher-level representation would be easier.
22:55:32 <ais523> pointers as indexes into a byte array would be easiest for C
22:55:39 <ais523> possibly not best, but easiest
22:55:42 <elliott_> 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 <elliott_> ais523: The thing is that that should, in @, desugar to direct memory-array access.
22:56:07 -!- invariable has left.
22:56:20 <elliott_> So it'll require a separate heap, but it'll be fast.
22:56:25 <ais523> 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 <ais523> also, are you planning to use the MMU for anything? my guess is no, but I'm not sure
22:56:56 <zzo38> 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 <elliott_> 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 <pikhq> Well, the MMU would actually be pretty handy in @.
22:57:27 <elliott_> 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 <ais523> the MMU wouldn't be helpful for safety
22:57:30 <elliott_> It's just less integrated that way.
22:57:34 <ais523> but I'm wondering if it would still be useful anyway
22:57:40 <elliott_> ais523: Erm, I forget exactly what the MMU handles >_>
22:57:53 <pikhq> 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 <olsner> elliott_: memory, it manages memory :)
22:57:55 <elliott_> Just cross-process memory safety?
22:58:01 <zzo38> LLVM also does allow pointer types to specify which memory area it points into, and you can have many memory areas.
22:58:19 <pikhq> Cross-process memory safety isn't actually a feature of the MMU *itself*.
22:58:20 <zzo38> So maybe @ can define what those areas are.
22:58:20 <elliott_> ais523: Well... the MMU is useful in that I load pages from disk and map them with the MMU.
22:58:28 <elliott_> zzo38: Yes, that would be useful.
22:58:46 <pikhq> That's done pretty much exclusively by having the kernel swap the page tables on context switches.
22:59:32 <pikhq> It's both essential to process safety with direct memory access *and* not designed for it. :)
22:59:38 <elliott_> 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 <elliott_> So I'm not sure if the MMU can help.
22:59:59 <pikhq> elliott_: It will.
23:00:29 <pikhq> Just nowhere near as much as it would on traditional OS designs.
23:00:51 <ais523> what the MMU basically does is pagefault if you try to access memory that's on the disk at the time
23:01:04 <ais523> and transfer control to some sort of pagefault handler, which is meant to be part of the kernel
23:01:22 <pikhq> And maps between virtual memory and real, physical RAM (obviously)
23:01:26 <ais523> 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 <ais523> unless you could use it for a DOS
23:02:09 -!- azaq23 has quit (Quit: Leaving.).
23:02:12 <elliott_> ais523: right, that's useful because @'s orthogonal persistence can use it, I think
23:02:28 <pikhq> It's also useful for COW.
23:02:59 <elliott_> 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:43 <ais523> 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 <ais523> and there are all sorts of uses for that
23:05:32 <zzo38> 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 <pikhq> On AMD64 it can also call a function when someone tries to execute from particular memory locations.
23:06:41 <elliott_> 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:08:14 <elliott_> ais523: well, that's wrong, that isn't how it should work at all
23:08:49 <elliott_> 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:30 <ais523> you saying the original idea was wrong, that is
23:09:46 <elliott_> 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 <evincar> 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 <evincar> By user I mean programmer of course.
23:09:56 <elliott_> evincar: I'll answer after finishing explaining to ais523
23:10:25 <elliott_> ais523: Object X on computer B wants to give (an object reference to Z) to object Y on computer A.
23:10:40 <elliott_> ais523: B/X wants to give (an object reference to B/Z) to A/Y.
23:10:58 <elliott_> With me? (We assume B wants A to access Z via B for simplicity.)
23:11:40 <ais523> I mean, where the data is physically stored
23:11:46 <ais523> which is irrelevant from the user's point of view
23:11:54 <ais523> but very relevant wrt the network protocol
23:12:00 <elliott_> ais523: OK, so let's also assume that B/X has the public key of A/Y.
23:12:07 <ais523> that's a sensible assumption
23:12:11 <ais523> public keys are known by everyone
23:12:17 <elliott_> (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 <zzo38> Would you have to make some way of doing this using LLVM?
23:12:56 <elliott_> 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 <elliott_> zzo38: no, this is a higher-level detail than that
23:13:22 <elliott_> ais523: (a public key, a socket)
23:13:38 <elliott_> ais523: (B/Z's public key, a socket to B)
23:13:47 <elliott_> ais523: The socket can be sent as (host, port) of course.
23:13:51 <elliott_> It's allocated for the purpose.
23:13:58 <ais523> hmm, it seems to me as if both halves of your keypair are private
23:14:09 <ais523> we need better terminology
23:14:14 <ais523> I mean, you're saying "public key"
23:14:21 <elliott_> ais523: You can encrypt messages to a public key with GPG, can you not?
23:14:21 <ais523> ah, and the socket is guessable
23:14:26 <ais523> so why does it need encryption?
23:14:36 <elliott_> ais523: Ummm, this is a different socket. You are misunderstanding.
23:14:43 <elliott_> Let me tell you the whole model.
23:14:53 <ais523> what I mean is, is B/Z's public key public knowledge?
23:15:03 -!- madbr has joined.
23:15:17 <elliott_> It's sent over the wire in case A/Y doesn't know it.
23:15:39 <ais523> so why is the pubkey/socket pair encrypted?
23:15:47 <ais523> the host is probably obvious, and there's a reasonably small number of ports
23:15:59 <elliott_> ais523: OK, awit, I made a mistake.
23:16:00 <ais523> so the encryption doesn't seem to gain you anything
23:17:25 -!- madbr has quit (Read error: Connection reset by peer).
23:17:43 <elliott_> 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:46 <ais523> 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 <elliott_> A/Y checks the signature, sees that it's correct, and knows that it has received B/Z.
23:18:20 <ais523> "sends the time" is to prevent replay attacks?
23:19:03 <elliott_> 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 <elliott_> to B/Z's key, __and encrypted with A/Y's public key__.
23:19:08 <elliott_> A/Y decrypts it, checks the key, and we're done.
23:19:15 <elliott_> 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 <elliott_> (It actually tells the operating system, but again, this is an abstraction.)
23:19:43 <elliott_> B/Z will not give itself to anyone who isn't marked as about to be given itself.
23:19:52 <elliott_> i.e. it will not give itself to anyone who can't sign with their key.
23:20:11 <elliott_> 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:19 <elliott_> ais523: In fact, hosts become an optimisation.
23:20:27 <elliott_> ais523: You could have only two operations in the entire networking stack:
23:20:31 <elliott_> - Send packet to entire internet;
23:20:34 <elliott_> - Receive a packet from the internet.
23:20:34 <ais523> so, hmm, is this giving B/Z itself? or a copy?
23:20:47 <elliott_> ais523: What's the difference? Objects are immutable.
23:20:57 <evincar> elliott_: You functional devil, you.
23:21:01 <ais523> ah, fair enough, that's something I didn't grasp about how you were using "object"
23:21:16 <elliott_> ais523: It's intentionally vague. But objects being mutable seems to mess up the model.
23:21:19 <ais523> so the only possible way to delete something is to remove all references to it
23:22:11 <evincar> elliott_: Well, mutating a singly-referenced object can be a good optimisation for destroying and replacing it.
23:22:18 <ais523> I'm puzzled at how you can implement Internet-wide garbage collection
23:22:27 <ais523> or how this will work without it
23:22:28 <elliott_> ais523: One cool thing is this:
23:22:31 <elliott_> Who sent a packet is also irrelevant.
23:22:34 <ais523> evincar: that is indeed just an optimisation, though
23:22:39 <elliott_> Destinations are irrelevant, sources are irrelevant.
23:23:02 <elliott_> 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 <elliott_> Optimising it... well, that can come later.
23:23:32 <elliott_> 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 <ais523> elliott_: in case you garbage-collect an object that another system was about to ask you for a copy of
23:24:07 <ais523> e.g. X wants to pass a copy of Z to Y
23:24:15 <ais523> then it forgets about Z
23:24:17 <evincar> elliott_: Yeah, you run into synchronisation issues with the garbage collector there.
23:24:22 <elliott_> ais523: I think that cross-network pointers are weak references by definition
23:24:25 -!- madbr has joined.
23:24:29 <elliott_> ais523: but, umm, if they're not:
23:24:32 <ais523> that fits in with my thinking too
23:24:37 <elliott_> ais523: Obviously X stores all the people waiting to get Z
23:24:42 <ais523> in that the language should only allow you to express operations that make physical sense
23:24:49 <elliott_> ais523: If pointers just expire after a certain amount of time, then that gets removed
23:24:51 <elliott_> And those all count as references
23:24:52 <ais523> X storing all the people waiting to get Z is very vulnerable to denial-of-service
23:25:02 <ais523> and bringing time into the matter seems really awkward and un@like
23:25:05 <elliott_> so that it knows the generated keys
23:25:15 <ais523> shouldn't /Z/ be storing that info?
23:25:28 <elliott_> umm, I'm mixing up machines and objects
23:25:32 <elliott_> can you switch to the machine/object notation for objects?
23:25:44 <elliott_> <ais523> e.g. X wants to pass a copy of Z to Y
23:25:44 <elliott_> <ais523> then it forgets about Z
23:26:00 <elliott_> note that if I could avoid using TCP, the machine part is irrelevant
23:26:06 <ais523> and "it" = "then X forgets about Z"
23:26:18 <ais523> also, UDP sounds like a better fit for what you're doing
23:26:22 <elliott_> e.g. B/X wants to pass a copy of B/Z to A/Y
23:26:51 <elliott_> 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:27:05 <elliott_> (I was going to say "sets the variable holding B/Z to null", but, haha, functional)
23:27:09 <ais523> elliott_: yes, for instance
23:27:15 <ais523> or "the variable holding B/Z goes out of scope"
23:27:20 <ais523> which works both functionally and imperatively
23:27:30 <elliott_> <ais523> also, UDP sounds like a better fit for what you're doing
23:27:51 <elliott_> ais523: And we assume that the only thing with a reference to B/Z locally is B/X?
23:27:55 <elliott_> So that when it goes out of scope, B/Z is (locally) garbage
23:28:18 <ais523> I think using weak pointers is the best solution here
23:28:34 <elliott_> 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 <ais523> "pointer" carries extra baggage I'm not happy with in this ontext
23:28:41 <elliott_> And those can count as references
23:28:49 <elliott_> So time is unavoidably a factor
23:28:53 <ais523> elliott_: and expires them if the other side is being slow?
23:29:02 <elliott_> I think they count as references without any special support
23:29:09 <elliott_> Just use a tuple database or whatever
23:29:17 <elliott_> And store (Z, gen_pubkey, recv_pubkey)
23:29:55 <elliott_> ais523: B/X can cheat A/Y out of B/Z
23:29:59 <elliott_> oh wait, B/X can lie to A/Y anyway
23:30:02 <elliott_> by just sending a junk reference
23:30:12 <ais523> because it was A/Y that asked it for the reference
23:30:22 <elliott_> I was thinking it could snap up B/Z before A/Y does, because it knows the private key used
23:30:26 <ais523> B/Z can also cheat A/Y out of itself, but arguably, in that case it was lying to B/X
23:30:58 <elliott_> 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 <elliott_> But optimising it can come later
23:31:25 <ais523> objects need keys only if something's trying to pass them over the network
23:31:38 <ais523> I hope your computers have thermal noise diodes in, btw, or they're going to run out of entropy pretty quickly
23:31:52 <elliott_> Well, I think I can avoid explicitly using GPG keys or whatever
23:32:07 <elliott_> 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 <elliott_> so I have to layer this on top of... probably UDP, lower overhead
23:32:34 <elliott_> 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 <ais523> elliott_: it's not so much "filter out", but routers are generally told not to forward things they don't understand
23:32:44 <elliott_> So is the destination field, but it helps for routing. :p
23:32:58 <ais523> so you'll send the message and it just won't be routed
23:33:13 <ais523> you can just ignore the source header, IIRC it can be faked anyway
23:33:29 <ais523> your objects contain keys
23:33:34 <ais523> they'll be way longer than four bytes
23:33:52 <ais523> no, the private keys you were referring to earlier
23:33:54 <elliott_> With this model, you don't actually need objects to have any global name at all
23:34:01 <elliott_> ais523: oh, well right, like I said I'm optimising that :P
23:34:07 <elliott_> ais523: for instance, you can send all of an object's dependencies in one go
23:34:14 <elliott_> rather than opening a communication channel for each
23:34:36 <elliott_> 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 <elliott_> but that seems rather unlikely
23:35:15 <ais523> 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 <Sgeo_> I think ais523's question messed with my head
23:35:21 <ais523> which is a really useful optimisation
23:35:39 <elliott_> ais523: the question is how to abstract it entirely from the user
23:35:42 <Sgeo_> elliott_, about whether he could persuade me not to buy a Sony ereader for no reason
23:35:57 <elliott_> Sgeo_: oh wow, I'm totally going to logread
23:36:06 <Vorpal> Sgeo_, about when in the logs?
23:36:14 <ais523> elliott_: I asked if (I could persuade Sgeo_ to boycott Sony without telling him the reason)
23:36:43 <ais523> (sorry about the parens, I couldn't figure out how else to make the sentence unambiguous)
23:36:47 <elliott_> ais523: Sgeo_ is pro at understanding
23:37:04 <ais523> 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 <Vorpal> 10:31:59 <ais523> Sgeo_: can I persuade you to mindlessly boycott Sony without telling you why? <-- ah I found it
23:37:11 <elliott_> I take it Sgeo_ is avoiding the Kindle because he's a hipster
23:37:19 <elliott_> if he's considering Sony products it can't be for ethics
23:37:33 <Sgeo_> elliott_, I'm actually considering getting a Kindle now, but not a current Kindle
23:37:36 <ais523> elliott_: shush, you'll let him know why he's supposed to boycott Sony!
23:37:47 <elliott_> ais523: umm, but I just realised I don't completely recall myself
23:37:59 <elliott_> ais523: I have this tendency to remember opinions and drop their justifications to save storage space; this is probably dangerous
23:38:28 <ais523> 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 <ais523> and couldn't boycott further
23:38:34 * elliott_ appends list to things he needs to master to create @: networking
23:38:39 <elliott_> and oh dear, I hate networking
23:38:41 <Sgeo_> 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 <ais523> *appends to list of things
23:39:04 <elliott_> it's a set, anyway, not a list
23:39:07 <monqy> the list is named "things he needs to master to create @"
23:39:19 <ais523> can you append to a set?
23:39:33 <Vorpal> 10:51:58 <ais523> 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 <ais523> you can probably append to a set in PHP
23:39:48 <ais523> Vorpal: the word has a technical meaning
23:39:53 <elliott_> ais523: The thing with this networking model is that I'm not sure what it looks like inside the OS itself...
23:40:19 <elliott_> 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 <Vorpal> ais523, so it was a terrible pun in the context?
23:40:28 <elliott_> (not being able to access it at all isn't an issue here because of the new model)
23:40:47 <elliott_> ais523: At the same time, it's hard to unify local and remote objects without... unifying them
23:41:31 <elliott_> 22:58:51: <pikhq_> So, the Treasury has the authority to mint coins of arbitrary designation.
23:41:31 <elliott_> 22:59:10: <pikhq_> We could remain "solvent" by having them mint a $2 trillion coin. And deposit it in the Fed.
23:41:31 <elliott_> 22:59:25: <pikhq_> And have a nice, tidy hyperinflation problem.
23:41:34 <elliott_> oh my god i want to see that coin
23:41:54 <ais523> I'm not at all convinced that unifying remote/local is useful, mostly because I'm generally offline
23:42:07 <ais523> 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 <Vorpal> I'm generally offline when I'm on my laptop
23:42:17 <evincar> 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 <Vorpal> because university wlan is so shitty :P
23:42:33 <elliott_> ais523: Well, with all due respect, I find your opinions on the matter of the internet to be... outdated. :)
23:42:42 <pikhq> ais523: They have permission to mint. However much they want.
23:42:47 <elliott_> ais523: Not that @ won't be useful for you, but the internet is pretty important to @.
23:43:02 <evincar> 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:20 <ais523> pikhq: so presumably the reason why you mint one G$2 coin rather than a trillion $2 coins is just one of practicality?
23:44:02 <elliott_> 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:11 <elliott_> Of course it's more a nice image than an intellectual breakthrough.
23:44:27 <elliott_> But I do think "every computer a fortress" is clearly the wrong way to go about things by now.
23:44:36 <elliott_> (Note: I don't like the Cloud(tm).)
23:44:55 <elliott_> <evincar> 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 <elliott_> It's hard to say you want "some object".
23:45:24 <elliott_> 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 <elliott_> which will give you pointers to other objects
23:45:42 <elliott_> <evincar> 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 <elliott_> evincar: the problem is that you think the problem only applies to developers
23:45:53 <elliott_> all these details matter at the user-level too
23:46:02 <elliott_> when you hear "object" in @, that's not a system detail, that's something the user interacts with too
23:46:26 <evincar> elliott_: Right, I should've used the hypernym. :P
23:47:02 <evincar> 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 <elliott_> 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 <evincar> elliott_: I always *mean* the remote copy. Whether I get it is not up to me, though.
23:47:54 <elliott_> 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 <elliott_> So that's a leaky abstraction.
23:48:28 <elliott_> 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 <elliott_> So the abstraction leaks, and it's questionable whether it was a good idea in the first place.
23:48:56 <Vorpal> <elliott_> 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 <Vorpal> I use it to easily move stuff over gbit ethernet
23:49:12 <Vorpal> between laptop and desktop
23:49:14 <evincar> elliott_: So you bundle filesystem calls to only be done locally, then sent remotely. Or something.
23:49:25 <Vorpal> elliott_, I never even tried sshfs to a remote server. that would be mad
23:49:29 <elliott_> Vorpal: [word meaning "I have no response"]
23:49:35 <elliott_> ais523: I invented yr word, see above
23:49:47 <evincar> If it takes me 200ms to get a directory listing, that's still tolerable over a 2ms listing.
23:49:48 <elliott_> evincar: umm, @ has no filesystem
23:50:01 <elliott_> Vorpal: what an infuriatingly unanswerable question
23:50:03 <Vorpal> elliott_, I was just agreeing with you
23:50:06 <elliott_> evincar: and if I unify local and remote objects, there is nothing like bundling
23:50:13 <elliott_> Vorpal: that needs a response?
23:50:25 <Vorpal> elliott_, why did you try to answer it
23:50:42 <evincar> 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> <elliott_> Vorpal: [word meaning "I have no response"] <-- no one required your response
23:50:58 <evincar> elliott_: Even if it's hidden, it's not going away.
23:51:08 <elliott_> Vorpal: you usually ping people repeatedly when they don't respond
23:51:32 <Vorpal> err, do I? and how is thated related to this?
23:51:46 <Vorpal> I usually do it when there are a lot of talking in the channel
23:51:51 <elliott_> Vorpal: Well, in my experience you do; and it's related because I was letting you know I'd read what you said
23:52:21 -!- bsmntbombdood has quit (Quit: leaving).
23:52:31 <elliott_> 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 <zzo38> I wanted to do constraint analysis in LLVM. I don't know if they have that.
23:53:57 <evincar> elliott_: Heh, I guess I'll have to come back. And do some log-skimming.
23:54:27 <elliott_> There's about three years of logs where @ is mentioned, if you'd like to go on a binge :-P
23:55:20 <Vorpal> elliott_, that is about 1.8 years worth of reading in total I estimate, probably 4 months of reading about @
23:55:37 <elliott_> Vorpal: Surely less; "elliottOS" didn't come up very often
23:55:46 <Vorpal> elliott_, several weeks at least
23:56:02 <evincar> Dammit, elliott_, why didn't you pick a more searchable working title? >:|
23:56:15 <elliott_> evincar: you may enjoy codu's rsync service.
23:56:24 <zzo38> 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 <elliott_> evincar: do !logs for more info :P
23:56:36 <elliott_> then grep for elliottOS\|ehirdOS\|@, I suppose
23:56:41 <elliott_> then grep for elliottOS\|ehirdOS\|\b@\b, I suppose
23:57:19 <Vorpal> elliott_, what was that nick starting with t that you used?
23:57:31 <elliott_> umm, I don't recall one starting with t
23:57:48 <Vorpal> elliott_, was it ever tushoOS?
23:57:52 <elliott_> I used that until I got tired of puns (mostly blaming augur)
23:58:02 <Vorpal> elliott_, what puns? I forgot
23:58:09 <elliott_> 02:07:13: <oerjan> <elliott> WHAT COULD POSSIBLY. BUT _POSSIBLY_. GO WRONG???????
23:58:17 <elliott_> Vorpal: NO I HAVE WASHED MY HANDS AND ALSO AUGUR IS HERE.
23:58:29 * augur grabs elliott_'s tusho
23:58:34 <augur> those kind of puns, Vorpal!
23:58:51 <elliott_> 02:14:53: <oerjan> <Taneb> The person who formulated the Sanskrit language
23:58:51 <elliott_> 02:15:38: <oerjan> essentially inventing something like BNF millennia before bachus-naur were born, afaiu
23:58:51 <elliott_> 02:16:06: <oerjan> and, iirc, with a smattering of Perligata, except sanskrit rather than latin.
23:58:51 <elliott_> "millennia" -- are we talking about a programming language called Sanskrit, or Sanskrit itself? :D
23:59:22 <evincar> And this is why I come here.