←2010-10 2010-11 2010-12→ ↑2010 ↑all
00:00:09 * Sgeo digs up stuff from his past
00:00:10 <Sgeo> http://i.imgur.com/S6pDQ.png
00:00:15 <Sgeo> Apparently this is OfficeSuite
00:00:22 <elliott_> * Sgeo digs up stuff from his past
00:00:24 <elliott_> don't you do that all day?
00:00:41 <fizzie> You an probably use the first, third, fifth and so on megabytes, though.
00:00:47 <fizzie> s/an/can/
00:01:19 <Sgeo> At some point, I will feel nostalgic about #esoteric
00:01:22 <fizzie> Or maybe zeroth, second and fourth; depending on how you number those.
00:01:23 <Sgeo> After #esoteric dies
00:01:55 <Sgeo> Or IRC channels may be longer lived than other communities
00:01:59 <Sgeo> That seems likely
00:02:03 <Sgeo> But still
00:02:09 <Sgeo> Will Freenode really be around forever?
00:02:33 <olsner> fizzie: or you can use all of them as long as you account for the mirroring :)
00:02:56 -!- MigoMipo has quit (Quit: Quit).
00:03:06 <fizzie> olsner: Yes, well, the addresses, sure; but not the physical megabytes.
00:04:54 <elliott_> "On most newer computers starting with the IBM PS/2, the chipset has a FAST A20 option that can quickly enable the A20 line. To enable A20 this way, there is no need for delay loops or polling, just 3 simple instructions."
00:04:59 <elliott_> THAT SOUNDS NICE NO I/O OK THX
00:05:06 <elliott_> "However, this is not supported everywhere and there is no reliable way to tell if it will have some effect or not on a given system. Even worse, on some systems, it may actually do something else like blanking the screen, so it should be used only after the BIOS has reported that FAST A20 is available. Code for systems lacking FAST A20 support is also needed, so relying only on this method is discouraged."
00:05:09 <elliott_> HAHAHAHAHAHAHAHAHAHA
00:05:13 <elliott_> "Another way is to use the BIOS."
00:05:15 <elliott_> yes that's better thank you
00:05:43 <Sgeo> Please tell me that you're researching history
00:05:54 <Sgeo> Actually, I have no idea what you're trying to do
00:06:17 <elliott_> writing a bootloader
00:06:45 <olsner> writing a bootloader *is* researching history
00:07:20 <olsner> it's actually something like an accelerated trip through all revisions of the x86 isa and bios api:s
00:08:22 <Sgeo> That's only if you want to support more than just your own machine
00:08:39 <Sgeo> I assume
00:09:38 <olsner> most of the steps you need to do on any machine
00:10:22 <elliott_> cmp word [magic], word [MIRROR_MAGIC]
00:10:26 <elliott_> doesn't work, what a surprise!
00:10:43 <Sgeo> So why "all revisions"?
00:11:04 <elliott_> Sgeo: because it starts off in 16-bit real mode
00:11:15 <elliott_> and you use the bios to get shit done
00:11:24 <elliott_> then you do the, cough, fun dance to get into protected mode
00:11:24 <Sgeo> I never learned x86 stuff
00:11:27 <elliott_> then if you're on 64-bit
00:11:32 <elliott_> you do the fun dance to get into long mode from there
00:11:34 <Sgeo> Or x64 stuff
00:11:38 <elliott_> *x86-64
00:11:50 <Sgeo> Anything sinful about abbreviating it to x64?
00:11:53 <elliott_> yes
00:11:55 <elliott_> i'll stab you
00:11:58 -!- elliott_ has changed nick to elliott.
00:12:01 -!- elliott has quit (Changing host).
00:12:01 -!- elliott has joined.
00:12:04 <Sgeo> With your _?
00:12:22 <elliott> yes
00:12:27 <elliott> olsner: http://wiki.osdev.org/A20_Line#Testing_the_A20_line dear god this is long and ugly
00:12:29 <elliott> i don't have that kind of space
00:12:32 <elliott> gotta OPTIMISE
00:13:02 <catseye> *OPTOMISE
00:13:30 <elliott> olsner: maybe i'll just deal with the duplicated megabytes :D
00:13:33 -!- sftp has quit (Remote host closed the connection).
00:13:59 <fizzie> You could do the A20 dance outside your bootloader.
00:14:10 <elliott> fizzie: after I get into protected mode???
00:14:18 <fizzie> Assuming reasonable-sized kernel, anyway.
00:14:18 <elliott> that sounds... fun
00:14:43 <catseye> also VICE does not build out of the box on NetBSD because of a *syntax error*.
00:14:51 <fizzie> Yes, I don't see why not; except that then you don't really have the BIOS helping you.
00:15:26 <olsner> any of the A20 methods listed there (except for anything calling into bios) should work from protected mode afaict
00:16:37 <catseye> for (d = hid_start_parse(report, 1 << hid_input, id) {
00:16:37 <catseye> }
00:16:40 <catseye> THIS IS NOT C, PEOPLE
00:16:50 <elliott> catseye: i, uh, wow.
00:17:14 <elliott> olsner: I'm enabling the A20 line with the BIOS.
00:17:17 <fizzie> All this low-level talk reminds me of this nice paper floating around on how to do really fast "software" routing tables with a clever (ab)use of the cache systems: http://citeseerx.ist.psu.edu/viewdoc/download?doi=
00:17:21 <elliott> Because the alternative is talking to the keyboard and I have am oral objection to that.
00:17:28 <elliott> *a moral
00:17:40 <fizzie> *An oral.
00:19:30 <elliott> 0x0F is "pure white on black", yeah?
00:19:35 <elliott> in vgatextspeak
00:19:43 -!- Jack has joined.
00:19:43 <elliott> that's how it appears here
00:19:53 <elliott> I now have a snazzy error message:
00:19:58 <Jack> hey
00:19:59 <elliott> boot <invert>A20?</invert>
00:20:01 <elliott> hello Jack
00:20:09 <elliott> Jack: this channel is about esoteric programming languages
00:20:09 -!- Jack has changed nick to Guest20118.
00:20:16 -!- Guest20118 has changed nick to Jackoz.
00:20:27 <Jackoz> is it an autoreply?
00:20:52 <elliott> no
00:20:57 <Jackoz> oh :)
00:21:06 <elliott> we get tons of people here thinking it's about that *other* type of esoterica.
00:21:11 <elliott> :)
00:21:17 <Jackoz> Ok, btw I know about that mate
00:21:31 <Jackoz> actually I'm developing an esoteric language
00:21:33 <Sgeo> http://i.imgur.com/WjGPH.png
00:21:38 <Sgeo> Worst. UI. Ever
00:21:43 <elliott> Jackoz: cool
00:21:45 <Jackoz> that's why I joined this channel, shortly I'll need some feedback :D
00:21:56 <Sgeo> Suppose I want to move stuf from 200N 200E to 323S 370E
00:22:02 <elliott> prepare the "your language sucks" cannons, men!
00:22:10 <Sgeo> I put the old location in "Rotate Old Prop Around"
00:22:19 <Sgeo> I put the new location in "Offset Values"
00:22:21 <Jackoz> :(
00:22:35 <Sgeo> Except for Height offset, which is the difference in heights
00:22:38 <Sgeo> I wish I was joking
00:22:58 <Jackoz> actually the only real problem is that it is stack based, but I feel it is not enough
00:23:08 <elliott> Jackoz: we're actually nice! on occasion.
00:23:09 <elliott> fizzie: Int 15/AX=2402h - SYSTEM - later PS/2s - GET A20 GATE STATUS
00:23:14 <elliott> fizzie: See, I can just use the BIOS for everything!
00:23:21 <Jackoz> but having a normal "variable declaration" language seemed too overkill
00:23:28 <elliott> Jackoz: stack is nice!
00:23:34 <Jackoz> I have to find something in the middle, so maybe I can get some inspiration here
00:23:39 <elliott> "not enough" is always almost a bad impulse, keeping things simple and pure is what leads to a gem of a language
00:23:43 <elliott> imo
00:23:44 <Sgeo> I'm having an affair with a stack based language
00:23:46 <elliott> but i'm interested, so go on
00:23:54 <elliott> Jackoz: Sgeo is our friendly channel bot
00:24:28 <Sgeo> channel bot write in Factor for great justice
00:24:52 <Sgeo> ^^too coherent for a fungot-like bot
00:25:06 <Sgeo> Hey, fungot doesn't detect on fungot-
00:25:07 <fungot> Sgeo: using the odd syntax for one
00:25:20 <Sgeo> -fungot-
00:25:21 <fungot> Sgeo: toi ei oo fnord ja kanava fnord? l)
00:25:29 <elliott> Jackoz: a bot with a tendency to call the other bots.
00:25:32 <Jackoz> elliott: I'm trying to keep it fully functional with powerful but obscure operators, but this implies having to manipulate the stack a lot
00:25:40 <fizzie> elliott: "later PS/2s" -- surely you're not going to limit yourself on such!
00:25:44 <elliott> stack manipulation is fun, but ok :)
00:25:47 <elliott> fizzie: Oh yes I am.
00:25:51 <Sgeo> Just to clarify, I'm not actually a bot
00:25:54 <elliott> fizzie: *to such
00:26:00 <Sgeo> Well, maybe a nostalgia-bot
00:26:04 <elliott> Jackoz: he's also wired to say he's not a bot whenever his botness is mentioned :)
00:26:19 <elliott> fizzie: They're technically "optional", but the amount that I care is zero. :P
00:26:26 <Jackoz> Sgeo: do some goole searches for me!
00:26:30 <Jackoz> *google
00:26:52 <Sgeo> There's no way I'm actually failing a Turing-test, am I?
00:27:16 <elliott> What we have learned here: Sgeo truly is indistinguishable from a simple computer program.
00:27:30 <elliott> Or, y'know, [some less cynical conclusion about the way people react to other people when they have assumptions].
00:27:42 <fizzie> Sgeo: The fungot-not-replying thing was probably that one occasional bug it has that I haven't managed to catch.
00:27:42 <fungot> fizzie: i don't need that much range anyway.
00:27:45 <Jackoz> elliott: just to give you an idea http://jacoposantoni.com/impossible/operators (but many operators aren't documented there yet)
00:27:57 <Sgeo> testing. fungot-like. testing
00:27:57 <fungot> Sgeo: yes, i'm just trying to understand syntax-case. so i'll be here tomorrow for a response on c.l.s
00:28:09 <fizzie> (And apparently 'e doesn't think it's worth fixing anyway.)
00:28:22 <elliott> cmp al, 1
00:28:22 <elliott> je protect
00:28:22 <elliott> gotta be a simpler way of writing that
00:28:23 <elliott> oh well
00:28:39 <Sgeo> comp.lang.???
00:28:40 <Sgeo> scheme?
00:28:43 <Sgeo> smalltalk?
00:28:46 <fizzie> Scheme.
00:29:01 <fizzie> syntax-case is a tricky Sceme macro thing.
00:29:03 <elliott> Jackoz: just so you know, trash is usually called "drop"
00:29:10 <elliott> Jackoz: and dupe dup
00:29:24 <elliott> Jackoz: this is a good language
00:29:34 <Jackoz> elliott: thanks, I'll take it into account :)
00:29:41 <Jackoz> elliott: that's why I joined here
00:29:44 <elliott> Jackoz: you should see some of the first esolangs people come up with :)
00:29:50 <elliott> they can be truly awful
00:30:38 <Sgeo> elliott, it's impolite to make someone laugh at food-time
00:30:41 <Jackoz> elliott: I was thinking about having many stacks with a default behaviour that is usually good without any additional thought from the developer but I wasn't unable to come up with anything yet
00:30:43 <Sgeo> I could be dead thanks to you
00:31:01 <elliott> Sgeo: surely you're a bot now
00:31:10 <Jackoz> Sgeo !search pr0n
00:31:20 <elliott> boot sector is 168 bytes, that's over a *fifth* of the maximum!
00:31:28 <Jackoz> this damn bot, it needs some fixes
00:31:39 <elliott> In fact, it's basically a third.
00:31:57 <Sgeo> Who said I have to give the results back to you? *ponders* I don't think you want the results
00:32:20 <Sgeo> </nasty>
00:32:41 <elliott> fizzie: You! Tell me why my segments go all strange after going into protected mode.
00:33:48 <catseye> it's building openssh
00:33:52 <catseye> ...
00:33:54 <catseye> that's why!
00:34:29 <elliott> OH!
00:34:41 <elliott> Because video memory is 0xB8000 on the other side of the divide, not 0xB800.
00:34:43 <elliott> Duh.
00:35:16 <elliott> Now it works in qemu but not bochs -- which is *never* a good sign.
00:37:15 <Sgeo> ...how does that happen?
00:38:48 <elliott> Because bochs is anal and slow and qemu is lax and fast.
00:39:25 <elliott> 00134663903e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x0d)
00:39:25 <elliott> 00134663903e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x08)
00:39:37 <elliott> 00134663903e[CPU0 ] interrupt(): gate descriptor is not valid sys seg (vector=0x08)
00:39:39 <elliott> whoops
00:39:45 -!- FireFly has quit (Quit: swatted to death).
00:39:48 <elliott> so lol something is up.
00:40:13 <olsner> something's causing an interrupt, and you probably haven't set up an interrupt descriptor yet
00:40:29 <elliott> olsner: ah.
00:40:32 <elliott> bochs is a bitch, then
00:41:10 <elliott> olsner: wrong!
00:41:13 <elliott> olsner: well
00:41:19 <elliott> I set up idtr using yours (dw 0 dd 0)
00:41:26 <elliott> olsner: is it triggering despite that or something?
00:41:28 <elliott> and i have to set up more?
00:41:30 <elliott> if so WOOOOOO.
00:41:57 <olsner> you don't have to set up more as long as you have interrupts disabled and don't do anything wrong :)
00:42:10 <elliott> olsner: clearly I do, because it happens anyway :)
00:42:15 <elliott> lidt [idtr]
00:42:20 <elliott> align 4
00:42:21 <elliott> idtr:dw 0
00:42:21 <elliott> dd 0
00:42:28 <Sgeo> It occurs to me that I have a record of my Opera usage
00:42:35 <olsner> elliott: you just have to stop doing something wrong that causes the interrupts
00:42:42 <Sgeo> So if I'm ever tempted to try Opera again, say in a few years...
00:43:03 <olsner> elliott: did you disable interrupts?
00:43:17 <elliott> olsner: probably not!
00:43:34 <elliott> olsner: i should figure out how!
00:43:54 <Sgeo> I shouuld learn how this stuff works
00:43:54 <elliott> olsner: wait yes i did
00:43:56 <fizzie> CLI, isn't it?
00:43:59 <elliott> cli
00:43:59 <elliott> lidt [idtr]
00:44:00 <fizzie> That looks like a pretty small IDT.
00:44:02 <elliott> lgdt [gdtr]
00:44:04 <Sgeo> Especially if I want to build a computer at some point
00:44:05 <elliott> fizzie: blame olsner
00:44:22 <elliott> Sgeo: all of this is utterly irrelevant to the trivial "stick a few components together in a case".
00:44:32 <elliott> the latter is like lego.
00:44:32 <Sgeo> I meant in virtual worlds
00:44:46 <Sgeo> I know how to stick components in the real world together
00:44:47 <elliott> Sgeo: !google typical
00:45:02 <fizzie> The first few (19) entries of the idt can be invoked by processor-generated exceptions.
00:45:05 <Sgeo> ..?
00:45:12 <Sgeo> Oh
00:45:25 <Sgeo> You're not giving me advice, you're saying that I'm being typical me
00:45:33 <fizzie> vector=0x0d there is a general protection fault.
00:45:35 <Sgeo> You are typically typical you
00:45:37 <Sgeo> So what?
00:45:43 <elliott> fizzie: Well that's not good.
00:45:47 <fizzie> And vector=0x08 is a double fault.
00:45:51 <elliott> other_side:
00:45:52 <elliott> mov word [0xB8000+ebx+2], 0x0F21
00:45:52 <elliott> x:hlt
00:45:52 <elliott> jmp x
00:45:57 <elliott> What's so protection-faulty about that?
00:47:17 <fizzie> Have you reloaded your ds after the jump to protected mode? If ds was zero before, I would assume it still has that 64k limit. But really, I haven't done this before: ask oelsner.
00:47:28 <elliott> ølsner
00:47:41 <fizzie> Oerrrrsleer.
00:47:45 <elliott> But fizzie is right!
00:47:50 <elliott> push DATA_SEGMENT pop ds works just fine.
00:48:46 <fizzie> Ommina sleep now, though; good luck with protecting your modes.
00:49:09 <elliott> Hey, look!
00:49:14 <elliott> fizzie: catseye: olsner: BOOTLOADER COMPLETE
00:49:15 <elliott> (sort of)
00:49:19 <elliott> And it's 200 bytes exactly.
00:49:19 <olsner> elliott: sweet
00:49:32 <elliott> That includes the "jmp KERNEL_SEGMENT:0" at the very end that I'm not sure will work entirely properly here.
00:49:41 <elliott> olsner: I should probably reset all the registers like you do.
00:50:23 <elliott> But still, 200 bytes to read the kernel from a floppy disk, giving diagnostics along the way, enable the A20 line (giving "boot? <inverted>A20</inverted>" if it doesn't work), jump into protected mode and jump to my kernel.
00:50:24 <elliott> Not bad.
00:50:31 <elliott> brb
00:50:32 <olsner> elliott: yes, having all of them point to a proper 32-bit data segment is useful
00:53:17 <catseye> that's frightening
00:58:29 -!- FireFly|n900 has joined.
00:58:35 <FireFly|n900> Hi
00:59:18 <FireFly|n900> Golf a BF infinite loop code fragment that can be inserted in any valid brainfuck program
00:59:33 <FireFly|n900> Would +[]+[] be the shortest possible?
01:01:01 <Ilari> '[]+[]'?
01:01:25 <FireFly|n900> Hm
01:01:36 <FireFly|n900> I suppose that works
01:02:34 -!- FIQ has joined.
01:04:23 * Sgeo wonders if he can find his Haskell BF interpreter
01:05:33 <pikhq> FireFly|n900: Define the Brainfuck.
01:07:51 <Jackoz> in any case you should be able to wrote a BF interpreted in any language in just a couple of minutes
01:08:08 <Jackoz> *interpreter
01:08:17 <pikhq> Try writing one in Malbolge.
01:08:26 <Jackoz> except Malbolge :)
01:08:31 <pikhq> (if you can, you win all the Internet points)
01:08:34 <Jackoz> I was excluding esoteric languages actually
01:08:38 <FIQ> brb write one in MSL :D
01:08:46 <pikhq> There's non-esoteric sub-Turing languages.
01:09:04 * Sgeo was about to o.O, but SQL would be one, right?
01:09:19 <Sgeo> Oh, and "non-programming" languages like HTML
01:09:20 <pikhq> SQL is indeed one.
01:09:21 <Jackoz> it depends on which extensions of SQL are available
01:09:30 <Jackoz> HTML is not a programming language
01:09:33 <pikhq> Sgeo: HTML is still a language, though.
01:09:34 <Jackoz> it's a markup language
01:09:43 <pikhq> Yup, for Hyper Text.
01:10:06 <Sgeo> English would count as TC, right?
01:10:16 <Jackoz> why not?
01:10:26 <Sgeo> Are there any non-TC natural languages/
01:10:42 <Jackoz> you can easily define a corrispondence between a turing complete language and the english language, providing the right semantics
01:11:15 <Ilari> Also, I don't think it would be easy to write BF interpretter in any esolang I have designed (I actually have more than that Pointer-B mess...)
01:11:43 <Sgeo> Is Ancient Egyptian TC?
01:12:20 <Jackoz> Sgeo: are you assuming the semantics as they intended it?
01:12:57 <Jackoz> in any case Egyptians didn't have any 0 concept
01:13:04 <catseye> Sgeo: I think we can safely say "yes" to that
01:13:29 <Jackoz> so
01:13:41 <Jackoz> I'm not sure that hieroglyps are a TC language
01:13:51 <Jackoz> at least not using their original semantics
01:14:10 <pikhq> Jackoz: Hieroglyphs were an orthography for a language.
01:14:15 <catseye> Jackoz: I would be *extremely* surprised if they did not have a concept for "nothing"
01:14:33 <catseye> actually make that *****extremely*****
01:14:38 * Sgeo was thinking "off", but just realized how riduculous that was
01:14:38 <Jackoz> pikhq: it's much more than that
01:14:50 <Sgeo> riduuuuuuuculous
01:14:54 <Sgeo> </elliott>
01:15:06 <Jackoz> pikhq: hieroglyps are far more esoteric as normal languages since they were used either to express words eithers as just word fragments
01:15:28 <Sgeo> My English parser broke.
01:16:09 <Jackoz> sorry, english is not my mother language and I'm watching a movie so my attention is partially here
01:16:12 <pikhq> My English lexer *also* broke.
01:16:31 <pikhq> And my Japanese lexer sees funny squiggles.
01:16:32 <Jackoz> in any case you shouldn't have reached parsing phase, you should have stopped before.
01:16:57 <pikhq> Jackoz: English speakers have highly accepting lexers.
01:17:55 * Sgeo now ponders where the term "lexing" came from
01:17:55 <Jackoz> catseye: they had the concept of zero intended as perfection or completion but it wasn't, strictly talking, a numeral concept
01:18:42 <catseye> Jackoz: You don't need numerals to build a Turing Machine, though.
01:19:04 <Jackoz> catseye: no, but I think you need the concept of zero intended as zero :)
01:19:23 <Sgeo> Might the concept of words be sufficient?
01:19:37 <Jackoz> this is something somewhat trivial for us, we should ask an ancient Egyptian
01:20:01 <pikhq> Jackoz: No, you don't even need that.
01:20:07 <Sgeo> I'll just take Apophis and hand him over to the Tok'ra
01:20:14 <Sgeo> Then we can ask his host!
01:20:15 <catseye> I also wonder if "I have no money" in Ancient Egyptian was regarded as a state of perfection or completion :)
01:20:44 <Sgeo> [spoiler] but whatever
01:20:46 <pikhq> Jackoz: One could just as well have a Turing machine with an alphabet consisting of 日 and 本 instead of 0 and 1.
01:20:58 <pikhq> Doesn't even matter what the symbols *mean*.
01:23:00 <Jackoz> that's undoubtely true, but we are talking about using a language to see if it is TC
01:23:30 <Jackoz> actually you can build a TC language with any chosen alphabet, from that point of view every language is TC
01:24:07 <Jackoz> the problem in that case is that you should be able to build a partial function that describes the behaviour of the turing machine by using their already existing semantics
01:25:01 <Jackoz> without choosing an arbitrary one, just to prove its Turing completeness
01:26:33 <Jackoz> otherwise you are just proving that a language, which shares its alphabet with hieroglyps, is TC
01:26:43 <catseye> You only need a small number of verbs and nouns and adjectived to describe a Turing machine: left, right, change, check, etc. I would guess there has never been a human language in existence that has lacked these concepts, and words for them.
01:26:59 <catseye> *adjectives
01:28:04 <Jackoz> that's why Turing completeness is a concept quite useful from a theoretical point of view, but really overused all around
01:28:15 * olsner stops fiddling with protected mode and goes to bed
01:28:43 <olsner> should extend my code so it can go into long mode too
01:29:32 <Jackoz> languages that are not TC simply aren't languages used to express computations. So the fact that SQL is not TC doesn't astonish me :)
01:30:33 <Jackoz> by the way this channel should be called #pedantic, you are really all ready to push newcomers in a corner ..
01:30:40 <FIQ> yay, done
01:30:55 <FIQ> $bf(++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.) -> HelloWorld!
01:30:56 <FIQ> :D
01:33:26 -!- iamcal has joined.
01:33:26 -!- cal153 has quit (Read error: Connection reset by peer).
01:34:15 <elliott> back
01:34:23 <elliott> <catseye> that's frightening
01:34:26 <elliott> why? the size of the bootloader?
01:34:40 <elliott> <pikhq> There's non-esoteric sub-Turing languages.
01:34:41 <elliott> e.g. C
01:34:44 <elliott> at least without libc
01:34:57 <elliott> <Jackoz> by the way this channel should be called #pedantic, you are really all ready to push newcomers in a corner ..
01:35:13 <elliott> some of us -- cough pikhq -- have not learned that you're meant to start being nice once the newbie demonstrates a modicum of intelligence :)
01:36:47 <elliott> just kidding pikhq let's be friends.
01:36:49 <elliott> or something
01:37:00 <elliott> woo one of the spontaneous channel lulls
01:37:10 <elliott> Jackoz: I think it's meaningless to talk about natural languages being TC
01:37:15 <elliott> they're description languages
01:37:33 <elliott> "Is XML TC?" is a meaningless question, but XML-Prog-Lang-2000 can perfectly well be TC with its syntax in XML
01:37:46 <elliott> "Are S-Expressions TC?" is also meaningless, but Lisp is certainly Turing complete.
01:38:01 <elliott> Similarly, you could define a language out of valid English sentences, and it could be Turing complete.
01:38:10 <elliott> "Give me N gram(s) of sugar." could add N to the accumulator, etc.
01:38:31 <Jackoz> elliott: re, that was my point. I think that TC has its coolness but it is somewhat not so much significative
01:38:48 <Jackoz> it is just the best effort we've been able to do in the field of computational theory
01:39:26 <elliott> just because you can't apply the concept of turing-completeness to some things doesn't mean it's meaningless :)
01:39:33 <elliott> like saying colours aren't an ideal concept, because you can't ask what the colour of 3 is
01:40:17 <Jackoz> I don't say it is meaningless, I say that every language used to compute something is 99.9% TC
01:40:21 <catseye> elliott: I would disagree. There is a subset of English that is Turing-complete, even with the natural semantics of the sentences (no contrived meaning for what N grams of sugar is, e.g.)
01:40:39 <elliott> catseye: well sure, but it's not English that's TC
01:40:43 <elliott> just like the s-expression
01:40:46 <elliott> (define (brainfuck x) ...)
01:40:48 <elliott> doesn't prove S-expressions TC
01:40:52 <elliott> it proves Scheme TC
01:40:56 <catseye> English is more than S-expressions, though.
01:41:00 <catseye> Sentences have meanings.
01:41:02 <elliott> catseye: what that shows is that English Interpreter Deluxe is TC.
01:41:05 <elliott> catseye: well, sure
01:41:08 <elliott> but they're descriptive meanings
01:41:11 <elliott> they describe objects
01:41:16 <elliott> you could describe a turing machine
01:41:20 <elliott> etc.
01:41:29 <elliott> but you can't actually describe something that takes a Turing machine to compute
01:41:37 <elliott> (although you can describe a Turing machine that computes a certain thing)
01:41:59 <catseye> elliott: You are hopelessly confused on this point.
01:42:19 <elliott> catseye: That's an... interesting way to say "we disagree".
01:42:30 <Jackoz> just to avoid a fight, can I ask a side question?
01:42:51 <Jackoz> catseye the one of Cat's Eye Technologies?
01:42:56 <elliott> Yes.
01:43:09 <Jackoz> cool, my maximum respect to you :)
01:43:21 <Jackoz> since I remember your website from many years ago
01:43:28 <elliott> Don't believe the hype! catseye is actually a slimy, slithery snake of EVIL and LIES.
01:43:42 <catseye> elliott: If I had said "words are TC", our analogy with S-exps would make sense. But I said "English", not "words".
01:43:51 <catseye> *you
01:43:51 <Jackoz> yeah, then he tried to push me in a corner together with the others :(
01:43:53 <catseye> *your
01:44:12 <elliott> catseye: And I believe that English is a language describing (and is thus executable) objects in a sub-TC way.
01:44:15 <elliott> Well.
01:44:25 <elliott> "The contents of the tape after executing the Brainfuck program '...'."
01:44:29 <Jackoz> I wonder why elitistic nerds are also misanthropic
01:44:35 <elliott> catseye: You may be right!
01:44:39 <elliott> Jackoz: it's IRC, get over it :P
01:44:51 <elliott> Jackoz: I saw no pushing into corners, just nitpicking and discussion
01:44:58 <elliott> and when the conversation is this academic, nitpicking is important
01:45:10 <elliott> <Sgeo> My English parser broke.
01:45:21 <Jackoz> yes, some years are passed from my last IRC visit :)
01:45:23 <elliott> this is Sgeo's wonderfully polite way of saying "please restate what you last said, I couldn't understand it"
01:45:36 <elliott> ironic, i'm usually the asshole here
01:45:52 <Jackoz> it's hard to speak about academic topics when english is not your mother language
01:45:56 <catseye> Jackoz: I'm sorry if it seemed like I was pushing you into a corner; certainly not my intent, I was just arguing my position.
01:45:58 <Jackoz> I'm really trying to do my best :)
01:46:02 <elliott> Jackoz: i swear we're nice and cuddly
01:46:20 <Jackoz> nah, I'm just joking. Actually I was just trying to make you feel a little bit guilty about something
01:46:57 * Sgeo didn't mean to be an asshole
01:46:58 <elliott> Jackoz: YEAH WELL I HATE YOU TOO
01:47:07 <elliott> now back to my bootloader -- the only true friend i have
01:47:12 <Jackoz> my main concern
01:47:13 <Jackoz> is to find
01:47:14 <Jackoz> a way
01:47:19 <elliott> to talk over multiple lines?
01:47:21 <elliott> congrats :)
01:47:30 <Jackoz> to change my stack language in something different
01:47:38 <elliott> "in something different"?
01:47:42 <Jackoz> yeah, sorry, as I stated I'm not used anymore to IRC :)
01:47:44 * elliott legitimately doesn't understand
01:47:49 <elliott> oh, i do it too
01:47:53 <elliott> i'm just being silly
01:48:02 <elliott> good heuristic: lines in #esoteric are not serious 99% of the time
01:48:23 <Jackoz> I mean that just having a stack needs too many extra operations
01:48:51 <Jackoz> so I thought that here some dark-uber-mega-nerd-misantrophic-guy
01:48:55 <Jackoz> could give me a better idea
01:50:00 <elliott> well it's a bit of a vague question :)
01:50:11 <Jackoz> yes, I can get it
01:50:13 <Jackoz> my actual idea
01:50:29 <Jackoz> was to avoid variable declaration
01:50:51 <elliott> Jackoz: functional?
01:50:55 <Jackoz> but *guessing* having many stacks that are used by convention
01:50:55 <elliott> if every function has a fixed number of arguments
01:50:58 <Jackoz> yes, it is
01:51:02 <elliott> then the program is just f g x y h x y z
01:51:07 <elliott> if f has three arguments
01:51:12 <elliott> and g and h have two
01:51:16 <elliott> then that's f(g(x,y),h(x,y),z)
01:51:17 <elliott> etc.
01:51:29 <Jackoz> ok, now assume that many builtin instructions
01:51:37 <Jackoz> can work on different parameters according to the stack
01:51:46 <Jackoz> (either number of parameters, either types)
01:51:59 <Jackoz> for example .>
01:52:09 <Jackoz> computes the floor function if it finds a float onto the stack
01:52:18 <Jackoz> while it works like OCaml iter (or each)
01:52:27 <Jackoz> if it finds a collection and a lambda
01:52:27 <coppro> oh god this language looks awesome
01:52:45 <Jackoz> so that
01:52:54 <Jackoz> 2.2 .> will leave 2.0 onto the stack
01:52:55 <Jackoz> while
01:53:05 <Jackoz> {1,2,3,4}[^].> will print 1 2 3 4
01:53:28 <elliott> Jackoz: right
01:53:35 <elliott> Jackoz: so, function overloading except on a stack basically.
01:53:41 <Jackoz> yes
01:53:49 <elliott> and? :)
01:53:52 <Jackoz> this can be good but a little bit weak in certain situations
01:53:54 <elliott> just not sure what your question is
01:53:54 <elliott> ok
01:54:07 <Jackoz> my question was about not using a stack but something different :)
01:54:17 <Jackoz> maybe multiple stacks that are filled accordingly to the types?
01:54:26 <elliott> so each lambda goes on the lambda stack?
01:54:27 <elliott> etc.?
01:54:28 <Jackoz> I really don't know, I just thought that the stack was not enough
01:54:37 <Jackoz> something like that
01:54:46 <Jackoz> actually there is a lambda stack, but it is used to track execution
01:54:56 <elliott> right, "return stack".
01:55:09 <Jackoz> yes, the good old activation record
01:55:14 <elliott> Jackoz: general advice - keep it simple. your language looks interesting as it is
01:55:16 <Jackoz> of CPUs
01:55:24 <elliott> ok, it's not *hugely* esoteric, but it's definitely more esoteric than most languages
01:55:45 <Jackoz> so your personal advice is to keep it this way?
01:55:57 <elliott> personally, yes; but if you hit on something interesting, don't let me stop you :)
01:55:59 <elliott> Jackoz: maybe a queue!
01:56:01 <elliott> that would be ... odd
01:56:06 <Jackoz> rotfl
01:56:26 <Jackoz> that would be crazy
01:56:42 <Jackoz> I could implement a fuzzy rule
01:56:55 <Jackoz> that tries to execute the right implementation of the operator
01:56:58 <elliott> coppro: you want nothing more than to read my bootloader, right?
01:57:01 <Jackoz> according to what it actually finds on the stack
01:57:12 <elliott> Jackoz: well that's not fuzzy that's just function overloading isn't it? :)
01:57:19 <Jackoz> not at all
01:57:47 <Jackoz> then I was thinking about
01:57:54 <coppro> elliott: ob
01:57:57 <Jackoz> not having to pick values from the stack, or rotate them
01:58:19 <coppro> no, this language must have only one stack
01:58:22 <Jackoz> like something that is able to guess the correct operation not caring about order of parameters
01:58:24 <elliott> coppro: http://sprunge.us/UfHO boot.s!
01:58:28 <coppro> it should have an 'evaluation stack'
01:58:32 <elliott> Jackoz: coppro is now in charge of your language :)
01:58:38 <Jackoz> :D
01:58:46 <coppro> err, sorry
01:58:47 <coppro> two stacks
01:58:53 <coppro> one for values/functions, one for evaluations
01:58:56 <Jackoz> don't want to be invasive, just to get some ideas
01:58:56 <elliott> coppro: it already does
01:59:02 <elliott> Jackoz: invasive? howso?
01:59:14 <Jackoz> just by submerging you with questions
01:59:28 <coppro> if we get tired/annoyed we'll just not answer
01:59:33 <elliott> nothing could ever match Sgeo's questioning power
01:59:38 <coppro> that too
01:59:44 <elliott> and we still answer him
01:59:47 <elliott> mostly because he doesn't shut up if we don't
01:59:48 <coppro> very little matches this channel's noise:signal ration
02:00:09 <Jackoz> you just need a Sgeo-pass filter
02:02:11 <coppro> Jackoz: I need to read logs and stop commenting things I don't understand in the slightest
02:02:30 <Jackoz> coppro: don't worry, I like your good intents
02:02:46 <Jackoz> which could be a good way to test the expressiveness of the language?
02:03:08 <Jackoz> trying to implement things as project euler challenges?
02:03:20 <elliott> Jackoz: it's esoteric, it's not meant to be expressive! well ok that's not true but still
02:03:24 <elliott> Jackoz: implement a brainfuck interpreter
02:03:25 <elliott> or Underload
02:03:36 <Jackoz> I was already trying it
02:03:44 <Jackoz> but the use of the stack was really tough :)
02:03:45 <elliott> :)
02:03:52 <Jackoz> that's why I came here
02:03:58 <coppro> hmm
02:04:04 <coppro> it would be easier to help with a specification
02:04:16 <Jackoz> {:}#y{>}#z{'>:[:1+:],'<:[:1-:],'+:[%;3$>1+3$:<%%],'-:[%;3$>1-3&:<%%],'.:[2$2$>^^]}#x(:16:)0 0"+[>,]<-[+.<-]";0 0%[;'[= [,:1+:][']= [@y:>>% %4$% %<<,<<][1+]??]??]e@y^^ [@x:>>!]e
02:04:23 <Jackoz> this is how much far I gone
02:04:25 <coppro> but now I realize that what I was thinking is not what you are thinking
02:04:30 <elliott> coppro: there's a function reference :P
02:04:40 <Jackoz> that function reference is really old :(
02:04:43 <coppro> but now I have an excellent idea for a language
02:05:17 <Jackoz> coppro: don't steal my ideas! :)
02:05:53 <coppro> based on your small code samples, it's RPN, right?
02:06:01 <elliott> no shit :P
02:06:14 <Jackoz> yes, it is
02:06:52 <coppro> yeah; I want a bracketless functional PN language
02:07:00 <elliott> coppro: I already mentioned that...
02:07:04 <elliott> coppro: And REBOL already did that.
02:07:09 <elliott> coppro: And Logo already did that.
02:07:14 <coppro> elliott: I know you mentioned it
02:07:15 <Jackoz> ok, this could give a better view: http://img823.imageshack.us/img823/9518/operators.png
02:07:29 <Jackoz> but many of these instructions can work with different parameters too
02:07:40 <coppro> and REBOL has brackets
02:07:47 <elliott> Jackoz: Is that an excel spreadsheet?
02:07:51 <elliott> coppro: yes, but it doesn't need them
02:07:57 <elliott> coppro: pure functions can be just
02:08:01 <elliott> f g x y z h a b c
02:08:03 <Jackoz> unfortunately yes
02:08:10 <elliott> coppro: and logo has no brackets... well, it has [], but that's just lambda
02:08:12 <Jackoz> after trying to keep consistency directly in source code
02:08:12 <coppro> so does logo
02:08:21 <elliott> coppro: so? you could easily get rid of lambda
02:08:24 <elliott> have it be
02:08:26 <elliott> lambda (list)
02:08:26 <Jackoz> I had to find a simpler way, since many things were subjected to change
02:08:31 <elliott> *(list) (list)
02:08:31 <elliott> then you'd do
02:08:38 <coppro> elliott: list
02:08:40 <elliott> lambda cons :a cons :b nil
02:08:45 <elliott> for (lambda (a b)
02:08:46 <elliott> then uh
02:08:51 <coppro> that would require brackets for any sane implementation
02:09:00 <elliott> lambda cons :a cons :b nil cons :display cons :a nil
02:09:01 <elliott> would be
02:09:03 <Sgeo> Aren't stack languages bracketless RPN?
02:09:08 <elliott> (lambda (a b) (display a))
02:09:12 <elliott> coppro: i meant list as in a list object
02:09:13 <elliott> not the list function
02:09:18 <coppro> Sgeo: yes, which is considerably easier than bracketless PN
02:09:21 <catseye> lambda add #1 #2
02:09:43 <elliott> coppro: no it's not
02:09:44 <coppro> Jackoz: what's the real issue?
02:09:51 <elliott> RPN languages with lambda have [] too
02:09:53 <elliott> exact same problem
02:09:55 <elliott> "problem"
02:09:58 <Sgeo> Oh
02:10:02 <Sgeo> Durh
02:10:06 <Jackoz> coppro: I tried to explain it in my words but with no success :/
02:10:07 <coppro> elliott: lies. I will show you the evility of my language
02:10:12 <coppro> Jackoz: :/
02:10:47 <Jackoz> I was wondering if something what is not just a stack but that doesn't work by variable declarations too exists
02:10:53 <Jackoz> what = that
02:11:12 <elliott> Jackoz: here is what i think you want to say
02:11:20 <elliott> "Are there languages which are neither concatenative or imperative?"
02:11:24 <elliott> perhaps?
02:11:26 <Jackoz> I mean that variable declaration is verbose
02:11:36 <elliott> Jackoz: lambda calculus :)
02:11:57 <Jackoz> while using just a stack is verbose too, since you then need to manipulate it very often inside the code
02:12:15 <catseye> coppro: sally has no brackets. no proper lambdas, either, but it would be a straightforward addition
02:12:18 <Jackoz> so I would like to have a computational model which works without having to do explicitly any of two
02:12:36 <Jackoz> maybe it simply doesn't exist
02:14:12 <elliott> Jackoz: of course it does
02:14:15 <elliott> Jackoz: see the lambda calculus
02:15:02 <Jackoz> the real problem about λ-calculus is that it needs a more complex VM underlying it
02:15:38 <Jackoz> mmh I'll take a look, but I remember from university that it needs to care about bound variables, free variables and so on
02:15:50 <Jackoz> and having to declare parameters will bring back verbosity
02:16:33 -!- FIQ has quit (Quit: - nbs-irc 2.39 - www.nbs-irc.net -).
02:16:43 <Jackoz> (by the way I'm just guessing, this is the real first approach to an esoteric languages)
02:16:51 <Sgeo> I have found something too obscure for Fark1
02:16:52 <Sgeo> http://www.fark.com/cgi/comments.pl?IDLink=5726773
02:16:56 <Jackoz> my lexer broke too
02:17:17 <elliott> <Jackoz> the real problem about λ-calculus is that it needs a more complex VM underlying it
02:17:21 <elliott> only on imperative hardware
02:17:29 <elliott> lambda-calculus on the Reduceron would be a sinch
02:17:41 <Sgeo> sinch
02:17:42 <Sgeo> sin
02:17:54 * Sgeo channels elliott
02:18:03 <Jackoz> I love the relativistic way you approach things
02:18:20 <Jackoz> in any case I'm not writing this language in an imperative language
02:18:25 <elliott> Jackoz: well if all we cared about was intel amd x86 windows linux... we'd be very boring. :)
02:18:29 <elliott> Jackoz: ocaml is imperative
02:18:31 <elliott> it's just functional, too
02:18:40 <elliott> but ocaml functions can have any side effects they want
02:18:43 <Jackoz> yes, it's not pure functional
02:18:50 <Jackoz> but you can use it as a pure functional
02:18:55 <Jackoz> if you want
02:18:56 <elliott> "impure functional" is a rather worthless concept academically :)
02:19:02 <elliott> perl counts as impure functional
02:19:04 <elliott> it has lambdas
02:19:33 <Jackoz> I actually skipped the course about functional languages years ago
02:19:44 <Jackoz> just because I was too young to feel their coolness
02:20:23 <Jackoz> so I admit my ignorance
02:20:35 <Jackoz> but I assert that OCaml is purer than perl from that point of view :)
02:20:52 <elliott> purER, sure, but just try and define the scale of purity mathematically >:)
02:21:18 <Jackoz> (purer is not correct in english?)
02:21:24 <elliott> Jackoz: it's correct
02:21:26 <elliott> i was emphasising it
02:21:31 <elliott> i.e. "pur*er*, but not pure"
02:21:41 <elliott> "MORE pure" is equivalent emphasis
02:21:53 <Jackoz> :)
02:21:55 <elliott> catseye: aiee, you didn't tell me -- you can't read a whole floppy with one int 13h!
02:22:07 <elliott> catseye: you'd have to go through the heads and cylinders and stuff
02:22:07 <Jackoz> where are you from? (just to chitchat, but I have to ask it after some lines)
02:22:21 <elliott> catseye: i can only read 31 kilobytes as-is!
02:22:26 <elliott> Jackoz: england
02:22:27 <catseye> elliott: that's because i didn't know that!
02:22:39 <Sgeo> Which is purer, OCaml or Factor?
02:22:46 <Sgeo> I guess it depends on what is meant by pure
02:22:49 <elliott> catseye: http://www.ctyme.com/intr/rb-0607.htm
02:22:53 <elliott> catseye: "CL = sector number 1-63 (bits 0-5)"
02:23:03 <Sgeo> Purely concatenative, in which Factor is obviously closer, or purely functional
02:23:06 <elliott> catseye: 63 * 512 bytes = 31.5 k
02:23:07 <Sgeo> Which, um
02:23:09 <elliott> *31.5k
02:23:17 <Jackoz> Sgeo: the point is that you can't define a degree of pureness (or at least I think that was elliott's point
02:23:17 <catseye> elliott: so read a bunch of chunks in a loop
02:23:17 <elliott> catseye: so yeah, urgh!
02:23:24 <elliott> catseye: oh i will once the kernel is big enough :D
02:23:25 <elliott> Jackoz: it was
02:23:38 <Jackoz> you can assert it empirically
02:23:39 <elliott> catseye: other things i'll do then: do the A20 line properly, rather than relying on the BIOS...
02:23:48 <elliott> catseye: say, how hard is it to talk to the floppy without the bios, any ideas?
02:25:06 <Jackoz> elliott: since you seem fond of this topic, which languages are pure functional but with performance comparable to OCaml? just for curiosity
02:25:29 <Jackoz> (this means compiled into native and strongly type inferred)
02:25:31 <elliott> Jackoz: I, uh, Haskell! If you write your code in a way that GHC serendipitously happens to like...
02:25:31 <catseye> elliott: i doubt you actually want to talk to a *floppy*, but... i don't think it's *super* hard, just messy
02:25:53 <elliott> catseye: mm. wait, surely befos reads from the floppy?
02:25:58 <elliott> via ide or something i guess though
02:26:00 <catseye> elliott: using bios, yes
02:26:06 <elliott> catseye: oh, right, you never cli
02:27:19 <Jackoz> elliott: I'm scared that the lack of imperative features can make simple things really complex sometimes
02:27:41 <elliott> Jackoz: if you code inside the IO monad in haskell, then it's "just" like an imperative language
02:27:58 <Jackoz> elliott: wait, this should make it impure too
02:28:06 <elliott> Jackoz: nope
02:28:40 <elliott> Jackoz: I'd try to explain, but to *really* explain why it doesn't make the language impure in any way requires a dumbed-down version of a category theory concept and I'm not in the mood for that :)
02:28:42 -!- p_q has joined.
02:29:10 <elliott> Jackoz: for any X you can find a tutorial explaining how monads are actually just like X :)
02:29:19 <elliott> Even burritos (http://blog.plover.com/prog/burritos.html)
02:29:32 <Jackoz> elliott: maybe I won't even understand you
02:29:54 <elliott> Jackoz: monads are actually really simple -- it's explaining them that's the hard thing
02:30:01 -!- poiuy_qwert has quit (Ping timeout: 252 seconds).
02:30:15 <elliott> Jackoz: the best policy for a beginning haskeller is just to trust that the IO monad works :)
02:30:37 <Jackoz> elliott: faith is not something I'm used to rely upon :)
02:31:05 <elliott> Jackoz: when you wrote your first program, did you ask how on earth "print foo" put little dots representing foo on the screen, or did you just go "ok, that says 'foo'"? :)
02:31:26 <elliott> it *is* possible to fully understand monads before using them -- but impractical, and pointlessly difficult
02:31:30 <Jackoz> elliott: I actually did, but I was unable to answer my self :(
02:31:49 <Jackoz> elliott: this means that after OCaml I'll try Haskell, since functional programming really opened my mind
02:32:29 <elliott> Jackoz: It is a good idea.
02:32:31 <Jackoz> elliott: just a last question.. does Erlang worth trying?
02:32:59 <elliott> Jackoz: opinions are divided :)
02:33:03 <elliott> it has interesting things.
02:33:11 <elliott> i don't want to be the one to make that decision for you :)
02:34:07 <Jackoz> elliott: for your answering availability you just gained an alpha release of my language as soon as it's ready, now feel happy..
02:34:19 <elliott> Jackoz: I can barely contain my excitement.
02:34:22 <elliott> (sarcasm, but ok :P)
02:34:31 <Jackoz> elliott: that is a good start
02:34:35 <elliott> Jackoz: you know what's cool? my OS doesn't boot!
02:34:44 <Jackoz> elliott: linux?
02:34:50 <elliott> Jackoz: no, literally, MY os :)
02:35:07 <elliott> because writing an os is the best thing anyone can ever do apart from ....
02:35:08 <elliott> i don't know
02:35:12 * Sgeo is fully willing to attempt to describe why the IO monad is not impure
02:35:13 <elliott> resurrecting the dinosaurs
02:35:20 <Jackoz> elliott: writing a programming language is just second to that
02:35:21 <Sgeo> But elliott will yell at me
02:35:25 <elliott> Jackoz: please don't take up Sgeo on his offer; he is an excellent confuser :)
02:35:30 <Jackoz> (from my point of view)
02:36:10 <Sgeo> But it's so SIMPLE
02:36:14 <Sgeo> Kind of
02:36:19 <Jackoz> is it a bootloader problem or a OS problem?
02:36:25 * Sgeo feels like a burrito tutorial author
02:36:29 <Jackoz> just because you were talking about bootloaders so far
02:37:40 <elliott> Jackoz: bootloader, i think
02:37:50 <elliott> either my floppy assembly script isn't working, or my bootloader isn't actually jumping to the kernel
02:38:01 <elliott> ^@^@^@^@^@Uª^@^@^@^@^@^@^@^@
02:38:04 <elliott> suspicious lack of my kernel there
02:38:26 * Sgeo just wants to blurt out what's on his mind
02:38:37 <elliott> Sgeo: /msg me with it
02:38:38 <elliott> i'm eager to hear it
02:38:48 * elliott prepares himself
02:39:39 <Sgeo> Just making sure I don't embarrass myself by using an example function that doesn't actually exist
02:39:50 <elliott> just do it in /msg
02:40:02 <elliott> dd: `kernel/kernel': cannot skip to specified offset
02:40:04 <elliott> that would explain it!
02:40:31 <elliott> oh, it needs to be seek=
02:40:32 <elliott> that would explain it
02:40:34 <elliott> skip= is for input
02:40:59 <elliott> not that that works, either :D
02:41:17 <elliott> @^@^@^@^@UªEVERYBODY PARTY!ôéêÿÿÿ^@^@^@
02:41:20 <elliott> ok it is copying ther
02:41:21 <elliott> *there
02:44:28 <Sgeo> My explanation appears to have the elliott seal of approval?
02:45:30 <elliott> MAYBE
02:47:59 <Sgeo> <Sgeo> Things that might seem impure, such as getChar function, don't actually do what they say. Instead, they return a description. getChar always returns the same description of the action of getting a character. You piece together descriptions to make a bigger description. Whatever main describes is what's done
02:54:09 <elliott> catseye: gah! my bootloader isn't loading correctly!
02:54:17 * Gregor clicks "Popular amongst people in their twenties" on AppBrain.
02:54:23 <Gregor> Damn it. People in their twenties are retards.
02:54:24 -!- augur has quit (Remote host closed the connection).
02:54:48 -!- augur has joined.
02:55:58 <catseye> elliott: in the source of developing software, it is common that errors, or "bugs", are introduced. one of the jobs of the software developer is to locate and fix these bugs, a process called "debugging".
02:56:24 <elliott> catseye: no it's clearly the bioses fault
02:56:27 <elliott> evidence: fuck the bios
02:56:31 <elliott> how can you disagree?
02:56:35 <elliott> now catseye -- fix my bios
02:56:40 * Sgeo is not a technophile
02:57:05 * Sgeo is also not funny
02:57:29 * catseye never knows what Sgeo is talking about half the time
02:58:14 -!- Behold has quit (Read error: Connection reset by peer).
02:59:19 -!- augur has quit (Ping timeout: 265 seconds).
02:59:31 <catseye> but I *set* GTK_CFLAGS, you stupid configure script! don't tell me it's not set!
03:00:54 <elliott> Okay, the read is failing; even if the floppy is random, I just display zeroes.
03:03:24 <Sgeo> Aren't you using a VM?
03:03:31 <elliott> ...yes...
03:04:08 <Sgeo> Oh. Maybe I should ask what read is failing? Is it a read your code is doing, or is the VM actually simulating faulty hardware now?
03:05:20 <elliott> foremr
03:05:21 <elliott> *former
03:05:52 * Sgeo ponders jEdit
03:07:12 <elliott> ...okay, this is just inexplicable
03:07:18 <elliott> I'm following the interrupt spec perfectly.
03:07:29 <elliott> It's not erroring out.
03:08:35 <catseye> ok so apparently it was not smart enough to look for pkg-config *on my search path*, it had to be told where it was
03:09:08 <catseye> oh! and netbsd world built.
03:09:49 <elliott> catseye: including kernel?
03:11:00 <catseye> yes, but i may have to build it again; i need t check somehtin
03:11:09 <elliott> catseye: because if so DEBIAN YAY :p
03:11:37 <catseye> no its good
03:11:52 <elliott> catseye: DO YOU TOTALLY REMEMBER THE SSH COMMAND (nothing is more important)
03:13:08 <catseye> it started with ssh
03:13:46 <elliott> catseye: ssh -L R 9292:localhost:22 cpressey@
03:13:47 <catseye> i believe emulating linux 2.6 will require linux 2.6 shared libs; such things are not so convenient as to be in pkgsrc already
03:13:51 <elliott> i think that's it
03:13:53 <elliott> no, it won't
03:13:55 <elliott> catseye: it's in a _chroot_
03:14:00 <elliott> the chroot contains _all the linux libraries_ including glibc
03:14:08 <elliott> when you chroot, it looks for /lib/libc or whatever, the /bin/sh
03:14:12 <elliott> which is of course *inside the chroot*
03:14:17 <catseye> ok
03:15:18 <catseye> well, need to reboot to test new kernel
03:15:23 <elliott> hahaha good luck
03:15:41 -!- catseye has quit (Quit: Lost terminal).
03:15:44 <Sgeo> ......
03:16:09 <elliott> Sgeo: ...what?
03:16:54 -!- Sgeo|jEdit has joined.
03:16:58 <elliott> ...
03:17:54 -!- Sgeo|jEdit has left (?).
03:17:54 -!- Sgeo|jEdit has joined.
03:18:18 -!- Quadlex has quit (Read error: Operation timed out).
03:18:23 * Sgeo is now accidentally spamming comex
03:18:58 <Sgeo|jEdit> There we go
03:19:42 <Sgeo|jEdit> For what it's worth, I hate this client
03:20:13 <Sgeo|jEdit> (What? Sgeo have taste?)
03:22:00 -!- Sgeo|jEdit has quit (Read error: Connection reset by peer).
03:29:07 -!- catseye has joined.
03:30:11 <catseye> that was interesting
03:30:23 <catseye> it claims to not have any file system modules compiled into the kernel
03:30:36 <catseye> thus could could not mount the, uh, filesystem
03:31:08 <catseye> also, the new kernel makes my speakers go "WEEP!" during boot now
03:31:33 <catseye> custom kernel time!
03:32:20 -!- augur has joined.
03:32:41 -!- augur has quit (Remote host closed the connection).
03:33:28 <catseye> oh the silly
03:33:40 <catseye> all fs support is built as modules by default
03:33:42 <catseye> ALL
03:34:03 -!- Quadlex has joined.
03:37:39 <elliott> catseye: don't you embed your fs in the kernel? SHEESH
03:38:00 * Sgeo ponders the limitations of any editor not written in Factor attempting to do syntax hilighting on Factor code
03:39:10 <elliott> Sgeo: just freakin' use FUEL
03:39:21 <elliott> not even jedit's author, uses it any more
03:39:25 <elliott> and that's the same as factor's author!
03:39:34 <elliott> he uses fuel like everyone else
03:40:01 <Sgeo> How well does emacs really run on Windows/
03:40:19 <elliott> perfectly.
03:42:35 <Sgeo> Does the editor.emacs thingy know where to look on Windows?
03:42:48 <catseye> "PAL emulation" in VICE should be called "CRT emulation" -- as a North American I feel discriminated against by this
03:43:29 <elliott> catseye: it, presumably, only emulates the characteristics of a PAL C64 on a PAL TV
03:43:37 <elliott> Sgeo: you have to set it, just like on unix
03:43:40 <catseye> it makes it look like a tv!
03:43:57 <elliott> catseye: it's lovely :P
03:44:05 <elliott> OK FUCK YOU BIOS
03:45:42 <catseye> even in ntsc mode! which they seem to have improved slightly in this version
03:46:01 <elliott> catseye: why would you want to use ntsc mode
03:46:07 <elliott> pal representin'
03:47:09 <catseye> ...............................for nostalgia!
03:47:36 <catseye> i tried Factor once and it defeated me
03:47:38 <elliott> catseye: but it looks exactly the same, more or less :P
03:48:11 <catseye> i tried Emacs like a dozen times an it always defeated me too
03:48:31 <elliott> "dw 0xAA55
03:48:31 <elliott> For some reason the signature has to be written this way round!"
03:48:36 <elliott> what is it with morons writing tutorials?
03:48:53 <Sgeo> catseye, hmm?
03:49:51 <catseye> ok so i'm gonna check out this ophis thing
03:50:04 <elliott> catseye: the manual is pretty good
03:50:15 <elliott> catseye: http://hkn.eecs.berkeley.edu/~mcmartin/ophis/manual/book1.html
03:50:29 <catseye> NUTS TO MANUALS
03:50:42 <elliott> catseye: i don't mean read it :P
03:50:44 <elliott> i just mean reference it
03:51:31 <elliott> "This tutorial is to show you how to load sectors from a floppy disk. Variations will be needed to get this code to work on most other disks."
03:51:32 <elliott> there
03:53:30 <catseye> disks of varying floppiness
03:54:02 <catseye> ok so ophis can assemble my existing code RIGHT
03:55:13 <pikhq> elliott: Be nice? What's that?
03:55:23 <catseye> well, at least one file!
03:55:23 <elliott> lawl
03:55:58 <elliott> it just doesn't work! aaargh
03:56:03 <elliott> pikhq: WANNA DEBUG MY BOOTLOADER?
03:56:44 <Sgeo> Maybe I should write a bootloader at some point
03:57:03 <Sgeo> *everyone laughs at the thought of Sgeo doing something like that*
03:59:03 <catseye> ok ophis is decent. i hope he's improved label arith. and being able to produce a symbol map would be a nice feature. but, i can hack on it myself if i like
04:00:10 <catseye> Sgeo: it's not difficult. really.
04:00:25 <Sgeo> elliott certainly seems to be having trouble
04:00:42 <catseye> elliott is trying to make elephants dance in his bootloader.
04:00:53 <elliott> catseye: actually, my problem right now is loading sectors from the floppy
04:01:00 <elliott> catseye: i can enable the a20 line, i can go into protected mode, everything
04:01:03 <elliott> catseye: i just can't load the kernel
04:01:14 <catseye> you load the kernel *before* the otehr stuff, right?
04:01:23 <elliott> catseye: yes. well, i print "boo" first.
04:01:30 <elliott> also: reset the disk. but you're meant to do that
04:01:45 <catseye> and it was working before, from what i gather
04:01:57 <elliott> seemingly.
04:03:06 <elliott> "The 6 segment registers are all loaded with a segment selector, which is an offset into either the GDT or the current LDT. A segment selector is only 16 bits long and looks like this:"
04:03:08 <elliott> YOU'RE A FUCKING LIAR
04:03:19 <elliott> I'M IN REAL MODE
04:03:21 <elliott> ahem
04:04:19 <elliott> A
04:04:20 <elliott> HA!!!
04:04:33 <elliott> wait what
04:05:25 <elliott> hehehehehe "boob*o*o*" AHEM
04:05:34 <elliott> maturity elliott this is serious
04:07:50 <catseye> brb testing NEW new kernel
04:08:01 -!- catseye has quit (Quit: Lost terminal).
04:09:44 -!- augur has joined.
04:13:18 -!- catseye has joined.
04:13:35 <catseye> cannot exec /sbin/init: error 8
04:13:49 <elliott> catseye: LAWL
04:14:25 <catseye> translation:
04:14:32 <catseye> You have no chance to survive make your time.
04:17:20 <elliott> catseye: end of the netbsd era eh?
04:19:07 <catseye> i apparently have to install more things somewhere else.
04:19:53 <catseye> i need a kernel module for executing ELF files.
04:20:56 <catseye> ok NOW i find http://www.netbsd.org/changes/changes-6.0.html
04:22:05 <catseye> ok
04:22:40 <catseye> ./build.sh modules
04:22:43 <catseye> ok cool
04:23:57 <Ilari> Error 8 is ENOEXEC.
04:24:24 <elliott> 00056902415e[CPU0 ] fetch_raw_descriptor: GDT: index (807) 100 > limit (17)
04:24:25 <elliott> Hmm.
04:24:29 <elliott> Anyone know what that means?
04:25:29 <Ilari> You are trying to access GDT descriptor far above the limits.
04:26:09 <elliott> Ilari: That's the thing, though; I'm really not. :)
04:26:14 <elliott> Ilari: I think my kernel is still failing to load. *sigh*
04:27:09 <Ilari> Limit 17 would mean it only has 3 entries (null, code and data)...
04:27:15 <elliott> Ilari: Indeed, it does.
04:27:29 <elliott> Ilari: I think it's trying to run random memory since the kernel didn't load properly, or suchlike.
04:27:56 <Ilari> It seems like the descriptor its trying to access is 1024, 1025, 1026 or 1027...
04:28:12 <Ilari> Ah, no.
04:28:29 <Ilari> 2048, 2049, 2050 or 2051.
04:29:07 <Ilari> Maybe you try to refer to 0x0008 (that would be code?) and get the bytes swapped for some reason?
04:29:15 <Ilari> Or offset by one.
04:29:43 <elliott> Ilari: The code is loaded at 0x8000.
04:30:06 <elliott> Ilari: The kernel, that is.
04:30:21 <elliott> Ilari: Hmm...
04:30:26 <elliott> jmp KERNEL_SEGMENT:0
04:30:32 <elliott> I do this, but in protected mode.
04:30:41 <elliott> Maybe I should do jmp KERNEL_SEGMENT * 16?
04:30:42 <Ilari> Because trying to refer to segment 0x0800 (instead of 0x0008) would trigger just that kind of error...
04:30:52 <elliott> Ilari: Indeed, KERNEL_SEGMENT = 0x800.
04:32:15 <Ilari> If you are in pmode ring 0 with the likely GDT, the only valid segment to jump to is segment 8.
04:32:26 <elliott> Ilari: Right.
04:32:37 <elliott> Ilari: So what I need to do is... "jmp CODE_SEGMENT:0x8000", right?
04:32:50 <Ilari> I think so.
04:32:54 <elliott> Ilari: Thanks; I'll try that.
04:33:29 <Ilari> You might need to initialize SS first so it validates after jump (0x0010?)
04:33:47 <elliott> mov ax, DATA_SEGMENT
04:33:48 <elliott> mov ds, ax
04:33:48 <elliott> mov es, ax
04:33:48 <elliott> mov fs, ax
04:33:48 <elliott> mov gs, ax
04:33:48 <elliott> mov ss, ax
04:33:52 <elliott> Already done that.
04:34:03 <Ilari> Well, that should work.
04:34:24 <elliott> qemu: fatal: Trying to execute code outside RAM or ROM at 0x000a0000
04:34:24 <elliott> EAX=00000000 EBX=0000ff31 ECX=00000000 EDX=00000500
04:34:24 <elliott> ESI=00000002 EDI=e900fed4 EBP=00000000 ESP=00006ef9
04:34:40 <elliott> Bochs error is just...
04:34:42 <Ilari> Hah. You jumped into VGA memory.
04:34:45 <elliott> 00042725627e[CPU0 ] write_virtual_checks(): no write access to seg
04:34:46 <elliott> 00042725627e[CPU0 ] interrupt(): vector must be within IDT table limits, IDT.limit = 0x0
04:34:46 <elliott> 00042725627e[CPU0 ] interrupt(): vector must be within IDT table limits, IDT.limit = 0x0
04:34:46 <elliott> 00042725627i[CPU0 ] CPU is in protected mode (active)
04:34:49 <elliott> Ilari: ha!
04:34:53 <elliott> I wonder how I managed that.
04:34:59 <elliott> I do set the segment register to vga memory in real mode.
04:35:05 <Ilari> DOSBox would lock up if you did that.
04:35:16 <elliott> hmm
04:35:17 <elliott> mov ax, DATA_SEGMENT
04:35:17 <elliott> mov ds, ax
04:35:21 <elliott> ds was where i had vga memory, so
04:35:26 <elliott> mov word [0xB8000+ebx+2], 0x0F21
04:35:38 <elliott> that's the last time i reference vga memory in my program and as you can see...
04:36:19 <catseye> blub blub
04:36:21 -!- catseye has quit (Quit: Lost terminal).
04:36:23 <Ilari> What instruction actually triggers that execution attempt from VGA memory?
04:36:37 <Ilari> The 'jmp CODE_SEGMENT:0x8000'?
04:38:24 -!- Mathnerd314 has quit (Ping timeout: 240 seconds).
04:39:10 <elliott> Ilari: I'm not sure how to get bochs to tell me that :)
04:39:48 <elliott> Ilari: Hmm, I have replaced CODE_SEGMENT: with "push CODE_SEGMENT \ pop cs" earlier in the program.
04:39:52 <elliott> Then just "jmp (KERNEL_SEGMENT*16)" later.
04:39:56 <elliott> Same error, but that seems clear.
04:39:58 <elliott> *cleaner.
04:40:01 <Ilari> POP CS doesn't exist.
04:40:16 <elliott> Ilari: Are you sure? nasm assembles it happily.
04:40:43 <Ilari> At least on any x86 processor that supports protected mode.
04:40:53 <elliott> Ilari: Oh, looks like it assembles it into a hopeless tangle of things...
04:41:03 <elliott> mov ax, CODE_SEGMENT
04:41:03 <elliott> mov cs, ax
04:41:06 <elliott> That'll work, right?
04:41:17 <Ilari> I don't think you can do that either...
04:41:22 <elliott> Ilari: Can you set CS at all?
04:42:03 -!- catseye has joined.
04:42:08 <catseye> NetBSD catseye 5.99.39 NetBSD 5.99.39 (CATSEYE) #0: Sun Oct 31 16:54:30 CDT 2010 catseye@catseye:/usr/obj/sys/arch/i386/compile/CATSEYE i386
04:42:11 <catseye> elliott: ^^
04:42:21 <catseye> now to install the userland!
04:42:22 <Ilari> I think only far jump, far call, far return, interrupt, syscall or sysreturn can change CS.
04:42:28 <elliott> catseye: NO WAIT YOU SHOULD GIVE ME SSH FIRST >:)
04:42:30 <elliott> :P
04:42:31 <elliott> Or not.
04:42:43 <elliott> Ilari: Oh. Then CS is already correct :)
04:42:45 <elliott> jmp CODE_SEGMENT:dword other_side
04:43:31 <elliott> Ilari: I'm actually at a complete loss why it jumps into VGA memory...
04:44:04 <elliott> Ilari: KERNEL_SEGMENT is 0x800, so it's jumping to 0x8000.
04:44:11 <Ilari> And that's graphics VGA memory, not text VGA memory...
04:44:21 <elliott> Ilari: I still think the floppy might not be reading correctly.
04:44:24 <elliott> Wait, easy way to find out.
04:44:27 <catseye> *** Failed target: mkvarsyesno
04:44:31 <catseye> whuh-oh
04:44:42 <Ilari> Perhaps it runs off the end of kernel, there's only zeroes (AFAIK, that instruction can actually work) and then hits VGA graphics memory?
04:45:05 <elliott> Ilari: *Possibly* the kernel isn't even *there* and there's only zeroes.
04:45:14 <elliott> Ilari: It does pause a bit before crashing.
04:45:32 <elliott> Ilari: But I'm calling the BIOS perfectly, I've even carbon-copied catseye's code -- I have no idea why it isn't reading from floppy!
04:46:13 <Ilari> 00 00 is ADD [EAX], AL. With the segments the way they are, that works even with zero EAX...
04:46:31 <elliott> Ilari: Indeed, I just added this:.
04:46:36 <elliott> mov al, [KERNEL_SEGMENT*16]
04:46:36 <elliott> mov byte [0xB8000+ebx+4], al
04:46:36 <elliott> mov byte [0xB8000+ebx+5], 0x0F
04:46:36 <elliott> mov al, [(KERNEL_SEGMENT*16)+1]
04:46:36 <elliott> mov byte [0xB8000+ebx+6], al
04:46:36 <elliott> mov byte [0xB8000+ebx+7], 0x0F
04:46:38 <elliott> x:jmp x
04:46:40 <elliott> Before the jump.
04:46:44 <elliott> And it just says "boo" on my screen.
04:46:47 <elliott> i.e. i'm putting zeroes there.
04:47:09 <elliott> i.e. the kernel isn't getting loaded.
04:47:11 <elliott> i.e. WTF?
04:49:08 <catseye> elliott: did you post the code somewhere?
04:49:23 <elliott> catseye: I TOTALLY CAN
04:49:36 <elliott> catseye: Ilari: http://sprunge.us/MLOL
04:52:39 <catseye> i like how sprunge has put "LOL" in that url
04:54:14 <elliott> catseye: SO WUTZ MY BUG
04:54:15 <elliott> LOL
04:55:39 <catseye> It just says "boo"?
04:55:55 <catseye> Appropriate for Oct 31 I suppose :)
04:56:16 <elliott> catseye: i don't even know HOW
04:56:24 <pikhq> Today has been a good day.
04:56:25 <elliott> catseye: if you look at my code, it all writes *after* the "boot!"
04:56:28 <elliott> catseye: so wtf
04:57:29 <Sasha> Well, I just got back from trick-or-treating
04:57:36 <Sasha> free candy is best candy
04:57:46 <catseye> "it all writes", you mean, the code after 'protect' does stuff? maybe "t!" is being erased
04:58:17 <elliott> catseye: yeah but HOW
04:58:22 <elliott> it makes the NONSENSE
04:58:23 <pikhq> Sasha: Yeah, I'm eating the leftovers ATM.
04:58:31 <Sasha> heh
04:58:40 <pikhq> (I did not buy the candy, for I live with my parents)
04:59:12 <Sasha> so do I
04:59:20 <Sasha> but I am 16 so I have an excuse
04:59:25 <catseye> elliott: you pop bx
04:59:30 <catseye> but your push bx is commented out
04:59:41 <Sasha> What's you excuse, pikhq?
04:59:45 <elliott> catseye: uh right
04:59:53 <elliott> catseye: push bx before "mov ah, 02h"
04:59:55 <pikhq> Sasha: 20 and go to school nearby.
05:00:00 <Sasha> eh
05:00:04 <elliott> catseye: ok now it's just "boot!"
05:00:08 <elliott> catseye: with what are presumably zero bytes after it
05:00:11 <pikhq> Sasha: So, similar position except it'd be *possible* for me to move out.
05:00:18 <Sasha> heh
05:00:20 <pikhq> Well, except that it's nearly impossible to find a job right now.
05:00:25 <Sasha> I want to move when I am of-age
05:00:27 <elliott> i'm 8 years old and own a flute that gives me a bedroom
05:00:27 <pikhq> Fucking Bush.
05:00:36 <elliott> *15, *don't own
05:00:36 <Sasha> even if I have to walk to Seattle
05:00:39 <elliott> sadly, reality is never quite as perfect.
05:00:41 <Sasha> from Northern AZ
05:00:49 <Sasha> elliott's 15?
05:01:00 <Sasha> that explains the pompous douchebaggery
05:01:02 <pikhq> I actually did move out. And reality is a bitch and a half.
05:01:03 <elliott> Sasha: 8
05:01:28 <pikhq> Sasha: The pompous douchebaggery is just from knowing far better than most people.
05:01:34 <elliott> pikhq: oh shut up
05:01:37 <elliott> you douchebag :)
05:01:40 <Sasha> thinking he knows far better
05:01:48 <elliott> Sasha: it's always interesting to see how many people just accept the pompous douchebaggery until "zomg he's $age_at_time" which suddenly offers an explanation for why i'm a pompous douchebag
05:01:57 <pikhq> Sasha: But, see, he does. :)
05:02:01 <elliott> which, of course, is just a rationalisation, but there you go...
05:02:04 <Sasha> See, I know more than elliott about lots of things. But, I'm not a douchebag.
05:02:14 <Sasha> elliott, I was a pompous douchebag at 15 too
05:02:18 <elliott> Sasha: no, but you are, evidently, incapable of rational thought
05:02:20 <elliott> <Sasha> elliott, I was a pompous douchebag at 15 too
05:02:25 <pikhq> Sasha: You're fucking 16.
05:02:27 <Sasha> and then serious depression kicked in
05:02:30 <elliott> this in no way lends evidence to the proposition that my pompous douchebaggery is due to my age
05:02:33 <pikhq> Sasha: People don't change that damned much in a year.
05:02:38 <Sasha> so I am too depressed to be a douchebag
05:02:40 <elliott> Everyone on the internet is depressed! Everyone on the internet has motherfuckin' autism!
05:02:50 <elliott> Everyone on the internet is so much deeper than all these sheep!
05:02:53 <pikhq> elliott: And every other possible disorder.
05:02:54 <Sasha> I'm diagnosed with clinical depression
05:03:03 <elliott> Everyone on the internet is fucking stupid and you too -- whoever is reading it, you too.
05:03:04 <Sasha> take pills and everything
05:03:52 <elliott> catseye: i think i blame jews for my bootloader
05:03:57 <elliott> it can't be that my code is wrong, absolutely not
05:04:18 <pikhq> elliott: Don't you have someone less offensive to blame?
05:04:34 <elliott> pikhq: Oh, right, Muslims!
05:04:35 <pikhq> elliott: Like that witchdoctor over there?
05:04:41 * pikhq points at nearest black man
05:04:47 <elliott> Actually I blame society.
05:04:51 <elliott> I blame society for my murders.
05:05:36 <catseye> hey, if there was no society, it wouldn't be murder, would it? let's move on.
05:05:48 <catseye> elliott: so now that your stack is no longer stupid
05:05:57 <elliott> catseye: still doesn't work at all
05:06:08 <catseye> you *don't* see the other stuff being printed?
05:06:14 <elliott> catseye: Nope; zeroes.
05:06:20 <catseye> that you saw before. when the stack was stupid.
05:06:20 <elliott> Well, spaces, but they're zeroes.
05:06:25 <elliott> I saw nothing.
05:06:32 <catseye> my mistake
05:06:33 <elliott> I have never seen anything because *it isn't being loaded*.
05:06:44 <elliott> Here's what's loaded right after the first sector, btw:
05:06:49 <elliott> bits 32
05:06:50 <elliott> org 0x8000
05:06:50 <elliott> foo:hlt
05:06:50 <elliott> jmp foo
05:07:36 -!- augur has quit (Remote host closed the connection).
05:07:37 <catseye> write the code to display what's been loaded, before you got into protmode.
05:07:58 <catseye> obv you have to write it in segmented form, so i didn't just say 'copy it to...'
05:08:15 <catseye> "segmented form"="real mode"
05:08:58 <elliott> catseye: i did
05:09:01 <elliott> catseye: zeroes, the same
05:09:04 <elliott> catseye: i did that like three times :)
05:10:20 <catseye> elliott: i don't know if this is it but you don't set dl when you issue the reset interrupt
05:10:32 <catseye> mine has:
05:10:33 <catseye> movah, 00h; call code = reset
05:10:33 <catseye> movdl, 00h; drive
05:10:34 <catseye> int13h
05:10:44 <catseye> yours skips the dl part
05:11:10 <catseye> god forbid you are resetting some OTHER drive.
05:11:30 <elliott> catseye: isn't dl initialised to current-drive???
05:12:00 <catseye> it may be, ok
05:12:11 <elliott> catseye: i'll try though
05:14:03 -!- augur has joined.
05:15:06 -!- augur has quit (Remote host closed the connection).
05:15:39 <elliott> catseye: same result
05:16:13 <catseye> i should de-OPTOMISE my bootblock and make it easier to understand, but the only other thing i can suggest for now is to double-check your sec, cyl, head computations
05:16:31 <catseye> i have a netbsd 5.999999 world now so i have to reboot to completely break my machine, you see
05:16:56 <catseye> brb (knock on wood)
05:16:58 -!- catseye has quit (Quit: leaving).
05:19:06 -!- catseye has joined.
05:19:19 <catseye> NetBSD 5.99.39 inna house!
05:21:00 <elliott> catseye: SSH!
05:23:03 <catseye> otay
05:23:11 * catseye goes to log
05:25:11 <catseye> Bad local forwarding specification 'R'
05:25:24 <elliott> catseye: uh uh
05:25:26 <elliott> catseye: what command did you run
05:25:43 <catseye> ssh -L R 9292:localhost:22 cpressey@
05:25:44 <catseye> YOU SAID
05:26:09 <elliott> catseye: *ssh -R
05:26:13 <elliott> I must have made mistake lol
05:26:18 <elliott> s/-L R/-R/
05:26:38 <catseye> ha
05:26:40 <catseye> done
05:27:26 <elliott> [1] Bad system call (core dumped) sudo chroot debian
05:27:26 <elliott> catseye$
05:27:33 <catseye> wahoo
05:27:35 <elliott> catseye: 2.6 SUPPORT WOO
05:28:03 <catseye> hrm
05:31:14 <Sgeo> xkcd is starting to bore me
05:31:32 <Sgeo> Or at least, this one did
05:33:24 <elliott> Sgeo: up until now *xkcd did not bore you*?
05:34:52 <Sgeo> Night all
05:35:54 -!- Sgeo has quit (Read error: Connection reset by peer).
05:37:42 <Gregor> Europeans are ruining me.
05:38:05 <pikhq> Oh?
05:38:06 <Gregor> Recently I've been counting thumb-first. I don't know why, and I can't stop myself. I've become so conscious of it that I'm even more incapable of stopping it.
05:38:14 <Gregor> The other day I said "queue" instead of "line"
05:38:39 <pikhq> The queue thing might just be bits getting to you.
05:38:43 <elliott> Gregor: ...what do americans normally count with?
05:38:46 <elliott> Pinky first???
05:38:56 <Gregor> elliott: Index-finger first, then to pinky, then thumb is #5
05:38:56 <coppro> elliott: index finger down to pinky, thumb last
05:39:00 <elliott> what
05:39:05 <elliott> that is the most retarded thing i've ever heard
05:39:10 <coppro> yes
05:39:11 <Gregor> elliott: Which is also how Brits count, by the way :P
05:39:15 <elliott> no it isn't
05:39:17 <elliott> well i don't dot hat
05:39:20 <elliott> *do that
05:39:29 <elliott> probably it never occurred to me to do something so blatantly illogical
05:40:13 <pikhq> Peple count on fingers?
05:40:18 <elliott> Yes, peple do.
05:40:18 <pikhq> s/Peple/People/
05:40:19 <catseye> Ilari: and what is error 79? :)
05:40:19 <elliott> Gregor: Just asked two friends, neither of them do that.
05:40:44 <elliott> Gregor: I think my "Brits" you might mean "Brits in the 18th century".
05:40:45 <Gregor> I can't find a Wikipedia article on this.
05:40:46 <elliott> *by
05:40:48 <Gregor> HOW IS THAT EVEN POSSIBLE.
05:40:49 <Gregor> elliott: Possibly.
05:40:58 <Gregor> elliott: Brits also use feet and miles btw.
05:41:04 <elliott> Gregor: Yes. Yes we do.
05:41:11 <elliott> Gregor: Usually for height and road distances only.
05:41:15 <pikhq> elliott: The units should DIE IN A FIRE.
05:41:15 <elliott> Well, people under N. :)
05:41:27 <pikhq> elliott: Along with the stone.
05:41:29 <elliott> pikhq: Y'know, they make perfect sense in base 12.
05:41:52 <pikhq> elliott: Tell that to the hand.
05:41:55 <pikhq> (unit)
05:42:11 <Gregor> Damn it, SOMEWHERE there must be an article about this on Wikipedia!
05:42:55 <elliott> Gregor: Try "hands"
05:43:09 <elliott> Gregor: http://en.wikipedia.org/wiki/Finger_counting
05:43:12 <Gregor> The human hand has five fingers [citation needed]
05:43:12 <elliott> Finger counting, or dactylonomy, is the art of counting along one's fingers. Though marginalized in modern societies by Arabic numerals, formerly different systems flourished in many cultures,[1][2] including educated methods far more sophisticated than the one-by-one finger count taught today in preschool education.
05:43:13 <elliott> Finger counting can also serve as a form of manual communication, particularly in marketplace trading and also in games such as morra.
05:43:13 <elliott> Finger counting is studied by ethnomathematics.
05:43:14 <elliott> ETHNOMATHEMATICS
05:43:18 <Gregor> elliott: Not useful.
05:43:24 <elliott> Gregor: Ethno. Mathematics.
05:43:30 <Sasha> I count differently
05:43:34 <Ilari> 79 => ELIBACC
05:43:37 <catseye> the art
05:43:41 <catseye> thx Ilari
05:43:46 <elliott> catseye: so have you figured it out yet :P
05:43:59 <Sasha> I use the fingercounting method used by American Sign Language
05:44:20 <Gregor> Sasha: That's even screwier than conventional American counting :P
05:44:29 <pikhq> Sasha: I find that very very weird for numbers larger than 10.
05:44:42 <Sasha> Or, I use Chisanbop
05:44:51 <elliott> "Just to be different"
05:44:58 * pikhq has no valid excuse for not knowing ASL.
05:45:11 <catseye> I use thumb-as-5 to count up to 10 on one hand (but not usually)
05:45:15 <catseye> well ok
05:45:17 <catseye> up to 9
05:45:18 <catseye> i lied.
05:45:19 <elliott> Gregor: oh my god, when i start with a fist and try and put my index finger up to count
05:45:22 <elliott> Gregor: my thumb automatically pops out
05:45:23 <elliott> not joking
05:45:31 <elliott> it is SERIOUSLY hard to get the index finger out
05:45:32 <elliott> takes dedication
05:45:37 <Gregor> elliott: Point instead of counting.
05:45:40 <Gregor> :P
05:45:46 <elliott> Gregor: Is that what all Americans do :P
05:45:52 <pikhq> elliott: Do binary numerals instead.
05:46:00 <Gregor> Just training a poor Brit on being a good A'merkin!
05:46:02 <elliott> pikhq: Tried that once; really uncomfortable, impossible to understand.
05:46:05 <catseye> wait if you start with the humb, how do you do 4? i can't hold my pinky back like that!
05:46:08 <Sasha> I can count in binary on my fingers
05:46:09 <catseye> *thumb
05:46:15 <pikhq> elliott: Really simple to do.
05:46:29 <pikhq> elliott: Except that you flip someone off at 100.
05:46:29 <Gregor> catseye: ... do you use your thumb to hold your pinky while counting three?
05:46:36 <catseye> with thumb-last, you use the thumb to hold the pinky in, at 3!
05:46:37 <pikhq> Erm. 100_2.
05:46:39 <catseye> Gregor: yes!
05:46:43 <elliott> pikhq: Requires tons of finger movement though.
05:46:44 <Gregor> catseye: Pretty pathetic :P
05:46:50 <pikhq> elliott: Yeah, well.
05:46:57 <elliott> We're all retarded
05:47:04 <pikhq> elliott: That's what 10000100 is for.
05:47:12 <Sasha> That's what humans are
05:47:15 <Sasha> retarded
05:47:19 <elliott> pikhq: Try 0b1000
05:47:20 <elliott> pikhq: IMPOSSIBLE
05:47:32 <pikhq> elliott: 0? EASY.
05:47:37 <catseye> Gregor: I should show you my "4", it's very entertaining what with the half bent fingers and all.
05:47:51 <catseye> *European "4"
05:47:55 <elliott> pikhq: but it's physically impossible to lift up like that!
05:47:58 <pikhq> catseye: We just hold the thumb in. So much easier.
05:48:05 <pikhq> elliott: ... Zero.
05:48:09 <elliott> pikhq: ???
05:48:10 <elliott> pikhq: 0b1000
05:48:14 <elliott> 1000 in binary
05:48:20 <pikhq> elliott: Oh. Misparsing.
05:48:21 <elliott> with your fingers
05:48:27 <elliott> is physically torturous
05:48:27 <pikhq> elliott: 0 base 1000 is how I parsed it.
05:48:31 <elliott> xD
05:48:42 <pikhq> elliott: It's half-bent. Quite annoying.
05:49:03 <Sasha> If I am feeling like a twat, I convert all my answers to octal for my math class.
05:49:13 <elliott> Sasha: And then you don't just *feel* like a twat!
05:49:21 <Sasha> EXACTLY
05:49:36 <Sasha> Instead of kicking puppies, I do that
05:49:43 <Sasha> it's my only release for anger
05:49:57 * Sasha is slowly dying on the inside
05:51:50 * pikhq shoots Sasha in the leg
05:51:53 <elliott> pikhq: Quater-imaginary finger counting.
05:51:57 <pikhq> Now you're slowly dying on the outside!
05:51:58 <Gregor> You could do so much worse than octal.
05:52:01 <pikhq> elliott: o.O
05:52:05 <elliott> Hmm, that would be difficult.
05:52:08 <elliott> Is there a binary equivalent?
05:52:09 <Gregor> Base-11 would be pretty mean.
05:52:10 <pikhq> Gregor: Base pi?
05:52:20 <Sasha> Gregor: I like duodecimal
05:52:23 <Gregor> Base pi would be more difficult to do than it was worth :P
05:52:28 <elliott> Gregor: Base 9 is the worst for talking in.
05:52:31 <elliott> It's so close to making sense.
05:52:33 <Sasha> or ternary
05:53:02 <Sasha> ooh, or sometimes I will use unal
05:53:15 <pikhq> Naaah, imaginary base.
05:53:21 <elliott> pikhq: Golden ratio finger counting.
05:53:29 <Sasha> base i
05:53:32 <elliott> http://en.wikipedia.org/wiki/Golden_ratio_base
05:53:34 <elliott> *ratio base
05:54:21 <elliott> catseye: You can disconnect from my box now :P
05:55:06 <elliott> "Base √2 behaves in a very similar way to base 2 as all one has to do to convert a number from binary into base √2 is put a zero digit in between every binary digit; for example, 191110 = 111011101112 becomes 101010001010100010101√2 and 511810 = 10011111111102 becomes 1000001010101010101010100√2. This means that every integer can be expressed in base √2 without the need of a decimal point."
05:55:07 <elliott> pikhq: This.
05:55:29 <elliott> pikhq: Sounds quite comfortable for hand-counting.
05:55:37 <pikhq> elliott: Gorgeous.
05:55:44 <Sasha> oh lordy
05:56:08 <elliott> pikhq: I suggest it be done right to left.
05:56:23 <catseye> elliott: otay
05:56:25 <elliott> That is, 1101| on hands where | is right edge of hands = 1011_sqrt(2)
05:56:33 <Sasha> eh
05:56:49 <Sasha> I work binary on my fingers from right to left
05:57:01 <Sasha> the pinky on my right hand has a value of 1
05:57:17 <Sasha> and the pinky on my left, a value of 128
05:59:43 <catseye> bases are for the weak! i use pure numbers
06:00:23 <Sasha> you know what else is for the weak?
06:00:30 <Sasha> CORPOREAL FORMS
06:00:58 <elliott> catseye: SO DID YOU DEBUG MY CODE
06:01:47 <catseye> i've got it all figured out, man
06:01:53 <catseye> but i'm going to sleep
06:01:55 <catseye> good night
06:01:55 <elliott> catseye: DARN
06:01:59 <elliott> catseye: HAVE A BAD NIGHT
06:02:05 <Sasha> bye
06:02:15 -!- catseye has quit (Quit: leaving).
06:10:27 -!- augur has joined.
06:25:59 -!- augur has quit (Remote host closed the connection).
06:42:28 -!- wareya has quit (Ping timeout: 252 seconds).
06:44:00 <elliott> "Did you just DETERMINE the capital of Spain?" --http://www.viruscomix.com/page490.html
06:44:15 <elliott> And with that -- and a broken boot sector, too -- I leave you.
06:44:19 -!- elliott has quit (Quit: Leaving).
06:44:41 -!- wareya has joined.
06:44:55 -!- augur has joined.
07:06:59 -!- sftp has joined.
07:46:17 <myndzi> inb4 negabinary
07:46:46 <myndzi> also: i never thought i'd meet another person who counts binary on their fingers, but then i realized what channel i'm in ;)
07:46:58 <myndzi> i use palms towards me though, so right thumb is LSB
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:29:18 -!- sftp has quit (Remote host closed the connection).
09:41:46 -!- Quadlex has quit (Ping timeout: 252 seconds).
09:42:32 -!- Quadlex has joined.
09:47:21 -!- Quadlex has quit (Ping timeout: 240 seconds).
09:51:41 -!- Quadlex has joined.
10:14:20 -!- MigoMipo has joined.
10:36:56 -!- p_q has quit (Ping timeout: 255 seconds).
10:40:16 -!- p_q has joined.
10:51:05 -!- ais523 has joined.
10:53:35 -!- augur has quit (Read error: Connection reset by peer).
10:55:48 -!- augur has joined.
11:44:26 -!- wareya has quit (Ping timeout: 255 seconds).
11:48:48 -!- ais523 has quit (Remote host closed the connection).
12:12:47 -!- ais523 has joined.
12:17:17 -!- Deewiant has quit (Ping timeout: 255 seconds).
12:20:12 -!- wareya has joined.
12:23:53 -!- Deewiant has joined.
12:37:18 -!- BeholdMyGlory has joined.
12:40:26 -!- rodgort has quit (Quit: Coyote finally caught me).
12:40:41 -!- rodgort has joined.
12:43:47 -!- FireFly has joined.
12:46:59 -!- fungot has quit (Read error: Operation timed out).
12:47:10 -!- fizzie has quit (Ping timeout: 250 seconds).
12:50:51 -!- fizzie has joined.
13:00:52 -!- ais523 has quit (Quit: Page closed).
14:56:04 -!- ais523 has joined.
15:15:01 <Vorpal> why on earth is configuring which program should open a given file type so hard in gnome? There is a checkbox to change default when selecting "open with". Thats all. No place to remove apps from that list for example.
15:15:50 <Vorpal> I resorted to editing the underlying .ini-style config file
15:19:19 <Vorpal> Other somewhat related issue: wine likes to steal associations for stuff like *.jpg, *.txt and so on for the included wine-notepad, wine-browser and so on. And keeps adding them back even if you remove them. Disabling that took some work as well.
15:20:15 <Vorpal> Neither thing would be easy for a novice-user. Things like this are probably why we haven't yet seen the "year of the linux desktop". Heh.
15:20:23 <Vorpal> oh btw, hi ais523
15:21:27 <fizzie> You can open Nautilus, select a file of given type, do right-click + properties + "open with"; that gives you a list (with add/remove/reset options) for that file type.
15:21:33 <fizzie> I'm not sure if there's some central place, though.
15:22:15 <ais523> Vorpal: hi
15:22:16 <Vorpal> fizzie, I'm pretty sure there is no central place. I found one for KDE though.
15:22:19 <ais523> I'm in the middle of teaching my students atm
15:22:24 <ais523> but one at a time, at 12-minute intervals
15:22:26 <Vorpal> ais523, ah ok
15:22:31 <Vorpal> ais523, java?
15:22:33 <ais523> so presumably I'll do loads of talking up to but not including :24
15:22:35 <ais523> yes, java
15:22:43 <ais523> IRC's open for me to check up on in the gaps in between
15:22:51 <Vorpal> okay
15:23:14 <Vorpal> ais523, won't take your time with fea^W^W^Wstuff then!
15:23:30 <ais523> ^W = delete last word
15:23:39 <ais523> so that's "ais523, won't take your stuff then"
15:23:47 <Vorpal> ais523, oh right, haven't slept for over 24h
15:23:50 <ais523> which is presumably correct, if not what you meant to say
15:23:54 <ais523> also, why avoid sleep for that long?
15:24:12 <Vorpal> ais523, not intentional, trust me. I had an exam this morning so...
15:24:19 <Vorpal> just couldn't sleep this night
15:24:25 <ais523> so sleeping before it would have been a good idea?
15:24:39 <Vorpal> ais523, yes, I tried but didn't work
15:24:45 <Vorpal> it didn't*
15:33:49 -!- wareya has quit (Ping timeout: 240 seconds).
15:44:01 <ais523> what was the exam about, anyway?
15:58:23 -!- Sgeo has joined.
15:59:07 <Sgeo> *sigh*
15:59:24 <Sgeo> If people weren't so afraid of following instructions, things would be much easier
15:59:27 <Sgeo> Some printer wasn't working
15:59:47 <Sgeo> I "fixed" it by following prompts that were on the screen and choosing to change the paper tray that it used
16:03:13 -!- GregorR has joined.
16:03:40 -!- GregorR has changed nick to Guest55736.
16:05:25 <Sgeo> Guests can only watch the chat
16:08:57 <ais523> Guest55736: stop impersonating Gregor!
16:09:08 -!- Gregor has changed nick to Guest395.
16:09:38 -!- Guest55736 has changed nick to Gregor.
16:09:52 <Gregor> I shouldn't have my BNC log in for me when it doesn't know my nickserv password :P
16:16:12 * Jackoz mumbles
16:16:23 <Jackoz> good afternoon :)
16:21:26 -!- wareya has joined.
16:24:47 -!- augur has quit (Remote host closed the connection).
16:47:50 -!- MigoMipo_ has joined.
16:49:43 -!- p_q has quit (Ping timeout: 245 seconds).
16:50:28 -!- MigoMipo has quit (Ping timeout: 240 seconds).
16:55:27 -!- Phantom_Hoover has joined.
16:59:26 -!- Sgeo has quit (Read error: Connection reset by peer).
16:59:53 -!- Sgeo has joined.
17:04:43 <Vorpal> <ais523> what was the exam about, anyway? <-- computer networks
17:05:37 <Vorpal> <Sgeo> I "fixed" it by following prompts that were on the screen and choosing to change the paper tray that it used <-- do you seriously expect people to read any dialogue boxes?
17:06:12 <Sgeo> Wasn't a dialog box, it was a message on the printer
17:06:14 <Sgeo> But yeah
17:06:43 <Sgeo> Wish people did
17:07:12 <Vorpal> Sgeo, that is even less likely
17:07:34 <Phantom_Hoover> Sgeo, what did you "fix"?
17:08:50 <Sgeo> Switched the printer to tray 2
17:09:21 -!- FireFly|n900 has quit (Quit: ->).
17:11:09 -!- Sgeo has quit (Read error: Connection reset by peer).
17:31:21 -!- sftp has joined.
17:33:39 <Guest395> Your printer-fixing prowess is unohyou'regone never mind.
17:35:57 -!- Quadrescence has quit (Quit: omghaahhahaohwow).
18:01:34 -!- augur has joined.
18:07:43 -!- Gregor has quit (Disconnected by services).
18:07:48 -!- Guest395 has changed nick to Gregor.
18:08:13 -!- GregorR has joined.
18:08:35 -!- GregorR has changed nick to Guest7928.
18:10:34 -!- Guest7928 has quit (Client Quit).
18:14:00 -!- cpressey has joined.
18:17:06 -!- cpressey has set topic: 11 days since last oerjan sighting | http://esolangs.org/wiki/ | DEAD SERIOUS | http://tunes.org/~nef/logs/esoteric/?C=M;O=D.
18:18:55 <cpressey> he's probably on vacation
18:19:01 <cpressey> or dead
18:19:15 <Gregor> Or in a well.
18:19:28 <Gregor> Or on vacation, dead in a well.
18:19:50 <fizzie> The things people do for fun nowadays.
18:20:52 -!- ais523 has quit (Quit: Page closed).
18:24:58 -!- sebbu2 has joined.
18:28:03 -!- sebbu has quit (Ping timeout: 245 seconds).
18:28:03 -!- sebbu2 has changed nick to sebbu.
18:32:38 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
18:34:57 -!- tombom has joined.
18:45:47 -!- Phantom_Hoover has joined.
18:49:21 <Gregor> Why does my AC adapter smell like burning solder ...
18:52:13 <cpressey> Parfum du overload
18:58:52 -!- poiuy_qwert has joined.
19:13:50 -!- elliott has joined.
19:14:10 <Ilari> Not a good thing?
19:14:36 <elliott> 07:15:01 <Vorpal> why on earth is configuring which program should open a given file type so hard in gnome? There is a checkbox to change default when selecting "open with". Thats all. No place to remove apps from that list for example.
19:14:36 <elliott> 07:15:50 <Vorpal> I resorted to editing the underlying .ini-style config file
19:14:36 <elliott> 07:19:19 <Vorpal> Other somewhat related issue: wine likes to steal associations for stuff like *.jpg, *.txt and so on for the included wine-notepad, wine-browser and so on. And keeps adding them back even if you remove them. Disabling that took some work as well.
19:14:36 <elliott> 07:20:15 <Vorpal> Neither thing would be easy for a novice-user. Things like this are probably why we haven't yet seen the "year of the linux desktop". Heh.
19:14:39 -!- ais523 has joined.
19:14:42 <elliott> Normal people don't configure their apps.
19:14:46 <elliott> Normal people don't use Wine.
19:14:55 <elliott> Wine doing that sucks, and Gnome's feature could be more obvious,
19:15:01 <elliott> but that is not a problem for "normal people".
19:15:30 <elliott> hi ais523
19:15:43 <elliott> good to see you; haven't in a while
19:17:12 <Jackoz> real users don't use linux either
19:17:17 <Jackoz> they just go with plan9
19:17:26 <elliott> Jackoz: i swear, i had my pitchfork out
19:17:31 <elliott> then you totally redeemed yourself
19:17:33 <elliott> Jackoz++
19:17:54 <Jackoz> or, if they are able to manage bootloader, I can allow them to use their own OSes
19:19:05 <Jackoz> elliott: you were scared about what? microsoft windows? rofl
19:19:16 <elliott> Jackoz: BSDs or, hell, OS X :)
19:20:39 <Jackoz> should I give this book (http://www.amazon.com/Purely-Functional-Structures-Chris-Okasaki/dp/0521663504) a try?
19:20:50 <Vorpal> <elliott> Jackoz: i swear, i had my pitchfork out <-- BSD joke right?
19:20:57 <elliott> Vorpal: no.
19:21:02 <elliott> Jackoz: YES!
19:21:06 <elliott> Jackoz: Chris Okasaki is wonderful
19:21:14 <Vorpal> elliott, worked as one anyway
19:21:23 <Jackoz> I was thinking about buying it, now you convinced me
19:21:42 <elliott> Jackoz: The examples in the book use a version of ML (not OCaml), too, so you probably won't have much trouble reading them.
19:21:55 <elliott> (Laziness is done with a little ad hoc language extension, heh... He does give equivalents in Haskell though.)
19:22:11 <Jackoz> elliott: another dialect? they should be all quite similar
19:22:19 <elliott> Jackoz: Standard ML
19:22:25 <elliott> the original that your poseur OCaml is derived from ;)
19:22:39 <Jackoz> elliott: oh SML, btw laziness shouldn't be so hard to implement
19:22:58 <elliott> Jackoz: yeah he just uses uh $x to denote lazy x i think
19:23:02 <elliott> not sure he actually implemented it
19:23:02 -!- cheater99 has quit (Ping timeout: 245 seconds).
19:23:07 <elliott> but why would you want to *run* code?!?!?
19:23:14 <elliott> we're theoreticians! pfft!
19:23:24 <Jackoz> elliott: what I was wondering is if he will talk about complex things, cause easy ones are already enough mastered
19:24:11 <elliott> Jackoz: I've never heard of anyone who doesn't recommend it :) I haven't read the whole thing myself but I've read parts and a lot of other things Chris Okasaki has written, and I've heard many, many recommendations from cool people, so.
19:24:42 <elliott> Jackoz: You could always click that "look inside" link and get a selection of probably 5 of the most useless pages. :P
19:24:52 <Jackoz> elliott: ok, you've been enough convincing again.. since this kind of books is usually not so much cheap :)
19:25:11 <Jackoz> elliott: I just clicked the "look-rapidshare-inside" big red button
19:25:18 <elliott> Yeah, CS books are... impressively expensive.
19:25:19 <elliott> hehe
19:25:32 <elliott> Jackoz: I couldn't read a whole book on a computer.
19:25:37 <elliott> I'd have to at least print it out.
19:26:51 <Jackoz> me neither, I definetely love the flavour of paper when I hold a book, but before spending some money a peek is needed
19:29:06 <Jackoz> then I bought a pivot monitor just to have some comfort in reading books
19:32:19 <elliott> I need an eBook reader that doesn't suck ass.
19:32:30 <elliott> Maybe Gregor will convince me to get one of those iREXs.
19:32:38 <elliott> *IREX.
19:32:59 <elliott> "As publicly announced, IREX Technologies is no longer trading and this website has been permanently closed."
19:33:01 <elliott> Gregor: Never mind!
19:33:29 <elliott> They went bankrupt because of the FCC :P
19:35:10 <elliott> 09:33:39 <Guest395> Your printer-fixing prowess is unohyou'regone never mind.
19:35:13 <elliott> whut
19:35:25 <elliott> You switched back to Gregor and there's no record of anyone joining or /nicking in the interim in the logs
19:35:39 <Gregor> elliott: Yeah, don't get an IREX :P
19:35:54 -!- zzo38 has joined.
19:35:56 <elliott> 08:09:08 --- nick: Gregor -> Guest395
19:35:56 <elliott> 08:09:38 --- nick: Guest55736 -> Gregor
19:36:08 <elliott> [time passes, no log discontinuity, no nicks to Guest395, no joins of that nick either]
19:36:09 <elliott> Then
19:36:12 <elliott> 09:33:39 <Guest395> Your printer-fixing prowess is unohyou'regone never mind.
19:36:14 <elliott> WHAAAAAAT
19:36:24 <Gregor> elliott: 1) I accidentally had two systems logging in and to set my nick, 2) My BNC doesn't know my nickserv pass.
19:36:39 <elliott> Gregor: Oh, oh I see.
19:36:40 <elliott> I thought it was
19:36:42 <elliott> Gregor -> GuestX
19:36:45 <elliott> GuestX -> Gregor
19:36:53 <elliott> Gregor: You broke my brain with your numbers.
19:37:35 -!- cheater99 has joined.
19:44:25 <Vorpal> elliott, I'm a bit confused about "unohyou'regone never mind" though
19:44:38 <elliott> Try applying the splitting engine.;
19:44:41 <elliott> s/;$//
19:44:58 <Vorpal> hm
19:46:19 <Vorpal> ah
19:47:04 -!- Quadrescence has joined.
19:47:33 <Vorpal> elliott, doyouthinktextwrittenlikethisishardtoreadornot?
19:47:58 <elliott> Vorpal: Not very. And besides, it was a non-word three words.
19:48:02 <elliott> *non-word and three
19:48:11 <Vorpal> elliott, yes
19:48:21 <olsner> elliott: did you do anything more on the boot sector that went into protected mode?
19:48:30 <Vorpal> elliott, I just generalised the issue
19:48:38 <elliott> olsner: I am still working on it; currently, the issue is that it doesn't actually load the kernel.
19:48:46 <elliott> olsner: This makes *no sense whatsoever*.
19:49:29 <Vorpal> elliott, maybeyourenteredthenextsector,thatisrunoutofbytesintheMBR?
19:49:56 <elliott> Vorpal: If I run out of bytes in the MBR my padding would be negative and it would not assemble. No: It is 512 bytes exactly. The issue is that the BIOS interrupt somehow does not load the kernel.
19:50:04 <elliott> The code is only 208 bytes or so, anyway.
19:50:31 <Vorpal> elliott, how easy was "maybeyourentered" to parse, did you need to backtrack from "you're" to "you en[tered]"?
19:50:55 <elliott> This is beyond ridiculous.
19:51:00 <Vorpal> elliott, true
19:52:01 <Vorpal> elliott, I haven't slept for about 34 hours though
19:52:26 <Vorpal> I just couldn't sleep this night. Sigh... some sort of temporary insomnia I guess.
19:52:34 <elliott> Vorpal: wtf -- I couldn't either
19:52:50 <elliott> Vorpal: Admittedly it was about 8am when I started sleepcrastinating and actually went to bed.
19:53:02 <elliott> But then it was 12 am and nothing had happened.
19:53:11 <elliott> This is why it is almost 7 pm now and I've just woken up.
19:53:16 <Vorpal> elliott, am, that is [0,12) right?
19:53:23 <Vorpal> or is it [12,24) ?
19:53:25 <elliott> *12 pm
19:53:31 <Vorpal> I can never keep them apart
19:53:33 <elliott> From midnight onwards:
19:53:55 <elliott> 12 am, 1 am, 2 am, 3 am, 4 am, 5 am, 6 am, 7 am, 8 am, 9 am, 10 am, 11 am, 12 pm, 1 pm, 2 pm, 3 pm, 4 pm, 5 pm, 6 pm, 7 pm, 8 pm, 9 pm, 10 pm, 11 pm
19:53:59 <Vorpal> anyway, I couldn't sleep in the day, had an exam
19:54:06 <Vorpal> during*
19:54:17 <elliott> Holidays here. Although ending rapidly..
19:54:44 <Vorpal> holiday week here, but only for high school and lower
19:55:03 <zzo38> I think TeX contains a lot of lies --- there is one error message that says "Missing { inserted", but actually it isn't inserting anything; what it does is skip the { if there is one, and otherwise displays the error message.
19:55:22 <Vorpal> elliott, has the innovative name of höstlov (en:autumn holiday)
19:55:39 <elliott> Vorpal: It's called "half term" here.
19:55:42 <elliott> And yeah, high school and lower.
19:55:53 <Vorpal> well, it is the current week iirc
19:56:04 <elliott> zzo38: I think it means "I'm pretending there was a { here."
19:56:21 <elliott> Vorpal: It was last week, but today is ~Teacher training day~
19:56:25 <zzo38> elliott: Yes, that would be a better way of writing it, in my opinion.
19:56:30 <Vorpal> elliott, for me it is called "exam week". Oh well, I have more days than usual free at least.
19:56:39 <Vorpal> elliott, oh those
19:56:49 <elliott> Pretty sure they just eat biscuits all day.
19:56:55 <olsner> elliott: at the risk of being obvious, it sounds like the problem is that you're doing something wrong
19:57:01 <Vorpal> elliott, you don't such during university you know
19:57:09 <elliott> Vorpal: What, eat biscuits?
19:57:10 <elliott> olsner: Yes, I considered that.
19:57:28 <elliott> olsner: However I have directly ripped off cpressey's code again almost word for word and it *just doesn't work*.
19:57:33 <Vorpal> elliott, no, skipped teaching due to teachers getting taught
19:57:43 <elliott> Vorpal: Uh, yeah, I know that ...
19:57:49 <elliott> I'm not a moron.
19:57:52 <Vorpal> elliott, but biscuits, short supply too
19:58:08 <elliott> olsner: http://sprunge.us/eKMD
19:58:24 <elliott> olsner: Includes magical debug code! After "boot!" you see the first few bytes of the brave new world^W^W^Wloaded kernel.
19:58:27 <elliott> Which are zeroes, as it stands.
19:58:34 <olsner> hmm, I have some disk code here, but I don't know how it works, and I don't know if it actually supports a >1 sector kernel image
19:58:38 <Vorpal> elliott, and the black market biscuits are too expensive for most students.
19:58:46 <elliott> Vorpal: Theft.
19:59:03 <elliott> olsner: Well, the BIOS call can load N sectors with a parameter for reasonable N.
19:59:03 <Vorpal> elliott, you mean like, raid the cafeterias?
19:59:12 <elliott> Vorpal: Sure. Or whatever shops are nearby.
20:00:00 <Vorpal> elliott, campus is located at the edge of the city. Modern university. Not one of the old ones spread out over half the town centre
20:00:25 <elliott> Vorpal: Psht!
20:00:48 <olsner> hmm, what does dx=0 mean here? my code uses mov dx,0x0180 before all the disk calls
20:00:53 <elliott> I gather that Oxford is like an unkillable patch of weeds. :)
20:01:00 <Vorpal> elliott, should be fixable once the time travel lab gets some actual results
20:01:15 <elliott> DH = head number
20:01:15 <elliott> DL = drive number (bit 7 set for hard disk)
20:01:33 -!- p_q has joined.
20:01:43 <elliott> So you read from the 0x80th head (??????????) of drive 1.
20:01:56 <Vorpal> elliott, I can imagine (wrt Oxford)
20:02:00 <olsner> no, head 1 of first hard drive
20:02:14 <elliott> olsner: Oh, right.
20:02:18 <elliott> olsner: Well, I'm on a floppy.
20:02:29 <elliott> olsner: Also, *pretty* sure that DL gets initialised by the BIOS.
20:02:35 <olsner> or 0th hard drive? or "the" boot drive? not sure which is which here
20:02:40 <elliott> olsner: The worst thing is that *this* *worked*.
20:02:52 <elliott> olsner: If I filled the floppy with /dev/urandom, it'd do crazy shit.
20:02:58 <Vorpal> <elliott> DL = drive number (bit 7 set for hard disk) <-- if not set, floppy?
20:02:58 <elliott> olsner: If I filled it with /dev/zero, the same thing every time.
20:03:04 <elliott> olsner: So *why* is it failing now???
20:03:07 <elliott> Vorpal: Dunno. Guess so.
20:03:11 <Vorpal> elliott, what about cds then? they use something else?
20:03:17 <elliott> CDs are weird.
20:03:25 <Vorpal> oh right, now I remember
20:03:25 <zzo38> DL gets initialized by the BIOS (at least in Bochs, it does, anyways).
20:03:27 <elliott> Don't think BIOSes can do them for you.
20:03:29 <Vorpal> el torrito or something?
20:03:56 <elliott> yes
20:03:58 <elliott> El Torito
20:04:07 <olsner> could it be that you're mistaking the address where the stuff is loaded?
20:04:15 <Vorpal> elliott, why that strange name I wonders
20:04:17 <Vorpal> wonder*
20:04:22 -!- poiuy_qwert has quit (Ping timeout: 252 seconds).
20:04:26 <Vorpal> gah, don't change a /me to a /msg in the middle
20:05:03 <elliott> According to legend, the El Torito CD/DVD extension to ISO 9660 gained its name because its design originated in an El Torito restaurant in Irvine, California.[2] The initial two authors were Curtis Stevens, of Phoenix Technologies, and Stan Merkin, of IBM.[2]
20:05:10 <elliott> El Torito (Spanish for "the little bull") is a Mexican restaurant chain located primarily in California, with a small number of outlets in Oregon, Arizona, and Japan. They have a total of 69 outlets.[1] El Torito is one of several Mexican cuisine restaurants operated by Real Mex Restaurants. The executive chef is Pepe Lopez.
20:05:10 <elliott> Founded in 1954, they claim to be "a pioneer in the California full service Mexican casual dining restaurant segment. Leveraging more than 50 years of operational experience, El Torito is currently the largest Mexican restaurant brand in California in terms of number of restaurants and operates franchise locations in Japan, Turkey and the Middle East."[2]
20:05:36 <Vorpal> heh
20:05:51 <elliott> Fuck OFF Jimbo, I'm not giving you any money.
20:05:55 <zzo38> Does the TRIP test allow that if I write C-TeX, I can make the error messages different? Or only the help messages?
20:06:14 <elliott> Vorpal: There's also:
20:06:14 <Vorpal> zzo38, what?
20:06:15 <elliott> The Rock Ridge Interchange Protocol (RRIP, IEEE P1282) is an extension to the ISO 9660 volume format, commonly used on CDROM and DVD media, which adds POSIX file system semantics. The availability of these extension properties allows for better integration with Unix and Unix-like operating systems.
20:06:15 <elliott> RRIP was developed by Andrew Young of Young Minds, Inc. in the early 1990s. The standard takes its name from the fictional town Rock Ridge in Mel Brooks' film Blazing Saddles.
20:06:17 <elliott> zzo38: I don't know.
20:06:34 <Vorpal> elliott, I know what rock ridge is, though I never thought about the reason for the name
20:07:11 <Vorpal> elliott, I mean, Joilet. Is it named after Joilet, Arkansas or what?
20:07:13 <Vorpal> ;P
20:07:27 -!- zzo38 has quit (Quit: I don't know).
20:07:36 <Vorpal> huh
20:07:39 <Vorpal> strange quit
20:07:47 <olsner> who would remember the name of the fictional town in blazing saddles?
20:08:18 <elliott> Vorpal: It's Microsoft; probably named after jolly toilets.
20:08:26 <Vorpal> olsner, a creepily fanish fan!
20:08:36 <elliott> olsner: Andrew Young
20:08:55 <Vorpal> elliott, *shudder* that made me think of MS Bob
20:09:09 <elliott> I hope the MS Bob recycle bin was a toilet.
20:09:13 <elliott> "Flush"
20:09:16 <Vorpal> elliott, google?
20:09:22 <elliott> It won't be :P
20:09:41 <elliott> "Microsoft originally owned the domain name bob.com, but traded it to Bob Kerstein for the windows2000.com domain name."
20:09:45 <elliott> What a strategy.
20:09:49 <elliott> Now if he had been called Dave...
20:10:06 <elliott> Vorpal: "Bob's install images are used as "padding" on the original Windows XP install CDs as an anti-piracy measure."
20:11:09 <Vorpal> elliott, you know, you could easily do this on your computer. 10 minutes max: 7 minutes to find good images to use. 1 minute to create a new theme and symlink the unchanged stuff in. half a minute to put new icons in, and then 20 seconds to change to that theme
20:11:17 <Vorpal> (for the toilet in gnome I meant)
20:11:34 -!- myndzi\ has joined.
20:11:40 <elliott> Vorpal: I don't use Gnome :P
20:11:53 <Vorpal> elliott, well, which DE/WM do you currently use?
20:12:02 <elliott> Xfce. Admittedly it uses the same icons.
20:12:11 <elliott> But really, the only time I ever see the Wastebasket is in Thunar :P
20:12:35 <Vorpal> elliott, the wastebasket? Oh you must mean the toilet. hah
20:12:50 <elliott> mv old-data ~/.shitter
20:12:58 <Vorpal> yes I know they can't draw a toilet
20:13:00 <Vorpal> very strange
20:13:26 <Vorpal> why do the artist always screw up toilet icons so they look more like paperbins
20:13:56 <elliott> Vorpal: Linux users don't leave the room; they've never seen a toilet.
20:14:09 <elliott> Although they'll need to change their XXXXXXXXL-size nappy soon.
20:14:26 <elliott> Wow did not need that mental image.
20:14:38 <elliott> olsner: SO HAVE YOU FIGURED IT OUT YET
20:15:01 -!- myndzi has quit (Ping timeout: 272 seconds).
20:15:49 <Vorpal> elliott, I concluded in terms of "hi I'm a mac..." openbsd would be the linux "tronman" but with a tinfoil armour instead (one size too small) and a tie added.
20:16:36 <Vorpal> the tie would be rather badly put on
20:16:54 <elliott> Vorpal: and with really puffed up cheeks, red in the face with flame
20:16:59 <elliott> perhaps holding a flamethrower
20:17:03 <Vorpal> elliott, oh definitely
20:17:33 <elliott> Vorpal: also there'd be little patches where there's no armour, but they'd have "ONLY TWO REMOTE HOLES" scribbled on.
20:18:06 <elliott> then when he decides to talk to someone -- his head is in the armour too -- he opens it up and a swarm of bees attack him and he dies. Then he holds up a flag saying "I said in the DEFAULT installation!".
20:18:11 <Vorpal> elliott, indeed. but I didn't like to draw such a mental NSFW picture (considering where those holes are...)
20:18:24 <elliott> No.
20:19:06 <cpressey> NSFVI
20:19:07 <elliott> @^@^@^@^@^@Uªôéúÿÿÿ^@^@^@^@^@^@^@^@^@^@^@^@^@^@
20:19:09 <elliott> THIS IS INEXPLICABLE
20:19:26 <Vorpal> cpressey, Not Safe For Vertical Integration?
20:19:35 <Vorpal> elliott, ah there is a clear pattern to that!
20:19:42 <cpressey> Not Safe for Vorpal's Imagination
20:19:52 <Vorpal> cpressey, oh, touche indeed
20:20:01 <elliott> +-----------------------------------------------------------+
20:20:01 <elliott> +-----------------------------------------------------------+
20:20:11 <elliott> ("The system saves every version of every project, so nothing is ever lost." Aww.)
20:20:21 <Vorpal> elliott, where is that from?
20:20:33 <elliott> OMeta/JS
20:20:59 <Vorpal> elliott, it looks almost like frama-c, which is french which could explain why they use "project" to refer to "immutable processed version of the AST"
20:21:18 <elliott> Presumably, they mean "projection".
20:21:20 <elliott> Or something.
20:21:29 <Vorpal> so as read in is one project, then value analysis creates a new project
20:21:42 <Vorpal> elliott, yes probably but the result is rather weird :P
20:22:14 <Vorpal> elliott, the english is quite good elsewhere in general. Just a few small things that stands out as odd, like this
20:23:31 <Vorpal> elliott, can't find any desc on ometa/js when googling, just interactive "try it out online" kind of things
20:23:44 <Vorpal> so, what is it
20:23:44 <elliott> Vorpal: that is what ometa/js is
20:23:47 <elliott> js = javascript
20:23:52 <Vorpal> elliott, and ometa?
20:23:56 <elliott> http://www.tinlizzie.org/ometa/
20:24:15 <elliott> a meta-meta-parser-framework-meta object framework parser meta meta.
20:24:23 <Vorpal> elliott, hm, any good? Or just yet another one?
20:24:36 <elliott> Vorpal: Mu.
20:24:46 <elliott> Vorpal: It's a Viewpoints Research Institute project.
20:24:47 <Vorpal> elliott, well it said programming language on the page
20:24:50 <Vorpal> which is what I meant
20:24:55 <elliott> It did not.
20:25:02 <Vorpal> "yet another programming language, or one that stands out?"
20:25:11 <Vorpal> oh wait indeed it didn't
20:25:14 <Vorpal> "OMeta is a new object-oriented language for pattern matching"
20:25:25 <Vorpal> well, object oriented language fooled me
20:25:45 <elliott> It's half-research, half lovely VPRI madness.
20:26:13 <Vorpal> elliott, what else have they done? Trying to remember what they are famous for
20:26:40 <elliott> Vorpal: Alan Kay works there, and you may have heard of COLA/idris/pepsi/...
20:26:50 <elliott> *idst
20:26:57 <Vorpal> pepsi certainly but not in this context I think
20:27:17 <elliott> http://piumarta.com/software/cola/ has some information.
20:27:25 <elliott> cola (aka Idst, Jolt, the SODA languages, &c.) is an ongoing project to create a springboard for investigating new computing paradigms. Everything in it is late-bound, the intention being that any paradigm (existing or yet to be invented, formal complexity notwithstanding) be easily and efficiently mapped to it and made available to the user. It is a small part (the implementation vehicle) of the reinventing computing project.
20:27:43 <Vorpal> very... meta?
20:28:42 <elliott> Vorpal: COLA is -- uh, I think "COLA" is the word for this component -- a Smalltalk-esque language on top of it all. VPRI have used it to do insane things such as:
20:28:53 <elliott> You know how in the IP (at least v4) RFC, it has a diagram of a packet?
20:29:02 <elliott> They defined their packet structure by:
20:29:08 <Vorpal> elliott, I got stuck at figuring out what "be easily and efficiently mapped to it and made available to the user" actually meant in practical terms
20:29:09 <elliott> - Writing a parser for the ASCII diagrams
20:29:13 <elliott> - Pasting the diagram in from the RFC
20:29:14 <Vorpal> I mean, it parses fine
20:29:21 <Vorpal> but uh
20:29:40 <Vorpal> elliott, right, I heard about that
20:29:56 <Vorpal> elliott, wasn't there some language with a name starting with E that supported that?
20:30:01 <elliott> Vorpal: tl;dr user-as-programming, meta, etc.
20:30:06 <elliott> E? Uhh...
20:30:10 <elliott> Not E itself?
20:30:15 <elliott> Vorpal: Epigram?
20:30:20 <elliott> I don't think Epigram does that
20:30:20 <Vorpal> elliott, ah yes!
20:30:21 <elliott> *that.
20:30:23 <Vorpal> hm
20:30:24 <elliott> I may be wrong.
20:30:28 <elliott> Trying to rack my brains...
20:30:28 <Vorpal> might have confused it
20:30:31 <Vorpal> elliott, might have *dreamt it*
20:30:32 <elliott> It sort of rings a bell for that but...
20:30:47 <Vorpal> I read something about visual structs and then about epigram quite recently
20:30:55 <elliott> Vorpal: Whatever, anyway, tl;dr: VPRI is Alan Kay's organisation dedicated to being entirely too awesome on a regular basis.
20:31:31 <Vorpal> elliott, http://en.wikipedia.org/wiki/Epigram_%28programming_language%29 seems to have quite fancy decls anyway
20:31:37 <Vorpal> it might be that I confused it with
20:31:47 <elliott> Vorpal: Yes, Epigram 1 is... queer.
20:31:58 <elliott> (Epigram *2* we're not entirely sure is a language. Or has syntax.)
20:32:03 <elliott> (Or can be executed.)
20:32:10 <Vorpal> elliott, awesome!
20:32:10 <elliott> (Or is even thinkable of.)
20:32:20 <elliott> And we've been trying to figure it out since, what, 2005?
20:32:22 <Vorpal> elliott, huh
20:32:29 <Vorpal> that means it must intersect with feather
20:32:38 <elliott> Vorpal: No, it's just extreme vapourware.
20:32:42 <elliott> Stuff happens, but at an amazingly glacial rate.
20:32:43 <Vorpal> question is now, if it is a subset, superset, or just boring intersection
20:32:52 <Vorpal> elliott, you mean like feather?
20:32:56 <elliott> And Connor keeps deciding to chuck things out and rewrite whole swathes of the language.
20:33:04 <elliott> Especially when it turns out that whoops, that won't work.
20:33:16 <Vorpal> elliott, second system syndrome?
20:34:10 <elliott> Vorpal: It's academia. The whole thing is practically an exercise in third system syndrome.
20:34:40 <Vorpal> elliott, anyway I'm sure VPRI is awesome but it is a bit too meta to make any sense when I'm as sleep deprived as I am.
20:35:00 <elliott> Don't worry, it doesn't make any sense when you're awake either.
20:35:01 <Vorpal> elliott, as long as you can produce papers on it at a steady rate
20:35:19 <Vorpal> elliott, I'm not sure if that is good, bad or lacks emotional value
20:35:28 <elliott> It's meta.
20:35:44 <Vorpal> elliott, wow, I would never have guessed! ;P
20:35:54 <elliott> Vorpal: Anyway, VPRI don't need to write papers, they have FUNDING!
20:36:05 <elliott> http://www.viewpointsresearch.org/html/sponsors.htm
20:36:06 <Vorpal> elliott, I meant for epigram mostly
20:36:13 <elliott> SNF, Intel, Motorola, HP, Nokia.
20:36:21 <elliott> And in the past: ARPA, Xerox PARC, Atari, Apple, Disney.
20:36:27 <elliott> *NFS
20:36:28 <elliott> *NSF
20:37:00 <Vorpal> elliott, those companies would want you to get results. Not getting results = no more funding. So they can't go too far into >1 system syndrome
20:37:16 <elliott> Vorpal: VPRI get... few "results" as such.
20:37:31 <Vorpal> elliott, hm, then why do intel still fund them
20:37:37 <elliott> Vorpal: They did Squeak Etoys and Croquet.
20:37:46 <elliott> And they *do* write papers and stuff.
20:37:51 <elliott> But, uh, :)
20:37:57 <Vorpal> elliott, Croquet... what was that now again
20:38:16 <Vorpal> familiar, bell is definitely ringing, but there is all echo around here
20:38:19 <elliott> Vorpal: A not-very-good 3D Smalltalk environment thing and oh god Sgeo is going to pipe up.
20:38:21 <Vorpal> so no clue from where
20:38:30 <elliott> Vorpal: It's an open project; VPRI aren't responsible for most of the badness. :)
20:38:32 <Vorpal> elliott, he is not in the channel atm :P
20:38:55 <Vorpal> elliott, and what did etoys do...
20:39:24 <elliott> Vorpal: http://www.linux.com/var/uploads/Image/articles/130014-1.png
20:39:39 <elliott> Vorpal: VPRI's official goal is "lol, computers + learning".
20:39:43 <elliott> But really, an awful lot of it is just awesome shit.
20:40:02 <Vorpal> elliott, hah. That explains so much about the awful colour theme of squeak
20:40:18 <elliott> Etoys is an addon. :p
20:40:28 <Vorpal> elliott, well, even without that it is quite... colourful
20:40:29 <olsner> elliott: I'm missing a kernel image, obviously, but otherwise it does seem to me that it successfully loads some garbage and jumps into it
20:40:54 <elliott> olsner: Well *that* it does not do, considering I put an infinite loop in there.
20:41:13 <elliott> olsner: How about I give you a .tgz?
20:41:14 <elliott> Something is up.
20:41:19 <olsner> after removing the infinite loop obviously :P
20:41:21 <elliott> Vorpal: Well, Disney.
20:41:37 <Vorpal> elliott, they are behind sqeuak?!
20:41:41 <Vorpal> squeak*
20:41:51 <elliott> Vorpal: It was derived directly from Smalltalk-80 by a group at Apple Computer that included some of the original Smalltalk-80 developers. Its development was continued by the same group at Walt Disney Imagineering, where it was intended for use in internal Disney projects.
20:42:01 <elliott> The colour scheme is just because fuck you. :)
20:42:06 <Vorpal> heh
20:42:29 <Vorpal> elliott, it isn't just the colours, it isn't just the shape of elements, it isn't just the icons. It is all three together.
20:42:42 <elliott> It is pretty bad.
20:42:44 <elliott> olsner: http://filebin.ca/eaxjwt/tempo.tar
20:42:55 <Vorpal> elliott, what, we agree on a UI being bad?
20:43:01 <elliott> Vorpal: Smalltalk-80 was much classier: http://tedkaehler.weather-dimensions.com/us/ted/resume/st80release-lic2.jpg
20:43:38 <Vorpal> elliott, possibly only due to 1 bit per pixel from the look of that image...
20:43:56 <elliott> Vorpal: You could easily add a few highlights and it'd still be nice.
20:43:59 <elliott> Of colour, that is.
20:44:06 <Vorpal> elliott, yes, it would even be nicer
20:44:15 <elliott> http://www.abclinuxu.cz/images/clanky/krivanek/smalltalk-80-2.png
20:44:16 <elliott> More.
20:44:18 <Vorpal> elliott, like, make non-active window borders dark grey or something
20:44:26 <elliott> http://www.abclinuxu.cz/images/clanky/krivanek/smalltalk-80-6.png
20:44:36 <Vorpal> elliott, no colours?
20:44:42 <elliott> Vorpal: It's the early 80s.
20:45:00 <Vorpal> elliott, not common even with greyscale then
20:45:09 <elliott> Vorpal: ?
20:45:26 <elliott> Vorpal: http://www.cosc.canterbury.ac.nz/wolfgang.kreutzer/cosc205/images/stShot1.gif Early Squeak, basically Smalltalk 80 + colours.
20:45:26 <Vorpal> elliott, that is b&w, not even 4 bit greyscale or such
20:45:31 <elliott> Admittedly not very nice colours.
20:45:44 <elliott> Vorpal: The Macintosh was 1-bit in 84.
20:45:55 <Vorpal> elliott, that actually looks better than modern squeak...
20:45:55 <elliott> http://www.cosc.canterbury.ac.nz/wolfgang.kreutzer/cosc205/images/stShot12.gif FUCKING OW MY EYES
20:46:16 <elliott> olsner: So have you fixed it yet?!?!?!?/1
20:46:21 <Vorpal> elliott, I hope this can be blamed on gamma or something
20:46:31 <elliott> Vorpal: IT CAN'T AIEEEEEE
20:46:35 <Vorpal> elliott, ouch
20:46:38 <olsner> elliott: nope, but I seem to have discovered how to connect gdb to bochs
20:46:51 <Vorpal> olsner, sounds like quite a feat
20:46:59 <elliott> Vorpal: bochs is designed to do that :P
20:47:12 <olsner> elliott: doesn't make it less of a feat :P
20:47:15 <Vorpal> elliott, I thought it had a built in debugger?
20:47:17 <Vorpal> and well
20:47:22 <Vorpal> everything with bochs is a feat
20:47:26 <elliott> Well, yeah.
20:47:42 <elliott> Every time I think "Oh, I should use bochs" I start crying.
20:48:05 <elliott> " It can also be used to run older software – such as PC games – which will not run on non-compatible, or too fast computers." --Wikipedia
20:48:07 <elliott> *"It
20:48:12 <elliott> I can't imagine any game wanting to run on a computer THAT slow!
20:48:13 <olsner> afaik, the built-in debugging amounts to having a grayed-out menu option for displaying memory contents, and a box that displays the registers (in real-time! making it too fast to see anything)
20:48:20 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds).
20:49:13 <Vorpal> elliott, for recording perfect frame timing?
20:49:41 <Vorpal> elliott, because you no longer need a software that allows you to go back to previous frame if you screwed up!
20:50:14 <elliott> Ooh, you could use bochs for tool-assisted speedruns.
20:50:21 <elliott> You get a whole hour to decide what input to give each frame.
20:50:23 <Vorpal> elliott, yes what I said basically
20:50:34 <elliott> Right.
20:50:37 <Vorpal> elliott, well, lets be fair. 45 minutes max on a modern computer
20:51:15 <Vorpal> probably could be as little as 40 minutes, but I doubt less than that
20:54:43 <Vorpal> http://www.viewpointsresearch.org/html/work/pichri.htm: "For example, the Wikipedia is impressive in its number of entries and that it has been made and sustained by the larger Internet community, but its content is mostly hyperlinked text with a few pictures and formulas. It is very far from rich dynamic computer media and from the kind of content that most learners need." <-- because there are only so
20:54:43 <Vorpal> many ways to graphically illustrate http://en.wikipedia.org/wiki/Affirming_a_disjunct (first result on clicking random article)
20:54:46 <Vorpal> elliott, ^
20:55:08 <elliott> and?
20:55:15 <elliott> VPRI are focused primarily on children learning
20:55:29 <Vorpal> elliott, well, wikipedia isn't just that though, so bad example maybe
20:55:54 <elliott> Sigh:
20:55:55 <elliott> "I blame java and bloated, resource-hogging platforms. The disk drive has increased in speed quite a bit in the last 10 years and is still the slowest thing in a computer (excluding the user). If we wrote all programs in efficient languages like C and ASM, our computers should be thousands of times faster than we perceive them to be today. The reliance on interpreted languages and bloated platforms (even the browser is considered a platform nowad
20:55:55 <elliott> ays and is mega-bloated if you ask me) but people continue to think that the advancements of hardware will make up for the lazy and bloated programming solutions that people come up with nowadays."
20:55:58 <elliott> Comment on the Loper OS blog.
20:56:04 <elliott> Because as we all know
20:56:10 <elliott> (1) GNOME is incredibly lightweight and speedy, and
20:56:15 <elliott> (2) Smalltalk was impossibly slow.
20:56:22 <Vorpal> XD
20:56:27 <Vorpal> elliott, what idiot wrote that?
20:56:43 <elliott> http://badcheese.com/; he was kind enough to leave a name and URL so we can all know to not listen to him in the future.
20:56:44 <Vorpal> though, gnome is not slow enough to cause any annoyance at least.
20:56:53 <elliott> GNOME has got better :)
20:57:01 <elliott> But it's certainly not super-C-speedy, that's for sure.
20:57:02 <Vorpal> elliott, well, I used KDE back when GNOME sucked
20:57:13 <Vorpal> elliott, of course, but as long as it is fast enough, who cares
20:57:25 <elliott> Well, see http://www.loper-os.org/?p=300, the post on which it is a comment :)
20:57:49 <elliott> GNOME is not quite fast enough for me to like it. It is okay though.
20:57:51 <elliott> KDE 4 is slower.
20:58:08 <Vorpal> elliott, metacity or compiz?
20:58:17 <Vorpal> elliott, I found metacity far more responsive
20:58:31 <elliott> I have used both.
20:58:36 <Vorpal> hm
20:58:49 <elliott> Anyway, existing DEs have far greater problems than speed.
20:59:01 <Vorpal> elliott, even on my old sempron 3300+ gnome is fast enough that I don't notice any speed difference compared to, say, twm
20:59:29 <elliott> "You can click the mouse on ANY area that you can see in the editor and the cursor will go there and allow you to start typing.
20:59:29 <elliott> If you position yourself at the beginning of the line and hit the left arrow, you will not budge.
20:59:29 <elliott> If you position yourself at the end of the line and hit the right arrow, you will keep moving right
20:59:29 <elliott> This is how IntelliJ IDEA works by default."
20:59:36 * elliott puts IntelliJ IDEA on his list of "weird things".
20:59:46 <cpressey> oh no
20:59:53 <elliott> cpressey: ?
20:59:59 <cpressey> i've heard of that thing
21:00:09 <Vorpal> elliott, actually that sounds almost like kate in block mode
21:00:16 <Vorpal> elliott, apart from the arrow at start of line
21:00:51 <Vorpal> elliott, it is useful to move and copy rectangular blocks rather than every letter between two points
21:00:56 <Vorpal> and such things
21:01:11 <Vorpal> elliott, I use it every now and then, try it out if you never used it
21:01:34 <elliott> I used it extensively when I used TextMate and I have developed a healthy hate of every other editor ever because I can't figure out how to do it quickly.
21:01:39 <elliott> With TextMate it's just alt+drag.
21:01:59 <Vorpal> elliott, it's a mode because it interacts with copy and paste too
21:02:03 <Vorpal> even from other apps
21:02:04 <cpressey> also, I'd just like to say, in Python, string.upper() should totally be a magical attribute (str.upper) that hides the method, because that would be so pythonic, i.e. conceptually incoherent
21:02:23 <Vorpal> elliott, in that, what pasting a multi-line thing does changes with this mode
21:02:33 <elliott> cpressey: Also, x.sort.
21:02:33 <cpressey> back to your regularly scheduled IntelliJ IDEA wtf'ing
21:02:38 <cpressey> elliott: yes totally
21:02:38 <elliott> print x.sort
21:02:39 <elliott> print x
21:02:41 <elliott> Yay!
21:02:43 <elliott> It's so convenient!
21:02:52 <Vorpal> cpressey, __upper__!
21:02:56 <Vorpal> (no reason)
21:02:59 <elliott> Vorpal: Oh, and the nicest thing about it in TextMate:
21:03:00 <Vorpal> (just more... python)
21:03:10 <elliott> Vorpal: If you alt-drag vertically across a certain bit and type, it *adds to all those lines*.
21:03:17 <cpressey> how about every method you could define has a __methodname__ counterpart
21:03:35 <elliott> Vorpal:
21:03:40 <elliott> b|lah
21:03:40 <elliott> q|uux
21:03:40 <elliott> a|sdf
21:03:40 <elliott> a|brt
21:03:40 <elliott> --------------
21:03:41 <elliott> bX|lah
21:03:42 <elliott> qX|uux
21:03:44 <elliott> aX|sdf
21:03:46 <elliott> aX|brt
21:03:48 <elliott> After typing "X".
21:03:51 <elliott> This is *insanely* useful.
21:04:05 <Vorpal> elliott, inded
21:04:07 <Vorpal> indeed*
21:04:11 <elliott> Does kate do that?
21:04:18 <Vorpal> elliott, uh, let me try
21:05:09 <Vorpal> elliott, alas it does something else. Anyway it is the two-mode thingy
21:05:15 <elliott> Bah!
21:05:26 <Vorpal> elliott, still the features somewhat overlap, none has all the features of the other one
21:05:33 <Vorpal> elliott, I assume leaden will do this?
21:05:46 <elliott> Yes. Or if it doesn't, amend will :)
21:05:53 <Vorpal> elliott, amend?
21:06:04 <Vorpal> which one was that
21:06:08 <Vorpal> sounds familiar
21:06:13 <elliott> Leaden is what I call prereleases of amend because calling anything amend that does not live up to its name is sinful.
21:07:30 <elliott> So basically leaden is amend before it turns into a gigantic beast worthy of emacs complexity :)
21:08:24 <Vorpal> elliott, also I'm sorry to inform you that it is my duty to inform you that you have exceeded the names reserved / actually used limit. To prevent phase space depletion you are now forbidden from naming new things until you implemented at least 4 of the current reserved names.
21:08:46 <elliott> BAH
21:10:56 <Vorpal> elliott, you could also send in form 14c(32)b9 in three copies to request a release of some of your reserved names. That is three copies per name to release.
21:11:40 <Vorpal> then you would get a confirmation form 11t(53)h14 in return to sign and send back
21:20:26 <olsner> elliott: hmm, when you're testing and it doesn't work, do you compile with the code that sets the real sector to find the kernel image or do you compile with mov cl,3; mov ch,3; which is the wrong values?
21:20:48 <elliott> olsner: the values are wrong?
21:20:55 <elliott> I worked them out using cpressey's bootloader code.
21:21:12 <olsner> because if I replace that with mov cx,KERNEL_START, it boots and halts at 0x8001
21:21:17 <elliott> olsner: Feel free to fix the values :P Ignore KERNEL_SECTORS btw, it's way too big to work with the bios call, just pretend the kernel is 2 sectors or something.
21:21:25 <elliott> olsner: don't you mean mov cl?
21:21:52 <elliott> But, uh, wow, you're right.
21:21:57 <olsner> well, same thing, except it doesn't rely on ch already being 0 from before
21:22:17 <elliott> olsner: aren't all the registers defined to be zero on boot? apart from dl
21:22:43 <olsner> on boot, but I don't want to do dataflow analysis on your boot loader to find out if that's the value still lying around in ch when it gets there
21:22:56 <Vorpal> night →
21:23:10 <elliott> olsner: i'm planning to do the a20 line properly, so i'm space-optimising to make room for that :)
21:24:55 <olsner> you could skip it and do A20 in the second stage/the kernel :P
21:25:12 <cpressey> olsner: NO IPOSSIBLE
21:25:18 <cpressey> it must be done in the boot block!
21:25:31 <cpressey> i refuse to give reasons for this
21:25:37 <elliott> cpressey sure hates me
21:25:48 <elliott> olsner: but i want my kernel to be in a nice environment when i get to it!
21:25:51 <elliott> besides i have space :D
21:26:17 <elliott> olsner: What I *am* worried about is, if I want to modify the GDT and IDT later, I have to modify them where the bootsector is, right?
21:26:32 <elliott> olsner: So, basically, they can be about two, three hundred max, combined.
21:26:32 <cpressey> elliott: i feel half-responsible, since i had a similar idea (go into unreal mode in the bootblock)
21:26:44 <elliott> cpressey: that was zzo38's idea :)
21:27:02 <cpressey> elliott: he doesn't actually do it in the bootblock - that was my misrecollection
21:27:09 <elliott> ah
21:27:20 <olsner> hmm, I think you can change them later
21:27:25 <elliott> cpressey: well, unreal mode = protected mode + more code :)
21:27:31 <cpressey> prit' much yeah
21:27:47 <elliott> olsner: you can relocate them?
21:27:47 <elliott> hmm
21:27:50 <elliott> seems a bit pointless though
21:27:51 <elliott> ehh
21:27:51 <olsner> but in the GDT case, you really don't need more than one data and one code segment
21:28:04 <elliott> olsner: unless i start doing crazy shit :)
21:29:34 <elliott> olsner: now all I have to do is have a loop so i can load more than 8.5 kilobytes of kernel
21:30:22 <olsner> yeah, you should be checking al after int 13h, that contains the number of sectors read
21:31:04 <elliott> olsner: erm, the only reason it'd load less than what i tell it to is if something went wrong, surely
21:31:13 <elliott> and if something went wrong i'm not interested :)
21:31:40 <elliott> olsner: presumably carry is set if al < the input al?
21:31:45 <elliott> in which case, i retry anyway
21:31:48 <olsner> maybe :)
21:33:02 <elliott> olsner: but hey, 8.5k is good enough for now :)
21:33:05 <Gregor> Welp, there goes that afternoon.
21:33:13 <elliott> that's over 17 times this bootsector!
21:34:38 <elliott> olsner: remind me to get around to doing a higher-half kernel sometime :P
21:34:54 <elliott> say, I don't need CODE_SEGMENT and DATA_SEGMENT defined inside the kernel proper, do I?
21:34:58 <elliott> since they're cs and ds anyway
21:35:49 <olsner> nah, you only need those if you ever wanted to reset cs or ds... maybe that's relevant when you get to multitasking, but I haven't really gotten that far myself yet
21:36:00 <elliott> yeah
21:36:20 <olsner> in any case, you know them since you set up the gdt, those are just constants anyway
21:37:23 <elliott> hmm
21:37:30 <elliott> does blinking exist at the vga memory level?
21:37:31 <elliott> I guess not
21:37:49 <elliott> it's just that qemu displays my A20 error as solid black on solid white
21:38:09 <elliott> and bochs displays it as flickery (not blinking, really, just *flickery*) black that seems to be grey eveyr now and then on top of grey
21:38:17 <elliott> (grey being the default colour, the "greyish white")
21:38:26 <olsner> I think there's magic involved that determines whether it's a high-intensity or blinking bit, or something like that
21:38:27 <elliott> and, well, it's 0xF0 the attribute
21:38:32 <elliott> right
21:38:33 <elliott> oh well
21:38:33 <elliott> :)
21:38:47 <elliott> solution: don't have a computer that doesn't have the A20 bios routines
21:38:56 <elliott> or, just wait until I put actual A20 code in there
21:39:40 <elliott> Can someone explain why x86 is so damn register-starved?
21:40:19 -!- augur has quit (Remote host closed the connection).
21:50:02 <fizzie> One of the VGA registers controls whether the high bit of the background color does "high intensity" or "blink".
21:54:58 <elliott> fizzie: Does it have a defined default?
21:56:42 <elliott> "The "Unity" user interface that debuted in Ubuntu 10.10's Netbook Edition will be standard on the next version of the Ubuntu Desktop Edition, as well. Ubuntu Desktop 11.04 will replace the Linux distribution's default GNOME environment in favor of the multitouch-enabled Unity user interface, says Canonical."
21:57:10 <elliott> So much for GNOME Shell.
21:58:46 <olsner> ooh, http://wiki.osdev.org/Entering_Long_Mode_Directly
21:59:03 <elliott> olsner: yeah, it's
21:59:05 <elliott> olsner: unreliable.
21:59:35 <olsner> unreliable?
21:59:40 <elliott> olsner: It's not documented.
21:59:49 <elliott> The only documented way to enter long mode is via protected mode.
21:59:58 <elliott> I'd rather go through the hassle than risk things. :)
22:00:17 <fizzie> elliott: Don't know about defaults, but according to the Interrupt List you can do ax = 1003h, bx = 0000h/0001h, int 10h to disable/enable the blink bit.
22:00:30 -!- MigoMipo__ has joined.
22:01:03 <elliott> fizzie: Woo, that works. Thanks.
22:01:25 <olsner> elliott: hmm, ok... well, I already have the protected mode code, so I might as well do the long mode stuff directly afterwards rather than changing the code
22:01:33 <elliott> olsner: yaeh
22:01:35 <elliott> *yeah
22:01:45 <elliott> olsner: I'm not sure whether I want long mode or not :)
22:01:53 <elliott> olsner: although more registers would be very, very, very, very, very, very nice...
22:02:14 -!- MigoMipo__ has quit (Client Quit).
22:02:38 -!- MigoMipo has joined.
22:02:38 <olsner> you can use long mode as a simplified protected mode that accidentally also supports some 64-bit stuff
22:03:02 <elliott> olsner: how is it simplified?
22:03:33 <olsner> some things like segmentation disappeared in long mode (however much simpler that makes it)
22:03:59 -!- Phantom_Hoover has joined.
22:04:15 <olsner> but other than that, I guess not simpler at all just different
22:04:20 <elliott> olsner: You still have paging though.
22:04:36 <elliott> Or whatever.
22:05:00 -!- MigoMipo_ has quit (Ping timeout: 276 seconds).
22:05:55 <fizzie> If you want "documented", incidentally, the AMD doc 24593 (AMD64 Architecture Programmer's Manual, Volume 2: System Programming) has a "Long-Mode initialization example" assembly code snippet -- 4.5 pages, but well over half is comments -- that starts from real mode, goes to protected and from there to long. It's not the most elegant piece ever, and does things like CPUID checks for whether the long mode actually exists.
22:06:16 <elliott> My boot sector is now 214 bytes long.
22:06:28 <Gregor> elliott: TOO MUCH
22:06:34 <elliott> So I get to fill the remaining 296 bytes!
22:06:50 <elliott> olsner: hmm, doesn't the idt tend to get kinda big?
22:06:56 <elliott> Or am I misremembering?
22:08:17 <fizzie> You can run things in your boot sector with that empty IDT and interrupts disabled, and then in your kernel code relocate it somewhere where you have lots of space before enabling the interrupts.
22:09:33 <elliott> fizzie: I *could*, yes, but the idea is sort of to not have to relocate things, just being able to modify the existing gdt and idt. :)
22:09:42 <elliott> Hey... How do you get the location of the GDT and IDT?
22:09:47 <elliott> Do I have to store them somewhere?
22:10:05 <olsner> have you already forgot where you put them? :)
22:10:30 <elliott> olsner: No, it's just that my kernel is compiled separately, so it can't know where the GDT and IDT are unless it can get the location somehow :)
22:10:58 <olsner> well, you can make that detail part of your boot loader|kernel interface
22:11:13 <elliott> olsner: there is no such interface :)
22:12:03 <elliott> hmm
22:12:05 <elliott> idtr:dw 0
22:12:05 <elliott> dd 0
22:12:08 <elliott> is this "limit 0, offset 0"?
22:12:14 <elliott> great -- so i have no interrupt table at all :)
22:12:23 <olsner> yep, the limit is the first value (the 16-bit one)
22:12:34 <elliott> olsner: starting to think that maybe, just *maybe*, this won't fit inside the boot sector
22:12:38 <elliott> olsner: especially not if I do A20 the proper way
22:12:57 <Phantom_Hoover> elliott, new version of Golly out, FWIW.
22:13:05 <elliott> Phantom_Hoover: kay
22:15:04 <Phantom_Hoover> Proper support for different topologies seems to be the Big Thing in it
22:16:35 * Phantom_Hoover decides to check the long-term evolution of the TTT with it,
22:18:03 -!- p_q has quit (Ping timeout: 245 seconds).
22:19:20 <fizzie> elliott: SGDT and SIDT should help you.
22:19:34 <fizzie> They're the inverse operation of LGDT/LIDT.
22:19:39 <elliott> Phantom_Hoover: TTT?
22:19:41 <elliott> fizzie: Ah, thanks.
22:20:06 <Phantom_Hoover> elliott, a pattern on a tubular universe with unknown-ish long-term behaviour.
22:20:19 <elliott> Phantom_Hoover: Link?
22:20:23 <elliott> fizzie: Wait, I could always just point the GDT and the IDT somewhere else in memory, right?
22:20:33 <elliott> fizzie: And put stuff there in the bootloader, and then expand on it later inside my actual OS code?
22:20:59 <fizzie> I don't see why not, assuming they're low enough for the 16-bit mode code to write to.
22:21:34 -!- p_q has joined.
22:23:08 <elliott> fizzie: Well, OSes have to write to such a location anyway, so.
22:25:02 <Phantom_Hoover> elliott, look for "Titanic Toroidal Traveler" at http://www.argentum.freeserve.co.uk/lex_t.htm
22:25:40 <fizzie> A curious bit of trivia: an empty interrupt table like that is how Windows on a 286 used to switch from its protected mode back to real mode; the virtual 8086 stuff and the "proper" way to get from protected to real were only added in the 386.
22:26:08 <elliott> Phantom_Hoover: so just that, repeated forever horizontally?
22:26:18 <cpressey> you had me at "A20 is routed through the keyboard controller"
22:26:20 <Phantom_Hoover> elliott, yeah.
22:26:29 <elliott> cpressey: you didn't know that? :)
22:26:33 <elliott> Phantom_Hoover: heh
22:26:44 <cpressey> elliott: not until yesterday
22:26:47 <Phantom_Hoover> I don't think the long-term behaviour is nearly as enigmatic as they claim, FWIW.
22:27:02 <fizzie> In the 286, you needed a reset; and reseting the processor via the RESET pin (from the keyboard controller, again...) was slow. But if you put in an empty interrupt table, then segfault, double-fault (due to missing interrupt handler) and triple-fault (due another missing interrupt handler) the CPU will reset a lot faster.
22:27:12 <elliott> cpressey: there is a "fast a20" that skips talking to the keyboard controller, and bios stuff for it
22:27:24 <elliott> cpressey: but the proper way involves talking machine code to the keyboard port.
22:27:42 <elliott> cpressey: 8042 machine code, to be precise.
22:27:54 <fizzie> (Well, the first interrupt could be just "int 3" or anything, it doesn't need to be a fault.)
22:28:15 <elliott> fizzie: Wouldn't that... reboot the computer?
22:28:49 <fizzie> elliott: Not if you patch the place where the reset ends up in; that's in real memory.
22:29:19 <elliott> fizzie: lovely
22:30:02 <fizzie> Apparently also Windows on a 386 used an invalid instruction to do a "syscall" from v86 mode, since it was the fastest way.
22:33:11 <Phantom_Hoover> Hmm, Golly allows the projective plane as a topology.
22:33:11 <Phantom_Hoover> Yep, it breaks down.
22:33:42 <elliott> olsner: how goes your long mode hackery? :-)
22:33:52 <elliott> I think I will go into long mode, just for simplicity.
22:34:04 <elliott> 64-bit on a floppy
22:34:05 <elliott> lovely
22:34:27 <fizzie> elliott: But what about hardware task management! It's mostly gone in long mode.
22:34:35 <olsner> elliott: just leisurely reading the system programming manual
22:34:41 <pikhq> Well, that was fun. It seems that the color setting on my monitor was hella-weird.
22:34:46 <elliott> fizzie: Oh dear, I will shoot myself.
22:34:55 <elliott> olsner: "leisurely"
22:35:03 <fizzie> Task-State Segments and whatnot.
22:35:08 <olsner> elliott: spelling? :)
22:35:37 <fizzie> Oh, and more importantly, you can't go to virtual-8086 mode from long mode.
22:36:34 <olsner> always wondered about that - so you use virtualization to run real-mode code or something?
22:36:38 -!- augur has joined.
22:37:40 <cpressey> fizzie: "hardware task management"?
22:37:44 <fizzie> olsner: Maybe you just don't run it.
22:37:56 <fizzie> olsner: "64-bit Windows versions do not include NTVDM or Windows on Windows, so there is no native support for the execution of MS-DOS or 16-bit Windows applications." (Though that was for the 64-bit XP.)
22:38:38 <cpressey> You know, I don't think I want to know.
22:38:58 <olsner> I should check how virtualization works on amd64, iirc virtualization used to rely on VM86 to run all the boot loaders etc of the guest os:es
22:39:01 <fizzie> cpressey: There's a rather complicated hardware multitasking thing (based on the segment stuff; handles register saving and so on, and privileges) that's been mostly cut off in the long mode.
22:39:03 * cpressey hugs the 6502
22:40:04 <fizzie> As far as I know, not very many operating systems actually use it.
22:40:11 <olsner> which only works for sane boot loaders and not e.g. the OS/2 boot loader that went into unreal mode before starting the real boot loader
22:40:19 -!- poiuy_qwert has joined.
22:40:26 <Phantom_Hoover> http://i55.tinypic.com/261dnav.gif seems to be their current plan for implementing spherical topologies.
22:41:03 <Phantom_Hoover> That's so obviously not valid it's not even funny.
22:41:23 -!- p_q has quit (Ping timeout: 245 seconds).
22:43:09 <fizzie> olsner: Well, the amd-64 processors still do *have* the legacy mode with all the vm86 bits, you just can't invoke them normally from long mode. I guess the virtualization control block structures let the guest be in legacy mode.
22:43:41 <olsner> fizzie: that makes sense
22:43:45 <fizzie> olsner: "To facilitate virtualization of real mode, the VMRUN instruction may legally load a guest CR0 value with PE = 0 but PG = 1"; so you can have the guest in real mode but with paging enabled.
22:44:02 <cpressey> Phantom_Hoover: that's hilarious
22:44:17 <fizzie> "This processor mode behaves in every way like real mode, with the exception that paging is applied."
22:44:32 <Phantom_Hoover> cpressey, OK, it takes a certain type of mind to find that amusing.
22:44:37 <elliott> <olsner> elliott: spelling? :)
22:44:39 <elliott> no, just
22:44:45 <elliott> reading the x86 manual leisurely :D
22:44:57 <cpressey> olsner: so there IS a real boot loader out there that goes into unreal mode! cool.
22:45:03 <olsner> cpressey: yep!
22:45:29 <cpressey> Phantom_Hoover: I'm not listening to you because you are just a mirror image of the OTHER Phantom_Hoover.
22:45:42 <olsner> and OS/2 is one of the few operating systems that use more than two of x86's privilege levels ("rings")
22:46:08 <olsner> usually you have kernel mode and user mode, but OS/2 has two or three levels of kernel mode
22:46:17 <elliott> <olsner> which only works for sane boot loaders and not e.g. the OS/2 boot loader that went into unreal mode before starting the real boot loader
22:46:25 <elliott> Real that unreals to load the real.
22:47:35 <elliott> olsner: hmm, if i go into real mode, the gdt i already have will be the only one that works, right?
22:47:38 <elliott> so i only have to relocate the idt
22:48:26 <olsner> hmm? you're going into real mode now?
22:48:29 <elliott> *into long mode
22:48:34 <elliott> olsner: or, wait, i'd actually want two more entries, wouldn't i? for user mode
22:48:40 <olsner> you'll load a new long-mode gdt
22:48:58 <elliott> olsner: the mind boggles.
22:49:09 <elliott> olsner: you know what, i'll wait for you to write long mode stuff and then rip that off :)
22:49:14 <olsner> ooor, would you? I don't know if long mode even has a gdt, it doesn't have segmentation anyway
22:49:34 <elliott> olsner: it uses a flat gdt
22:49:35 <elliott> i think
22:49:39 <elliott> requires, even
22:49:40 <olsner> yes, long mode has a gdt and it has a different format
22:49:42 <fizzie> olsner: It does have a GDT, but the descriptors are different.
22:49:44 <fizzie> Right.
22:50:08 <elliott> oh joy :)
22:50:27 <cpressey> Phantom_Hoover: Seriously, wouldn't a geodesic dome-like-thing make more sense?
22:50:32 -!- poiuy_qwert has quit (Ping timeout: 245 seconds).
22:50:48 <elliott> <Phantom_Hoover> http://i55.tinypic.com/261dnav.gif seems to be their current plan for implementing spherical topologies.
22:50:49 <elliott> what
22:50:50 <Phantom_Hoover> cpressey, for the spherical topology thing?
22:51:19 <Phantom_Hoover> It's topology, so it makes no difference the precise shape.
22:51:34 <olsner> elliott: most of the example from osdev (the hack that skips protected mode) is also applicable for jumping from protected to long mode
22:51:44 <Phantom_Hoover> But it *is* impossible to fit any planar neighbourhood onto a sphere.
22:51:52 <elliott> olsner: copying you is so much easier though :)
22:52:03 <Phantom_Hoover> Or a projective plane, but that's stopped them even less.
22:52:13 <elliott> Phantom_Hoover: you can't cover a sphere with squares anyway, if that's what they're trying to do in theory
22:52:22 <Phantom_Hoover> elliott, I object.
22:52:34 <elliott> Phantom_Hoover: oerjan proved it once :)
22:52:56 <Phantom_Hoover> Cubes are, after all, a topologically spherical object covered with squares
22:53:04 <olsner> elliott: but then you won't *learn*!
22:53:05 <Phantom_Hoover> You can't have a Moore neighbourhood, though.
22:53:17 <elliott> olsner: i will, by copying your code carefully :)
22:53:24 <elliott> Phantom_Hoover: well, right
22:53:31 <elliott> Phantom_Hoover: can't be equally-sized squares though :)
22:53:45 <cpressey> Uhhh no it's not topology exactly.
22:53:53 <Phantom_Hoover> elliott, have you looked at a cube lately.
22:54:14 <Phantom_Hoover> cpressey, Euler characteristics, which are what oerjan's proof used, are a topological thing.
22:54:18 <fizzie> elliott: Re long-mode gdt: "This LGDT [for the 64-bit mode] is only needed if the long-mode GDT is to be located at a linear address above 4 Gbytes. If the long mode GDT is located at a 32-bit linear address, putting 64-bit descriptors in the GDT pointed by [pGDT32] -- the 32-bit GDT -- is just fine."
22:54:19 -!- poiuy_qwert has joined.
22:54:44 <fizzie> You do need a 64-bit IDT, because the descriptors are of completely different size and so on.
22:55:40 <olsner> fizzie: hmm, so you overwrite the gdt with completely different data, then do a new far jump to a 64-bit segment, and it works?
22:55:54 <elliott> fizzie: Can you go into long mode with interrupts disabled?
22:56:00 <cpressey> Phantom_Hoover: If this can be done with "just" topology then... I don't know why they are trying
22:56:18 <elliott> If so, plan: Use the code I have now. Make it jump into long mode and mangle the GDT properly. Let the OS handle setting up an IDT.
22:56:20 <olsner> doing this with interrupts enabled seems like a very dubious idea
22:56:25 <Phantom_Hoover> cpressey, because they don't know topology.
22:56:39 <elliott> Isn't there only one way you can have a GDT set up in long mode?
22:56:46 <Phantom_Hoover> I'm trying to tell them why it's impossible on the mailing list.
22:57:06 <cpressey> A geodesic dome construction might not be topologically kosher, or even geometrically kosher *really*, but it would... shoehorn what they're trying to do, onto a sphere, in a way that's "fair".
22:57:11 <elliott> link to their mailing list?
22:57:40 <fizzie> olsner: I don't know how it works: the example just says that the 32-bit GDT will need "at a minimum" "1) a CPL=0 16-bit code descriptor for this code segment", "2) a CPL=0 32/64-bit code descriptor for the 64-bit code." and "3) a CPL=0 read/write data segment, usable as a stack".
22:58:14 <cpressey> All I mean is: when we say "n neighbours" we kinda sorta really mean "n UNIQUE neighbours" and fudging that is silly. Fudge something else please.
22:58:15 <fizzie> This AMD64 example enables protected mode, but uses 16-bit protected mode code to go to long mode.
22:58:42 <olsner> right, so it just stays in the old code segment after setting protect enable?
22:58:48 <elliott> 16-bit protected mode?!
22:59:22 <fizzie> olsner: Well, sort-of. It does a far jump, but into the "same" 16-bit code segment.
22:59:43 <Phantom_Hoover> cpressey, well, a 1,1 torus is legitimate enough, for reasons I'm unsure of.
23:00:46 <Phantom_Hoover> I suppose there's also a tiling-based argument somewhere...
23:01:03 <olsner> fizzie: hmm, weird, what's the point of doing it like that?
23:01:23 -!- Quadrescence has quit (Ping timeout: 245 seconds).
23:01:41 <olsner> also, what's the difference between this new 16-bit code segment and the one inherited from real mode?
23:02:15 <fizzie> olsner: You need to do the far jump for the protected mode to actually get enabled; other than that, probably not much difference there.
23:03:08 <fizzie> olsner: Anyway, I guess it saves the need for a 32-bit code segment anywhere. It also doesn't bother with things like setting up ds/es/fs/gs in protected mode, since it jumps directly to long mode very soon after enabling protected mode.
23:04:24 <fizzie> olsner: Is your x86 manual set the AMD or Intel one? If the AMD one (Volume 2: System Programming), it's 14.8 "Long-Mode Initialization Example" I was pulling that stuff from.
23:05:18 <olsner> aha, I'm reading AMD's document 24593 now, so I could just read this at the source instead of asking you :)
23:05:47 <fizzie> (It's a bit messy, since it has a pGDT64 pseudo-descriptor in there, but the later comments say it's not exactly needed; and it doesn't show what actually is at gdt32_base.)
23:06:13 <olsner> fizzie explains it, I write the code, elliott uses it :D
23:06:34 <cpressey> and then in a week or so i'm going to try writing something that goes into protected mode and we'll all go through all this AGAIN
23:06:42 <elliott> olsner: I totally write code too! Except my bits are the ones that don't work until you figure out what's wrong with them.
23:06:47 <elliott> cpressey: NO DUDE LONG MODE
23:06:55 <cpressey> I"M NOT READY FOR THAT
23:06:55 <elliott> it's like protected mode but you have an aneurysm
23:07:03 <elliott> cpressey: LET ME SPELL IT OUT FOR YOU
23:07:06 <elliott> cpressey: EIGHT MORE FUCKING REGISTERS
23:07:14 <elliott> Eight more registers! EIGHT!
23:07:20 <olsner> AND TWICE THE BITS PER REGISTER!!!
23:07:26 <elliott> That's 15 general-purpose 64-bit registers!
23:07:31 <cpressey> AND ANOTHER STACK!!!!!
23:07:31 <elliott> Suddenly X86 ISN'T SO SHITTY ANYMORE
23:07:39 <elliott> AND MY AXE
23:07:56 <olsner> it's the glazing on the turd
23:08:18 <cpressey> I wonder how many systems there are that actually support long mode, but not "fast A20"
23:08:26 <cpressey> are manufacturers really so weird?
23:08:35 <elliott> cpressey: Just use the BIOS to do it :P
23:08:44 <elliott> cpressey: You can disable Fast A20 in the BIOS sometimes.
23:08:46 <elliott> Inexplicably.
23:08:49 <cpressey> i fully plan to, that's what the BIOS is *for*
23:08:52 <elliott> Sometimes it's disabled by default.
23:09:56 <fizzie> Anyway, when it comes to the 64-bit GDT: it needs to have a TSS descriptor (for the single 64-bit task there can be), as many code descriptors as you wish (they still exist, though mostly just to determine if code's running in 64-bit mode or the 32-bit compatibility-mode-in-long-mode), and any data-segment descriptors needed by 32-bit code. (In 64-bit code, ds/es/ss values are ignored; for fs/gs it's.. complicated.)
23:13:09 <olsner> and this TSS thing is what you use to leave kernel mode and run in user mode for a while?
23:13:23 <fizzie> In 64-bit mode, it seems that it ignores pretty much everything in the descriptors except a few flag bits; I guess that's what they mean with the comment in the example that you don't necessarily need to set up a different GDT, they're compatible enough.
23:15:40 <olsner> i.e. as long as you're not retarded and set non-0 offsets or non-4G limits you can use the exact same segment descriptors for both modes?
23:16:09 <fizzie> olsner: It doesn't even matter if you set non-0 offsets or fancy limits, they're ignored in 64-bit code.
23:16:53 <olsner> they should have a segment retardation fault or something for it instead :)
23:17:05 <elliott> So how does all this fit in with a higher half kernel?
23:17:07 <elliott> Just askin'
23:17:12 <elliott> :P
23:17:16 <fizzie> I really don't know about the TSS; "Although the hardware task-switching mechanism is not supported in long mode, a 64-bit task state segment (TSS) must still exist. System software must create at least one 64-bit TSS for use after activating long mode, and it must execute the LTR instruction, in 64-bit mode, to load the TR register with a pointer to the 64-bit TSS that serves both 64-bit-mode programs and compatibility-mode programs."
23:17:44 <olsner> elliott: what does "higher half" mean?
23:18:36 <Sasha> proximal end?
23:18:49 <fizzie> I think for that you just need to mostly set the paging tables properly. I profess to complete ignorance on the privilege level changes: it seems to be a whole other esoteric mess of call gates, interrupt gates and trap gates.
23:18:59 <elliott> olsner: http://wiki.osdev.org/Higher_Half_Kernel
23:19:01 <elliott> It is traditional and generally good to have your kernel mapped in every user process. Linux, for instance (and many other Unices) reside at the virtual addresses 0xC0000000 - 0xFFFFFFFF of every address space, leaving the range 0x00000000 - 0xBFFFFFFF for user code, data, stacks, libraries, etc. Kernels that have such design are said to be "in the higher half" by opposition to kernels that use lowest virtual addresses for themselves, and leave h
23:19:01 <elliott> igher addresses for the applications.
23:19:22 <elliott> http://wiki.osdev.org/Higher_Half_Kernel
23:19:27 <elliott> If you don't want to enable paging right from the start, it is still possible to have your kernel appearing in the higher half. Tim Robinson's GDT Trick works by using segmentation to select an appropriate base for the code and data segments. Say you've loaded your kernel at 0x10000 and we want it to appear at 0xC0000000, then all we need to do is find a base _X_, such as _X_ + 0xC0000000 = 0x10000. The bootloader will then initialize the GDT wit
23:19:27 <elliott> h cs.base = 0x40010000 = ds.base. This also means that special care must be taken for VRAM (video RAM) access, as 0xB8000 is now somewhere above 1GB. Either use a special 0-based additional data-segment or use
23:19:44 <elliott> olsner: I seem to recall reading something about entering long mode while using that insane GDT trick.
23:19:52 <elliott> http://wiki.osdev.org/Higher_Half_With_GDT
23:20:27 <fizzie> That doesn't sound like something that would work in long mode.
23:20:38 <fizzie> Given that GDT bases are ignored.
23:21:13 <elliott> fizzie: You do that and *then* do it properly with paging in long mode.
23:21:24 <elliott> Aw hell, I have no idea. I just parrot the wiki.
23:21:39 <cpressey> that page instantly makes me hate OS programming for some reason
23:21:42 <fizzie> Right, but it doesn't sound like it would help you anything assuming you want to get long mode done before jumping to the kernel.
23:22:03 <fizzie> I mean, as long as you don't actually jump into the kernel code, it doesn't really matter at what address it appears to be.
23:22:07 <elliott> fizzie: Right.
23:22:14 <elliott> fizzie: I realised that a second ago :)
23:22:31 <fizzie> Of course you might run out of bytes in your boot sector in setting up paging. :p
23:22:53 -!- Quadrescence has joined.
23:23:06 <olsner> obviously you'd generate the page tables for the regions you need access to during startup
23:23:34 <olsner> didn't look into the details, but the direct-to-long-mode page had something like that
23:24:14 <elliott> i understand, now, why people like unreal mode
23:24:21 <fizzie> Paging in long mode is so simple, too: http://zem.fi/~fis/paging.png
23:25:11 <fizzie> Page frames, page tables, page directory tables, page directory pointer tables and finally the "page map level 4 table" on top.
23:26:11 <fizzie> Maybe you should just opt for not using virtual memory or privilege levels; who needs that sort of stuff anyway?
23:26:46 -!- Mathnerd314 has joined.
23:26:54 <olsner> what, of course you must have proper kernel/user mode, memory protection and task switching
23:27:07 <elliott> olsner: WHY
23:27:21 <olsner> you just do!
23:27:23 <fizzie> To SAVE you from YOURSELF, of course.
23:27:30 <fizzie> Or BADLY BEHAVED CODE, anyway.
23:27:37 <elliott> Doesn't matter in a lisp OS at least :)
23:27:44 <elliott> In fact running everything in kernel mode is beneficial there.
23:28:14 <olsner> oh, you're building a lisp os? :)
23:28:22 <elliott> olsner: well -- maybe! :p
23:28:28 <elliott> I'd like to get the freaking boot sector written first.
23:29:18 <elliott> There's only ~1.59361 * 10^1228 boot sectors, anyway.
23:29:22 <elliott> I just have to pick one!
23:32:13 -!- Phantom_Hoover has quit (Ping timeout: 245 seconds).
23:37:08 <cpressey> I once designed a protected memory system for the Z80 (in hardware)
23:38:21 <cpressey> A clock would periodically reset the processor and switch the lower half of memory to a new bank
23:39:15 <cpressey> I forget exactly how, but the plan was to write a JMP to the address you were last executing, into the first few bytes of your task's bank, so you could continue executing
23:39:49 -!- MigoMipo has quit (Remote host closed the connection).
23:39:50 <cpressey> Maybe there was an interrupt issued just before the reset, then your code was supposed to do this then enable the reset
23:39:50 <elliott> cpressey: wow.
23:40:05 <elliott> cpressey: all that for protected memory :)
23:40:23 -!- MigoMipo has joined.
23:41:12 <cpressey> elliott: yes. also considering there is an "enhanced Z80" out there somewhere which basically does all this in a chip :)
23:41:57 <fizzie> The DS, which doesn't really do paging or have an MMU, still has a rudimentary "memory protection unit" thing that can define the access privileges (and caching behaviour) to was-it-8 mostly arbitrary ranges of physical addresses.
23:43:26 <olsner> wtf, my boot loader/os project has a CVS dir that points to a cvsroot with a windows path
23:43:58 <olsner> it is from 2002 though, I was younger then
23:44:47 <elliott> `addquote <olsner> it is from 2002 though, I was younger then
23:45:04 <elliott> olsner: wait i just adapted code developed on windows and cvs?
23:45:06 <elliott> i feel wrong
23:45:45 <olsner> no, it can never have been developed on windows, the build script is very much unix
23:45:47 <HackEgo> No output.
23:46:06 <olsner> but it was *stored* on windows at some point
23:53:35 * elliott tries to decipher why his vga display fun isn't working
23:55:28 <Gregor> Cat + melodica = insane cat
23:58:44 <elliott> Gregor: approve#
23:58:46 <elliott> s/#$//
00:03:29 <elliott> olsner: SO IS IT LONG YET
00:03:34 <elliott> rabble rabble rabble
00:07:07 <olsner> not very long yet, no
00:09:34 <fizzie> It's not the length of your general-purpose registers, it's how you use 'em.
00:09:43 -!- augur has quit (Remote host closed the connection).
00:11:43 <cpressey> And the label reads "General purpose register -- To be used for general purposes only"
00:13:05 <cpressey> (the "Enhanced Z80", ftr, is: http://en.wikipedia.org/wiki/Zilog_Z80000)
00:13:23 <cpressey> 32-bit!
00:13:47 <cpressey> Hm, not Z80-compatible, though.
00:13:57 -!- tombom has quit (Quit: Leaving).
00:14:03 <fizzie> There's the eZ80, too.
00:14:07 -!- Sgeo has joined.
00:14:23 <fizzie> No on-chip MMU, but more address bits and so on.
00:20:41 <fizzie> Oh, and the Z180 has some sort of on-chip memory banking thing, but I don't know if you can (ab)use that for memory protection or not.
00:21:33 <olsner> haha, long mode would change the behaviour of NOP to not be no-op, unless they gave it a special case
00:22:15 <olsner> ("NOP" is actually xchg eax,eax - but 32-bit operations are supposed to clear the upper bits of the 64-bit register)
00:24:03 <pikhq> It is fucking *ridiculous* how much better video looks when you go and calibrate your monitor right.
00:24:09 <pikhq> Absolutely, positively fucking ridiculous.
00:25:06 <Sgeo> pikhq, any websites that can help with that?
00:25:14 <elliott> olsner: they do give it a special case :P
00:25:23 <elliott> olsner: I think...
00:25:31 <elliott> olsner: Say, does x86 actually have a specific nop instruction?
00:25:38 <Sgeo> I remember seeing a page once...
00:25:45 <olsner> elliott: yes, they special-case it
00:25:54 <pikhq> Sgeo: http://www.lagom.nl/lcd-test/index.php
00:26:00 <fizzie> Well, it does have a specific NOP now.
00:26:15 <Sgeo> It occurs to me that I have not the faintest idea how to adjust stuff on this thing
00:26:19 <olsner> if you really want the swap-with-self-and-clear-upper-bits you have to use a different encoding of the same instruction
00:26:37 <cpressey> fizzie: I wonder if it was the Z180 I was thinking of...
00:26:39 <fizzie> I wouldn't be surprised if it's been special-cased for a while now.
00:28:08 <Sgeo> How do I adjust contrast on a laptop?
00:28:14 <cpressey> Unlike the Z80,000, I can actually find units of Z180 for sale.
00:29:13 <pikhq> Good luck!
00:29:21 <cpressey> http://www.mouser.com/ProductDetail/ZiLOG/Z8S18010PSG/?qs=sGAEpiMZZMtp5ziQ9mm%252bAtzjy5qS0%252bme DIP-60 :)
00:29:22 <Sgeo> Might Windows's built-in calibration stuff be any help?
00:29:28 <Sgeo> I can disable what the OS does, right?
00:29:28 <pikhq> What's most important is getting your gamma set straight...
00:30:13 <Sgeo> How do I get the monitor's menu on this thing?
00:30:35 <pikhq> The gamma correction should be in your OS. I *highly* doubt your monitor can help you.
00:30:49 <cpressey> That totally must be what I was thinking of, although fizzie is absolutely correct that it's not clear if the "MMU" actually protects memory, or just pages it.
00:31:06 <Sgeo> Right now I'm looking at color calibration
00:31:18 <Sgeo> "press the menu button for the display"
00:31:29 -!- MigoMipo has quit (Read error: Connection reset by peer).
00:32:04 <Sgeo> Oh, gamma doesn't require that
00:33:03 * Gregor gasps for breath
00:34:18 <pikhq> Gregor: Fix that, you monster.
00:34:45 <Sgeo> My dad's asking me to look for the best mp4 player
00:34:56 <Sgeo> All I can think is VLC, but he's asking me to look for writeups
00:35:09 <Sgeo> Does it even make sense for different players to have different qualities
00:35:10 <pikhq> Mplayer or VLC.
00:35:19 <Gregor> pikhq: I'm gasping for breath because I'm playing a melodica :P
00:35:22 <pikhq> Just like for every other video format.
00:35:30 <Gregor> pikhq: Specifically, I'm playing ZEE3 on a melodica.
00:35:36 <pikhq> Gregor: Nice.
00:35:43 <Gregor> While wearing a retainer because this mouthpiece is effing up my teeth X-D
00:36:37 <Sgeo> Do different video players even play the same file at different video quality? That makes no sense to me
00:37:17 <pikhq> Some video players actually do suck ass at quality.
00:38:43 <pikhq> What matters is generally how it actually outputs to screen, though. Aside from a small handful of cases, they will all get the exact same raw video stream from a video.
00:39:00 <pikhq> (there's some players with *broken decoders*.)
00:40:02 -!- cpressey has quit (Quit: Lost terminal).
00:40:26 <elliott> <Sgeo> My dad's asking me to look for the best mp4 player
00:40:26 <elliott> <Sgeo> All I can think is VLC, but he's asking me to look for writeups
00:40:29 <elliott> ...so? That's ridiculous.
00:40:33 <elliott> Tell him to take the suggestion or leave it.
00:40:53 <Sgeo> He's satisfied knowing that I asked, I think
00:42:24 <elliott> I wonder if anyone still maintains KDE 3.
00:43:33 <elliott> The Trinity Desktop Environment project, organised and led by Timothy Pearson, Kubuntu release manager for KDE 3.5[9], has released Trinity to pick up where the KDE e.V. left. It is currently trying to keep the KDE 3.5 branch alive, attempting to fix bugs during the process, enhance it with additional features and make it more compatible with recent hardware.
00:43:34 <elliott> Yes.
00:43:42 <elliott> This project aims to keep the KDE3.5 computing style alive, as well as polish off any rough edges that were present as of KDE 3.5.10. Along the way, new useful features will be added to keep the environment up-to-date.
00:43:45 <elliott> http://trinity.pearsoncomputing.net/
00:44:01 <pikhq> And it's in Debian!
00:45:00 <elliott> pikhq: Not quite.
00:45:06 <elliott> It's a separate repository.
00:45:15 <pikhq> Aaaw.
00:45:20 <pikhq> Ah well.
00:45:34 <elliott> Bit of an unfortunate name, what with the nuclear test.
00:45:36 <elliott> pikhq: http://trinity.pearsoncomputing.net/wiki/pub/Documentation/Releases_3_5_12/sm_kde3_5_maverick_livecd_konqueror.png
00:47:31 <Sgeo> What's so bad about KDE4?
00:47:38 <Sgeo> And is anyone keeping KDE2 alive?
00:47:45 -!- augur has joined.
00:47:57 <Sgeo> Is KDE4 the Vista of KDE or something?
00:47:58 <Gregor> Sgeo: The UI. The fact that it lost all the wonderful customizability of KDE3 while gaining ... retard OS-X-Vista-ness.
00:47:58 <elliott> Everything is bad about KDE 4.
00:48:10 <Gregor> KDE4 is why I switched to XFCE.
00:48:18 <elliott> Gregor: The customisability hasn't been lost that much. But the applications are terrible.
00:48:28 <pikhq> Sgeo: The backend libraries of KDE4 seem decent. But the UI is terrible.
00:48:31 <Gregor> elliott: Do I have to get my LCARS screenshot out :P
00:48:37 <elliott> I could vaguely -- sort of -- understand KDE users in the days of 3.
00:48:47 <elliott> Now everyone who uses KDE is just an idiot and I don't talk to them. :P
00:49:20 <elliott> Gregor: *KDE SC 4
00:49:23 <elliott> It's a software compilation now!
00:49:25 <pikhq> KDE 3 was usable. It took tweaking to get it nice, but it was *usable*.
00:49:36 <elliott> "October 30, 2007 (The INTERNET)." -- KDE press release
00:49:42 <pikhq> KDE 4... It's damned near impossible to tell it to stop sucking.
00:49:43 <elliott> WE COME FROM THE INTERNETS
00:50:32 <elliott> "The observers set up betting pools on the results of the test. Predictions ranged from zero (a complete dud) to 18 kilotons of TNT (predicted by physicist I. I. Rabi, who won the bet[24]), to destruction of the state of New Mexico, to ignition of the atmosphere and incineration of the entire planet." -- [[Trinity (nuclear test)]]
00:50:37 <elliott> Cheerful betting pool.
00:50:52 <elliott> "I'm gonna go with 'what we've done here will cause New Mexico to cease to exist'."
00:51:08 <olsner> I wonder who expected to cash in on the planetary incineration bet
00:51:23 -!- Mathnerd314 has left (?).
00:51:23 <elliott> Jesus.
00:51:36 <elliott> aka Richard Feynman
00:52:34 <Ilari> Wonder what they though the reaction (ignition of atmosphere) would be...
00:52:46 <elliott> Ilari: Bad.
00:52:52 <Ilari> Obiviously something exotermic...
00:52:59 <Gregor> Hard to claim your part of the pool when you bet the world would be destroyed :P
00:53:45 <olsner> maybe if it destroyed new mexico and more than 50% of the rest of the world, but not the part where you are
00:53:59 <olsner> then you'd be closest but not correct
00:54:06 * Sgeo would say that that's worse than Hitler
00:54:11 <elliott> Assuming you weren't there when it happened :P
00:54:20 <elliott> Sgeo: "Destroying the planet is worse than what Hitler did.
00:54:21 <Gregor> Conversation over
00:54:21 <elliott> *did."
00:54:23 <elliott> OMG REALLY
00:54:29 <elliott> Hitler, like, DESTROYED ANDROMEDA
00:54:30 <elliott> Didn't he?
00:54:40 <elliott> OH WAIT NO he just killed a few million people.
00:56:27 * Sgeo performs CPR on the conversation
00:57:29 <olsner> I wonder what's in all these reserved control registers in x86
00:58:03 <olsner> you can use 0,2,3,4,8 but 1, 5-7 and 9-15 are reserved
00:58:25 <Ilari> Uh.. CR8? Never heard about it before...
00:59:13 <olsner> it's the task priority register
01:04:46 -!- Gregor has changed nick to window.
01:08:41 -!- window has changed nick to Gregor.
01:11:09 -!- ais523 has quit (Remote host closed the connection).
01:35:46 -!- augur has quit (Remote host closed the connection).
01:49:54 <elliott> olsner: you're allowed to use them? Awesome.
01:49:58 <elliott> More general-purpose registers!
01:50:05 <elliott> oh, wait
01:50:08 <elliott> allowed to use them for their purpose
01:50:15 <elliott> rather than not being allowed to use them at all
01:50:38 <olsner> yes
01:50:42 <Gregor> js> ({}).constructor
01:50:45 <Gregor> Err
01:51:37 <elliott> Gregor types out his prompt when talking to a javascript console.
01:51:52 <Gregor> Yup
01:52:01 <olsner> perhaps Gregor plays both parts
01:52:26 <Gregor> olsner: Oh, I PLAY both PARTS *WINK WINK*
01:52:37 <elliott> What Gregor is saying is: sex.
01:52:53 <elliott> pikhq: You know OSSv4?
01:53:02 <pikhq> elliott: What about it?
01:53:22 <elliott> pikhq: I've remembered why I have a bad taste in my mouth about it.
01:54:08 <pikhq> Oh?\
01:54:14 <elliott> pikhq: They funded XMMS development for quite a few years and owned the domain xmms.org, which the XMMS project used. Indeed, it was used in the present day, I think it had the XMMS2 site on it, and many XMMS developers used it for email and personal webspace.
01:54:20 * Sgeo attempts to determine if he needs to bring photo ID tomorrow
01:54:25 <elliott> pikhq: Then 4Front Technologies, developers of OSS, decided to sell it.
01:54:28 <elliott> pikhq: To a cybersquatter.
01:54:31 <elliott> pikhq: Without asking the XMMS team.
01:54:38 <elliott> pikhq: They then emailed the XMMS team asking for a webpage dump.
01:54:44 <elliott> pikhq: http://tobias.hieta.se/2010/04/28/what-ever-happened-to-xmms-org/ for the full, gory story.
01:55:17 <Sgeo> oO
01:55:19 <Sgeo> *o.O
01:55:29 <Sgeo> There's been debates about whether it's ok to require photo ID
01:55:46 <elliott> Sgeo: To... where?
01:55:59 <Sgeo> for voting
01:56:40 <Sgeo> In NY
01:56:45 <Sgeo> Found something about Minnesota
01:56:55 <olsner> elliott: wtf
01:56:59 <elliott> Sgeo: I am pretty sure they have no constitutional right to demand photo ID...
01:57:02 <pikhq> elliott: The fuck.
01:57:11 <pikhq> elliott: Doesn't stop them.
01:57:46 <elliott> So Sgeo I take it you are voting for the Republicans
01:57:58 <Sgeo> elliott, I know you're joking
01:58:04 <elliott> No I'm not
01:58:09 <elliott> Aren't you?!
01:58:23 <Sgeo> You're in your "try to confuse Sgeo" mode
01:58:27 <pikhq> elliott: You'd have to be braindead to vote for them.
01:58:52 <elliott> Sgeo: So, wait. You're *not* voting for the Republicans?
01:59:09 <Sgeo> I'm not voting straight party whatever, though. Just in regards to people who I know about. Which turns out leaving me supporting all Democrats this election
01:59:27 <elliott> Hey I guessed right.
01:59:33 <elliott> Long live the two-party system!
01:59:35 <Sgeo> Although I don't know as much about Peter King's opponent as I'd like to
01:59:39 <elliott> <Europe> hahaha
02:00:05 <Sgeo> All I know is that Mr. King voted against HCR
02:01:21 <elliott> US health care reform: Because if you don't look to closely, it sort of resembles single-payer health care!
02:02:13 -!- FireFly has quit (Quit: swatted to death).
02:02:15 <Sgeo> As far as I'm aware, it's mostly regulations on what insurance companies can and cannot do
02:02:24 <pikhq> Yup.
02:02:40 <elliott> Plus *fines* for not having insurance, unless I'm grossly mistaken.
02:02:53 <elliott> Which, y'know, is sort of *entirely great* for the *horrible insurance companies*.
02:03:20 <pikhq> elliott: On the other hand, the bastards can't drop anybody.
02:03:37 <elliott> And all of this is entirely stupid because you guys could *just have single-payer*.
02:03:42 <Sgeo> Aren't the fines cheaper than insurance...?
02:03:45 <pikhq> Still, bit of an ineffectual "reform".
02:04:04 <pikhq> And yet, it's easy to see why it is how it is.
02:04:24 <pikhq> People think that *this* was somehow going to send people to the gas chambers.
02:04:26 <elliott> Sgeo: ...and?
02:04:29 <pikhq> And those morons vote.
02:04:34 <Gregor> Killing the entire insurance industry outright wouldn't be good.
02:04:38 <Sgeo> Making the fines essentially worthless
02:04:38 <elliott> Gregor: Yes it would.
02:04:53 <Gregor> I'm not talking about good for healthcare.
02:05:01 <Gregor> I'm talking about good for the economy, good for jobs.
02:05:14 <elliott> Which, as we all know, are more important than healthcare.
02:05:22 <pikhq> Gregor: It's a massive economic inefficiency, y'know.
02:05:43 <Gregor> pikhq: And a massive economic sinkhole would be better?
02:05:54 <Gregor> I'm not claiming we can't do anything, I'm claiming anything we do needs to be gradual.
02:05:55 <pikhq> Gregor: That's what we *have*.
02:06:09 -!- catseye has joined.
02:06:09 <pikhq> Gregor: We dump money in there that goes to kill people.
02:06:46 <Gregor> pikhq: Yes. But it's money that goes SOMEWHERE. As opposed to cutting off the industry outright and watching thousands of employed people flail.
02:06:56 <Gregor> Currently-employed, that is
02:07:40 <elliott> <Gregor> The US is so fucked up that we have a choice between killing people with massive megacorporations and killing people with unemployment.
02:07:47 <Sgeo> I suppose if the Democrats regain power, they're not going to bother fixing the fix of healthcare?
02:07:57 <Gregor> elliott: Yes. Exactly.
02:07:57 <elliott> <Gregor> Because, in the US, unemployment equals death. Did I mention we're fucked up?
02:08:15 <elliott> Sgeo: Uhh, they're the ones who wanted it so... no.
02:08:15 <Sgeo> Wait
02:08:19 <Gregor> elliott: Clearly what I'm arguing is to do nothing whatsoever.
02:08:21 <pikhq> Sgeo: Which is an improvement over the Republicans, who intend to repeal the fix and then go under a witch hunt.
02:08:22 <Gregor> elliott: I mean obviously.
02:08:27 <elliott> Gregor: Yes. Clearly.
02:08:27 <Gregor> elliott: There's nothing else I could be arguing here at all.
02:08:33 <elliott> Gregor: I don't disagree :)
02:08:36 <elliott> Sgeo: You do realise the Democrats are only *slightly* to the left of the Republicans?
02:08:51 <elliott> I am continually amazed that Americans actually buy in to the two-party thing.
02:08:53 <pikhq> Gregor: How's about a 10 or 20 year migration to a public health system?
02:09:00 <Gregor> pikhq: That makes sense.
02:09:06 <elliott> Or how's about this?
02:09:06 <Gregor> Preferably closer to 10.
02:09:17 <elliott> Gradually but not slowly extend Medicare to cover pretty much everyone.
02:09:23 <Gregor> Exactly!
02:09:26 <elliott> Insurance companies go "but with us, you get NICER coverage!".
02:09:29 <elliott> They survive because of idiots.
02:09:31 <pikhq> elliott: That's the easiest way to do it, yes.
02:09:34 <elliott> Then extend Medicare to everyone in one go.
02:09:35 <Sgeo> I think it might be possible that the broken fix might be WORSE than no fix
02:09:37 <Gregor> Yes, perfect.
02:09:43 <pikhq> Sgeo: It isn't.
02:09:44 <elliott> Insurance companies cry, shrivel up, and die, but only after stagnating over the previous few years.
02:09:48 <elliott> OMG CAN I BE PRESIDENT NOW
02:09:57 <Gregor> Exactly what's happening to the music industry :P
02:10:02 <pikhq> Sgeo: At least now the insurance companies can't drop you because you became too expensive.
02:10:10 <elliott> Gregor: ...what's music medicare? X-D
02:10:19 <Gregor> elliott: The Pirate Bay
02:10:33 <elliott> Gregor: The Pirate Bay hasn't worked in ages :P
02:10:49 <elliott> Sure, you can search, but their tracker is down and OpenBittorrent never has any peers.
02:11:01 <elliott> They're great for getting .torrent files from torrentz.com, though!
02:11:26 <Gregor> OK, I'll change my answer to "torrents" then X_X
02:11:37 <elliott> Gregor: lawl
02:11:41 <elliott> pikhq: By the way: http://www.devmazumdar.com/
02:11:45 <pikhq> elliott: Yeah, but you can just generate magnet links from there.
02:12:05 <elliott> "As a gesture of gratitude for his long-lasting generosity (he “invested a lot of money in XMMS.org”, after all), we will be hosting the XMMS project on DEVMAZUMDAR.COM from now on.
02:12:05 <elliott> Thank you so much for everything, Dev."
02:12:23 <Sgeo> There will be people who delay getting insurance until they need it, due to ineffectual fines, which raises prices. What good is insurance that covers any expense if no one can pay for the insurance? (Note: I am not an economist, nor do I know to what extent prices would rise)
02:12:35 <pikhq> elliott: :)
02:12:52 <elliott> "I also bought up zinf.org for the same reason. I want to use either or both of these brands to make a new media player that leads the market not follows. I know there are other projects out there but we can re-invent xmms."
02:13:00 <elliott> Dammit people, I bought your domain! Drop XMMS2 NOW and make my perfect media player!
02:13:31 <pikhq> Sgeo: BTW, it's actually a tax that you don't have to pay if you have insurance...
02:13:32 <elliott> Sgeo: Health insurance companies are more in the "wtf" category than the "economics" category.
02:13:41 <elliott> Since demand for healthcare is, uh, *infinite*.
02:14:13 <Sgeo> That site claims there's no guarantee that xmms.org downloads don't contain malware
02:14:14 <pikhq> Sgeo: And anyways, healthcare is one of those things that just plain does not function at all under free market conditions.
02:14:38 <elliott> Sgeo: There is no such guarantee, since a cybersquatter owns it.
02:14:58 <Sgeo> ...according to this devmazumdar person, or according to reality?
02:15:00 <elliott> olsner: i should totally write my OS in Literate Assembly.
02:15:06 <elliott> Sgeo: devmazumdar does not own devmazumdar.com.
02:15:12 <elliott> Sgeo: Try READING the TEXT on the PAGE with your EYES.
02:15:23 <olsner> elliott: you should totally do that
02:15:35 <Sgeo> ...
02:15:42 <elliott> Sgeo: Our dear friend Dev Mazumdar, from 4Front Technologies, sold our XMMS.ORG domain without asking the XMMS community.
02:15:43 <Sgeo> How do you determine which is real and which is lying?
02:15:44 <elliott> As a gesture of gratitude for his long-lasting generosity (he “invested a lot of money in XMMS.org”, after all), we will be hosting the XMMS project on DEVMAZUMDAR.COM from now on.
02:15:44 <elliott> Thank you so much for everything, Dev.
02:15:45 <elliott> The XMMS team
02:15:57 <elliott> Sgeo: Considering that message is from the *XMMS team* and is also on their *official blog*
02:16:01 <elliott> you'd have to be a moron to believe the cybersquatter.
02:16:06 <elliott> olsner: so have you got long mode working yet EH
02:16:16 <Sgeo> Link to blog?
02:16:54 <elliott> RTF Log
02:17:57 <olsner> elliott: no, I'm still leisurely reading the manual
02:18:31 <elliott> olsner: fun, is it?
02:18:38 <olsner> probably would've gotten it done without knowing what I was really doing by now, but ehm, that'd be less fun
02:19:14 <olsner> unfortunately the example seems to be right at the end of the manual, like 400 pages away
02:19:25 <elliott> olsner: lawl
02:19:28 <olsner> GOD FORBID I just skip to it
02:22:59 <olsner> the manual keeps luring me into reading about task switching and stuff, which isn't strictly required to get into long mode and write some data to vga memory
02:27:14 <elliott> http://www.posix.nl/linuxassembly/nasmdochtml/nasmdoca.html omg this is the best x86 reference ever
02:29:10 <elliott> olsner: i so totally want to write it in literate asm but, lack of tools
02:29:45 <olsner> you don't have sed installed? :D
02:30:42 <elliott> olsner: uh, literate programming also involves rearranging code
02:30:47 <elliott> olsner: also: emacs syntax highlighting, etc.
02:35:04 <elliott> olsner: I might try it with noweb.
02:35:13 <elliott> olsner: But really, I'd like to get into long mode first and I need YOU for that, slacker
02:37:40 -!- BeholdMyGlory has quit (Remote host closed the connection).
02:37:45 * Sgeo breathes
02:37:51 <elliott> Sgeo: I do that all the time.
02:42:25 <elliott> Actually I don't think I like noweb, LaTeX isn't really ideal for what I'd like to use literate programming for.
02:42:28 <elliott> Not hypertexty enough.
02:44:35 <olsner> I'm not convinced about this literacy thing
02:45:10 <olsner> tried to read tex once, I couldn't find the program for all the text
02:45:11 <elliott> olsner: I'm not either, but it would be fun to have a literate bootloader.
02:45:19 <elliott> olsner: oh, TeX's use is all very archaic
02:45:26 <elliott> olsner: I mean, the Pascal doesn't compile on any modern Pascal compiler!
02:45:36 <elliott> olsner: And WEB itself is basically only distributed with TeX distributions.
02:45:46 <elliott> olsner: oh wait
02:45:49 <Sgeo> I think it's safe to say that Factor does the opposite of literate programming
02:45:50 <elliott> olsner: you mean you couldn't find the code snippets?
02:45:57 <Sgeo> Code and documentation are in separate file
02:45:59 <Sgeo> files
02:46:11 <elliott> olsner: Well, you're not meant to :)
02:46:29 <elliott> Of course literate programming is basically designed for one person to write and everyone else to read...
02:47:59 <olsner> exactly, I couldn't find the code snippets in all the text... and I'm not meant to? huh?
02:48:53 <elliott> olsner: You're meant to read the text, not skip past it.
02:49:14 <pikhq> olsner: It's a book that just happens to be executable.
02:50:59 <olsner> elliott: IIRC, I just wanted to find the tex interpreter to figure out how the programming language in tex worked without accidentally learning any typography
02:51:17 <elliott> olsner: Knuth doesn't want you to. It's an ego thing. :)
02:51:35 <elliott> olsner: Of course one could always have the typography engine and the programming language in separate chapters.
03:00:07 <elliott> olsner: huh, "xor x, x" is slower than "mov x, 0" now
03:00:09 <elliott> why did nobody tell me?
03:01:32 <olsner> mov is still longer since you end up with a 4-byte constant
03:02:23 <elliott> ah
03:02:26 <elliott> i'll keep using xor then
03:02:30 <elliott> in my boot sector at least
03:02:37 <elliott> also "inc x inc x" is shorter than "add x, 2" :)
03:02:46 <elliott> didn't expect that one, but i guess it's obvious in retrospect
03:03:31 <pikhq> elliott: It actually depends on the CPU which one is shorter.
03:03:37 <elliott> pikhq: x86 duh
03:03:38 <pikhq> elliott: Erm, faster.
03:03:42 <elliott> right
03:03:48 <elliott> well, in modern tymes mov x, 0 is faster
03:04:33 <pikhq> o.O'
03:04:42 <elliott> pikhq: ?
03:04:50 <elliott> It's because Intel were like "lol xor is so rare, fuck that".
03:04:53 <pikhq> The UK only has 5 OTA analog TV stations possible in their system?
03:04:57 <elliott> Oh.
03:05:03 <elliott> pikhq: Um, no, I think we *could* have a sixth.
03:05:04 <elliott> Or something.
03:05:12 <elliott> pikhq: But the government went "okay, that's it" after the fifth.
03:05:23 <elliott> pikhq: And a lot of people still can't pick up Five. :)
03:05:30 <elliott> Analogue, that is.
03:05:45 <elliott> Lol, they've renamed it back to Channel 5.
03:05:57 -!- poiuy_qwert has quit (Ping timeout: 245 seconds).
03:06:05 -!- poiuy_qwert has joined.
03:07:31 <Gregor> How about IHEARTBRACKETS
03:07:40 <pikhq> elliott: The North American analog assignment currently allows for about 30 stations.
03:07:46 <elliott> Gregor: *PARENTHESES
03:07:48 <pikhq> elliott: Used to allow for 45 or so.
03:07:51 <elliott> pikhq: Yeah but you guys are retarded.
03:08:07 <Gregor> elliott: I call them parentheses, I thought you guys called them brackets X-P
03:08:30 <elliott> Gregor: () parentheses, [] brackets, {} braces, <> angle brackets
03:08:43 <elliott> Gregor: It is the only terminology I accept. :)
03:08:59 <elliott> Gregor: [] can also be referred to as "square brackets" to disambiguate.
03:09:03 <Gregor> elliott: I call them "curly braces" in spite of their being no other braces, but otherwise that's what I use :P
03:09:14 <elliott> Well, right, that too.
03:09:30 <elliott> But if I'm talking quickly or whatever, I'd truncate square/curly.
03:09:56 <elliott> pikhq: OMG I should totally make my Lisp run on the bare metal.
03:10:02 <elliott> Bcuz that's HARDCORE.
03:12:14 <Sgeo> curly brackets
03:12:42 <pikhq> elliott: Seriously though, 6 stations being *at all possible*?
03:12:48 <elliott> pikhq: I think there's more...
03:12:57 <pikhq> elliott: What, do you have gigahertz allocations?
03:12:58 <elliott> Gregor: This was captioned "Tiny Core Linux 2.9": http://www.desktoplinux.com/files/misc/tinycorelinux_v29.jpg
03:13:03 <elliott> pikhq: I don't think so :P
03:13:09 <elliott> pikhq: But I think there could be more than 6.
03:13:31 <Gregor> elliott: ... wtf.
03:13:41 <elliott> Gregor: You see, they're installing Tiny Core Linux from Windows!
03:13:50 <elliott> To be fair, a real screenshot followed, captioned "Tiny Core Linux 2.4.1 Yep, it's minimalist.".
03:13:57 <elliott> BUT STILL
03:13:59 <Gregor> elliott: ... wtf.
03:15:05 <elliott> olsner: I NEED LONG MODE FOR MY LISPING
03:18:25 <Sgeo> HOT SEXY SEX BITS
03:18:27 <Sgeo> http://sgeo.diagonalfish.net/screenshots/sex_byte_determination.png
03:19:27 <elliott> `addquote <Sgeo> HOT SEXY SEX BITS
03:19:37 <HackEgo> 252|<Sgeo> HOT SEXY SEX BITS
03:19:45 <pikhq> elliott: Doesn't seem like it.
03:19:58 <elliott> pikhq: You thought it was five before I said no :P
03:21:08 <Sgeo> There's only one sex byte there, it's the byte that's 01 on the top and 37 on the bottom
03:21:23 <Sgeo> But the sex byte is repeated a multitude of times throughout the files
03:22:26 <pikhq> elliott: Aaah, PAL-I has significantly more *possible* but the bandwidth allocation is such that you can't squeeze more than 6 in.
03:25:06 <Sgeo> http://sgeo.diagonalfish.net/screenshots/ten_crea_sex_bytes_and_much_more_to_go.png At the point shown in the file, I had found 10 sex bytes
03:26:17 <catseye> say, hypothetically, that i wanted to code in the microcode that underlies the x86 code on a modern machine. what would i have to go through to do that?
03:26:18 <elliott> has Sgeo actually managed to be nostalgic about himself?
03:26:26 <elliott> catseye: you can't -- it's read-only
03:26:39 <elliott> catseye: also, afaik, not public
03:26:40 <catseye> elliott: hy-po-thetickly
03:27:03 <catseye> get a job at intel, huh
03:27:08 <elliott> hmm wait
03:27:08 <elliott> Linux and FreeBSD(on x86 PCs) have a patch program that fixes botched CPU microcode. Of all UNIX (and UNIX-like) operating systems on Intel (and Intel x86-compatible) PCs there has been an ongoing requirement to patch erroneous microcode since the FPU multiplier problem that was endemic to some Pentiums.
03:27:15 <elliott> Several Intel CPUs in the IA32 architecture family have writable microcode.[10] This has allowed bugs in the Intel Core 2 microcode and Intel Xeon microcode to be fixed in software, rather than requiring the entire chip to be replaced. Such fixes can be installed by Linux,[11] FreeBSD[12] Microsoft Windows,[13] or the motherboard BIOS.[14]
03:27:23 <elliott> catseye: http://www.intel.com/Assets/PDF/manual/253668.pdf
03:27:24 <elliott> have fun
03:27:34 <catseye> if you can patch you YOU CAN CODE IN IT
03:27:35 <elliott> enjoy fucking up your cpu
03:27:39 <catseye> HWWWWEEEEE
03:29:10 <catseye> hm, i need to build a pdf reader here don't i
03:30:20 <elliott> catseye: evince is very nice.
03:30:34 <elliott> epdfview or whatever it is is really shit
03:30:40 <elliott> evince is worth the few gnome dependencies :)
03:30:48 <elliott> catseye: or: XPDF!!11
03:31:04 <Sgeo> http://z15.invisionfree.com/CC_Developers/index.php?showtopic=8
03:31:07 <Sgeo> That's my code
03:31:20 <Sgeo> (for the "Anyway, this is the script for the robot toy norn")
03:31:28 <Sgeo> Well, except the stuff I may have borrowed myself
03:32:17 <Sgeo> Which is probably everything but the first three lines, the born, and the vocb
03:32:25 <elliott> sure thing, Grendel Man
03:32:39 <Sgeo> Oh, probably duplicating the physics stuff from the robot toy
03:32:42 <Sgeo> I am not Grendel man
03:32:47 <Sgeo> he copied my code
03:32:55 <Sgeo> I don't think he claimed it as his own though
03:33:01 <catseye> confused AND loving it
03:35:21 <Sgeo> From that thread, Grendel Man made http://www.seeyou7.net/creatures/creatures3/breeds/grendelman/images/g-rainbowsharkling.html
03:35:45 <Sgeo> "This will cause problems with the GUI and the Creature Selection Menu, so I included an agent by Sgeo that fixes this issue - or at least with DS."
03:36:39 <catseye> hypothetically i would probably patch the sse instructions or something else i could, in theory at least, do without (make sure everything on the machine is built WITHOUT them, first)
03:36:43 <elliott> OMG HE MENTIONED YOUR NAME'#5;46
03:36:56 <elliott> catseye: yeah uh, everything uses sse nowadays
03:36:59 <elliott> catseye: maybe the latest version of sse
03:37:09 <catseye> elliott: well you can tell the compiler to not generate it, right?
03:37:13 <elliott> catseye: yes, but...
03:37:16 <elliott> catseye: I would overwrite the BCD instructions.
03:37:18 <elliott> catseye: Nobody uses BCD.
03:37:29 <catseye> that's also a good candidate, but there are fewer of them.
03:37:44 <catseye> but i would only want to turn them into brainfuck anyway, so sure.
03:38:02 <elliott> catseye: Surely you could assign unimplemented instructions?
03:38:07 <elliott> I imagine it looks them up anyway. At least some of them.
03:38:25 <catseye> i don't know. possibly you could.
03:38:39 <elliott> catseye: what about 6502 microcode
03:39:47 <catseye> elliott: that seems less appealing somehow
03:39:58 <catseye> 6502's don't deserve having their brains rewired
03:39:58 <elliott> catseye: you were meant to go "OMG 6502 HAD MICROCODE?"
03:40:00 <elliott> which it doesn't
03:40:47 <pikhq> Y'know, I'm convinced that the bastards who designed analog TV were, well, bastards.
03:41:04 <pikhq> Why couldn't they have made everything simpler and just had 24 fps content go over the air?
03:41:23 <elliott> catseye: http://en.wikipedia.org/wiki/SSE4a#SSE4a
03:41:32 <elliott> five AMD-only instructions you could maybe reassign on your intel processor
03:42:17 <elliott> dunno
03:43:11 <pikhq> Just... 24 fps progressive video. As already existed in large quantities.
03:43:44 <elliott> Has anyone gone through their day without a single crazy music video advertising a long-awaited Lisp book?
03:43:51 <elliott> I will now fix that: http://www.youtube.com/watch?v=HM1Zb3xmvMc
03:49:35 <olsner> elliott: I am now enabling paging in long mode and it fails when trying to read the next instruction (the page is not in the page tables)
03:49:53 <elliott> olsner: hmm
03:49:58 <elliott> olsner: even if the next one is an appropriate jump?
03:50:05 <elliott> also, simple solution: add it to the page tables!
03:50:35 <olsner> it's *supposed* to be in the page table, obviously
03:50:48 <elliott> olsner: WELL FIX IT DUH
03:50:55 <elliott> olsner: have you tried copying their example code more directly? :P
03:56:30 -!- Sgeo_ has joined.
03:56:50 <elliott> olsner: haha, oh boy; if my kernel gets bigger than 512k/1 meg or so, my bootloader will have to load it in unreal mode
03:56:53 <elliott> just splendid
03:57:26 <Sgeo_> Dear laptop battery: Fuck you in the ... thingies
03:57:44 <elliott> Sgeo_: GENITALIA
03:58:03 <Sgeo_> I was trying to think of the names of the + and -
03:58:09 <Sgeo_> terminals? electrodes?
03:58:27 -!- Sgeo has quit (Ping timeout: 276 seconds).
04:04:47 <elliott> olsner: i take it it works perfectly now
04:05:05 <Ilari> Ugh... How many different *NAMEs DNS has? CNAME, DNAME, ZNAME? Oh and apparently there's proposals for BNAME...
04:05:17 <elliott> FNAME!
04:05:31 <elliott> (note: not real)
04:12:48 <Ilari> Ah, there are only CNAME and DNAME. ZNAME is also a proposal...
04:15:11 <Sgeo_> DNAME?
04:15:18 <Sgeo_> ZNAME
04:15:20 <Sgeo_> BNAME?
04:15:27 * Sgeo_ kind of knows what CNAME is
04:15:29 <Sgeo_> Sort of
04:15:33 <elliott> http://www.codlug.info/files/u1/gnome1_0.jpg GNOME 1 -- it's what plants crave!
04:16:19 <elliott> catseye: damn your BSD-usingness, I am becoming less and less convinced that advanced package managers matter.
04:34:00 <olsner> elliott: long mode achieved
04:34:14 <elliott> olsner: awesome! GIMME CODE
04:36:05 <elliott> olsner: haha, my bootloader is going to start in real mode, go into protected mode, go into unreal mode, go into protected mode, and then go into long mode
04:36:22 <elliott> olsner: protected to get to unreal, unreal so i can load a >1 meg kernel, protected to get to long, and long to run the kernel
04:45:04 -!- Decarabia has quit (Read error: No route to host).
04:45:27 -!- wareya_ has joined.
04:48:39 -!- wareya has quit (Ping timeout: 276 seconds).
04:49:20 -!- Decarabia has joined.
05:01:03 -!- augur has joined.
05:01:07 <elliott> olsner has figured out that if he doesn't give me code, i am powerless
05:01:21 <catseye> elliott: so does the loading work again yet?
05:01:26 <elliott> catseye: yes
05:01:37 <catseye> am i interested in what the problem was?
05:01:40 <olsner> elliott: http://gist.github.com/657234
05:02:07 <elliott> catseye: i'm stupid and olsner isn't
05:02:17 <elliott> catseye: some stupid parameter to the call
05:02:22 -!- augur has quit (Remote host closed the connection).
05:03:07 <olsner> hmm, it's really QUITE late now
05:04:26 <elliott> but what if i get
05:04:27 <elliott> BUGS
05:04:30 <olsner> happy code stealing and good night :)
05:04:46 <olsner> elliott: just ... figure it out :)
05:05:21 <elliott> olsner: PAH!
05:08:32 -!- augur has joined.
05:09:24 <catseye> elliott: surely you mean: PAE!
05:09:34 <elliott> catseye: i'm tired shut up :|
05:09:37 <elliott> but yes
05:09:37 <elliott> yes
05:09:38 <elliott> certainly
05:11:22 <catseye> ERROR: This package has set PKG_FAIL_REASON:
05:11:22 <catseye> ERROR: openmotif-2.3.1nb4 has an unacceptable license condition:
05:11:23 <catseye> ERROR: openmotif-license
05:12:16 <catseye> gah!
05:12:19 <catseye> it's GPL v2!
05:12:26 <catseye> oh no wait
05:12:50 <elliott> catseye: package managers; who neds em
05:13:49 <catseye> is what i'm thinking right now, certainly
05:13:55 <catseye> saving me legally from myself
05:14:30 <elliott> catseye: herz what im thinkin, in tired-shorthand;
05:14:46 <elliott> catseye: /usr/src. ok. buncha directories inside, dey pkgs.
05:15:24 <elliott> catseye: makefile. "all" rule, depend on like the-software-version/{configure,Makefile}, and dey just call dose. rul for dose configure and makefile, is, we download software tarball from internet, and unpack.
05:15:42 <elliott> catseye: and der a download-binary target, which does same for binary tarball which has makefile that install and etc.
05:15:45 <elliott> catseye: therefore win
05:16:03 <catseye> pkgsrc+bin
05:16:46 <catseye> you know, as long as you can cleanly remove what you install, i don't care about the rest
05:18:31 <elliott> catseye: oh yaeh make uninstall target.
05:18:42 <elliott> catseye: with bianry package all this is much simpler
05:18:48 <elliott> install: tar xf, run shell script
05:18:59 <elliott> uninstall: remove all non-config files from some manifest, run shell script
05:19:08 <elliott> catseye: then we just plug that into a ports-style autocompile system
05:23:48 -!- evincar has joined.
05:24:36 <elliott> evincar: ah! the frontispiece!
05:24:39 <evincar> Ni hao, shijie.
05:24:58 <evincar> elliott: Beg coming your pardon?
05:25:04 <evincar> Again!
05:25:07 <elliott> evincar: CRETAN
05:25:09 <evincar> Left out a word.
05:25:15 <elliott> thou art'st'st'st'st's't'st'st'st; unbulate
05:25:27 <elliott> track the pititulancers oft'x blaeæit;
05:25:34 <elliott> triuek th'vrandermoore
05:25:44 <elliott> upön talyisemens
05:25:49 <elliott> kast'shure.
05:25:56 <evincar> Are you writing in some esolang we don't know yet? :P
05:26:17 <elliott> evincar: VERILY! crite understambulaters,
05:26:21 <elliott> as they wuld,
05:26:32 <elliott> creese down t'tirednes wht'sgrinnin'
05:26:43 <evincar> So how was your weekend?
05:27:42 <elliott> wiktended
05:29:03 <evincar> So I'm starting a site some folk on here might find interesting and useful.
05:29:44 <evincar> I have to do a final project for my Web Design class, and I figured it would be more beneficial to myself and mankind to make something other than a personal page that'll rot on the school server.
05:30:25 <evincar> Anyway, it's a site for vote-based advertisement of new open-source projects, so small developers can gain exposure.
05:31:32 <elliott> too practical, lame!
05:31:37 <evincar> You get an icon, a URL, and a Twitter-sized description. You can upvote or downvote projects. Receiving a downvote loses you points, and giving one loses you a few fewer. Receiving upvotes on your project or your userpage gives you points.
05:32:02 <elliott> hmm.
05:32:13 <evincar> Projects and users are ranked by newest, most popular, and "hottest", that is, both new and popular.
05:32:58 <evincar> There's nothing quite like it out there.
05:33:05 <evincar> So I think I have a good niche.
05:33:05 <elliott> i think there is a reddit for that.
05:33:39 <elliott> evincar: i can't think i'd ever browse it -- it sounds like a site of ads, admittedly user-controlled ads
05:34:04 <elliott> it's not a good idea to go out in search of software "just because".
05:34:15 <elliott> software should be built to serve a use and people who want that use should use the software.
05:34:25 <elliott> i am not sure i approve of the idea of showcasing software just because it exists.
05:34:34 <elliott> it's the kind of thing i expect from commercial software
05:35:09 <evincar> Right, but if you want people to work on your software with you, but aren't established yet, what do you do? Sourceforge and freshmeat and even slightly smaller sites such as Google Code and github aren't geared toward exposure for new projects.
05:35:12 <Sgeo_> You don't approve of showcasing PSOX?
05:35:37 * Sgeo_ finds a bridge to duck under
05:35:50 <elliott> evincar: The kind of people who would read the site are, I feel, not the kind of people who would make good software contributors.
05:36:06 <elliott> evincar: Also, contributing to software you don't have a need for is an exercise in half-assedness.
05:36:18 <elliott> Better is to find a community or group of people with the need, and look for contributors there.
05:37:03 <evincar> elliott: You can't say what sort of people would use the site until it's actually been run. (Never optimise without profiling?) And who says you'd contribute to software you don't have a need for? You'd contribute to software that interests you because you have a need for it.
05:37:32 <elliott> evincar: then the software developer should ask for contributors on a relevant forum
05:37:37 <evincar> Or even just see what the open-source community is up to and take a ride on the bleeding edge.
05:37:37 <elliott> basically you're saying that the usecase is
05:37:45 <elliott> programmer who has a need for X reads this site on a regular basis
05:37:51 <elliott> just happens to see some software that does X
05:37:53 <elliott> and decides to contribute
05:37:58 <elliott> this sounds like a very contrived usage scenario.
05:38:02 <elliott> <evincar> Or even just see what the open-source community is up to and take a ride on the bleeding edge.
05:38:05 <elliott> so software for software's sake.
05:38:41 <evincar> Yes, and gaining exposure, promoting good new ideas.
05:38:45 <catseye> i don't see how this is just about attracting contributors; users would also be part of the audience
05:38:52 <elliott> software for software's sake is the reason software sucks
05:38:54 <evincar> catseye: Right you are.
05:39:00 <elliott> catseye: because users already have a way of finding software to meet need X
05:39:16 <elliott> and it's called freshmeat, google, etc.; okay, they're not very *good*, but the basic model can be improved upon.
05:39:22 <catseye> sometimes users don't know what their "needs" even are
05:39:23 <elliott> this site would merely showcase new software
05:39:26 <catseye> no one *needs* a game
05:39:32 <elliott> catseye: ok, so have a site for games
05:39:47 <catseye> that was just an example
05:39:54 <elliott> catseye: what's your non-game example?
05:40:40 <catseye> do i need one?
05:40:46 <elliott> catseye: yes
05:40:51 <elliott> because games are very different from other software
05:41:54 <evincar> elliott: That's what tags are for. Let a folksonomy develop.
05:42:03 <elliott> "folksonomy" please never use this word...
05:42:04 <evincar> Also, I'm just doing this for school, as an experiment. If it takes off, bully.
05:42:08 <elliott> evincar: ok, so it's basically freshmeat?
05:42:16 <evincar> elliott: WEB 2.0 AJAX CLOUD
05:42:25 <elliott> with a semi-pointless top list of all projects
05:42:28 <elliott> sort of thing
05:43:05 * elliott yawns
05:43:13 <elliott> Must. Stay. Awake. To. Normalise. Sleep. Schedule.
05:43:50 <evincar> elliott: Yes, but with subtly different motivation and approach, and not targeted toward just "unix and cross-platform" software.
05:44:12 <elliott> uhm i just saw a piece of software on freshmeat that was windows/os x only.
05:45:08 * elliott pumps more liquid sugar + caffeine into system
05:45:08 <elliott> must
05:45:09 <elliott> stay
05:45:09 <elliott> awake
05:45:12 <evincar> *blinks*
05:45:18 <elliott> I blink a lot!
05:45:30 <evincar> So...only Windows or OSX. That crosses two platforms, one of which is Unix-based.
05:45:39 <elliott> ok so basically you want windows-only software too
05:45:43 <elliott> or uhhhh HAIKU!
05:45:46 <elliott> OS/2!
05:45:47 <elliott> DOS!
05:46:40 <evincar> It's more like Ohloh, except less like a wiki and more like Twitter.
05:46:56 <evincar> And no, I'm not just trying to sound "Web 2.0" here. I think it's got it's place.
05:47:02 <catseye> good luck on your project, evincar. hope you get a good grade
05:47:13 <catseye> good night
05:47:16 <elliott> catseye: i'm not trying to disparage his work or anything
05:47:16 <evincar> catseye: Cheers, that's all I'm asking.
05:47:23 <elliott> i'm just critiquing the idea from a standalone viewpoint
05:47:25 -!- catseye has quit (Quit: leaving).
05:47:27 <evincar> elliott: I realise that. I'm glad for the critique.
05:47:37 <elliott> evincar: the thing you're missing, i think, is that twitter is a vast cloud of meaningless noise :)
05:47:48 <elliott> evincar: what you have said sounds a *lot* more like reddit to me than twitter btw
05:47:59 <evincar> Yes, but a *very active* vast cloud of meaningless noise.
05:48:04 <elliott> evincar: i guess, you could say that what you want is the reddit to freshmeat's slashdot.
05:48:11 <elliott> /ohloh
05:48:13 <evincar> Hhgrrr.
05:48:13 <elliott> is this accurate?
05:48:19 <evincar> Parsing analogy...
05:48:31 <elliott> evincar: freshmeat's descriptions of software are very long and it's "heavy-weight"
05:48:37 <evincar> Right.
05:48:39 <elliott> no user input as to the order of things on the front page
05:48:40 <elliott> etc.
05:48:45 <evincar> So, yeah, basically.
05:48:48 <elliott> whereas you want short descriptions and user control
05:48:51 <elliott> ok
05:48:53 <evincar> Very user-driven, yes.
05:48:58 <elliott> well, if you pull it off, it might be worthwhile
05:49:00 <evincar> Centred around the idea of building a community.
05:49:02 <elliott> i don't think i'll use it though :)
05:49:10 <evincar> Hey, whatever. You'll know about it.
05:49:14 <evincar> That's important, too.
05:49:21 <elliott> but then, hey, i don't even like using most software that isn't mine
05:49:32 <elliott> because i'm a cynical bastard and hate software
05:49:41 <elliott> man what the hell am i going to be like when i'm 20
05:49:44 <evincar> Oh, you have Not Invented Here Disorder? :P
05:49:48 <evincar> elliott: How old are you?
05:49:48 <elliott> *Syndrome
05:49:52 <elliott> it's a syndrome!
05:49:58 <elliott> evincar: 15 and sleepy.
05:50:02 <elliott> (sleepiness is part of age, i swear)
05:50:17 <evincar> I was trying to coin a new term. The Syndrome refers to a company doing it. :P
05:50:24 <evincar> In addition to a person.
05:50:58 <evincar> Well, I'm 19, and way less cynical than I was when I was 15.
05:51:03 <elliott> evincar: I do have NIH but I also have a separate hatred of most software :)
05:51:12 <elliott> Bring back Lisp machines! or don't, because they were flawed, but
05:51:16 <elliott> sure as hell better than what we have today
05:51:26 <elliott> thanks apple! thanks microsoft! thanks ib motherfuckin' m!
05:51:29 * elliott yawn
05:51:39 <evincar> You're cheeky. How long've you been awake?
05:51:53 <elliott> since uh
05:51:56 <elliott> 17:00 or so
05:51:58 <elliott> maybe 17:30
05:52:03 <evincar> And what time is it there now?
05:52:04 <elliott> it is now 04:51
05:52:15 <elliott> I plan to stay awake until 00:00 or so
05:52:20 <elliott> I'm normalising! hahahaha yeah right
05:52:35 <evincar> I was going to say "that's not so bad", but it's not not so bad.
05:52:45 <evincar> But it's not *so* bad.
05:52:47 <elliott> i should have gone to bed about, uh, now, but my probable sleeping disorder hates me
05:52:56 <elliott> todo: melatonin
05:52:58 <evincar> And your urge to drink caffeine.
05:53:08 <elliott> evincar: in *this* case it's intentional
05:53:18 <elliott> to stop me falling asleep before i want to
05:53:26 <elliott> which would be disastrous
05:53:37 <evincar> Well, it's just before 1:00 here, and I'm going strong since I woke up late today.
05:53:59 <elliott> I'm not actually as tired as it seems.
05:54:09 <evincar> And spent the rest of the day catching up on homework for the class I missed this morning.
05:54:10 <elliott> I was a little while ago, but I've perked back up.
05:54:22 <elliott> I intend to eat a damn good breakfast when it's morning to propel me through the day.
05:54:24 <elliott> Porridge, perhaps.
05:54:41 <evincar> I may take a run to the store and get an energy drink before it closes in an hour.
05:54:57 <evincar> Not sure, though, since I have 7 hours of class ahead of me.
05:55:05 <elliott> (related fun fact to a few lines ago -- melatonin is actually prescription only in the uk! can you believe that? if i cared about stupid laws like that, i'd need a *prescription* to legally own a hormone present in my own body at all times)
05:55:25 <evincar> (Wow.)
05:55:37 <elliott> australia too
05:55:44 <elliott> in the us, it's not even a drug, it's a "dietary supplement" :)
05:55:50 <evincar> And I'm a lightweight, so half your typical energy drink, plus plenty of water, is more than enough to keep me awake for an extra 24 hours.
05:56:02 <elliott> evincar: yeah i should probably down one of those ridiculously unhealthy new "shot" energy drinks
05:56:15 <elliott> that taste like blended batteries
05:56:21 <elliott> round about now
05:56:24 <elliott> but, have none!
05:56:40 <elliott> my liver hates me
05:56:48 <evincar> Well, US law has some issues with drug laws. If you label it as a "supplement" it doesn't need to be evaluated under the Food and Drug Administration's stringent pharmacological requirements.
05:56:57 <elliott> "dos2unix $1 &> /dev/null && \
05:56:57 <elliott> unix2dos $1 &> /dev/null && \
05:56:57 <elliott> notepad $1 && \
05:56:57 <elliott> dos2unix $1 &> /dev/null &"
05:56:59 <elliott> there are no words
05:57:11 <evincar> So vitamins and homeopathic remedies are all labelled accordingly.
05:57:16 <elliott> evincar: yeah, that's why melatonin is such too
05:57:28 <elliott> I love the idea of FDA evaluating a natural hormone to see if it's safe.
05:57:52 <elliott> "As melatonin has been determined unfit for pharmaceutical use, its production is now prohibited. Consequently, reproduction is now illegal."
05:58:25 <evincar> Well, hormones aren't the worst things to mess with, but messing with them *is* messing with yourself.
05:59:15 <elliott> evincar: well, yeah. low melatonin levels aren't uncommon though, and i found several studies a while back
05:59:20 <elliott> one, in short term adult use -- no side effects at all
05:59:25 <elliott> another, in *long term* *child* use -- no side effects at all
05:59:29 <evincar> If I take growth hormones along with an exercise regime, I'll become far more bulky than I would just exercising normally.
05:59:47 <elliott> and the side effects are "you get a headache and oversleep"
05:59:48 <evincar> Right, melatonin in particular is benign.
05:59:49 <elliott> of an overdose
05:59:54 <elliott> so uh, i'd have trouble thinking of a scenario in which bad things would happen :)
05:59:57 <elliott> yeah
06:00:04 <evincar> Uh, miss an important event?
06:00:11 <evincar> :P
06:00:20 <evincar> That's so serious compared to, y'know, meth.
06:00:41 <elliott> METH + MELATONIN
06:00:43 <elliott> CRAZIEST SLEEP EVER
06:03:18 <evincar> I dunno, I've had some pretty crazy sleep.
06:03:33 <evincar> Then again, I'm all about fucking with the relationship between sleep, waking, madness, and death.
06:03:42 <elliott> i am totally not about that
06:03:57 <elliott> i do not like blurring the line between waking and death :)
06:03:58 <evincar> Well, I'm fond of existential bullshit. It's a hobby.
06:04:05 <elliott> i can tell
06:04:45 <evincar> Sometime, if you get the chance, you ought to stay awake for a few days. It's a very interesting experience.
06:04:57 <elliott> evincar: my max was about 40 hours
06:05:06 <elliott> i almost physically collapsed
06:05:58 <evincar> I think my record was pushing 70, which is still nothing compared to, say, the world record.
06:06:31 <elliott> the world record probably ended in death
06:07:03 <evincar> http://en.wikipedia.org/wiki/Randy_Gardner_%28record_holder%29
06:07:12 <evincar> Not so! And he was only 17.
06:07:24 <elliott> oh man high school student
06:07:27 <elliott> i hope it was in school term
06:08:02 <elliott> [["I wanted to prove that bad things didn't happen if you went without sleep," said Gardner.]]
06:08:07 <evincar> Guinness has officially stopped keeping records of things that are too dangerous for their legal department. :P
06:08:09 <elliott> evincar: what a way to justify your all-nighters to your mother!
06:08:20 <elliott> that's so why he did it
06:08:21 <evincar> Well, he did end up hallucinating.
06:08:23 <elliott> i refuse to accept any other explanation
06:08:30 <evincar> In reality, the hallucinations are very much like dreams.
06:08:54 <elliott> evincar: if you're experiencing them, it's probably microsleep
06:09:34 <evincar> Probably, yes, but for all measurable purposes you're still awake.
06:10:07 <elliott> evincar: not if you're driving
06:10:16 <elliott> http://en.wikipedia.org/wiki/Waterfall_rail_accident microsleeps were a factor in this
06:10:20 <evincar> Oh god, by the way, NEVER do that.
06:10:39 <elliott> what, drive? ok :
06:10:40 <elliott> :P
06:10:46 <Sgeo_> Thanks
06:10:47 <evincar> I have been falling asleep while driving, and it's...just not worth whatever you're driving for.
06:10:53 <Sgeo_> I was already scared of learning to drive
06:11:00 <Sgeo_> I don't have a good sleep cycle
06:11:08 <elliott> microsleeps only happen after sleep deprivation
06:11:19 <elliott> protip: if you're tired DON'T FUCKING DRIVE MORON
06:11:21 <elliott> this goes for everone
06:11:23 <elliott> *everyone
06:11:32 <Sgeo_> elliott, does sleeping for 5 hours or less a night count as sleep deprivation?
06:11:36 <Sgeo_> Also, I fully agree
06:11:39 <evincar> Sgeo_: Driving is perfectly safe as long as you don't think about the fact that it's horrifically, phenomenally dangerous.
06:11:40 <elliott> no
06:11:46 <elliott> being awake for like 18 hours or more counts
06:11:58 <elliott> evincar: i hate the road system etc.
06:12:17 <Sgeo_> But what if I plan a schedule around being able to drive, then fail to get enough sleep, and am tired, but can't do public transportation?
06:12:18 <elliott> even this little town is built entirely around these ridiculously dangerous machines driven by people who get angry so easily
06:12:26 <elliott> road rage is an indicator that driving is not good psychology...
06:12:29 <elliott> *psychologically...
06:12:36 <elliott> and they rule the town!
06:12:47 <elliott> fuck people, let's just have them stand and wait for the lethal machines to slow down!
06:12:49 <elliott> bah.
06:13:29 <elliott> evincar: "and state that the Guinness World Records record is 449 hours (18 days, 17 hours) by Maureen Weston, of Peterborough, Cambridgeshire in April, 1977, in a rocking-chair marathon."
06:13:30 <Sgeo_> I'd say something about requiring the operators of the machines to be properly trained and certified, but that obviously doesn't work
06:13:37 <evincar> I like bicycles.
06:13:38 <elliott> Sgeo_: they sort of do that
06:13:46 <elliott> bicycles are nice if you're into that kind of thing :)
06:13:52 <evincar> I'm into a lot of things.
06:13:57 <Sgeo_> elliott, I know. And obviously people still do stupid things
06:14:01 <elliott> evincar: What a modern, humane city should do is this:
06:14:02 <evincar> Seriously, I'm interested in way too many things.
06:14:18 <elliott> evincar: Build it for people walking around and bicycles. Roads go to the *side* of everything else, crossings should be kept to an absolute minimum.
06:14:23 <elliott> STRICT policy of people taking priority.
06:14:27 <Sgeo_> That's why I said "that obviously doesn't work"
06:14:41 <elliott> Ideally, let there be no clear road/people space boundary on the road areas: there is no place that cars "own".
06:14:47 <elliott> People are there all the time, so drivers have to go slower.
06:14:57 <elliott> And keep it away from anywhere where people live, because of the damn noise!
06:15:02 <elliott> evincar: And then, to meet the needs of everyone:
06:15:15 <Sgeo_> Unless there are few people walking around at night, then drivers speed up, but there is one person walking there...
06:15:15 <elliott> evincar: Very regular entrances into a fast, underground railway system.
06:15:25 <elliott> evincar: Should never be more than five minutes away from a station.
06:15:28 <elliott> Problem solved!
06:15:36 <evincar> elliott: What you're describing is to be found in parts of India, I think.
06:15:47 <evincar> Less the underground, not sure.
06:16:05 <evincar> CLEAN, on the other hand...
06:16:25 <elliott> City is free of noise pollution, you can walk around nicely, bicycles have lots of open space to ride in, people who really want to use cars to get into the city or whatever can go via the to-the-side roads, and inside the city, non-bicyclists who want to go a long distance can just hop on the tube.
06:17:12 <Sgeo_> microsleep can last for 30sec?
06:17:14 <elliott> evincar: Oh, and of course, for inter-city transport, you have fast railways -- think Japan -- and also long motorways.
06:17:15 <Sgeo_> o.O
06:17:46 <evincar> elliott: Brave New World.
06:17:54 <pikhq> elliott: Randy Gardner's not-sleeping was in the name of science.
06:18:04 <elliott> evincar: Is that meant to be a rebuttal?
06:18:09 <pikhq> elliott: I hope he got an A for it.
06:18:19 <elliott> pikhq: F for Fucking Insane.
06:18:29 <evincar> elliott: It depends on whether you like socialism without free-market-driven progress.
06:19:16 <elliott> evincar: Okay -- so basically you see something you consider evil socialism, and immediately reply "Gee, Huxley", with no apparent justification or meaning.
06:19:28 <elliott> Is the invisible hand obscuring your vision?
06:20:54 <evincar> elliott: No, I see something I consider good, beneficial socialism, and Immediately reply "Gee, Huxley", leaving it to you to provide your own justification as to whether you think it's a good thing or not, and relying on the self-evident meaning in invoking his work.
06:21:07 <elliott> OK.
06:21:08 <elliott> The way I read
06:21:09 <elliott> <evincar> elliott: It depends on whether you like socialism without free-market-driven progress.
06:21:10 <elliott> was
06:21:14 <elliott> "Fuck you, free markets!"
06:21:28 <evincar> Hah, no. I meant it's only a rebuttal if you disagree with me. ^_^
06:21:55 <elliott> evincar: It's a very slippery-slope argument, to go from government-funded transport and city organisation to a futuristic, hedonistic dystopia.
06:22:12 <elliott> I mean to use the book as a keyword for it.
06:22:26 <elliott> evincar: Anyway, who said the railways weren't run by corporations? :)
06:22:56 <Sgeo_> I have this... thing, as a child, and still a little now, where if I didn't put my hand on my chest, I'd be worried about whether or not my heart's still beating
06:23:06 <elliott> evincar: As for market-dictated city plannings... take a look at New York's power grid in the 1890s, on the left: http://www.loper-os.org/wp-content/wires.jpg
06:23:27 <evincar> elliott: Maybe I don't consider hedonism inherently evil. I think the only problem with that world (other than those the book addresses, the loss of culture, etc.) is that a free market, or some form of competition is necessary for social progress because it provides the motivation for people to innovate.
06:23:42 <elliott> I am very sceptical of the idea that unrestrained markets can develop all beneficial social institutions. :)
06:23:55 <elliott> evincar: I approve of the idea of a market with competition; however, I do not approve of the idea of an unregulated one.
06:24:06 <evincar> elliott: That's fair.
06:24:22 <evincar> Sgeo_: I used to have something similar. I also didn't believe my heart beat while I slept.
06:24:30 <elliott> Unregulated free-market capitalism is basically corporatism, sadly, and the political power of your dollar falls down after a corporation becomes big enough.
06:25:16 <elliott> Free market supporters seem to say "well, corporations won't get big enough!" and then when all the instances of unregulated corporations get big enough are presented, they say "well, that market wasn't *totally* free" as if somehow, increasing the freedom of a market makes it more and more terrible until it's totally free, at which point it becomes perfect.
06:25:31 <Sgeo_> Your heart is now beating manually.
06:25:43 <elliott> Sgeo_: It isn't, but I'm now breathing and blinking manually.
06:25:46 <elliott> Which I am too tired to do!
06:26:44 <elliott> evincar: I also think that absolute pure anarcho-capitalism is possibly the worst thing that could happen.
06:27:16 <elliott> Because when you go that far down the rabbit hole, you start having to pay a corporate police force to protect you. And if they don't want to get involved and you die, well... who's gonna stop them?
06:27:39 <evincar> elliott: I sort of resent the term "free" applied to the free market, because it *means* "free" as in "unrestricted", but it *implies* "free" as in "freedom", which proponents use to their subtle advantage in promoting it, as though a non-free market inherently bars people from their inalienable right to buy and sell shit in an unregulated fashion.
06:27:50 <elliott> evincar: Fully agreed.
06:27:58 * Sgeo_ would love it if some form of anarchy could be made to work well
06:28:00 <elliott> evincar: It is one of those loaded terms like "pro-life"/"pro-choice".
06:28:01 <Sgeo_> But I highly doubt it
06:28:18 <evincar> Sgeo_: Chaos coalesces into order and might makes right.
06:28:22 <coppro> Libertarianism is an interesting study, but I don't think it would work
06:28:26 <elliott> Sgeo_: Anarchy could probably work with technology.
06:28:39 <Sgeo_> evincar, it's more that I hate centralization
06:28:42 <elliott> Nobody's fully realised, yet, just how much the Internet change everything.
06:28:44 <elliott> *changes
06:28:45 <evincar> elliott: My jargon meter just went off. Care to elaborate?
06:28:52 <elliott> evincar: To which line?
06:28:58 <evincar> elliott: Both, actually.
06:29:14 <coppro> elliott: in your specific example, however, if news got out that a police force was not providing protection, it would lose customers
06:29:20 <coppro> or at least so the libertarian theory goes
06:29:20 <evincar> Sgeo_: I recall someone saying "You'll be hailed as an innovator if you centralise everything that's decentralised, and decentralise everything that's centralised."
06:29:32 <elliott> coppro: and what if the police force decided to club the valiant reporter to death?
06:29:39 <Sgeo_> That sounds Scott Adams-esque
06:29:43 <elliott> Suddenly they're clubbing all their opponents to death, and they are the only one with power.
06:29:51 <elliott> Guess what that is?
06:29:53 <coppro> elliott: then the other police forces have to intervene
06:29:57 <elliott> Totalitarianism.
06:30:00 <coppro> but this shouldn't happen
06:30:01 <elliott> coppro: This one happens to be the biggest.
06:30:04 <elliott> So it wins.
06:30:06 <coppro> because the police forces don't want to fight
06:30:19 <coppro> elliott: There are enough so that no single one is big enough to take on the rest
06:30:20 <elliott> coppro: Exactly -- so when one of their clients is about to get brutally murdered, they don't get involved.
06:30:31 <elliott> coppro: Yes, I am not convinced there would be enough.
06:30:37 <elliott> Also: Police fighting police would be interesting.
06:30:39 <coppro> elliott: Neither am I
06:31:18 <elliott> evincar: I am trying to find a little blog post I find explains my pipe-dream rather well.
06:31:28 <coppro> elliott: But the idea goes that let's suppose police force A is about to kill police force B's client.
06:31:47 <coppro> elliott: police force B tells police force A of this, and rather than fight, they settle it (ideally with an independent adjudicator)
06:31:55 <elliott> evincar: http://r6.ca/blog/20050621T184100Z.html I don't agree with this entirely; direct democracy scares me. But it's an illustration, albeit incomplete and flawed, of how technology can change social structures...
06:32:03 <coppro> that's where the system breaks down in my mind
06:32:21 <elliott> coppro: right
06:32:21 <coppro> insurace comapnies show that adjudication like that is dangerous
06:32:47 <elliott> like governments, corporations are something everyone should innately distrust
06:32:50 <coppro> elliott: Oh man, that funding rule
06:32:58 <elliott> with anarcho-capitalism... this becomes more or less impossible
06:33:01 <coppro> That rule nearly brought down the government in 2008
06:33:16 <coppro> elliott: but I have inteded to raise the point with a libertarian friend
06:33:16 <elliott> coppro: Are you pro or against? :)
06:33:28 <elliott> (The funding rule; I know nothing of it.)
06:33:33 <coppro> elliott: Undecided
06:33:43 <coppro> the part that nearly brought down the government was that they tried to get rid of it
06:33:47 <elliott> "Parties get funding related to the number of votes they get, and corporate donations have been all but eliminated." -- this, in its pure form, sounds wonderful to me.
06:33:52 <coppro> and the opposition parties were like "no"
06:33:57 <coppro> ah, yeah
06:34:01 <coppro> that part is good
06:34:29 <coppro> of course, they aren't gone entirely
06:34:44 <coppro> and that's probably why the Cons wanted to repeal that provision - they are fans of corporations
06:35:01 <coppro> err
06:35:02 <coppro> yes
06:35:08 <coppro> what I said is right
06:35:22 <coppro> I don't think the rest is necessarily right
06:35:40 <coppro> It will reduce the degree to which government decisions are made at arm's length from the population, hopefully
06:35:48 <coppro> but they won'd be made solely by the people
06:35:55 <elliott> coppro: As you are Canadian, I want to share another thing Russell O'Connor has done:
06:35:58 <coppro> *won't
06:36:20 <coppro> in other news, the Pirate Party approved our first official candidate today!
06:36:41 <elliott> coppro:
06:36:41 <elliott> http://r6.ca/blog/20040603T005300Z.html
06:36:42 <elliott> http://r6.ca/blog/20060122T172700Z.html
06:36:42 <elliott> http://r6.ca/blog/20060125T200600Z.html
06:36:42 <elliott> http://r6.ca/blog/20060217T201200Z.html
06:36:42 <elliott> http://r6.ca/blog/20081016T174811Z.html
06:36:43 <elliott> http://r6.ca/blog/20081107T061447Z.html
06:36:46 <coppro> ow
06:36:48 <elliott> coppro: read from top to bottom (they're short)
06:36:51 <elliott> they're short :P
06:36:59 <coppro> oh man true timestamps
06:37:01 <coppro> I am a fan
06:37:11 <elliott> coppro: of course, as it says, the votes that the simulated elections are run with aren't accurate
06:37:15 <elliott> coppro: since they include tactical votes
06:37:23 <elliott> coppro: but in a stochastic system, tactical votes would not be beneficial at all
06:37:29 <elliott> coppro: and so the votes made would be different and the outcome different
06:37:40 <elliott> coppro: still -- the idea is *very* intriguing and as a Canadian you may find the results interesting :)
06:37:45 <coppro> elliott: BUT WHAT ABOUT THE COMMUNIST PARTY
06:37:58 <elliott> of course the probability of it ever being adopted is *zero* because stupid people don't understand probability
06:38:13 <elliott> *!"
06:38:19 <elliott> but yeah, read those posts :)
06:39:32 <coppro> elliott: interesting
06:39:41 <coppro> especially in the context of Canada
06:39:52 <coppro> where our governments have a surprisingly strong 'old boss same as new boss' tendency
06:40:04 <elliott> yeah, you guys have a bit of a depressing political system
06:40:06 <elliott> beats the usa though
06:40:27 <elliott> coppro: don't you want to swap new and old there? :)
06:40:47 <coppro> elliott: does it matter?
06:40:52 <elliott> evincar: i like how since coppro's started talking it's changed from a mainly me and you conversation into a mainly me and coppro conversation
06:40:54 <elliott> coppro: no, but it reads better :)
06:41:05 <coppro> and actually, the strong consistency does have its benefits
06:41:08 <coppro> namely, consistency
06:41:08 <elliott> coppro: and as it is there it makes it look like you're going back in time
06:41:29 <coppro> we also have a hell of a public service that typically the government listens to (except, apparently when it regards the census)
06:41:36 <evincar> coppro: Whether the independent adjudicator is independent, corporate, or government, it still must exist. The system doesn't "break down" per se.
06:42:22 <coppro> evincar: The problem is that the libertarian idea is removing a single point of failure
06:42:26 <elliott> coppro: what public service are you referring to? tired :)
06:42:33 <coppro> elliott: Canada's
06:42:39 <elliott> coppro: i mean, which... i mean name
06:42:40 <elliott> uh
06:42:44 <elliott> my thoughts are becoming incoherent! \o/
06:42:45 <myndzi\> |
06:42:45 <myndzi\> /'\
06:42:49 <elliott> coppro: btw, it's not the libertarian idea
06:42:50 <coppro> elliott: uh, the public service?
06:42:55 <elliott> ohhh i misparsed
06:42:57 <elliott> it's the anarcho-capitalist idea
06:42:58 <elliott> or ancap
06:43:07 <elliott> libertarian is anarcho-capitalist with a police force and military :)
06:43:13 <elliott> which is significantly difference
06:43:14 <elliott> *different
06:43:17 <coppro> no
06:43:19 <elliott> as the government claims a monopoly on coercive force
06:43:31 <coppro> but in any case
06:43:33 <elliott> which is less dangerous (but still shitty for other reasons)
06:43:35 <elliott> coppro: no to what?
06:43:41 <evincar> elliott: The government *is* the bastion of coercive force, effectively.
06:43:49 <elliott> yes, but --
06:43:53 <coppro> your assertion that libertarianism has a single police force and military
06:43:58 <elliott> in an ancap situation, you have multiple competing police forces
06:44:00 <coppro> IN ANY CASE
06:44:03 <elliott> in a libertarian situation, you have one police force
06:44:12 <elliott> coppro: it's true! that's what differentiates the two
06:44:16 <elliott> libertarian has a minimal government
06:44:21 <elliott> ancap is anarchy -- no government by definition
06:44:38 <coppro> with multiple competing police forces, you can avoid conflict because it is not in the police forces' interest to have direct conflict
06:45:11 <coppro> however, there will be a small number of police forces (let us suppose for the sake of the argument that the number of significant forces is at least in the tens, which, given human nature, is unlikely but possible)
06:45:20 -!- augur has quit (Remote host closed the connection).
06:45:45 <evincar> elliott: I can actually see ancap working out if it had sufficient time to incubate before being subject to external influences. If they need to defend from invasion, they band together to do it and disband when it's over, on the principle that everyone does fine individually but everyone benefits from not getting royally fucked over by another country.
06:45:53 <coppro> Initially, each police force might resolve differences with each other force differently
06:45:59 <elliott> even aside from the unstable society
06:46:08 <elliott> ancap would be inhumane
06:46:20 <elliott> Can't find work in a, by definition, ridiculously competitive work environment?
06:46:22 <elliott> YOU DIE!
06:46:29 <elliott> Got cancer? FUCK YOU, PAY UP!
06:46:32 <coppro> however, a single force would gravitate towards increasing efficiency and consistency by adopting a single system of dealing with other police forces
06:46:34 <elliott> Can't afford food? Why not starve?
06:46:54 <coppro> elliott: part of ancap relies on the existence of private philanthropists
06:46:58 <elliott> (and no, charities can't just wish for donations and solve it all... when money is that important, how many people will give it up for others?)
06:47:06 <evincar> elliott: Actually, it depends on what you consider "society". Sure, leadership and governance and that would all be ad-hoc and arbitrary. But the stability of a social situation depends largely on the morals of the people involved, and almost all people basically work under the principle "don't be a jerk".
06:47:10 <elliott> coppro: sure... i don't think they'd be nearly common enough.
06:47:16 <elliott> evincar: haha
06:47:21 <coppro> elliott: If it became a social norm for rich people, it might
06:47:23 <elliott> evincar: I would love to believe that people are fundamentally nice.
06:47:31 <elliott> But no, sorry, selfishness takes over at some point.
06:47:45 <coppro> but in any case, as the police forces gravitate towards a single system, this system eventually becomes your single point of failure
06:47:49 <evincar> elliott: I never said that people are fundamentally nice, but it's also absurd to claim that there's anything fundamentally *wrong* with people.
06:48:11 <elliott> evincar: there isn't. selfishness is just a fact
06:48:29 <elliott> and a sane governmental system uses this to its advantage, and stops it being dangerous
06:48:40 <elliott> it lets it be expressed in a capitalist system so we get innovation and nice things
06:48:43 <coppro> elliott: according to wikipedia, we're both wrong
06:48:46 <elliott> but it stops it interfering with people's wellbeing
06:48:55 <evincar> elliott: Of course, look at, oh, ecology. You're selfish to the extent that you can be without destabilising the system around you. Anything that causes the system to become unstable eliminates itself automatically.
06:48:57 <coppro> anarcho-capitalism is a subset of libertarianism
06:49:00 <elliott> coppro: well, yse
06:49:02 <elliott> *yes
06:49:07 <elliott> coppro: like nazism is etc.
06:49:10 <elliott> well not that extreme
06:49:14 <elliott> but ancap is basically libertarianism to the max
06:49:35 <elliott> evincar: of course, but society doesn't have the same sort of safeguards as nature really
06:49:52 <coppro> elliott: no, you were clear on libertarianism supporting minimal state
06:49:52 <coppro> but that is not necessarily true
06:49:52 <coppro> btw, it is in fact okay to admit wrongessness once in a while
06:49:58 <elliott> coppro: well, i mean
06:50:02 <elliott> if someone says
06:50:06 <elliott> "I am a libertarian."
06:50:08 <evincar> elliott: Interesting to note that libertarianism is a strict superset of ancap. But isn't every set a superset of the empty set?
06:50:12 <elliott> as their entire political philosophy
06:50:13 <elliott> that's what they mean
06:50:16 <elliott> coppro: "essn" wat
06:50:22 <Sgeo_> elliott was wrong?
06:50:24 <coppro> elliott: I have a counterexample
06:50:26 * Sgeo_ is crushed.
06:50:28 <coppro> elliott: *wrongnessness
06:50:36 <elliott> coppro: do you see the [007F]s?
06:50:40 <coppro> elliott: no
06:50:43 <elliott> I see:
06:50:45 <evincar> elliott: Society *does* have the same safeguards as nature *except* when totalitarian agriculture is involved.
06:50:50 <evincar> elliott: Read some Daniel Quinn.
06:50:52 <elliott> wrongess[007F][007F][007F]ness
06:50:56 <coppro> weird
06:51:02 <elliott> evincar: i know it has safeguards, just not the same
06:51:07 <elliott> anyway
06:51:13 <elliott> coppro: i do admit i'm wrong, i just don't think i was wrong here :)
06:51:32 <elliott> "libertarianism" as referring to a distinct place on the political spectrum is perhaps a loose use of terms, but it's obvious what i was using it to mean
06:51:45 <elliott> and it's the most useful definition of that term when used to define a specific point on the spectrum rather than a whole spectrum in itself, in my opinion
06:52:08 <coppro> elliott: you are/were on a defensive "ohshithesgotfactsthatcontradictmyviewmustmitigatelosses"
06:52:17 <coppro> I know this because I do this all the time, so I can recognize it
06:52:17 <evincar> Can I just say that I'm experiencing a nerd head rush from carrying on a lucid, sophisticated, intellectual conversation with people who seem to be largely my junior?
06:52:26 <coppro> evincar: yes
06:52:32 * evincar says so.
06:52:34 <elliott> coppro: perhaps i am acting the same as if i was, but actually, i had *already loaded the wikipedia page* long before you mentioned it
06:52:43 <elliott> coppro: and i stand by my usage of the terminology in this case
06:52:47 <coppro> elliott: then my statement goes double
06:53:03 * coppro pops this conversation
06:53:05 <elliott> coppro: whatever, i'm uninterested in arguing the point -- but i have always used the term libertarian to mean two things, the philosophy and the particular point
06:53:12 <elliott> coppro: and i am not going to stop doing that, because many people do
06:53:14 <elliott> e.g. Libertarian Party
06:53:16 <elliott> of USA
06:53:19 <elliott> uses it in that sense
06:53:40 <elliott> besides, arguments about terminology are *stupid*, there aren't any facts in terminology whatever wikipedia says imo :) and that goes for *every* term
06:53:44 <elliott> there's just what's most useful
06:53:45 <elliott> but yes
06:53:47 <elliott> pop conversation
06:53:53 <elliott> <evincar> Can I just say that I'm experiencing a nerd head rush from carrying on a lucid, sophisticated, intellectual conversation with people who seem to be largely my junior?
06:53:59 <elliott> heck, what about me? i'm sleep-deprived
06:54:11 <elliott> it's not quite a head rush so much as a... head the-bends
06:54:16 <evincar> elliott: Right you are. That says nothing of the actual members of the Libertarian Party, however...there's a large congregation of them here in the Northeast, and they're known for causing a certain amount of trouble, politically and legally.
06:54:17 <elliott> woo i'm monologuing
06:54:21 <coppro> evincar: how old do you think I am?
06:54:38 <evincar> coppro: I have no idea. In your twenties, probably?
06:54:38 <elliott> coppro has always been 16 and always will be
06:54:44 <elliott> coppro's 18 :p last i checked
06:54:46 <elliott> which was never
06:54:47 <elliott> i think 18
06:54:48 <elliott> i forget
06:54:54 <evincar> Ah, still younger than me then, if you're right.
06:55:00 <evincar> I was playing it safe.
06:55:09 <coppro> elliott is correct
06:55:09 <elliott> don't take my word for it i don't actually know
06:55:13 <elliott> ok take my word for it :P
06:55:23 <elliott> i was extrapolating from in high school recently + then in university
06:55:32 * evincar takes coppro's word that elliot's word is correct.
06:55:47 <elliott> TWO TS
06:55:49 <evincar> So yeah, I'm the geezer in here.
06:55:52 <evincar> Unless Sgeo_ is older.
06:55:54 <elliott> http://tvtropes.org/pmwiki/pmwiki.php/Main/BerserkButton
06:56:06 <elliott> Sgeo_ is 20 or 21, although i find it almost impossible to convince myself of this fact
06:56:10 <elliott> 20 i think
06:56:23 <evincar> Ah. Well, fairly typical IRC age range, then.
06:56:31 <evincar> Then again, I might be biased.
06:56:40 <elliott> evincar: you were in here in 2008 right?
06:56:44 <evincar> The only chats I've ever joined have to do with deep, heady things.
06:56:48 -!- augur has joined.
06:56:49 <evincar> Yeah, 2007 or 2008.
06:56:51 <elliott> i talked to you when i was 12! hahaha! although i was a bit of an idiot
06:57:01 <evincar> I think I remember that.
06:57:04 <elliott> ehird
06:57:09 <evincar> Hah!
06:57:10 <evincar> Yes.
06:57:16 <evincar> You were...precocious?
06:57:21 <elliott> evincar: aw great, now you've associated me with that guy :)
06:57:24 <elliott> why did i do that?
06:57:36 <coppro> in my view, part of the problem with libertarian groups in general is that they tend to contain both people who believe that the correct social structure has little/no government and are willing to carry on lucid, intellectual, well-thought-out arguments about why this is the case and how they intend to implement it.
06:57:39 <elliott> i've evolved from precocious to just being a dick
06:57:44 <elliott> in my defence, people are idiots
06:57:49 <elliott> (i'm not actually this misanthropic!)
06:57:50 <evincar> I am fully aware that people can evolve, my friend.
06:57:59 <coppro> *and people who just hate the fucking cunts in the motherfucking government
06:58:01 <evincar> I've changed drastically in the past month, since leaving my girlfriend.
06:58:06 <evincar> I am so much happier.
06:58:23 <elliott> coppro: i was so confused before you added that correction
06:58:26 <coppro> actually, the same goes for communist groups too
06:58:27 <elliott> i was like "..okay"
06:58:28 <elliott> *...
06:58:52 <coppro> people who believe that the correct social structure is one of very strong government... and a bunch of ditto marks
06:59:06 <coppro> btw, do you want a laugh?
06:59:08 <coppro> google canadian action party
06:59:15 <evincar> Ho ho.
06:59:26 * evincar knows about this already.
06:59:28 <elliott> it's interesting just how far apart and yet close statist communism and anarchic communism are
06:59:41 <elliott> and i am not entirely sure the transition from the first to the second could or would ever happen, ever :)
06:59:56 <coppro> evincar: are you Canadian?
07:00:05 <elliott> american, unless i'm mistaken
07:00:09 <elliott> i love answering other people's personal questions
07:00:14 <elliott> or at least, he's in america now
07:00:16 <elliott> ~HOSTNAME POWAH~
07:00:27 <elliott> coppro: canadian action party sound fun
07:00:28 <evincar> coppro: elliot's right, but living in New England gives me a pretty good sense of things, I think.
07:00:39 <evincar> I plan to move to Canada in a few years.
07:00:45 <elliott> TWO
07:00:46 <elliott> MOTHER
07:00:47 <elliott> FUCKING
07:00:48 <elliott> TS
07:00:58 <elliott> *ahem*
07:00:59 <elliott> anyway
07:01:12 <elliott> evincar: you should move to europe, it's nice here! (note: i am not in one of the nice parts of europe)
07:01:14 <evincar> elliott: That's what I get for mistyping, incorrectly correcting, and failing to just use tab-complete.
07:01:23 <elliott> although immigration into the EU is probably non-trivial
07:01:54 <elliott> coppro: one of our nationalist political parties has clearly read http://zapatopi.net/belgium/
07:01:55 <evincar> elliott: I'd like to live somewhere in the south of England, or in the north country of France.
07:02:25 <elliott> evincar: no. you do not want to live in england.
07:02:27 <elliott> evincar: trust me.
07:02:31 <evincar> elliott: Speaking French gives me a certain fraction of French nationalism, not to mention I have French Canadian heritage (though I hate Québécois accents.)
07:02:35 <elliott> evincar: maybe cornwall. but england: no.
07:02:46 <evincar> elliott: Go on...
07:02:59 <elliott> evincar: our political climate is horrible
07:03:04 <elliott> our weather is horrible
07:03:11 <elliott> we seem to have a ridiculous proportion of assholes in the population
07:03:17 <elliott> it's just not a very pleasant country :)
07:03:57 <evincar> elliott: How's the politics and culture surrounding gender identity and sexual orientation?
07:04:47 <elliott> you can have civil unions instead of gay marriage. there is a lot of homophobia and the like, and of course there is everywhere, but there's gonna be a lot more than in sweden or whatever
07:04:51 <evincar> elliott: Obviously, I'd've got more of an impression of this if I'd looked more seriously into living in the UK in the near future.
07:05:04 <elliott> i don't even know of any transphobia but then i don't know of much transphobia *anywhere* since it's such an ignored topic
07:05:10 <elliott> that i doubt most people even know of it
07:05:22 <elliott> evincar: i mean okay, generally people here are nice because... everywhere people are nice
07:05:30 <elliott> but uhh
07:05:37 <elliott> it's so hard to give a balanced idea of your own country!
07:05:46 <elliott> evincar: ok, you know how you're in the us, and top on your list of plans is "move outside the US"?
07:05:58 <evincar> elliott: Very true. I know a couple of transsexuals who also dress, and they can get by totally under the radar because people just don't know about it.
07:06:00 <elliott> because you don't want to do the interesting things in your life in the US?
07:06:08 <evincar> elliott: No, not as such.
07:06:13 <elliott> evincar: that's what you said! :p
07:06:14 <evincar> elliott: I mean, wait.
07:06:16 <elliott> more or less
07:06:23 <evincar> That was in response to the first thing.
07:06:26 <elliott> "I'm in the USA but I'm moving to Canada ASAP."
07:06:28 <evincar> No, I don't want to just escape the US.
07:06:36 <elliott> i'm wording this terribly
07:06:38 <elliott> fff tiredness
07:06:42 <elliott> evincar: ok what i'm trying to say is
07:06:48 <evincar> I only want to move to Canada because I like French culture and because there are tax incentives for game developers. :P
07:07:01 <evincar> And, y'know, socialised health care, recreational marijuana, whatever.
07:07:06 <elliott> so much for open source :)
07:07:19 <evincar> Not that I even smoke marijuana with any regularity or frequency.
07:07:55 <evincar> elliott: I love open source. I also love making money. The two are not incompatible. I'll release everything I can freely.
07:08:15 <elliott> i don't see many open source games with good sales
07:08:53 <evincar> elliott: There's nothing to say I can't release the source after the game has run its lifetime.
07:09:07 <coppro> Or you can release the engine and make the media proprietary
07:09:14 <coppro> (and the levelsets)
07:09:17 <elliott> coppro: http://www.youtube.com/watch?v=iulNvamNzeg#t=40s
07:09:19 <elliott> coppro: watch this for a laugh
07:09:27 <elliott> coppro: (start from the beginning if you have the attention span)
07:09:31 <coppro> DROD has experienced modest success under this strategy
07:09:36 <evincar> coppro: I do have a solid engine that I wouldn't even need to open-source, just make the API available and people would be pretty happy.
07:09:56 <coppro> evincar: even better from a financial point of view
07:09:56 <elliott> evincar: I oppose copyright, basically, so I can't support you I'm afraid :) but it's better than most game selling models at least.
07:10:15 <elliott> scratch the basically, i oppose copyright
07:10:26 <coppro> elliott: Do you oppose commercial copyright?
07:10:32 <elliott> coppro: clarify your term
07:10:41 <evincar> elliott: Intense speech.
07:10:52 <elliott> evincar: intense and idiotic :)
07:10:54 <coppro> elliott: copyright law used to prevent someone from making money off of another's work
07:11:06 <elliott> evincar: if you keep listening you'll eventually hear him saying that belgium is "not even a real country"
07:11:15 <elliott> which is possibly the funniest thing i've ever heard
07:11:18 <elliott> i repeat, http://zapatopi.net/belgium/
07:11:30 <evincar> elliott: "Basically a non-country".
07:11:34 <evincar> lolwut
07:11:36 <elliott> evincar: yeah, that
07:11:45 <elliott> evincar: read that page, it's amusing :)
07:11:55 <elliott> coppro: well. you already see GPL'd software being sold legally but shadily
07:12:01 <elliott> coppro: all over the place
07:12:09 <elliott> coppro: and while it's legal (sometimes not, but let's ignore that for now), it isn't a huge problem
07:12:15 <elliott> coppro: few people get suckered into it
07:12:21 <coppro> elliott: No, I mean something like me starting a bookstore where I sell other people's books at only the printing costs and never give the author a red cent
07:12:36 <elliott> coppro: that's basically like selling someone else's free ffmpeg wrapper.
07:12:43 <elliott> coppro: which happens. and is mostly legal
07:13:01 <elliott> coppro: but is not a problem
07:13:04 <coppro> elliott: the books in this case are not free for others
07:13:19 <coppro> elliott: so you are okay with creators being forced to compete with reproducers?
07:13:22 * Sgeo_ is 21
07:13:27 <elliott> coppro: yes they are; there's no copyright, so any book that is sold would just be reproduced online immediately
07:13:39 <elliott> coppro: let me find something pertinent for you
07:13:42 <coppro> elliott: Copyright exists.
07:13:51 <elliott> coppro: not in my hypothetical world, it does not
07:13:53 <evincar> elliott: I find it remarkable that your views on copyright are so liberal, after the discussion we just had.
07:13:59 <elliott> evincar: why?
07:14:22 <evincar> elliott: I perceive a contrast, but there may not actually be one.
07:14:30 <coppro> elliott: I accuse you of committing a fallacy
07:14:42 <elliott> <coppro> elliott: so you are okay with creators being forced to compete with reproducers?
07:14:44 <elliott> please read this http://diveintomark.org/archives/2009/10/19/the-point
07:14:50 <elliott> it's a very nice, and enlightened, view on these kinds of things.
07:14:56 <elliott> and is even to do with books!
07:15:20 <evincar> Ah, never mind, I was mistaken.
07:15:34 <evincar> Chalk it up to the hour or something.
07:15:37 <elliott> evincar: what contrast did you perceive, just of curiosity?
07:16:10 <evincar> Well, you were advocating rather strongly against anarcho-capitalism and libertarianism alike, no?
07:16:15 <coppro> elliott: It is that
07:16:27 <coppro> And I do believe that many creators will create for the joy of creating
07:16:30 <coppro> I sure do
07:16:31 <elliott> evincar: indeed
07:16:32 <elliott> evincar: indeed
07:16:35 <elliott> *drop one of those
07:16:41 <coppro> However, it is far easier to go about this creation if I'm paid for my work
07:16:43 <Sgeo_> elliott, but that's that one person's choice
07:16:49 <evincar> coppro: Creators gonna create.
07:16:52 <elliott> coppro: I still believe that a commercial incentive could be made to create creative works
07:17:08 <coppro> evincar: I do not have time to work on open-source stuff right now
07:17:16 <Sgeo_> Night all
07:17:30 <evincar> elliott: So I didn't take into account the capitalist aspect of that. I figured you'd like to be paid for your work, as a creative.
07:17:36 <elliott> coppro: off the top of my head -- this probably wouldn't work, but if i can generate possibilities off the top of my head this easily... -- creator makes several excellent works for free, gets a reputation -- and then operates a donation system: once I get N donations, you get a new film/whatever on [date]
07:17:37 <coppro> elliott: How, if the creative work will instantly be distributed free and thus become worthless?
07:17:45 <elliott> coppro: this probably would not work, but... it's an idea
07:18:07 <elliott> just because we can't think of something perfect yet (and for all i know someone already has) doesn't mean we should stop trying
07:18:15 <elliott> evincar: i'm a free culture hippie :)
07:18:20 <elliott> evincar: really it's all so... non-clear-cut.
07:18:22 <evincar> coppro, elliott: I think a balance like Creative Commons is really the solution here. :P
07:18:25 <coppro> elliott: fair... for now
07:18:33 <elliott> i'm not as sure as i portray myself
07:18:44 -!- Sgeo_ has quit (Read error: Connection reset by peer).
07:18:46 <elliott> evincar: even creative commons lets other people republish another's book and give them no money
07:18:50 <elliott> well, unless you count non-commercial
07:18:57 <elliott> which is a bad license IMO
07:19:04 <coppro> Personally, I would love to remove as much copyright as is possible
07:19:04 <elliott> (no-derivatives is even worse)
07:19:16 <coppro> but I believe it needs to be done with care
07:19:29 <elliott> yeah... for now i support the pirate party
07:19:43 <evincar> elliott: What's so bad about the non-commercial clause? I think it's reasonable to assert that work that you intend to be free ought to always remain free, even in derivative form.
07:19:43 <elliott> as wimpy and unrevolutionary as they have turned out to be, it's better than what we have now :)
07:19:52 <evincar> And even then, someone can always obtain the permission of the creator.
07:19:53 <elliott> evincar: you have mixed up free and Free
07:20:00 <elliott> an easy mistake, considering how stupid the terminology is
07:20:06 <elliott> try libre, it's obnoxious but will help sort out your sentence
07:20:17 <evincar> Ugh, I meant gratis, not libre.
07:20:27 <elliott> evincar: gratis for both of them?
07:20:29 <evincar> Yes.
07:20:37 <elliott> evincar: well.
07:20:44 <elliott> say someone has published a novel online
07:20:47 <elliott> and i want a printed copy
07:20:52 <elliott> i can easily go to lulu or whatever and make myself one
07:20:59 <elliott> but what if i want to give other people the opportunity to get one, too?
07:21:03 <elliott> there's no reason not to
07:21:09 <elliott> no reason to make other people to typeset it,
07:21:14 <elliott> go through the lulu process
07:21:15 <elliott> etc.
07:21:22 <elliott> so, i put it up for sale at lulu's *minimum price*
07:21:24 <elliott> i see not a cent of profit
07:21:35 <elliott> and people who want to read this free novel in print can do so for the cost of publishing it + some profit for lulu
07:21:39 <elliott> yet a non-commercial license forbids this
07:21:49 <elliott> i do not view this as a good thing: this forced duplication of effort
07:22:02 <elliott> indeed, "forced duplication of effort" summarises patents and proprietary software too!
07:22:07 <evincar> elliott: Valid example. Subvert it with an addendum. Legal language is, after all, language.
07:22:09 <elliott> you can't use this: you have to make your own. because i say so.
07:22:19 <elliott> evincar: you cannot make such an addendum meaningful
07:22:23 <elliott> it is very much a commercial use
07:22:29 <elliott> and people (lulu) are profiting from it
07:22:39 <elliott> making money off what is primarily someone else's work without permission
07:22:44 <elliott> yet it is not wrong, it is a good service to offer
07:22:53 <elliott> commercial use doesn't mean commercial *ab*use
07:23:05 <elliott> and you can't really distinguish the two when you get down to it, it is very subjective
07:23:07 <evincar> "NC except by permission", "NC except by (insert term defined as meaning 'derivative service' or some such)".
07:23:16 <coppro> elliott: actually, looking at NC, you could do that
07:23:22 <elliott> evincar: well, perhaps that would be better.
07:23:28 <elliott> of course it is still *definitely* not libre like this.
07:23:31 <coppro> to make it more funny, lulu would be violating copyright
07:23:32 <coppro> but you would not be
07:23:36 <elliott> coppro: heh
07:23:43 <elliott> coppro: but lulu will have TOS saying
07:23:47 <elliott> hey you can't make us violate copyright
07:23:49 <elliott> (in effect)
07:23:53 <elliott> so you'd be breaking lulu's rules
07:23:58 <coppro> elliott: Probably it will say you can't upload copyrighted material
07:24:00 <elliott> even if this isn't legally enforceable they could still drop you.
07:24:02 <coppro> or something like that
07:24:02 <elliott> yeah
07:24:07 * coppro goes to look
07:24:14 <elliott> evincar: a fundamental part of the definition of libre is that there is *no* discrimination due to fields of use
07:24:18 <elliott> evincar: that includes commercial.
07:25:02 <elliott> this is a nice conversation
07:25:22 <elliott> so often interesting conversations are bogged down in trivial, silly debates underlying a larger point you want to get to
07:25:32 <elliott> but we all seem to share some sort of bedrock of opinions which is helpful
07:25:34 <evincar> elliott: So, once again, free-as-in-beer conflicts with free-as-in-freedom.
07:25:39 <elliott> right.
07:25:44 <coppro> elliott: in the case of lulu, technically you would be violating lulu's ToS by failing to license them the work
07:25:53 <elliott> coppro: i guessed something like that, yeah
07:25:54 <evincar> elliott: And, you're right, this conversation is stimulating and the disagreement is lively rather than irritating.
07:26:19 <elliott> "Stalin and Hitler.png" best filename ever
07:26:31 <elliott> well okay not best but
07:26:33 <elliott> i'm tired kay?
07:26:44 <elliott> coppro: remember when we spent hours getting absolutely nowhere about copyright?
07:26:47 <elliott> that was FUN*
07:26:49 <elliott> *note: not actually fun
07:27:17 <evincar> Okay, allow me to cite the relevant clause 4b:
07:27:21 <evincar> You may not exercise any of the rights granted to You in Section 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensation. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary...
07:27:23 <evincar> ...compensation, provided there is no payment of any monetary compensation in connection with the exchange of copyrighted works.
07:27:29 <coppro> elliott: yes, I recall
07:28:08 <evincar> Re: the lulu example, you're not in violation because you're not primarily intending or directing your actions toward commercial advantage etc.
07:28:26 <coppro> right, you don't violate copyright
07:28:32 <coppro> the worse that could happen is lulu could terminate you
07:28:50 <evincar> coppro: Okay, I just wanted to make sure I was understanding your argument correctly.
07:30:12 <elliott> we should turn this into a computing flamewar
07:30:33 <evincar> Oh oh!
07:30:36 <evincar> So I made a language.
07:30:41 <evincar> Uh, not quite finished yet.
07:30:44 <coppro> btw, good news: The Pirate Party is close to running a candidate!
07:30:58 <evincar> But it's designed to question the nature of computation, so it could be an interesting discussion starter.
07:32:09 <elliott> modern computing is fundamentally badly designed, filesystems are a crock, and current systems are a mire of historical debris that don't respect the user.
07:32:10 <elliott> DISCUSS
07:32:14 <evincar> (Uh, provided anyone notices.)
07:32:20 <coppro> by 'close', I mean that he needs to file nomination papers
07:32:28 <coppro> he's been approved and is ready to go
07:32:55 <elliott> i love this channel
07:33:51 <evincar> elliott: It's a hell of a good place to be.
07:34:03 <coppro> yeah
07:34:12 <evincar> Oh, and there's nothing to DISCUSS. :P
07:34:22 <coppro> this channel is a bizarre bastion of mostly-erudite thought
07:34:28 <elliott> you're all meant to disagree
07:34:32 <elliott> and defend the wonderful linux
07:34:32 <coppro> (as opposed to, say, mathNEWS (shut up elliott))
07:34:40 * evincar listens to balalaika music and can't wait to get a new one.
07:34:44 <elliott> had to
07:34:46 <elliott> forgive me
07:34:49 <coppro> it's okay
07:34:57 <coppro> I already told you to shut up about it
07:35:36 <elliott> it's amusing to compare conversations like these to the rabble that goes on in here sometimes :)
07:35:52 <elliott> what i am learning is: 4, 5, 6 am is when the cool people are on!
07:36:02 <evincar> Yeah, that was like 20 or 30 KB of a single conversation. :P
07:36:08 <elliott> elliott@dinky:~$ dd if=/dev/random of=foo bs=512 count=4
07:36:08 <elliott> 0+4 records in
07:36:08 <elliott> 0+4 records out
07:36:08 <elliott> 174 bytes (174 B) copied, 1.59379 s, 0.1 kB/s
07:36:09 <elliott> eh wot?
07:36:11 <elliott> i asked for 2048 bytes
07:36:17 <elliott> i wonder why dd is ... mysteriously giving up
07:36:39 <elliott> evincar: unfortunately we're too busy talking about the conversation to converse any more
07:36:49 <coppro> elliott: iirc dd stops if /dev/random runs out of input
07:36:53 <coppro> can't remember why
07:36:56 <evincar> elliott: Well, *I'll* bloody take charge.
07:36:58 <elliott> coppro: that's retarded, do you know how to stop that?
07:37:04 <elliott> i guess cat /dev/random | dd if=/dev/stdin
07:37:22 <elliott> elliott@dinky:~$ cat /dev/random | dd if=/dev/stdin of=/dev/null bs=512 count=4
07:37:22 <elliott> 280 bytes (280 B) copied, 2.54588 s, 0.1 kB/s
07:37:26 <elliott> i hate you dd
07:37:35 <evincar> Okay, so would it be fair to distribute the major programming paradigms along an axis from "more imperative" to "more declarative"?
07:37:52 <elliott> evincar: about as fair as the left/right political spectrum, which means: no but go on anyway
07:37:53 <evincar> Actually, any programming language. :P
07:37:54 <elliott> actually that's a lie
07:37:57 <elliott> it's rather reasonable really.
07:38:04 <evincar> Alright, well.
07:38:05 <elliott> just not as a sole descriptor of a paradigm, obviously
07:38:55 <evincar> My sense of it is that functions encapsulate actions, therefore functional programming is inherently declarative in some sense, because actions, being the basic unit, become sort of implicit.
07:39:10 <coppro> interesting argument
07:39:29 <evincar> And objects encapsulate things, therefore imperative programming is inherently, well, imperative, because nouns, being the basic unit, become implicit as well.
07:39:29 <coppro> evincar: you should come up here to Waterloo!
07:39:33 <elliott> evincar: what is an action in lambda calculus?
07:39:45 <elliott> *the lambda
07:39:47 <evincar> elliott: Everything is an action.
07:39:52 <coppro> bam
07:40:05 -!- mimcpher has joined.
07:40:06 <elliott> evincar: unhelpful :)
07:40:07 <evincar> \x.x is the action of returning what you were given.
07:40:12 <elliott> coppro: DAMN YOU WATERLOO PEOPLE
07:40:19 <elliott> mimcpher: You cannot take over!
07:40:21 <elliott> we will revolt.
07:40:24 <mimcpher> REVOLT
07:40:34 <mimcpher> coppro: hello poofrosh
07:40:35 <elliott> evincar: ok, so every function in lambda calculus is the action of returning [f x].
07:40:45 <elliott> evincar: that's not very helpful :)
07:40:49 <evincar> elliott: In its canonical form, though.
07:40:51 <elliott> coppro: do i blame you?
07:41:02 <coppro> elliott: blame amstan
07:41:05 <elliott> who
07:41:07 <evincar> It's not intended to be a useful statement as such, just a definition for what I'm going on to say.
07:41:13 <elliott> evincar: i see. well in lambda calculus' canonical semantics there is no returning, just rewriting
07:41:24 <elliott> your model is FLAWED! Mwahahaha! Give up now! okay carry on
07:41:31 <elliott> coppro: is amstan that guy who came in a while ago
07:41:43 <evincar> elliott: Allow me to simplify my language for the sake of not going mad, and trust that I do have some idea of what I'm talking about. :P
07:41:43 <coppro> elliott: no, he's just the guy we always blame around here
07:41:48 <coppro> you're thinking dbelange
07:41:55 <elliott> he was irritating :)
07:42:00 <elliott> you're all irritating
07:42:04 <elliott> die, all of you
07:42:12 <mimcpher> Our sysadmins get complains about dbelange from random IRC servers
07:42:13 <mimcpher> :-P
07:42:33 <elliott> evincar: go on :P
07:42:39 <evincar> Okay, so we've got functional/declarative/verbal, and procedural/declarative/nominal. What's missing is an "adjectival" paradigm, in which the fundamental unit of computation is the *description*.
07:43:24 <elliott> XML!!!1
07:43:25 <elliott> Go on.
07:43:30 <evincar> What would an adjectival programming language look like? I think it could not have just any measure of imperative versus declarative nature, because descriptivity is NOT orthogonal with the others.
07:43:38 <evincar> It's a triangle, not two axes.
07:43:41 <evincar> If you will.
07:43:48 <elliott> It's a hypersphere!
07:43:51 <elliott> (Probably.)
07:43:54 <evincar> Eh...or a triangle.
07:43:59 <evincar> :P
07:44:00 <elliott> evincar: Don't you mean a square?
07:44:03 <elliott> A triangle-shaped spectrum would be odd.
07:44:22 <elliott> evincar: Because, basically, the only totally-descriptivist language would be exactly in the *centre* of imperative vs declarative.
07:44:34 <elliott> And the more imperative or declarative you get, the less descriptive you could possibly be.
07:44:35 <evincar> elliott: Not really. The language is defined by its relative proximity to three points.
07:44:41 <elliott> Ah.
07:44:44 <elliott> Alright then; go on.
07:44:50 <elliott> Hey, my spell checker finally accepts "alright".
07:45:20 <evincar> So what I did was say: okay, everything is a "description", or, for the purposes of the language, a "property", which I'll shorten to "prop" for ease.
07:45:44 <evincar> Now, a prop can "be" other props, or it can "have" them. It amounts to the same thing.
07:46:05 <evincar> You can imbue a prop with another prop, and you can test the props of a prop.
07:46:38 <evincar> In a typed adjectival language, a prop can also "be" a value, such as a number or an array or whatever.
07:48:01 <evincar> Now, for props there is no real notion of ownership, so this leads to some interesting things about, say, defining functions.
07:48:02 <elliott> evincar: coppro: why haven't either of you disputed my controversial statement about computing? sheesh
07:48:07 <elliott> okay reading evincar's messages now
07:48:15 <elliott> evincar: ok so
07:48:25 <evincar> *pauses*
07:48:28 <elliott> prop = value * list(prop)
07:48:55 <evincar> elliott: Sort of. We are assuming a typed system.
07:49:17 <evincar> Props are unordered, first of all, so they're more like sets, but as I said, there's no notion of "ownership" of props with which a prop is imbued.
07:49:18 <elliott> well, values have types.
07:49:23 <elliott> prop = value * set(prop)
07:49:26 <elliott> evincar: yes, but props have/be props
07:49:31 <elliott> and that set is the list of props that this prop is
07:49:40 <elliott> evincar: presumably you have a few primitive props?
07:49:45 <elliott> prop = value * set(prop) | awesomeness | yayness
07:49:48 <elliott> and the like
07:49:53 <elliott> (you get what i mean; like "builtins")
07:50:22 <evincar> elliott: Props have/be props, yes, but a prop-expression can also be treated as a prop on its own.
07:51:07 <evincar> Effectively you've got a directed graph, which can be cyclic, and also for which an edge can point to a group of nodes rather than just a single node.
07:51:38 <evincar> Although you can model the last bit as just "A -> G -> { X, Y, Z, ... }" for groups.
07:51:59 <evincar> So it's a lot more fluid than just a set.
07:52:14 <evincar> Because it's transitive.
07:52:24 <evincar> If A is B and B is C then A is C.
07:52:59 <evincar> Further, the source of an edge can be a group of nodes, so you can imbue a prop-expression with props, as well.
07:53:03 <evincar> So!
07:53:11 <evincar> (And this leads to the coolest syntax ever.)
07:53:32 <evincar> You can say [a divides b] means [b % a == 0].
07:53:49 <elliott> interesting. i think
07:53:59 <evincar> And that imbues the prop-expression "[a divides b]" with the (builtin) prop "means", which refers to "[b % a == 0]".
07:54:21 -!- sebbu has quit (Ping timeout: 240 seconds).
07:54:31 <evincar> Whenever you say "x divides y", if there's no match on x for y, then it looks at the meaning of the expression instead, and finds a match that way.
07:54:50 <elliott> i will understand this a lot better with a spec, gotta say :)
07:55:06 <evincar> So execution of a program in a purely adjectival language constitutes lots of ridiculous pattern-matching on a mutable directed possibly-cyclic graphlike structure.
07:55:28 <evincar> Actually, mutability isn't necessarily a requirement, come to think of it, but it'd be nice.
07:55:44 <elliott> evincar: getting rid of mutability will make your execution model much more interesting -- that is my prediction
07:55:57 <elliott> it tends to, since you lose a lot of the idea of evaluation order
07:56:18 <evincar> elliott: It seems to be inherently parallel, this language.
07:56:24 <elliott> then state is even worse :)
07:56:41 <evincar> I'd definitely want to go with implicit parallelism + monads.
07:57:02 <evincar> Monads could be encapsulated in a builtin "then" property.
07:57:02 <elliott> We functional programmers support the separation of Church and state.
07:57:09 <evincar> elliott: Cheeky.
07:57:19 <elliott> You have a strange definition of cheeky. :)
07:57:45 <evincar> "brash; offensively bold".
07:57:57 <elliott> It was a pun. I don't see the brashness.
07:57:58 <evincar> I guess I use it in a manner somewhat more synonymous with "saucy".
07:58:12 <elliott> Oho, those saucy functional programmers.
07:58:16 <evincar> Whether that's right or not is for the prescriptivists to decide.
07:58:26 <elliott> It's certainly confusing :)
07:58:41 <evincar> Aaanyhow, I'm not sure correctness is a decidable problem. ;)
07:58:50 <elliott> heh :)
07:58:59 <evincar> Now THAT was a pun.
07:59:11 <evincar> Not that nothing else was.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:16 <elliott> What was?
08:00:25 <evincar> So...yeah, it's very much Lispy in the sense that you've got essentially no syntax (or only one syntactic element, technically) and the language is just a set of fundamental operations mushing around the graph of the program.
08:00:44 <evincar> I shudder to think what self-modifying programs would look like, but I imagine they would be frighteningly beautiful.
08:01:05 <evincar> But as in Lisp, the program could easily have inherent access to its own source.
08:01:38 <elliott> I just got annoyed enough with Midori that I installed Firefox. Sigh.
08:01:55 <elliott> evincar: Lisp doesn't really have that.
08:02:13 <elliott> It has macros, sure, but a program can't say "(setq me '(exit))" or whatever.
08:02:18 <elliott> Unless you use lukego's silly hack for that. :)
08:02:36 <evincar> elliott: It has the notion of program as data, though, and you can traverse an expression-tree just as you traverse an ordinary list.
08:02:42 <elliott> Right.
08:03:07 <elliott> evincar: The []s remind me of Nock (http://moronlab.blogspot.com/2010/01/nock-maxwells-equations-of-software.html), although it's clearly nothing like that.
08:03:16 <evincar> That's the concept I meant to refer to, and there must certainly exist a parallel in a language that's very similar in spirit but based on an entirely different data structure and model of computation.
08:03:29 <elliott> evincar: It sounds like a nice language.
08:03:38 <elliott> evincar: It sounds like something that could be adapted into something "useful", too.
08:03:57 <elliott> evincar: I would be very interested in seeing what compilation tricks you could do to a no-builtin-state version.
08:04:05 <evincar> elliott: I know, that's the frightening bit.
08:04:26 <evincar> elliott: Compilation isn't something I want to think about. A nice, stringly-typed interpreter for me, thanks, just to get it working and done.
08:04:41 <elliott> Stringly-typed -- like SNOBOL!
08:04:43 <elliott> :)
08:04:49 <elliott> Or Tcl.
08:05:04 <elliott> evincar: It just sounds like the basic operation might actually be very efficient.
08:05:07 <evincar> You should prove your concepts in the fastest way possible for you, then polish them into the fastest possible thing for the computer.
08:05:25 <elliott> Yes, yes; I'm talking specifically about compilation theory here.
08:05:50 <elliott> As in... given a regular imperative CISC architecture, how efficient can we translate a bunch of applications of this one functional operation?
08:08:09 -!- tombom has joined.
08:08:45 <evincar> elliott: I wonder if the language has a single fundamental operation. :P
08:08:57 <elliott> evincar: Tree-traverse-rewrite-match-thing.
08:09:00 <evincar> I mean, it can be made complete by isomorphism with Lisp.
08:09:16 -!- mimcpher has left (?).
08:09:38 <evincar> Yeah, I was figuring search-and-rewrite-if-not-matched.
08:10:09 <evincar> Well, push-search-and-rewrite-if-not-matched-then-pop. :P
08:10:46 <evincar> So it could be implemented easily in a language that's conducive to graph- or list-based pattern-matching.
08:14:33 <evincar> Gah, ever listen to Mika?
08:14:44 <evincar> @elliott
08:14:52 <elliott> brb
08:15:00 <coppro> oh man, graph-based pattern matching
08:15:02 <coppro> that sounds awesome
08:15:26 <evincar> coppro: Believe me, using it as a basis for a language is the most awesome thing ever.
08:15:32 -!- sftp has quit (Remote host closed the connection).
08:15:50 <evincar> In fact, this is the first thing I've made that actually works whose implicationsI really don't fully understand.
08:15:52 <coppro> evincar: do you have any examples?
08:15:56 <coppro> ooh, must see
08:16:28 <evincar> coppro: It's not done, so I'm not releasing it yet, but I'm making it a priority, because it's cool.
08:18:33 <coppro> please do!
08:19:47 <evincar> Here, some imperative style that runs:
08:19:49 <evincar> range is from 1, to 100
08:19:50 <evincar> [a divides b] means [b % a == 0]
08:19:52 <evincar> for n in range
08:19:54 <evincar> if 3 divides n && 5 divides n
08:19:55 <evincar> output "FizzBuzz\n"
08:19:57 <evincar> elif 3 divides n
08:19:59 <evincar> output "Fizz\n"
08:20:00 <evincar> elif 5 divides n
08:20:02 <evincar> output "Buzz\n"
08:20:03 <evincar> else
08:20:05 <evincar> output n, "\n"
08:20:16 <evincar> Yes, I'm going with whitespace, even though I'm not a Python fan. :P
08:20:51 <coppro> how is that graph-based?
08:21:12 <elliott> boring
08:21:12 <evincar> It's subtle. The syntax deliberately masks it. If you were to remove the "to 100" property from the range, it would loop from 1 to forever.
08:21:40 <evincar> Bah, this is the worst example I could have given, isn't it?
08:21:45 <evincar> You want something weird.
08:21:51 <coppro> yeah, since every language and its brother can do that
08:22:07 <coppro> (though I do like the declaration syntax of infix divide. That's cool
08:25:30 <evincar> [(a)] means [a]; [+ [a b]] means [a + b]; [* [a b]] means [a * b]; n is (+ (* 2 3) 5)
08:25:42 <evincar> There, I just implemented prefix notation.
08:25:48 <evincar> Sorta.
08:26:17 <evincar> The gist of that example was to show how context-free grammars could be trivial to write.
08:26:39 <evincar> Making it really easy to make DSLs.
08:28:09 <coppro> yeah, that's definitely cool
08:28:25 <coppro> but what about the graph-basedness?
08:29:05 <evincar> coppro: See, this is me, demonstrating how I don't understand what I've made.
08:29:22 <evincar> coppro: Let me try to come up with a better example.
08:29:54 <coppro> ok
08:32:38 <evincar> coppro: Okay, two very simple examples. You can write optimisations for the language in the language itself.
08:32:42 <evincar> [a * 2] means [a + a]
08:32:50 <evincar> All multiplications by two are now optimised into additons.
08:32:56 <evincar> [[a is const] x [b is const]] means [statically [a x b]]
08:33:05 <coppro> oh boy
08:33:06 <evincar> All operations between two constants are now performed statically.
08:33:22 <evincar> *additions
08:33:31 <coppro> this could quite possibly get as nuts as Feather
08:33:35 <evincar> (The syntax is speculative.)
08:33:39 <coppro> (but probably not)
08:34:27 <evincar> coppro: You see, it's hard to come up with good examples. Graph-rewriting is definitely powerful, but it lacks succinct examples. It's obviously especially useful in the context of anything to do with programming languages.
08:34:53 <coppro> yeah, I think I sort of understand now
08:35:12 <coppro> ... actually, this sounds like Feather except for the lack of retroactivity
08:35:57 <evincar> coppro: But the "means" property isn't the only trick the language has up its sleeve, which is what makes it even more useful.
08:37:07 <coppro> ooh
08:38:55 <evincar> You could provide hints such as [a == b && b == c] implies [a == c], making the transitivity of equality explicit, and subject to possible optimisation.
08:39:40 <evincar> And, naturally, you could make an "implies" for a user-defined function.
08:39:56 <evincar> Where user-defined functions are naturally specified using "means", of course.
08:51:17 -!- tombom has quit (Quit: Leaving).
08:58:47 <evincar> coppro: Totally unrelated note: what's with the abysmal state of pop music? I'm happy there are a few very innovative artists, but what the hell?
09:03:18 <elliott> back
09:04:16 <elliott> Consultant, McAfee Associates, Jan. 1996-Aug. 1997, Mar. 1998-Mar 1999
09:04:17 <elliott> 1.
09:04:17 <elliott> Ported McAfee’s VirusScan product from Microsoft DOS to SunOS, Solaris, Linux, and FreeBSD.
09:04:17 <elliott> 2.
09:04:17 <elliott> Designed and was principal programmer for WebShield, McAfee’s Linux-based antiviral firewall product.
09:04:19 <elliott> why god why
09:04:41 <elliott> <evincar> [a divides b] means [b % a == 0]
09:04:44 <evincar> elliott: Who?
09:04:44 <elliott> you mean [[b % a] == 0]
09:04:56 <elliott> also, your addition of imperative features clouds the alnguage.
09:05:06 <elliott> <evincar> [[a is const] x [b is const]] means [statically [a x b]]
09:05:10 <evincar> elliott: I'm indecisive. :P
09:05:11 <elliott> you use x here to denote a placeholder
09:05:15 <elliott> yet in "[a divides b]"
09:05:19 <elliott> divides was literal
09:05:26 <elliott> you need a way to distinguish the two syntactically
09:05:34 <elliott> evincar: no, you're not; operator precedence is just silly in a language like this
09:05:36 <elliott> also, who = David Parsons
09:05:37 <evincar> Yeah, I was arbitrarily assuming that a..z count as placeholders.
09:05:49 <elliott> <evincar> You could provide hints such as [a == b && b == c] implies [a == c], making the transitivity of equality explicit, and subject to possible optimisation.
09:05:52 <elliott> this seems arbitrary
09:05:59 <elliott> what are the semantics of "implies"?
09:06:27 <evincar> elliott: It means that the expression can be rewritten as such, but need not be. It's "can means".
09:07:03 <elliott> evincar: but if you rewrite [[a == b] && [b == c]] (you DO need the nesting, if these are *sets*) to [a == c] you lose the information that [a == b]
09:07:08 <elliott> so it isn't an equivalent transformation at all
09:07:22 <evincar> So if it helps the interpreter perform a rewrite, or if it's more efficient, then it's chosen, otherwise not.
09:07:24 <elliott> evincar: can you tell me how this is at all different from term rewriting languages?
09:08:07 <evincar> elliott: Just looking at the two props "means" and "implies", it's not.
09:08:35 <evincar> Those nifty features are for transforming the graph. coppro asked about the graph-manipulating features.
09:08:53 <elliott> evincar: are you sure you're not building five languages and then sticking them together? :)
09:09:51 <evincar> elliott: You can easily bring in other interesting things like inversion of properties, so saying "not white" actually implies any colour other than white, or anything in general, if you don't restrict it.
09:10:13 <evincar> And no, I'm not sure of that, but it's where the philosophy is taking me right now.
09:10:30 <evincar> I'm just exploring the concept because I think it deserves to be explored.
09:10:44 <evincar> I'll get a clearer direction as I go along.
09:12:26 <elliott> stomach starting to hurt. breakfast soon
09:12:38 <evincar> elliott: An important thing seems to be that props can convey loads of semantic information about the program itself, because they're inherently descriptive. So you could have a "parallel" prop, or a "quickly" prop that tries to do things using SSE or in parallel as it sees fit.
09:12:52 <elliott> ok
09:14:28 <elliott> oh no
09:14:31 <elliott> i'm getting tired already
09:15:01 <evincar> elliott: Also, operator precedence is a pretty little addition that makes it nicer to use, and I see no reason why symbolic properators (coin!) can't default to having a precedence while named properties don't.
09:15:09 <evincar> Or rather, they all share the same precedence level.
09:15:10 <elliott> evincar: because if properties are sets
09:15:20 <elliott> then [a % b == 0] is the same as [% == a 0 b]
09:15:26 <elliott> and other nonsense
09:16:48 <evincar> elliott: Not quite, no. It's inherently infix. All expressions are assumed to be of the form "expr prop", where "prop" can be "id expr" or "properator expr" and "expr" can also be "[ expr expr* ]".
09:17:02 <elliott> Hmm.
09:17:10 <elliott> evincar: Definitely scrap all this imperative nonsense, thoug.
09:17:11 <elliott> *though.
09:17:18 <elliott> Distill and refine your core concept -- that's the way to go.
09:17:36 <evincar> elliott: I appreciate the advice, and I definitely take it to heart.
09:17:54 <evincar> The imperative nonsense was me being wishy-washy. :P
09:18:50 <elliott> evincar: In fact, I'm not convinced any sort of effect model does this paradigm well; it sounds suited to pure evaluation to me.
09:18:59 <evincar> As I implied before, I'm into existential bullshit, so I often spend a lot of time exploring the philosophical nature of something, going in totally the wrong direction with it while wandering, in order to feel that I have a deep enough sense of it to actually code it, when I probably should've just coded it from the beginning.
09:19:47 <elliott> heh
09:19:54 <evincar> elliott: Well, all of the effects would be internal, that's all. There has to be some notion of the current state of the graph from the interpreter's point of view.
09:19:55 <elliott> -NickServ- Last failed attempt from: elliott!~Adium@phy-dhcp-34-229.mps.ohio-state.edu on Nov 01 14:06:56 2010.
09:19:58 <elliott> hey -- would you look at that.
09:20:01 <elliott> Some Ohio fucker thinks he's me!
09:20:12 <elliott> But NO! I will defend this nick forever. Someday it will be valuable.
09:21:17 <evincar> I'm not so attached to this nick in IRC, but you'll find me under the name "evincarofautumn" everydamnwhere else.
09:21:40 <evincar> Except for a certain other persona that I'd like to keep separate from my public work.
09:21:41 <elliott> I have never been able to stick to a pseudonym.
09:21:47 <elliott> I change my mind about everything so much.
09:22:02 <elliott> evincar: Oh come on, you just know I have to try and find a link from evincarofautumn to some other guy on the web now.
09:22:33 <evincar> elliott: Good luck, I'll be interested. The only other instance I've seen of it was on an RPG Maker users' forum back in 2003 or so.
09:22:50 <elliott> evincar: Now you're giving me clues!
09:23:09 <evincar> The site is defunct. I'm not sure even Sherman and Peabody could find it.
09:23:27 <evincar> And...it's just a username, to me. It only carries a little bit of deeper meaning.
09:25:51 * elliott goes about configuring Iceweasel to not suck quite as much
09:27:28 <elliott> evincar: Talk more, this is boring! :P
09:27:31 <elliott> coppro: You too.
09:27:39 <evincar> elliott: Hah. Every single accessible Google result seems to pertain to me, anyway.
09:27:55 <elliott> have you considered that that might not be a good thing?
09:27:59 <evincar> For some reason I can't go past many pages.
09:28:15 <elliott> wow, you're one of three people to ever use infogami
09:28:16 <evincar> Like, 7 pages in, it says I no longer have 22,000 results, but more like 70. :P
09:28:30 <evincar> elliott: I know, I was using Markdown before it was cool.
09:28:37 <elliott> "So Obama has been elected, and we've created an Obamanation. Hillary had no such luck; this is a Hillarious failure."
09:28:39 <elliott> you are a bad person
09:28:48 <evincar> Aren't I just?
09:28:59 <coppro> evincar: I take it you're a Magic player?
09:29:54 <evincar> I am, but only a bit. The "evincar" name is actually (as you may find explained somewhere online) a deliberate perversion of "evincer", a nonexistent word that supposedly means "one who evinces". My username therefore ought to be spelt with a cedilla on the C, and in fact is intended to mean "he who brings the autumn forth".
09:30:06 <coppro> ah
09:30:16 <evincar> coppro: So, coincidence. :P
09:30:19 <elliott> tiredness setting in. fuckfuck
09:30:34 <coppro> the first word that comes to mind after 'evincar' to me is 'rath'
09:30:38 <evincar> elliott: Keep at it. I intend to stay awake until the sun has set again.
09:30:44 <evincar> Rath's evincars...
09:30:51 <coppro> indeed
09:30:54 <evincar> ...I've heard that somewhere.
09:30:55 <elliott> and the mome raths evincarred
09:31:07 <evincar> I don't really know anything about Magic's BS backstory.
09:31:19 <coppro> evincar: In the Magic universe, the evincars were a series of rulers of the plane Rath
09:31:23 <evincar> Although a recent cstheory.stackexchange.com question proved Magic is Turing-complete.
09:31:36 <elliott> evincar: on only the second page of your name i see "xkcd"
09:31:37 <coppro> also, if memory serves, a card has evincar in the name
09:31:37 <evincar> coppro: So NOW I KNOW.
09:31:39 <elliott> for shame, my friend.
09:31:40 <elliott> for sham
09:31:43 <elliott> *shame
09:32:01 -!- Wamanuz2 has joined.
09:32:06 <evincar> elliott: I joined the XKCD fora recently, so it must have been bumped up in the results because that site is so high-ranking.
09:32:28 <elliott> for shame
09:32:41 <evincar> elliott: 4-shame.
09:32:52 <evincar> Oh, incidentally, I've decided to call this language, however it turns out, D-script.
09:33:00 <evincar> Since, you know, it's a delicious pun.
09:33:09 <evincar> And a fairly generic name that's also searchable.
09:33:24 <evincar> Thoughts?
09:33:28 <elliott> flertl
09:33:30 <evincar> coppro: You too.
09:34:05 <elliott> ugh tree style tab is so close to perfection
09:34:06 <evincar> elliott: Come to think of it, how will you know if a result doesn't pertain to me? Or will you just submit results to me for verification?
09:34:07 <elliott> what it needs:
09:34:09 <elliott> - less nesting
09:34:15 <elliott> - every link opens in a new child tab BUT history is retained
09:34:28 <elliott> - previous history is retained, vertical scrollbar; as you scroll up, more history from the past
09:34:44 <evincar> Makes sense.
09:36:03 <coppro> elliott: tree style tab?
09:36:15 <elliott> coppro: https://addons.mozilla.org/en-US/firefox/addon/5890/
09:36:26 <elliott> it's nice but i'm still not sure i can spare any of my 1366 horizontal pixels for it
09:36:27 -!- Wamanuz has quit (Ping timeout: 276 seconds).
09:36:34 -!- wareya_ has quit (Read error: Connection reset by peer).
09:37:13 <evincar> So it seems I stand a pretty good shot of being the best non-professional balalaika player on YouTube, if I just get a webcam. The majority of the people who put up videos are fairly bad amateurs, or are only interested in traditional music.
09:37:22 -!- wareya has joined.
09:38:23 <elliott> http://www.youtube.com/watch?v=PPv9VZQkxJI this guy is hilarious, what is he even
09:38:33 <evincar> There are of course a few videos of pro players and orchestras and stuff, against whom I stand no chance whatsoever.
09:38:48 <elliott> this is the worst i have heard any instrument played
09:39:04 <evincar> elliott: Old stuff. He's got presence at least.
09:39:16 <elliott> evincar: he can't breathe properly
09:39:19 <evincar> http://www.youtube.com/watch?v=vFmZfgiczho&NR=1
09:39:35 <elliott> that's better
09:39:40 <evincar> elliott: Very good player, but falls into the category of "only wants to do traditional music".
09:40:12 <evincar> It's an instrument that needs attention. I think it's got a great sound.
09:40:23 <elliott> it looks like an asshole instrument :)
09:40:26 <elliott> as in the designers
09:40:27 <elliott> designer
09:40:28 <elliott> whatever
09:41:25 <elliott> evincar: SO WHAT HAPPENED TO PROG and god googlestalking is boring
09:41:33 <evincar> elliott: Not sure what you mean. It *was* originally a peasant instrument made out of a pumpkin. :P
09:41:48 <elliott> evincar: i mean the designer was an asshole who wanted to torture people who just wanted to make some music
09:41:54 <evincar> elliott: Prog is in the feckin works, mkay? I just gave a talk about it a couple of weeks ago.
09:41:54 <elliott> by making it impossible to play
09:42:02 <elliott> evincar: THE LAST CHANGE WAS 200 DAYS AGO
09:42:05 <evincar> elliott: It's very easy to play, but hard to master.
09:42:05 <elliott> *OVER
09:42:56 <evincar> elliott: I quit using Subversion and sorta abandoned the SourceForge project because I wanted to move in a new direction with it. I got a basic compiler working, then decided that the operator precedence parser might not be the best idea and decided to rework it into an ANTLR grammar. :P
09:43:25 <evincar> Not to mention the shitloads of stuff I've reworked for concurrency's sake, after spending this past year getting really acquainted with FP.
09:44:35 <evincar> I mean, I've used Scheme and what have you enough, and I've always been comfortable with functional computing abstractions, but it wasn't until I read up on the Actor model and started preaching the benefits of immutability that I really truly got it myself.
09:44:54 <evincar> Erlang is beautiful.
09:44:58 <elliott> evincar: erm, you do realise Scheme basically *debunked* the actor model?
09:45:05 <elliott> and that was its claim to fame?
09:45:29 <evincar> Okay, I should probably have included "stuff like".
09:45:58 <evincar> I mean, I went through shitloads of research articles and actual programs written in various languages and taking different approaches to concurrency and parallelism.
09:46:07 <elliott> evincar: It was originally created as a vehicle to explore the actor model. But then they realised that their code for procedures and actors were identical, and so they dropped the actor code, and everything worked fine.
09:46:10 <evincar> I'm partial to implicit parallelism and monads, as I said earlier. :P
09:46:11 <elliott> The actor model is silly.
09:46:26 <elliott> Implicit parallelism is rather impractical; it was tried with Haskell but didn't work very well at all.
09:46:44 <evincar> Was tried? Is being tried. Is working just dandy, actually.
09:47:01 <elliott> evincar: no
09:47:08 <elliott> because you end up parallelising even trivial expressions
09:47:13 <elliott> this is a well-known result in haskell circles
09:47:29 <evincar> elliott: There was some talk I watched in which the author of GHC discusses how he is solving those problems of granularity.
09:47:56 <elliott> "the author" ahahaha
09:47:57 <elliott> which one?
09:48:46 <evincar> Fuck, an author.
09:49:11 <evincar> I may be getting loopy here.
09:49:47 <evincar> Anyway, Haskell definitely does sequential operations right, with monads, specifically encapsulating everything nicely in the type system.
09:50:16 <evincar> If you want everything to be immutable, monads are how you need to handle sequence.
09:51:12 <evincar> Although you could say I'm just stating "Haskell's way of doing things is the best way of doing things in Haskell".
09:51:22 <evincar> Not sure whether you'd be right.
09:51:27 <elliott> Most of the high-echelon Haskell intelligentsia are dissatisfied with the IO monad.
09:51:33 <elliott> Note that monads aren't just about state and side effects...
09:53:32 <evincar> elliott: Of course. Which Haskelligentsia in particular?
09:53:42 <elliott> Conal Elliott is the main one.
09:53:45 <evincar> (By the way, I think it was Simon Peyton Jones in that lecture.)
09:54:00 <elliott> The problem is that if you say "Haskell with the IO monad is a purely functional language", then C is purely functional, too.
09:54:10 <elliott> The implication being *the IO monad is not functional, it is imperative*.
09:54:25 <elliott> And there is a functional way to do these things, FRP. Although nobody's quite figured it out yet :-)
09:54:30 <elliott> http://conal.net/blog/posts/the-c-language-is-purely-functional/
09:54:36 <evincar> elliott: Right, but who needs I/O? :P
09:54:37 <elliott> "My first inclination was to suggest that Haskell, as commonly practiced (with monadic IO), is not a functional language either. Instead, I’m going to explain how it is that the C language is purely functional."
09:57:03 <olsner> elliott: so did you get long mode running yesterday?
09:57:11 <elliott> olsner: Yesterday? I haven't slept!
09:57:17 <evincar> elliott: Yeah, I wonder how scathing he intended this to be. It could be read as fun and light, but it could conceal some dark cynicism. :P
09:57:17 <olsner> I have!
09:57:18 <elliott> olsner: Wait, you've slept? But it went by so quickly...
09:57:35 <elliott> olsner: I decided, upon looking at your code, that what the fuck long mode is complicated and I love protected mode and my babies are all raised in a system of protectedm ode.
09:57:39 <elliott> *protected mode.
09:57:49 <olsner> yes, well, I didn't get much sleep tonight
09:57:54 <elliott> evincar: He's not cynical, he just doesn't think the IO monad is functional, and he thinks that FRP is nicer. :)
09:58:05 <evincar> elliott: A fair assessment.
09:58:08 <elliott> The most plausible scenario in which I am still awake at midnight involves dubious amounts of cocaine. This is not reassuring.
09:59:02 <evincar> elliott: Don't worry, it'll all be sorted out eventually. Hell, depending on how things go, you might be awake for the rest of your life.
09:59:18 <elliott> I'll take the cocaine.
09:59:21 <evincar> In the sense of "set a man on fire and he's warm for the rest of his life". :P
09:59:37 <elliott> I figured.
09:59:42 <elliott> After a few seconds of tired-induced dumbness.
10:00:18 <elliott> Omg, Debian dropped support for 6800.
10:00:24 <elliott> Beyond unacceptable.
10:00:46 <olsner> the most complicated thing is to set up the page tables IMO, and that's not even that complicated
10:01:48 <elliott> olsner: but i'm a lazy, tired as hell fucker.
10:02:49 <evincar> elliott: Misintoned that as "But I'm a-lazy, tired as hell-fucker". That is, right now you're lazying, because you're as tired as someone who fucks hell.
10:03:13 <evincar> Well, not necessarily "because", but at least "and also".
10:03:15 <elliott> are you sure you didn't parse that properly and then decide to misparse it? :)
10:04:29 <evincar> elliott: English grammar is ambiguous. You can't prove anything. >_>
10:07:20 <evincar> I should write an esolang whose grammar is intentionally ambiguous, and whose parser decides between ambiguous expressions based on how amusing the result will be, rather than some arbitrary notion of "correctness" imposed by an ill-conceived attempt to implement DWIM.
10:08:03 <evincar> Rather it will be an arbitrary notion of "humour" imposed by an ill-conceived attempt to implement...uh, line?
10:09:37 <evincar> elliott, save me!
10:09:41 <elliott> ejrio
10:09:59 <evincar> That is not an English word. :/
10:10:06 <evincar> Although I can't prove that.
10:13:35 <elliott> prescriptivist!
10:13:50 <elliott> evincar: as futile as this quest is when one is so tired -- and as irritable as i am -- would you like to know of my current programming endeavour?
10:14:12 <evincar> Hey, if it keeps you awake and keeps me entertained, by all means.
10:15:00 <elliott> evincar: define a minimal term rewriting language L; write a short implementation of L in Haskell and a short implementation of L in L
10:15:04 <elliott> if the latter is not short, redesign and repeat
10:15:12 <elliott> aim for elegance on the level of the first lisp self-interpreter
10:15:27 <evincar> elliott: A noble goal, and far better-defined than mine!
10:15:50 <evincar> Although what constitutes "short" is still subjective.
10:15:56 <elliott> of course.
10:16:11 <elliott> i am aiming for the kind of thing you might see in a Functional Pearl paper.
10:17:10 <elliott> evincar: The language needs a name -- perhaps "deinate", after DE-term-ine and term-INATE
10:17:30 <evincar> I'd be interested to do some research into language minimisation like this. What is the minimal complete subset of L for which the self-hosted implementation is minimal?
10:17:42 <elliott> evincar: btw for you: http://en.wikipedia.org/wiki/Graph_rewriting
10:17:47 <elliott> evincar: wrt self-interpreting subsets,
10:17:53 <elliott> http://catseye.tc/projects/pixley/
10:18:10 <evincar> elliott: Already saw the graph-rewriting article, while I was desperately fishing for examples in that department.
10:19:52 <elliott> i'll call it dart
10:20:02 <elliott> although the one-qwerty-sidedness of that may irritate me at some point :)
10:20:11 <elliott> fuck! no haskell-mode installed
10:20:22 <evincar> elliott: I love how it's defined as meta-circular based on the fact that it's already a strict subset of Scheme. It seems like a cheat.
10:20:34 <elliott> when i'm tired you DO NOT GIVE ME THE EMACS I DO NOT WANT, Operating System
10:20:49 <elliott> elliott@dinky:~$ ghci
10:20:49 <elliott> bash: ghci: command not found
10:20:51 <elliott> ASSHOLE
10:20:52 <evincar> Dart is a good name.
10:20:53 <elliott> :|
10:22:03 <elliott> evincar: see in my perfect os, when i tried to open an .hs file
10:22:11 <elliott> it would go "ok, i don't know what an .hs is; I'll look it up"
10:22:21 <elliott> and it sees, on the network, that .hs = haskell-mode is the most popular thing
10:22:28 <elliott> it would then obtain and use haskell-mode for me
10:22:33 <elliott> so i don't have to goddamn install it myself fffffffff
10:22:37 <elliott> this is what tired does to me
10:22:45 <evincar> I'd add an interstitial confirmation dialog that allowed me to pick an alternative.
10:23:38 <evincar> .hs = haskell-mode. Install? (3 alternatives, y=install, n=more, x=cancel)
10:23:50 <evincar> For y, n, and x of your preference.
10:24:07 <evincar> I haven't paid attention to any confirmation prompt in emacs for a long time.
10:24:18 <evincar> It's all chords all the time.
10:24:25 <elliott> evincar: no, because you could always just say
10:24:35 <elliott> "i would like to use a different mode"
10:24:39 <elliott> and it would have suggestions for you
10:24:49 <evincar> M-x wrong-fucking-mode-emacs
10:24:50 <elliott> no point prompting when a reasonable default can be picked, you can always override it
10:24:56 <elliott> evincar: precisely
10:25:10 <elliott> of course, with elisp not exactly being secure and emacs sucking this will never happen :)
10:25:16 <elliott> Of course, the very concept of a *file* is stupid...
10:25:26 <elliott> ...so it's more like when you edit some text tagged as being haskell code or something, i guess
10:25:34 <evincar> What, you'd prefer to be able to arbitrarily scribble on your disk? :P
10:25:42 <elliott> no
10:25:50 <elliott> evincar: you know how you have nice structures and objects and things in memory?
10:25:57 <elliott> and they're all rich and useful and aware of their own type?
10:26:06 <elliott> evincar: instead of just byte streams associated with names?
10:26:11 <evincar> Eh, kinda.
10:26:22 <elliott> evincar: yeah, you put those objects on the disk.
10:26:34 <elliott> and remove the artificial, historical RAM/disk address space distinction.
10:26:41 <evincar> In reality, in both places, you have bytes that are not associated with names. :P
10:26:51 <elliott> not really
10:27:07 <elliott> every bit of data in a program is reachable by some accessor unless it's garbage or not your data
10:27:17 <evincar> The association is meta-information.
10:27:19 <elliott> in C, at least, every piece of data has a name -- *(type *)address
10:27:26 <elliott> but you probably can't access most of them due to the security model
10:28:33 <elliott> evincar: here's the whiny, pissed-offness-induced rant i wrote about it early this year: http://catseye.tc/ehird/files-suck.html
10:28:45 <elliott> it is about as coherent as i would be if i tried to explain it in this state :)
10:30:49 <evincar> So...you're saying that data of a certain type ought to have a canonical representation on disk? But...file formats are created for reasons other than circumventing the leaky abstractions of file systems.
10:31:21 <elliott> i'm too tired to talk about such a heated issue, sorry :)
10:31:38 <evincar> Does encoding and decoding PNG streams really belong in a filesystem driver module? :P
10:31:44 <evincar> Bah, okay.
10:31:55 <elliott> <evincar> Does encoding and decoding PNG streams really belong in a filesystem driver module? :P
10:31:56 <elliott> no
10:32:07 <elliott> try to actually read the article, even if it is whiny :)
10:34:09 <evincar> I am, carefully. If, say, PNG is the backing format of my image, and I query the filesystem to get at the image data, either the filesystem needs to decode it into the system's canonical representation of an image, or my application needs to decode it into whatever representation it sees fit. If you place it in the system driver, you've created a perfect abstraction at the cost of bloat,...
10:34:10 <evincar> ...even if the bloat is modular.
10:34:19 <elliott> there is no filesystem
10:34:22 <evincar> If you place it in the application, you have the same problem.
10:34:24 <elliott> you are making an invalid assumption
10:34:34 <evincar> What does it mean to say "there is no filesystem"?
10:34:47 <elliott> see section 3 of the rant
10:34:57 <evincar> There has to be, at some level, a driver that manages the interaction between software and hardware.
10:35:44 <elliott> disk is big object space, ram is smaller object space acting as cache and temporary modification holding area of disk
10:35:48 <elliott> again see section three
10:35:55 <evincar> It doesn't matter *when* the serialisation takes place, but at the hardware level, it has to happen.
10:36:20 <elliott> i don't think you understand
10:36:36 <olsner> the point is that the driver doesn't implement a "file system", but rather persistent storage of objects
10:36:37 <evincar> Well, okay, here's a use case, and you give me the underlying do-how.
10:36:47 <elliott> what olsner said
10:37:01 <elliott> specifically, ram is simply a cache of a selection of objects from disk that are being used right now
10:37:11 <elliott> modifications to the ram copies automatically are synchronised to disk
10:37:19 <elliott> and you can refer to any object whether it's in ram or not, and it will be loaded from disk
10:37:23 <elliott> the ram is managed by the os
10:37:24 <evincar> olsner, elliott: I understand that, but I'm asking how an application actually interacts with it.
10:37:36 <elliott> evincar: ok, here's an example
10:37:41 <elliott> let's say {} is an object
10:37:52 <elliott> myProgram = {masterpieces: {}};
10:38:09 <elliott> func myProgram.createMasterpiece(foo) { masterpieces.append(foo) }
10:38:16 <elliott> func myProgram.masterpieceNumber(n) { masterpieces[n] }
10:38:24 <elliott> func myProgram.editMasterpiece(n, foo) { masterpieces[n] = foo }
10:38:27 <elliott> create ui around that, etc.
10:38:34 <elliott> this object is automatically synchronised to disk
10:38:38 <elliott> so every masterpiece is stored on disk
10:38:46 <elliott> and if masterpiece N is loaded, but it's not in ram
10:38:48 <elliott> it gets loaded from disk
10:39:25 <elliott> i think olsner gets it :)
10:40:35 <evincar> elliott: Okay, but that implies that the names and identities of objects are inherent in the models and implementations of the languages involved. How does a C++ program accomplish the same thing without losing performance to the fact that its memory model is no longer just flat bytes, but some kind of associative store?
10:40:54 <elliott> evincar: who says its memory model isn't flat bytes?
10:40:58 <elliott> the internal representation is irrelevant here
10:41:02 <elliott> and, in fact, forget C++ even exists
10:41:12 <elliott> it's bad enough trying to explain this to people without thinking about that awful abomination too
10:42:03 <olsner> evincar: how objects look when loaded into programs is pretty much irrelevant to the idea, I think
10:42:27 <evincar> olsner: Yes, but how do they get there and back?
10:42:44 <olsner> through an API, using abstractions
10:43:00 <elliott> evincar: they don't
10:43:04 <elliott> from the program's point of view
10:43:05 <evincar> And that is what I was asking about, elliott.
10:43:07 <elliott> every object is always there
10:43:18 <elliott> just because it hasn't referred to a list that's a property of one of its objects
10:43:20 <elliott> doesn't make it disappear
10:43:22 <elliott> even after a reboot
10:43:23 <elliott> it is saved to disk
10:43:25 <elliott> and it is simply there
10:43:29 <elliott> you access it as a variable if it is a variable
10:43:33 <elliott> as a property if it is a property
10:43:36 <evincar> That only works in a language that is designed to support something similar.
10:43:37 <elliott> with [n] if it's a list member
10:43:41 <elliott> no
10:43:42 <elliott> you are wrong
10:43:55 <evincar> Okay, I was going to present you with an example.
10:44:25 <elliott> evincar: ok, imagine a program
10:44:31 <evincar> I have a program that loads a PNG, performs a convolution on the image data, and outputs the result.
10:44:33 <elliott> that stores data, in memory, a text editor that stores stuff in memory, let's say
10:44:36 <elliott> please, let me finish
10:44:37 <elliott> imagine that
10:44:41 <elliott> now imagine you never close down the program, ever
10:44:49 <evincar> (Well, if you had let me start in the first place...)
10:44:50 <elliott> evincar: you know the "hibernate" feature of all modern OSes?
10:44:53 <evincar> Yes.
10:45:01 <elliott> of course, you could hibernate as much as you want when running this program
10:45:05 <elliott> and it would still run just fine
10:45:13 <elliott> evincar: now imagine we wanted to store more documents than we have RAM
10:45:23 <elliott> evincar: imagine the computer is "constantly" hibernated -- the contents of RAM are constantly mirrored on disk
10:45:26 <elliott> evincar: now imagine inverting this
10:45:35 <elliott> evincar: "objects in memory" are considered to actually be on disk
10:45:42 <elliott> evincar: and RAM is merely where they are loaded to, when they are referenced
10:45:53 <elliott> the program still works, and it works even across total shutdowns
10:45:57 <elliott> and it can store more documents than fit into ram
10:45:58 <elliott> do you see now?
10:45:59 <evincar> elliott: Okay, I've understood that bit.
10:46:33 <evincar> But what I'm asking is what sort of API you would present, and how, from a programmer's point of view, it would actually change anything.
10:46:43 <elliott> you don't present any API
10:46:54 <elliott> the exact same program that was written for a normal OS is used in the final stage, there
10:48:47 <evincar> Okay, so a program that is designed around the concepts of loading and saving named files as unadorned byte streams will still work as expected.
10:48:53 <elliott> no!
10:48:56 <elliott> there is no filesystem api
10:49:02 <elliott> <elliott> that stores data, in memory, a text editor that stores stuff in memory, let's say
10:49:03 <elliott> *in memory*
10:49:05 <elliott> it NEVER touches any files
10:49:10 <elliott> it is ENTIRELY in MEMORY
10:49:15 <evincar> So the same program that was written for a normal OS will NOT work. :P
10:49:18 <elliott> ahiofASDfuigojdg
10:49:29 <elliott> NOT "ANY PROGRAM FOR A NORMAL OS"
10:49:34 <evincar> Okay.
10:49:39 <elliott> capslock over
10:49:44 <evincar> Okay.
10:49:48 <elliott> I blame you for this :P
10:50:05 <evincar> My pleasure. :)
10:50:13 <evincar> I'm not trying to be irritating.
10:50:25 <elliott> i know, and i don't hold it against you, it's just that you're succeeding :)
10:50:32 <elliott> evincar: btw, this is not some new-fangled concept.
10:50:35 <elliott> the literature has done it to death.
10:50:37 <evincar> I just...disagree with you, but you seem to think I don't understand you, so I'm trying to make sure I do before I assert you're incorrect.
10:50:42 <elliott> I think even freakin' *Multics* did it.
10:50:52 <elliott> That's 1969.
10:51:30 <evincar> elliott: So, alright...if I were to abstract "loading" as simply "the first read of an object, which implicitly brings it into working memory"...
10:51:39 <evincar> ..."editing" as working on a copy of that object...
10:51:53 <evincar> ...and "saving" as commiting changes...
10:51:58 <elliott> evincar: committing?
10:52:00 <elliott> there is no committing
10:52:06 <evincar> ...then would an ordinary program...
10:52:09 <evincar> ...that's not safe.
10:52:15 * elliott facepalms
10:52:19 <elliott> olsner: you take over, i'm done
10:52:46 <olsner> nope, have to go to work :)
10:52:47 <evincar> The ability to decide when *not* to save your data is just as important as whether your data is retained.
10:52:52 <elliott> dammit olsner
10:53:11 <elliott> evincar: how about drop this and talk about it when i've actually slept :)
10:53:13 <olsner> actually, should've gone at least an hour ago
10:53:14 <evincar> If my documents are implicitly written to disk, how do I roll back changes? Are they versioned?
10:53:17 <elliott> or i'm just going to get really annoyed.
10:53:20 <elliott> at your misunderstanding.
10:53:42 <evincar> I am trying very hard to get this.
10:53:46 <elliott> i know
10:53:50 <elliott> and i don't hold it against you :P
10:54:04 <evincar> Oh well. I guess right now it's just one of those things.
10:54:22 <evincar> If it's explained right, I'll get it, but until then, I feel as though it's a logical fallacy, or at least a bad idea.
10:54:25 <elliott> evincar: trust that i'm right, though :)
10:54:30 <elliott> and yes, you are misunderstanding badly.
10:54:41 <elliott> filesystems have poisoned your brain :)
10:54:55 <evincar> elliott: I will not trust that you're right, only that you think you're right, and you may very well be, but I don't know that yet.
10:55:12 <elliott> well, if it helps, i am *far* from the only person to think this.
10:55:42 <evincar> All I'm saying now is that there needs to be control over revisions in order for persistent objects to retain the backup-safety of traditional filesystems.
10:55:45 <elliott> wtf haskell what f ijiojioj what is up with you my code is right
10:55:49 <elliott> evincar: that is true, yes.