←2010-06-27 2010-06-28 2010-06-29→ ↑2010 ↑all
00:00:04 <alise> How do I create a branch in hg?
00:00:07 <alise> hg branch poopy?
00:00:09 <Gregor> Yup
00:00:16 <Gregor> Then just go about your business.
00:00:25 <alise> Literally poopy? :P
00:00:31 * alise hg branch dev
00:00:45 <alise> Gregor: BTW, your existing filesystem solution sucks balls.
00:00:53 <Gregor> Yup.
00:00:59 <Gregor> It has a LOT of problems :P
00:01:04 <Gregor> But it does work.
00:01:05 <alise> And why do you go to the trouble of supportin IE.
00:01:06 <alise> *supporting
00:01:19 <alise> / A pretty little loader bar while a file is loading
00:01:21 <alise> I hate you.
00:01:22 <alise> *//
00:01:37 <Gregor> Whoooooo knows
00:01:39 <alise> Gregor: Crazy suggestion: Just download everything at the start and stop the slowness.
00:01:57 <Gregor> alise: 1) The slowness is not from downloading, 2) everything is a LOT, 3) no.
00:02:07 <alise> New suggestion: Make it less shit, then.
00:02:20 <Gregor> What a super-specific suggestion :P
00:02:29 <alise> Well, it's shit. Valid complaint.
00:03:00 <alise> Okay, so where's this magic modular crap?
00:03:13 <alise> function Stdout() {}
00:03:15 <alise> That stuff?
00:03:16 <alise> in mipsio.js
00:03:34 <Gregor> Every "file" is just an implementation of a mipsio-type object. Any object with the right shape can be stuffed in its place.
00:03:46 <alise> /* Simple 80x25 console in a <div>
00:03:50 <alise> Wrong, it's not a <div> in vtconsole.js
00:04:01 <Gregor> Where's that comment from? console.js?
00:04:01 <alise> Gregor: So how do I put that somewhere in the fs?
00:04:04 <alise> vtconsole.js
00:04:06 <alise> copied from console.js
00:04:09 <Gregor> Oh :P
00:04:11 <Gregor> Womp womp
00:04:43 <Gregor> Oh, hrm, with the current FS, putting stuff somewhere is ... actually kinda suckage ... the FS layout comes from the server, and is godawfully bad (it's not even JSON :P )
00:05:00 <alise> I sort of hate you.
00:05:22 <Gregor> The FS was a quick hack because I wanted an FS, it wasn't intended to be a real solution. It just stuck because I was too lazy to write anything better :P
00:05:24 <alise> Gregor: How about you stop supporting online JSMIPS? :P
00:05:27 <alise> Ooh, I know.
00:05:35 <alise> Use that fancy HTML5 storage stuff to only download files once forever.
00:05:39 <alise> Then it'd suck less.
00:05:51 <Gregor> I'm unaware of that component of HTML5 ...
00:06:09 <alise> Protip: HTML5 has EVERYTHING.
00:06:10 <Gregor> Also, I wrote the vast majority of this well before HTML5 :P
00:06:15 <alise> Not well before.
00:06:17 <alise> HTML5 is years and years old.
00:06:28 <alise> It's just only been adopted as a W3C Working Draft recently (year or two ago).
00:06:33 <Gregor> Well before HTML5 had any actual use or implementation that is.
00:06:39 <alise> Opera implemented everything in like 2005 :P
00:06:47 <Gregor> Opera NEVER counts.
00:07:03 <Gregor> Also, Opera doesn't have <video> or useful <audio>, so, uh, no.
00:07:20 <alise> Opera is like this awesome small, fast browser that does everything before anyone else and supports all the standards but everyone hates it because it's Opera :P
00:07:21 <alise> I love it
00:07:23 <alise> (The hating)
00:07:57 <alise> Gregor: http://dev.w3.org/html5/webstorage/
00:08:06 <alise> It's much more prototypey than HTML5 itself, though.
00:08:14 <alise> Gregor: Basically, it's Google Gears, legislated.
00:08:24 <Gregor> Hm
00:08:48 <Gregor> Anyway, I take your complaints as the observation that the FS needs serious work, so I will consider working on it, but probably not today X-P
00:09:11 <alise> How am I supposed to add something to the FS with your shitty arch? >_<
00:09:25 <alise> Suggestion: Have the thing be a php, so that you load the /directory structure/ on page load.
00:09:36 <Gregor> That's exactly what it does.
00:09:42 <Gregor> That's what's so shitty :P
00:09:51 <alise> No, system.html is not a php.
00:10:14 <oklopol> you know who else is not a php?
00:10:17 <Gregor> alise: Note the script tag.
00:11:16 <Gregor> Which is to say, note http://codu.org/jsmips/server/dir.php
00:11:25 <alise> fine fine
00:11:46 <alise> Gregor: I'm going to do something horrible.
00:11:51 <alise> Hardcode /dev files into dir.php.
00:11:56 <alise> I blame you; you have made me this creature.
00:11:57 <Gregor> That's fine *shrugs*
00:12:04 <alise> Okay, what the fuck @ dir.php.
00:12:11 <alise> I have no idea what I...
00:12:13 <alise> Do I just say
00:12:29 <alise> dir.children["=/dev/fuck"] = new FuckingDevice();
00:12:39 <alise> Sorry,
00:12:42 <alise> dir.children["=_dev_fuck"] = new FuckingDevice();
00:12:48 -!- pikhq has joined.
00:12:51 <ais523> alise is working on JSMIPS?
00:12:57 <alise> ais523: Yes. Unfortunately.
00:13:01 <alise> Gregor is a tramp and a whore.
00:13:11 <alise> He has ruined my childhood.
00:13:21 <Gregor> No, something like rootdir.children["=dev"] = new Directory(rootdir);, then thatdirectory.children["=whatevs"] = new Device(whatevs);
00:13:40 <alise> No such thing as rootdir here.
00:13:48 <pikhq> alise: In the Xorg tree, hw/kdrive/
00:13:48 <alise> Oh, yes there is.
00:14:05 <alise> pikhq: yeah we're just gonna do fb driver i think
00:14:08 <alise> that code looks gnarly
00:14:39 <alise> Gregor: btw, I vowed never to code PHP again
00:14:45 <alise> so I doubly hate you
00:14:49 <Gregor> 8-D
00:15:11 <Sgeo_> I just realized that I might be able to think of this in terms of logic gates
00:15:21 <alise> DevFoo an alright name for the classes?
00:15:30 <Gregor> Sure, why not *shrugs*
00:15:43 <alise> DevKBD, DevMouse, DevWhateverTheFramebufferIs.
00:15:59 <alise> Gregor: I just realised that I looked up Linux framebuffer documentation
00:16:00 <alise> XD
00:16:06 <alise> pikhq: Hey... stuff only accesses the framebuffer through the dev file, right?
00:16:10 <alise> So I just have to implement DevFB or whatever.
00:16:17 <Sgeo_> What I need to do is make a NAND gate
00:16:29 <Gregor> alise: Uhh, yeah? I thought that was the idea.
00:16:47 <alise> Gregor: My brain thought I'd be writing a framebuffer driver in C for Linux XD
00:16:50 <alise> I am a bit dim.
00:16:54 <alise> It is /dev/fb, right?
00:16:55 -!- pikhq has quit (Read error: Connection reset by peer).
00:16:59 <Gregor> alise: fb0 IIRC
00:17:03 <Gregor> Since you can have multiple fbs.
00:17:06 <alise> Ah, indeed.
00:17:07 <Gregor> (Hypothetically)
00:17:41 <alise> changeset: 158:9ab2534af7a7
00:17:41 <alise> branch: dev
00:17:41 <alise> tag: tip
00:17:41 <alise> user: ehird@localhost.localdomain
00:17:41 <alise> date: Mon Jun 28 00:17:59 2010 +0100
00:17:42 <alise> summary: *** empty log message ***
00:17:45 <alise> How do you obliterate a commit from hg's log?
00:17:51 <alise> darcs obliterate, hg ?
00:17:59 <Gregor> If it's the last one, hg rollback
00:18:05 <alise> Yay.
00:18:08 <alise> summary: Now the JS ctx saves the mips reference, so you can introspect in horrible ways.
00:18:10 <alise> Cthulu OS
00:18:21 <alise> abort: no username supplied (see "hg help config")
00:18:23 <alise> Ohh, fuck you.
00:19:45 <Gregor> What's that error from?
00:19:46 * alise installs vim to write commit messages with...
00:19:54 * alise rethinks, installs nano.
00:20:00 <alise> Already is. How convenient.
00:20:03 * alise sets EDITOR=nano
00:21:13 <alise> * Copyright (C) 2010 Elliott Hird
00:21:13 <alise> * See mit.txt for license. */
00:21:16 <alise> Ha! My very own file!
00:21:18 <alise> */* above all that
00:21:35 <alise> Gregor: Those getTC* functions... wtf are they?
00:21:41 <alise> termios stuff?
00:21:55 <Gregor> Yup *bleh*
00:22:05 <Gregor> I believe that the termios stuff is set up to be resilient to them being missing.
00:22:10 <Gregor> But lemme verify that ...
00:22:21 <Gregor> Yup.
00:22:29 <Gregor> You don't have to implement them if they're not meaningful for you.
00:22:34 <alise> Good.
00:22:50 <alise> ais523: do you know the /dev/kbd protocol? Say yes.
00:22:56 <ais523> no
00:23:07 <ais523> also, yes, but only because you told me to say it
00:23:09 <alise> ais523: I am sad now.
00:23:11 <alise> ais523: Yay.
00:23:22 <ais523> hmm, but I don't actually know the protocl
00:23:23 <ais523> *protocol
00:23:30 <ais523> so I just said yes in response to nothing in particular to fulfil the request
00:23:43 <alise> but you did what i asked
00:25:50 <alise> Gregor: hmm, it's PS/2
00:25:52 <alise> (/dev/kbd)
00:25:55 <alise> gotta be easy right? P
00:25:56 <alise> *:P
00:27:37 <alise> Or, no, it's anything. But PS/2 primarily.
00:27:42 <alise> *primarily PS/2.
00:27:48 <alise> I need pikhq, he knows this stuff :P
00:28:30 <alise> Gregor: Wait... fb0 is a Linux thing. So we'll be running a Linux-only driver on... nothing. X_X
00:28:51 <Sgeo_> If I can build a NAND gate, does that imply turing completeness?
00:29:02 <Sgeo_> Or, well, given the existance of memory limitatiojns
00:29:51 <alise> No.
00:30:14 -!- ais523 has quit (Remote host closed the connection).
00:30:56 <alise> Gregor: What the hell protocol is /dev/fb0....
00:30:57 <alise> *...
00:30:58 <Sgeo_> But I thought you could build any logic system with just NAND?
00:31:04 <alise> Sgeo_: Logic systems have no control structures.
00:31:14 <alise> Besides, only boolean logic, not actual logic formalisms.
00:34:35 * Gregor reappears.
00:34:59 <alise> /dev/fb0 has, I think, the same protocol as VGA text memory, only ... bigger.
00:35:06 <Gregor> alise: The driver is only Linux-only because it's designed for a Linux device, I doubt that it does anything wildly Linux-specific.
00:35:15 <alise> [ehird@ping jsmips]$ sudo cat -v /dev/fb0 | head -c50
00:35:15 <alise> M-*M-*M-*^@M-*M-*M-*^@M-*M-*M-*^@M-*M-*M-*^@M-*M-*
00:35:18 <alise> Gregor: Well, yeah, but still.
00:35:23 <Gregor> I thought the "protocol" of /dev/fb0 was that you just write shit to it, it's just a raw framebuffer :P
00:35:24 <alise> Anyway, I have no idea what that /dev/fb0 structure is.
00:35:32 <alise> Gregor: Yes, but I mean, how do you get text to appear.
00:35:35 <alise> Because there's colours and shit.
00:35:39 <alise> Is it the two-byte VGA format?
00:35:53 <alise> I mean, there's devfb, so obviously it's a common format to all video devices.
00:35:58 <Gregor> Uhhh ... /dev/fb0 is never a text console is it? It's always graphics
00:36:03 <alise> Well, whatever.
00:36:12 <alise> [ehird@ping jsmips]$ sudo wc -c /dev/fb0
00:36:12 <alise> 10485760 /dev/fb0
00:36:16 <alise> Not sure how that number is calculated.
00:36:33 <Gregor> Idonno ... what's your resolution?
00:36:46 <alise> 1280x1024. But the framebuffer isn't configured for that, I don't think, with vga=.
00:36:51 <alise> Yes it is.
00:36:56 <alise> So 1280x1024, which != that number.
00:37:06 <alise> In fact it's smaller.
00:37:10 <Gregor> 1280*1024*8 = that number
00:37:14 <alise> No, wait, it's bigge.
00:37:15 <alise> *bigger.
00:37:16 <alise> Right.
00:37:18 <Gregor> Not that that's much of an explanation.
00:37:22 <alise> Gregor: So, 8 bytes... colour?
00:37:22 <Gregor> I was expecting *3 :P
00:37:24 <Gregor> Or maybe *4
00:37:27 <alise> That's 64 bit colour XD
00:37:33 -!- Geekthras has joined.
00:37:33 <Gregor> Woooh
00:37:37 <alise> Gregor: I am pretty sure the framebuffer can do text.
00:37:47 <alise> I mean, shit doesn't manually draw the character shapes ... right?
00:37:52 <alise> Like the bootup console.
00:38:01 <Gregor> That's a different device I think.
00:38:12 <alise> It's the framebuffer.
00:38:15 <Gregor> Same physical device, different virtual device, that is.
00:38:25 <alise> Well, it's definitely part of the framebuffer.
00:38:56 <Gregor> I know that the framebuffer drivers implement text modes ... but that's not exposed through fb0, that's just for having a text console on systems that can't do VGA text (like all non-PCs for example)
00:39:26 <alise> Okay.
00:39:32 <alise> So... WTF is /dev/fb0's protocol.
00:39:35 <alise> It can't just be raw pixels.
00:39:39 <alise> 64-bit colour I think not.
00:39:49 <Sgeo_> What can I do with something that outputs and toggles when it receives a signal?
00:39:52 -!- pikhq has joined.
00:39:57 <Gregor> I thought it was just raw pixels. Try dd'ing it and seeing if you can make any sense of it given that you know what your screen looks like.
00:39:57 <alise> pikhq: Hey! What is /dev/fb0's format?
00:40:01 <Gregor> Maybe it's just double-buffered.
00:40:02 <alise> It's pixels_on_screen*8.
00:40:16 <alise> Gregor: It's empty because I'm not using the framebuffer, dude :P
00:40:31 <alise> Rather, it's filled with the same continually-repeating pattern.
00:40:37 <alise> ^@M-*M-*M-*
00:40:40 <alise> (when cat -v'd)
00:40:43 <Gregor> Ohyeah :P
00:41:26 <pikhq> alise: It's raw pixels, twice the size of the raw display.
00:41:38 <alise> pikhq: but ... why twice the size?
00:41:53 <alise> Also, 32-bit colour? Why? There's no "transparency" on raw graphics :P
00:42:04 -!- Geekthras has quit (Ping timeout: 248 seconds).
00:42:08 <pikhq> There's ioctls that let you change which portion of the buffer is displayed.
00:42:16 <Gregor> HA! I knew it was double-buffered.
00:42:19 <Gregor> I'm so friggin' smart.
00:42:20 <pikhq> Thus letting you get double-buffering.
00:42:33 <alise> Gregor: Does fbdev use those ioctls? If yes, is it optional?
00:42:33 <Gregor> It's 32-bit just so that you can treat it as an int array :P
00:42:38 <alise> Say no, or yes no.
00:42:42 <pikhq> 32-bit colour is commonly used by video cards because it's more convenient.
00:43:03 <Gregor> I'm sure fbdev does, and I'm sure if you just turned it off and always wrote to the first buffer it would work, just not have the benefits of double-buffering.
00:43:16 <pikhq> fbdev does use those ioctls.
00:43:27 <alise> But can you stop it using 'em?
00:43:36 <pikhq> No.
00:43:36 <alise> Because, let's face it, double-buffering on this is irrelevant.
00:43:40 <alise> pikhq: Gah.
00:43:45 <alise> Gregor: Your job is to implement the ioctl shit.
00:44:19 <Gregor> ioctl = always set errno to ENOTSUP and return -1.
00:44:19 <Gregor> Done.
00:44:21 <Gregor> :P
00:44:31 <pikhq> This is how it does things like figuring out the color map, the size of the display, etc.
00:44:42 <alise> pikhq: gah
00:44:50 <alise> Could we easily rewrite it to ... just hardcode them?
00:45:02 <pikhq> Yes.
00:45:20 <Gregor> Consider that the temporary solution though, eventually there's no reason not to add all the right ioctls.
00:45:20 <alise> Good.
00:45:28 <alise> Yeah.
00:45:36 <alise> Double-buffering will be irrelevant anyway: this will be Glacial OS.
00:45:40 <Gregor> 640x480x32 is all anybody should need anyway.
00:45:43 <alise> pikhq: So, what's the PS/2 /dev/kbd protocol? :P
00:45:56 <pikhq> alise: Uh, "fuck if I know".
00:46:04 <alise> Gregor: You know... if we just add sockets and optimise this, it'll be a hit. "Use your favourite applications anywhere" :D
00:46:07 <alise> pikhq: Well... start knowing
00:46:19 <pikhq> alise: You know what would be easier?
00:46:24 <pikhq> *Start with the SDL driver*.
00:46:33 <alise> Okay, wait, so do things using the framebuffer just fseek() around it and write chars there, then flush?
00:46:45 <Gregor> Heynow. That may be true. Adding a new SDL backend may be simpler.
00:46:48 <pikhq> Obviously, make it not use SDL, but still, that should be the easiest to work with.
00:46:57 <Gregor> Oh :P
00:47:13 <alise> ...meaning that /dev/fb just has to be an in-memory file, and it just has to be totally read and ... okay, now *that* sucks.
00:47:16 <pikhq> Given that once SDL's going, all it's doing is *writing pixels and reading keyboard data*.
00:47:16 <alise> Fuck /dev/fb :P
00:47:28 <alise> SDL driver for kdrive?
00:47:33 <alise> Nope, it's for X.org. So we can't use it.
00:47:35 <pikhq> alise: They mmap /dev/fb.
00:47:42 <pikhq> Kdrive also has an SDL driver.
00:47:46 <alise> pikhq: Not in the latest tree.
00:47:55 <alise> http://cgit.freedesktop.org/xorg/xserver/tree/hw/kdrive/
00:47:56 <pikhq> xorg-server-1.7.6 has it.
00:47:57 <alise> Only in the old CVS.
00:48:00 <pikhq> I'm *reading it as we speak*.
00:48:22 <pikhq> (xorg-server-1.7.6 is the latest stable version of the X server, BTW)
00:48:31 <alise> http://cgit.freedesktop.org/xorg/xserver/tree/hw/kdrive?id=ba2ba32e04f9002dbb60f10e174ac63d16e5f507
00:48:32 <alise> Fair enough.
00:48:33 <pikhq> (erm. LAtest stable in Gentoo)
00:48:36 <alise> Must have been removed in the 1.8 transition.
00:48:41 <alise> http://cgit.freedesktop.org/xorg/xserver/tree/hw/kdrive/sdl/sdl.c?id=ba2ba32e04f9002dbb60f10e174ac63d16e5f507
00:48:43 <alise> * Copyright © 2004 PillowElephantBadgerBankPond
00:48:45 <alise> s/ $//
00:48:55 <alise> * It's really not my fault - see it was the elephants!!
00:48:56 <alise> * - jaymz
00:49:03 <alise> * PillowElephantBadgerBankPond DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
00:49:03 <alise> * EVENT SHALL PillowElephantBadgerBankPond BE LIABLE FOR ANY SPECIAL, INDIRECT OR
00:49:08 <alise> I like it already.
00:49:19 <pikhq> Hah.
00:49:26 <alise> Okay, so, Gregor! Your job is to modify http://cgit.freedesktop.org/xorg/xserver/tree/hw/kdrive/sdl/sdl.c?id=ba2ba32e04f9002dbb60f10e174ac63d16e5f507 :P
00:49:50 <pikhq> Oh, BTW. The format of /dev/kbd is: scan codes.
00:50:08 <alise> Awesome
00:50:19 <alise> I don't know scancodes :(
00:50:20 <Gregor> pikhq: How do you distinguish keydown from keyup
00:50:44 <pikhq> Gregor: You get the scancodes whenever the key is down. :)
00:53:04 <pikhq> Hmm. It'd also be easy to just port SDL, I'd imagine.
00:53:15 <Gregor> I think so
00:53:42 <pikhq> Hmm. Actually, SDL has an aalib backend.
00:53:45 <pikhq> DONE!
00:54:12 <Gregor> lawl :P
01:01:02 <alise> Gregor: So, can I just use your system.html for shit and it'll work?
01:01:05 <alise> Wait, no, I need PHP.
01:01:05 <alise> Jeez.
01:01:29 <Gregor> Unfortunately, it does need to run on a server and have access to PHP, yeah >_>
01:01:35 <Gregor> There's no totally static filesystem.
01:02:01 <alise> Here, how about this: I'll implement /dev/null and /dev/zero, and you compile it all together :P
01:02:37 <Gregor> You should be able to compile it, and if you just make init/init.c not touch the filesystem, you can even run ... well, something.
01:02:47 <alise> I don't have a cross-compiler or anything.
01:02:48 <alise> So nyah.
01:03:00 <Gregor> Eventually you'll need a cross-compiler :P
01:03:01 <alise> And I need to use the fs to test /dev :P
01:03:09 <alise> Eventually. Not today! Tomorrow I face living hell, so not tonight.
01:03:20 <alise> ...do I need to implement write if I have putchar?
01:03:20 <Gregor> Ohyah, fs for /dev, whoops X-D
01:03:23 <alise> Or vice versa?
01:03:23 <Gregor> No
01:03:28 <alise> So I can just have write.
01:03:35 <alise> Then why does stdout have both? :P
01:03:46 <alise> Do I need flush?
01:04:01 <Gregor> Only if it's meaningful for you.
01:04:14 <alise> How does getchar signify EOF?
01:04:18 <alise> *signal
01:04:27 <Gregor> EOF
01:04:34 <Gregor> (There's a variable "EOF" with the value -1 :P )
01:04:47 <alise> function DevNull() {}
01:04:47 <alise> DevNull.prototype.write = function(str) {}
01:04:47 <alise> DevNull.prototype.getchar = function() { return EOF; }
01:04:49 <alise> That was stunningly easy.
01:05:02 <Gregor> That's not how getchar works.
01:05:07 -!- Oranjer has joined.
01:05:09 <alise> How does it work? this.buffer crap?
01:05:24 <alise> function DevNull() { this.buffer = new Array(); }
01:05:24 <alise> DevNull.prototype.write = function(str) {}
01:05:24 <alise> DevNull.prototype.getchar = function() { this.buffer.push(EOF); }
01:05:24 <Gregor> Because getchar is blocking, and making blocking things in a PITA in JS, it takes a function, and calls that function with the value gotten.
01:05:24 <alise> Good?
01:05:32 <alise> Oh. Jeez.
01:05:39 <Gregor> DevNull.prototype.getchar = function(into) { into(EOF); }
01:05:48 <Gregor> *is a PITA in JS
01:05:49 <alise> k, dammit, not into.
01:05:52 <alise> k is for kontinuation. :P
01:06:14 <alise> function DevNull() {}
01:06:15 <alise> DevNull.prototype.write = function(str) {}
01:06:15 <alise> DevNull.prototype.getchar = function(into) { into(EOF); }
01:06:15 <alise> function DevZero() {}
01:06:15 <alise> DevZero.prototype.write = function(str) {}
01:06:15 <alise> DevZero.prototype.getchar = function(into) { into(0); }
01:06:17 <alise> Tada.
01:06:23 <Gregor> Good enough for me.
01:06:48 <alise> Gregor: OK, wanna give me an hg account?
01:06:54 <alise> Actually, I may still have one...
01:06:59 <alise> commit URL?
01:07:04 <alise> abort: push creates new remote branches: dev!
01:07:05 <Gregor> Same.
01:07:05 <alise> Waah?
01:07:08 <alise> Just use -f?
01:07:11 <Gregor> That's just a warning, use -f
01:07:11 <Gregor> Yeah
01:07:18 <alise> What would my user be?
01:07:21 <alise> ehird?
01:07:26 <Gregor> Idonno, probably? If you have one :P
01:07:28 * Gregor checks
01:07:29 <alise> I think I do.
01:08:05 <cheater99> anyone here know if it is possible to make an endless loop on the Zuse Z3?
01:08:15 <cheater99> it is TC
01:08:18 <Gregor> alise: Nope.
01:08:48 -!- pikhq has quit (Read error: Connection reset by peer).
01:08:50 <Gregor> cheater99: If it's TC, then it's possible to make a never-ending computation, although perhaps not as an infinite loop per se (infinite recursion or whatnot)
01:09:08 <alise> Gregor: Gimme one :P
01:09:23 <Gregor> https://codu.org/projects/trac/jsmips/register
01:09:26 <cheater99> well, i would like to hopefully create a program for it that controls 16 outside lamps and turns them on and off in a repeating cycle
01:09:43 <alise> Gregor: Dude, that's so conformist.
01:10:14 <alise> Gregor: Give ehird some sexy pushing privileges
01:10:43 <Gregor> Granted
01:12:27 <alise> Gregor: Please assemble a sexy system.html from the dev branch.
01:12:31 <alise> If it doesn't work, yell at me.
01:13:02 <alise> Gregor: Hey ho, trac doesn't understand branches.
01:13:07 <alise> So it's displaying my changes as the main branch.
01:13:25 <Gregor> Trac's repo browser sucks assface.
01:13:25 <alise> Gregor: Wait.
01:13:29 <alise> I forgot to add dev.js :P
01:13:33 <Gregor> I was just about to say :P
01:14:24 <alise> Okay, do it now.
01:14:34 <cheater99> anyone ever done any Plankalkuel?
01:14:43 -!- pikhq has joined.
01:14:45 <cheater99> http://en.wikipedia.org/wiki/Plankalk%C3%BCl
01:15:12 <Gregor> alise: You didn't add dev.js to the Makefile :P
01:15:13 <cheater99> Plankalkül (German pronunciation: [ˈplaːnkalkyːl], "Plan Calculus") is a computer language developed for engineering purposes by Konrad Zuse. It was the first high-level non-von Neumann programming language to be designed for a computer and was designed between 1943 and 1945.
01:15:40 <alise> Gregor: I'm just practicing very granular commits!
01:15:46 <alise> Okay, now do it.
01:16:06 <Gregor> cat dev/null was a really stupid thing for me to do...
01:16:24 <Gregor> Hm, something's wrong ...
01:16:48 -!- oerjan has quit (Quit: Later).
01:16:48 <alise> Eh? cat /dev/null should just do nothing.
01:16:50 <alise> What's wrong?
01:16:53 <alise> And publish it dammit :P
01:17:12 <Gregor> OH
01:17:16 <Gregor> I know what's wrong.
01:17:26 <alise> Wut?
01:17:28 <alise> Elaborate.
01:17:47 <Gregor> Your DevNull is an open file, but you have it as a node in the filesystem with no implementation of open.
01:17:53 <Gregor> Just add an open that returns itself.
01:17:58 <Gregor> return this; that is.
01:18:17 <Gregor> And apparently I have literally zero error reporting for that situation HOORAY!
01:18:19 <alise> Same with /dev/zero?
01:18:23 <Gregor> Yeah
01:18:54 <alise> Pushing.
01:19:02 <alise> Gregor: Fixed. And please publish it so I can try it :P
01:19:04 <alise> dev.html or something.
01:19:15 <Gregor> That was the plan, but one step at a time.
01:20:44 <alise> :P
01:20:51 -!- Geekthras has joined.
01:21:44 <alise> <Gregor> cat dev/null was a really stupid thing for me to do...
01:21:46 <alise> Don't you mean /dev/zero? :P
01:21:52 <alise> catting /dev/null is perfectly harmless.
01:22:06 <Gregor> It should've been harmless, but instead it blocked forever when it couldn't open()
01:22:12 <alise> XD
01:24:54 <Gregor> OK, uploading to Codu
01:25:09 -!- Geekthras has quit (Remote host closed the connection).
01:25:10 <Gregor> http://codu.org/jsmips/dev.html
01:26:27 <alise> Gregor: It works! Yay!
01:26:34 <Gregor> Ayup
01:26:36 <alise> Note: cat /dev/zero is UNHOLILY SLOW.
01:27:11 <alise> wtf is sigaltstack, anyway?
01:28:21 <Sgeo_> I think I'm making an RS flip-flop
01:29:44 <alise> Wow, it is too hot in here.
01:29:46 <Gregor> alise: I basically have no idea :P
01:29:58 <alise> # ls -l dev
01:29:58 <alise> total 32768
01:29:58 <alise> crwxrwxrwx 1 0 0 Jan 1 00:00 null
01:29:58 <alise> crwxrwxrwx 1 0 0 Jan 1 00:00 zero
01:30:05 <alise> /dev/zero is totally empty. True story.
01:30:12 <alise> Also, wow @ those permissions XD
01:30:25 * alise tries to rm /dev/null
01:30:25 <Gregor> ^^
01:30:29 <alise> Not supported!
01:30:36 <Gregor> rm is unsupported period :P
01:31:06 <alise> Please make it support backspace.
01:32:50 <Gregor> It's the shell that sucks, not the actual support of backspace.
01:33:00 <Gregor> The shell just doesn't know how to interpret it properly.
01:33:04 <Sgeo_> Given an RS flip flop, are there any logic gates I can make?
01:33:33 <alise> Gregor: Please compile openbsd ksh.
01:33:35 <alise> Or busybox ash.
01:33:47 <Gregor> busybox ash is probably difficult to separate from busybox.
01:33:50 <Gregor> Maybe dash?
01:34:06 <alise> Just use busybox.
01:34:08 <alise> It's good. :P
01:34:33 <Gregor> It will probably be an ENORMOUS pain to port, sincea lot of it is fairly Linux-specific.
01:35:15 <alise> Ah.
01:35:17 <alise> OpenBSD ksh, then.
01:35:21 <alise> Or dash, but preferably OpenBSD ksh.
01:35:29 <alise> Sec.
01:35:32 <alise> I'll find you the portable version.
01:35:36 <Gregor> But ... that's Korn ...
01:35:49 <alise> Gregor: http://github.com/dryfish/openbsd-pdksh
01:35:53 <alise> Gregor: It's actually quite good.
01:36:13 <alise> It's just like dash or whatever, but BSD-licensed and ... just cool, basically.
01:36:16 <alise> Tab completes and everything.
01:36:32 <Gregor> I'm pretty sure dash is BSD-licensed, actually.
01:36:40 <Gregor> Why don't you build yourself a cross-compiler and port it yourself :P
01:36:42 <alise> Who cares, pdksh is better :P
01:36:49 <alise> Gregor: Won't need porting.
01:36:50 <alise> It's portable.
01:37:14 <Gregor> That's what you think X-D
01:37:17 <Sgeo_> I think my Internet access is dying
01:37:27 <alise> Gregor: Dude, the BSD guys wrote it and it was specifically modified to be portable.
01:37:28 <alise> Yeah, it's portable.
01:37:55 <Gregor> No, I don't mean that it's not portable, I mean that it'll still require porting because JSMIPS is a pretty sucky UNIX :P
01:39:28 <alise> Eh, just try it :P
01:40:38 <pikhq> Yeah, but it's written by the OpenBSD guys. The only thing they obsess about more than portability is security.
01:42:06 <Gregor> Unlike NetBSD, which cares more about portability than ... pretty much everything ever.
01:42:30 <alise> NetBSD haven't written a ksh.
01:42:56 <pikhq> You may know OpenBSD for such things as OpenSSH and OpenSSL. ;)
01:43:05 <Sgeo_> I have successfully created an RS flip-flop in Active Worlds
01:43:15 <pikhq> Both highly portable and highly secure.
01:43:43 <Gregor> And both highly ... highly ... EVIL.
01:44:01 <pikhq> How so?
01:44:02 <Sgeo_> Wasn't the OpenSS.. something issue Debian's fault?
01:44:23 <pikhq> Sgeo_: Yes, that was Debian's fault.
01:44:49 <Gregor> I forgive Debian for it.
01:44:51 <Gregor> 'cuz I love 'em.
01:45:05 <alise> Feck Debian.
01:45:54 <pikhq> I'd rather not.
01:46:48 <pikhq> Hmm. If I can get a reasonably small statically linked interpreter for a scripting language, I may implement a coreutils in that instead of using busybox.
01:46:54 <alise> What? Abstract projects are sexy!
01:46:58 <alise> pikhq: Just use Go :P
01:47:05 <alise> Also, hey, coreutils is MY job.
01:47:09 <pikhq> "Reasonably small" meaning "sufficiently small that I'd imagine I'd gain something from this", of course. :)
01:47:31 <pikhq> alise: I'll have a FURINIKUSU system running before this happens.
01:47:46 <alise> pikhq: I Will SUE you
01:47:49 <alise> *will
01:47:53 <alise> In a court of law, Trenton, New Jersey.
01:47:59 <alise> *law in Trenton
01:48:32 <pikhq> I will move to Canada and lose my American citizenship.
01:48:34 <Sgeo_> This experimental flip-flop takes 1 second to read
01:48:40 <pikhq> Just to avoid that lawsuit.
01:48:49 <pikhq> :P
01:49:05 <pikhq> I will then demand that Canada hand me a passport, as they are obligated to do.
01:49:37 * pikhq mutters that X11 requires wide char support in uClibc
01:49:46 <alise> This is when the real part of the Lebesgue-Probability of an event is not equal to zero. If the probability of rolling a five on the Lebesgue Dice were 0.5+i, then the we expect on average after 10 rolls, five never to appear 5 times and the disappear through another dimension. No isomorphism has been found between Complex Probability and a standard group, and the Manning-McArdle Conjucture states that Complex-Probability does not lead to consistant answers
01:49:46 <alise> unless the imaginary part is equal to some integer times the square root of 7.
01:50:04 <Gregor> Just build coreutils into the kernel.
01:50:19 <Gregor> So that every coreutils "binary" is a device.
01:50:31 <alise> echo /dev/null >/dev/cat
01:50:32 <alise> cat /dev/cat
01:50:32 <pikhq> Gregor: Building in the entire filesystem contents.
01:50:33 <pikhq> :)
01:51:15 <alise> So, has anyone other than Phantom read The Culture novels?
01:51:46 <Gregor> Maaan nomath.js is the best-named file EVER.
01:53:08 <alise> I suggest you rename it math.js.
01:57:11 <Gregor> The name is so bad I almost don't want to rename it, just to remember the lunacy.
01:57:34 <Gregor> intmath would be the best name, actually.
01:57:40 <Gregor> It's emulating the math as done by C ints.
01:58:15 <pikhq> Gregor: JSMIPS runs at a decent speed in Chromium, BTW.
01:58:29 <Gregor> In Chrome it's friggin' awesome, I know.
01:58:32 <alise> Should go faster than Firefox.
01:58:58 <pikhq> Slow? Sure. But it's fast enough that it feels like an actual computer.
01:58:59 -!- augur has quit (Remote host closed the connection).
01:59:06 <alise> Wow.
01:59:18 -!- augur has joined.
01:59:32 <pikhq> Aside from, y'know, network latency.
01:59:46 <alise> fff
01:59:49 <alise> clyde broke
01:59:53 <pikhq> ?
01:59:58 <alise> arch package manager tool thing
02:00:04 * alise upgrades with pacman
02:00:13 <alise> Gah, wants to update everything.
02:02:35 <pikhq> Hmm. ffmpeg's just gotten itself a vp8 decoder...
02:02:54 <pikhq> Comes out to 1,400 lines of code for the entire thing.
02:03:10 <pikhq> An order of magnitude smaller than the official library.
02:03:36 <alise> That's because anything Fabrice Bellard touches is amazing.
02:05:43 <pikhq> Yes.
02:06:01 <pikhq> Fabrice Bellard is one damned smart guy.
02:09:05 -!- Oranjer has left (?).
02:09:11 -!- tpw_rules has joined.
02:09:16 <tpw_rules> hey
02:09:31 <alise> Hi.
02:09:31 <tpw_rules> i just made my own language, and i think i cheated with the OISC designation
02:09:57 <alise> :)
02:09:58 <tpw_rules> the instruction is move, but it has like a billion different ways it can do so
02:10:03 <alise> Is there a page on the wiki for it?
02:10:15 <tpw_rules> move @$20, #doreturn =2 <-- move the literal word to $20 only if the third flag is set
02:10:16 <alise> Seems not.
02:10:17 <tpw_rules> no, not yet
02:10:27 <alise> #doreturn?
02:10:27 -!- BeholdMyGlory has quit (Remote host closed the connection).
02:11:08 <tpw_rules> doreturn is a label
02:11:11 <tpw_rules> # means literal
02:11:43 <Gregor> Memory-mapped computation
02:11:45 <tpw_rules> that's a sample from my 99 bottles of beer on the wall program
02:12:00 <tpw_rules> does that qualify as an OISC?
02:12:13 <Gregor> Idonno, maybe? It's all debatable.
02:12:14 <alise> tpw_rules: Well... not really. But sort of.
02:12:17 <alise> It's all vague.
02:12:38 <Gregor> But the words "memory mapped computation" are so awesome it's OK :P
02:12:40 <alise> I think if your definition includes a lot of "if some X thing is this hard-coded literal Y, behave differently", it's not really an OISC
02:13:02 <tpw_rules> but flags are ALU status flags
02:13:05 <tpw_rules> like that's if zero
02:13:40 <tpw_rules> cause that's the only thing i could think of with that way to provide conditionals
02:17:25 <tpw_rules> http://pastie.org/1021261 those are my notes on it
02:18:10 <alise> yeah that's not really oisc
02:18:12 <alise> not really
02:18:27 <tpw_rules> :/
02:19:20 <tpw_rules> how could i implement conditionals to make it a proper OISC?
02:19:34 <alise> see e.g. subleq
02:19:37 <alise> http://esolangs.org/wiki/Subleq
02:19:59 <tpw_rules> no i mean on my current implementation
02:24:37 <Gregor> alise: I just womped some stuff to keep JSMIPS' namespace clean. I updated the dev branch too, so pull.
02:25:09 <alise> Womped?
02:25:47 <Gregor> The major difference is that 1) the output jsmips.js is now contained in one giant function and B) everything that's exposed outside of JSMIPS proper is stored in the window.jsmips object.
02:25:56 <Gregor> 1) and B). You heard me.
02:26:01 <Sgeo_> I think I inadvertantly built a transistor.
02:26:18 <alise> Gregor: Doctor Who, eh.
02:26:21 <Gregor> alise: Anyway, the only change to your code was to put your stuff in window.jsmips so that server/dir.php could see it.
02:26:31 <Gregor> alise: Uhh ... no?
02:26:33 <alise> window.jsmips?
02:26:47 <Gregor> 's just an object with JSMIPS-exposed stuff in it.
02:27:06 <Gregor> "window" is the name for the global scope in JavaScript, I'm just saying "window.jsmips" to be explicit :P
02:27:08 <alise> Why does server/dir.php want to see it?
02:27:15 <tpw_rules> well bye
02:27:15 <Gregor> To create DevNull objects
02:27:16 -!- tpw_rules has left (?).
02:27:19 <alise> But it ... already works.
02:27:31 <Gregor> I just don't like polluting the global namespace as much as I was.
02:27:40 <alise> I guess my Doctor Who reference was too obscure, huh.
02:29:38 <alise> THE DOCTOR
02:29:38 <alise> Okay, okay, just hush! First things
02:29:38 <alise> first. One, we're gonna climb
02:29:38 <alise> through this ship. B, no, two,
02:29:38 <alise> we're gonna reach the Bridge.
02:29:39 <alise> Three, or C, we're gonna save the
02:29:41 <alise> Titanic. And coming in at a very
02:29:43 <alise> low four, or D, or that little i-v
02:29:45 <alise> in brackets they use on footnotes,
02:29:47 <alise> why? Right then! Follow me -
02:30:12 <Sgeo_> Tell me if this is not a transistor: A signal goes from A to B only if there's a signal C
02:31:29 -!- pikhq has quit (Read error: Connection reset by peer).
02:32:38 -!- pikhq has joined.
02:33:12 <pikhq> ../../../libtool: line 964: X--tag=CC: not found
02:33:12 <pikhq> :(
02:35:02 * Sgeo_ wonders what time it is in UKland
02:37:20 <Sgeo_> Any answer?
02:37:50 <alise> 2:38
02:42:37 <alise> pikhq: Say, how can I check if subtracting two unsigned integers overflows?
02:42:42 <alise> Eh, never mind.
02:54:50 <alise> Aw man, you can't write a simple assembler.
02:54:54 <alise> Because you have to have a lookup table of strings.
02:55:50 -!- zzo38 has joined.
02:56:22 <Ilari> Fun to do portably: take two ints, a and b. Compute a + b or signal if it overflows...
02:58:29 <alise> Easier with positive ints only:
02:58:39 <alise> int c = a+b; if (c<a||c<b) argh();
02:58:39 <alise> No?
02:58:46 <alise> Erm.
02:58:50 <alise> int c = a+b; if (a<c||b<c) argh();
03:00:00 <Ilari> Signed ints that is...
03:01:36 <Ilari> Actually, Better yet: in: signed int a, signed int b: out: 1 if a + b fits in signed int, 0 otherwise.
03:03:15 <alise> Well, the most we can add to a and still fit in a signed int is INT_MAX - a.
03:03:28 <alise> So for positive b, "return b < (INT_MAX - a);".
03:03:38 <alise> The most you can subtract and fit into a signed int is INT_MIN + a.
03:03:39 <alise> So:
03:04:12 <alise> return b == 0 || (b > 0 ? b < (INT_MAX - a) : b > (INT_MIN + a));
03:05:29 <alise> Ilari: Cheating? :)
03:06:09 <alise> Ilari: Hmm, but then if a = -INT_MAX I think this breaks.
03:06:39 <Ilari> I think it already breaks (becomes unportable) if a is negative.
03:07:50 <alise> With signed integers, once there has been overflow, Undefined Behaviour has occurred and your program can do anything (for example: render tests inconclusive).
03:08:01 <alise> So we have to not do the operation at all.
03:08:17 <alise> if ((x >= 0) && (a > INT_MAX - x)) /* `a + x` would overflow */;
03:08:17 <alise> if ((x < 0) && (a < INT_MIN - x)) /* `a + x` would underflow */;
03:08:18 <alise> apparently.
03:09:18 <alise> http://www.fefe.de/intof.html
03:10:21 <Ilari> I don't think the first code would work even with well-defined 2's comlement overflow.
03:11:34 <Ilari> That latter looks better.
03:23:19 <zzo38> In C, are there any memory leaks or crashes if you use the wrong number of arguments to sprintf() or any other variable argument function?
03:24:47 <pikhq> No memory leaks, but possibly very odd behavior.
03:31:05 -!- zzo38 has left (?).
03:37:37 <alise> I guess goodnight. Anything interesting before I go? Gregor?
03:37:51 <Gregor> I was eating :P
03:37:53 <Gregor> So no.
03:37:59 <alise> Righty ho then.
03:38:05 <alise> Gah, but it's only just starting to get light.
03:38:08 <alise> Oh well, goodnight.
03:38:15 -!- alise has quit (Quit: Leaving).
03:38:18 <pikhq> Your shit's tarded and you talk all fag-like.
03:38:42 <Gregor> What a bizarre statement :P
03:38:54 <pikhq> Yup.
03:40:19 <Gregor> So yeah ... JSMIPS is awesome.
03:40:29 <Gregor> It was /pretty/ awesome before, but now it's awesomely awesome.
03:41:39 <pikhq> Hah.
03:41:48 <pikhq> What'd you change to make it awesomely awesome?
03:45:22 <Gregor> Everything I've done since Friday? The speed, the bugfixes, everything.
03:45:30 <Gregor> I was just basking in my own glory.
03:45:53 <pikhq> I've not been able to follow it much.
03:46:06 <pikhq> Still: nice.
03:46:15 <pikhq> JSMIPS is pretty nice work.
03:46:18 -!- aschueler has joined.
03:47:44 <Gregor> pikhq: I hugely improved the speed, fixed a bunch of bugs, GNU coreutils compiles for it now, my math primitives aren't all fucked up ...
03:48:37 -!- Geekthras has joined.
03:49:12 <pikhq> Gregor: Awesome.
03:52:51 -!- Geekthras has quit (Remote host closed the connection).
03:59:56 -!- coppro has joined.
04:01:24 -!- zzo38 has joined.
04:15:16 <Sgeo_> What's MIPS?
04:16:58 -!- Geekthras has joined.
04:17:28 * Sgeo_ wonders how difficult it would be to implement MIPS when every logic gate is a pain which takes up valuable, scarse space
04:18:48 <Sgeo_> 32 registers? I assume each register would hold 32-bit numbers?
04:18:53 <Sgeo_> That's excessive
04:19:25 * Sgeo_ wonders what 8-bit instruction sets there are
04:20:26 <pikhq> Welcome to RISC, Sgeo.
04:20:55 <Sgeo_> Wikipedia says that MISC is an RISC
04:21:00 <pikhq> Those registers are in lieue of other things, like "direct memory access".
04:21:02 <Sgeo_> erm, MIPS
04:21:25 -!- Geekthras has quit (Ping timeout: 264 seconds).
04:21:31 <Sgeo_> Anyway, I'd like to know an 8-bit, or even better, 4-bit architecture
04:21:40 <pikhq> The opcodes operate on registers. Your memory access consists of load and store.
04:21:49 <pikhq> 4-bit? Uh.
04:22:14 <pikhq> That's... 15 bytes of address space.
04:22:22 <Sgeo_> 15 bytes is a LOT of memory
04:22:55 <pikhq> Dude, an 8086 has more than that in its registers.
04:23:11 <Sgeo_> An 8086 is not built within active worlds
04:23:31 <Sgeo_> Where each transistor takes up valuable space and is unbearably slow
04:23:34 <pikhq> Fine, fine.
04:23:36 <pikhq> 4004.
04:23:54 <pikhq> The Intel 4004 was a 4-bit microprocessor, and also the first microprocessor.
04:24:43 <pikhq> Oh, wait. It has 12-bit addressing and 4-bit words.
04:25:06 <pikhq> Because 4 bit addressing was damned small, even in *1971*.
04:26:26 <Sgeo_> How difficult can it be to make my own instruction set?
04:27:35 <Sgeo_> Maybe I should just implement boolfuck
04:27:38 <pikhq> Trivial.
04:27:50 <pikhq> You may want to implement a register-based move machine.
04:27:53 <pikhq> Those are easy.
04:33:33 <Sgeo_> Hm.
04:33:44 <Sgeo_> Suppose all computers were destroyed. How would we go about making more?
04:34:53 <pikhq> I'd hunt down that crazy bastard who did integrated circuitry in his *basement*.
04:35:00 <pikhq> And bootstrap from there.
04:35:26 -!- zzo38 has quit (Quit: zzo38).
04:35:28 <Sgeo_> How did he do that?
04:35:44 <Sgeo_> And linky?
04:35:45 <pikhq> (apparently only requires a few hundred bucks to do basic ICs. Granted, you're literally building individual *transistors* at that point, but still.)
04:37:11 <pikhq> http://hackaday.com/2010/03/10/jeri-makes-integrated-circuits/
04:38:47 <pikhq> Alternately, we'd start back at vaccum tubes.
04:39:11 <pikhq> These are much easier to make: you just need a glass blower, a decent machinist, and a way to get a good vaccum.
04:39:50 <Sgeo_> Is there enough written documentation to be able to say, read and understand the data on HDs?
04:39:57 <Sgeo_> TO get more documentation?
04:40:03 <Sgeo_> Or are we assuming that HDs are dead too?
04:40:39 <pikhq> They're well-enough understood, but very, very hard to extract data from.
04:40:54 <pikhq> You need a computer to do it.
04:41:13 <pikhq> (exception: *really* old hard drives. Ones with a literal "0/1" bit pattern on the platter.)
04:41:46 <Sgeo_> "literal"? What's the alternative?
04:42:04 <Sgeo_> You.. don't mean written or punched, do you?
04:42:31 * Sgeo_ wonders how a punchcard HD would work
04:42:56 <pikhq> Hard drives tend to have complex encoding schemes.
04:43:28 <pikhq> Since magnetism is very, very analog.
04:43:49 <Sgeo_> Oh, for redundancy, not compression
04:44:10 <pikhq> Also compression.
04:44:39 <Sgeo_> How difficult would it be to make a computer in an environment where an RS Flip-Flop requires 4 objects
04:45:13 <pikhq> Not exceptionally.
04:45:21 <pikhq> http://web.cecs.pdx.edu/~harry/Relay/index.html Here's one.
04:45:49 <pikhq> I love that machine.
04:46:11 <Sgeo_> Hm
04:47:31 <Sgeo_> http://i.imgur.com/8DEx1.jpg
04:49:27 <Sgeo_> Shall I explain?
04:52:40 <Sgeo_> That wasn't rhetoric, even though it should be.
04:52:45 <Sgeo_> *rhetorical
04:55:37 <Sgeo_> I just realized that a flip-flop in AW should be able to hold 1 of several states
04:58:03 * Sgeo_ wonders if he could build a 4-quat computer and make it run MIPS
05:00:42 -!- oerjan has joined.
05:01:29 <Sgeo_> How does MIPS deal with events? Interrupts, I think?
05:02:07 <Sgeo_> I think I bored pikhq
05:17:31 -!- augur has quit (Remote host closed the connection).
05:17:54 -!- augur has joined.
05:19:48 <Gregor> Sgeo_: Interrupts.
05:19:54 <Gregor> Well, I improved JSMIPS' filesystem. Now it doesn't work.
05:20:08 <Sgeo_> Fuckin' interrupts, how do they work?
05:20:17 <Sgeo_> [Seriously, I don't know]
05:20:36 <Sgeo_> And would it be difficult to implement a system that could deal with them in a limited transistor environment
05:20:40 <Gregor> The CPU has an interrupt vector. When some hardware or software event occurs, it jumps to the address in the interrupt vector.
05:20:54 <Sgeo_> Actually, I think [and hope] that most logic gates won't need transistors
05:21:44 <Gregor> Mind, JSMIPS doesn't emulate interrupts at all.
05:21:50 <Gregor> It's just an ISA simulator, not a system simulator.
05:22:05 <Sgeo_> ....so, how does interaction work?
05:22:23 <pikhq> System calls.
05:22:35 <Gregor> System calls go to the JavaScript kernel.
05:22:46 <pikhq> JSMIPS is essentially emulating a UNIX system on MIPS.
05:22:58 <pikhq> Key point: *UNIX system*. It has a kernel.
05:23:20 <Gregor> A kernel which doesn't run on the MIPS simulator, it's just JavaScript magic.
05:23:43 <pikhq> Hey, an OS kernel really *doesn't* need to actually be in the same language as the userspace, does it. :)
05:24:14 <Gregor> It's not just not in the same language, it's not on the same platform :P
05:24:57 <pikhq> Still.
05:26:02 <Sgeo_> But doesn't imput rely on interrupts?
05:26:15 <pikhq> Not in userspace.
05:26:23 <Sgeo_> Wait, you're not emulating a full chip? Why not?
05:26:28 <Sgeo_> Then it wouldn't have to be UNIX
05:26:40 <Sgeo_> Or am I confused as to what you're doing
05:26:41 <Gregor> Then it would be even slower than it already is.
05:26:47 <Sgeo_> So?
05:26:57 <Gregor> My goal is not to run arbitrary MIPS code, my goal is to run C code. In particular, vim.
05:27:24 <pikhq> His goal is to have a UNIX userspace. He seems to have had some success with that.
05:27:31 <Sgeo_> My goal is to make a computer in Active Worlds
05:27:43 <Gregor> pikhq: I think I've had a lot of success, frankly :P
05:27:58 <pikhq> Oh, right. You've got coreutils.
05:28:11 <pikhq> Complete success.
05:28:24 <Sgeo_> Question: Is a transistor simply that a signal gets from A to B only if C is receiving a signal?
05:28:27 <Sgeo_> I mean, logic-wise?
05:28:44 <Gregor> Sgeo_: I think so? But I honestly thought there was something more to it :P
05:28:52 <pikhq> Analog or digitally.
05:28:58 <Sgeo_> Digitally
05:29:14 <Sgeo_> If I can make a transistor, I can make any logic gate, right?
05:29:21 <pikhq> Yes.
05:29:30 <pikhq> Though a logic gate may be easier to make.
05:29:44 <Sgeo_> But I will have demonstrated turing-completeness in Active Worlds
05:29:49 <pikhq> True.
05:29:49 <Sgeo_> Well, not literally TC
05:29:55 <Sgeo_> But as close as any computer can be
05:29:56 <pikhq> Literally TC.
05:30:15 <pikhq> Active Worlds doesn't have designed-in finiteness, does it? ;)
05:30:44 <Sgeo_> Actually, there is an extent of finiteness
05:31:09 <Sgeo_> Each cell can hold only a certain amount of data, and there's a hard cut-off that you can't see past 200m
05:31:21 <Sgeo_> So, finite number of transistors
05:32:02 <Sgeo_> Is being a switched controlled by a signal close enough to being a transistor?
05:36:00 <Sgeo_> Hm, I don't think so
05:36:14 <Sgeo_> Well, I guess the AW Transistor will require intricate timing
05:39:46 <Sgeo_> I don't see a way to do it without having one of the signals in be out of phase with the other
05:39:51 <Sgeo_> Which may be problematic,.
05:40:00 <Sgeo_> I might need to figure out how to define current
05:42:58 -!- oerjan has quit (Quit: leaving).
06:10:50 -!- Geekthras has joined.
06:15:54 -!- Geekthras has quit (Remote host closed the connection).
06:19:46 <Sgeo_> I see how to turn a parallel bus into a delay-based value
06:21:46 <Sgeo_> The inverse, however, seems insurmountable
06:24:57 -!- cal153 has joined.
06:25:16 <Sgeo_> No, it's not
06:25:36 <Sgeo_> Have the bit for 1 toggle whether it will allow another object to have a signal or not every second
06:25:45 <Sgeo_> bit for 2 toggle every 2
06:25:46 <Sgeo_> etc
06:34:55 <coppro> okay, this is awesome, but why is my VLC in ASCII mode?
06:35:46 <Gregor> DISPLAY is unset?
06:35:56 <Gregor> So it defaulted to the aalib backend?
06:36:28 <Gregor> Observation: Chrome will happily hand JavaScript 100MB of memory.
06:36:35 <fizzie> It might even default to the first backend (in some order) that manages to initialize correctly.
06:37:01 <coppro> Gregor: no, it's making a window
06:37:09 <coppro> it's just rendering with caca instead of real video
06:38:36 <fizzie> I can't vouch for VLC, but at least mplayer can run aalib/caca into stdout without making a X window; it would be a singularly useless feature otherwise.
06:39:17 <Gregor> fizzie: I assume that by "useless" you of course mean "awesome"
06:39:28 <pikhq> Gregor: Well, yeah. Chrome leaves the system with 100MB of RAM to give. :P
06:39:58 <fizzie> Gregor: Well, I guess... but I've mostly used it for "previewing" videos over SSH to choose the right one.
06:40:30 <Gregor> OMG
06:40:34 <coppro> fizzie: I'm sure VLC can too, if only I could work out why it's using it
06:40:35 <Sgeo_> Easy ASCII porn!
06:40:44 <Gregor> That's ... an actual use for the aalib/caca backends D-8
06:40:50 <Gregor> I thought they were just utter lunacy!
06:40:55 <Gregor> But here you've gone and used them for a point!
06:41:01 <Gregor> This turns my whole world on its head.
06:41:21 <Sgeo_> An esotericer doing something for a point is, itself, a miracle.
06:41:22 <coppro> well, that would be fantastic if it weren't for the existence of X forwarding
06:41:45 <Gregor> X forwarding is friggin' slow.
06:42:01 <fizzie> X forwarding especially over a piddly ADSL link is oh-so-slow. But admittedly I could use it to look at the first few frames of the video.
06:42:03 <Gregor> AnMaster: I fixed stat'ing in JSMIPS. JUST FOR YOU.
06:42:27 <pikhq> Gregor: NX makes X forwarding quite usable.
06:42:41 <pikhq> I've even used it on this satellite link.
06:42:53 <pikhq> Yes. High-latency X11.
06:43:57 <coppro> ah, there we go
06:49:06 <coppro> nope
06:49:09 <coppro> whoa, think I found out why
06:49:14 <coppro> for some reason vlc wasn't fully installed
06:49:32 <coppro> the binary existed but the package wasn't installed
06:50:38 <coppro> there we go
06:54:10 -!- myndzi\ has joined.
06:57:28 -!- myndzi has quit (Ping timeout: 276 seconds).
07:07:14 * Sgeo_ starts thinking in terms of N-Delays and S-Delays
07:27:21 -!- Geekthras has joined.
07:32:02 -!- Geekthras has quit (Ping timeout: 260 seconds).
07:32:44 -!- MizardX has quit (Ping timeout: 248 seconds).
07:34:31 -!- tombom has joined.
07:38:25 -!- augur has quit (*.net *.split).
07:38:25 -!- pikhq has quit (*.net *.split).
07:46:40 <Sgeo_> S-Signal -> N-Signal; N-Delay -> S-Delay
07:46:49 <Sgeo_> "animate me" is N-Signal-free
07:47:55 -!- GreaseMonkey has joined.
07:47:59 <Sgeo_> Awsistors receive an S-Signal and turn it into an S-Signal or N-Signal or both with an S-Delay of its previously stored/received N-Delay
07:48:26 <Sgeo_> I should write this down someplace other than here.
07:55:17 -!- sebbu has quit (Ping timeout: 260 seconds).
07:58:59 -!- augur has joined.
07:58:59 -!- pikhq has joined.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:25:18 <AnMaster> Gregor, thanks. ;P
08:26:10 -!- Geekthras has joined.
08:31:58 -!- Geekthras has quit (Ping timeout: 264 seconds).
08:33:52 <Sgeo_> Hm, The Last Airbender is coming out soon?
08:33:55 <Sgeo_> I want to see it
08:34:48 <coppro> actually?
08:34:56 <Sgeo_> hm?
08:35:25 <Sgeo_> What, your saying the casting issues should be a problem?
08:35:29 <Sgeo_> *you're
08:37:00 <Sgeo_> I've been randomly disconnecting all day
08:37:14 <coppro> no, I'm questioning your desire to see a live-action adaptation of an anime
08:37:42 <Sgeo_> I don't think Avatar: The Last Airbender is strictly speaking an anime
08:41:19 <Sgeo_> Good night
08:44:35 -!- Geekthras has joined.
08:49:14 -!- Geekthras has quit (Ping timeout: 276 seconds).
08:56:33 -!- Geekthras has joined.
09:00:53 -!- Geekthras has quit (Ping timeout: 240 seconds).
09:01:57 -!- Geekthras has joined.
09:08:46 -!- Geekthras has quit (Ping timeout: 276 seconds).
09:26:50 -!- Geekthras has joined.
09:30:48 -!- calamari has quit (Quit: Leaving).
09:31:56 -!- Geekthras has quit (Remote host closed the connection).
09:54:53 -!- Geekthras has joined.
10:01:57 -!- Geekthras has quit (Ping timeout: 252 seconds).
10:02:21 -!- Geekthras has joined.
10:14:25 -!- Geekthras has quit (Ping timeout: 276 seconds).
10:19:04 -!- ais523 has joined.
11:11:50 -!- Geekthras has joined.
11:56:40 <ais523> can anyone remember where the BF Joust leaderboard is/was?
11:57:03 <ais523> !bfjoust test [[+]>]
11:57:10 <Deewiant> The wiki knows
11:57:13 <Deewiant> http://esoteric.voxelperfect.net/wiki/BF_Joust
11:57:15 <Deewiant> http://codu.org/eso/bfjoust/report.txt
11:57:32 <EgoBot> Score for ais523_test: 4.1
12:03:06 <Deewiant> !bfjoust maglev (>+>-)*4>++(>[+(-)*9[+]]->[-(+)*9[-]]+)*20
12:03:14 <EgoBot> Score for Deewiant_maglev: 25.4
12:03:43 <Deewiant> !bfjoust maglev (>+>-)*4>++(>[[+(-)*9[+]]]->[[-(+)*9[-]]]+)*20
12:03:50 <EgoBot> Score for Deewiant_maglev: 20.1
12:04:22 <Deewiant> !bfjoust maglev (>+>->)*4>++(>[+(-)*9[+]]->[-(+)*9[-]]+)*20
12:04:29 <EgoBot> Score for Deewiant_maglev: 11.3
12:04:54 <Deewiant> !bfjoust maglev (>+>--)*4>++(>[+(-)*9[+]]->[-(+)*9[-]]+)*20
12:05:02 <EgoBot> Score for Deewiant_maglev: 22.0
12:05:50 <Deewiant> !bfjoust maglev (>+>-)*3>++(>[+(-)*9[+]]->[-(+)*9[-]]+)*20
12:05:58 <EgoBot> Score for Deewiant_maglev: 21.5
12:06:03 <Deewiant> !bfjoust maglev (>+>-)*5>++(>[+(-)*9[+]]->[-(+)*9[-]]+)*20
12:06:11 <EgoBot> Score for Deewiant_maglev: 20.0
12:06:21 <Deewiant> !bfjoust maglev (>+>-)*4>++(>[+(-)*8[+]]->[-(+)*8[-]]+)*20
12:06:29 <EgoBot> Score for Deewiant_maglev: 27.0
12:06:55 <Deewiant> !bfjoust maglev (>+>-)*4>++(>[+(-)*7[+]]->[-(+)*7[-]]+)*20
12:07:02 <EgoBot> Score for Deewiant_maglev: 27.6
12:07:09 <fizzie> Why are your program names like that?
12:07:43 <Deewiant> They're like trains, choo-chooing along.
12:08:28 <ais523> looks like the only defense programs still on there are mine
12:09:47 <Deewiant> !bfjoust maglev (>+>-)*4>++(>[+(-)*6[+]]->[-(+)*6[-]]+)*20
12:09:54 <EgoBot> Score for Deewiant_maglev: 24.8
12:10:01 <Deewiant> !bfjoust maglev (>+>-)*4>--(>[+(-)*7[+]]->[-(+)*7[-]]+)*20
12:10:04 -!- GreaseMonkey has quit (Quit: I'm using NO SCRIPT WHATSOEVER - Download it at file:///dev/null).
12:10:08 <EgoBot> Score for Deewiant_maglev: 27.6
12:10:17 <ais523> a pity really, I like the idea of defence in BF Joust
12:10:22 <Deewiant> !bfjoust maglev (>+>-)*4>--(>[-(+)*7[-]]+>[+(-)*7[+]]-)*20
12:10:29 <EgoBot> Score for Deewiant_maglev: 27.9
12:10:51 <Deewiant> Your programs are too large to understand what they do :-P
12:11:16 <ais523> Deewiant: 9's a variant on 7, although I can't remember exactly what the difference is after this long
12:11:47 <ais523> 7 works by attempting to figure out the cycle speed of the other program's inner loop, like the [-] and [+] in your maglev, via experiment on a sentinel value
12:12:09 <ais523> once it knows what it is, it attempts to lock the other program into an infinite loop, by exploiting the loop itself, and meanwhile goes off and very slowly captures its flag
12:12:35 <ais523> there's also a tweak in there somewhere to detect other defence programs and attack them in a defence-program-breaking way
12:15:22 <Deewiant> Hmm; how do you do the locking? Do you somehow manage to wrap the flag around past 0 at the appropriate time?
12:15:38 <Deewiant> (I imagine that anything else is too slow to work)
12:15:54 <ais523> sorry, boss has called, but I'll explain later
12:16:33 <Deewiant> !bfjoust maglev (>+>-)*4>++(>[-(+)*7[-]]+>[+(-)*7[+]]-)*20
12:16:44 <EgoBot> Score for Deewiant_maglev: 27.9
12:19:13 <AnMaster> <ais523> can anyone remember where the BF Joust leaderboard is/was? <-- yes but it seems pointless to answer since you filter links
12:19:28 <AnMaster> or have you stopped doing that?
12:20:19 <Deewiant> !bfjoust maglev (>+>-)*4>++(>[-(+)*7[->-<]]+>[+(-)*7[+>+<]]-)*20
12:20:26 <EgoBot> Score for Deewiant_maglev: 0.0
12:20:38 <Deewiant> !bfjoust maglev (>+>-)*3>++(>[-(+)*7[->-<]]+>[+(-)*7[+>+<]]-)*20
12:20:45 <EgoBot> Score for Deewiant_maglev: 0.0
12:21:23 <Deewiant> !bfjoust maglev (>+>-)*3>++(>[-(+)*7[->(-)*32<]]+>[+(-)*7[+>(+)*32<]]-)*20
12:21:29 <EgoBot> Score for Deewiant_maglev: 5.6
12:22:07 <Deewiant> Hah, now it beats defend7 but nothing else
12:22:22 <Deewiant> That wasn't quite what I was going for
12:22:55 <Deewiant> !bfjoust maglev (>+>-)*3>++(>[-(+)*7[->(-)*64<]]+>[+(-)*7[+>(+)*64<]]-)*20
12:23:02 <EgoBot> Score for Deewiant_maglev: 5.8
12:23:06 -!- MizardX has joined.
12:23:07 <Deewiant> !bfjoust maglev (>+>-)*3>++(>[-(+)*7[->(-)*16<]]+>[+(-)*7[+>(+)*16<]]-)*20
12:23:14 <EgoBot> Score for Deewiant_maglev: 5.6
12:23:29 <Deewiant> !bfjoust maglev (+>->)*4++(>[-(+)*7[->(-)*32<]]+>[+(-)*7[+>(+)*32<]]-)*20
12:23:36 <EgoBot> Score for Deewiant_maglev: 5.0
12:24:04 <Deewiant> !bfjoust maglev (+>->)*4++(>[-[->(-)*32<]]+)*20
12:24:10 <EgoBot> Score for Deewiant_maglev: 0.0
12:24:20 <Deewiant> !bfjoust maglev (+>->)*4++(>[-(+)*7[->(-)*32<]]+)*20
12:24:27 <EgoBot> Score for Deewiant_maglev: 5.0
12:24:42 <Deewiant> !bfjoust maglev (+>->)*4++(>[+[->(-)*32<]]+)*20
12:24:49 <EgoBot> Score for Deewiant_maglev: 0.0
12:24:55 <Deewiant> !bfjoust maglev (+>->)*4++(>[(+)*5[->(-)*32<]]+)*20
12:25:02 <EgoBot> Score for Deewiant_maglev: 5.4
12:25:48 <AnMaster> Deewiant, seems not very successful against any but defend7
12:25:59 <Deewiant> That's what I just said
12:26:40 <Deewiant> !bfjoust maglev (+>->)*4++([>[(+)*5[->(-)*32<]]+]>)*16
12:26:47 <EgoBot> Score for Deewiant_maglev: 8.6
12:27:11 <Deewiant> !bfjoust maglev (+>->)*4++([->[(+)*5[->(-)*32<]]+]>)*16
12:27:18 <EgoBot> Score for Deewiant_maglev: 5.3
12:27:26 <Deewiant> !bfjoust maglev (+>->)*4++([(-)*2>[(+)*5[->(-)*32<]]+]>)*16
12:27:33 <EgoBot> Score for Deewiant_maglev: 8.6
12:28:03 <Deewiant> !bfjoust maglev (+>->)*4++([(-)*2>[(+)*5[->(+)*32<]]+]>)*16
12:28:09 <EgoBot> Score for Deewiant_maglev: 8.6
12:28:22 <Deewiant> !bfjoust maglev (+>->)*4++([(-)*2>[(+)*5[->(+)*33<]]+]>)*16
12:28:28 <EgoBot> Score for Deewiant_maglev: 8.3
12:28:39 <Deewiant> !bfjoust maglev (+>->)*4++([(-)*2>[(+)*5[->(+)*17<]]+]>)*16
12:28:46 <EgoBot> Score for Deewiant_maglev: 2.9
12:29:01 <Deewiant> !bfjoust maglev (+>->)*4++([(-)*2>[(+)*5[->(+)*25<]]+]>)*16
12:29:07 <EgoBot> Score for Deewiant_maglev: 0.8
12:29:14 <Deewiant> !bfjoust maglev (+>->)*4++([(-)*2>[(+)*5[->(+)*31<]]+]>)*16
12:29:21 <EgoBot> Score for Deewiant_maglev: 8.3
12:29:29 <Deewiant> !bfjoust maglev (+>->)*4++([(-)*2>[(+)*5[->(+)*27<]]+]>)*16
12:29:36 <EgoBot> Score for Deewiant_maglev: 8.3
12:29:41 <Deewiant> !bfjoust maglev (+>->)*4++([(-)*2>[(+)*5[-->(+)*27<]]+]>)*16
12:29:49 <EgoBot> Score for Deewiant_maglev: 0.0
12:30:17 <Deewiant> !bfjoust maglev (+>>)*4++([(-)*2>[(+)*5[->(+)*27<]]+]>)*16
12:30:25 <EgoBot> Score for Deewiant_maglev: 8.3
12:30:35 <Deewiant> !bfjoust maglev +(>)*8++([(-)*2>[(+)*5[->(+)*27<]]+]>)*16
12:30:42 <EgoBot> Score for Deewiant_maglev: 5.0
12:30:45 <Deewiant> !bfjoust maglev +(>)*8->+([(-)*2>[(+)*5[->(+)*27<]]+]>)*16
12:30:53 <EgoBot> Score for Deewiant_maglev: 7.3
12:31:16 <Deewiant> !bfjoust maglev (+>->)*4++([-->[(+)*5[->(-)*27<]]+]>)*16
12:31:23 <EgoBot> Score for Deewiant_maglev: 8.3
12:31:34 <Deewiant> !bfjoust maglev (+>->)*4++([-->[(+)*5[->(-)*32<]]+]>)*16
12:31:42 <EgoBot> Score for Deewiant_maglev: 8.6
12:31:56 <AnMaster> you know, while this is spammy it is actually on topic for once
12:31:57 <Deewiant> I'll just leave it at that then
12:32:01 <AnMaster> makes it hard to complain
12:32:14 <Deewiant> :-)
13:05:06 -!- kar8nga has joined.
13:30:08 <ais523> Deewiant: still there?
13:30:17 <Deewiant> Aye
13:30:41 <ais523> basically, there are ways to do locking
13:30:45 <ais523> *two ways to do locking
13:30:52 <ais523> one way, the riskier way, works as you've described
13:31:07 <ais523> the idea is to predict which cycle the enemy jouster will change the value to 0, and force it past
13:31:34 <ais523> that's used as a backup method when the defender can't figure out which direction the opponent's changing the value, but can figure out the cycle time, which happens occasionally
13:31:58 <ais523> the other method's using a long sequence of + or - to change the value faster in one direction than the other system's changing it in the other direction
13:33:07 <ais523> the second method's more reliable in a sense, because even if it gets the direction or the timing wrong, the value won't stay at 0 for two consecutive cycles unless the opponent's doing something like +-+-+-+-
13:33:36 <ais523> !bfjoust trivial_defend ([](+)*128)*1000
13:33:47 <EgoBot> Score for ais523_trivial_defend: 9.4
13:34:08 <ais523> heh, that actually beat all but the first of your maglevs
13:35:19 <Deewiant> Those maglevs tend to run off the edge of the tape
13:36:16 <ais523> well, that's the only way that trivial_defend can actually win
13:36:30 <Deewiant> Yep
13:36:56 <ais523> !bfjoust ghost_vibration (-)*128(+-)*10000
13:37:05 <EgoBot> Score for ais523_ghost_vibration: 9.2
13:37:20 <Deewiant> !bfjoust test >-<([](+)*128)*1000
13:37:33 <EgoBot> Score for Deewiant_test: 3.6
13:37:44 <ais523> ghost_vibration actually got 6 wins, but they were mostly against rubbish opponents
13:37:54 <Deewiant> !bfjoust maglev (+>->)*4++([-->[(+)*5[->(-)*32<]]+]>)*16
13:38:02 <EgoBot> Score for Deewiant_maglev: 7.9
13:38:14 <Deewiant> Bah, I can't run those two against each other
13:40:20 <ais523> I have a standalone BF Joust interp somewhere
13:40:39 <Deewiant> I probably have one at home too
13:40:47 <Deewiant> (But not here)
13:41:54 <ais523> ran it several times, maglev wins every time
13:42:18 <Deewiant> Alright, that's what I was expecting
13:47:03 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*5([+]>)*10
13:47:13 <EgoBot> Score for ais523_large_decoy_attack: 1.9
13:47:16 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*5([+]>)*20
13:47:23 <ais523> duh, that was stupid....
13:47:24 <EgoBot> Score for ais523_large_decoy_attack: 18.2
13:47:31 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*5(---[+]>)*20
13:47:42 <EgoBot> Score for ais523_large_decoy_attack: 38.7
13:47:50 <ais523> surprising how well a back-to-basics strategy can work sometimes
13:48:05 <ais523> that's the old BF Joust 1 tactic of gumming up the opponent's advance to your flag so you can reach theirs more quickly
13:48:12 <Deewiant> That's pretty much what all my programs are
13:48:29 <ais523> haha, it's actually fourth overall
13:48:36 <ais523> looks like the BF Joust metagame got a bit too centralised
13:48:48 <Deewiant> (Another reason why they're called trains. They just plow forward without thinking too much.)
13:49:33 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*7(---[+]>)*20
13:49:43 <EgoBot> Score for ais523_large_decoy_attack: 26.8
13:49:48 <Deewiant> Tape overrun
13:50:01 <ais523> probably not that, waiting forever is normally a recipe to lose anyway
13:50:07 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*5(---[+]>)*20
13:50:15 <ais523> well, apart from the four cases in which it overruns in the init
13:50:23 <EgoBot> Score for ais523_large_decoy_attack: 38.7
13:50:25 <Deewiant> Yes, those
13:50:33 <ais523> the idea is alise's idea, to insta-lose in some cases to give yourself a better chance in otehrs
13:50:34 <ais523> *others
13:50:34 <Deewiant> Even this one overruns the 10-length one
13:50:48 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*4>+++++(---[+]>)*20
13:51:02 <EgoBot> Score for ais523_large_decoy_attack: 20.0
13:51:08 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*5>+++++(---[+]>)*20
13:51:13 <ais523> strange how that makes such a difference...
13:51:17 <Deewiant> Your +++++--- is a bit counterproductive
13:51:18 <ais523> although I was missing a > in there
13:51:20 <EgoBot> Score for ais523_large_decoy_attack: 22.3
13:51:34 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*5>(---[+]>)*20
13:51:43 <EgoBot> Score for ais523_large_decoy_attack: 39.3
13:52:02 <ais523> heh, and meanwhile in my experimentation, I've pushed something that gives me trouble off the leaderboard
13:52:28 <Deewiant> Which one?
13:52:53 <ais523> no idea, haven't been keeping track
13:52:58 <ais523> but my score went up for the same program
13:53:04 <ais523> and as egojoust is deterministic...
13:53:04 <Deewiant> No, that's different
13:53:08 <Deewiant> You added a > after the *5
13:53:15 <ais523> oh, right
13:53:15 <Deewiant> Or forgot to remove, rather
13:53:22 <Deewiant> How's *4>
13:53:25 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*4>>(---[+]>)*20
13:53:35 <EgoBot> Score for ais523_large_decoy_attack: 40.7
13:53:37 <Deewiant> That'll overrun again with the 10 >
13:53:40 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*4>(---[+]>)*20
13:53:50 <EgoBot> Score for ais523_large_decoy_attack: 37.2
13:53:57 <Deewiant> Sigh
13:53:58 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*3>>>(---[+]>)*20
13:54:08 <EgoBot> Score for ais523_large_decoy_attack: 30.1
13:54:11 <Deewiant> I just can't live with that way of doing things, intentionally losing to win others :-P
13:54:13 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*4>>(---[+]>)*20
13:54:22 <ais523> I'll try with a *19
13:54:23 <EgoBot> Score for ais523_large_decoy_attack: 40.7
13:54:27 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*4>>(---[+]>)*19
13:54:38 <EgoBot> Score for ais523_large_decoy_attack: 37.5
13:54:43 <ais523> although ofc, that always loses on a /max/-length tape
13:55:10 <ais523> !bfjoust large_decoy_attack (>+++++>-----)*4>>(---[+]>)*19---[+](+)*1000
13:55:20 <EgoBot> Score for ais523_large_decoy_attack: 40.8
13:55:31 <ais523> heh, I wonder what that draws against that it was losing against before?
13:55:47 <ais523> nescience_shade, papparently
13:55:50 <ais523> *apparently
13:56:09 <Deewiant> What you've got is monorail with tweaked constants (minus the latest revision)
13:56:37 <Deewiant> Ah, and one loop less so it's a bit faster
13:56:57 <ais523> in general, in BF Joust, loops are bad
13:57:05 <ais523> the issue is that sometimes you have to use them to have a clue what the opponent's doing
13:57:28 <Deewiant> !bfjoust monorail (>+>-)*4>++>((-)*9[+]>)*20
13:57:40 <EgoBot> Score for Deewiant_monorail: 11.7
13:57:46 <Deewiant> !bfjoust monorail (>+>-)*4>++>([(-)*9[+]]>)*20
13:57:54 <EgoBot> Score for Deewiant_monorail: 34.4
13:58:02 <Deewiant> I like my loops :-)
13:58:07 <Deewiant> And have to go ->
13:58:24 <ais523> [+] is an incredibly dangerous thing to have in a program
14:12:13 <Sgeo_> Reddit's down?
14:15:00 <ais523> http://downforeveryoneorjustme.com/programming.reddit.com says it's down, and my tests agree with it
14:16:11 * Sgeo_ goes slightly insane
14:16:28 <Sgeo_> Also, what's the difference between an AND gate and a transistor?
14:16:42 <ais523> Sgeo_: transistors are analog devices
14:17:01 <ais523> one of the ways you can connect them happens to work vaguely like an AND gate, but chaining too many of them the analogy breaks down
14:18:46 -!- relet has joined.
14:20:27 <Sgeo_> Could power issues have anything to do with my clock issues?
14:20:40 -!- zzo38 has joined.
14:23:39 <zzo38> AERM is a mahjong rules that I wrote, I am not finished writing it yet. But please tell me if you have question/comment: http://zzo38computer.cjb.net/mahjong/anime_evolution/
14:23:59 <ais523> Sgeo_: possibly, most clock circuits don't keep good time if they have an unstable power supply
14:31:17 <zzo38> How can you make skin file in IP.Board or phpBB or another things, that has few CSS, no icons/images, but a lot of keyboard controls?
14:32:57 <ais523> zzo38: you'd need to use JavaScript to handle the keyboard controls
14:33:11 <ais523> together with keyboard events hooked onto appropriate objects, maybe the <body> tag in the template
14:34:49 -!- BeholdMyGlory has joined.
14:35:40 <zzo38> ais523: Yes I know you need JavaScript codes for the keyboard controls. But I don't know how to write these skin files anyways
14:35:53 <ais523> zzo38: try starting with an existing one and removing things from it
14:36:15 <zzo38> Where is the URL for existing one download?
14:36:56 <ais523> I don't know offhand, I don't use the Web much
14:39:32 <zzo38> Invision board had a lo-fi skin, but it still had some icons and had a lot of features didn't work. Now it is replaced by "IP.Board Mobile", which also has some icons/graphics and is still some features missing.
14:47:52 <zzo38> Is there a file to test Invision Board 3.1.1 skins without installing Invision Board?
14:49:10 <ais523> I doubt it, skins are normally pretty tightly linked to the forum software they're designed for
14:49:34 -!- Gracenotes has joined.
15:17:50 <pikhq> Gregor: How long until Plof runs on JSMIPS? :P
15:18:49 <pikhq> (yes, I realise you'd be much better off implementing a PSL interpreter in Plof.)
15:27:06 <pikhq> *Argh*. Xlib requires POSIX threads.
15:27:24 <pikhq> What's the smallest pthreads implementation?
15:28:55 -!- cpressey has joined.
15:31:16 <Deewiant> ais523: What's wrong with [+]
15:31:38 <ais523> Deewiant: it's easily exploitable
15:31:48 <pikhq> Well, linuxthreads works with uClibc. Guess that's what I'm using.
15:31:54 * pikhq mutters
15:32:01 <ais523> that's how defend7 gets most of its wins
15:32:06 <Deewiant> ais523: As opposed to [-]?
15:32:12 <ais523> that's just as exploitable
15:32:16 <Deewiant> Right
15:32:22 <ais523> egobf runs programs with + and - swapped as well as the original way round
15:32:25 <ais523> *egojoust
15:32:26 <Deewiant> Yes
15:32:36 <Deewiant> I thought you were making a statement about [+] versus [-]
15:32:53 <ais523> nah, just about tight loops
15:33:29 * pikhq rebuilds the build system AGAIN
15:34:51 <ais523> rerebuilding?
15:35:05 <ais523> in fact, reremetabuilding
15:35:14 <pikhq> Fortunately, what I'm doing is starting with a basic buildroot and going from there.
15:35:20 <pikhq> So it's not like it's too much *effort*.
15:35:38 <pikhq> Well. Kinda-basic. I have added enough to make it a build system.
15:37:53 <pikhq> I wish the libc could have less, but X11 *does* need a few things.
15:52:06 -!- kar8nga has quit (Remote host closed the connection).
15:56:13 -!- Phantom_Hoover has joined.
16:01:31 -!- augur has quit (Remote host closed the connection).
16:12:41 <Phantom_Hoover> Why does everyone use double instead of float?
16:13:40 <pikhq> Higher precision.
16:14:01 <Phantom_Hoover> Even when you don't really need that sort of precision?
16:14:30 <pikhq> There's also arcane promotion rules you need to consider when using floats in C.
16:14:44 <Ilari> And its about as fast anyway (at least on most desktop platforms)...
16:15:20 <Ilari> Pretty much only speed difference is because of double's larger size, so there's more data (to copy).
16:15:41 <Phantom_Hoover> Also, wouldn't dereferencing a pointer require loading the variable in question into a register, at least on x86?
16:15:51 <fizzie> And no-one really understands floating-point anyway, so they wouldn't be able to safely say whether they need the higher precision or not.
16:16:10 <fizzie> Phantom_Hoover: Not if you allow self-modification.
16:16:17 <Phantom_Hoover> Why?
16:17:05 <pikhq> Phantom_Hoover: Typically, but not necessarily.
16:17:16 <pikhq> On x86 there's a lot of really bizarre tricks you can do.
16:17:23 <Phantom_Hoover> What is self-modification in this context?
16:17:48 <pikhq> Particularly the addressing modes...
16:17:49 <fizzie> You can do rep movsb or somesuch to move the pointer value directly from memory to an operand of an opcode that uses it.
16:19:17 <Ilari> Heh... Self-modifiying code... Reminds me finding that DJGPP uses self-modifying code when issuing real-mode interrupts.
16:19:23 <fizzie> mov [0xffffffff], eax is valid, I think, and you can then overwrite the 0xffffffff bytes with a memory-move thing.
16:19:37 <fizzie> You could probably do some other tricks too.
16:19:44 <Phantom_Hoover> Self-modifying code is underused.
16:20:01 <Phantom_Hoover> The only thing I can think of that uses it on a fundamental level is Redcode.
16:20:16 <zzo38> I use double precision floating point for things that should use better precision, such as, mathematical graphing and stuff, such as in the WEBPLOT program (but WEBPLOT is not written in C anyways, but if it was it would still use double).
16:20:27 <Ilari> The code modifies the interrupt vector number (its initially 3, but gets overwritten with whatever value is needed).
16:20:47 <zzo38> C is not good for self-modifying code as much, but in Forth it can be done more easily
16:21:12 <pikhq> It's certainly possible in C. Just tricky.
16:21:21 <ais523> ooh, Bilski judged
16:21:33 <Deewiant> pikhq: And nonstandard/portable
16:21:37 <Deewiant> dobelx64 uses some self-modifying code, but not very much
16:21:45 <zzo38> Although, doing it in Forth can be different depending on te Forth system you use, in some cases.
16:21:55 <ais523> with a rather useless opinion, which is along the lines of "that particular patent is awful, but we aren't going to tell you the rules for patents in general, anyway they change over time"
16:22:17 <Phantom_Hoover> pikhq, how can you do it easily and portably?
16:22:17 <fizzie> I used a bit of self-modifying ARM code in a DS terminal emulator, and it worked fine in desmume, but failed miserably on a real DS; it has some form of instruction caching going on. Should've just used an indirect jump instead of trying to be too clever.
16:22:28 <pikhq> Phantom_Hoover: Use a higher level language.
16:22:43 <Phantom_Hoover> pikhq, you mean run C as an interpreter?
16:23:10 <pikhq> Phantom_Hoover: No, one that lets you modify the actual source code.
16:23:25 <zzo38> fizzie: Yes the ARM has instruction caching, and I would like to know how to disable it in some cases, but for other reasons as well other than just that
16:23:30 <Phantom_Hoover> Wait, so it changes its code and recompiles?
16:23:39 <Phantom_Hoover> That is so crazy it could nearly work.
16:23:59 <pikhq> ... You're overthinking this.
16:24:11 <zzo38> Phantom_Hoover: CLC-INTERCAL can do something like that, but it changes the meanings of the codes rather than changing the source-codes themself
16:24:25 <Phantom_Hoover> zzo38, CLC scares me.
16:24:25 <ais523> meanwhile, the Daily Mail mistake a twitter post by Fake Steve Jobs for actual news and post a story about how the IPhone is going to be recalled
16:24:38 <Phantom_Hoover> ais523, are you really surprised?
16:24:53 <ais523> Phantom_Hoover: yes, I didn't expect them to be quite /that/ sloppy
16:24:58 <pikhq> zzo38: Consider Tcl. Where you can get the source of a proc and replace it with a different proc.
16:25:01 <pikhq> Erm.
16:25:03 <pikhq> Phantom_Hoover: ^
16:25:18 <Phantom_Hoover> pikhq, this isn't really C, though?
16:25:22 <Phantom_Hoover> It's Tcl.
16:25:26 <Phantom_Hoover> s/?/./
16:26:25 <Sgeo_> Could an irregular power source harm my router?
16:28:08 <pikhq> Phantom_Hoover: Higher level language.
16:28:23 <Phantom_Hoover> pikhq, how is it self-modifying C, then?
16:31:56 <zzo38> I sometimes use self-modifying code, but of course it won't work when it is in ROM.
16:32:37 <zzo38> I sometimes use other tricks as well.
16:33:56 <zzo38> Such as, calling an interrupt using push and far indirect jumps, instead of using the INT command.
16:34:28 <zzo38> This is mostly to make interrupt return elsewhere, possibly with different states
16:35:15 <ais523> meanwhile, random and worrying stat: averaged across everyone in the entire world, the average person spends more than 2 minutes a day on Facebook
16:35:38 <zzo38> (Which is useful if the code that calls the interrupt will be overwritten by the time it returns!)
16:35:44 <ais523> I worry to think how much time that makes the average Facebook user spend
16:36:16 <Sgeo_> >.>
16:36:25 <pikhq> Phantom_Hoover: It isn't, that's the point.
16:36:37 <Phantom_Hoover> Bah!
16:37:05 <Phantom_Hoover> ais523, they might be like me and just have as a background tab.
16:39:15 <zzo38> I used these kind of call in MBR code, how many of these "tricks" are used commonly in MBR codes and others? B8 00 B8 8E C0 B0 70 B9 A0 0F 31 FF F3 AA B8 60 00 8E C0 B8 3E 02 B9 02 00 31 DB FA 9C 06 53 FF 2E 4C 00
16:40:56 <pikhq> zzo38: Assembly por favor
16:42:32 <zzo38> http://sprunge.us/eZeI
16:44:55 <Sgeo_> Weird, the microwave is tracking time decently
16:48:33 <zzo38> pikhq: I posted assembly codes that URL
16:50:49 <pikhq> zzo38: Mmm.
16:53:05 <zzo38> What I like to do is, have a BIOS code that is compatible with all IBM PC BIOS calls (unlike coreboot, which I think it can't use BIOS calls?), has switches on front panel for some things configure, and has Forth interpreter in ROM accessible by push key at boot and at interrupt 18h.
16:54:02 <zzo38> All CMOS setups can be done by Forth codes, such as CMOS-WRITE and CMOS-READ and that you can then boot a internet file by writing: $0000 GOPHER-BOOT= example.org 70 boot.bin
16:54:33 <zzo38> Or, by: $0000 S" example.org" 70 S" boot.bin" GOPHER-BOOT
16:54:41 <zzo38> And then have similar command for FTP-BOOT and HTTP-BOOT
16:55:06 <zzo38> And also GOPHER-LOAD FTP-LOAD HTTP-LOAD which is same but no boot, only load into memory
16:55:30 <Phantom_Hoover> http://en.wikipedia.org/wiki/User:ClueBot/Source
16:55:38 * Phantom_Hoover feels slightly nauseous.
16:55:48 <pikhq> zzo38: Coreboot can load a BIOS implementation.
16:56:07 <Sgeo_> Phantom_Hoover, because of the idea of writing a bot like that in PHP?
16:56:31 <Phantom_Hoover> Sgeo_, that, and the fact that the source is horribly ugly.
16:56:55 * Sgeo_ feels guilty about his own ugly source
16:59:28 <Phantom_Hoover> Don't worry, I've never even gotten around to write anything long enough to be ugly.
16:59:54 <Phantom_Hoover> Well, except maybe my half-functioning E-SNUSP intepreter.
17:01:09 <Sgeo_> What if someone vandalizes with {{nobots}}?
17:01:30 <Phantom_Hoover> I assume it ignores that tag.
17:01:55 <ais523> not all bots care about that tag
17:02:11 -!- hiato has joined.
17:02:15 <Sgeo_> "This bot is an exclusion compliant bot.
17:02:15 <Sgeo_> "
17:02:25 <Phantom_Hoover> Hmm...
17:02:35 <Phantom_Hoover> Meh, something else would catch you.
17:05:09 <zzo38> I should have BIOS codes like: PALETTE-SNOOP OFF CMOS-WRITE
17:05:28 <Phantom_Hoover> What for?
17:06:23 <Sgeo_> Actually, looking at the source, it vaguely looks like it checks the flag of what it's about to post.
17:08:40 <Sgeo_> It has a high regard for "Penisula"
17:18:55 -!- Gregor-P has joined.
17:19:02 <cpressey> Python uses doubles for its floating point values, and it still thinks 4.3 is 4.2999999999999998. Srsly, start Python interactively and type in "4.3 <enter>".
17:19:21 <Gregor-P> Welp, JSMIPS no longer works on IE :P
17:19:39 <Phantom_Hoover> cpressey, well known bug.
17:20:06 <Phantom_Hoover> Understandable, since 0.3 is a recurring decimal in binary.
17:20:06 <cpressey> Phantom_Hoover: What, the existence of Python? ;)
17:20:17 <pikhq> Gregor-P: Congrats on getting rid of that bug.
17:20:21 <Gregor-P> cpressey: That's not a size bug, it's a ftoa bug.
17:20:38 <cpressey> irb handles the number 4.3 just fine.
17:20:55 <Phantom_Hoover> cpressey, uses rationals by default?
17:21:36 <cpressey> erl and hugs both handle 4.3 fine too.
17:21:59 -!- sebbu has joined.
17:22:03 <Phantom_Hoover> !haskell :t 4.3
17:22:05 <EgoBot> 4.3 :: (Fractional t) => t
17:22:14 <Gregor-P> What I learned at PLDI this year: ftoa is a hell of a lot more difficult than it sounds.
17:23:01 <Phantom_Hoover> Gregor-P, unsurprising
17:23:24 <Phantom_Hoover> Since you can only represent binary fractions with floats.
17:23:48 <cpressey> And it appears that Ruby sees 4.3 as a Float type. So, this isn't just a problem with floating point.
17:23:57 -!- Gregor-W has joined.
17:24:14 <Gregor-W> See http://portal.acm.org/citation.cfm?id=1806596.1806623 , then go implement it in Python and celebrate!
17:24:16 <cpressey> Also, that "4.3.ceil" is valid syntax in Ruby is weird.
17:24:17 -!- Gregor-W has quit (Client Quit).
17:24:28 <Phantom_Hoover> cpressey, it really is a problem with floats.
17:24:31 <Phantom_Hoover> Think about it.
17:24:53 <cpressey> Phantom_Hoover: I said "isn't just a problem with floating point."
17:25:21 <Phantom_Hoover> I assume that the other things have just got sophisticated display code.
17:26:01 <cpressey> Rather, I assume Python lacks sufficiently intelligent display code.
17:26:37 <Gregor-P> Which it does, because ftoa is harder than it sounds ;)
17:26:43 <Phantom_Hoover> IIRC they tidied it up in 3.
17:26:46 <Phantom_Hoover> 0
17:27:58 <Gregor-P> You mean 2.9999999999998
17:28:36 <Phantom_Hoover> 3 is a binary fraction.
17:28:42 <cpressey> Beer to Mr. Richards!
17:33:16 <cpressey> And fizzie: your lesson with the DS there is "Never ever be clever".
17:33:45 -!- aschueler has quit (Quit: leaving).
17:39:01 <cpressey> zzo38: Ever play with ColorForth?
17:41:46 <cpressey> http://www.colorforth.com/
17:43:00 <cpressey> Apparently it's been put into silicon. Freaky.
17:45:25 <cpressey> I think I remember a quote from Moore about why he designed Forth: He wanted to be able to build more than a half-dozen programs in his lifetime. (He couldn't see how that would be possible if he were to have to write them in assembly, at the time.)
17:46:56 -!- kar8nga has joined.
17:47:49 <pikhq> Reasonable reason to build a language.
17:48:33 <cpressey> I agree. I like Chuck.
17:48:35 <pikhq> OMFG. Coreutils written in Forth: awesome or best idea ever?
17:50:57 <Gregor-P> pikhq: doit
17:51:19 <Gregor-P> pikhq: Then make 'em run on JSMIPS :P
17:54:19 <Phantom_Hoover> MIPS?
17:56:00 <pikhq> Hmm. Factor would be a bit nicer to write in. Though not quite as minimalist.
17:56:31 <Gregor-P> Or English. Just need an English VM.
17:56:59 <Phantom_Hoover> Ooh, Peter Jackson has expressed interest in a film adaptation of Mortal Engines.
17:56:59 <pikhq> (still pretty minimalist: it *is* a concatenative language, after all.)
17:57:36 <cpressey> I'm a bit disappointed that Linux doesn't appear to have any thinner a portable interface to its syscalls than libc. (Would love to be proven wrong on that.) That means a Forth for Linux has to either be machine dependent, or have a kernal written in C, or provide its own syscall abstraction layer.
17:57:59 <Phantom_Hoover> cpressey, it's hardly difficult.
17:58:08 <Phantom_Hoover> Oh, wait.
17:58:10 <cpressey> Phantom_Hoover: I didn't use the word "difficult".
17:58:24 <Phantom_Hoover> I have no idea what the calling convention is on non-x86 architectures.
17:58:24 <pikhq> cpressey: There is a thinner one.
17:58:29 <pikhq> The Linux VDSO.
17:59:23 <cpressey> pikhq: Interesting. I found: "Virtual Dynamically-linked Shared Object, a kernel-provided shared library that helps userspace perform a few kernel actions without the overhead of a system call, as well as automatically choosing the most efficient syscall mechanism. Also called the "vsyscall page". "
17:59:39 <cpressey> "A few" suggests it's not a complete interface, tho that glossary might be out of date.
18:00:05 <pikhq> It provides all the syscalls.
18:00:41 <cpressey> OK, so a Forth only has to provide .so-loading-and-linking capability (which I guess it should do anyway!) and it's set. Nice. Err, assuming there's not much platform-dependent about .so's... I don't recall.
18:01:29 <pikhq> Very platform-dependent, but generally consistent across architectures using the same kernel and libc.
18:01:47 <Phantom_Hoover> Linux doesn't have a proper dynamic linking thing, does it?
18:01:48 <Gregor-P> That .so is fake, built into the kernel and loader, you don't load it in the same way as other .sos
18:02:04 <pikhq> Gregor-P: Actually, just the kernel.
18:02:06 <pikhq> Phantom_Hoover: It does.
18:02:14 <Phantom_Hoover> ld just sticks some code that mmaps the appropriate sos?
18:02:19 <pikhq> Gregor-P: The loader gets passed the location of it as an argument.
18:02:19 <Phantom_Hoover> s/?/./
18:02:43 <pikhq> Phantom_Hoover: It has to actually copy read-write areas.
18:02:51 <pikhq> Like all dynamic linking.
18:02:52 <cpressey> As long as you don't have to call anything C-based / platform-specific to load the damn thing, I guess.
18:03:00 <Gregor-P> Phantom_Hoover: ld-linux.so
18:03:15 <pikhq> But yes, it just mmaps the read-only chunks.
18:03:21 <Gregor-P> cpressey: Shouldn't.
18:03:37 -!- Gregor-W has joined.
18:03:41 <Gregor-W> Tired of typing on my phone :P
18:03:53 <Gregor-W> pikhq: By "loader" I meant the kernel's ELF loader, not the dynamic loader.
18:04:08 <Gregor-W> Phantom_Hoover: Your statements about Linux's .so loading make it sound like Windows' PE/COFF. Shame on you
18:04:11 <pikhq> Gregor-W: Ah.
18:06:00 <pikhq> Phantom_Hoover: The one odd thing is that, on x86, the dynamic linker *allows* for non-PIC SOs. *These* are actually relocated, instead of dynamically linked.
18:06:16 <pikhq> This is mostly for backwards compatibility, but also allowing for how PIC has overhead on x86.
18:06:36 <pikhq> (*notable* overhead, that is.)
18:09:23 <zzo38> Gregor-W: Don't type on your phone, use a proper computer, please.
18:09:48 <Gregor-W> ... /me wonders what zzo38 thinks I logged in on another system for anyway
18:09:59 <Phantom_Hoover> Why are there all of these Gregors?
18:10:41 <Phantom_Hoover> THERE ARE TO MANY.
18:10:47 <Phantom_Hoover> s/TO/TOO/
18:11:47 <Sgeo_> Digital addition seems easier than I thought: XOR two bits for the value at that point, AND them for the carry, and XOR the carry with the result for the next .. wait, there's an ordering issue here
18:12:09 <Phantom_Hoover> Wait, it took you that long to find out?
18:12:37 <Sgeo_> It took me that long to bother to think it through for two seconds.. still the ordering issue though
18:13:41 <zzo38> Do any new IBM computers have ROM-BASIC?
18:14:11 <Gregor-W> I highly doubt it.
18:14:12 <ais523> I doubt it, somehow
18:14:24 <cpressey> Sgeo_: I find it easier to think about as its own operation on booleans, like: a ADD b => (r, c)
18:15:03 * Sgeo_ still wonders if analogue addition might be better
18:15:06 <cpressey> zzo38: I will go one further than "doubt it" and say OMG NO
18:16:02 <zzo38> What I think should be done is a Forth interpreter added to Interrupt 18h which runs if no bootable devices are found or if the DELETE key is pushed during BIOS boot
18:16:25 -!- MigoMipo has joined.
18:16:31 <Gregor-W> zzo38: Soooo, EFI.
18:16:35 <ais523> what does int 18h do normally?
18:16:54 <Gregor-W> (Doesn't EFI have Forth? I thought it inherited that from OpenFirmware .... maybe not)
18:16:54 <cpressey> zzo38: That's done in firmware these days, isn't it? So it's theoretically possible to add that.
18:17:05 <zzo38> ais523: I think on modern computer, just halts or reboots. Or asks the user to push any key to reboot.
18:17:16 <zzo38> On old IBM computers, Int 18h was ROM-BASIC.
18:17:56 <cpressey> Ah, I remember calling that one once, and I just got a message "ROM BASIC NOT AVAILABLE" while the machine hung. This was in 1999-ish.
18:18:19 <zzo38> Yes, some computers will say "ROM BASIC NOT FOUND, SYSTEM HALTED" or something like that.
18:20:20 <zzo38> You could have it when the computer is booted, it beeps and displays boot diagnostics and "Push <ESC> for fast POST; Push <DEL> for ROM-FORTH" and the current date/time, and then clears the screen and boots from the default boot device.
18:20:45 <zzo38> And then pushing <DEL> there will display the "ok" prompt and then you can type in DEFAULT-BOOT to have it boot normally anyways, as if you didn't interrupt the boot process.
18:20:49 -!- hiato has quit (Quit: underflow).
18:20:57 <cpressey> If you can't wedge in a Forth there, the next best thing would be to change that "MISSING BASIC ROM" message to: BAD MAGIC "MERCIFUL TO GIBBERING MOUTHERS"
18:22:18 <zzo38> Or it could also be changed to "MISSING BASIC ROM. PUSH DELETE TO ENTER SETUP, OR ELSE SYSTEM REBOOTS IN 30 SECONDS"
18:23:27 <zzo38> I don't know what BAD MAGIC "MERCIFUL TO GIBBERING MOUTHERS" is going to mean here! It doesn't even make much sense?
18:23:39 -!- Gregor-P has quit (Ping timeout: 240 seconds).
18:24:56 <ais523> BAD MAGIC means that the "magic number" at the start of ROM or a file is wrong, i.e. it's really corrupt
18:24:57 <zzo38> Forth systems can be very small, modern computers can probably store a Forth system in ROM for sure if you remove a few of the other things that are sometimes found in the ROM
18:25:00 <AnMaster> wasn't there some interrupt for calling extension roms? Like VGA ROM or ROM on other devices
18:25:02 <ais523> I don't get the rest of the joke though
18:25:07 <AnMaster> like network card or whatever
18:25:13 <AnMaster> was ROM-BAISC like that?
18:25:25 <zzo38> ais523: I know that is BAD MAGIC. But that's all
18:25:34 <cpressey> ais523: BAD MAGIC means exactly what I mean it to mean. :) The rest was a reference to something zzo38 was asking about a few days ago.
18:26:10 <AnMaster> cpressey, were you here when I mentioned the Lego RCX firmware validation magic?
18:26:15 <AnMaster> I think you were hm
18:26:32 <cpressey> AnMaster: Yes, but my IRC client filters out everything Lego-related.
18:26:36 <zzo38> I was on here when I read about the Lego RCX firmware validation magic for sure!
18:26:39 <AnMaster> cpressey, heh? ;P
18:26:51 * cpressey sometimes feels like the only surrealist in the room.
18:26:53 <zzo38> And it seem strangely
18:27:41 <AnMaster> cpressey, oh surrealism, right. Was unsure if it was that or really bad pun or you going mad (and/or a combination of those)
18:28:29 <AnMaster> zzo38, strangely what?
18:28:45 <zzo38> AnMaster: Just strangely
18:28:54 <AnMaster> zzo38, don't you mean "strange" then?
18:29:42 <zzo38> Is "MERCIFUL TO GIBBERING MOUTHERS" the cause of the bad magic, or is "MERCIFUL TO GIBBERING MOUTHERS" a suggested course of action to fix the problem? Surely even if this is the case, it still doesn't seem to make perfect sense to put that in the ROM BIOS message?
18:29:49 <zzo38> AnMaster: No, I mean "strangely"
18:31:39 <Gregor-W> Licensing mind game/flood: Let's say I add a special library name to my portable ELF loader that means "some POSIX-compliant host libc". So on GNU/Linux it loads /lib/libc.so.6, but on Windows it loads cygwin1.dll . Now, you write some code targetting my portable ELF loader, then release binaries (no source) under some restrictive license. cygwin1.dll is GPL, so anything "linked" against it must be GPL-compatible. Are you violati
18:31:42 <cpressey> zzo38: I thought it was that an attempt to be merciful to gibbering mouthers was made, but was intercepted by the system as a bad act of magic. I could be wrong though, since I made it up.
18:32:10 * cpressey will stop trying to be Zippy the Pinhead meets Giorgio de Chirico now.
18:32:20 <zzo38> cpressey: Ah, so that is what you meant (or think you meant) when you wrote that.
18:33:07 <ais523> Gregor-W: I'm not personally violating Cygwin's license, but anyone using my software, via the intended method, on Windows is; I might be in trouble for inducing copyright infringement as a result
18:33:17 <ais523> (in your hypothetical situation)
18:33:33 <ais523> this is pretty similar to the whole libreadline/libedit thing
18:33:37 <Gregor-W> I could make this hypothetical situation a reality in like fifteen minutes if I wanted to :P
18:33:47 <zzo38> Maybe you need to just not release binaries for Windows, should do it?
18:34:02 <Gregor-W> zzo38: But the binaries are platform-independent.
18:34:06 <ais523> Gregor-W: you need someone else to write the source
18:34:21 <zzo38> Gregor-W: What kind of binaries are you using?
18:34:29 <cpressey> Gregor-W: Perhaps it is "mere aggregation" then.
18:34:36 <ais523> it's clearly whoever causes cygwin to link against the restrictive-license binaries who's breaking copyright
18:34:37 * cpressey just loooooooves the GPL.
18:34:46 <ais523> not the author of either work individually
18:34:51 <Gregor-W> zzo38: In this hypothetical situation, ELF binaries targetting my super-special ELF loader that works on "all" platforms (at least Linux, Windows and Mac OS X)
18:35:09 <ais523> extreme simplification: suppose I go and link together Cygwin and Microsoft Windows, somehow. Is Microsoft now breaking the GPL?
18:35:29 <ais523> that's pretty much the same question you asked
18:35:32 <Gregor-W> ais523: Hm hm hm!
18:35:37 <cpressey> How is "link" defined legally?
18:35:43 <Gregor-W> cpressey: 'snot :P
18:36:06 <ais523> cpressey: the actual legal language is "create a derivative work"
18:36:06 <cpressey> So it's a matter of who's lawyers are better funded.
18:36:17 <ais523> and it's not quiet clear how that connects to linking
18:36:39 <zzo38> Gregor-W: I suppose what you have to do is, ensure the special ELF loader is under a Open-Source license (if it is the one that makes it link cygwin1.dll in the right place), and then do not package the ELF loader for Windows together with any other software!
18:38:45 <Gregor-W> zzo38: But surely packaging the loader along with the other software is just mere aggregation.
18:39:44 <zzo38> I don't know, I am not lawyer
18:40:17 <ais523> Gregor-W: I don't see how packaging is illegal; it's actually using the software together that's the issue
18:40:34 <zzo38> Using the software together for private use only should be OK.
18:40:42 <Gregor-W> ais523: Exactly! Yay for license lunacy :)
18:40:44 <zzo38> I think the GNU GPL permits it if it is private
18:41:03 <Gregor-W> But it's always private, you can't actually distribute them linked in this setup.
18:41:04 <ais523> Gregor-W: I don't see the problem here at all
18:41:10 <ais523> using the software != distributing the software
18:43:10 <Gregor-W> I'm really just pointing out that this is a wonderful way to work around the GPL :P
18:43:26 <ais523> Gregor-W: it's still inducing copyright infringement
18:44:01 <Phantom_Hoover> And then there's the wiki's public-domainness.
18:44:35 <Gregor-W> ais523: But you're never /distributing/ versions that have proprietary and GPL components linked together.
18:45:00 <ais523> Gregor-W: no, you aren't; you aren't infringing copyright; you're distributing a program that can't be used without infringing copyright
18:45:20 <ais523> the second is illegal, but under a different law, unless you have really strong disclaimers
18:46:06 <Gregor-W> It can be used without infringing copyrights, just not on Windows :P
18:46:17 <zzo38> It would probably be allowed to distribute a binary linked with GPL components if the source code license is compatible with the GPL, it doesn't have to be the GPL. Because the source-code can be used under the GPL to create those binaries and anyone else can also do the same.
18:46:51 <Gregor-W> Yes, that's trivially and always been true.
18:46:56 <AnMaster> ais523, um what exactly are you trying to link together here?
18:47:00 <Gregor-W> Which is why I made the license in this hypothetical a proprietary license.
18:47:07 <AnMaster> isn't Gregor-W's thing just a dynamic linker
18:47:24 <AnMaster> like the one glibc has, or any other *nix with dynamic linking
18:47:58 <Gregor-W> Yup
18:48:07 <AnMaster> Gregor-W, why would it then be illegal on windows?
18:48:26 <AnMaster> I don't get it to tell the truth
18:48:54 <AnMaster> I mean, lots of open source software links against windows DLLs when compiled on windows. Probably kernel32.dll and user32.dll at least
18:49:04 <Gregor-W> cygwin1.dll is GPL
18:49:22 <AnMaster> Gregor-W, that means only GPL software is in the official cygwin repos?
18:49:28 <AnMaster> well that or *BSD
18:49:29 <Gregor-W> GPL-compatible
18:49:29 <AnMaster> or similar
18:50:10 <AnMaster> Gregor-W, but it would link against closed source windows DLLs like the ones I mentioned above
18:50:15 <AnMaster> this makes no sense
18:50:26 <zzo38> Although Cygwin is GPL, it has an exception which allows any Open-Source software to link with it
18:50:36 <zzo38> Not necessarily GPL or even GPL-compatible
18:50:58 <AnMaster> hm
18:51:47 <zzo38> I think we might have decided in the past, that the Vonkeror license is not Open-Source but is still compatible with the GPL.
18:52:02 <AnMaster> why isn't it open source? MPL?
18:52:28 <zzo38> I think it still qualifies as Free-Software though.
18:53:08 <zzo38> The reason it isn't Open-Source, is apparently, because it says: This software is licensed under GNU GPL v3 or later version. The workers of Conkeror are allowed to revert it to the Conkeror tri-license.
18:53:30 <zzo38> Apparently the "workers of Conkeror" clause makes it not Open-Source. (Or so I have been told)
18:53:58 <AnMaster> oh btw that reminds me of an issue I ran into recetly. If your kernel is under MPL, what happens to user space? To complicate things the system has no well defined limit between kernel and user space (embedded system with no MMU, syscalls as normal calls). On the other hand your user space code is not linked statically against the kernel, well until it is downloaded over IR to the device.
18:54:14 <AnMaster> so the question is: does the user space code have to be MPL?
18:55:28 <AnMaster> ais523, ^
18:55:48 <ais523> I don't know, offhand, but MPL's a pretty weird license
18:55:59 <zzo38> I suppose only if they are distributed together or if the kernel header files are included as part of the program source-code. But I am not sure
18:56:19 <AnMaster> <ais523> the second is illegal, but under a different law, unless you have really strong disclaimers <-- you know. Windows can be used to infringe copyright. Thus it should be illegal!
18:57:03 <AnMaster> it has notepad and mspaint, both can easily be used to infringe copyright in various ways! And what about IE!?
18:57:18 <ais523> AnMaster: it's not about whether it can be used to infringe copyright, but about whether it strongly encourages infringing copyright
18:57:51 <cpressey> "The workers of Conkeror are allowed to revert it to the Conkeror tri-license" -- Seems silly to say, to me. The copyright holder of a work is always allowed to switch license on it, just not retroactively.
18:58:10 <AnMaster> ais523, MS does certainly by having such a painful EULA!
18:58:16 <cpressey> The great thing about open source is how it got every non-lawyer crafting license agreements.
18:58:32 <zzo38> cpressey: Not if there are multiple copyright holders in this case, you still have to agree everyone to be able to switch license!
18:58:55 -!- augur has joined.
18:58:56 <cpressey> zzo38: True. s/holder/holders/
18:59:04 <ais523> CLC-INTERCAL's used to be great
18:59:08 <AnMaster> ais523, hm?
18:59:13 <AnMaster> isn't it any more?
18:59:19 <ais523> but the level of recursion involved was sufficiently high that eventually the compiler became incapable of handling it
18:59:25 <AnMaster> oh the license you mean, missed the 's
18:59:34 -!- sebbu has quit (*.net *.split).
18:59:34 -!- pikhq has quit (*.net *.split).
18:59:35 -!- coppro has quit (*.net *.split).
18:59:35 -!- jix has quit (*.net *.split).
18:59:35 -!- Phantom_Hoover has quit (*.net *.split).
18:59:36 -!- Sgeo_ has quit (*.net *.split).
18:59:36 -!- olsner has quit (*.net *.split).
18:59:36 -!- Gracenotes has quit (*.net *.split).
18:59:36 -!- Geekthras has quit (*.net *.split).
18:59:36 -!- jcp has quit (*.net *.split).
18:59:36 -!- fungot has quit (*.net *.split).
18:59:37 -!- MigoMipo has quit (*.net *.split).
18:59:37 -!- fizzie has quit (*.net *.split).
18:59:37 -!- Warrigal has quit (*.net *.split).
18:59:38 -!- chickenzilla has quit (*.net *.split).
18:59:38 -!- Gregor-W has quit (*.net *.split).
18:59:38 -!- MizardX has quit (*.net *.split).
18:59:38 -!- myndzi\ has quit (*.net *.split).
18:59:38 -!- oklopol has quit (*.net *.split).
18:59:38 -!- Deewiant has quit (*.net *.split).
18:59:39 -!- kar8nga has quit (*.net *.split).
18:59:39 -!- ineiros has quit (*.net *.split).
18:59:39 -!- relet has quit (*.net *.split).
18:59:39 -!- cheater99 has quit (*.net *.split).
19:00:00 <zzo38> Hay! *.net *.split
19:00:22 <AnMaster> ais523, of handling the license?
19:00:22 <AnMaster> also argh lag spike
19:00:35 <cpressey> Haven't seen a netsplit in ages
19:00:48 <ais523> yep, the license was changed to something that was plaintext rather than requiring compilation
19:00:48 -!- AnMaster has quit (Quit: ZNC - http://znc.sourceforge.net).
19:00:50 -!- Ilari has quit (Quit: Reconnecting).
19:01:21 -!- MigoMipo has joined.
19:01:21 -!- Gregor-W has joined.
19:01:21 -!- kar8nga has joined.
19:01:21 -!- sebbu has joined.
19:01:21 -!- Phantom_Hoover has joined.
19:01:21 -!- Gracenotes has joined.
19:01:21 -!- relet has joined.
19:01:21 -!- MizardX has joined.
19:01:21 -!- Geekthras has joined.
19:01:21 -!- pikhq has joined.
19:01:21 -!- myndzi\ has joined.
19:01:21 -!- coppro has joined.
19:01:21 -!- jcp has joined.
19:01:21 -!- oklopol has joined.
19:01:21 -!- cheater99 has joined.
19:01:21 -!- Sgeo_ has joined.
19:01:21 -!- chickenzilla has joined.
19:01:21 -!- jix has joined.
19:01:21 -!- Warrigal has joined.
19:01:21 -!- Deewiant has joined.
19:01:21 -!- olsner has joined.
19:01:21 -!- fungot has joined.
19:01:21 -!- fizzie has joined.
19:01:21 -!- ineiros has joined.
19:01:37 -!- Ilari_ has joined.
19:01:37 <pikhq> If the former, then it's *debatable* whether or not it's violating the GPL.
19:01:37 <Phantom_Hoover> fsck.
19:01:37 -!- augur has quit (Remote host closed the connection).
19:01:38 <pikhq> If the latter, then you're not violating it at all.
19:01:52 <Gregor-W> pikhq: It's just gelfload linking it against some POSIX-compliant C library, which happens to be cygwin1.dll on Windows.
19:02:22 -!- AnMaster_ has joined.
19:02:23 -!- AnMaster_ has quit (Excess Flood).
19:02:32 -!- Ilari_ has changed nick to Ilari.
19:02:42 <Phantom_Hoover> Oh, no!
19:02:46 <Phantom_Hoover> Excess Flood!!
19:02:55 <pikhq> Gregor-W: Perfectly legal. The proprietary program never once requested a GPL one. It would've been just as happy with newlib or libc.
19:02:57 <cpressey> Gregor-W: You *could* in theory link against some cygwin1.dll-alike, BSD-licensed library on Windows, right?
19:02:58 <zzo38> Gregor-W: I suppose it is OK if the data for linking it with cygwin1.dll is in an external file, even if it is distributed together with the software, should still be OK.
19:03:25 <Gregor-W> cpressey: Hell, I could even link against UWIN, but then the problem is with GPL software :P
19:03:30 <pikhq> If it is specifically demanding cygwin1.dll, then it's probably illegal.
19:03:30 <zzo38> That is, instead of hard-coding it into the program you put it in the "gelfload.conf" file, for example.
19:03:32 -!- AnMaster has joined.
19:03:46 <cpressey> I think a short disclaimer would CYA in practice,.
19:03:47 <AnMaster> ....
19:03:55 <AnMaster> "<AnMaster> also argh lag spike" was last line on this end
19:03:56 -!- augur has joined.
19:04:00 <AnMaster> what did I miss
19:04:07 <zzo38> And then distribute gelfload.conf together with the ELF loader program that does that.
19:04:09 <Phantom_Hoover> Nothing interesting.
19:04:16 <Gregor-W> pikhq: Well that's the trick, gelfload may be specifically demanding cygwin1.dll, but the proprietary program is just demanding "some POSIXalike"
19:04:25 <AnMaster> Phantom_Hoover, any reply to "<AnMaster> ais523, of handling the license?"?
19:04:29 <AnMaster> Phantom_Hoover, I presume not
19:04:33 <cpressey> AnMaster: We found a proof for P=NP
19:04:36 <Phantom_Hoover> I don't know.
19:04:38 <AnMaster> cpressey, har har
19:04:42 <AnMaster> Phantom_Hoover, ...
19:04:45 <Phantom_Hoover> AnMaster, but clog was down, so...
19:04:46 <ais523> AnMaster: the license itself needed compilation
19:04:57 <pikhq> Gregor-W: So it's just fine unless you distribute it along with gelfload and cygwin1.dll.
19:04:58 -!- pineappl1 has joined.
19:05:04 <AnMaster> ais523, why?
19:05:17 <ais523> AnMaster: because it's CLC-INTERCAL
19:05:30 <AnMaster> <Gregor-W> pikhq: Well that's the trick, gelfload may be specifically demanding cygwin1.dll, but the proprietary program is just demanding "some POSIXalike" <-- do the same?
19:05:32 <ais523> there was a literal space in the executable's filename
19:05:39 <pikhq> Basically, you can't provide the whole thing together but if someone just happens to piece it together it's fine.
19:05:41 <ais523> which actually exposed a bug in mandb
19:05:43 <zzo38> Put the data needed for gelfload to link the program with cygwin1.dll into the gelfload.conf file and then distribute gelfload.conf together with gelfload (and if gelfload is GPL, include cygwin1.dll also in the distribution), and then it should be OK
19:05:51 <ais523> but Debian decided that not breaking mandb was more important than fixing the mandb bug
19:06:02 <Gregor-W> pikhq: But now you're arguing that mere aggregation is, in this case, the same as linking.
19:06:03 -!- pineapple has quit (Write error: Broken pipe).
19:06:16 -!- cal153 has quit (Ping timeout: 341 seconds).
19:06:16 -!- HackEgo has quit (Ping timeout: 341 seconds).
19:06:16 -!- EgoBot has quit (Ping timeout: 341 seconds).
19:06:19 -!- HackEgo has joined.
19:06:19 -!- EgoBot has joined.
19:06:20 <pikhq> Gregor-W: Mere aggregation with the intent of linking.
19:06:21 -!- cal153 has joined.
19:06:26 <Gregor-W> lawl
19:06:30 <pikhq> And good *God* this is painful to think about.
19:06:37 <Gregor-W> We caught him aggregating with intent to link
19:06:37 <cpressey> ... Linkregation.
19:06:46 <zzo38> Do you think my suggestion will work??
19:07:00 <Gregor-W> zzo38: Nobody knows, all we can do is debate endlessly because the law is ambiguous and stupid :)
19:07:05 <AnMaster> um. wasn't there some ABI compatible BSD-licensed replacement for readline?
19:07:09 <AnMaster> or do I misremember?
19:07:13 <AnMaster> if there wasn't there should be one
19:07:30 <pikhq> Gregor-W: Technical issue: surely your gelf linker requires your libraries to have a compatible ABI on all platforms (which of course they won't)?
19:07:41 <pikhq> Or are you providing stubs to make the ABI compatible?
19:08:20 <AnMaster> hm
19:08:27 <cpressey> AnMaster: there's libedit; dunno if it is abi compatible
19:08:27 <AnMaster> is glibc under lgpl? or gpl + linking exception?
19:08:35 <Gregor-W> pikhq: Right now I'm just counting on them being compatible, which they actually mostly are since the C calling convention is consistent (modulo fastcall on Windows, but cygwin1 doesn't use that), and other than that the ABI is just POSIX function names (modulo how the "stdout" and "stderr" macros work, which is obnoxious)
19:08:37 <pikhq> Because otherwise what you've got going on is crossing fingers and hoping it doesn't break.
19:08:41 <pikhq> AnMaster: GPL + linking.
19:08:42 <cpressey> AnMaster: there might be some other one too, now that i think about it, but don't recall
19:08:56 <zzo38> Maybe you need to put the data for ABI compatible into the gelfload.conf file to tell it which stubs it needs to load to make it to do so, and so on.
19:09:06 <pikhq> Gregor-W: Libc ABIs *do* change.
19:09:14 <Gregor-W> pikhq: Yes, what I've got going in is crossing fingers and hoping it doesn't break, but this situation is a hypothetical :P
19:09:23 <AnMaster> Gregor-W, also for x86_64 the calling convention differ between linux and windows. Even the size of a long differ there iirc.
19:09:44 <pikhq> Dude, *my current libc* provides for multiple ABIs because there exists breakage.
19:09:46 <Gregor-W> What gelfload does right now is allow you to make Windows-specific ELF binaries on Windows, and Mac OS X-specific ELF binaries for Mac OS X, no cross-platform lunacy.
19:09:53 <AnMaster> pikhq, how does it define linking? what the whole thing?
19:10:15 <AnMaster> ...and what about static linking?
19:10:18 <pikhq> Oh, Windows-specific ones on Windows. Okay. In that case what you have is perfectly fine.
19:10:29 <pikhq> AnMaster: I dunno.
19:10:41 <Gregor-W> pikhq: I'm just making a hypothetical here for magical cross-platform ELFs.
19:11:00 <pikhq> Gregor-W: For those you'll need to provide all the libraries.
19:11:18 <pikhq> As in effect you'll be building for a hypothetical i686-pc-gelfload-newlib thing.
19:11:24 <AnMaster> though if I'm linking statically I'm definitely going with uclibc..
19:11:40 <Gregor-W> Welp, time for my brain to explode.
19:11:45 <Gregor-W> *AXPLOSHON*
19:12:05 <pikhq> Since you *would* be defining, in effect, an OS which happens to have multiple implementations.
19:12:14 <pikhq> On other kernels.
19:12:17 <pikhq> Which sounds like a totally awesome idea.
19:12:21 <cpressey> hg st
19:12:21 <cpressey> X ./Gregor-W
19:12:26 <AnMaster> pikhq, :D
19:12:29 <Gregor-W> pikhq: I had that idea once. I called it Microcosm.
19:12:44 <pikhq> Gregor-W: You've got most of the work done.
19:13:03 <Gregor-W> pikhq: http://codu.org/wiki/Microcosm
19:13:07 <pikhq> Port newlib and it's working.
19:13:10 <AnMaster> pikhq, indeed. This makes java lose it's "platform independent" appeal! Now you can do cross platform C without recompiling. Sure you still need a 32-bit and a 64-bit version but...
19:13:28 <pikhq> System calls? Bah.
19:13:37 <pikhq> Have multiple libcs.
19:13:52 <AnMaster> this would be easy for linux/osx
19:13:56 <AnMaster> harder for windows
19:14:01 <pikhq> Platform-specific libraries offering the same ABI.
19:14:02 <zzo38> And you would need different binaries for different processors I guess, also.
19:14:07 <pikhq> AnMaster: Harder but still quite feasible.
19:14:16 <AnMaster> pikhq, anyway hm I wonder if you could do it the other way? To run OS X binaries on linux
19:14:21 <AnMaster> wait they use mach-o
19:14:22 <AnMaster> or something
19:14:23 <AnMaster> nvm
19:14:29 <Gregor-W> If y'all want to help me build Microcosm, I'll make it happen, but you'd have to do more work than me :P
19:14:43 <zzo38> But there should be some way to make restricted-harvard VM that allows optimization into native codes
19:14:46 <AnMaster> Gregor-W, how much more? ;P
19:14:58 <pikhq> Gregor-W: Well, I actually know most of the work that would need to go into a gelfload-based Microcosm.
19:15:03 <AnMaster> Gregor-W, and I might be interested, but I'm not going to do the main work of it.
19:15:07 <Gregor-W> I've written the ELF loader. You write the libraries.
19:15:15 <zzo38> (Restricted-harvard is my own idea based on harvard but a few additional restrictions to make it better for optimizing into any computer's native codes)
19:15:20 <pikhq> The basics would just be porting newlib and making a cross compiler.
19:15:32 <Gregor-W> Hell, I'll even get the ball rolling by making the patches for GCC and binutils :P
19:15:36 <Gregor-W> (Since they'd be tiny)
19:15:37 <AnMaster> pikhq, why newlib and not uclibc or such?
19:15:52 <pikhq> AnMaster: Newlib is portable. uClibc isn't.
19:15:53 <Gregor-W> uclibc is unportable.
19:15:59 <AnMaster> pikhq, hm
19:16:00 <pikhq> Newlib is also *easy* to port.
19:16:06 <AnMaster> well good point
19:16:08 <Gregor-W> Bizarrely so in fact.
19:16:09 <pikhq> You implement the stubs for the system calls and you're done.
19:16:41 <pikhq> Hmm. Actually, might be nice to make it so there's a single newlib for all systems.
19:16:50 <pikhq> It'll just depend on a system-dependent libsyscall.
19:16:51 <pikhq> :P
19:16:56 <zzo38> One of the restrictions for restricted-harvard is that pointers into ROM are never interchangeable with numbers. And indirect jumps must use a jump table stored in ROM at a fixed address.
19:17:02 <AnMaster> pikhq, how hard would it be to port to a platform where data and function pointers have different sizes for example?
19:17:06 <Gregor-W> So pikhq, you dislike my syscall style ... the reason for it was to avoid the headache of ABI jumping by just having one "syscall" ABI.
19:17:29 <Gregor-W> AnMaster: Why are we porting it to a system in 1985?
19:17:40 <pikhq> Gregor-W: Ideally I'd like to make it so that libraries could directly call out to the main system ABI.
19:17:41 <AnMaster> Gregor-W, no it was a general question
19:17:49 <pikhq> Though this is, ah, *hard as hell*.
19:17:50 <AnMaster> pikhq, anyway you would need to translate data structures since sizeof(long) isn't the same for 64-bit linux and 64-bit windows
19:17:57 <cpressey> zzo38: I was thinking you might restrict indirect jumps. But then, a lot of object-oriented-type dispatching becomes impossible (or at least very ugly.)
19:17:57 <Gregor-W> pikhq: Yeah, ABI jumping sucks.
19:18:04 <AnMaster> and we are going to aim for 64-bit right? no point in going for legacy 32-bit
19:18:10 <pikhq> AnMaster: Dude, this is a unique platform.
19:18:16 <pikhq> Which happens to run on other platforms.
19:18:30 <pikhq> Gregor-W: Wouldn't need to happen *much*, fortunately.
19:18:37 <AnMaster> pikhq, you still need to compile the program to use the right ISA
19:18:45 <pikhq> AnMaster: No shit.
19:18:45 <Gregor-W> Yeah :P
19:18:48 <cpressey> zzo38: Thinking about it, I suppose you could mitigate it for the common cases.
19:18:55 <pikhq> Gregor-W: For system calls and probably GUI libraries.
19:19:13 <Gregor-W> So, shall I set up a http://codu.org/projects/microcosm/ , or are you all just drooling over time you're not willing to spend in reality :P
19:19:31 <pikhq> Gregor-W: Dude, I'm unemployed. I got *plenty* of time.
19:19:32 <AnMaster> pikhq, and you need to define calling convetions and such to use for each ISA in your OS layer
19:19:47 <pikhq> AnMaster: Duh.
19:20:02 <AnMaster> using the links ones should be generally quite sane unless I misremember.
19:20:05 <pikhq> Gregor-W: So, yeah. I'll start working about when I've figured out how best to cross ABIs.
19:20:52 <pikhq> Annoyingly, probably involve writing custom stubs for each function that you want to call cross-ABI.
19:20:55 <zzo38> cpressey: I suppose you can still have C function pointers, but when stored in a variable or structure it is stored as the index number rather than as the actual function pointer. And then the compiler creates one jump table for all function pointers that are needed in this way.
19:20:57 <AnMaster> Gregor-W, I'm willing to spend some time. I don't plan to lead the project. I feel you and pikhq have much more experience in that area. I can't promise any minimum time spent on it.
19:21:15 <AnMaster> Gregor-W, and yeah, do your gelfload work on 64-bit linux currently?
19:21:21 <Gregor-W> AnMaster: Yes.
19:21:38 <Gregor-W> pikhq, AnMaster: Go register at http://codu.org/projects/microcosm/ and I'll give you all the priveleges.
19:21:49 <pikhq> Whoot
19:21:52 <AnMaster> Gregor-W, oh and I won't touch C++. Which we might need if we need to port a toolchain to this
19:22:00 <AnMaster> hm
19:22:04 <pikhq> AnMaster: Very little involved in porting C++.
19:22:13 <AnMaster> pikhq, was thinking of llvm perhaps
19:22:13 <AnMaster> hm
19:22:17 <Gregor-W> Porting GCC and binutils is a tribiality.
19:22:20 <Gregor-W> *triviality
19:22:22 <pikhq> Almost all the work is in the C library.
19:22:41 <pikhq> Well. And various system-specific libraries.
19:22:56 <pikhq> X11 wouldn't be hard, if you could just get SDL working.
19:23:27 <AnMaster> Gregor-W, I don't know where to start coding though. :P
19:23:28 <AnMaster> but done
19:23:36 <pikhq> Fortunately, most packages try their hardest not to rely on anything less portable than a C library.
19:24:07 <AnMaster> Gregor-W, I guess you and/or pikhq should come up with a general design. But I'm willing to code when I know what to do. I presume we will use gelfload
19:24:22 <AnMaster> pikhq, um, a lot tends to want parts of POSIX at least
19:24:33 <pikhq> AnMaster: A POSIX C library, sure.
19:24:47 <Gregor-W> There, privileges set up.
19:24:47 <pikhq> Gregor-W: Few things I'm absolutely positive of: Linux calling convention.
19:25:04 <pikhq> We do *not* want to mess with the weird shit that is Win32.
19:25:13 <pikhq> The whole point of this is to avoid that insanity.
19:25:19 <Sgeo_> Is there a Win4?
19:25:28 * Sgeo_ wants 4-bit stuff
19:25:29 <ais523> JSMIPS > Windows?
19:25:31 <Phantom_Hoover> Sgeo_, what?
19:25:40 <Sgeo_> Although I do think maybe 8-bit stuff can be made to fit
19:25:53 <Gregor-W> pikhq: Can you add some stuff to the wiki front page with your idea for the overall design, and next steps?
19:25:54 <Phantom_Hoover> You'd be able to address 64 bits of memory.
19:26:05 <Gregor-W> And a link to gelfload I guess :P
19:26:07 <AnMaster> Gregor-W, hg? I'm more used to bzr I admit so.. quick summary? I remember that the difference was basically a few commands
19:26:21 * Sgeo_ considers the advantages and disadvantages of analog storage
19:26:26 <Gregor-W> AnMaster: hg clone <url> ; hg commit ; hg push ; hg pull ; hg up
19:26:38 <AnMaster> <pikhq> Gregor-W: Few things I'm absolutely positive of: Linux calling convention. <-- yes at least on x86_64. What about some register calling convention on x86_32 though?
19:26:40 <Phantom_Hoover> There's a case for analog storage?
19:26:53 <pikhq> AnMaster: No.
19:26:58 <Gregor-W> Let's not mess with GCC's default C calling conventions, 'kay :P
19:26:59 <pikhq> AnMaster: No no no.
19:27:01 <AnMaster> Gregor-W, right, the last two were one step in bzr
19:27:16 <pikhq> Use the Linux calling convention, because this is the easy one.
19:27:19 <AnMaster> Gregor-W, hm wait we use centralised model instead of distributed? I'm lacking a "merge" there :P
19:27:22 <Sgeo_> Addition's pretty trivial. And most things would go to analog before being output
19:27:22 <pikhq> And the one that's most understandable.
19:27:36 <Phantom_Hoover> Sgeo_, multiplication?
19:27:37 <Gregor-W> AnMaster: It has merge too, I'm just hoping we don't bork up too much that merging gets crazy :P
19:27:41 <cpressey> AnMaster: hg pull -u makes them one step in hg. Fwiw.
19:27:41 <Phantom_Hoover> Division?
19:27:43 <Sgeo_> Hm, good point
19:27:45 <Phantom_Hoover> Exponentiation?
19:28:12 <AnMaster> Gregor-W, I'm used to bzr saying that branches has diverged. Anyway wouldn't you use feature branches and such? Oh how does hg switch between branches if it comes to that?
19:28:14 <Gregor-W> AnMaster: hg merge merges two active heads, hg merge <branch> merges a branch, hg resolve -l lists merge problems, hg resolve -m <file> marks a file as resolved.
19:28:15 <cpressey> hg: How I Learned to Hate Merges
19:28:25 <Sgeo_> Although actually, it would be easy to convert the analog into a series of signals and just repeat one of the analogs each signal
19:28:26 <pikhq> Gregor-W: Funny thought: qemu could have support for x86-Microcosm, and suddenly x86-Microcosm would be a totally awesome virtual machine to compete with Java. :P
19:28:27 <Phantom_Hoover> You need an analog process for all of these, and the digital equivalents are so superior that it's pretty pointless.
19:28:41 <pikhq> And then we could run Java on it.
19:28:43 <Gregor-W> AnMaster: hg branch <name> to create a branch, hg up <branch name> to update to a branch.
19:28:45 <AnMaster> pikhq, linux calling convention isn't easy. However it is sane
19:28:50 <AnMaster> pikhq, at least for 64-bit
19:28:53 <Sgeo_> Superior except in requring more parts
19:28:56 <AnMaster> I have no clue about 32-bit really
19:28:59 <pikhq> AnMaster: Perfectly easy to make GCC use it.
19:29:02 <Gregor-W> It's easy because if we don't touch GCC, that'll be the calling convention it uses :P
19:29:07 <pikhq> It's called "don't tell it otherwise".
19:29:07 <AnMaster> pikhq, well yes
19:29:32 <AnMaster> pikhq, but have you read the sysv-amd64-ABI?
19:29:34 <AnMaster> or whatever it is called
19:29:40 <Gregor-W> cpressey: The most important thing about merging on hg is to convince it NOT to try to use some shitty GUI merge tool, and just put the nice "<<<<<" in there.
19:29:50 <AnMaster> the rules for deciding what ends up where are somewhat complex, in order to get the most efficient result
19:30:07 <Sgeo_> Here's the basic model I'm working with, using my own terminology in place of terminology that I don't know if others came up with yet or what:
19:30:17 <Sgeo_> The essential unit is the awsistor.
19:30:32 <AnMaster> pikhq, presumably the code would be split in frontend and backend? Frontend for what the program sees and backend is the bit that differ between different "host OSes"
19:30:34 <AnMaster> hm
19:30:40 <Phantom_Hoover> Sgeo_, How does this work?
19:30:46 <Sgeo_> Phantom_Hoover, describing it now.
19:30:54 <AnMaster> pikhq, we need to come up with terminology for this first, or it will be too cumbersome
19:30:59 <Gregor-W> AnMaster: That's the "syscall layer"
19:31:03 <AnMaster> Gregor-W, right
19:31:21 <Sgeo_> Each awsistor can listen on 0 or 1 channels. THe channel can change, but it's tricky, and I don't think it's worth it
19:31:58 <pikhq> Gregor-W: Basically: we try to offer native libraries as much as possible. However, allow for access to host libraries by writing thunks to transfer between the ABIs. My opinion on this may well change if writing thunks is going to be more difficult than a few lines of assembly or C per function.
19:32:07 <Sgeo_> Each awsistor stores an N-Delay: An amount of time. It can receive an N-Delay from another awsistor on a channel. Its only reaction is to store this N-Delay internally.
19:32:28 <Gregor-W> pikhq: I get the feeling that thunks will basically be lunacy. Just my own fears manifesting themselves though ^^
19:32:28 <cpressey> Gregor-W: Yes, found that out the hard way, when it was silently doing no merging at all.
19:32:36 <Gregor-W> cpressey: Sweet X-D
19:32:52 <pikhq> Gregor-W: On Linux, thunks would probably be trivial. On OS X, not much work.
19:32:54 <AnMaster> Gregor-W, I'm soo tempted to make a commit with the message "first post!" to that repo ;P
19:32:57 <AnMaster> but I won't
19:33:03 <Sgeo_> An awsistor has an N-Delay of Infinity by default.
19:33:04 <pikhq> On Windows? I'm concerned.
19:33:21 <Gregor-W> cpressey: Yeah, hg's defaults changed recently w.r.t. merging ... it used to use the internal stupid-merge unless you told it otherwise. Now it defaults to trying to figure out a graphical merge tool, which is almost always wrong.
19:33:50 <Gregor-W> pikhq: No use making thunks that only work on one platform ;)
19:33:58 <AnMaster> pikhq, hm maybe we could translate GTK+ into native windows API at some point far far far into the future
19:34:03 <pikhq> Alternate thought: have a single "syscall" function provided by gelfload, through which you access the system.
19:34:12 <Gregor-W> pikhq: Uhh, that was the original idea?
19:34:13 <Sgeo_> An awsistor can receive an S-Signal on the channel. It can do any of a number of things in reaction, but to an s-signal, the same things are always the result. It can send S-Signals, N-Signals, D-Signals, change channels, or output [which isn't particularly relevant for now]
19:34:15 <pikhq> Advantages: Damned easy to do the marshalling.
19:34:21 <pikhq> Gregor-W: Yes, I'm aware.
19:34:35 <pikhq> Disadvantages: seems that it would make it harder to access native libraries...
19:34:38 <AnMaster> Gregor-W, does hg has anything like svn:external?
19:34:45 <Gregor-W> AnMaster: Unfortunately no :(
19:34:54 <pikhq> Erm.
19:34:55 <AnMaster> Gregor-W, would be useful to pull gelfload
19:34:56 <pikhq> s/native/host/
19:34:57 <Gregor-W> AnMaster: That's a feature I've severely missed on a few occassions, actually.
19:34:59 <pikhq> It'd be damned nice to, say, make Qt consist of a wrapper around the host Qt.
19:35:05 <Sgeo_> The amount of time between receiving an S-Signal and doing its reaction is equivalent to its stored N-Delay.
19:35:23 <Sgeo_> If it receives a D-Signal in that time, the reaction does not occur.
19:35:35 <AnMaster> pikhq, how would we handle stuff like fork() on win32?
19:35:36 <Sgeo_> There, that's everything, I think
19:35:40 <AnMaster> or win64 for that matter
19:35:57 <olsner> roll your own stack switching!
19:35:59 <Gregor-W> pikhq: Are you at least happy with my concept of having the builtin stuff only provide a "register syscall" syscalls, so that all the actual implementation can be in modules loaded via microcosm-modules.so? Keeping in mind that the way gelfload works, those can be host or microcosm libraries.
19:36:23 <Sgeo_> Oh, sometimes, an S-Signal can specify that it causes the receiving awsistor to repeat.
19:36:24 <zzo38> fork() works on Cygwin, it is used in IRCd software I use
19:36:27 <pikhq> AnMaster: Two ways: base it off of Cygwin, or don't have it.
19:36:35 <Sgeo_> Phantom_Hoover, thoughts?
19:36:37 <Gregor-W> pikhq: "Don't have it" is not an option.
19:36:38 <pikhq> Gregor-W: Seems like an easy way to make things work.
19:36:45 <AnMaster> pikhq, hm good ideas I guess
19:36:47 <pikhq> Does mingw have fork()?
19:36:59 <Gregor-W> Probably
19:37:03 <Phantom_Hoover> Sgeo_, OK, so how do we use it for processing?
19:37:06 <zzo38> I don't know, but I know MinGW doesn't have setenv()
19:37:07 <pikhq> No, it doesn't.
19:37:10 <Gregor-W> But IPC is probably wonky and not-POSIXy
19:37:18 <AnMaster> Gregor-W, what about "lets sort that out a bit later"
19:37:23 <Gregor-W> Yes :P
19:37:31 <Gregor-W> "Modules to be developed later: fork"
19:37:39 <AnMaster> Gregor-W, okay do you need some cross compiler for gelfload on linux?
19:37:42 <Sgeo_> Phantom_Hoover, I _think_ it's possible to make a transistor, and know it's possible to make a flip flip
19:38:15 <Phantom_Hoover> Sgeo_, I still don't see the advantages.
19:38:19 <pikhq> We could stub fork until such time as someone feels like redoing the Cygwin fork.
19:38:27 <Sgeo_> Phantom_Hoover, this is what I have to work with in Active Worlds.
19:38:28 <zzo38> I think you should just have a file gelfload.conf with commands such as DYNLINK, STUB, SYSCALL, THUNKCODE, TRANSLATE, and so on.
19:38:52 <AnMaster> pikhq, Gregor-W: brb, phone
19:38:57 <Phantom_Hoover> Sgeo_, why?
19:39:02 <Sgeo_> I want to make a programmable computer.
19:39:09 <Phantom_Hoover> Have you been unorthodoxly computing?
19:39:12 <Phantom_Hoover> Yes, you have.
19:39:32 <Sgeo_> http://www.activeworlds.com/help/aw42/ read the seconds on animate, astart, astop, and name
19:39:46 <pikhq> Alternately, we could say "screw Win32" and only do i686-pc-interix-ms
19:39:47 <pikhq> :P
19:39:53 <Sgeo_> animate is an N-Signal, astop is a D-Signal, astart is an S-Signal
19:40:00 <pikhq> (and thus get an *efficient* fork())
19:40:03 <Sgeo_> "channels" are names
19:40:13 <Sgeo_> I think it's better to think in terms of Awsistors
19:40:33 <zzo38> Doing it this way I specified can mean that you can change the system call gates and thunk codes and so on, for different systems and for different libraries you might use
19:40:38 <Gregor-W> AnMaster: You don't need a cross-compiler for gelfload on Linux, but you WILL need a cross-compiler since Microcosm is strictly a different OS.
19:41:38 <Phantom_Hoover> Sgeo_, are you just planning to make a conventional transistor-based computer?
19:42:07 <pikhq> Alternate-alternately: the Windows implementation could be done soley using threads. Making Microcosm an actual full kernel.
19:42:15 <Sgeo_> Probably not transistor-based, but more logic-gate based. Don't know how conventional or unconventional it should be
19:42:25 <zzo38> What is Microcosm OS?
19:42:28 <Gregor-W> pikhq: Implement virtual memory on virtual memory? Ew.
19:42:38 <pikhq> Gregor-W: Bwahahah.
19:43:06 <zzo38> Sgeo_: I have designed a computer using logic-gates. I have never actually built it, though. But I did run simulations of it
19:43:11 <Gregor-W> zzo38: A conceptual portable OS that abstracts away OS differences and provides a POSIX-compliant, consistent ABI on "every" OS.
19:43:39 <Gregor-W> zzo38: Err, missed a vital detail: It is an OS that runs on other OSes, to abstract away their differences.
19:44:00 <zzo38> Gregor-W: Inferno can do something similar I think, but not quite
19:44:07 <Gregor-W> Inferno is very thick.
19:44:33 <zzo38> Yes, that is one thing that isn't the same.
19:44:34 <Sgeo_> Why only "every"?
19:44:38 <Sgeo_> Is Win32 included?
19:44:48 <pikhq> The only thick thing here is thunking through to the host ABI.
19:45:00 <pikhq> Sgeo_: Yes.
19:45:10 <Gregor-W> Sgeo_: Win32 is sort of the evil "but we gotta do it" OS, so it'll definitely be supported. By putting quotes, I mean "not OS/2 or DOS" :P
19:45:15 <Gregor-W> Or Be
19:45:20 <zzo38> However, Inferno binaries are workable on any processor
19:45:34 <Gregor-W> zzo38: Which is not our goal at all.
19:45:39 <Sgeo_> Esotericers? Working on a globally-useful project? Did hell freeze over?
19:45:51 -!- relet has quit (Read error: Connection reset by peer).
19:45:55 <Phantom_Hoover> Wait, this is called Microcosm, right?
19:46:01 <Phantom_Hoover> #microcosm
19:46:03 <Gregor-W> Sgeo_: I'm glad you've deluded yourself into thinking it's useful :P
19:46:08 <Phantom_Hoover> We must stay useless.
19:46:28 <Sgeo_> How is it not useful?
19:46:32 * pikhq will be happy if this thing can run the darned heirloom utils
19:46:36 <ais523> what are you trying to do, exactly
19:46:54 <pikhq> Gregor-W: DOS could certainly be supported. However, this would be as a bare-hardware implementation.
19:47:00 -!- kar8nga has quit (Remote host closed the connection).
19:47:07 <Phantom_Hoover> What ais523 said.
19:47:24 <Gregor-W> Hey guys, apparently I own #microcosm ? I registered it years ago I guess.
19:47:25 <cpressey> Sgeo_: Sounds kind of like you'd want to use 555's as your basic units instead of transistors :)
19:47:34 <Sgeo_> 555s?
19:47:41 <cpressey> Sgeo_: timer chips.
19:47:42 <ais523> Sgeo_: a sort of timer
19:47:55 <ais523> you connect a resistor and capacitor to it, and maybe a few extra components if you want to make it more accurate
19:47:58 <Sgeo_> Can those work as basic units?
19:48:12 <Gregor-W> ais523, Phantom_Hoover: Create a microkernel that runs on top of other OSes, providing a consistent and POSIX-compliant API and ABI to nested processes and abstracting away the wonky OS differences below.
19:48:13 <Sgeo_> I mean, of logic gates?
19:48:14 <zzo38> Yes, that is a idea, try to make a computer using almost entirely 555 timer chips.
19:48:17 <ais523> probably, they have a bunch of connections
19:48:24 <ais523> Gregor-W: hmm, reminds me slightly of coLinux
19:48:25 <cpressey> Maybe, who knows? I don't think they can do quite everything you've described, unassisted, though.
19:48:43 <Gregor-W> ais523: But MUCH thinner.
19:48:46 <Phantom_Hoover> AnMaster, get onto #microcosm
19:48:48 <Phantom_Hoover> NOW.
19:48:48 <Sgeo_> Everything I've described is a basic part of an AW object
19:49:05 <ais523> hmm, more like WINE for kernels
19:49:32 <Gregor-W> ais523: Actually yeah. It's exactly like WINE, but the API/ABI is some general idealized POSIX instead of Windows.
19:49:42 <Phantom_Hoover> This sounds like a good idea.
19:50:21 <ais523> Linux-style ABI and sane POSIX-compliant API?
19:50:30 <ais523> (insane POSIX-compliant exists, but you probably wouldn't go for that)
19:51:11 <Gregor-W> Naw, we don't need this to be SUS03-compliant ;)
19:51:30 <ais523> you must put pax in the userland
19:51:38 <ais523> so people can read C-INTERCAL tarballs
19:51:59 <Phantom_Hoover> ais523, you can just use tar.
19:52:12 <ais523> I know
19:52:18 <ais523> but for some reason people never think of that until I tell them
19:52:27 <cpressey> This is ais523-humour?
19:52:28 <ais523> it's as if people haven't memorised all the POSIX-standard data archiving formats...
19:52:30 <Phantom_Hoover> It's not particularly obvious.
19:52:39 <Phantom_Hoover> It has "pax" on the end of the filename.
19:52:55 <ais523> Phantom_Hoover: and that's the name of the format?
19:53:13 <Phantom_Hoover> Traditionally.
19:53:26 <Sgeo_> I thought pax was some authentication thing
19:53:33 <Sgeo_> I think I was thinking of PAM?
19:53:35 <ais523> I mean, just because it's backwards-compatible with tar doesn't prevent it being called pax
19:53:36 <cpressey> Why is C-INTERCAL using so pedestrian an archive format? Surely, programmers would prefer ZOO archives?
19:53:37 <ais523> Sgeo_: yes, you were
19:53:42 <cpressey> Or ARJ?
19:53:52 <Sgeo_> Hm, this suggests using C-INTERCAL for authentication
19:53:57 <ais523> cpressey: INTERCAL's about bening different from everything else
19:54:06 <ais523> if it manages to simultaneously be more standards-compliant, so much the better
19:54:23 <cpressey> Ah. Standards-compliant and different. I see.
19:54:35 <ais523> different /by/ being standards-compliant
19:54:40 <cpressey> Yes.
19:54:43 <ais523> you should look at its build system sometime, I put months of effort into it
19:54:58 <ais523> trying to get it to work perfectly, without issues, for every sort of build imaginable
19:55:10 <ais523> although I haven't tested it on DOS or Windows yet, which is why it's still beta
19:55:35 <ais523> you see, people hardly ever use autoconf/automake correctly, not even GNU, and they invented them
19:55:53 <ais523> so I spent ages studying the way they were actually meant to work in order to try to use them in a way that actually worked correctly
19:56:00 <cpressey> Wait, it's *possible* to use them correctly? I thought their versioning system subverted that!
19:56:11 <ais523> cpressey: yep, although rather difficult
19:56:23 <ais523> to add extra fun, they don't take the possibility of a compiler into account
19:56:36 <ais523> build/host/target
19:56:50 <ais523> gcc's configure script is mostly written by hand, it seems, in order to get it working
19:57:06 <ais523> whereas I managed it all from autoconf, with a bit of complex trickery
19:57:12 <cpressey> Oh man.
19:57:23 <ais523> you can even cross-compile C-INTERCAL without issues
19:57:33 <ais523> and/or use parallel make (go -j2!)
19:58:02 <ais523> and it uses prebuilt lexers and parsers if lex/flex and/or yacc/bison is missing
19:58:03 -!- Gregor-P has joined.
19:58:04 <cpressey> That's sick in a way I certainly didn't expect.
19:58:07 <ais523> and all that sort of thing
19:58:36 <ais523> really, such a build system is wasted on C-INTERCAL, I should use it on something serious someday
19:59:01 <pikhq> ais523: That's a thing of beauty. I must see this.
19:59:22 <ais523> something I haven't tried, but should, is to see if I can make it into a Debian package using nothing but one call to dh_make and filling in the "put description here" fields
20:00:25 <ais523> download link is http://c.intercal.org.uk/
20:00:28 <ais523> get the latest beta
20:00:38 <ais523> (0.-2.0.29)
20:01:08 <ais523> build system's configure.ac, plus the contents of the buildaux subdir
20:01:21 <ais523> because I didn't want it littering the actual distribution root like most of them do
20:02:06 <ais523> oh, and I forgot: if you make changes to the build system, then it rebuilds itself and uses the newly-changed build system to rebuild the project
20:02:24 <ais523> except if you don't have the tools needed to rebuild the build system (say you're missing autoconf), it just prints a warning message and uses the old one
20:02:40 <ais523> ooh, and it does automatic dependency tracking too
20:02:54 <cpressey> Um. I have a ball.
20:02:59 * cpressey bounces his ball.
20:03:44 <AnMaster> <ais523> Gregor-W: hmm, reminds me slightly of coLinux <-- colinux is very very different afaik.
20:03:52 <AnMaster> it runs a linux kernel
20:04:27 <pikhq> ais523: Beauty.
20:04:46 <ais523> Claudio's thoughtfully provided an http download link for people who can't do Gopher over IPv6
20:05:16 <pikhq> Gopher over IPv6?
20:05:26 <AnMaster> ais523, he also provided a ipv4 gropher proxy iirc?
20:05:31 <zzo38> I cannot do anything over IPv6. I don't have IPv6
20:05:34 <ais523> not as far as I can remember
20:05:53 <ais523> in fact, I can't remember why there's an IPv6 gopher download link
20:06:07 <ais523> but it doesn't seem massively out of place
20:06:09 <AnMaster> ais523, pretty sure that happened when I tried to do gropher over ipv4. it gave me links to some gropher proxies to try
20:06:19 <AnMaster> including one he ren it seemed like
20:06:31 <AnMaster> since it was using the intercal domain
20:06:49 <ais523> just gives me an error when I follow the link
20:08:41 <AnMaster> ais523, worked for me hm
20:08:54 <AnMaster> ais523, gopher://gopher.intercal.org.uk/
20:09:11 <AnMaster> " IPv4 access to this gopher server is not supported, however the directories below may provide access to our IPv6-only servers. Feel free to try."
20:09:28 <AnMaster> first one listed is "gopher.intercal.org.uk" which links to gopher://gopher4.intercal.org.uk/1gopher.intercal.org.uk
20:09:45 <cpressey> bbl
20:09:47 -!- cpressey has left (?).
20:12:01 -!- relet has joined.
20:16:39 <zzo38> I want to eventually to write gopher client on nearly anything
20:17:07 <zzo38> Including "faxgopher" that all user interface is done by sending/receiving page by fax
20:17:19 <zzo38> And possibly also a gopher client on black and white GameBoy
20:17:46 <ais523> zzo38: it's a pity most of the world will never appreciate your ideas, you have some truly great ones
20:21:09 <zzo38> Have you ever play mahjong? Have you ever make rule variants of mahjong game?
20:21:36 <ais523> I'm afraid not; I've only played the solitaire version
20:21:45 <ais523> and it's rather different (and probably inferior) to the multiplayer version
20:22:12 <zzo38> ais523: Yes, it is a completely different game. It just uses the same tiles is all.
20:22:49 <coppro> zzo38: don't forget homing pigeon
20:23:22 <zzo38> Can you just review this tell me if you can understand (please note I am not finished writing it yet): http://zzo38computer.cjb.net/mahjong/anime_evolution/ Also tell me if you like these rules. This is a bit different rules from normal mahjong but it is based on the Japanese riichi mahjong rules, some things are based on ZungJung, but it has some new things as well
20:23:32 <zzo38> coppro: Homing pigeon?
20:23:42 <coppro> of course
20:23:51 <coppro> it's not a proper protocol until it's been implemented by pigeon
20:24:30 <zzo38> coppro: Do you mean, gopher protocol by pigeon? I have read of IP over carrier pigeon, it is very extremely slow but it does work (and it has been actually done)
20:24:38 <coppro> yes, exactly
20:27:48 <zzo38> Also gopher could be done over FORMCARD forms, which would be a bit difficult for some reasons, one thing is that FORMCARD does not support input in lowercase
20:28:08 -!- cal153 has quit (Ping timeout: 260 seconds).
20:28:09 <zzo38> And does not support all ASCII characters in form field input
20:31:05 <AnMaster> ais523, did you get gropher to work for intercal?
20:31:12 <ais523> AnMaster: no, I don't have IPv6
20:31:24 <AnMaster> ais523, see above... for the ipv4 proxy
20:31:30 <AnMaster> oh wait you filter gropher urls too?
20:31:39 <AnMaster> ais523, I think you need to go from the clc side, not the c side
20:31:46 <AnMaster> ais523, since you need to go to basedir
20:31:54 -!- hiato has joined.
20:31:55 <ais523> hmm, I have to go home anyway
20:31:59 <AnMaster> cya
20:32:30 -!- ais523 has quit (Remote host closed the connection).
20:36:09 <zzo38> Please tell me if the mahjong rules I wrote is good so far in your opinion?
20:37:44 <AnMaster> I have no idea about mahjong, couldn't possibly help you here
20:37:54 <AnMaster> why do you assume any of us are experts on this?
20:38:34 <zzo38> Even if you don't know about mahjong, it should tell you exactly how to play this game, even for someone who has not heard of the game before
20:43:06 <AnMaster> mhm
20:43:34 <AnMaster> zzo38, link to the file
20:44:24 <zzo38> AnMaster: http://zzo38computer.cjb.net/mahjong/anime_evolution/
20:45:22 <AnMaster> zzo38, yes but which file in there?
20:45:27 <AnMaster> the first one is empty
20:45:51 <zzo38> All of the files together make up the rules. Like I said, it isn't finished yet.
20:46:03 <zzo38> That file will be filled later on, so will other files be improved
20:46:11 <zzo38> But if you found a mistake or just a bad rule, tell me
20:46:57 -!- Gregor-P has quit (Quit: Bye).
20:47:21 <AnMaster> zzo38, too long to read :/
20:48:28 <zzo38> Perhaps read tiles.txt at first, you can better understand the other files after that
20:48:40 <AnMaster> as I said: too long to read
20:48:42 <AnMaster> tl;dr
20:48:43 <zzo38> Have you ever seen a set of mahjong tiles?
20:48:58 <zzo38> I have a Washizu Mahjong set.
20:49:13 -!- Gregor-P has joined.
20:49:23 <AnMaster> zzo38, I have played the solitaire version on computer, quite boring
20:49:38 <AnMaster> Gregor-W, wb
20:49:51 <zzo38> Washizu here does not refer to a real person, it refers to a character in the Akagi manga, invented by Nobuyuki Fukumoto.
20:53:38 <AnMaster> zzo38, did you miss that I said tl;dr ?
20:54:08 <zzo38> No.
20:54:28 -!- zzo38 has quit (Remote host closed the connection).
20:54:49 -!- cal153 has joined.
21:13:01 -!- augur has quit (Remote host closed the connection).
21:14:51 <AnMaster> night
21:28:40 -!- Gregor-P has quit (Ping timeout: 276 seconds).
21:48:18 -!- sebbu2 has joined.
21:49:19 -!- sebbu has quit (Ping timeout: 276 seconds).
21:49:19 -!- sebbu2 has changed nick to sebbu.
22:00:19 -!- myndzi has joined.
22:03:46 -!- myndzi\ has quit (Ping timeout: 276 seconds).
22:09:01 -!- hiato has quit (Quit: /quit /quit /quit /quit).
22:25:43 -!- pineappl1 has changed nick to pineapple.
22:28:55 -!- Oranjer has joined.
22:29:28 -!- Geekthras has quit (Ping timeout: 260 seconds).
22:42:01 -!- Geekthras has joined.
22:44:16 -!- ehirdiphone has joined.
22:44:42 <ehirdiphone> Lax patrol yields no packet control yields "Hi."
22:45:52 <Phantom_Hoover> ...OK...
22:49:43 <Sgeo_> hi
22:50:09 <Sgeo_> My computer's clock says 4:21. It's now 5:49
22:55:33 -!- Geekthras has quit (Ping timeout: 265 seconds).
23:01:01 -!- GreaseMonkey has joined.
23:07:19 <ehirdiphone> pikhq: since when are you unemployed? :(
23:07:38 <pikhq> ehirdiphone: Since months ago.
23:07:47 <ehirdiphone> Aw.
23:08:25 <ehirdiphone> Recession, or making the computers recursively self-improve?
23:08:40 <pikhq> Recession.
23:08:49 -!- Geekthras has joined.
23:09:06 <pikhq> Compiling X11 annoys me greatly.
23:12:04 <ehirdiphone> pikhq: Lets write our own X11 server.
23:12:20 <pikhq> ehirdiphone: Compiling *libX11* annoys me greatly.
23:12:25 <ehirdiphone> And call the server X.Org, not X11.
23:12:34 <pikhq> The X server itself is quite straightforward.
23:12:38 <ehirdiphone> pikhq: Lets write our own libX11.
23:12:50 <pikhq> Let's call it xcb.
23:13:06 <ehirdiphone> That depends on things.
23:13:34 <ehirdiphone> Call it lib12 (roman numerals :P)
23:13:50 <ehirdiphone> Then 12serv on top.
23:14:05 <pikhq> While we're at it, let's make X12.
23:14:06 <pikhq> :P
23:14:18 <ehirdiphone> No. That is too far :P
23:14:31 <ehirdiphone> X should just be skullfucked then left to die.
23:14:37 <ehirdiphone> Forever.
23:14:38 <GreaseMonkey> !bfjoust nub >+[(+)*10>[[-]<]+]
23:14:45 <GreaseMonkey> oops syntax error
23:14:50 <GreaseMonkey> wait
23:14:55 <coppro> ehirdiphone: got a better idea?
23:14:57 <EgoBot> Score for GreaseMonkey_nub: 6.0
23:15:02 <GreaseMonkey> wow.
23:15:07 <GreaseMonkey> !bfjoust nub >+[(+)*10>[[+]<]+]
23:15:19 <ehirdiphone> !bfjoust sludge (>+>-)*20
23:15:26 <EgoBot> Score for ehirdiphone_sludge: 0.0
23:15:27 <EgoBot> Score for GreaseMonkey_nub: 5.7
23:15:27 <ehirdiphone> coppro: Yes.
23:15:52 <coppro> and that is?
23:16:12 <GreaseMonkey> !bfjoust nub >+[[(+)*10>[[+]<](-)*10>[[+]<]+]+]
23:16:15 <ehirdiphone> coppro: Do you have hours? And a keyboard for me?
23:16:20 <ehirdiphone> No? Well then.
23:16:27 <coppro> ehirdiphone: give me the cliff notes version
23:16:27 <EgoBot> Score for GreaseMonkey_nub: 5.1
23:16:29 -!- Phantom_Hoover has quit (Remote host closed the connection).
23:17:15 <ehirdiphone> coppro: Composable, extensible abstract views and mungers over STUFF.
23:17:16 <GreaseMonkey> !bfjoust nub >+[[(+)*10>[-[-[-[-[-[-[-[-[-[-[-[+]]]]]]]]]]]+]+]
23:17:27 <coppro> ehirdiphone: cool
23:17:29 <EgoBot> Score for GreaseMonkey_nub: 8.9
23:17:30 <ehirdiphone> Meaningless? Yes. You asked for cliff notes.
23:17:46 <GreaseMonkey> yeah, that's better
23:18:05 <ehirdiphone> GreaseMonkey: Loops are death.
23:18:11 <GreaseMonkey> hmmkay
23:18:37 <ehirdiphone> pikhq: I bet you could write a decent libtwelve in... 2,000 lines.
23:18:40 -!- augur has joined.
23:18:43 <ehirdiphone> 3k at most.
23:18:55 <pikhq> ehirdiphone: But nothing links against libtwelve.
23:18:58 <GreaseMonkey> !bfjoust pool [[(>+>-)*3(<)*2+]+]
23:19:03 <ehirdiphone> Then 12serv, minus drivers? Let's say 800.
23:19:04 <EgoBot> Score for GreaseMonkey_pool: 0.0
23:19:07 <GreaseMonkey> ow.
23:19:09 <ehirdiphone> pikhq: 12serv does.
23:19:29 <ehirdiphone> pikhq: Besides. Compatibility layer.
23:19:49 <GreaseMonkey> !bfjoust pool [[(+>[-[-[-[-[+]]]]]->)*3(<)*2+]+]
23:20:02 <EgoBot> Score for GreaseMonkey_pool: 1.0
23:20:35 <GreaseMonkey> !bfjoust pool [[(+)*3>(-)*3>(+)*3>[-[-[-[-[+]]]]](<)*2+]+]
23:20:42 <ehirdiphone> pikhq: All in all, 4k lines upper bound for a nice minimalist X solution.
23:20:44 <EgoBot> Score for GreaseMonkey_pool: 11.7
23:20:51 <GreaseMonkey> i just realised that i'm probably killing myself here
23:21:00 <GreaseMonkey> !bfjoust pool [[(+)*3>(-)*4>(+)*5>[-[-[-[-[+]]]]](<)*2+]+]
23:21:10 <EgoBot> Score for GreaseMonkey_pool: 14.0
23:21:17 <GreaseMonkey> yeah that's getting there
23:21:47 <GreaseMonkey> oh yay i'm actually on the hill now
23:22:12 <GreaseMonkey> !bfjoust pool [[(+)*3>(-)*4>(+)*8>[-[-[-[-[+]]]]](<)*2+]+]
23:22:16 <ehirdiphone> !bfjoust lunge (>)*15(>(-)*128[+--+-])*30
23:22:17 -!- myndzi has quit (Read error: Connection reset by peer).
23:22:31 <EgoBot> Score for ehirdiphone_lunge: 2.8
23:22:31 <EgoBot> Score for GreaseMonkey_pool: 14.3
23:22:43 <GreaseMonkey> !bfjoust pool [[(+)*3>(-)*8>(+)*17>[-[-[-[-[+]]]]](<)*2+]+]
23:22:47 -!- myndzi has joined.
23:22:52 <EgoBot> Score for GreaseMonkey_pool: 12.1
23:22:53 <ehirdiphone> pikhq: Y'know what?
23:22:56 <GreaseMonkey> aww :/
23:23:02 <GreaseMonkey> !bfjoust pool [[(+)*3>(-)*5>(+)*13>[-[-[-[-[+]]]]](<)*2+]+]
23:23:11 <EgoBot> Score for GreaseMonkey_pool: 8.3
23:23:13 <ehirdiphone> Lets just implement plan9 gfx + rio for Linux.
23:23:16 <GreaseMonkey> WHYYYYYYYY
23:23:26 <ehirdiphone> /dev/screen
23:23:29 <GreaseMonkey> !bfjoust pool [[(+)*3>(-)*5>(+)*7>[-[-[-[-[+]]]]](<)*2+]+]
23:23:38 <EgoBot> Score for GreaseMonkey_pool: 10.7
23:23:41 <GreaseMonkey> !bfjoust pool [[(-)*3>(+)*5>(+)*7>[-[-[-[-[+]]]]](<)*2+]+]
23:23:50 <ehirdiphone> rio provides /dev/win/me/shit
23:23:52 <EgoBot> Score for GreaseMonkey_pool: 10.7
23:24:02 <ehirdiphone> & /dev/win/N
23:24:05 <GreaseMonkey> !bfjoust pool [[(-)*3>(+)*4>(+)*8>[-[-[-[-[+]]]]](<)*2+]+]
23:24:08 <ehirdiphone> Job done
23:24:14 <EgoBot> Score for GreaseMonkey_pool: 12.4
23:24:21 <GreaseMonkey> !bfjoust pool [[(-)*3>(+)*4>(+)*5>[-[-[-[-[+]]]]](<)*2+]+]
23:24:22 <ehirdiphone> Insert libx11 compatibility layer
23:24:30 <EgoBot> Score for GreaseMonkey_pool: 16.0
23:24:34 <GreaseMonkey> oh yay
23:24:44 <GreaseMonkey> !bfjoust pool [[>(-)*16>(+)*5>[-[-[-[-[+]]]]](<)*2+]+]
23:24:53 <EgoBot> Score for GreaseMonkey_pool: 9.9
23:24:55 <GreaseMonkey> !bfjoust pool [[>(-)*16>(+)*5>[-[-[-[-[+]]]]]<+]+]
23:25:00 <ehirdiphone> pikhq: alas Linux has no bind(2)
23:25:02 <EgoBot> Score for GreaseMonkey_pool: 0.7
23:25:04 <GreaseMonkey> ?!
23:25:08 <GreaseMonkey> !bfjoust pool [[(-)*3>(+)*4>(+)*5>[-[-[-[-[+]]]]](<)*2+]+]
23:25:13 <GreaseMonkey> i'll shove my older one in
23:25:17 <EgoBot> Score for GreaseMonkey_pool: 12.8
23:25:17 <ehirdiphone> pikhq: Lets just write a plan 9ish os :P
23:25:37 <GreaseMonkey> !bfjoust pool [[(-)*3>(+)*4>(+)*5>[-[-[-[-[+]]]]](<)*2+]+]
23:25:46 <EgoBot> Score for GreaseMonkey_pool: 12.8
23:26:01 <GreaseMonkey> somebody screwed me >_<
23:26:45 <pikhq> ehirdiphone: At this rate I'm just wondering what's the nicest system that can be done on the framebuffer.
23:27:02 <ehirdiphone> pikhq: yfs /n/server.net/dev/drive3 /stuff
23:27:11 <ehirdiphone> Fuck yeah, Plan... y?
23:27:20 <ehirdiphone> Plan gamma. Gimme a gamma.
23:27:48 <pikhq> Man. DirectFB. :)
23:28:01 <pikhq> *There's* what FURINIKUSU needs.
23:28:18 <GreaseMonkey> !bfjoust mine >[[-]+[-[--[+]...]+]+]
23:28:27 <ehirdiphone> newwin 'cat /n/othercomp/dev/screen >/dev/screen' # 'vnc'
23:28:27 <EgoBot> Score for GreaseMonkey_mine: 4.1
23:28:33 <GreaseMonkey> aww :(
23:28:46 <GreaseMonkey> !bfjoust mine (+)*7>[[-]+[-[--[+]...]+]+]
23:28:52 <ehirdiphone> well kb and mouse too :P
23:28:56 <EgoBot> Score for GreaseMonkey_mine: 4.1
23:28:58 <ehirdiphone> *needs
23:29:01 <ehirdiphone> after well
23:29:08 <GreaseMonkey> oh, right, i get it
23:29:12 <GreaseMonkey> !bfjoust mine (+)*7>[-]+[[-]+[-[--[+]...]+]+]
23:29:18 <ehirdiphone> pikhq: gimme a gamma!
23:29:32 <EgoBot> Score for GreaseMonkey_mine: 0.0
23:29:41 <GreaseMonkey> !bfjoust mine >(+)*101>[-]+[[-]+[-[--[+]...]+]+]
23:29:57 <EgoBot> Score for GreaseMonkey_mine: 0.0
23:30:02 <ehirdiphone> GreaseMonkey: No, you don't get it :P
23:30:10 <GreaseMonkey> well i get what the bug is
23:30:17 <ehirdiphone> pikhq: Gamma symbol!
23:30:26 -!- cpressey has joined.
23:30:41 <GreaseMonkey> !bfjoust mine >(+)*101>[-]+[-[-]+[-[--[+]...]+]+]
23:30:54 <ehirdiphone> Hi cpressey
23:30:54 <cpressey> ehirdiphone: Turns out I have zero good ideas for bots. As I suspected.
23:30:58 <EgoBot> Score for GreaseMonkey_mine: 0.0
23:30:58 <GreaseMonkey> 'lo
23:31:02 <GreaseMonkey> butt >_<
23:31:08 <ehirdiphone> cpressey: Make one that lets me do
23:31:13 <ehirdiphone> .char gamma
23:31:15 -!- oerjan has joined.
23:31:18 <ehirdiphone> and get a gamma
23:31:22 <ehirdiphone> GIMME A GA
23:31:24 <ehirdiphone> Mms
23:31:26 <pikhq> ehirdiphone: OMG. DirectFB.
23:31:28 <ehirdiphone> GAMMA
23:31:31 <pikhq> Erm. XDirectFB.
23:31:32 <ehirdiphone> GIMME ONE
23:31:42 <ehirdiphone> pikhq: yeah
23:31:48 <pikhq> *That* is how to do X.
23:31:51 <ehirdiphone> iirc shitty
23:32:02 <ehirdiphone> *iirc,
23:32:16 <ehirdiphone> Someone paste a fucking gamma!
23:33:34 <cpressey> wtf omg haha
23:33:35 <ehirdiphone> -_-
23:33:39 -!- tombom has quit (Quit: Leaving).
23:33:42 <ehirdiphone> PLEASE
23:33:50 <cpressey> One second, pilgrim.
23:34:02 <pikhq> Hmm. Alternately, use GTK-DirectFB (and fuck Firefox. Just, fuck Firefox.)
23:34:20 <ehirdiphone> pikhq: I'm no furry.
23:34:20 <cpressey> γ
23:34:29 <ehirdiphone> cpressey: <3
23:34:47 <Gregor-W> Damn it. I was just looking for a Unicode high bar, to do |<high bar> and be a jerk.
23:34:49 <cpressey> A bot to privmsg you unicode characters actually is not a bad idea.
23:34:57 <ehirdiphone> pikhq: Plan γ
23:35:07 <cpressey> I'm sure such a trick could be taught to one of the existing bots though.
23:35:07 <ehirdiphone> Gregor-W: wat
23:35:23 <oerjan> !userinterps
23:35:23 <EgoBot> Installed user interpreters: aol austro b1ff bc bct bfbignum brit brooklyn bypass_ignore bytes chaos chef chiqrsx9p choo cockney ctcp dc drawl drome dubya echo eehird ehird fudd funetak google graph gregor he hello id jethro kraut num ook pansy pirate plot postmodern postmodern_aoler redneck reverse rot13 sadbf sfedeesh sffedeesh sffffedeesh sffffffffedeesh simpleacro slashes svedeesh swedish valspeak warez yodawg
23:35:55 <oerjan> ^show
23:35:55 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord
23:36:03 <ehirdiphone> !ehird Hello world
23:36:05 <EgoBot> Hello world
23:36:16 <ehirdiphone> !ehird What is this gaps?
23:36:17 <EgoBot> Wut is this gaps?
23:36:33 <ehirdiphone> !eehird is an excellent man diverse.
23:36:39 <cpressey> To write a bot that executes user code, you need to set up a timeout and shit, and... yeah. I don't care enough to write all that. If I did, I'd do it in Erlang.
23:36:53 <oerjan> ^ord Ø
23:36:53 <ehirdiphone> !bypass_ignore shitters
23:36:53 <fungot> 195 152
23:36:54 <EgoBot> shitters
23:37:11 <oerjan> ^asc 195 152
23:37:11 <fungot> 49.
23:37:15 <oerjan> wtf
23:37:16 <ehirdiphone> ^ord please make ^ord use commas and . :P
23:37:17 <fungot> 112 108 101 97 115 101 32 109 97 107 101 32 94 111 114 100 32 117 115 101 32 99 111 109 109 97 115 32 97 110 100 32 46 32 58 80
23:37:21 <oerjan> oh they're not inverses
23:37:41 <ehirdiphone> ^asc is the old name
23:37:42 <fungot> 105.
23:37:47 <oerjan> ^asc Ø
23:37:47 <fungot> 195.
23:37:59 <oerjan> oh and single-byte
23:37:59 <ehirdiphone> One char only
23:38:03 <ehirdiphone> Byte rather
23:38:08 <ehirdiphone> ^ord inary
23:38:08 <fungot> 105 110 97 114 121
23:38:19 <ehirdiphone> ^ord œ
23:38:19 <fungot> 197 147
23:38:22 <ehirdiphone> see?
23:38:30 <ehirdiphone> ^ord æ
23:38:30 <fungot> 195 166
23:38:40 <oerjan> however, my idea here was that the reverse should be capable of doing what cpressey asked
23:38:55 <ehirdiphone> But we need search
23:39:10 <ehirdiphone> .char em dash
23:39:10 <cpressey> oerjan: most useful if the bot could translate names like 'gamma' to chars
23:39:13 <oerjan> ah
23:39:15 -!- MigoMipo has quit (Read error: Connection reset by peer).
23:39:21 <ehirdiphone> .char combining x
23:39:23 <ehirdiphone> etc
23:39:28 <cpressey> if i'm going ot look up the unicode code point, i might as well copy the character out of whatever i used to look that up in
23:39:37 <GreaseMonkey> i might (read: MIGHT) try making a BF joust program in lua
23:39:37 <ehirdiphone> .char sup 3
23:39:44 <GreaseMonkey> i just need the lua 5.1 VM spec
23:39:50 <ehirdiphone> GreaseMonkey: handle polarity
23:40:02 <GreaseMonkey> ehirdiphone: can be done
23:40:04 <ehirdiphone> and tapering
23:40:20 <GreaseMonkey> turns out i have that doc i need
23:40:24 <cpressey> Heck, let it receive "I've got a &gamma; here" and have it provide a translation
23:40:31 <ehirdiphone> (just like polarity for tape lengths)
23:40:43 <ehirdiphone> cpressey: No, \gamma
23:41:01 <cpressey> As it suits you, miss.
23:41:24 <ehirdiphone> I've got an \ae{}mazing pre\"empting
23:41:27 <ehirdiphone> ->
23:41:39 <GreaseMonkey> wow kwrite thinks # is a comment in lua
23:41:45 <ehirdiphone> I've got an preëmpting
23:41:53 <ehirdiphone> ...
23:42:01 <ehirdiphone> *æmazing
23:42:43 <ehirdiphone> What's the erdos accent in tex?
23:42:56 <ehirdiphone> the ’’ thing
23:43:38 <oerjan> cpressey: i note that http://unicode-search.net/unicode-namesearch.pl?term=gamma&.submit=Send+foresp%C3%B8rsel&subs=1&print=1 gives a whole slew of hits for "gamma"
23:44:49 <cpressey> oerjan: For some reason that doesn't bother me much
23:45:03 <oerjan> cpressey: well it means there's a lot to extract
23:45:35 <cpressey> oerjan: I was not really thinking of arbitrary unicode chars, just common ones
23:45:50 <cpressey> After all, only the ones *I* would think to use, are the important ones. Clearly.
23:46:05 <oerjan> hmph
23:46:05 <ehirdiphone> pikhq: /dev/power. You halt with 'echo off>/dev/power' :D
23:46:31 <cpressey> I try to have a text file of those, but it's a pain to remember to have it open. Mainly the emdash, arrows, greek letters, and some set theory operators
23:47:09 <oerjan> cpressey: however note that there are already _two_ common hits there, capital and small
23:47:20 <ehirdiphone> pikhq: ps2kbd /dev/ps2/kbd
23:47:24 <Gregor-W> /dev/elf . To run something, cat someelf > /dev/elf
23:47:37 <ehirdiphone> usbmouse /dev/usb1
23:47:40 <Gregor-W> Uhh, Idonno how args get in there.
23:47:54 <oerjan> oh and they're not the first ones either, that's some obscure "latin gamma" thing
23:48:27 <ehirdiphone> oerjan: Favour lower over upper. Shorter name than longer. Greek than Latin
23:48:44 <ehirdiphone> (shorter/longer after REMOVING preferred words)
23:48:45 <cpressey> oerjan: OK, OK. Translate HTML entities then. Covers my use case, and maybe ehird's, modulo the ridiculous wanting-TeX-syntax thing. &gamma; and &Gamma;.
23:49:00 <ehirdiphone> TeX syntax is hugs.
23:49:21 <cpressey> Gag me with a $spoon$
23:49:21 <oerjan> *huge
23:50:13 <oerjan> ehirdiphone: also, \"
23:50:24 <oerjan> iirc
23:50:33 * GreaseMonkey now reading ANoFrillsIntroductionToLua51VMInstructions.pdf
23:50:39 <ehirdiphone> cpressey: \forall [\alpha, \beta, \gamma \in \emptyset] (\alpha \to \beta \to \gamma) \to (\beta \to \alpha \to \gamma)
23:50:48 <oerjan> or wait is that ordinary
23:50:53 <ehirdiphone> cpressey: beat that with HTML
23:50:58 <ehirdiphone> oerjan: that's umlaut
23:51:19 <oerjan> ehirdiphone: right i just realized
23:51:27 <oerjan> ehirdiphone: \H maybe
23:51:36 <ehirdiphone> why H??
23:51:40 <oerjan> rings a vague bell
23:51:47 <ehirdiphone> Paul Erd\Hos :P
23:51:53 <oerjan> hungarian? also vaguely shaped the same
23:52:19 <ehirdiphone> oerjan: define vaguely
23:52:30 <ehirdiphone> H ’’
23:52:36 <ehirdiphone> not seeing it
23:52:37 <oerjan> ehirdiphone: two vertically oriented lines?
23:53:00 <ehirdiphone> except they're very slanted and H's are connected
23:53:20 <oerjan> what part of "vaguely" don't you understand?
23:53:58 <ehirdiphone> the part where it means "arbitrarily"
23:54:08 <Sgeo_> What's an easy way to convert binary to decimal
23:54:18 <ehirdiphone> ignore "phone", squint and my name looks like yours
23:54:28 <ehirdiphone> Sgeo_: lern2algorith
23:54:30 <ehirdiphone> m
23:54:54 <pikhq> Learn2al gore rhythm
23:55:11 * Sgeo_ hopes it doesn't require many logic gates
23:55:13 <ehirdiphone> climate change in da house
23:55:14 <Gregor-W> Play that funky music, Al Gore
23:55:29 <ehirdiphone> Sgeo_: divmod for one
23:55:31 <Sgeo_> I can't even add binary numbers yet, and that just takes AND and XOR
23:55:43 <ehirdiphone> Then give up
23:56:00 <Sgeo_> Or I could eventually construct AND and XOR
23:56:02 <Sgeo_> Somehow
23:56:12 <Sgeo_> Or just convert to analog for addition
23:56:22 <ehirdiphone> I meant on bin2dec.
23:56:46 <Sgeo_> Hm.
23:56:51 <Sgeo_> I wonder if I could do it in analog
23:57:09 <ehirdiphone> Back soon.
23:57:13 -!- ehirdiphone has quit (Quit: Get Colloquy for iPhone! http://mobile.colloquy.info).
←2010-06-27 2010-06-28 2010-06-29→ ↑2010 ↑all