←2010-09-20 2010-09-21 2010-09-22→ ↑2010 ↑all
00:00:04 <ais523> unfortunately, that makes it more likely to pass than if a politician proposed it
00:01:02 <pikhq> Thankfully, it was proposed by the FCC.
00:01:23 <pikhq> Who can tell them to go suck a dick without fear of repercussion (because loud morons won't complain about it).
00:01:31 <pikhq> Erm. Proposed *to* the FCC.
00:15:57 <alise> I need a DHT expert.
00:15:59 <alise> You, pikhq! Be a DHT expert.
00:19:19 <alise> Ha-hem.
00:19:29 <alise> <alise> nooga: sane style or stupid style?
00:19:29 <alise> <nooga> stupid
00:19:32 <alise> i mean dfa/nfa etc
00:19:35 <alise> or crappy
00:21:28 * alise decides that the only way to get aliseOS done is to split it into tiny, tiny little research experiments of different components
00:23:36 -!- Leonidas has quit (Ping timeout: 265 seconds).
00:24:58 -!- Leonidas has joined.
00:26:17 <pikhq> alise: This is probably the best way of getting any large project done.
00:26:42 <alise> pikhq: Except at the end I can't combine them all, since they'll be custom-built. Of course, this doesn't matter -- there is no end!
00:26:55 <alise> Never has there been a more NIH and more slow-paced project than aliseOS.
00:27:13 <alise> Even Feather has the beginnings of an implementation and a preliminary syntax.
00:28:37 -!- Mathnerd314 has quit (Disconnected by services).
00:28:54 -!- Mathnerd314_ has joined.
00:29:07 <alise> pikhq: Anyway, you're Consultant #1. I have decided to start numbering my consultants, as I have discovered I am too ridiculous to name them.
00:29:30 -!- Mathnerd314_ has changed nick to Mathnerd314.
00:32:00 -!- augur has quit (Ping timeout: 252 seconds).
00:42:08 <alise> I wonder if it is physically possible for anyone to read everything Mencius Moldbug has written.
00:47:58 -!- BeholdMyGlory has quit (Remote host closed the connection).
00:54:51 <ais523> well, I imagine Mencius Mlodbug did
00:55:02 <ais523> *Moldbug
01:02:45 <alise> ais523: i think he multitasks
01:02:53 <alise> making toast, tap on the keyboard a little
01:10:18 -!- FireFly has quit (Quit: swatted to death).
01:16:37 -!- augur has joined.
01:24:17 -!- Sgeo has joined.
01:25:34 <Sgeo> Are logfiles compatible across different versions of ddrescue?
01:25:44 <Sgeo> I'm thinking of using Parted Magic's ddrescue to finish it
01:26:02 <Sgeo> Also: If I use my old computer, there is a risk that, if there's a blackout, it will stop
01:26:10 <Sgeo> The logfile will still be intact, right?
01:29:30 -!- ais523 has quit (Remote host closed the connection).
01:31:32 * Sgeo wonders if alise is awake and if so, if alise is simply refusing to talk about this issue
01:32:53 -!- augur has quit (Ping timeout: 272 seconds).
01:33:42 <alise> i didn't notice
01:38:37 <Sgeo> My current plan: Wait to get an external HD mount. Set up old computer to do the ddrescue
01:38:44 <Sgeo> Be patient
01:41:55 -!- trinithis has quit (Quit: Leaving).
01:42:15 -!- trinithis has joined.
01:57:01 <alise> goodnight
01:57:02 <alise> bye
01:57:07 -!- alise has quit (Quit: Leaving).
01:57:18 -!- alise has joined.
01:57:23 <alise> Sgeo: although one last thing.
01:57:33 <alise> think hard about whether the things on that drive truly make you happier.
01:57:37 <alise> bye
01:57:38 -!- alise has quit (Client Quit).
02:00:04 -!- augur has joined.
02:06:01 <Sgeo> ...?
02:19:10 <Sgeo> My passwords.
02:19:12 <Sgeo> My favorites
02:19:25 <Sgeo> Chat logd
02:19:27 <Sgeo> *chat logs
02:27:51 -!- lament has joined.
02:38:58 -!- bsmntbombdood has joined.
04:12:22 <myndzi> :-/
04:29:23 <Sgeo> Current battle plan: Help rebuild my dad's 2002 computer. Do not accidentally fry motherboard. Use computer to finish the ddrescue
04:32:11 <Sgeo> alise, I'm forcibly undeferring you
04:37:56 -!- augur has quit (Remote host closed the connection).
04:38:10 -!- augur has joined.
04:41:52 -!- augur has quit (Remote host closed the connection).
04:42:27 -!- augur has joined.
04:50:42 -!- augur has quit (Remote host closed the connection).
04:51:03 -!- augur has joined.
05:02:37 -!- sshc has quit (Ping timeout: 265 seconds).
05:03:23 -!- sshc has joined.
05:25:55 <Sgeo> My busy message on my IM accounts: "Do Sgeos dream of electric esolangs?"
05:30:32 -!- wareya_ has joined.
05:33:39 -!- wareya has quit (Ping timeout: 240 seconds).
05:49:04 -!- augur has quit (Remote host closed the connection).
05:49:17 -!- augur has joined.
06:00:50 -!- augur has quit (Remote host closed the connection).
06:00:59 -!- augur has joined.
06:09:47 -!- calamari has joined.
06:20:24 -!- calamari has quit (Quit: Leaving).
06:54:48 -!- webquint has joined.
06:55:25 <webquint> someone suggest me a language on the wiki that I haven't looked at yet and isn't the same old thing.
07:00:10 -!- tombom has joined.
07:04:28 <Gregor> webquint: Glass?
07:05:01 <webquint> "developed by Gregor Richards" :D
07:05:14 <Gregor> OK, I could be biased :P
07:06:02 <Gregor> At least I didn't say "Glass, 2L, ORK and FYB!"
07:08:03 <webquint> well, I was just looking at the *L's so that would be impertinent anyway
07:08:59 <webquint> what's the most unique thing about glass? what's the thing i never saw before? or is it just the way things i've seen before have been putted together?
07:12:38 <webquint> it hasn't been long since i looked at fyb either
07:18:59 <augur> anyone familiar enough with scheme's call/cc to answer some questions?
07:19:10 <lament> hopefully everybody in the channel
07:19:13 <augur> :p
07:19:52 <augur> lament: assumie (define (f return) (return 2) 3)
07:20:00 <augur> (display (call/cc f)) ; displays 2
07:20:03 <augur> from wikipedia
07:21:42 <lament> i got lost on (define (f return) (return 2) 3)
07:22:37 <lament> is that valid syntax?
07:22:53 <lament> is that an implicit begin block?
07:26:02 -!- augur has quit (Ping timeout: 265 seconds).
07:26:19 <lament> nooo my favourite gay person is gone
07:27:00 * Gregor reappears.
07:27:28 <Gregor> webquint: Glass is OO, which is rare for esolangs (although certainly not rare for real languages). Glass is stack-based, which is rare both for OO and for real languages.
07:28:22 -!- augur has joined.
07:29:35 <Gregor> lament: There, he's back.
07:29:42 <Gregor> lament: Celebrate!
07:29:45 <webquint> Gregor: ORK amused me more.
07:29:47 <lament> yay celibation
07:30:05 <Gregor> lament: That's nothing to yay about :P
07:30:08 <webquint> But not as much as Schrodilang. That one wins the night for me.
07:30:20 <augur> :(
07:30:23 <augur> my client is all wonky
07:31:21 <lament> augur: (define (f return) (return 2) 3)
07:31:26 <lament> is that an implicit begin block?
07:31:30 <augur> lament: http://pastebin.org/1016674
07:31:35 <augur> from similar askings in #haskell
07:32:48 <lament> uh
07:33:01 <lament> your "explanation" is more like an attempt to make things more confusing than they are
07:33:10 <lament> it's not that it's wrong
07:33:17 <augur> lament: maybe. its very clear and sensible to me :)
07:33:27 <lament> but i can't understand it despite knowing what call/cc does
07:33:43 <augur> ok, can you explain then how call/cc works, implementation-ish-wise?
07:34:11 <lament> (call/cc f) calls f with the current continuation, right?
07:34:21 <lament> just like the name says
07:34:22 <augur> sure, but i dont know what the current continuation is
07:34:30 <lament> ok then that's the important bit
07:34:32 <augur> im trying to understand how thats built up
07:34:40 <lament> continuations are still a concept in absence of call/cc
07:34:57 <lament> a continuation is the rest of your program
07:35:03 <augur> ok first let me just try this right
07:35:23 <lament> it's easiest to understand them in an imperative language without any state
07:35:25 <augur> using f from before
07:35:36 <lament> just a bunch of statements
07:35:39 <lament> print "hi"
07:35:40 <augur> (+ 1 (* 2 (call/cc f))) == ???
07:35:41 <lament> print "blah"
07:35:49 <lament> then the continuation is literally the rest of your program
07:36:06 <lament> when you're on the line print "hi", your continuation is just print "blah"
07:36:33 <lament> but because scheme has expressions and not statements, it gets slightly more complicated
07:37:12 <lament> the continuation of (call/cc f) in (+ 1 (* 2 (call/cc f))) is (+ 1 (* 2 ...))
07:37:17 <lament> it's the unevaluated bit
07:37:22 <augur> ok but
07:37:41 <lament> and normally ... is replaced by whatever (call/cc f) is evaluated to right?
07:37:43 <augur> so its the highest possible thing being evaluated at any given moment?
07:37:51 <augur> or the smallest?
07:37:54 <augur> i mean
07:37:55 <lament> it's the rest of your program
07:37:59 <augur> ok
07:38:11 <augur> so its genuinely program-scope
07:38:22 <lament> yes
07:38:31 <augur> ok
07:38:38 <augur> so then what happens is...
07:38:41 <lament> now what call/cc does is
07:38:53 <lament> it allows you to pass anything to the continuation
07:38:54 <augur> you say (eval '(+ 1 (* 2 (call/cc f)))) ...
07:39:01 <augur> unwind this evaluation for me, if you can
07:39:12 <lament> i said that conceptually the continuation is (+ 1 (* 2 ...))
07:39:16 <augur> right
07:39:20 <lament> but specifically in scheme
07:39:38 <lament> it's a function that takes a parameter and places it in the ...
07:39:46 <augur> right
07:39:50 <lament> (lambda (x) (+ 1 (* 2 x)))
07:39:53 <augur> sure
07:40:10 <lament> so that's what f gets called with
07:40:26 <augur> right
07:40:27 <lament> except it's not just (lambda (x) (+ 1 (* 2 x)))
07:40:33 <lament> it's actually the outer expression
07:40:42 <augur> the outer expression?
07:40:52 <lament> yes
07:40:56 <lament> when it is evaluated
07:41:01 <lament> it is the (+ 1 (* 2 (call/cc f))) that was evaluated
07:41:15 <lament> not some new lambda
07:41:59 <lament> in terms of control flow
07:42:01 <augur> ok, so .. what does that mean? how can it be the ... that was evaluated?
07:42:08 <augur> you mean like in terms of environments or what?
07:42:11 <lament> what this means in terms of control flow
07:42:19 <lament> (define (f return) (return 2) 3)
07:42:27 <lament> (display (call/cc f))
07:42:42 <lament> we call f with the current continuation which is (display ...)
07:42:43 -!- webquint has quit (Quit: Page closed).
07:43:02 <lament> we start executing f and have to evaluate (return 2)
07:43:37 <lament> return is the continuation
07:44:03 -!- calamari has joined.
07:44:04 <lament> when we call it control flow returns into (display ...)
07:44:14 <lament> the outer expression of your program
07:44:23 <lament> and ... becomes 2
07:44:47 <lament> evaluation of f abruptly terminates
07:44:56 <augur> well hold up tho
07:44:57 <lament> we never actually finish evaluating it
07:45:03 <augur> because eval isnt just going to say aha call f!
07:45:07 <lament> 3 never gets evaluated
07:45:18 <lament> call/cc calls f
07:45:40 <augur> its going to say ok, '(display (call/cc f)) thats an application, so thats (apply (eval (car that)) (map eval (cdr that)) env)
07:45:42 <augur> etc etc
07:45:52 <augur> or whatever the interpreter is doing there
07:46:09 <lament> sure
07:46:25 <augur> so unwind it from there if possible
07:47:00 <lament> (map eval (cdr that)) env) returns 2
07:47:05 <lament> at the moment that return gets called
07:47:53 <augur> but why is it going to return 2
07:48:04 <lament> i don't understand the question
07:48:11 <augur> itll just be (eval '((call/cc f)))
07:48:12 <lament> that's how call/cc works?
07:48:16 <lament> yes
07:48:23 <lament> and?
07:48:27 <lament> call/cc is a magical function
07:48:30 <augur> so whats going on with the stack and so forth
07:48:34 <augur> well i KNOw its magical
07:48:38 <augur> i want to UNDERSTAND the magic!
07:48:50 <lament> call/cc calls f
07:48:57 <lament> and passes it the current continuation :(
07:49:07 <lament> the current continuation is a magical object
07:49:19 <lament> how does call/cc get it, by magic
07:49:21 <fizzie> lament: I'm not sure if this was answered yet, but (define (f return) (return 2) 3) = (define f (lambda (return) (return 2) 3)) and lambda's have "an implicit begin block" in the sense that you can put multiple expressions in, and it works like in a begin. I've seen at least some implementations (incl. my own) that actually translate multi-expression lambdas into single-begin-block lambdas for convenience.
07:49:32 <lament> fizzie: thanks
07:49:46 <lament> augur: the current continuation really is magical
07:49:57 <lament> it is created by magical means
07:50:05 <lament> it encapsulates the state of the execution
07:50:11 <lament> so it pretty much has to be magical
07:50:19 <augur> you're useless :|
07:50:31 <lament> no that's how it works
07:50:45 <lament> call/cc does magic
07:50:52 <lament> it collects all the state, stores it somewhere
07:50:57 <augur> ok sure
07:51:16 <augur> so it starts evaling (+ 1 (* 2 (call/cc f)))
07:51:20 <lament> in such a way that it becomes possible to return to that moment of execution
07:51:23 <augur> builds up some call stacks or whatever
07:51:26 <augur> hits (call/cc f)
07:51:27 <augur> then what
07:51:45 <lament> call/cc is evaluated, does its magic
07:51:48 <lament> which involves
07:51:55 <lament> copying those call stacks somewhere
07:51:58 <lament> copying the envs
07:52:10 -!- tombom has quit (Quit: Leaving).
07:52:12 <lament> and packaging this as a nice callable object, the current continuation
07:52:19 <augur> ok
07:52:35 <fizzie> I'm probably going to confuse this even more, but it doesn't necessarily involve any copying, just additional references, if your stack is just a garbage-collected heap.
07:52:44 <augur> fizzie: sure, thats fine
07:52:59 <augur> so it packages it all up as a pseudoprocthingybopper called the current continuation
07:53:00 <lament> right
07:53:06 <lament> yes
07:53:20 <augur> then it calls (f that-current-continuation)
07:53:27 <lament> now for as long as the continuation object exist, you can effectively return to that moment in time
07:53:32 <lament> by calling the continuation
07:53:44 -!- calamari has quit (Quit: Leaving).
07:53:49 <augur> right ok
07:53:50 <lament> call stack and everything else gets restored
07:54:05 <lament> and (call/cc f) itself returns the value that the continuation was called with
07:54:56 <lament> it's pretty awesome, you travel back in time but bring new information with you
07:55:03 <lament> you could win the lottery this way
07:57:18 <fizzie> Can't resist pasting the full call/cc primitive code (5 lines) in my silly little scheme-course-programming-project implementation:
07:57:21 <fizzie> mov rax, rdx
07:57:21 <fizzie> mov rdx, rdi
07:57:21 <fizzie> shl rdx, 8
07:57:21 <fizzie> mov dl, ITcont
07:57:21 <fizzie> jmp apply
07:57:25 <fizzie> That's not very much magic at all.
07:57:53 <lament> i meant magic in the sense of not being anything like scheme code
07:58:40 <lament> strange incantations in assembly don't have to be long to be powerful :)
07:59:01 <augur> lament: what would happen with (define (f return) (return 2) (return 3))
07:59:20 <lament> augur: (return 3) never gets evaluated, just like 3 never got evaluated before
07:59:29 <augur> could it ever get evaluated
07:59:34 <lament> no
07:59:46 <lament> return returns
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:36 <augur> ok, so its not a yield, its an actual return here
08:00:49 <lament> well the stack and everything else gets replaced
08:00:57 <lament> by the continuation inside return
08:01:11 <fizzie> Oh, I'm sure you could sort-of do a pure Scheme call/cc implementation, with some pretty hairy macros to CPS everything else, after which call/cc is just (define (call/cc f k) (f k k)), assuming f gets turned into (define (f return k) (return 2) (k 3)).
08:02:24 <lament> ugh :)
08:03:42 <lament> augur: the next step on the path of enlightenment for you is to figure out how CPS compares with GOTOs
08:03:52 <augur> fizzie: how hairy would the macros be? i mean, i presume you mean scheme macros, not some magic compiler macros, yeah?
08:04:19 <lament> scheme macros, pretty damn hairy
08:04:23 <augur> ok.
08:04:32 <augur> so in theory maybe some non-scheme macro would work nicely then?
08:04:33 <augur> like
08:04:34 <augur> a macro like
08:04:41 <lament> fizzie: and how would this help with envs
08:05:02 <lament> global variables
08:05:47 <augur> ?
08:05:50 <augur> /(.*)\(call/cc (.+)\).*/ => "(\2 (lambda (x) (\1 x)))"
08:06:03 <augur> that would literally rewrite the code
08:06:11 <fizzie> CPS conversion is a perfectly valid way to implement continuations, but I don't think I'd start doing it to Scheme before simplifying lets and such.
08:06:14 <augur> modulo unnecessary details
08:06:35 <lament> augur: call/cc doesn't rewrite the code it replaces the execution state
08:06:55 <lament> augur: do you know CPS?
08:07:09 <augur> lament: im saying hypothetically if you were implementing a transformation based approach
08:08:24 <lament> well again imagine your language was statements instead of expressions
08:08:35 <lament> 1. foo
08:08:38 <lament> 2. call/cc whatever
08:08:41 <lament> 3. bar
08:08:44 <augur> yes
08:08:53 <lament> then the continuation is literally 3. bar
08:09:01 <lament> so you could shove that somewhere
08:09:04 <augur> right ok
08:09:13 <lament> er, 3. bar followed by 4. terminate
08:09:24 <lament> so you know when to terminate
08:09:48 <lament> you can do this in scheme, with CPS.
08:09:54 <lament> do you know CPS?
08:10:00 <fizzie> In full CPS, your simple (* (+ 1 2) 3) would turn into something like (lambda (k) (+ 1 2 (lambda (v1) (* v1 3 (lambda (v2) (k v2))))), modulo something to deal with +/* taking a variable amount of args.
08:17:38 <augur> lament: maybe. full explicit CPS im ok with, i think
08:17:51 <augur> fizzie: also it was (+ 1 (* 2 ...)) not the other way :P
08:18:26 <lament> augur: full explicit CPS just makes continuations explicit, so there you go
08:18:35 <lament> they're the same continuations
08:18:49 <augur> lament: but im not trying to understand CPS, im trying to understand call/cc!
08:19:06 <lament> all call/cc does is call something with the current continuation
08:19:13 <lament> which is explicit with CPS and implicit otherwise
08:19:14 <augur> thats useless :P
08:21:35 <fizzie> The community-scheme-wiki has two explanations of continuations; one with the usual "explain escape continuations first, then show you can jump back in, then give a coroutine-style example" and another for C programmers comparing with setjmp/longjmp: http://community.schemewiki.org/?call-with-current-continuation
08:24:27 -!- sftp has quit (Read error: Connection reset by peer).
08:25:48 <fizzie> (I'm not claiming either introduction is an especially good one.)
08:30:57 -!- atrapado has joined.
08:34:31 -!- nooga has quit (Ping timeout: 272 seconds).
09:27:25 -!- lament has quit (Ping timeout: 264 seconds).
14:03:53 -!- oerjan has joined.
14:07:05 -!- ais523 has joined.
14:18:17 -!- ais523 has quit (Read error: Connection reset by peer).
14:22:19 -!- ais523 has joined.
14:46:01 <Vorpal> <Phantom_Hoover_> Hypothesis: all operating system ads are so obnoxious that the rage of people watching them could be used for power. Discuss. <-- I can't remember seeing an ad for an OS the last 5 years, but then I use adblock. Anyway I have no idea what they look like these days
14:46:35 <Slereah> I'M A MAC
14:46:39 <Slereah> AND I'M A PC
14:46:55 <Slereah> http://membres.multimania.fr/bewulf/Apple/1180113117597.jpg
14:49:08 <Slereah> http://membres.multimania.fr/bewulf/Apple/1180111599456.jpg
14:49:10 <Slereah> heheheh
14:49:25 <Slereah> http://membres.multimania.fr/bewulf/Apple/pic_5580970011890947492.jpg
14:49:45 <Vorpal> <Slereah> http://membres.multimania.fr/bewulf/Apple/1180111599456.jpg <-- not since a few years
14:50:35 <Vorpal> Slereah, the last one: is it about architectures or OSes?
14:51:06 <Slereah> It is about humor.
14:51:18 <Vorpal> Slereah, the last one doesn't really work
14:51:32 <Slereah> Maybe for NERDS
14:51:36 <Slereah> I still like it :3
14:52:15 <Vorpal> Slereah, like mac used to be RISC. PPC after all
14:52:39 <Vorpal> and most (all?) Dell's are x86 PCs. Plus iirc some x86 servers
14:52:54 <Vorpal> and um, GNU would be GNU/Hurd?
14:53:08 <Slereah> NEEEEEEEEEEERD
14:53:21 <Vorpal> yeah the whole thing just doesn't work
14:53:22 <Gregor> Also, SGI and Sun (Solaris I assume) and a few of the others are all UNIX.
14:53:28 <Vorpal> Gregor, indeed
14:53:31 <Vorpal> Gregor, I was getting to that
14:53:45 <Gregor> I like BeOS though :P
14:53:59 <oerjan> GN/ERD
14:54:12 <Vorpal> I don't get the DEC one as a dinosaur...
14:54:29 <Slereah> I don't get most of them
14:54:29 <Gregor> Vorpal: But ... a DEC machine ... is a dinosaur.
14:54:35 <Slereah> Though the Amiga, I got :3
14:54:41 <Gregor> Vorpal: Are you unfamiliar with the expression "X is a dinosaur"?
14:55:05 <Vorpal> Gregor, no, but um, Amigas are also dinosaurs. So are probably the Amstrads and a few more
14:55:32 <Gregor> Yeah, but DECs are dinosaurs in that they're still around being old.
14:55:40 <Slereah> The amiga joke is that there is a furry dude who is big on Amigas.
14:55:46 <Slereah> Eric Schwartz
14:55:57 <Vorpal> oh, I was wondering about that
14:56:18 <Vorpal> anyway, so what? There are probably a ton more furries using windows
14:56:34 <Slereah> Yes, but how many people are known for using amigas?
14:56:45 <Vorpal> Slereah, today? Zero
14:56:57 <Slereah> Well, one.
14:57:09 <Vorpal> I never heard of him before
14:57:19 <Gregor> I have :P
14:57:26 <Gregor> And he said "known", not "known to Vorpal"
14:57:31 <Slereah> Well, if you're not a furry or amiga enthusiast, it is not too surprising.
14:57:39 <Slereah> He made this : http://www.youtube.com/watch?v=9mg6wrYCT9Q
14:58:03 <fizzie> He's famous enough to have a not-a-complete-stub wikipedia page, anyway -- http://en.wikipedia.org/wiki/Eric_W._Schwartz
14:58:44 <Vorpal> <Slereah> He made this : http://www.youtube.com/watch?v=9mg6wrYCT9Q <-- wtf?
14:58:53 <Slereah> I don't know!
14:59:00 <Vorpal> is it a portal reference as well?
14:59:05 <Slereah> Nah
14:59:09 <Slereah> He just liked the song
14:59:13 <Slereah> And made it fit to Amiga
14:59:17 <Vorpal> said "aperature science" somewhere in there
14:59:26 <Slereah> Yes, because the song is from Portal
14:59:29 <Vorpal> ah
14:59:30 <Vorpal> never played portal to end
14:59:33 <Slereah> (Also "Black Mesa")
14:59:35 <Vorpal> I got bored quite quickly
14:59:36 <Slereah> You should
14:59:40 <Slereah> Quickly?
14:59:48 <Slereah> The game takes like an afternoon to finish
15:00:07 <Vorpal> Slereah, well, about a bit after the last test room it got very boring
15:00:50 <Slereah> You should try to finish it.
15:00:52 <Slereah> Great ending.
15:00:59 <Slereah> And not very long.
15:01:03 <Vorpal> Slereah, not my genre. Puzzle isn't just my style
15:01:14 <Vorpal> Slereah, nor the first person perspective
15:01:26 <Slereah> What is your style?
15:01:39 <Vorpal> Slereah, third person RPG or non-3D RPG
15:01:44 <Vorpal> oh and rougelike
15:01:49 <Slereah> Did you play Torment?
15:02:02 <Vorpal> Slereah, never even heard the name.
15:02:06 <Vorpal> Slereah, I love NWN1 btw
15:02:20 <Slereah> Go play it
15:02:23 <Slereah> RIGHT NOOOOW
15:02:27 <Vorpal> Slereah, ?
15:02:30 <Vorpal> Slereah, I never heard of it
15:02:36 <Slereah> Torment is widely considered the best RPG :3
15:02:37 <fizzie> Planescape: Torment.
15:02:41 <fizzie> Yes, it is the good.
15:02:43 <Vorpal> ah that is a bit more info
15:02:56 <Vorpal> Slereah, maybe next holiday, if it runs on low end systems
15:03:07 <Slereah> The game is 12 years old
15:03:09 <Slereah> It should.
15:03:09 <fizzie> It was released in '99.
15:03:12 <Vorpal> ah no problem then
15:03:18 <Slereah> PROTIP
15:03:22 <Slereah> Buy the DVD version.
15:03:23 <Vorpal> wine or what?
15:03:31 <Slereah> CD version is very hard to run on modern systems
15:03:32 <Vorpal> (I'm not going to install windows)
15:03:46 <Slereah> Wine it is, I guess
15:03:48 <fizzie> It hasn't always been very Wine-friendly in all Torment/Wine version pairs, but it should be doable.
15:04:06 <Vorpal> well, then I might just as well skip it
15:04:11 <Slereah> Well, the DVD version runs fine on modern systems, so I guess it should run
15:04:34 <Vorpal> Slereah, my cpu is from 2006
15:04:42 <Vorpal> Slereah, or was it 2004?
15:04:51 <Vorpal> early 64-bit sempron anywayt
15:04:52 <Vorpal> anyway*
15:05:04 <Slereah> It is not a very demanding game
15:05:11 <Vorpal> Slereah, so why would a dvd version be better
15:05:15 <fizzie> Er, well, the official system requirements call for "200MHz CPU w/ MMX, 32MB RAM"; I really don't think that should be a problem.
15:05:17 <Slereah> It had good graphics for the era, but well, that was 99.
15:05:22 <Vorpal> and um, I don't have any money to spend on it
15:05:32 <Slereah> The CD version was made for windows 98.
15:05:36 <Slereah> And old computers
15:05:39 <Vorpal> hm okay
15:05:47 <Slereah> It fucks up a lot on recent video cards
15:05:57 <Slereah> So they rereleased it recently as a DVD
15:06:00 <Slereah> Also you can
15:06:01 <Vorpal> and what made the newer version want a DVD?
15:06:02 <Slereah> PIRATE IT
15:06:16 <Vorpal> I mean, does it take more space?
15:06:17 <Slereah> Because nowadays nobody uses CDs anymore for games
15:06:33 <Slereah> Also IIRC the original came on 2 CDs
15:06:38 <Slereah> Or 4 for one version
15:07:01 <Vorpal> "It takes place in Planescape, an Advanced Dungeons & Dragons (AD&D) fantasy campaign setting. The game's engine is a modified version of the Infinity Engine, which was also used for BioWare's Baldur's Gate, a previous AD&D game set in the Forgotten Realms." <--- okay *that* looks promising
15:07:11 <fizzie> You can probably play Torment with GemRB (a portable open-source Infinity Engine replacement) some day, but not with the current beta, which only does BG1/BG2/Icewind Dale.
15:07:12 <Slereah> Yeah.
15:07:19 <Vorpal> hm I forgot, did NWN1 use that engine too?
15:07:19 <Slereah> It is very story-oriented
15:07:26 <fizzie> No, NWN went with 3D.
15:07:34 <Vorpal> Slereah, good, but something to save for when I don't have lots of deadlines looming ahead
15:07:41 <Slereah> k
15:07:44 <Vorpal> fizzie, oh so this is isometric?
15:07:50 <Slereah> Yeah.
15:07:54 <ais523> apparently, the amount of text in Planescape: Torment's dialog trees is about the same amount of text as is found in one volume of the Encyclopedia Britannica
15:07:59 <Slereah> Also, if you want another good RPG : Arcanum
15:08:03 <Vorpal> Slereah, ever played any game from the avernum series?
15:08:06 <ais523> also, you can complete the entire game with only two combats
15:08:12 <Slereah> Doesn't ring a bell
15:08:14 <Vorpal> Slereah, a mix of RPG/adventure
15:08:20 <fizzie> Torment is I think widely considered best, or at least most interesting, of the Infinity Engine games.
15:08:24 <Vorpal> Slereah, probably only well known on classic mac os
15:08:31 <Vorpal> Slereah, spiderwebsoftware
15:08:36 <Vorpal> HUGE gameworld
15:08:38 <Vorpal> isometric
15:08:51 <Slereah> Huge gameworld isn't necessarily a good thing.
15:08:56 <fizzie> Wasn't that the continuation of Exile stuff?
15:08:59 <Vorpal> Slereah, it is for avernum
15:09:01 <Vorpal> fizzie, so it was
15:09:02 <Slereah> Arena was like the size of Britain
15:09:09 <Slereah> But most of it was randomly generated
15:09:10 <Vorpal> fizzie, remake and continuation
15:09:17 <Vorpal> Slereah, not much random in avernum
15:09:38 <Vorpal> avernum 2 is on the top 3 of RPG list of all time for me
15:09:49 <Vorpal> runs well in sheepshaver under OS 9
15:10:07 <Vorpal> avernum 3 sadly doesn't work in sheepshaver, works fine on real classic mac though
15:10:15 <fizzie> I played Exile.. I think it was number 2, back then; I have good memories about that, although I don't quite recall much about the game itself.
15:10:59 <Vorpal> fizzie, I found exile a bit unbalanced and exile 1 had terrible keyboard controls... the avernum series remake of 1/2/3 were a lot more balanced a better than the original exile games
15:11:18 <Vorpal> s/a better/and better/
15:11:40 <fizzie> http://tvtropes.org/pmwiki/pmwiki.php/Main/PlanescapeTorment is a nice "four paragraphs and a line" introduction to Torment.
15:11:57 <Vorpal> fizzie, and isometric is a lot nicer than a weird mix of top-down/sideways/whatever-works
15:11:58 <fizzie> Oh, sorry, I guess a tvtropes link is a bit of a netiquette violation.
15:12:40 <Vorpal> now bbl
15:13:14 <fizzie> I seem to recall there being some Torment references sneakily sneaked into NWN 1 or 2.
15:13:31 -!- cpressey has joined.
15:13:41 <fizzie> Or maybe the Mask of the Betrayer extension thing.
15:14:49 <Slereah> Vorpal
15:14:53 <Slereah> Did you at least play
15:14:55 <Slereah> MORROWING
15:14:58 <Slereah> D
15:15:54 <fizzie> I think we have had a talk about Morrowind here before.
15:16:07 <fizzie> It wasn't something he played, if I recall correctly.
15:16:30 <Vorpal> fizzie, back for a sec, was the dvd release on one?
15:16:34 <Vorpal> Slereah, not familiar.
15:16:49 <fizzie> Morrowind is the one that came before Oblivion.
15:17:04 <fizzie> Vorpal: Which DVD release?
15:17:10 <Vorpal> fizzie, planescape
15:17:43 <fizzie> I would sure guess so. I don't quite recall how many CDs the CD version had, and I haven't had the DVD one ever.
15:17:45 <Slereah> Morrowind is pretty good.
15:17:45 <fizzie> At least officially.
15:17:52 <Slereah> Original settings, good story
15:18:08 <Slereah> I bought the DVDs a few months ago
15:18:11 <Slereah> Runs smoothly
15:18:19 <Slereah> Unlike those lousy CD versions
15:18:24 <fizzie> Morrowind was fun-ish, but it's quite different in gameplay-style from something like BG and friends.
15:18:25 <Slereah> They choked on my mighty cock
15:18:28 <Slereah> I mean video card
15:18:34 <Slereah> Yeah.
15:18:38 <Slereah> Still, pretty good.
15:18:56 <Slereah> It was nice to see an RPG that wasn't medieval England.
15:19:12 <Slereah> Much like Planescape and Arcanum by the way :3
15:19:13 <Vorpal> fizzie, lets say: I'm unable to find a dvd one.
15:19:17 <Vorpal> also wtf is .nrg
15:19:24 <fizzie> That's a disc image.
15:19:32 <Vorpal> fizzie, what can open it...
15:19:37 <Slereah> ENERGY
15:19:48 <Slereah> Vorpal : On linux, no idea
15:19:52 <fizzie> Vorpal: There was some sort of a converter; it's from the Nero tool.
15:19:53 <cheater> hello sweethearts
15:20:03 <Slereah> Try finding a virtual DVD player
15:20:14 <fizzie> "nrg2iso" is in Ubuntu's repo, at least.
15:20:30 <fizzie> And "iat".
15:20:51 <Vorpal> hm
15:20:56 <cheater> oerjan: hello
15:20:58 <fizzie> ("BIN, MDF, PDI, CDI, NRG, and B5I, -- into ISO-9660.")
15:21:02 <Vorpal> fizzie, timeout on tracker -_-
15:21:06 <cheater> oerjan: you have been marked as being away
15:21:11 <cheater> oerjan: where have you been
15:21:22 <Slereah> By the way
15:21:29 <Slereah> If you try Planescape
15:21:30 <Slereah> Protip
15:21:38 <Slereah> Invest heavily in intellectual stats.
15:21:41 <Slereah> It pays off.
15:21:58 <Vorpal> mhm
15:22:16 <fizzie> Yeah, it's not a very hack-and-slash game.
15:22:19 <Vorpal> Slereah, I'm, um, acquiring it now, won't play it until later though
15:22:34 <Vorpal> fizzie, nor is NWN
15:22:41 <fizzie> (And some of the interesting dialogue options have stats checks, as can be expected.)
15:22:46 <Vorpal> well I guess it might be if playing fighter
15:22:57 <Vorpal> not as rouge or any spell caster though
15:23:11 <Slereah> Well, you can be a fighter
15:23:13 <ais523> Vorpal: NWN is in the sense of lots of combat
15:23:17 <Slereah> Just be a philosophing fighter.
15:23:34 <Slereah> As said, you don't need to do a lot of combat, be it physical or magic
15:23:34 <ais523> just because you're fireballing things rather than stabbing them doesn't prevent it being hack-and-slash
15:23:42 <ais523> Planescape: Torment is... different
15:23:54 <Vorpal> ais523, well... with good stats in hiding related stuff you can use different tactics quite often
15:23:55 <Slereah> Well, you can play it as a hack and slash
15:23:59 <Slereah> But it is rather boring
15:24:15 <Slereah> Although there are very hack-and-slashy parts in the game.
15:24:24 <ais523> Vorpal: are you using a henchman? they normally spoil any attempt to stealth through the game
15:24:39 <ais523> although admittedly, the NWN 1 speedrun does pretty much all of chapter 1 via invisibility potions
15:25:14 <Vorpal> ais523, I'm aware, and I try to avoid henchman sometimes, though, hiding tactics doesn't work for all subquests, so often a mix of leaving henchmen for some parts and using them for other
15:25:16 <Slereah> Like fucking Baator
15:25:21 <Slereah> Baator was a nightmare
15:25:26 <Slereah> Though it was supposed to be
15:25:42 <Slereah> MOUNDS OF SKULLS
15:29:40 <oerjan> <cheater> oerjan: you have been marked as being away <-- erm that's a technical term in irc, and as far as i know hasn't been true of me in a while
15:30:09 <ais523> well, technically it's just a convention that's almost universally honoured, IIRC
15:30:21 <ais523> it's not in the main IRC standard, it's in one of the supplements I think
15:30:36 -!- ais523 has quit (Read error: Connection reset by peer).
15:32:00 -!- ais523 has joined.
15:34:23 <oerjan> cheater: in _other_ news which may be relevant to my absense, first the new nvg server that they set up to replace the one that died itself died, temporarily, on friday it may have been. it got back online sunday evening. monday afternoon the neigbors managed to dig through our phone cable (again).
15:37:41 <oerjan> ais523: well, it's an actual command
15:37:54 <ais523> oerjan: yes
15:38:38 <fizzie> "With the AWAY message, clients can set an automatic reply string for any PRIVMSG commands directed at them (not to a channel they are on). The automatic reply is sent by the server to client sending the PRIVMSG command." (RFC1459)
15:38:40 <oerjan> and i rarely use it anyway
15:38:55 <ais523> I have auto-away set up nowadays
15:40:54 <fizzie> I have as XLock.startCmd: a Python script to tell X-Chat (via DBus) to set an away message; just to be different, you see. (In fact, I think I'll actually go away now.)
15:41:09 <Vorpal> oerjan, "again"?
15:41:26 <Vorpal> oerjan, you think that since it would cost quite a bit for them to have it repaired, they would learn to avoid it
15:41:26 <oerjan> Vorpal: happened in the spring as well
15:42:10 <oerjan> well this time it may not have been them personally, there's been some major digging all throughout the neighborhood
15:42:17 <Vorpal> hm
15:42:30 <oerjan> but it was in approximately the same spot as last time :D
15:43:07 <oerjan> it looks like they're renovating the sewers or something
15:44:45 <oerjan> the first time it was them just moving in and replacing part of the lawn with stones
15:45:27 <oerjan> *stone tiles
15:48:11 -!- alise has joined.
15:49:38 <alise> 01:11:05 <Phantom_Hoover> 16:47:01 <alise> which is why the Singularity is defined at precisely the point where we have no fucking idea what will happen ← true, but you presuppose many things about it which aren't as certain as made out.
15:49:51 <alise> I may have speculated wildly while stating that I was.
15:50:00 <alise> But nothing I've said as fact is controversial at all, really.
15:50:30 <alise> 20:32:11 <Sgeo> alise, I'm forcibly undeferring you
15:50:40 <alise> i have no wish to help you further as i know you ignore my advice
15:50:52 <oerjan> ...whatever undeferring means
15:51:47 <alise> 23:34:22 <augur> sure, but i dont know what the current continuation is
15:51:55 <alise> the current continuation is the return address
15:51:58 <alise> except it's the return closure
15:52:09 <alise> (f (g x)), the call to g has the continuation (lambda (g-result) (f g-result))
15:52:11 <alise> the end
15:52:33 <ais523> alise: hmm, an interesting way to define it
15:52:40 <Slereah> http://www.youtube.com/watch?v=IJyUQ7zarS8&feature=related
15:52:46 <ais523> for some reason, I only mentally define the current continuation during a call to call/cc
15:52:50 <Slereah> Planescape made you think your spells were tits :3
15:52:51 <alise> ais523: well, it's the easiest way to explain it to someone who groks some basic return stack assembly
15:52:59 <alise> ais523: also, some of the best scheme implementations do CPS
15:53:06 <alise> so in that case it's entirely continuation-based
15:53:09 <ais523> yep
15:53:18 <ais523> but I'm thinking in a world where things aren't necessarily CPS
15:53:31 <alise> not Scheme's native world :)
15:54:04 <ais523> I wasn't assuming Scheme
15:54:08 <alise> augur was
15:54:14 <ais523> ah, OK
15:54:52 <alise> i actually get kind of annoyed at people who don't get monads or continuations as i can't help but think they're the simplest things in the world :P
15:55:06 <Slereah> Monads aren't simple >:|
15:55:10 <alise> they are.
15:55:19 <Slereah> I understood quantum mechanics before I understood monads.
15:55:35 <alise> that just means you're a physicist, not a computer scientist
15:55:38 <ais523> the programming concept of a monad is relatively simple
15:55:39 <alise> also, you don't understand quantum mechanics
15:55:40 <alise> nobody does :)
15:56:02 <ais523> you can, say, understand a useful subset of quantum electrodynamics, though
15:56:03 <Slereah> You only say that because you're a computer scientist, not a physicist.
15:56:09 <ais523> or enough quantum mechanics to know how a transistor works
15:56:21 <alise> Slereah: actually, i'm quoting a physicist from memory.
15:56:32 <Slereah> Yes, you're quoting Richard Feynman.
15:56:35 <Slereah> I know
15:56:39 <Slereah> Because I'm a physicist.
15:56:52 <Slereah> *puts on labcoat*
15:57:01 * Gregor imagines Slereah in a lab coat saying, "Yes, but /I'm/ a physicist!" then the crowd gasps in amazement.
15:57:02 <Slereah> (it's to avoid getting neutron stains on my jacket)
15:57:05 <alise> we're still scientists!
15:57:08 <Gregor> Damn, you labcoated before me :P
15:57:16 <Gregor> I should totally wear a lab coat.
15:57:17 <alise> we can still have test tubes
15:57:24 <alise> filled with liquid data storage
15:57:24 <Gregor> They have DATA in them!
15:57:26 <alise> ...
15:57:34 <alise> Gregor: Pre-emptively, I do.
15:57:37 <Slereah> http://www.phdcomics.com/comics/archive.php?comicid=1361
15:57:47 <Gregor> alise: I'm not a pedophile D-8
15:58:05 <Gregor> I guess unless that's super-preemptively :P
15:58:14 <Slereah> Maybe you could build one of those old school hydrolical calculator
15:58:15 <Slereah> And then
15:58:18 <alise> 1) It's been ephebophilia for at least three years!
15:58:21 <Slereah> The water would be full of data
16:00:52 <cpressey> My C implementation of Pixley is fully CPS now :)
16:01:05 <Slereah> Full of CPs?
16:01:08 <oerjan> C Pixley System
16:01:11 <alise> My CPS implementation of C is fully Pixley now :)
16:01:14 <Slereah> He was the pedophile all along
16:03:16 <Gregor> And he would've gotten away with it too if it wasn't for you meddling kids!
16:03:27 <alise> ...waaaaaaaaaaaaaaaiiiiit
16:03:49 <Slereah> http://www.thedailyshow.com/watch/tue-february-2-2010/story-hole---children-s-cartoons-from-hamas
16:04:03 <Slereah> And I would(ve gotten away with it too if it wasn't for those meddling jews!
16:04:32 <alise> And I would've gotten away with it too if it weren't for you meddles!
16:04:35 <alise> *medals!
16:04:38 <alise> Although meddles works too!
16:04:47 <cheater> oerjan: you have been marked as being away in my HUMAN REGISTRY which you are an element of.
16:04:54 <Slereah> muddles
16:05:01 -!- Phantom_Hoover has joined.
16:05:02 <Slereah> muggles
16:05:09 <cpressey> alise: It's largely *because* monads and continuations are so simple that people find them hard to understand.
16:05:34 <alise> cpressey: I'm not entirely convinced you understand monads, though :P
16:05:40 <alise> Or, well, not in the conventional manner.
16:05:55 <cheater> if monads are so simple
16:06:01 <cheater> explain them to me in 5 minutes
16:06:03 <cpressey> alise: I admit that I don't, quite.
16:06:11 <Slereah> IN ONE SENTENCE
16:06:14 <Slereah> One word.
16:06:18 <Slereah> One character.
16:06:23 <Slereah> Zero character.
16:06:24 <cheater> no, just in 5 minutes.
16:06:25 <cheater> go on.
16:06:33 <alise> 00:01:11 <fizzie> Oh, I'm sure you could sort-of do a pure Scheme call/cc implementation, with some pretty hairy macros to CPS everything else, after which call/cc is just (define (call/cc f k) (f k k)), assuming f gets turned into (define (f return k) (return 2) (k 3)).
16:06:36 <alise> you mean:
16:06:55 <alise> (define (call/cc f k) (f (lambda (x k2) (k x)) k))
16:07:04 <cpressey> I do understand continuations pretty well, though.
16:07:17 <alise> (define (f return k) (return 2 (lambda (x) (k 3))))
16:07:21 <cpressey> The y combinator, I also admit, I do not fully understand.
16:07:26 <cheater> alise/cpressey: back up your claim
16:07:33 <ais523> cpressey: I didn't understand the y combinator until about two days ago
16:07:41 <alise> cheater: unfortunately i'm sure you're not intelligent enough to understand it, unlike the towering minds we have in this channel.
16:07:44 <ais523> when suddenly something clicked with me
16:07:49 <alise> ais523: Surely you're joking, Mister Smith!
16:07:51 <cheater> alise: that's not nice
16:07:58 <ais523> alise: I'd never really tried to understand it before then
16:08:07 <cpressey> ais523: I've seen it demonstrated, so I have a "feel" for what it does, but that's about all
16:08:14 <alise> ais523: Isn't it obvious? I guess if you haven't toyed with the lambda calculus a lot.
16:08:20 <cheater> alise: also, my iq is fairly high, you just dislike me because i'm different, and the fact that i'm different makes you immediately assume that i'm also wrong
16:08:34 <ais523> but my latest problem for my job has pretty much been to see to what extent it's possible to implement Y in hardware
16:08:50 <ais523> it's clearly impossible in general, but we're trying to see if there are any useful special cases, and it looks like there are
16:08:53 <cpressey> ais523: whew
16:09:10 <cheater> alise: which is fairly ironic coming from someone who's not understood well by the powers-that-be around them.
16:09:13 <alise> cheater: actually, I was just trying to (a) shut you up and (b) see how stupid you'd get under that insult
16:09:43 <alise> I now know that the answer to (b) is "claim that (a) your IQ was measured correctly (which is rare) and (b) implicitly claim that IQ is a measurement of intelligence".
16:09:47 <ais523> incidentally, many monads (mostly the lightweight statey ones) have a really nice implementation in hardware
16:09:52 <alise> ais523: Y in hardware? ha
16:09:53 <alise> for what?
16:09:58 <ais523> alise: completeness, really
16:10:11 * Phantom_Hoover understood the Y combinator after quite a bit of effort.
16:10:16 <cheater> alise: silly strategies like that don't usually work with me
16:10:21 <ais523> given that we can do more or less everything /else/
16:10:29 <alise> cheater: well, half of it worked.
16:10:34 <Phantom_Hoover> It's basically the omega combinator with an extra argument.
16:10:37 <cheater> alise: i think if you once got off your high horse and tried being friendly, you would save a lot of grief and energy
16:10:52 <cheater> alise: and then you could possibly even get something positive out of interacting with me
16:11:03 <alise> being friendly to people who i don't like takes more energy than it's worth.
16:11:04 <cheater> alise: instead of painting yourself into the corner of negative relationships
16:11:05 <alise> ais523: hmm
16:11:10 <ais523> in hardware, a monad is simply an extra wire/set of wires that go alongside the rest of the circuitry, and are used by individual components
16:11:11 <alise> ais523: Can you do SKI in hardware, then?
16:11:24 <cheater> alise: i don't do anything on purpose for you to dislike me
16:11:24 <ais523> alise: no, for the same reason you can't do it in Haskell
16:11:29 <ais523> at least with the formulation we're using
16:11:31 <cheater> alise: it is only your own mind block
16:11:35 <alise> ais523: ah
16:11:39 <alise> ais523: SKI still type, though
16:11:41 <alise> they're just not very useful
16:11:42 <ais523> it'd require an infinite number of wires to construct the infinite type
16:11:44 <ais523> alise: well, yes
16:11:50 <cheater> alise: you can give it up, or you can continue to have someone around that you force yourself to dislike, your choice
16:11:53 <alise> i am interested in this research!
16:11:54 <ais523> but more to the point, they type an infinite number of different ways
16:11:58 <alise> ah
16:11:59 <alise> no forall?
16:12:06 <ais523> not in hardware
16:12:10 <Phantom_Hoover> Are you wacky boffins talking about a purely-functional computer?
16:12:15 <ais523> you need to know the exact type to konw how many wires you need
16:12:21 <Phantom_Hoover> I thought the reduceron already counted.
16:12:29 <alise> no, ais523 is just implementing combinators directly in silicon
16:12:33 <alise> i think
16:12:41 <alise> (ais523 is an acceptable substitute for ais523 et al.)
16:12:45 <cpressey> ok, cpressey explains monads (wrong again). You write your function as a bunch of little functions and they get called, generally but not necessarily in sequence, by a bit of infrastructure which does some stuff for you, for example tracking state or aborting early.
16:12:46 <alise> (as a name)
16:12:53 <alise> cpressey: incorrect!
16:13:01 <cpressey> alise: you just love saying that.
16:13:07 <cpressey> besides, i am clearly NOT being technical
16:13:11 <Gregor> "ais523" is short for "ais" then a 523-character sequence of other names.
16:13:31 <ais523> alise: http://portal.acm.org/citation.cfm?id=1190216.1190269 is the first paper in the series, written by my supervisor before I started working on the project
16:13:42 <alise> a monad is a type m of one argument for which the following functions have total (always-terminating) implementations: return :: a -> m a ; bind :: m a -> (a -> m b) -> m b (or join :: m (m a) -> m a, instead of bind), that obey the following identities:
16:13:53 <alise> "Left identity": return a >>= f ≡ f a
16:13:53 <alise> "Right identity": m >>= return ≡ m
16:13:53 <alise> "Associativity": (m >>= f) >>= g ≡ m >>= (\x -> f x >>= g)
16:13:54 <cpressey> alise: way too technical for this audience
16:13:54 <ais523> the second's been accepted for publication but not published yet (with me as a coauthor), the third's been submitted but there's been no feedback yet (also with me as a coauthor)
16:13:55 <cheater> alise: also, to answer your other "insult", i do not feel i said anything stupid. if you feel so, your loss, you're missing the value of things given to you. i guess that's closer to stupidity than what you implied.
16:13:58 <alise> >>= being bind
16:14:14 <ais523> alise: heh, that's far from the way I understand monads, despite being the actual definition
16:14:26 <cheater> cpressey: aha
16:14:39 <alise> ais523: it becomes a lot more useful when you start doing hopelessly theoretical things with them
16:14:40 <cpressey> ais523: the actual definition tells you NOTHING that helps you understand them, is what burns me
16:14:55 <ais523> e.g. I know monads are associative, but mostly because they'd have the wrong semantics otherwise, not because being associative is part of what they are
16:14:59 <Phantom_Hoover> alise, doing the monad laws without Kleiski arrows is ugly as hell.
16:15:02 <ais523> cpressey: yep
16:15:10 <alise> Phantom_Hoover: not really
16:15:15 <ais523> alise: that sort of definition is useful for proofs, but proofs can be far from understanding
16:15:22 <Phantom_Hoover> Well, the 3rd one.
16:15:28 <alise> ais523: err, nothing like proofs
16:15:31 <alise> understanding the list monad
16:15:32 <alise> for instance
16:15:36 <alise> that's the first step
16:15:45 <Phantom_Hoover> *Maybe monad
16:15:47 <alise> (you then generally need to know *why* instead of *how*, but it's the how)
16:15:48 <ais523> alise: understanding the list monad for me is /miles/ from the theoretical definition
16:15:48 <cpressey> Phantom_Hoover: We still need to settle a question here.
16:15:54 <Phantom_Hoover> It's the easiest non-trivial one.
16:15:56 <alise> ais523: not understanding the use; understanding
16:16:07 <Phantom_Hoover> cpressey, a showdown! Count me in!
16:16:11 <ais523> Phantom_Hoover: nah, read-only state is the easiest nontrivial one
16:16:34 <Phantom_Hoover> ais523, for Maybe:
16:16:50 <Phantom_Hoover> data Maybe a = Nothing | Just a
16:16:54 <Phantom_Hoover> return = Just
16:17:06 <cheater> cpressey: so why do you need those functions to be "many" and "small"?
16:17:15 <cheater> do you need to break up your functionality somehow?
16:17:15 <cpressey> Phantom_Hoover: Do you really need a type system to have monads? If so, does it mean that, you can't have monads in (e.g.) the untyped lambda calculus? I don't believe that.
16:17:26 <Phantom_Hoover> cpressey, you do in the strictest sense.
16:17:33 <ais523> no, you don't
16:17:34 <Phantom_Hoover> Since monads are by definition functors.
16:17:49 <Slereah> Functor?
16:17:53 <Slereah> I hardly know her!
16:18:06 <Gregor> *clap clap*
16:18:49 <ais523> Phantom_Hoover: the category-theoretical definition of monads doesn't depend on types existing
16:19:00 <ais523> or even any concepts from programming at all
16:19:12 <ais523> and you can fit untyped LC into a category just as easily as typed LC
16:19:23 <Phantom_Hoover> Well, I suppose.
16:19:40 <alise> cpressey's description is still just one possible practical usecase of monads, though
16:19:42 <alise> that isn't even tied to monads
16:19:50 <alise> and the concept of some supervising thing that calls your functions is wrong
16:19:57 <cpressey> I think my view is that if you want to prove that something is a monad, you need a type system in which to do so, just as if you want to prove something is an integer. But just to program them, well, like Church integers, if you can build it, there it is, even if you don't have a way of proving that it's that.
16:20:15 <ais523> the issue with monads is, they're too general to really be useful
16:20:22 <alise> err, not reallty
16:20:23 <alise> *really
16:20:30 <alise> "It's too general! Nooooooooooooooooo!"
16:20:31 <cpressey> alise: what would you call bind and return if not infrastructure?
16:20:33 <ais523> I mean, the concept of monads in general
16:20:37 <alise> "I can do things I didn't think I could do! Nooooooooooooooooo!"
16:20:39 <ais523> rather than particular monads
16:20:45 <alise> cpressey: I would call them... bind and return.
16:20:52 <alise> return and join is the more common category-theoretical definition, though.
16:20:56 <alise> cpressey: do you call addition infrastructure?
16:20:56 <cheater> cpressey: but a constructive proof is a proof too.
16:21:20 <ais523> personally, I'm annoyed at return being necessary in the definition of monads, as even without return, you still have a pratically useful concept
16:21:29 <alise> cpressey: take a look at abstract algebra
16:21:30 <ais523> is there a name for that one?
16:21:35 <alise> addition, multiplication --
16:21:37 <cpressey> alise: if i were encouraged to make it implicit, i might, like in sum()
16:21:39 <alise> they're not infrastructure
16:21:49 <alise> they're part of the definition of a number
16:21:59 <alise> algebraic structures are defined *very similarly* to a monad
16:22:12 -!- BeholdMyGlory has joined.
16:22:13 <alise> Group: (G,*) where (G,*) is a monoid and [conditions]
16:22:15 <cheater> first you say they're not structure then you call them structure
16:22:19 <ais523> alise: there are a bunch of ways to define that sort of thing
16:22:21 <alise> Monad: (M,return,join) where [conditions]
16:22:30 <cpressey> and (the usage of) monads definitely encourages making the monad functionality implicit
16:22:38 <ais523> after all, comultiplication isn't inherent in the definition of numbers, nor even definable for them
16:22:44 <alise> this conversation is boring
16:22:48 <alise> we've had it before at least three times
16:22:59 <Phantom_Hoover> But it's for a noble cause!
16:23:08 <cheater> Phantom_Hoover: :)
16:23:08 <Phantom_Hoover> i.e. getting cpressey to understand monads!
16:23:42 <ais523> hmm, interesting question: can all monads be implemented in terms of multithreading plus state (regardless of how inefficient or pointless it would be to actually implement them that way)?
16:23:56 <alise> ais523: eh? :P
16:24:00 * ais523 realises in horror that C-INTERCAL actually implements continuations that way
16:24:02 <alise> i'd like to see you do the continuation monad that way
16:24:08 <ais523> alise: already have
16:24:10 <alise> ...ouch
16:24:18 <alise> ais523: well, continuations != the continuation monad
16:24:21 <alise> well
16:24:23 <ais523> yep, I know
16:24:26 <alise> the usual implementation of continuations, that is
16:25:03 <ais523> C-INTERCAL's implementation is nothing like the usual one
16:25:08 <ais523> partly because it's such a stateful language
16:25:10 <cpressey> OK. Well, I should probably get some work done instead of boring y'all.
16:25:12 -!- cpressey has quit (Quit: leaving).
16:25:17 <oerjan> ais523: they can be implemented in terms of continuation and state (felleisen)
16:25:28 <alise> i wish cpressey would stop taking "this conversation is boring" to mean "you, personally, are a boring person"
16:25:41 <ais523> oerjan: ah, OK, and continuations can be implemented in terms of multithreading, so they can be
16:26:11 <alise> I'm trying to figure out how to do continuations with multithreading.
16:26:14 <cheater> alise: that's what happens when you hate on people
16:26:23 <alise> What happens is, I go to my thinking bank, and it beeps, and says "TOO PAINFUL TO CONSIDER".
16:26:49 <cheater> you might be confused, i think it says "$this->ASSHOLE()"
16:26:58 <Phantom_Hoover> IS THAT PERL
16:27:02 <oerjan> (or rather iirc, with delimited continuations, which can be implemented using ordinary continuations and a single stateful variable)
16:27:03 <cheater> no, it's php.
16:27:09 <ais523> legal Perl too
16:27:18 <ais523> with probably pretty much the same meaning
16:27:37 <ais523> alise: to create a continuation, fork a thread, lock it in an infinite loop
16:27:39 <cheater> yeah, php is like perl with a few C extensions
16:27:48 <ais523> to go back to the continuation, let it out of the infinite loop, kill the currently executing thread
16:27:51 <alise> ais523: ah, then break it out?
16:27:51 <alise> heh
16:27:57 <alise> you have to store all closed state in it, though
16:28:02 <alise> java-style final inner class problem
16:28:12 <cheater> ais523: can you explain this "extra wire" analogy that you mentioned earlier?
16:28:15 <alise> theoretically possible, though, I guess
16:28:19 <cheater> ais523: that sounded very interesting
16:28:46 <ais523> cheater: unfortunately, it doesn't model all monads, just the large subset that correspond to just the one computation at a time (as opposed to 0-or-1 like Maybe, or 0..n like List)
16:29:01 <cheater> ais523: yeah
16:29:03 <cheater> ais523: go on though
16:29:09 <alise> 00:05:50 <augur> /(.*)\(call/cc (.+)\).*/ => "(\2 (lambda (x) (\1 x)))"
16:29:10 <alise> ouch
16:29:42 <ais523> so the idea is, you have an existing function; you can see it sort-of like a computation, give it input, you get output after a bit, and you can then connect that output to some other function
16:29:54 <alise> ais523: that's a shame -- Maybe and List being some of the most useful monads :P
16:29:58 <ais523> alise: yep
16:30:01 <cheater> so let's say this function is something like an addressable memory
16:30:04 <ais523> err, what?
16:30:13 <cheater> you feed it 8 bits of address and the output is 8 bits of data
16:30:18 <ais523> oh, I see
16:30:30 <cheater> it is a computation
16:30:31 <cheater> a LUT
16:30:42 <alise> 06:46:01 <Vorpal> <Phantom_Hoover_> Hypothesis: all operating system ads are so obnoxious that the rage of people watching them could be used for power. Discuss. <-- I can't remember seeing an ad for an OS the last 5 years, but then I use adblock. Anyway I have no idea what they look like these days
16:30:52 <alise> Area Man Constantly Implicitly Mentions He Doesn't Own a TV
16:30:53 <Phantom_Hoover> TV ads.
16:30:55 <ais523> OK, so let's say it's an 8-bit-address ROM or something; what the function actually is hardly matters
16:31:10 <alise> Phantom_Hoover: Vorpal said that <--
16:31:12 <alise> stuff
16:31:17 <cheater> ok go on
16:31:19 <oerjan> alise: was that an onion title?
16:31:27 <Phantom_Hoover> I was clarifying for him...
16:31:42 <alise> oerjan: "Area Man Constantly Mentioning He Doesn't Own A Television"
16:31:46 <alise> I adapted it to the situation.
16:32:00 <oerjan> ok
16:32:09 <alise> http://www.theonion.com/articles/area-man-constantly-mentioning-he-doesnt-own-a-tel,429/
16:32:10 <alise> a classic
16:32:16 <ais523> now, you can sort of think of the function as a component in a pipeline, or something like that, UNIX-style; you can run function after function after function, each of which takes its input from somewhere (could be the output of the previous function, could be a constant, could be an output from some earlier function) and produces output
16:32:27 <cheater> yes
16:32:28 <ais523> in such a way that when you run each function, you have enough information to know what input you plan to give it
16:32:44 -!- MigoMipo has joined.
16:32:55 <ais523> now, suppose for each of these functions, you give it an extra piece of information of a given type (an extra integer or something), and it returns an extra piece of information of the same type
16:33:11 <cheater> ok
16:33:14 <ais523> gah, my boss has called just as it was getting interesting, I'll be back later
16:33:15 <oerjan> ais523: maybe you want Arrows rather than Monads?
16:33:22 <cheater> aw
16:33:41 <oerjan> although every Monad is an Arrow afair
16:33:43 <cheater> oerjan: you should be able to pick up where ais523 left off!
16:34:16 <alise> "ais523" -- people call him that in real life, you see -- "We're cancelling the 'monadia in silico' project. Instead, we're going to be doing 'Java in silico'. That will be all."
16:34:25 <alise> the worst phone call
16:35:48 -!- oerjan has quit (Quit: Good night).
16:39:34 <Phantom_Hoover> alise, "We have invented nFAI."
16:39:36 <Phantom_Hoover> Worse.
16:39:39 <Phantom_Hoover> Qed.
16:41:17 <alise> "We have killed a kitten."
16:41:19 <alise> Wrose.
16:48:30 <ais523> sorry about that
16:50:05 <cheater> ais523: back? :)
16:50:07 <ais523> yep
16:50:10 <cheater> ais523: ok go on!
16:50:12 <cheater> that was cunning
16:50:45 <ais523> well, let's say we modify these functions to take an extra piece of input - which they don't have to use if they don't want to - an produce an extra piece of output, of the same type
16:50:54 <cheater> yes
16:50:57 <cheater> a sort of sideband
16:50:59 <ais523> the easiest way to do this is just to ignore the input, except we copy it to the output
16:51:02 <ais523> yep
16:51:14 <cheater> so let's call it sideband
16:51:14 <ais523> and we can connect these functions together by connecting this new output to the new input
16:51:20 <cheater> yes
16:51:29 <ais523> so you have a connected sideband, and everything is doing just what it was doing before otherwise
16:51:39 <cheater> sort of like 'self' in object oriented languages
16:51:52 <ais523> yep. (Hmm, I wonder if that /is/ a monad?)
16:52:00 <cheater> or global scope in many languages
16:52:17 <cheater> ok go on
16:52:27 <ais523> now, it's clear that we can mix functions that actually use the sideband, and do something with it, with these original functions that we added a sideband to just for the sake of giving them a sideband
16:52:39 <cheater> yes
16:52:41 <ais523> and connect them all together
16:53:03 <ais523> OK, monad terminology: adding a sideband that does nothing to a function = "return"; connecting the sideband of one function to the sideband of the next = "bind"
16:53:22 <cheater> aha
16:53:28 <ais523> when a monad models just one computation, that's pretty much all it is
16:53:38 <cheater> what about a function that does something with the sideband?
16:53:46 <ais523> that's a function in the monad
16:53:49 <cheater> what is that in monadsp34k?
16:53:55 <ais523> but you can't produce it using return
16:53:58 <cheater> no
16:54:02 <cheater> so how do you produce it?
16:54:12 <ais523> normally, you find it lying around in a standard library or something
16:54:22 <ais523> you need to know details of how the monad's implemented in order to make one
16:54:27 <cheater> aha
16:54:42 <cheater> yes, just like you need to know the signaling format of the sideband
16:54:47 <cheater> but assuming i know that
16:55:15 <ais523> then you can use that in order to make something that uses the sideband
16:55:43 <cheater> can you give an example?
16:55:58 <cheater> say in haskell, a monad that starts out just plugging 0 every time
16:55:58 <ais523> so for instance, the State monad is one of the simplest that fits this idea
16:56:08 <ais523> where the sideband is the state you're trying to manage
16:56:11 <cheater> but then i have a function that NOT's it
16:56:14 <ais523> if you don't care about the state at all, it just stays the same
16:56:19 <cheater> ok go on
16:56:40 <ais523> but you have functions like the one that sets the state (I've forgotten its name), which just discards the old sideband and creates a new one, from its argument
16:56:52 <ais523> and the function that gets the state, which just takes a copy of the sideband
16:56:54 <cheater> ok so what would the type be of a function that wants to modify state?
16:57:15 <ais523> setState, or whatever it's called, would have type a -> State a
16:57:41 <ais523> err, no
16:57:46 <ais523> a -> (State a) ()
16:57:52 <ais523> if you give it input of type a
16:58:09 <ais523> then you get something that outputs (), with a sideband of type a
16:58:46 <cheater> ok
16:58:56 <ais523> even though outputting () is normally useless in Haskell, it isn't here in the monad, because it's still modifying the sideband, and so still doing something
16:59:06 <ais523> that's why people say that monads are used to deal with side effects
16:59:21 <ais523> likewise, getting the state would have type (State a) a
16:59:35 <ais523> even without an argument, it can look at the sideband and return something of the same type
16:59:38 <cheater> why can't it model Maybe and List?
16:59:46 <ais523> you need to generalise it a bit
16:59:58 <ais523> now, so far, we've been looking at functions which model just one computation
17:00:00 <alise> <ais523> setState, or whatever it's called, would have type a -> State a
17:00:01 <alise> set
17:00:03 <ais523> we have one function, plus the sideband
17:00:06 <ais523> alise: thanks
17:00:29 <ais523> I seem to remember that on my last Haskell project, I had so much problems trying to remember the name that I eventually reimplemented it rather than trying to find it in the standard library
17:00:31 <alise> there's also "modify f", which is "x <- get; set (f x)"
17:00:42 <alise> ais523: wow, why not just look up Control.Monad.State?
17:00:49 <ais523> I wasn't Internet-connected at the time
17:00:54 <alise> it installs locally
17:00:58 <ais523> knowing that I had to import Control.Monad.State would have helped
17:01:21 <ais523> hmm, this is the stupid reason for NIH ever
17:01:34 <ais523> "I reimplemented the State monad because I couldn't remember its name"
17:01:38 <alise> :-D
17:01:40 <cheater> yeah heh
17:01:41 <cheater> :)
17:01:42 <alise> (*stupidest, forgive me)
17:01:55 <alise> ais523: "I reimplemented GHC because I forgot its name"
17:02:02 <alise> "-- one afternoon"
17:02:07 <cheater> what's worse is: i reimplemented the state monad but i couldn't download it from the internet!
17:02:21 <cheater> s/but/because
17:02:28 <ais523> cheater: so, at the moment we have each function producing just the one output+sideband
17:02:29 <cheater> ais523: so why can't Maybe work?
17:02:45 <ais523> now, there's no conceptual reason why we couldn't have the function producing 0 output+sideband pairs, or more than 1
17:02:48 <cheater> Maybe would produce either 1 output or 0 outputs yes?
17:02:50 <ais523> yep
17:03:03 <cheater> what does the sideband do here?
17:03:05 <ais523> what you need to do is, you need to copy everything from then on
17:03:12 <cheater> copy?
17:03:21 <ais523> oh, Maybe doesn't have a particularly useful sideband, it just carries () everywhere
17:03:23 <ais523> like IO does
17:03:27 <cheater> ok
17:03:29 <cheater> go on
17:03:35 <ais523> but it's still necessary because you need to know what order things are in
17:03:41 <alise> ais523: IO has state
17:03:42 <alise> IORefs
17:03:51 <ais523> alise: ah, I didn't know that
17:03:53 <alise> but it arguably shouldn't
17:03:55 <ais523> well, and RandomRIO too
17:03:56 <alise> it's just that
17:03:59 <alise> you can't have IOT or STT
17:04:00 <ais523> but that's just an implementation detail
17:04:08 <alise> so since you often want ST-style references in IO
17:04:12 <alise> there's no real other option
17:04:17 <ais523> IOT would require inventing new IO subsystems on the fly...
17:04:23 <alise> (note: anachronism; I'm pretty sure ST postdates IORefs)
17:04:28 <alise> ais523: IOT Cont == TwoDucks
17:04:41 <alise> hmm, I think STT might be theoretically possible
17:04:42 <alise> but it hurts my brain
17:04:52 <ais523> cheater: well, suppose we run our monad function, and get two outputs, each with their own sideband
17:04:53 <cheater> so what is the equivalent of Maybe in our circuit topology here?
17:04:57 <ais523> and try to bind it to another monad function
17:05:08 <cheater> ok go on
17:05:11 <ais523> then, we need to make two copies of the second one, and connect one of them to each of the possible outputs
17:05:32 <ais523> so you sort-of need to imagine a circuit which you can dynamically make copies of runtime, as you don't know in advance how many outputs you're going to get
17:05:39 <ais523> with Maybe, you either get an output, or you don't
17:05:48 <ais523> if you don't, then you connect 0 copies of the next element in the chain
17:06:02 <cheater> if you do, you connect 1 copy?
17:06:36 <ais523> yep
17:06:36 <ais523> so Maybe effectively ends up halting the entire computation if you get Nothing as your output
17:06:47 <cheater> ok so
17:07:03 <ais523> !haskell (Maybe 1) >>= (\x -> Maybe x)
17:07:05 <cheater> in fact if your chain is f g h i j
17:07:13 <cheater> and f has type x-> Maybe x
17:07:16 <ais523> then f, g, h, i, j run in sequence until one fails
17:07:20 <cheater> yes
17:07:24 <cheater> and say f fails
17:07:25 <ais523> then the rest run 0 times each
17:07:30 <cheater> and it doesn't output
17:07:46 <ais523> yep, and you get Nothing at the end
17:07:47 <cheater> then what you in fact want to do is to short circuit g h i j yes?
17:07:51 <ais523> yep
17:07:58 <ais523> and they are short-circuited in practice
17:08:01 <cheater> but
17:08:06 <cheater> that can be modeled easily
17:08:10 <ais523> agreed
17:08:15 <cheater> with exactly the side band
17:08:23 <ais523> what gets a bit conceptually hairier is when you get to List
17:08:30 <ais523> now, it's possible for f to output 0, 1, or more times
17:08:35 <cheater> since g h i j do not have side effects outside of the small world called "g h i j", you can put info in the side band that says "fail"
17:08:39 <ais523> you can
17:08:45 <ais523> and that's how it's implemented in practice, actually
17:08:48 <cheater> and at the very end you have a small Maybe-failure block
17:08:51 <cheater> ok
17:08:51 <ais523> I was wrong earlier, Maybe doesn't have a sideband of ()
17:08:57 <ais523> instead, it has a sideband of Just/Nothing
17:09:07 <cheater> aha!
17:09:11 <ais523> with Just matching up to a normal output, Nothing matching up to no output
17:09:15 <cheater> i really like your analogy
17:09:22 <cheater> that has helped me look into monads a little bit
17:09:30 <cheater> still not far enough but that's a great explanation
17:09:33 <ais523> for List, your sideband can match up to /multiple/ outputs
17:09:42 <ais523> so, say you run f and it returns both 1 and 2
17:09:49 <cheater> wait
17:09:59 <cheater> so what does the list monad do blockwise
17:10:05 <cheater> it takes our computation unit
17:10:06 <ais523> it forks the chain, effectively
17:10:14 <ais523> say f returns twice, g, h, i, j each return once
17:10:14 <cheater> hm
17:10:26 <cheater> so g h i j need to be copied
17:10:27 <cheater> yes?
17:10:31 <ais523> then f conncets up to /two/ sequences of g,h,i,j
17:10:33 <ais523> yep
17:10:36 <cheater> but that's easy too
17:10:42 <cheater> have the sideband contain the list index for f
17:10:43 <ais523> and thats why you can't really do List as a circuit in hardware, even though it's conceptually easy
17:10:49 <cheater> and at the end you have a demultiplexer
17:10:53 <cheater> nono
17:10:55 <cheater> it's easy
17:11:08 <ais523> it's easy if you know you're only going to get two outputs
17:11:14 <cheater> no
17:11:18 <ais523> also, easy if you happen to own an infinite-ways demultiplexer
17:11:22 <cheater> it's easy with any amount of outputs
17:11:27 <cheater> yes
17:11:31 <cheater> but
17:11:37 <cheater> the thing is
17:11:44 <cheater> instead of the multiplexer you can have a memory
17:11:46 <ais523> well, I think you're missing something, slightly; say f outputs [1 2], and g's input is connected to f's output
17:12:01 <ais523> then, g will have to be run with both 1 and 2 as inputs
17:12:03 <cheater> the sideband contains the address (i.e. the index), and the chan ghij ends up writing into the data lines
17:12:16 <cheater> ah
17:12:18 <ais523> so the sideband contains a set of addresses, really
17:12:24 <cheater> ok
17:12:24 <ais523> or a set of possible inputs
17:12:32 <cheater> and then h is run with output of g
17:12:33 <cheater> ok
17:12:41 <cheater> SO,
17:12:55 <ais523> !haskell ([1 2]) >>= (\x -> [x+10 x+20])
17:13:07 <ais523> err, forgot the commas
17:13:11 <ais523> !haskell ([1, 2]) >>= (\x -> [x+10, x+20])
17:13:12 <cheater> the question is what does it mean that a computation block can get an arbitrary amount of inputs
17:13:13 <EgoBot> [11,21,12,22]
17:13:40 <ais523> cheater: well, you make a copy of the block for each input, run it on that input, then combine all the outputs into one long list of outputs at the end
17:13:50 <cheater> you are right now talking about serial rather than parallel computation
17:13:51 <cheater> that's all
17:14:07 <ais523> well, List really models parallel computation
17:14:07 <cheater> before you were describing everything as a parallel interface
17:14:13 <cheater> but in fact
17:14:20 <cheater> you can model that with serial computation
17:14:23 <cheater> and the sideband says:
17:14:38 <cheater> let's say the left thing is the sideband and the right thing is in-band
17:14:55 <cheater> (start, 1) (continue, 5) (end, 2)
17:15:10 <cheater> !haskell ([1, 5, 2]) >>= (\x -> [x+10, x+20])
17:15:13 <EgoBot> [11,21,15,25,12,22]
17:15:23 <ais523> hmm, that's one way to implement it
17:15:27 <cheater> yes
17:15:35 <ais523> yep, I think we're agreeing with each other generally here
17:15:40 <cheater> so in fact
17:15:46 <cheater> you can do those two monads in silicon now :)
17:15:49 <cheater> fun times
17:15:53 <ais523> yep
17:16:00 <ais523> well, that's all monads are, really
17:16:11 <ais523> sorry that it took a bit longer than 5 minutes, but I didn't make such grandiose claims as alise did
17:16:21 <cheater> now i expect you to put my full name on the silicon so that i can make a microscopic photo of it
17:16:24 <cheater> ;)
17:16:36 <cheater> it was a really really good explanation
17:16:39 <cheater> monads are sidebands
17:16:41 <cheater> that's pretty cool
17:16:52 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds).
17:17:03 <cheater> i was having some sort of similar idea already, as in, only have been toying a tiny bit with haskell
17:17:04 <alise> ais523: i specialise in grandiose claims!
17:17:24 <cheater> but what i ended up figuring out is that you can't fit the IO-shaped block through the non-OI-shaped hole
17:17:36 <alise> cheater: congratulations, you invented TV
17:17:37 <alise> (IO/OI)
17:17:40 <alise> (UI/IU)
17:17:41 <ais523> it's interesting that I think of State as being the simplest monad, as opposed to Maybe which is what many other people claim
17:17:50 <cheater> sorry?
17:17:51 <ais523> probably reflects a difference in how we think
17:17:52 <alise> note: obscure reference of obscure references
17:18:00 <ais523> cheater: I was referencing what someone (alise) said eariler
17:18:02 <ais523> *earlier
17:18:03 <alise> ais523: Identity is the simplest monad
17:18:10 <ais523> err, simplest nontrivial
17:18:12 <alise> return x = x; join x = x
17:18:14 <cheater> ais523: i was confused about alise
17:18:22 <ais523> ah
17:18:22 <alise> or return x = x; bind x f = f x
17:18:27 <alise> with Haskell you need data Identity = Identity a
17:18:27 <ais523> alise: well, OK
17:18:29 <alise> but it's the same thing
17:18:44 <ais523> clearly, if you're not going to actually use the sideband, why bother having a monad in the first place?
17:18:49 <cheater> ais523: ok, that's pretty cool
17:18:56 <cheater> ais523: that was a great explanation
17:19:00 <cheater> is there a log of this somewhere?
17:19:05 <ais523> yep, it's in the topic
17:19:22 <cheater> gr8
17:19:22 <ais523> hi clog!
17:19:55 <ais523> alise: http://codu.org/projects/trac/egobot/browser/multibot_cmds/interps/c-intercal/pit/continuation.i?rev=42%3A3e7fe826dddf if you want to see the implementation of continuations in terms of threading, btw
17:19:58 <ais523> you were asking earlier
17:20:22 <cheater> ais523: i thought of haskell's monads as the "block shape"
17:20:50 <cheater> just like in OO languages you'll have 100000000000 extensions of Exception
17:20:58 <ais523> heh
17:20:59 <cheater> and each is just an empty class
17:21:07 <ais523> yep, that's a good analogy too
17:21:09 <cheater> i think the same way monads work in haskell don't they?
17:21:25 <ais523> well, everything works like that in Haskell, including monads
17:21:38 <alise> ais523: I was the first one to see it :P
17:21:41 <Vorpal> <alise> Area Man Constantly Implicitly Mentions He Doesn't Own a TV <-- um I do own one
17:21:43 <alise> Although I got straight to work on forgetting it.
17:21:47 <alise> Vorpal: Onion reference.
17:21:58 <ais523> hmm, I don't own a TV
17:22:04 <alise> cheater: monads aren't usually empty...
17:22:06 <ais523> I have access to TVs, but I think all of them are technically owned by someone else
17:22:12 <Vorpal> alise, but we have public service... which doesn't show ads. And the channels with ads are mostly crap sitcoms
17:22:16 <alise> ais523: but you don't not-own-a-TV as an active thing like dear old Area Man
17:22:21 <cheater> ais523: so, are you actually implementing this stuff in silicon?
17:22:26 <cheater> alise: ok
17:22:38 <ais523> cheater: not in general; some special cases, perhaps
17:22:44 <ais523> there was something of a flame war in a seminar
17:22:50 <alise> cheater: because you have to define return/bind
17:22:52 <cheater> ais523: what did they say?
17:23:00 <ais523> when my supervisor invented the "clock monad", and we had a row about whether it was technically a read only state monad or not
17:23:05 <Vorpal> <ais523> I have access to TVs, but I think all of them are technically owned by someone else <cheater> ais523: so, are you actually implementing this stuff in silicon? <-- at first this looked hilarious
17:23:08 <cheater> alise: but you can define it "trivially" can't you?
17:23:15 <alise> cheater: no
17:23:17 <alise> for instance, the list monad
17:23:17 <ais523> (they were using the monad sidebands to carry clock signals, which makes sense)
17:23:18 <alise> <alise> @src [] return
17:23:18 <alise> <lambdabot> return x = [x]
17:23:18 <alise> <alise> @src [] (>>=)
17:23:18 <alise> <lambdabot> xs >>= f = concatMap f xs
17:23:22 <alise> this is what defines the actual monad, it's important
17:23:29 <alise> unlike the irrelevant contents of an exception glass
17:23:44 <alise> return and bind are what make do notation work, they're what make the fancy operators work
17:23:44 <cheater> alise: but can't you define a monad which doesn't do anything?
17:23:46 <alise> they are the monad
17:23:52 <alise> cheater: yes, but only on one type (Identity)
17:23:54 <ais523> cheater: you can, he did above
17:23:56 <alise> and it's literally useless
17:24:00 <alise> as opposed to something you'd actually do
17:24:09 <ais523> alise: you can define an infinite number of identity monads
17:24:12 <ais523> which don't connect to each other
17:24:16 <ais523> doesn't make them any less useless, though
17:24:29 <alise> ais523: well, not from a mathematical point of view
17:24:39 <ais523> alise: agreed; but yes from a programming point of view
17:24:40 <alise> there's only one identity type, naturally,
17:24:48 <alise> and only one implementation of return/bind for it
17:25:02 <ais523> just like you can have HTMLStrings and SQLStrings and UnescapedStrings which are all really just strings, but you don't want to mix
17:25:18 <alise> ais523: i'm not sure; there's a push in quite a few language communities to make structurally identical types equal in some manner
17:25:27 <ais523> alise: I don't think I like that
17:25:30 <ais523> I mean, it makes sense in theory
17:25:37 <alise> ais523: it makes sense for a more mathematically-oriented language
17:25:39 <ais523> but in practice, you often want to model things in types that the type system just doesn't handle
17:25:43 <alise> where things like "constructors" aren't actually assumed to exist
17:25:54 <alise> ais523: it's also usually done in communities that favour rather... advanced type systems
17:26:05 <alise> also: ok, separation of identity monads for security; I know now what the craziest thing ever is
17:26:06 <ais523> yep, that would make sense
17:26:22 <ais523> alise: tricycling along a tightrope? that's pretty crazy
17:26:39 <alise> ais523: tricycling along a tightrope while writing code that separates identity monads for security
17:26:41 <alise> NEW CIRCUS ACT
17:27:01 <alise> ais523: wait, *tri*cycling?
17:27:08 <ais523> alise: yep, exactly
17:27:17 * alise 's brain explodes
17:27:24 <ais523> if you try to put more than one of the wheels on the rope, going in the right direction, the thing is completely unbalanced
17:27:33 -!- impomatic has joined.
17:29:19 <alise> ais523: or just scrape the back end awkwardly
17:29:20 <cheater> unless you put the rear axle on the rope
17:29:27 <cheater> in which case the back wheels work to stabilize you
17:29:30 <alise> while riding the most badly-weighted unicycle ever made
17:29:32 <alise> in the front
17:29:37 <cheater> which means the act becomes trivial. just have leaden wheels.
17:30:03 <ais523> cheater: but then, the front wheel would have no actual grip on the rope
17:30:05 <alise> pentacycle; discuss
17:30:11 <ais523> so you wouldn't be able to move
17:30:11 <cheater> ais523: it would
17:30:20 <cheater> ais523: why would it not?
17:30:23 <ais523> hmm, well a bit, I suppose
17:30:29 <ais523> but the centre of gravity would be a long way back
17:30:29 <cheater> ais523: it would have the exact same grip
17:30:38 <cheater> ais523: except, the axle would also have grip, which would be blocking
17:30:45 <ais523> hmm, I suppose so
17:30:51 <cheater> but you make the housing of the axle out of teflon and smear it with butter
17:31:04 <cheater> and you're suddenly copperfield
17:32:51 <alise> teflon cycle; I approve
17:32:59 <ais523> wow, I just noticed how hacky (8205) is
17:33:49 <alise> heh
17:34:03 <alise> "It seemed idiomatic when I wrote it!"
17:34:07 <alise> Idiomatic INTERCAL.
17:34:17 <alise> I propose it be called idiotic in INTERCAL circles instead.
17:34:25 <alise> "Wow, your code is really idiotic for a beginner! Good job!"
17:34:27 <ais523> alise: well, there's idiotism.oil
17:34:42 <ais523> which is a filename based on that sort of pun
17:34:54 <ais523> really, anything that remotely works is considered idiomatic
17:39:01 <cheater> what's 8205?
17:39:28 <cheater> Anarch [~olaf@c-67-171-37-107.hsd1.wa.comcast.net] has quit [Quit: WILL TROLL FOR FOOD]
17:40:06 <ais523> cheater: a line number in the INTERCAL program I linked above
17:40:22 <ais523> generally, numbers in <s>parens</s> wax/wane pairs indicates line numbers in INTERCAL programs
17:42:04 <cheater> you know i have INTERCAL on my CV
17:42:12 <ais523> really?
17:42:15 <ais523> in what respect?
17:42:42 <cheater> it is listed as one of my professional skills
17:42:50 <cheater> also i have a list of skills on the back of my visit card
17:42:55 <alise> do you actually know INTERCAL?
17:42:57 <cheater> and the last one is "Munctional"
17:43:02 <cheater> i read the manual
17:43:04 <ais523> and if someone decided to actually give you a test of your INTERCAL knowledge, could you pass it?
17:43:05 <cheater> isn't that bad enough?
17:43:08 <alise> that's definitely not the same thing
17:43:12 <cheater> great
17:43:12 <ais523> also, which manual?
17:43:17 <alise> presumably INTERCAL-72
17:43:18 <ais523> there are two
17:43:23 <cheater> the one with the select operator
17:43:36 <alise> which, even if you were the most amazing interpreter ever, doesn't even come close to explaining anything :D
17:43:47 <ais523> that's a really pointless characterisation, given that both the manuals explain about the select operator
17:43:52 <ais523> given that it is, you know, fundamental to INTERCAL
17:43:52 <impomatic> I should list Redcode on my CV :-)
17:44:05 <cheater> yes but the original one has a nice drawing
17:44:09 <ais523> hmm, I'm vaguely confused
17:44:16 <ais523> as I remember writing Redcode, but I can't remember the context
17:44:25 <ais523> or if I ever ran it, or did anything other than interpreting it in my head
17:44:27 <alise> It couldn't possibly be Core Wars? :-P
17:44:35 <cheater> i should put unrealscript on my cv
17:44:42 <cheater> haha
17:44:45 <ais523> alise: it wasn't a core wars entry, I don't think
17:44:45 <cheater> i forgot all about it.
17:44:51 <alise> i should put underload on my cv (despite not being a good underload programmer, but I'm better at it at brainfuck)
17:44:54 <ais523> it may have been related in some other way
17:45:07 <alise> come to think of it, Brainfuck may be my favourite satire on current computer design
17:45:08 <cheater> alise: *than!!!!!!!!!!
17:45:25 <alise> cheater: nonsense, i only use prime numbers of exclamation marks
17:45:32 <cheater> lol :(
17:45:36 <ais523> 1 is prime?
17:45:38 <alise> (note: not even *vaguely* accurate)
17:45:45 <alise> ais523: yes!! as is 2!!
17:45:58 <alise> and 3!!
17:46:01 <alise> and 4!!!!
17:46:02 <ais523> 2! is the only prime factorial
17:46:08 <alise> heh
17:46:35 <cheater> alise: 10 has the interesting property that it is a sum of prime numbers.
17:46:59 <alise> 22, too
17:47:02 <alise> also 3
17:47:04 <ais523> cheater: are you aware of the Goldbach conjecture?
17:47:08 <alise> (note: none of this is even vaguely true)
17:47:14 <alise> (except for the parts that are)
17:47:25 <impomatic> I used Goldbach's conjecture for something the other day!
17:47:36 <ais523> how do you use a conjecture for something?
17:47:44 <alise> fun fact: 4 is the first number greater than two that is not a Goldbach conjecture
17:47:54 <alise> ais523: writing an algorithm that always returns correct results iff the conjecture is true, presumably
17:47:56 <cheater> ais523: to make a conditional theorem
17:48:00 <alise> and may not halt if it isn't true
17:48:03 <cheater> yes
17:48:11 <ais523> ah, OK
17:48:14 <alise> like a lot of CASes do
17:48:20 <impomatic> Goldbach's is tested up to a certain value and the problem I had was below that bound
17:48:38 * ais523 vaguely remembers a theorem that was proved both if the Riemann hypothesis was true, and if it was false, in completely different ways
17:48:41 <alise> impomatic: heh
17:48:43 <ais523> I suppose that's a different way to use a conjecture
17:49:05 <alise> ais523: [PAH EXCLUDED MIDDLE etc.; someone has to be the malcontent]
17:49:19 <alise> although Riemann is quite obviously either true or false
17:49:33 <alise> unless ZFC is even crazier than i realise
17:49:35 <ais523> alise: invoking the law of the excluded middle is normally considered an acceptable thing to do in proofs of theorems
17:49:48 <cheater> what if riemann is undecidable
17:49:51 <alise> ais523: not if you're an intuitionist :P
17:49:52 <cheater> is the theorem proven then?
17:49:57 <ais523> cheater: it can't be proved undecidable
17:50:04 <ais523> because doing so would be a proof that there were no counterexamples
17:50:04 <cheater> why?
17:50:05 <alise> cheater: if riemann is true, there exists a real x such that etc. if it is false, no such real exists
17:50:07 <alise> it cannot be independent
17:50:15 <ais523> and thus contradict the original proof that it was undecidable
17:50:16 <alise> consider ZFC+Riemann and ZFC~Riemann
17:50:22 <alise> the zeta function is the same in both
17:50:26 <alise> but this "x" exists in the former
17:50:29 <alise> consider zeta(x) in the latter
17:50:31 <ais523> I think it might theoretically be possible for it to be undecidable, but unprovably so
17:50:37 <alise> erm
17:50:39 <alise> swap former/latter
17:50:42 <alise> anyway, yeah, it must be 0 in the other
17:50:48 <alise> but we've said it's not; that system is contradictory
17:50:57 <alise> ais523: hmm, agreed
17:51:07 <alise> although don't you mean independent?
17:51:13 <ais523> I'm not sure
17:51:19 <alise> there are no "undecidable theorems"
17:51:25 <ais523> in case you haven't gathered by now, I tend to be incredibly bad at technical terminology
17:51:47 <alise> independent theorem = neither x or ~x is provable in the axiom system; adding either x or ~x to the axiom system produces a system consistent iff the system without it is
17:51:51 <alise> for instance, ZF and Choice
17:51:58 <cheater> alise: yes, there are
17:52:00 <alise> Choice is not provable in ZF, ZFC is consistent, ZF~C is consistent
17:52:09 <alise> cheater: by what definition?
17:52:20 <cheater> alise: goedel's incompleteness theorem
17:52:39 <ais523> isn't that theorem just true?
17:52:50 <cheater> i mean the theorem as the definition
17:52:52 <cheater> anyways
17:52:58 <alise> errr...
17:53:03 <alise> *err...
17:53:10 <cheater> "undecidable" is one of the accepted outcomes of field's if i recall correctly
17:53:36 <cheater> as in, you can prove something's undecidable, and you get a medal
17:53:38 <ais523> alise: that is one of the most pointless IRC corrections I've ever seen
17:53:52 <alise> you could prove that it is impossible to prove either X or ~X in ZFC, where X = (it is impossible to prove either Riemann or ~Riemann in ZFC)
17:53:56 <cheater> http://en.wikipedia.org/wiki/Decidability_(logic)
17:53:56 <alise> but that would just be *ridiculous*
17:54:08 <alise> and probably cause me to commit suicide as a protest against how illogical logic is
17:54:22 <ais523> alise: don't, just leave the field altogether if that happens
17:54:25 <cheater> Indeed, the proof that a logical system or theory is undecidable will use the formal definition of computability to show that an appropriate set is not a decidable set, and then invoke Church's thesis to show that the theory or logical system is not decidable by any effective method
17:54:26 <ais523> become a bricklayer or something
17:54:26 <alise> (note: not true; stop worrying ais523)
17:54:38 <alise> i'm not exactly in the field of logic :P
17:55:11 <cheater> are you in that case alogical?
17:55:47 <cheater> Some undecidable theories
17:55:50 <ais523> oh, I know I'm illogical
17:55:54 <cheater> The first-order theory of the natural numbers with addition, multiplication, and equality, established by Tarski and Andrzej Mostowski in 1949.
17:56:01 <ais523> but it's more a comforting thought
17:56:01 <cheater> i have some books by mostowski and tarski
17:56:03 <cheater> back in poland
17:56:07 <alise> a logical alogical: quite illogical
17:56:08 <ais523> being completely logical would be an awful burden on anyone
17:56:10 <cheater> in a damp cellar somewhere
17:56:32 <alise> ais523: probably impossible for a human
17:56:34 <alise> due to reflex actions
17:56:47 <ais523> can reflex actions be considered illogical, though?
17:56:50 <ais523> you don't decide to perform them
17:57:01 <alise> yes, if you're in a situation where performing the reflex action isn't the most logical action
17:57:07 <alise> performing it would constitute an illogical action
17:57:20 <alise> and being absolutely logical is best defined as "performing the logical action in any situation, no matter what it is"
17:57:34 <cheater> The first-order theory of groups, established by Mal'cev in 1961. Mal'cev also established that the theory of semigroups and the theory of rings are undecidable. Robinson established in 1949 that the theory of fields is undecidable.
17:57:38 <cheater> great
17:57:41 <cheater> all the usefull stuff sucks.
17:57:43 -!- impomatic has left (?).
17:58:00 <cheater> might as well kill myself now
17:58:03 <alise> mathematics has basically become an endeavour in rigorously laughing at the idea of mathematics :)
17:58:38 <cheater> yes
17:59:14 <ais523> alise: I mean, though, failing to perform an action you're physically incapable of performing isn't illogical, no matter how logical it would be to perform the action otherwise
17:59:24 <ais523> so why is performing an action you're physically incapable of not performing?
17:59:34 <alise> ais523: well, you certainly aren't a logical agent
17:59:43 <alise> imagine an agent that universally does stupid things and nothing else
17:59:47 <alise> but inside is a perfectly rational mind
17:59:54 <alise> it's just that the connections to the outside invert any decision it makes
17:59:58 <alise> is it really a rational agent?
18:00:05 <alise> i'd say that's a ridiculous definition
18:00:23 <ais523> surely it would figure that out after a while, and invert its own outputs?
18:00:37 <alise> ais523: no, because the inputs are also reversed
18:00:45 <ais523> even so
18:00:47 <cheater> but a rational agent would be able to rationally tell in which cases they would be unable to act upon the situation by failing to perform actions
18:00:52 <alise> it sees itself being wonderful and logical and great while it, i don't know, repeatedly hits its head against a brick wall
18:00:56 <ais523> inverse outputs don't always cause inverse effects on the environment
18:00:56 <cheater> therefore removing those actions from the pool of considered actions
18:01:02 <cheater> and performing the next best possible action
18:01:10 <alise> ais523: well, ok, fixed output
18:01:15 <alise> (do something stupid, pick one)
18:01:18 <ais523> that's a better example
18:01:21 <cheater> for example: it is impossible for me to explode into a gamma burst therefore killing the whole planet
18:01:28 <cheater> even though it would be the most logical action
18:01:36 <ais523> why is that a logical action?
18:01:38 <alise> for some definition of logical.
18:01:46 <cheater> ^
18:01:48 <alise> ais523: well, it is, under the "I hate Earth" system of morals and ethics
18:02:00 <cheater> just an example
18:02:07 <alise> if anyone powerful actually had that system, I'd recommend killing them :P
18:02:13 <ais523> somewhere on TVTropes there's a ranking of how thorough apocalypses are
18:02:14 <alise> (powerful = more than a human.)
18:02:23 <cheater> but following that example, the next logical action could end up being "move into hut and build bombs to send to people"
18:02:25 <alise> (although POTUS is probably a bad one to go by that system, too.)
18:02:43 <cheater> ais523: url!
18:02:44 <ais523> from local devastation, all the way up to the complete and irreversible eradication of all of reality
18:02:45 <alise> ais523: I thought the one at the end of H2G2 was pretty good, but they managed to stuff that up by releasing a sequel not written by Douglas Adams.
18:02:50 <alise> ais523: You've read H2G2, right?
18:02:58 <ais523> cheater: it's TVTropes, linking to it is pretty evil
18:03:01 <ais523> alise: the first four books
18:03:08 <cheater> ais523: tryyyy
18:03:17 <alise> ais523: ah. i won't spoil the fifth for you, then.
18:03:30 <ais523> cheater: more to the point, I'm at work and so won't visit the site to get the URL
18:03:38 <ais523> but I think the page name is "ApocalypseHow", use its search engine
18:03:47 <alise> ais523: How did you not finish reading the series?
18:03:58 <ais523> because my parents own an anthology book of the first four
18:04:03 <alise> pah
18:04:04 <ais523> presumably bought before the fifth was written
18:04:13 <cheater> ais523: ok :p
18:04:16 <alise> the fifth brings it all together wonderfully
18:04:18 <ais523> strangely, I've read other stuff by Douglas Adams and don't really like it
18:04:24 <ais523> H2G2 is good, the rest, not so much
18:04:31 <alise> ais523: what did you read?
18:04:37 <alise> Dirk Gently's Holistic Detective Agency is very good.
18:04:38 <ais523> I can't remember now
18:04:51 <ais523> oh, I read The Meaning Of Liff, but that one actually is pretty clever, if rather shallow
18:06:15 <alise> the fifth book basically ties together the entire series and then puts a big lock on it so nobody can ever make it work again
18:06:32 <alise> (which was then promptly broken in only 17 years)
18:08:10 <cheater> Class Z: Total Irreversible Destruction Of All Of Reality - THE DESTRUCTION OF REALITY ITSELF! The theoretical ultimate goal of the Omnicidal Maniac.
18:17:26 -!- ais523 has quit (Remote host closed the connection).
18:22:03 -!- tombom has joined.
18:25:01 -!- proff4egg has joined.
18:26:17 -!- proff4egg has quit (Client Quit).
18:31:14 -!- atrapado has quit (Quit: Abandonando).
18:54:49 <Vorpal> <alise> the fifth book basically ties together the entire series and then puts a big lock on it so nobody can ever make it work again <-- which series?
18:55:03 <Vorpal> oh, you mean hhgtg?
18:55:17 <Vorpal> I haven't read the new book
18:55:27 <alise> the new one is 6
18:55:28 <alise> not 5
18:55:32 <alise> 6 sucks.
18:55:39 <alise> 5 is Mostly Harmless
18:55:44 <Vorpal> alise, yes
18:55:55 <Vorpal> alise, you misunderstood me
18:56:03 <Vorpal> I was commented on the book that broke the lock
18:56:10 <Vorpal> when I said I hadn't read the new one
18:56:18 <Vorpal> alise, I know 5 is mostly harmless
18:56:47 <alise> right
18:56:52 <alise> i meant breaking the lock in a bad sense
18:57:07 <Vorpal> alise, indeed, I heard as much
18:57:51 <Vorpal> alise, anyway, you could write side stories, like Adams did himself. Thinking of that short one about Zaphod.
18:57:53 <cheater> alise: http://paste.pocoo.org/show/263554/
18:58:03 <Vorpal> alise, which is iirc set before the first book
18:58:17 <Vorpal> well, "before" is a bit tricky in any series that has time travel
18:58:23 <Vorpal> in a non-paradoxical way
18:59:03 <Vorpal> or rather, it points out some of the paradoxes, and them promptly ignores them
18:59:35 <alise> cheater: ow.
18:59:37 <alise> Vorpal: /msg
18:59:43 * Vorpal looks
19:01:25 <Vorpal> cheater, wait a second, the same file is mentioned several times after each other? Also "included from"?
19:01:43 <Vorpal> cheater, isn't java's importing stuff more like that of, say, python?
19:02:34 <augur> alise: thanks for trying x3
19:03:44 <alise> augur: Trying?
19:03:46 <alise> augur: oh right that
19:05:42 <augur> alise: i think i understand the issue, i just needed to see how it played out in an actual program
19:05:49 <augur> i learn be seeing evaluations and stuff
19:15:06 <Vorpal> fizzie, or Slereah: there?
19:16:02 <Vorpal> fizzie, Slereah do you think planescape would work in winxp in virtualbox?
19:16:08 <Vorpal> http://appdb.winehq.org/objectManager.php?sClass=application&iId=294 doesn't look too reassuring
19:16:23 <Vorpal> oh wait, different versions hm
19:26:25 <fizzie> I seem to recall I've succesfully played with wine.
19:27:25 <Slereah> I am there
19:27:34 <Slereah> Nigga I don't know shit about Linux
19:27:50 <quintopia> wine is p cool
19:28:10 <quintopia> i should see if the world of goo demo runs in wine
19:29:10 -!- sftp has joined.
19:29:21 <alise> Vorpal: if Slereah is right, then i'd run win98 with the original version put on one hard drive
19:29:35 <alise> failing that, xp with the dvd version
19:30:13 <Slereah> As I said, I think the problem with the CD version is mostly modern video cards
19:30:26 <Vorpal> alise, I have not been able to find the dvd version
19:30:35 -!- FireFly has joined.
19:30:48 <alise> Vorpal: then run win98
19:30:53 <alise> no need to run all of xp if you don't have to, right?
19:31:08 <Vorpal> alise, I have xp x64 in a vm already
19:31:10 <alise> and finding a win98 cd is super easy on torrents
19:31:11 <Vorpal> thus... less work?
19:31:15 <alise> Vorpal: well it's unlikely to work with 64-bit...
19:31:20 <Vorpal> alise, and I can get win98 legally :P
19:31:22 <Vorpal> msdnaa has it iirc
19:31:26 <alise> do that, then
19:31:31 <alise> XP x64 has pretty bad compatibility with things like games
19:31:34 <alise> and it'll be a lot heavier
19:31:48 <alise> plus as Slereah says the old version probably wouldn't even run on 32-bit XP
19:31:58 <Vorpal> alise, that means playing it on my laptop though, desktop lacks hw virtualisation
19:32:11 <alise> why laptop?
19:32:20 <Vorpal> alise, because it has hw virtualisation
19:32:23 <alise> you said you had it in a vm
19:32:24 <Vorpal> unlike desktop
19:32:27 <alise> so...
19:32:30 <alise> you'd be doing that anyway
19:32:33 <Vorpal> alise, yes... and xp is in the vm on the laptop
19:32:35 <alise> besides, dude
19:32:39 <Vorpal> alise, I meant "as opposed to wine"
19:32:39 <alise> software virtualisation is fast
19:32:41 <alise> in fact
19:32:49 <alise> virtualbox for 32-bit windows was faster than hardware virtualisation
19:32:51 <alise> at least for a time
19:32:55 <alise> erm
19:32:58 <Vorpal> mhm
19:32:58 <alise> virtualbox running 32-bit windows
19:32:59 <alise> that is
19:33:02 <Vorpal> ah
19:33:10 <alise> so i'd just use put win98 in virtualbox on the desktop
19:33:17 <Vorpal> hm disk space on laptop
19:33:19 <Vorpal> *hrrm*
19:33:28 <Vorpal> how much does it take?
19:33:35 <Vorpal> windows 98 that is
19:33:38 <Vorpal> not the game
19:33:42 <Vorpal> I found those numbers already
19:34:22 <alise> Vorpal: not much
19:34:29 <alise> Vorpal: 200 mb installed or so
19:34:31 <alise> i'd say
19:35:27 <Vorpal> hm
19:36:18 -!- augur has quit (Ping timeout: 240 seconds).
19:36:52 <Vorpal> alise, oh hm I have MS DOS 6.2 and MS-DOS 6.0, and Windows 3.1 for worksgroup, and all the modern ones from XP and onwards. Just not 9x
19:37:04 <Vorpal> on msdnaa I mean
19:37:45 <Vorpal> alise, oh well, trying in wine first... then we will see
19:37:53 <alise> i like windows 95 :)
19:38:27 <quintopia> win95 was easily the best OS of its time
19:38:50 <quintopia> how did MS sink so low as to then produce WinME
19:38:59 <Vorpal> quintopia, nah, I would say contemporary *nix beat it. Sun OS and such
19:39:15 <alise> spoken like someone who's never used Sun OS
19:39:17 <alise> *SunOS
19:39:27 <Vorpal> alise, I have used solaris, sure not quite the same
19:39:30 <alise> (or read an old usenet FAQ that was 90% workarounds for SunOS' stupidity)
19:39:58 <Vorpal> alise, anyway BSD4.3 would have been around back then iirc?
19:40:07 <Vorpal> if not even later versions
19:40:17 <Vorpal> linux was not really usable yet back then
19:41:12 <quintopia> the thing about Win95 that made it so great was how much frickin effort they put into making every little thing they could think of compatible with it
19:41:24 <alise> Vorpal: buying anything other than an x86 box was an expensive proposition...
19:41:25 <quintopia> it wasn't like "here's the OS make software for it"
19:41:34 <alise> quintopia: also, it was the last version to ship with a usable Explorer
19:41:39 <quintopia> it was more "alright, here's the software we want to continue to support, here's the OS for it"
19:42:30 <Vorpal> alise, well yes
19:42:44 <Vorpal> alise, I was just arguing against "<quintopia> win95 was easily the best OS of its time"
19:42:45 <alise> Vorpal: 386BSD... maaybe
19:42:47 <alise> i don't think they had X
19:42:48 <alise> maybe they did
19:42:50 <alise> if they did it was a pain
19:42:51 <alise> twm fuck yeah
19:42:55 <alise> or fvwm, i guess
19:42:58 <alise> but still, very slapdash
19:43:15 <alise> hmm
19:43:19 <alise> wait
19:43:20 <Vorpal> alise, hey people still use twm. Like the teacher in the programming course. twm without the green colours
19:43:23 <alise> Free/NetBSD were around then
19:43:34 <alise> just use them :P
19:43:39 <quintopia> lol
19:43:41 <Vorpal> when I asked he said something, "it worked in 1995, it still does"
19:43:42 <alise> but anyway, windows 95 had actually useful applications and games.
19:43:46 <Vorpal> something like*
19:43:56 <alise> unlike the others
19:44:01 <alise> anyway it wasn't more crashy than classic mac os
19:44:03 <Vorpal> alise, games certainly
19:44:05 <alise> it wasn't a buggy OS
19:44:10 <alise> it just let every program do what the fuck it wanted
19:44:13 <Vorpal> alise, not sure about programs. Depends on what you were doing I guess
19:44:16 <alise> like the Amiga, classic Mac OS, etc.
19:44:34 <Vorpal> alise, SunOS did *not* let every program do what they wanted
19:44:37 <Vorpal> that was my point
19:45:13 <Vorpal> alise, hm was NT 4 around back then?
19:48:17 <alise> 1996
19:48:22 <alise> and besides, it didn't have DirectX
19:49:44 <alise> Vorpal: actually, planescape: torment may work on win95.
19:49:56 <alise> win95 lacks IE explorer.exe, so i heartily recommend it. also, it installs smaller.
19:51:14 <Vorpal> alise, installing in wine, lets see if this works well or not
19:51:50 <Vorpal> alise, less work than the alternative if it works
19:52:02 <Vorpal> and it is supposed to work for some versions, no report for wine 1.3.x
19:52:06 <Vorpal> which seems to be what I have
19:53:30 <Vorpal> alise, http://sprunge.us/TDMA
19:53:50 <alise> I want a bunch old machiiiiines
19:53:52 <alise> *bunch of old
19:54:31 <Vorpal> alise, who doesn't
19:55:41 <alise> nazis
19:55:56 <alise> i'd like
19:55:59 <alise> have a whole room of them
19:56:07 <alise> "Over here, this is the Plan 9 cluster..."
19:56:15 <alise> "...the Windows 95 beowulf..."
19:56:37 <alise> "...here's my complete collection of all Symbolics Lisp Machine models..."
19:56:45 <alise> "...a pony..."
19:56:55 <Vorpal> windows95 beowulf? I doubt it
19:57:13 <Vorpal> well it doesn't work well in wine I can say. Oh well
19:57:28 <alise> "Windows XP Embedded, commonly abbreviated "XPe", is a componentized version of the Professional edition of Windows XP. An original equipment manufacturer is free to choose only the components needed thereby reducing operating system footprint and also reducing attack area as compared with XP Professional. Unlike Windows CE, Microsoft's operating system for portable devices and consumer electronics, XP Embedded provides the full Windows API, and support for
19:57:28 <alise> the full range of applications and device drivers written for Microsoft Windows. The system requirements state that XPe can run on devices with at least 32MB Compact Flash, 32MB RAM and a P-200 microprocessor. XPe was released on November 28, 2001. As of October 2008, the newest release is Windows XP Embedded Service Pack 3."
19:57:29 <alise> *Well.*
19:57:38 <alise> Looks like MiniXP has found a way to become even smaller.
19:58:14 <Vorpal> was worth a try anyway
19:58:29 <alise> "XPe adds a USB boot option to Windows. An XPe embedded device can be configured to boot from a USB drive."
19:58:30 <alise> Awesome.
20:03:23 <Vorpal> alise, did the 0000-0000 and so one work in 98?
20:03:26 <Vorpal> or just in 95?
20:03:50 <alise> Vorpal: the what? key?
20:03:53 <alise> dunno
20:03:54 <Vorpal> alise, yeah
20:03:58 <alise> there were no keys, dude
20:04:01 <alise> in 95
20:04:03 <Vorpal> ah
20:04:10 <Vorpal> then it was 98 that it worked with
20:04:10 <Vorpal> hm
20:04:20 <Vorpal> I have an OEM 98 key somewhere
20:04:24 <Vorpal> just no working cd
20:04:30 <Vorpal> wonder if that will work
20:04:56 <alise> unlikely
20:04:59 <alise> 95! 95! woo hoo hoo!
20:05:04 <alise> 95! 95! woo hoo hoo!
20:05:42 -!- augur has joined.
20:05:47 -!- Phantom_Hoover has joined.
20:06:06 -!- ais523 has joined.
20:07:29 <Vorpal> alise, meh
20:07:43 <alise> ais523: here, chant for 95 with me!
20:07:56 <ais523> as in Windows 95?
20:08:16 <alise> yes
20:08:23 <alise> over 98
20:08:25 <alise> the chant is: 95! 95! woo hoo hoo!
20:08:44 <ais523> it was good for its time, so long as you didn't let it into contact with the outside world
20:09:12 <alise> it's not any less safe than classic mac os :P
20:10:15 <Vorpal> interesting how virtualbox tries to guess the type of OS from the name you are about to give the VM
20:11:59 <ais523> 1995 was before the Internet really took off, wasn't it?
20:12:11 <ais523> as in, it was around, and people were aware of it, but didn't really see how it applied to them
20:12:50 <Vorpal> ais523, 1995 or maybe 1996 was when my dad got internet
20:13:02 <Vorpal> 28 kbps dialup
20:13:08 <alise> I was /born/ in 1995.
20:13:14 <alise> Late 1995, at that.
20:13:32 <Vorpal> alise, yeah you are too young to remember how it was before internet I expect
20:13:50 <Vorpal> when if you didn't know something you went to check the encyclopedia
20:13:53 <Vorpal> and that was one in paper
20:13:55 <Vorpal> not wiki based
20:14:02 <Phantom_Hoover> Vorpal, I had no internet access at all during my formative years!
20:14:06 <Vorpal> and if you didn't find it there: tough shit
20:14:24 <Vorpal> Phantom_Hoover, I hardly had internet access as such, I mean, it was expensive "pay per connected minutes"
20:14:38 <Phantom_Hoover> I had *nothing*.
20:14:39 <alise> by the time i was looking things up i had the internet yeah
20:14:40 <Vorpal> Phantom_Hoover, I watched dad use it to send mail for work stuff sometimes
20:14:48 <Vorpal> Phantom_Hoover, I remember macpaint, on the old classic
20:15:04 <Vorpal> vaguely
20:24:50 -!- ais523_ has joined.
20:25:25 <Vorpal> alise, not 95 btw, for the simple reason of no ACPI -> idle loop is a busy loop
20:25:47 <Vorpal> windows98 can do it as HLT with some trickery
20:26:17 <Phantom_Hoover> What *is* ACPI?
20:27:09 -!- ais523 has quit (Ping timeout: 252 seconds).
20:27:18 <Vorpal> Phantom_Hoover, ... google?
20:27:30 <Vorpal> I can't be arsed to explain something I know have a good wikipedia page
20:32:26 <augur> ive attempted to increase my britishness by eating a ploughmans lunch.
20:38:33 <Phantom_Hoover> I don't think I've ever eaten a ploughman's lunch.
20:38:44 <alise> nor i
20:38:55 <Phantom_Hoover> ais523_, and you?
20:39:13 <augur> well its not bad
20:39:18 <ais523_> wouldn't fit within my diet
20:39:33 <augur> mine is as emulative of the one on the wikis
20:39:48 <augur> that is, cheese, onion, and buttered bread
20:41:10 <Phantom_Hoover> augur, I conclude that you have made yourself less British with respect to this channel by eating a ploughman's lunch.
20:41:27 <augur> Phantom_Hoover: well this channel isnt very british, so that can only be a good thing
20:42:03 <Phantom_Hoover> By "with respect to this channel" I mean "with respect to the channel's British regulars".
20:42:20 <augur> theyre not very british either
20:42:29 <alise> i am deeply offended
20:42:40 <augur> well, alise is. alise is the epitome of britain, in that he's a tiny version of david deutsch
20:42:47 <augur> and david deutsch is especially british
20:42:51 <augur> especially english, even
20:43:32 <Phantom_Hoover> augur, I strongly suspect you to be conflating "British" with "upper-class English".
20:43:56 <augur> im not, im just being liberal in my use of the word british :D
20:44:13 <Phantom_Hoover> Waitaminute, Deutsch is Israeli.
20:44:50 <augur> an israeli citizen maybe
20:45:04 <augur> http://www.edge.org/3rd_culture/deutsch/deutsch_index.html
20:45:08 <augur> but look at that man
20:45:13 <augur> how much more english can you get
20:46:18 <Phantom_Hoover> That page does not have a single mention of the word "tea".
20:46:21 <Phantom_Hoover> QED.
20:46:31 <augur> its an Edge.org page
20:46:40 <augur> deutsch's books are nothing but tea
20:47:23 <Phantom_Hoover> "Quantum computers could theoretically be used to create the perfect cup of tea."
20:47:57 <augur> well we know what happens when an englishman tries to use quantum magic to get tea
20:48:37 <Phantom_Hoover> Schrödinger's teacup.
20:48:47 <Phantom_Hoover> It is broken and not broken at once.
20:49:07 <Phantom_Hoover> When you try to pour tea into it, you get scalded and not scolded.
20:49:11 <Phantom_Hoover> *scalded
20:49:13 <Phantom_Hoover> Oops.
20:56:54 <Vorpal> alise, I'm selecting to install microsoft chat. Just for the laughs
20:57:33 <alise> Vorpal: It works for Jerkcity.
20:57:40 <Vorpal> alise, hm?
20:57:45 <alise> http://www.jerkcity.com/
20:57:46 <alise> The only webcomic.
20:58:00 <alise> Jerkcity is a webcomic published almost daily since 17 August 1998. It follows the adventures of its four main characters — Pants, Rands, Deuce, and Spigot — and their nonsensical adventures within the Jerkcity universe. The strip's backgrounds and the appearance of its characters are generated with the long-defunct application Microsoft Comic Chat, which features the artwork of Jim Woodring. The spirit of the strip is summed up in its official motto, "
20:58:00 <alise> Slurping and drooling and hurrrr."[1].
20:58:06 <Vorpal> ouch
20:58:20 <alise> Basically they say "cocks" on IRC and then it gets posted as a comic.
20:58:36 <alise> The guy who invented it is also http://randsinrepose.com/, which is rather more intellectual.
20:58:41 <alise> Well, "invented"; started.
20:59:39 <alise> "The primary themes of Jerkcity include [list of sins]; also, cocks[35]." -- Wikipedia; reference 35 is http://www.jerkcity.com/jerkcity4184.html.
20:59:41 <alise> Brilliant.
21:00:19 <ais523_> someone actually came in IRC using that program, IIRC
21:00:30 <ais523_> every line they said had a bunch of random characters in square brackets at the start of it
21:00:34 <alise> heh
21:00:35 <ais523_> which they couldn't see
21:00:53 <alise> " character could express a specified emotion, possibly making IRC chatting a more emotive and expressive experience"
21:00:54 <ais523_> I think it was in #irp
21:00:55 <alise> perhaps that
21:00:57 <alise> *"this character
21:01:06 <alise> Although Comic Chat could be used in text-based chat rooms as well, it added a code at the beginning of every message to communicate the character's expression to other chat clients. This had a somewhat annoying effect on non-Comic Chat users (although it could be disabled).
21:01:07 <alise> yep
21:01:08 <Vorpal> alise, I wonder if win98 will now *overestimate* the tiem for once
21:01:11 <Vorpal> ah it seems so
21:01:16 <Vorpal> it jumped from 40 minutes to 28
21:01:19 <alise> !!!
21:01:20 <alise> Microsoft Comic Chat installed a custom font, Microsoft Comic Sans, that users could use in other applications and documents.
21:01:25 <Vorpal> I remember it used to underestimate it
21:01:29 <alise> THE ORIGIN OF THE EVIL
21:01:32 <ais523_> alise: did you not know that it was that that invented Microsoft Comic Sans?
21:01:33 <alise> Well, Bob is the origin.
21:01:33 <Vorpal> alise, didn't you know it came from there?
21:01:35 <alise> But this is the spreader.
21:01:37 <alise> ais523_: wrong
21:01:42 <alise> Vincent Connare designed it for Bob
21:01:47 <alise> well
21:01:47 <Vorpal> that
21:01:49 <Vorpal> explains
21:01:50 <alise> it was designed too late for Bob
21:01:51 <Phantom_Hoover> MY GOD
21:01:51 <Vorpal> so much
21:01:54 <alise> but
21:01:59 <alise> he gave them it anyway
21:02:01 <Phantom_Hoover> Vorpal, GET OUT BEFORE IT'S TOO LATE
21:02:02 <ais523_> ah, you know about what happened before it was released
21:02:08 <Vorpal> Phantom_Hoover, what?
21:02:10 <ais523_> I should look up what Microsoft Bob was some time
21:02:24 <Vorpal> you mean you don't know?
21:02:35 <ais523_> no
21:02:40 <Phantom_Hoover> Vorpal, it's the origin of Comic Sans!
21:02:40 <alise> I hereby present the canonical comic about Comic Sans.
21:02:41 <alise> http://achewood.com/index.php?date=07052007
21:02:42 <ais523_> although apparently it's pretty horrific
21:02:54 <Phantom_Hoover> It's pure, irredeemable typographical evil!
21:02:55 <ais523_> what little I've heard of it almost makes me not want to know
21:03:38 <Phantom_Hoover> http://en.wikipedia.org/wiki/Vincent_Connare
21:03:41 <Phantom_Hoover> THIS IS HE
21:03:42 <alise> "Comic Sans 2010 continues to take the world media by storm
21:03:42 <alise> Ascender Corporation (Illinois, USA): Ascender releases new OpenType font pack for Microsoft Office 2010 with Expanded Super Comic Sans 2010"
21:03:45 <alise> It's NOT EVEN A JOKE
21:03:49 <Phantom_Hoover> AAAAAAAAAAAH
21:03:53 <Phantom_Hoover> KILL ME NOW
21:04:03 <alise> "Because the Comic Sans you had before WASN'T ENOUGH"
21:04:10 <alise> http://www.connare.com/whycomic.htm
21:04:15 <alise> In which he tries to defend himself
21:04:15 <Phantom_Hoover> oklopol isn't even here to give us his delightfully Philistine views on typography.
21:04:27 <Phantom_Hoover> Comic Sans is INDEFENSIBLE
21:04:31 <alise> "Comic Sans was NOT designed as a typeface but as a solution to a problem with the often overlooked part of a computer program's interface, the typeface used to communicate the message.
21:04:31 <alise> There was no intention to include the font in other applications other than those designed for children when I designed Comic Sans. The inspiration came at the shock of seeing Times New Roman used in an inappropriate way."
21:04:40 <alise> Phantom_Hoover: "philistine"; I prefer "post-".
21:04:47 <alise> oklopol is a post-modern post-typographer.
21:04:53 -!- ais523_ has changed nick to ais523.
21:05:53 <Phantom_Hoover> *post-aesthetics
21:06:15 <alise> he has aesthetics, they're just more minimalist than minimalism
21:06:20 <alise> i'm not sure he thinks anything should exist at all
21:07:02 <Vorpal> alise, when this is done installing and I get more than 640x480 screen res (found a thread on vbox forums about that) I will bring ms comic chat into here
21:07:32 <alise> Vorpal: But Planescape is 640x480.
21:07:40 <alise> also, you use that bear program
21:07:43 <Vorpal> alise, anyway it seemed windows 98 installer managed to underestimate time even on virtualbox
21:07:48 <alise> driver
21:07:50 <alise> the vesa driver
21:07:52 <Vorpal> alise, indeed
21:07:57 <Vorpal> alise, that is what I'm going to install
21:07:58 <alise> my favourite program <3
21:08:03 <Vorpal> alise, why is that?
21:08:13 <alise> i used it to use win 95 in the vm :P
21:08:17 <Vorpal> hah
21:08:18 <alise> i liked those bears!
21:08:24 <alise> now i can't find the site
21:08:24 <Vorpal> alise, where did it show bears?
21:08:26 <alise> Vorpal: on the website
21:08:28 <alise> there are bears
21:08:29 <alise> at the top
21:08:32 <alise> or the bottom, or both; I forget
21:08:33 <Phantom_Hoover> What is that bear program?
21:08:40 <alise> Phantom_Hoover: VESA driver for Windows 9x
21:08:41 <Vorpal> alise, VBEMP?
21:08:44 <alise> (and also XP but nobody uses that)
21:08:51 <alise> http://navozhdeniye.narod.ru/vbemp.htm
21:08:54 <alise> where are the bears...
21:08:57 <alise> E-Mail: bearwindows_at_operamail_dot_com | Last update: July 09th 2010
21:09:09 <Vorpal> bearwindows.boot-land.net?
21:09:12 <Phantom_Hoover> VESA?
21:09:12 <Vorpal> is the one I have
21:09:14 <alise> there are bears somewhere
21:09:19 <alise> aha, indeed
21:09:23 <alise> http://bearwindows.boot-land.net/
21:09:25 <alise> look at the bears
21:09:37 <alise> Phantom_Hoover: generic graphics interface
21:09:39 <Vorpal> alise, at the top yeah
21:09:42 <alise> like super-super-VGA
21:09:51 <alise> no 2D acceleration, but it gets you a decent range of resolutions on basically all graphics hardware
21:09:56 <alise> so it's often used as a default driver
21:09:58 <alise> Vorpal: and bottom!
21:10:06 <alise> WOOO BEARS!!!
21:10:26 <alise> "Old adapters support like EGA, CGA, Hercules etc. for testing purposes only :)"
21:10:29 <alise> Windows 95 on Hercules. Now.
21:11:00 <Vorpal> hm
21:11:10 <alise> http://upload.wikimedia.org/wikipedia/commons/8/83/Arachne_CGA_Mode.png ;; 640x200: this is an actual CGA resolution.
21:11:30 <Vorpal> alise, how awkwardly wide screen
21:11:38 <alise> 640x1
21:11:41 <alise> fuck Euclid!
21:12:14 <alise> Vorpal: VBEMP's one flaw is that it can't set widescreen resolutions
21:12:17 <alise> even with PowerStrip
21:12:19 <alise> (various versions)
21:12:29 <alise> but i think it is technically possible to ask for wide resolutions using VESA
21:12:31 <alise> just nobody does it
21:12:41 <Phantom_Hoover> Noneuclidean display modes!
21:13:01 <Vorpal> alise, I plan to run it in windowed mode anyway
21:13:06 <Vorpal> alise, so not much of a problem for me
21:13:12 <alise> windowed games are rubbish
21:13:31 <Vorpal> alise, I meant windowed mode for virtualbox
21:13:33 <Vorpal> not for the game in it
21:13:48 <Vorpal> alise, anyway I can get virtualbox to add black borders around
21:13:53 <Vorpal> if I just maximise the thing
21:14:17 <Vorpal> alise, also if windowed games are rubbish, are you suggesting the classical mine sweeper is?
21:14:32 <Vorpal> that's hearsay!
21:14:38 <alise> minesweeper isn't exactly immersive
21:14:44 <alise> Vorpal: try scaling. it works. seriously.
21:14:51 <alise> as long as it's a multiple
21:14:52 <Vorpal> alise, hm
21:15:14 <alise> (there are quite good smoothing scalers but they only work on really low-res stuff; 320x200 adventure games etc.)
21:15:21 <alise> (not in the realms of dithering and the like)
21:15:59 <Vorpal> alise, they work great on zsnes games
21:18:04 <Vorpal> <alise> fuck Euclid! <-- ?
21:19:31 <Vorpal> alise, win95 with orthogonal persistence. Highly unrealistic but do you like the idea?
21:19:43 <Phantom_Hoover> How would it *work*?
21:20:14 <Phantom_Hoover> All existing OSes rely on the disk/memory separation fundamentally.
21:20:46 <Vorpal> Phantom_Hoover, I don't know, I was just asking about the *idea*
21:22:57 <alise> I've indoctrinated Phantom_Hoover so wonderfully!
21:23:33 <Phantom_Hoover> Praise be to alise, for he is almighty.
21:23:47 <alise> *(s)h/it
21:23:52 <Vorpal> alise, from what I remember palm OS has orthogonal persistence
21:24:04 <alise> Vorpal: quite likely.
21:24:12 <Vorpal> alise, so not all current OSes rely on it
21:24:21 <Vorpal> on fs that is
21:24:24 <alise> large parts of the stock iPhone set do orthogonal persistence too -- Notes, for instance
21:24:28 <alise> persisted to the FS internally, but
21:24:40 <alise> the real thing with orthogonal persistence is that it has to be automatic, from a code perspective
21:24:52 <Vorpal> alise, I don't know if that is the case for palm os or not
21:25:06 <alise> unlikely
21:26:35 <Vorpal> damn, virtualbox crashed on windows 98 post-setup configuration
21:26:56 <Vorpal> lets see if it is recoverable
21:27:49 <Vorpal> perhaps
21:28:47 <Vorpal> I'll just leave it, at least it is alternating between reading/writing disk in an irregular pattern, so probably not just locked up
21:29:32 <Vorpal> ah a dialog!
21:29:33 <Vorpal> hm
21:29:39 <Vorpal> enter password for MS networking huh
21:29:46 * Vorpal clicks OK
21:30:18 <Vorpal> then nothing much...?
21:30:34 <Vorpal> irregular disk access, so still hope
21:31:33 <alise> "Lisp Machine keyboard to PS/2 Converter - PIC16F84A firmware"
21:31:35 <alise> https://code.google.com/p/lmkbd/
21:31:40 <alise> From the man who brought you LoperOS.
21:31:46 <alise> Or, rather -- failed to bring you, so far.
21:31:47 <alise> *Loper OS.
21:32:09 <Vorpal> ah it restarts the whole post install thing, mostly
21:32:12 <Vorpal> not quite the same
21:32:46 <Vorpal> alise, https://code.google.com/p/lmkbd/source/browse/trunk/README
21:32:48 <Vorpal> considering that
21:32:51 <Vorpal> I don't know...
21:32:59 <alise> Hey, it has code.
21:33:05 <Vorpal> now it is again at the phase it previously crashed in
21:33:11 <alise> And that file's a year older than the assembly.
21:33:34 <Vorpal> https://code.google.com/p/lmkbd/source/list
21:33:39 <Vorpal> very useful commit messages XD
21:35:10 <Vorpal> alise, the only change in 2008 was "update email address"
21:35:11 <Vorpal> so um
21:35:20 <alise> meh
21:39:00 <Vorpal> alise, classic mac had way better backward compat than windows
21:39:17 <alise> err what
21:39:26 <alise> windows 7 still runs almost all windows 3.1 programs
21:39:37 <alise> i think there's like one that doesn't run
21:40:14 <alise> er wait
21:40:15 <Vorpal> what about the planescape cd
21:40:18 <alise> windows 7 runs *all* windows 3.1 programs,
21:40:24 <alise> XP even runs Windows 1.01 programs:
21:40:24 <alise> http://toastytech.com/guis/miscwin1xp.png
21:40:30 <alise> iirc windows 7 broke support for one or two of the 1.01 programs
21:40:34 <alise> beat that
21:40:39 <Vorpal> alise, yeah but what about planescape?
21:40:58 <alise> Vorpal: the transition from 9x to NT was painful. games tend to access hardware in a quite low-level fashion.
21:41:01 <alise> even directx may have had some issues
21:41:09 <Vorpal> hm
21:41:19 <Vorpal> ooh win98 startup sound
21:41:20 <alise> anything poking around the internal mac stuff wouldn't have liked a new mac model
21:41:25 <alise> windows 95's is bette
21:41:27 <alise> *better
21:41:27 <Vorpal> huh, not as I remembered it
21:41:29 <Vorpal> indeed
21:41:29 <alise> composed by brian eno, bitch
21:41:50 <Vorpal> alise, "who"?
21:41:56 <alise> ...
21:42:12 <alise> basically invented ambient music?
21:42:22 <alise> Music for Airports?
21:42:25 <alise> Discreet Music?
21:42:34 <Vorpal> blank
21:43:13 <alise> you fail
21:43:19 <alise> he's amazing
21:43:42 <Vorpal> alise, "Heitor Villas-Lobos"?
21:43:45 <alise> Vorpal: he managed to convince microsoft to give him royalties
21:43:48 <alise> for the 95 sound
21:43:49 <alise> imagine how that went :)
21:43:57 <Vorpal> alise, "not him in 98"
21:44:02 <Vorpal> is how it went I imagined
21:44:04 <alise> <Vorpal> alise, "Heitor Villas-Lobos"?
21:44:05 <Vorpal> imagine*
21:44:06 <alise> what?
21:44:16 <alise> i never said /his/ name.
21:44:17 <Vorpal> alise, Choros?
21:44:34 <Vorpal> alise, do you not know who I'm talking about?
21:44:36 <alise> I don't see the relevance.
21:44:37 <Vorpal> if so: you fail
21:44:44 <Vorpal> that is the relevance :O
21:44:47 <Vorpal> s/O/P/
21:44:55 <alise> brian eno is actually famous for being amazing, though.
21:45:02 -!- Mathnerd314 has quit (Ping timeout: 265 seconds).
21:45:02 <alise> brb.
21:45:15 <Vorpal> alise, so is the name I mentioned. In the right places
21:47:33 <Gregor> (Better places)
21:48:24 <Vorpal> Gregor, you know him?
21:48:27 <Vorpal> of him*
21:48:41 <Vorpal> Gregor, good
21:49:13 <Vorpal> Gregor, I have right in front of me a 7-cd box with his complete works
21:50:00 <Vorpal> unless I'm mistaken. Complete Choros and Bachianas Brasilerias anyway + complete solo guitar music
21:53:16 -!- Mathnerd314 has joined.
21:57:21 -!- Sgeo has quit (Ping timeout: 252 seconds).
21:58:18 <Vorpal> alise, it wants to setup dialup, how do I get it to use ethernet
21:58:21 <Vorpal> it sees the interface!
21:58:23 <Vorpal> so wtf
21:59:41 <Vorpal> huh windows crashed
22:04:05 -!- Gracenotes has quit (Ping timeout: 272 seconds).
22:11:24 -!- Sgeo has joined.
22:11:32 <Sgeo> o.O at The Guild
22:11:35 <Sgeo> amazing episode
22:12:49 <Sgeo> alise, what advice have I been ignoring?
22:14:02 -!- MigoMipo has quit (Quit: Quit).
22:16:44 <alise> Sgeo: "recover it *now*"
22:17:15 <Sgeo> I want to do that
22:17:59 <Sgeo> But I can't comply, unless it's 100% safe to leave a computer with a power supply from 2000 running for over a week, sometimes unsupervised...
22:19:29 <Vorpal> alise, that bearvideo driver makes stuff crash
22:19:37 <Vorpal> I wonder if qemu will do better
22:19:56 <alise> works fine with win95 in virtualbox for me.
22:20:03 <Vorpal> hm
22:20:06 <alise> Sgeo: Of course it's safe ...
22:20:17 <alise> And no, you didn't do that.
22:20:18 <Sgeo> It can't catch fire or anything?
22:20:21 <alise> As soon as you reported it we told you to.
22:20:22 <alise> You waited days.
22:20:25 <alise> Sgeo: ...
22:24:51 <Vorpal> alise, he is an incurable idiot, just accept it and give up. Saves on head desking
22:25:23 <alise> Sgeo: you're being stupid, but i'm not one to blatantly insult people in a public message addressed to someone else. Vorpal is retarded.
22:25:56 * Sgeo assumes that that was intentional hypocracy
22:27:18 <Sgeo> <3 SGU
22:30:48 <Sgeo> "yep, i'll be more worried about a old CRT monitor catching fire then any computer/computer psu
22:30:49 <Sgeo> "
22:30:54 <Sgeo> Then again, that's one random person
22:31:54 <Sgeo> My dad said that power supplies do short out...
22:32:03 <alise> your dad says a lot of stupid stuff.
22:33:52 <Sgeo> I'm going to want evidence, one way or another
22:33:58 <Sgeo> I want to see a trustworthy source
22:34:55 <Vorpal> I never seen a PSU fail, I had one suspected PSU failure years ago, turned out it was mobo. It was not violent in any way
22:35:00 <Vorpal> just didn't boot
22:35:03 <Vorpal> and that was desktop
22:35:29 <Sgeo> The computer I want to use is a desktop
22:35:37 <Vorpal> well, no issue really
22:35:51 <Vorpal> PSUs do generally not fail
22:36:03 <Sgeo> Even ones from a decade ago?
22:36:09 <Sgeo> hmm
22:36:38 <Vorpal> Sgeo, just check for dust and blow it away if possible if you are really worried, but seriously nothing to be worried about
22:36:51 <Vorpal> it isn't like copying disk data will be a heavy task anyway
22:37:09 <Sgeo> I won't need to copy this CD if I make a GRUB CD
22:37:27 <Sgeo> That would also make starting this computer much more convenient
22:37:34 <Vorpal> Sgeo, or why not just restore from your backups
22:37:39 <Vorpal> that might be easier
22:37:42 <Sgeo> I don't have backups...
22:37:58 <Vorpal> Sgeo, will you at least start with backups from now on?
22:38:01 <Sgeo> On the other hand, is there any way to just locate and pull out the stuff I care about?
22:38:08 <Vorpal> Sgeo, no there isn't
22:38:11 <Sgeo> Vorpal, I guess... don't know where I'd back up to
22:38:15 <Vorpal> pull the disk image then work on that
22:38:23 <Vorpal> Sgeo, get an external 250 GB disk or such
22:38:25 <Vorpal> that's cheap
22:38:36 -!- FireFly has quit (Quit: swatted to death).
22:38:47 <Sgeo> What happens when I get a 2TB drive for a new computer?
22:39:04 <Vorpal> Sgeo, well, then you would presumably need to grow backup device as well
22:39:09 <Vorpal> but I wouldn't get a 2 TB one
22:39:24 <Vorpal> large disks are not as reliable from what I heard
22:39:30 <Vorpal> 1 TB is about max I would get
22:39:38 <Vorpal> if I needed more I would get several and use in RAID5 or such
22:40:34 -!- GreaseMonkey has joined.
22:40:35 <Vorpal> and of course backups
22:40:35 -!- GreaseMonkey has quit (Changing host).
22:40:35 -!- GreaseMonkey has joined.
22:41:27 <Vorpal> Sgeo, but in general backing up documents is probably more important than downloaded movies and programs. Programs can be reinstalled. TV shows could be re-downloaded
22:42:41 <Vorpal> Sgeo, also a cool trick for hot backup that I seen is that if you have 3 disks, you constantly have two in RAID1, and then add a third one and let it sync, then deattach one. Now it is a backup.
22:42:47 <Vorpal> I haven't tried it myself
22:43:28 <Vorpal> but with hardware RAID with dirty bitmap it is probably quite nice (such bitmaps in linux software raid have abysmal performance)
22:51:29 -!- tombom has quit (Quit: Leaving).
22:58:33 -!- augur has quit (Ping timeout: 272 seconds).
23:00:25 -!- nooga has joined.
23:00:28 <nooga> berk
23:02:41 <Sgeo> Ok
23:02:47 <Sgeo> Now I just need to convince my dad...
23:02:58 <Sgeo> When he wakes up
23:08:00 <Sgeo> alise, have I ever been madly in love with Haskell?
23:08:21 <Sgeo> I think falling in love is how I learn languages, unless I have to learn the language for some other reason
23:13:22 <nooga> is therea way to write a perl regexp that matches strings that DO NOT contain specified substring?
23:13:39 <nooga> (straightforward way)
23:14:09 <Vorpal> <Sgeo> Now I just need to convince my dad... <Sgeo> When he wakes up <-- how old is he?
23:14:17 <Vorpal> and how old are you?
23:14:30 <Vorpal> I assume 70 and <18
23:14:41 <Vorpal> since otherwise there would be no need to convince him
23:15:01 <Sgeo> I'm 21 :/
23:15:17 <Vorpal> Sgeo, then why the fuck do you need to care about what your dad thinks
23:15:27 <Vorpal> you are an adult!
23:16:50 <nooga> swedes are weird
23:16:56 <Vorpal> nooga, how so?
23:17:06 <Vorpal> nooga, if it is something specific maybe I can help explain it
23:17:09 <nooga> you turn 18, ding, you're an adult
23:17:23 <alise> Vorpal: (/msg)
23:17:25 <nooga> leave home
23:17:27 <Vorpal> nooga, well, you can't buy alcohol until 21
23:17:33 <alise> really?
23:17:41 <alise> i guess you guys are a bit weird with alcohol
23:17:43 <nooga> so?
23:17:43 <alise> state-owned stores and stuff
23:17:50 <Vorpal> alise, well you can at restaurants.
23:17:55 <Vorpal> just not in the state owned stores
23:17:58 <Vorpal> or such
23:18:09 <Vorpal> alise, or beer (sold in normal supermarkets)
23:18:26 <nooga> my 17yo brother was buying cider all the time ;D
23:18:37 <nooga> in supermarkets
23:18:41 <alise> Vorpal: haha really?
23:18:43 <alise> beer but no wine?
23:23:47 <fizzie> As a reference point, the Finnish state-owned alcohol monopoly sells beer/wine at 18 but "strong" drinks (>22 vol-%) at 20.
23:24:21 <alise> and i sell heroin to kids at 12!
23:25:21 <fizzie> Oh, and that was retail; for restaurants and such it's just 18 in general.
23:25:26 <pikhq> alise: Less weird than the US.
23:25:54 <pikhq> Where if you're under 21, you basically cannot have alcohol pass your lips.
23:28:39 <Vorpal> <alise> beer but no wine? <-- is sold in supermarkets yes
23:28:47 <Vorpal> the 21 year age applies to both
23:29:32 -!- Mathnerd314 has quit (Ping timeout: 240 seconds).
23:29:39 <Vorpal> alise, the only thing it doesn't apply to is consumption at a place with legal right to serve alcohol, such as many (but not all) restaurants, in which case the age limit is iirc 18 or such.
23:33:52 -!- BeholdMyGlory has quit (Remote host closed the connection).
23:37:06 <alise> Vorpal: http://toastytech.com/guis/miscbapps.png
23:37:09 <alise> windows 95
23:37:47 <alise> http://toastytech.com/guis/miscbmultimedia.png
23:37:54 <alise> http://toastytech.com/guis/miscbnetwork.png (flash!!)
23:38:08 <alise> (more: http://toastytech.com/guis/miscb.html)
23:38:19 <alise> even Tux Racer
23:41:55 <alise> (Yes, that's OS X running on Windows 95)
23:48:51 -!- Gracenotes has joined.
23:52:27 <Vorpal> alise, planescape seems to work fine in XP
23:53:01 <alise> probably because it uses virtualbox graphics drivers
23:53:04 <alise> rather than actual hardware
23:53:07 -!- GreaseMonkey has quit (Quit: Welcome honored guest. I got the key you want! would you like onderves. of Yourself).
23:53:17 <pikhq> Microsoft brought the "ribbon" interface to Pain & WordPad as well.
23:53:18 <pikhq> *vomit*
23:53:57 -!- augur has joined.
23:54:27 <Phantom_Hoover> Is the ribbon that bad?
23:55:44 <pikhq> Yes.
23:56:07 <Phantom_Hoover> Really?
23:56:23 <Gregor> Truly.
23:56:28 <pikhq> It's an exercise in defying the law of least surprise.
23:56:31 <ais523> the ribbon is like toolbars, except it takes an extra click
23:56:55 <ais523> so it's usable, just slower
23:56:58 <Phantom_Hoover> pikhq, I have never used it, so I can't say.
23:57:03 <pikhq> Toolbars. Instead of the menu. That are "context-sensitive". With a dynamic hierarchy.
23:57:15 <ais523> also, it requires you to memorise where everything is, because it's generally less discoverable than menus
23:57:38 <ais523> at least, it's slower to scroll over every ribbon to see which one a particular item is on, than it is to scroll over every menu to see which one a particular item is on
23:57:48 <Vorpal> alise, hw accel support is active in xp x64 here so hm
23:57:57 <pikhq> The arrangement of the ribbon is dependent on the window dimensions.
23:58:00 <ais523> apparently, the reason Microsoft invented ribbons is that they kept getting feature requests for features that were in their applications already
23:58:04 <ais523> just nobody had found them on the menu
23:58:20 <pikhq> I'd call that reason to start paring out features.
23:58:38 <alise> <pikhq> Microsoft brought the "ribbon" interface to Pain & WordPad as well.
23:58:39 <alise> Pain :-D
23:58:44 <pikhq> alise: Hah.
23:59:09 <pikhq> http://toastytech.com/guis/win7appuis.png Windows 7: now with 3 completely different UI conventions!
23:59:24 <Gregor> First they brought Pain to the ribbon interface ... then they brought the ribbon interface to Pain.
←2010-09-20 2010-09-21 2010-09-22→ ↑2010 ↑all