00:00:12 <alise_> Rafajafar: it's a layer over various languages, designed for esoteric ones
00:00:21 <alise_> that layers FS, socket, and other devices over byte IO
00:00:29 <alise_> none, just an svn repository
00:00:59 <Rafajafar> I can help with M5 if you need it, though :-)
00:01:04 -!- alise has quit (Ping timeout: 276 seconds).
00:02:03 <Sgeo> Rafajafar, no problem, I lost interest in 2008
00:02:35 <Sgeo> There are docs
00:03:36 <Sgeo> http://trac2.assembla.com/psox/browser/trunk/spec
00:03:50 <Rafajafar> I'd like to see an esoteric language for image generation, specifically targeted towards data obfuscation as in Captchas
00:06:40 <alise_> anyone have greppable logs? AnMaster?
00:07:27 <EgoBot> help: General commands: !help, !info, !bf_txtgen. See also !help languages, !help userinterps. You can get help on some commands by typing !help <command>.
00:07:50 <alise_> Gregor: you got greppable logs?
00:08:03 <oerjan> dammit i'm _sure_ one of the bots has a dice command
00:08:24 <alise_> Gregor: grep "(alise|ehird) DownRight pastie" recently plz, i wanna find my downright syntax for ais523
00:08:39 <HackEgo> ? \ addquote \ calc \ commands \ creatures \ define \ esolang \ etymology \ fortune \ google \ helpme \ imdb \ karma \ marco \ minifind \ paste \ ping \ quote \ rec \ roll \ runfor \ sayhi \ strfile \ swedish \ toutf8 \ translate \ translatefromto \ translateto \ unstr \ url \ wolfram
00:08:58 <coppro> meh, that's the easy way
00:09:20 <coppro> `echo -e '1\n2\n3\n4\n5\n6' | shuf -n 1
00:09:22 <HackEgo> -e '1\n2\n3\n4\n5\n6' | shuf -n 1
00:09:44 <coppro> `run echo -e '1\n2\n3\n4\n5\n6' | shuf -n 1
00:09:50 <Gregor> alise_: All I get for grep 'DownRight.*pastie' is 10.06.26:16:08:24 <alise_> Gregor: grep "(alise|ehird) DownRight pastie" recently plz, i wanna find my downright syntax for ais523
00:10:07 <alise_> Gregor: well not on the same line
00:10:24 <alise_> grep (alise|ehird)>.*downright case insensitively, with context
00:10:28 <alise_> then maybe grep the result for pastie
00:10:49 <Gregor> alise_: grep -i downright doesn't find any pastes.
00:11:09 <alise_> Gregor: grep -i -B 100 downright | grep pastie
00:11:27 <Gregor> Rafajafar: The `imdb command is unmaintained and almost certainly broken :P
00:11:28 <oerjan> Rafajafar: lots of those commands are broken, although i didn't know imdb was (all the google-based ones are)
00:11:52 <alise_> Gregor: Abuh? Just grep downright and give dates then, please :P
00:12:13 <HackEgo> I like big butts and I cannot lie. You other brothers can not deny that when a girl comes in with an itty bitty waist and a round thing in your face, you get sprung.
00:12:29 <ais523> I wonder who programmed that in
00:12:29 <HackEgo> #!/bin/sh \ cd `dirname "$0"` \ cat ../help.txt
00:12:39 <HackEgo> I like big butts and I cannot lie. You other brothers can not deny that when a girl comes in with an itty bitty waist and a round thing in your face, you get sprung.
00:12:47 <Gregor> alise_: 10.01.10 10.03.20 10.03.21 10.05.01 10.06.26
00:12:49 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
00:12:58 <HackEgo> Have no friends not equal to yourself. \-- Confucius
00:13:04 <HackEgo> Fortune's Law of the Week (this week, from Kentucky): \No female shall appear in a bathing suit at any airport in this \ State unless she is escorted by two officers or unless she is armed \ with a club. The provisions of this statute shall not apply to females \ weighing less than 90 pounds nor exceeding 200 pounds,
00:13:13 <alise_> http://codu.org/projects/hackbot/fshg/index.cgi/log/a4fee630c6ff/help.txt
00:13:20 <alise_> 4 months HackBot <fedoragirl> run echo 'I like big butts and I cannot lie. You other brothers can not deny that when a girl comes in with an itty bitty waist and a round thing in your face, you get sprung.' > help.txt
00:13:20 <alise_> 10 months HackBot <RProgrammer> run echo "Use 'commands' to see available commands." > help.txt
00:13:20 <alise_> 10 months HackBot <RProgrammer> run echo 'Commands are: addquote, calc, creatures, define, esolang, etymology, fortune, google, helpme, imdb, minifind, paste, quote, runfor, sayhi, strfile, toutf8, translate, translatefromto, translateto, unstr, url, wolfram' > help.txt
00:13:22 <alise_> 10 months HackBot <RProgrammer> run echo help > help.txt
00:13:25 <alise_> I think the latest one is the best tbh
00:13:25 <coppro> great, Confucius just told me to have no frends
00:13:50 <alise_> coppro: you can have yourself as a friend
00:13:52 <alise_> Rafajafar: WHO ADDED THAT
00:14:06 <coppro> alise_: I don't believe an object can be a friend with itself
00:14:14 <alise_> coppro: that's prejudice.
00:14:16 <ais523> it effectiely is by default, isn't it?
00:14:37 <Rafajafar> "hey you know that stuff you can see, I want you to see all of it"
00:14:42 <alise_> there are self-hating people :P
00:14:44 <coppro> also, it's possible that Confucius meant something else, but, really, he should have read Euclid
00:15:28 <alise_> `run echo "I'm a program. I don't /have/ genitals." >bin/penis
00:15:31 <alise_> `run echo "I'm a program. I don't /have/ genitals." >bin/vagina
00:15:32 <Sgeo> I come in here mostly for the conversation these days.
00:15:41 <alise_> `run echo "echo I'm a program. I don't /have/ genitals." >bin/penis
00:15:48 <alise_> `run echo "echo \"I'm a program. I don't /have/ genitals.\"" >bin/penis
00:15:54 <Rafajafar> `haskell printStrLn "alise is a twat"
00:15:58 <Rafajafar> !haskell printStrLn "alise is a twat"
00:16:06 <alise_> `run echo "echo \"I'm a program. I don't /have/ genitals.\"" >bin/penis
00:16:09 <Rafajafar> gah I need to learn haskell better
00:16:11 <alise_> Rafajafar: Um, fuck off?
00:16:30 <HackEgo> echo "I'm a program. I don't /have/ genitals."
00:16:33 <coppro> `run echo -e "#!/bin/sh\\necho \"I'm a program. I don't /have/ genitals.\"" >bin/penis
00:16:33 <alise_> `run chmod +x bin/penis
00:16:41 <oerjan> !haskell putStrLn "No insults!"
00:16:45 <alise_> `run echo "echo \"I'm a program. I don't /have/ genitals.\"" >bin/penis
00:16:46 <alise_> `run echo "echo \"I'm a program. I don't /have/ genitals.\"" >bin/vagina
00:16:48 <alise_> `run chmod +x bin/penis
00:16:49 <alise_> `run chmod +x bin/vagina
00:17:07 <Rafajafar> wtf why did yours work and not mine?
00:17:07 <HackEgo> I'm a program. I don't /have/ genitals.
00:17:21 <alise_> Rafajafar: because you can't spell
00:17:26 <alise_> and also oerjan isn't a twat-caller
00:17:41 <alise_> `run echo "echo \"I'm a program. I don't /have/ genitals.\"" >bin/vagina
00:17:46 <alise_> `run chmod +x bin/vagina
00:18:24 <coppro> `run echo -e "#!/bin/sh\\necho \"I'm a program. I don't /have/ genitals.\"" >bin/penis
00:18:29 <HackEgo> I'm a program. I don't /have/ genitals.
00:18:36 <oerjan> Rafajafar: print is for "arbitrary" values, not (just) strings
00:18:49 <oerjan> (and puts quotes around strings)
00:19:14 <coppro> (she'll feel left out)
00:19:20 <coppro> `cp bin/penis bin/vagina
00:20:06 <alise_> coppro: I don't recall genitals being included in the confusing nick-pronoun definition...
00:20:10 <alise_> But thanks for the vagina-hospitality :P
00:20:22 <alise_> I think HackEgo has vagina protection.
00:20:26 <HackEgo> #!/bin/sh \ echo "I'm a program. I don't /have/ genitals."
00:20:30 <HackEgo> echo "I'm a program. I don't /have/ genitals."
00:20:38 <alise_> coppro: you fail at hackego
00:20:42 <alise_> `run cp bin/penis bin/vagina
00:20:46 <HackEgo> I'm a program. I don't /have/ genitals.
00:20:58 <Rafajafar> `run echo "#!/usr/bin/perl \n print $ARGV[1] . 'is a twat!';\n" > bin/twat
00:21:08 <coppro> alise_: if you want to try to pass yourself off as a girl (which I will assume you do until I either hear otherwise or you change to a different nick), you have to go the distance
00:21:19 <Rafajafar> `run echo "#!/usr/bin/perl \n print $ARGV[1] . 'is a twat!';\n" > bin/twat
00:21:25 <alise_> coppro: Fine, fine, I am penisless.
00:21:55 <alise_> Ovaries are, like, the sexiest part of the female anatomy.
00:22:05 <alise_> Is it any coincidence that female = Fe + male, and ovaries are primarily composed of iron?
00:22:12 <Rafajafar> `run echo -e "#!/usr/bin/perl \n print $ARGV[1] . 'is a twat!';\n" > bin/twat
00:22:18 <Rafajafar> `run echo -e "#!/usr/bin/perl \n print $ARGV[1] . 'is a twat!';\n" > bin/twat
00:22:34 <alise_> `c puts("Rafajafar is a cunt.\n");
00:22:37 -!- chickenzilla has joined.
00:22:42 <alise_> Why on earth didn't that work :P
00:22:44 <Gregor> "/usr/bin/perl " doesn't exist.
00:22:49 <Gregor> alise_: Because you're looking for "!c"
00:22:53 <alise_> !c puts("Rafajafar is a cunt.\n");
00:22:53 <Rafajafar> `run echo -e "#!/usr/sbin/perl \n print $ARGV[1] . 'is a twat!';\n" > bin/twat
00:23:02 <alise_> Rafajafar: I never tire.
00:23:02 <Gregor> "/usr/sbin/perl " doesn't exist either.
00:23:09 <Gregor> I put the quotes there for a very good reason.
00:23:20 <Rafajafar> `run echo -e "#!bin/perl \n print $ARGV[1] . 'is a twat!';\n" > bin/twat
00:23:22 <alise_> And that is that QUOTES ARE SEXY.
00:23:26 <alise_> Rafajafar: you are a moron
00:23:30 <alise_> or have a really bad font
00:23:41 <coppro> is there a command to send a message to another bot and print the reply?
00:24:16 <oerjan> Gregor: it so does exist, which says
00:24:22 <coppro> also, it automatically kills processes that take too long, right?
00:24:24 <ais523> thutubot's +haskell was implemented by asking lambdabot
00:24:26 <Rafajafar> `run echo -e "#!/usr/bin/perl \n print $ARGV[1] . 'is a twat!';\n" > bin/twat
00:24:28 <ais523> although it was just a joke
00:24:33 <Gregor> HEY GUYS TIME FOR NEW JSMIPS
00:24:52 <coppro> alise_: Well, I could forkbomb it, but...
00:25:00 <alise_> Gregor: my genitalia wish to utilise jsmips for enterprising synergy
00:25:24 <oerjan> Gregor: oh hm the space. is that really significan in #! ?
00:25:37 <alise_> it will actually run /usr/bin/perl '' file
00:25:41 <alise_> which, of course, doesn't work.
00:25:47 <alise_> Q.E.D. (pronounced "Kwed").
00:26:09 <alise_> Gregor: Where, the new jsmips of sexy proportions?
00:26:18 <Rafajafar> `run echo -e "#!/usr/bin/perl \n print $ARGV[1] . 'is a twat!';\n" > bin/twat
00:26:37 <Gregor> alise_: Right now just in hg, I'm updating system.html as we speak.
00:26:56 <alise_> and even if it did I'd remove it, as I now apparently have the monopoly on twats in this channel
00:27:03 <alise_> I will proceed to crush smaller twat enterprises
00:27:10 <alise_> and illegally set prices
00:27:18 <pikhq> Okay, near as I can tell, GCC 4.5.0 cannot cross-compile to uclibc.
00:27:55 <Rafajafar> `run echo -e "perl -e twat.pl alise" >bin/runasperl
00:28:00 <pikhq> alise_: But PCC can't build all of userspace that I want.
00:28:08 <Gregor> Uploading, uploading ...
00:28:35 * pikhq tries a GCC 4.3 cross-compiler; that actually worked.
00:28:38 <Gregor> pikhq: And yet, GCC 4.5.0 can cross-compile to MIPS running the totally-fake JSMIPS operating system with newlib :P
00:28:50 <alise_> pikhq: So use other userspace.
00:28:55 <Gregor> http://codu.org/jsmips/system.html OMG IT'S A NEW JSMIPS
00:28:56 <alise_> Because MY FLINIX IS BETTER!
00:29:07 <alise_> Gregor: Meet the new JSMIPS, apparently same as the old JSMIPS.
00:29:12 <pikhq> Gregor: Yes. How'd you build it?
00:29:19 <alise_> Gregor: Seriously: Xserver (not X.Org) on <canvas>.
00:29:21 <Gregor> pikhq: WITH EVIL MAGIC
00:29:27 <alise_> Gregor: It would be amazing. pikhq will sing the virtues of Xserver to you.
00:29:29 <pikhq> ../gcc-4.5.0/configure --prefix=/flinix --target=i386-linux-uclibc --disable-nls --with-gnu-ld --with-gnu-as --enable-languages=c --disable-shared --disable-threads --disable-tls --disable-multilib --disable-decimal-float --disable-libgomp --disable-libssp --disable-libmudflap --without-headers --with-newlib
00:29:32 <Gregor> alise_: There are a lot of steps before I can do that :P
00:29:34 <oerjan> Rafajafar: you are having a stray space before your \n in the #! lines
00:29:44 <pikhq> Something a bit like that, with a binutils available?
00:29:58 <alise_> Gregor: Add some new instruction "canvas" that just takes some canvas instruction.
00:29:58 <Rafajafar> oerjan it's because it's not running as perl man
00:30:12 <alise_> Gregor: Write an Xserver driver that just does asm("canvas ...").
00:30:18 <Rafajafar> it has to be called "perl twat alise"
00:30:24 -!- BeholdMyGlory has quit (Remote host closed the connection).
00:30:27 <Gregor> pikhq: http://codu.org/projects/jsmips/hg/index.cgi/file/b007e714e4b1/patches/buildcc.sh
00:30:28 <alise_> Rafajafar: you're an idiot
00:30:59 <Rafajafar> `run echo -e "#!/usr/bin/perl\n print $ARGV[1] . 'is a twat!';\n" > bin/twat
00:31:15 <pikhq> Gregor: So, basically.
00:31:28 <alise_> Urgent Socket Condition
00:31:39 <alise_> Urgent Socket Condition would be an awesome band name.
00:31:48 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
00:31:50 <Gregor> alise_: I don't know why that error is happening just yet :P
00:31:58 <Gregor> OK guys, it's broken, stop :P
00:32:04 -!- HackEgo has quit (Remote host closed the connection).
00:32:04 -!- EgoBot has quit (Remote host closed the connection).
00:32:06 -!- HackEgo has joined.
00:32:06 -!- EgoBot has joined.
00:32:10 <HackEgo> #!/usr/bin/perl \ print [1] . 'is a twat!'; \
00:32:17 <Gregor> Everybody keeps flooding it 'til it dies.
00:32:38 <HackEgo> ARRAY(0x7f91c7f24d48)is a twat!
00:32:44 <pikhq> Anyways, if this goes well, I'll have a native toolchain. Which would be totally awesome.
00:33:03 <Gregor> pikhq: I should totally make a "native" JSMIPS toolchain.
00:33:29 <olsner> port spidermonkey and run jsmips on mips on jsmips?
00:33:44 <Gregor> olsner: That would almost be too easy.
00:34:04 <alise_> Gregor: Some definition of "too easy": P
00:34:27 <pikhq> alise_: He's got GCC working; there's most of the work.
00:34:48 <oerjan> Rafajafar: your $ARGV got interpreted by the shell rather than perl, me thinks
00:34:58 <Rafajafar> `run echo -e "#!/usr/bin/perl\n print \$ARGV[1] . 'is a twat!';\n" > bin/twat
00:35:22 <alise_> you are all failures at life :|
00:35:25 <pikhq> GCC CROSS COMPILER \o/
00:35:26 <HackEgo> #!/usr/bin/perl \ print $ARGV[1] . 'is a twat!'; \
00:35:40 <alise_> you could also just use "shift" afaik
00:36:00 <Rafajafar> argv[0] is the name of the program
00:36:18 <alise_> i'm pretty sure shift starts at [1]
00:36:32 <oerjan> `run perl -e 'print $ARGV[1]'
00:36:36 <pikhq> Gregor: Now to build a libc! And try to get a native toolchain!
00:36:40 <oerjan> `run perl -e 'print $ARGV[1];'
00:36:44 <oerjan> `run perl -e 'print $ARGV[0];'
00:36:48 <Gregor> pikhq: I already have a libc ... of course ...
00:37:02 <Sgeo> Ending the script tag is probably a smart thing to do
00:37:03 <Rafajafar> alise, keep thinking you're smarter than me... *pats you on the head* ...
00:37:05 <oerjan> um i suppose -e might not give an $ARGV
00:37:13 <Gregor> pikhq: A native toolchain would be sweeeet, but really I'd be happy with the heirloom Bourne shell compiling without patches :P
00:37:26 <Rafajafar> `run echo "#!/usr/bin/perl\n print $ARGV[1] . 'is a twat!';\n" > bin/twat
00:37:46 <alise_> Rafajafar: i'm certainly less annoying and that's saying something
00:38:14 <Rafajafar> alise_, I disagree, I think you're probably the most obnoxious person I've met in IRC...
00:38:28 <oerjan> Rafajafar: alise must think the last one was going to work :D
00:38:39 <Rafajafar> `run echo "#!/usr/bin/perl\n print $ARGV[1] . 'is a twat!';\n" > bin/twat
00:39:02 <oerjan> Rafajafar: shell deleted $ARGV again
00:39:25 <olsner> hmm, if you build the jsmips-on-mips port such that it automatically loads a new jsmips with the same jsmips-on-mips inside it... you might get something interesting :) if the jsmips-on-mips prints a boot message before starting javascript you should see a long list of boot messages being printed slower and slower :)
00:39:26 <pikhq> Gregor: Native toolchain for flinix. :)
00:40:13 <Gregor> olsner: Interpreter eigenratios.
00:40:31 <oerjan> !addinterp twat haskell main = interact $ (++ " is a twat!\n")
00:40:31 <EgoBot> Interpreter twat installed.
00:41:15 <alise_> !addinterp twat haskell main = interact $ (concat . (++ " is a twat!") . unlines)
00:41:15 <EgoBot> There is already an interpreter for twat!
00:41:20 <EgoBot> Interpreter twat deleted.
00:41:23 <alise_> !addinterp twat haskell main = interact $ concat . (++ " is a twat!") . unlines
00:41:23 <EgoBot> Interpreter twat installed.
00:41:25 <Rafajafar> yeah I dont even mess with haskell, I know I do not know it too well, I just know enough to know it's not quite where I want it in terms of libs to be useful to me
00:41:48 <alise_> !addinterp twat haskell main = interact $ concat . (++ [" is a twat!"]) . unlines
00:41:49 <EgoBot> There is already an interpreter for twat!
00:41:53 <EgoBot> Interpreter twat deleted.
00:41:54 <alise_> !addinterp twat haskell main = interact $ concat . (++ [" is a twat!"]) . unlines
00:41:55 <EgoBot> Interpreter twat installed.
00:41:56 <Rafajafar> god alise, even you cant do it right!
00:42:07 <alise_> hey this isn't easy :D
00:42:15 <alise_> !addinterp twat haskell main = interact $ concat . (++ [" is a twat!"]) . lines
00:42:16 <EgoBot> There is already an interpreter for twat!
00:42:16 <Gregor> This land is fail land.
00:42:19 <EgoBot> Interpreter twat deleted.
00:42:19 <Gregor> This land is failure land.
00:42:20 <alise_> !addinterp twat haskell main = interact $ concat . (++ [" is a twat!"]) . lines
00:42:21 <EgoBot> Interpreter twat installed.
00:42:22 <Gregor> Fail fail fail fail fail.
00:42:23 <Rafajafar> oh so when you do it it's not easy, but when I do it I'm an idiot
00:42:44 <Gregor> !twat Every person in this channel
00:42:47 <EgoBot> Every person in this channel is a twat!
00:43:14 <Gregor> Dern, newlib doesn't have ucontext.h
00:43:16 <EgoBot> `echo Everyone is a twat!
00:44:04 <Gregor> !twat `echo !twat `echo OH NOSE
00:44:08 <EgoBot> `echo !twat `echo OH NOSE is a twat!
00:44:09 <HackEgo> !twat `echo OH NOSE is a twat!
00:44:44 <Gregor> What is twat? Baby don't hurt me
00:45:02 <Gregor> Fekk, newlib doesn't have ucontext.h ... pile o garbage.
00:45:21 * alise_ looks up the rest of the lyrics
00:45:28 <alise_> Ugh, they suck even more :P
00:47:42 <pikhq> Does anyone happen to know how to find out where GCC *thinks* the include path should be?
00:48:27 <Gregor> Go digging through gcc -dumpspecs? :P
00:49:42 <pikhq> It apparently doesn't.
00:51:23 <oerjan> <alise> I want to write Agora an anthem.
00:51:48 -!- SevenInchBread has joined.
00:51:49 <oerjan> i am pretty sure Agora already has one. in fact i'm pretty sure i came second in the contest to select one.
00:52:10 <alise_> heh, and i was writing a proposal to select one too
00:52:17 <alise_> oerjan: you should come back to agora :(
00:52:25 <alise_> it sucks right now, needs moar oerjan
00:52:29 <oerjan> maybe that was the name Agora itself. i'm _still_ pretty sure there was an anthem contest.
00:52:30 -!- CakeProphet has quit (Disconnected by services).
00:52:34 -!- SevenInchBread has changed nick to CakeProphet.
00:56:26 <pikhq> Bootstrapping a toolchain is really, really annoying.
00:57:17 <pikhq> hello.c:1:19: error: stdio.h: No such file or directory
00:59:40 <ais523> you could just write printf's prototype by hand
00:59:43 <ais523> or puts', if you use that
01:01:49 <alise_> pikhq: you had a B Nomic Era 5 relic named after you
01:04:42 <alise_> coppro: riots in toronto. eh.
01:05:06 -!- Gracenotes has joined.
01:06:11 <oerjan> oh G-20. i thought you meant something _un_expected.
01:09:22 <coppro> they aren't even protestors
01:09:26 <coppro> they give protestors a bad name
01:11:29 <coppro> it's team "hur dur what can we get away with while the police are distracted"
01:11:31 <alise_> coppro: because they're violent or because it's just a riot? I just read the headline, in true redditor fashion
01:11:38 <alise_> i like the idea of that as a team sport
01:11:41 <alise_> how do you keep track of points?
01:11:49 <coppro> I mean, sure, there are protestors
01:11:51 <coppro> and they are protesting
01:12:14 <coppro> but the rioters are just idiots who probably can't even name 5 members of the G20
01:12:22 <pikhq> --with-sysroot. There we go.
01:12:44 <alise_> coppro: europe, spain, america, canada, italy
01:16:54 <oerjan> otherwise in canada, guess what a volcano in the boundary ranges of british columbia is _officially_ called?
01:19:49 <alise_> Sgeo: in isn't an array thing in js
01:19:51 <alise_> it's some property thing
01:19:52 <oerjan> (ref. wikipedia's Did You Know)
01:20:02 <Sgeo> Found that out, ty
01:22:08 <Sgeo> Screw you, typo!
01:22:12 <Sgeo> getElemenyById
01:27:30 <Sgeo> How do I block the form from being submitted
01:29:05 <ais523> IIRC you return false in its onsubmit method
01:29:28 <Sgeo> Doesn't seem to be working
01:35:17 <pikhq> /flinix/usr/include/bits/time.h:74: error: redefinition of 'struct timeval'
01:35:42 <pikhq> Why the hell is GCC making its own definition of a libc struct, anyways?
01:36:12 * Sgeo facepalms at self
01:37:28 <Sgeo> If anyone wants to see my crappy code, it's at http://sgeo.diagonalfish.net/coord_subtract.htm
01:39:10 -!- calamari has joined.
01:42:02 <pikhq> Would it *kill* GCC to show *where the previous definition was*?
01:42:16 <pikhq> Because, y'know, this would MAKE SOME SENSE AT ALL YOU FUCKING RETARDS
01:44:13 <ais523> pikhq: it normally does on the next line, IIRC
01:44:36 <pikhq> ais523: It doesn't.
01:44:40 <pikhq> In file included from /flinix/usr/include/sys/select.h:46, from /flinix/usr/include/sys/types.h:220, from ../../../gcc-4.3.4/libgcc/../gcc/tsystem.h:93, from ../../../gcc-4.3.4/libgcc/../gcc/libgcc2.c:33:
01:44:44 <pikhq> /flinix/usr/include/bits/time.h:74: error: redefinition of 'struct timeval'
01:44:47 <pikhq> Thanks a lot, GCC.
01:44:55 <pikhq> *Ooodles* of help, that.
01:45:07 <alise_> http://simple.wikipedia.org/wiki/Autofellatio
01:46:51 <Sgeo> Or he's just using the completely undocumented interface wrong
01:47:17 <pikhq> And the definition in bits/time.h conflicts with the definition in time.h
01:47:22 <pikhq> WHY DO YOU HATE ME UCLIBC
01:49:43 <Sgeo> No, he was using _someone else's_ interface wrong
01:49:59 <ais523> best directory name ever: nethac~2.3
01:50:19 <pikhq> alise_: I vote we nuke GCC and uclibc from orbit. Agreed?
01:50:29 <alise_> pikhq: But the uclibc people are nice...
01:50:41 <alise_> pikhq: I propose we nuke UNIX from orbit.
01:50:50 <pikhq> Okay, we can leave them around, but nuke GNU.
01:51:18 <alise_> pikhq: Definitely. And no, nuke GCC.
01:51:30 <alise_> Actually nuke Linux. I propose we create Plan 42.
01:51:50 <pikhq> GCC deserves something stronger than nuking.
01:52:16 <pikhq> Where's the nearest decent-sized black hole?
01:53:00 <alise_> pikhq: You're not going to like the answer to this...
01:53:04 <alise_> Richard Stallman's anus.
01:53:25 <pikhq> alise_: Dammit, GCC must've been from the Hawking radiation.
01:54:50 <alise_> pikhq: Turns out that faeces is processed rather strangely if it comes out of a black hole.
02:03:32 -!- wareya_ has quit (Read error: Operation timed out).
02:44:11 -!- Sgeo_ has joined.
02:47:24 -!- Sgeo has quit (Ping timeout: 265 seconds).
02:53:05 <Gregor> Fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuck
02:53:17 <Gregor> newlib has files under 4-clause BSD.
02:53:30 <pikhq> Fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuck
02:53:54 <pikhq> Didn't expect that to happen.
02:53:58 <Gregor> So ... what C library SHOULD I be using.
02:54:04 <Gregor> newlib was so easy to port ... but wtf.
02:54:17 <pikhq> There's a notable lack of good ones.
02:54:41 <Gregor> glibc isn't portable any more ... uClibc wasn't portable in the first place ... newlib is 4-clause ...
02:54:43 <pikhq> There don't *exist* any other portable C libraries.
02:55:02 -!- yiyus has quit (Ping timeout: 276 seconds).
02:55:16 <Gregor> Are they at least all the same 4-clause with University of California? *checks*
02:55:22 <pikhq> Hmm. Wait: you have a way out.
02:55:34 <pikhq> Because it's a system library, the GPL has an exception for it.
02:55:46 <alise_> Gregor: but seriously, write your own
02:55:50 <alise_> libc is quite simple tbh
02:55:54 <alise_> besides, it'll be fun :P
02:56:01 <Gregor> alise_: There's just a lot of shit to do.
02:56:04 <pikhq> This same exception lets you link against Visual C's libc.
02:56:07 <Gregor> More than I want to do.
02:56:14 <alise_> Gregor: It's a Project.
02:56:24 <pikhq> alise_: You should. :P
02:56:26 <Gregor> pikhq: It's just annoying is all, not a halter.
02:56:32 <pikhq> With your copious 2 days a week.
02:56:46 <pikhq> Gregor: Anyways. I believe newlib is the only workable choice.
02:57:00 <Gregor> Maybe the easiest choice would be to replace the 4-clause parts of newlib!
02:57:04 <pikhq> Because glibc is agony itself to port, and uClibc cannot be ported.
02:57:19 <alise_> If oklopol gave me lodging I could have 7 days a week and also crippling insanity :P
02:57:50 <pikhq> I'm a bit short on lodging to offer *and* being in the EU. :P
02:57:53 <alise_> I need a libc name to create this directory >__>
02:58:26 <pikhq> CakeProphet: Now invent the list of trees of hash maps of lists of arrays of 32-bit address spaces.
02:58:42 <Gregor> http://pastebin.ca/1890153 <-- 4-clause files that are part of the JSMIPS build.
02:59:06 <alise_> Gregor: You don't need manpages.
02:59:10 <CakeProphet> pikhq: ha. a tree of hash maps? I don't think there's a big-o for that kind of memory use. :P
02:59:13 <alise_> Headers you can copy from elsewhere, probably.
02:59:24 <alise_> gpl has exception for system libraries.
02:59:32 <Gregor> Like I said, it's not a blocker, it's just annoying.
02:59:51 <Gregor> Also, there are no man pages in that list :P
03:01:05 <alise_> ./newlib/libc/posix/glob.3
03:01:05 <alise_> ./newlib/libc/posix/regex.3
03:01:07 <alise_> ./newlib/libc/posix/fnmatch.3
03:01:15 <alise_> ./newlib/libc/stdlib/getsubopt.3
03:03:41 <alise_> surely that gotta done have a good name
03:03:43 <Gregor> "4-clause files __that are part of the JSMIPS build__."
03:03:47 <Gregor> Man pages are not part of the build
03:05:42 -!- yiyus has joined.
03:06:00 -!- Oranjer has joined.
03:06:49 <alise_> Gregor: well they were in that paste.
03:07:51 <Gregor> I missed removing some I guess X-P
03:07:59 <pikhq> alise_: The Umi library.
03:08:21 <alise_> C in Japanese or something like that? :P
03:08:25 <pikhq> "Umi" (海) is Japanese for "ocean" or "sea".
03:08:44 <ais523> strangely, that's one of the few words of Japanese I actually know
03:08:56 <pikhq> Bilingualism makes coming up with names a *little* bit easier.
03:08:57 <ais523> although, only the romanisation, not the actual Japanese character
03:09:12 <alise_> Actually, I did know that a bit; I should have thought of it.
03:09:59 <alise_> stddef.h, then string.h.
03:10:09 <alise_> And I do wonder why I never seem to use revision control until a project is mature.
03:10:46 <oerjan> wait you ever get that far?
03:11:27 -!- MizardX- has joined.
03:11:32 <pikhq> oerjan: Kinda hard to finish projects with 2/7ths of the week.
03:11:40 <alise_> pikhq: I didn't do it beforehand either.
03:11:53 <pikhq> alise_: Yeah, but that's just you being you.
03:11:58 <alise_> I code like the wind until I hit something even vaguely challenging or tedious, then close the window and forget about it. :P
03:12:03 <oerjan> good to see my prejudices aren't _always_ wrong
03:12:22 * alise_ modifies the definition of offsetof from Wikipedia. Dammit, it's uncopyrightable.
03:13:59 <alise_> ((size_t) ( (char *)&((st *)(0))->m - (char *)0 ))
03:14:17 <alise_> ((size_t) (&(st *)0)->m))
03:14:35 <alise_> although maybe that doesn't handle (T*)0 != (T*)((int)0)
03:14:41 <alise_> freebsd uses it, I think, so nyah
03:15:26 <alise_> Is there any reason to define size_t as anything other than "unsigned long"?
03:15:29 <alise_> Like, on any platform?
03:15:30 -!- MizardX has quit (Ping timeout: 260 seconds).
03:15:56 -!- MizardX- has changed nick to MizardX.
03:16:27 <alise_> wchar_t's signedness appears to not be specified.
03:17:05 <alise_> The type ptrdiff_t is a type that can hold the result of subtracting two pointers. The underlying type of ptrdiff_t varies from implementation to implementation.
03:17:18 <alise_> Is it portable to have this as just "long"? Not strictly, but...
03:17:24 <alise_> Like, is there any crazy platform where it might not be long?
03:17:35 <alise_> On 16-bit ones with 32-bit longs, it's okay, just a bit excessive
03:17:50 <pikhq> Windows x86_64, specifically.
03:18:22 <pikhq> Which has 32-bit longs...
03:18:30 <pikhq> Why? Because fuck you.
03:18:32 <alise_> So, I'll make it a platform configuration thing, then.
03:18:56 <alise_> ...Which actually just makes me wonder how to do that. Have the build system copy stuff to the source tree under platform/? Ew.
03:19:54 * oerjan expects the closing window and forgetting about to happen any time now
03:20:23 <alise_> no, I'm just waiting for pikhq to hand me the answer on a silver platter :D
03:22:24 <pikhq> alise_: sed sed sed sed LOVELY SED! WONDERFUL SED!
03:22:32 <alise_> pikhq: You ... you are joking.
03:22:39 <alise_> They ... sed the source tree? But they'd have to copy it... and build that ...
03:23:08 <alise_> http://static.tvtropes.org/pmwiki/pub/images/lex5sz.jpg
03:23:11 <oerjan> !sh echo sed sed sed sed | sed 's/sed/sed sed sed sed/'
03:23:12 <EgoBot> sed sed sed sed sed sed sed
03:23:20 <alise_> In fact, I'd say using sed is as many as four tens.
03:23:20 <oerjan> !sh echo sed sed sed sed | sed 's/sed/sed sed sed sed/g'
03:23:21 <EgoBot> sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed
03:23:32 <alise_> pikhq: No but seriously... is that how they do it?
03:23:40 <alise_> Why not just have a libc/platform directory, at least?!
03:24:04 <pikhq> alise_: Or have a libc/platform directory with copies of files.
03:24:12 <pikhq> Or have a header generator script.
03:24:14 <alise_> pikhq: Copies? But why?!
03:24:19 <alise_> pikhq: I was just going to have the header files do
03:24:26 <alise_> #include <__umi_platform/stddef.h>
03:25:35 <oerjan> !sh echo sed sed sed sed | sed 's/sed/sed sed/g' | sed 's/sed/sed sed sed sed sed/g'
03:25:36 <EgoBot> sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed sed
03:26:16 <alise_> pikhq: ... Maybe I could run cpp on the headers so that they can include the platform files and yet still generate proper header f... insanity looming.
03:26:25 <alise_> Using cpp to generate header files. :P
03:26:32 <pikhq> That's as many as four tens! And that's terrible.
03:26:49 <pikhq> alise_: You're using CPP to generate CPP files.
03:28:02 <alise_> We all know that what Lex Luthor really wants in life is cakes. Forty of them.
03:28:25 <oerjan> !sh echo sed sed sed sed | sed 's/sed/sed sed/g' | sed 's/sed/sed sed sed sed sed/g' | sed 's/sed/cake/g'
03:28:25 <EgoBot> cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake cake
03:28:44 <CakeProphet> !haskell import System.Random; main = do {len <- pick [2..10]; liftM putStrLn $ replicateM len $ pick ['A'..'Z']} where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
03:29:16 * oerjan thinks there's an unmatched {
03:30:32 <CakeProphet> !haskell let pick a = System.Random.randomRIO (0, length a - 1) >>= return . (a !!) in pick [1..10]
03:30:54 <oerjan> i don't think you want liftM putStrLn
03:30:57 <alise_> pikhq: You know what? Fuck Windows.
03:31:01 <alise_> Is there anything /else/ that does that?
03:31:11 <pikhq> Just fucking Windows.
03:31:14 <CakeProphet> oerjan: pick is returning IO [Char] right?
03:31:49 <oerjan> yes. but you don't use liftM to apply a monadic function
03:32:40 <CakeProphet> I just want to avoid writing another do-bind. :P
03:33:07 <oerjan> s/liftM putStrLn $ replicateM len/mapM_ putStrLn . replicate len/
03:33:09 <alise_> pikhq: Well, you know what?
03:33:14 <alise_> Fuck the fucking shit out of Windows.
03:33:21 <alise_> Not playing that damn game.
03:33:41 <Sgeo_> Why are we talking about Windows?
03:33:42 <pikhq> Yeah, Windows can go to hell.
03:33:59 <CakeProphet> !haskell import System.Random; main = do {len <- pick [2..10]; mapM_ putStrLn $ replicate len $ pick ['A'..'Z']} where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
03:34:23 <oerjan> CakeProphet: i thought wrong
03:35:03 <CakeProphet> !haskell import System.Random; main = do {len <- pick [2..10]; mapM_ putStrLn $ replicateM len $ pick ['A'..'Z']} where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
03:35:30 <oerjan> !haskell import System.Random; main = do {len <- pick [2..10]; print =<< (replicateM len $ pick ['A'..'Z']}) where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
03:35:35 <alise_> Now to write string.h.
03:35:48 <pikhq> String functions: glee.
03:35:48 <oerjan> !haskell import System.Random; main = do {len <- pick [2..10]; print =<< (replicateM len $ pick ['A'..'Z'])} where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
03:35:53 <alise_> pikhq: Theory: If I don't do something retarded like glibc does, and just code obviously, it will be fast.
03:36:07 <oerjan> !haskell import System.Random; import Control.Monad; main = do {len <- pick [2..10]; print =<< (replicateM len $ pick ['A'..'Z'])} where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
03:36:19 * alise_ starts reading POSIX, not Wikipedia.
03:36:37 <pikhq> alise_: Answer: maybe not as fast as glibc in some cases (some of its complication is for *actual* performance benefits), but undoubtedly fast enough.
03:36:46 <CakeProphet> !haskell import System.Random; main = do {len <- pick [2..10]; putStrLn =<< replicateM len $ pick ['A'..'Z']} where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
03:36:51 <oerjan> oh it's just one string
03:36:51 <alise_> [[The implementation shall support one or more programming environments in which the widths of ptrdiff_t, size_t, and wchar_t are no greater than the width of type long. The names of these programming environments can be obtained using the confstr() function or the getconf utility.]]
03:36:56 <pikhq> After all, this is how the BSDs do their libc.
03:37:07 <alise_> You're just blabbing about nothing now.
03:37:30 <oerjan> you need an import, and =<< has higher precedence than $
03:37:31 <pikhq> In fact, you may wish to just copy-paste swaths from BSD libc.
03:37:54 <alise_> Does... anyone use strxfrm?
03:38:10 <oerjan> nope. hm maybe it should have been...
03:38:13 <alise_> pikhq: I'm an MIT-licensing perfectionist NIHer. :-)
03:38:18 <alise_> For the C locale, strxfrm() is equivalent to:
03:38:24 <alise_> I have this horrible feeling I really /should/ support locales.
03:38:36 <pikhq> alise_: It *is* nice to support locales.
03:38:44 <pikhq> Though it's also a pain in the ass.
03:38:55 <alise_> Eh, good enough for Jesus, good enough for me.
03:38:58 <pikhq> I suggest not doing that initially.
03:39:06 <oerjan> !haskell main = (0$0=<<)
03:39:11 <CakeProphet> !haskell import System.Random; import Control.Monad; main = do {len <- pick [2..10]; putStrLn =<< (replicateM len $ pick ['A'..'Z'])} where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
03:39:18 <pikhq> I'd imagine it's easier to add to a functioning C library.
03:39:22 <alise_> void *memccpy(void *restrict, const void *restrict, int, size_t);
03:39:28 <alise_> Restrict? I even had to look up what that is.
03:39:30 <CakeProphet> hmmm... maybe I should weight it for smaller acronyms.
03:39:56 <pikhq> alise_: A restrict pointer should not alias.
03:40:02 <CakeProphet> weighting for more common English starting letters would also make better acronyms.
03:40:20 <CakeProphet> oerjan: would that run as a userinterp as it stands?
03:40:36 <pikhq> Someone who... Wants to copy all up until a terminating byte?
03:40:52 <pikhq> I can *imagine* someone using it, but I've never seen it used.
03:41:09 <alise_> mozilla/intl/locale/src/unix/nsCollationUnix.cpp
03:41:09 <alise_> / call strxfrm to calculate a key length
03:41:09 <alise_> int len = strxfrm(NULL, str, 0) + 1;
03:41:10 <alise_> archive.mozilla.org/pub/mozilla/releases/mozilla0.9.2/src/mozilla-source-0.9.2.tar.bz2
03:41:13 <alise_> Mozilla 0.9.2 uses it!
03:41:25 <pikhq> alise_: Hell, just write it. It's a single line of C and at least not *evil* to have.
03:41:45 <alise_> pikhq: but I feel nasty typing restrict :P
03:41:52 <pikhq> I'd suggest making the more unsafe string functions exit(0). :P
03:41:55 <alise_> pikhq: Will stuff break if I omit the copious const declarations?
03:42:32 <pikhq> alise_: No, but the const declarations let the compiler produce better code.
03:42:42 <alise_> pikhq: I know, but in the headers?
03:43:07 <pikhq> alise_: Prevents people from writing incorrect code.
03:43:19 <alise_> Oh, memccpy is actually optional.
03:43:19 <oerjan> CakeProphet: i would imagine so, no input though
03:43:21 <pikhq> It won't make a difference for *valid* code.
03:43:44 <pikhq> Also, that wasn't around for C89.
03:43:49 <alise_> And the _r functions are thread-safe ones.
03:43:54 <alise_> Who uses threads, right?
03:43:59 <alise_> I'm sure as fuck not implementing pthreads right now.
03:44:23 <pikhq> Alias to the non-reentrant ones unless you really feel like implementing pthreads.
03:44:40 <pikhq> (*really* implementing, not borrowing a userspace implementation)
03:44:46 <alise_> pikhq: They have different types.
03:45:13 <alise_> pikhq: Is it legal to copy the function declarations from POSIX?
03:45:19 <alise_> They seem almost copyrightable.
03:46:34 <pikhq> alise_: The function declarations? All libcs do.
03:46:44 <oerjan> CakeProphet: also pick itself is a good place for using liftM
03:46:48 <pikhq> Except when they add their own extensions for varous reasons.
03:47:14 <pikhq> If every other person with a hosted C implementation does, I think you're safe. :P
03:47:20 <CakeProphet> !addinterp simpleacro haskell import System.Random; import Control.Monad; main = do {len <- pick [2..10]; putStrLn =<< (replicateM len $ pick ['A'..'Z'])} where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
03:47:21 <EgoBot> Interpreter simpleacro installed.
03:47:32 <oerjan> !haskell import System.Random; import Control.Monad; main = do {len <- pick [2..10]; putStrLn =<< (replicateM len $ pick ['A'..'Z'])} where pick a = liftM (a!!) $ randomRIO (0, length a - 1)
03:48:08 * alise_ notes that strcpy(dst, src) = memcpy(dst, src, 0, ... oh, you can't actually specify length here easily)
03:48:59 <olsner> incidentally, memcpy+strlen with a good memcpy and a good strlen is better than most attempts at writing a special strcpy function
03:49:25 <CakeProphet> if you need shittily written libc functions
03:49:32 <CakeProphet> I have a MUD codebase that does such things.
03:49:36 <alise_> void *memcpy(void *restrict dst, const void *restrict src, size_t n)
03:49:38 <pikhq> olsner: ... Two passes are better than one?
03:49:43 <pikhq> What the hell is wrong with you?
03:50:02 <alise_> pikhq: i think he means the crazy long-reading strlen trick and crazy optimised memcpy
03:50:03 <pikhq> CakeProphet: Not shittily written. *Readably* written. :)
03:50:07 <alise_> vs trying to write strcpy yourself
03:50:38 <pikhq> alise_: I'm pretty sure you could beat the combo by making a strcpy that does long-reading and that crazy optimisation. :)
03:50:46 <alise_> char *strcpy(char *restrict dst, const char *restrict src)
03:50:47 <pikhq> Though, not by much.
03:51:25 <CakeProphet> alright... this is the official acronym for this project:
03:51:51 <alise_> Kiwis Yell Willingly: "Cats Ejaculate!"
03:52:04 <alise_> tl;dr New Zealanders commit beastiality on a regular basis
03:52:36 <oerjan> at least they won't get rabies
03:52:55 <CakeProphet> I called it "simpleacro" so that a much better "acro" command can be made... with, you know, letter and length weighting and stuff.
03:53:15 <alise_> pikhq: You don't want me to implement strcat, do you. :P
03:53:49 <pikhq> alise_: strcat *can* be used safely.
03:54:08 <alise_> char *strcat(char *restrict dst, const char *restrict src)
03:54:08 <oerjan> no real life, codes acronym toys joyfully
03:54:11 <alise_> Why is this so damn easy.
03:54:23 <pikhq> gets returns NULL.
03:54:24 <alise_> pikhq: I should probably mark such simple loops inline, shouldn't I?
03:54:38 <pikhq> alise_: Wouldn't matter.
03:54:41 <alise_> seems to be obviously good
03:54:50 <alise_> Bah, this is C; we should rely on no compiler!
03:55:07 <alise_> I don't think memcpy and memset should be inlined, as they take up a variable slot.
03:55:08 <pikhq> You need to stick it in the header as static inline *in addition* to being in the object file if it's going to make a difference.
03:55:10 <alise_> And registers are scarce on x86.
03:55:20 <pikhq> Otherwise, let the compiler be smart.
03:55:35 <pikhq> alise_: Add inlines later.
03:55:44 <pikhq> Right now, make a basic, good libc.
03:56:09 * alise_ makes a policy: destination strings/memory locations are "dst", sources are "src", strings just operated on (e.g. strlen) are "s".
03:56:17 <CakeProphet> I think we programmers expect far too much from our compilers
03:56:29 <pikhq> char *gets(char *s){return NULL;}
03:56:34 <pikhq> There, I wrote a function for you.
03:56:53 <pikhq> gets returns NULL on error.
03:56:54 <alise_> pikhq: I... think that gets should be supported.
03:56:59 <pikhq> And obviously all uses are errors.
03:57:07 <pikhq> gets is a 100% guaranteed buffer overflow.
03:57:20 <alise_> Consider IRC, with its maximum line limit.
03:57:49 <pikhq> alise_: Only for complying clients/servers.
03:57:58 <pikhq> And non-compliant one would rape you.
03:57:58 <oerjan> koala x-rays destroy every xenophobic wallaby
03:58:07 <pikhq> gets is a buffer overflow. Full stop.
03:58:37 <oerjan> (bloodbath in australia)
03:59:19 <oerjan> god, it's that horrible gregor's language reimplementation system
03:59:47 <pikhq> strcpy can stay: it's possible to use safely.
03:59:57 <alise_> char *strcpy(char *restrict dst, const char *restrict src)
03:59:58 <alise_> while (*dst++ = *src++);
04:00:00 <pikhq> But gets must be PURGED FROM THE FACE OF THE PLANET.
04:00:01 <alise_> I should really be less naive.
04:00:33 <alise_> pikhq: How about: if you use gets, and compile your program normally, you get a flaming red yelling poker-in-the-ass error. If you define -DI_DEMAND_GETS, it works, but warns you.
04:00:48 <pikhq> alise_: Okay. I can deal with that.
04:01:04 <CakeProphet> char *breakstr(char * s) { for(int i=0; s[0] != '\0'; s++){} s[i] = '\n'; return s;}
04:02:13 <alise_> Guess the function :-P
04:03:00 <alise_> Hmm... strcmp arguments are s and t or s1 and s2, I wonder.
04:04:03 <pikhq> CakeProphet: Plenty.
04:04:46 <alise_> int strcmp(const char *s1, const char *s2)
04:04:46 <alise_> while (*s1++ != *s2++)
04:04:46 <alise_> if (!*s1 || !*s2) break;
04:04:46 <alise_> return (int)((unsigned char)*s1 - (unsigned char)*s2);
04:04:48 <alise_> Bit gnarly, but there you go.
04:05:40 <pikhq> http://en.wiktionary.org/wiki/Special:PrefixIndex/K
04:05:47 <oerjan> alise_: um shouldn't it continue while they're _equal_?
04:06:02 <pikhq> Argh, that includes foreign languages.
04:06:15 <pikhq> All free for loaning though.
04:06:37 <oerjan> why xenon suffocates albanians
04:06:56 <pikhq> CakeProphet: Kick.
04:08:43 <oerjan> pikhq is quite ... damn
04:09:05 * pikhq *does* enjoy some kraut, particularly when sauer.
04:09:07 <Gregor> I wish I was ingesting quality delicious kraut :(
04:09:30 <alise_> void *memccpy(void *restrict dst, const void *restrict src, int c, size_t n)
04:09:30 <alise_> while (srcp < src+n) {
04:09:31 <alise_> if ((unsigned char)*dst == (unsigned char)c) return dst;
04:09:53 <coppro> Good Orange Yemen Go In Edifices
04:10:20 <Warrigal> Give Others Yours, Get Internet Everywhere
04:10:40 * alise_ resolves not to use the "T a, b" style declarations.
04:10:45 <pikhq> Goku Owns Your Gohan In Eternity
04:10:53 <CakeProphet> This naively constructed acronym generator will provide hours of fun.
04:11:33 <fungot> CakeProphet: note that length list-tail each iterate over the array, not an atheist. you cannot _read_ a procedure... map is... looking that up
04:11:44 <oerjan> quit this quiz, avoid zany zombies
04:11:55 <pikhq> Quack The Quack All Ze Zimmerman
04:11:56 <alise_> http://pastie.org/1020504.txt?key=51oe62xhyjjvfyp2p73rzq
04:11:58 <Warrigal> Note to self: this function does not iterate over an atheist.
04:12:04 <alise_> Could it get any more ridiculously simple?!
04:12:43 <pikhq> alise_: That's a beautiful string.c.
04:13:41 <pikhq> alise_: I look forward to your stdio.h
04:13:54 <alise_> pikhq: A scary prospect.
04:14:02 <pikhq> I'm going to guess it involves "screw buffering".
04:14:06 <alise_> Thankfully the syscalls will go in a Top Sekrit Platform Specific Thing.
04:14:10 <alise_> pikhq: Well ... perhaps not.
04:14:15 <alise_> Ideally this thing would be usable on a desktop system.
04:14:34 <pikhq> Anyways, the syscalls should be all inside of a syscall.c or something...
04:14:36 <olsner> hmmm... *dstp and dstp++, where dstp is a void-pointer?
04:14:42 <pikhq> Making this actually reasonable to port. :P
04:15:17 <oerjan> get no infernal pixies here
04:15:34 <pikhq> alise_: BTW, be aware that sticking your functions in a single file while using static linking will make all the functions be pulled in.
04:16:13 <alise_> pikhq: Yeah, I might use a script to put them all in separate files, if I'm processing source anyway.
04:17:06 <alise_> pikhq: I mean, having string/funcname.c would suck.
04:19:36 <pikhq> alise_: Wait, you're dereferencing a void*?
04:20:23 <Sgeo_> The only thing less intuitive than my calculator is YASBB
04:20:36 <alise_> void *memset(void *dst, int c, size_t n)
04:20:41 <alise_> Okay, that is correct.
04:20:43 <alise_> Oh, right, just make dstp an int *.
04:20:59 <olsner> ehm, no, that's not right either :)
04:21:11 <alise_> I should really embed myself.
04:21:15 <pikhq> Yes, that is *valid C*. But not at all correct.
04:21:24 <oerjan> most precious xanadu, be everything you've been
04:23:09 <oerjan> yet another stupid beer bottle
04:23:17 * alise_ attempts to engage brain
04:23:57 <alise_> void *memset(void *dst, int c, size_t n)
04:24:01 -!- Oranjer has left (?).
04:24:02 <alise_> Now I am the Lizard Queen!
04:26:01 <alise_> *Now I am the LIZARD QUEEN.
04:29:47 <alise_> http://pastie.org/1020513.txt?key=zbla0g3v0dib00inavatqq
04:32:33 <alise_> yaaaaaaaaaaaaerktoijsdffffdddddddddddd zzzzzzzzzzzzzzzzzzzzzzz
04:32:44 <alise_> pikhq: should I do the fun long thing now
04:33:18 <oerjan> we suggest a fun long sleep
04:34:07 <alise_> this is why i need melatonin, maybe i'll order tomorrow
04:34:43 <alise_> If NDEBUG is defined as a macro name before the inclusion of this header, the assert() macro shall be defined simply as:
04:34:43 <alise_> #define assert(ignore)((void) 0)
04:34:46 <alise_> it has to be defined precisely like that
04:34:49 <alise_> including the lack of space :P
04:35:21 * Sgeo_ will be attending a party in SL on Monday :D
04:35:26 <pikhq> It's possible to tell what the actual definition is.
04:35:46 <pikhq> Figure out a way to get it quoted, and voila.
04:36:23 <Sgeo_> Is there a reliable way to be certain thar arbitrary code is quoted?
04:36:52 * Sgeo_ decides that it depends on the language
04:38:58 <pikhq> "Quoted" in terms of C means getting it to go through the quoting operator of the preprocessor, which sticks it inside of quote marks.
04:39:27 <pikhq> Getting you a string literal.
04:39:37 <alise_> ((c) || (fprintf("Assertion (%s) failed in %s, at %s:%d.\n", #c, \
04:39:37 <alise_> __func__, __FILE__, __LINE__), abort()), \
04:42:05 <alise_> The <monetary.h> header shall define the following types:
04:42:05 <alise_> As described in <stddef.h>.
04:42:05 <alise_> As described in <sys/types.h>.
04:42:07 <alise_> The following shall be declared as a function and may also be defined as a macro. A function prototype shall be provided.
04:42:10 <alise_> ssize_t strfmon(char *restrict, size_t, const char *restrict, ...);
04:42:47 <Sgeo_> Wait, why is monetary.h defining somethin that's defined elsewhere?
04:43:11 <olsner> it provides a function prototype using those types
04:43:32 <olsner> so it must define them, and must define them exactly the same way as everything else (obviously)
04:45:15 <Sgeo_> It can't just include <sys/types.h> and <stddef.h> because that would be essentially including those whether clients want it or not?
04:45:43 <olsner> I think you usually have internal headers in the libc that can define exactly what you need from the other headers
04:46:15 <olsner> e.g. #define NEED_SIZE_T and #include "bits/stddef.h" or something like that
04:46:38 <Sgeo_> Is there an #undefine?
04:46:46 <Sgeo_> Ok, that makes sense then
04:47:20 <Sgeo_> So wait, why does monetary.h define those types again?
04:48:12 <olsner> because it needs to use them, and there's no other way to use them than to define them first
04:48:43 <Sgeo_> What about including those partial header things with NEED_SIZE_T?
04:49:04 <olsner> that's an example of what monetary.h could be doing internally
04:49:15 <olsner> in order to get those typedefs defined
04:50:02 <olsner> not yet, but sleep is imminent
04:50:50 <Sgeo_> I think this guy is incapable of reading documentation
04:51:49 <Sgeo_> http://www.andras.net/yasbb.html#mozTocId911022 reading this, are you able to determine how to rotate the to-be-built stuff around a coordinate?
04:55:57 <EgoBot> Interpreter twat deleted.
04:58:08 <Sgeo_> !echo EgoBot is a twat
04:58:44 <Sgeo_> alise_, time to go hallucinate for a while
04:58:50 <Sgeo_> Even if you don't remember the hallucinations
05:00:50 -!- alise_ has quit (Quit: Leaving).
05:01:10 -!- Rafajafar has quit (Quit: ChatZilla 0.9.86 [Firefox 3.6/20100115144158]).
05:02:07 -!- aschueler has quit (Quit: leaving).
05:25:46 <Gregor> Trying to compile GNU coreutils with JSMIPS >: )
05:26:00 <Gregor> The lib part compiles now, which is a plus (had to stub out some socket stuff though)
05:29:31 <Sgeo_> If you rotate a graph around 500, 500 by 0 degrees, how much do things move?
05:30:03 <coppro> Sgeo_: it is uncharacteristic of you to ask such a dumb question
05:30:26 <Sgeo_> Anyone want to tell YASBB that it shouldn't be moving things at all?
05:30:44 <Sgeo_> Rotate old prop around: 0, 0, angle 0 doesn't move a thing
05:30:54 <Sgeo_> Put numbers in, and leave angle at 0, and it moves things
05:34:18 <Sgeo_> I put in 12345 for the north coordinate to rotate around, leave angle at 0, and it translates things 12345 southward
05:34:19 <oerjan> well to rotate around (x,y) you can do it in three steps: (1) subtract (x,y) from the coordinates (2) rotate around (0,0) instead (3) add (x,y) back
05:34:57 <oerjan> if that doesn't give you the same result, something's probably wrong
05:35:32 <Sgeo_> I think it's safe to say something's already wrong here
05:35:42 <Sgeo_> And that multistep process is somewhat inconvenient
05:36:00 <oerjan> well it's purely functional :D
05:36:37 <oerjan> hm there's another way
05:36:56 <Sgeo_> How about helping me figure out WTF is wrong with this software?
05:37:06 <Sgeo_> http://www.andras.net/yasbb.html#mozTocId911022 is there something I'm not seeing?
05:42:25 <oerjan> unless you are filling in the numbers at the left, which are not about rotation at all i think
05:43:13 <oerjan> and might very well translate things
05:47:49 <Sgeo_> Those numbers are 0
05:50:51 <Sgeo_> I may very well end up writing my own rotation stuff
05:53:03 <oerjan> (z-c)*e^(ia) + c = z*e^(ia) + c(1 - e^(ia))
05:53:54 <Sgeo_> I'm sure I'll be able to figure out the math on my own
05:54:11 <oerjan> meaning basically, if you first calculate where (0,0) _should_ go, then you can afterward rotate around (0,0) and just add that
05:54:42 <oerjan> meaning you only need 2 steps
05:55:44 <Gregor> pikhq: Some logs from FreeBSD suggest that the advertising clause can be removed, it's all been relicensed.
05:56:42 <pikhq> Gregor: Oh, those are copied from FreeBSD?
05:56:55 <pikhq> Yeah, the BSDs made a point of getting them relicensed.
05:57:06 <Gregor> Yeah, they're copied from ancient FreeBSD.
05:57:11 <Gregor> Apparently pre-2004 :P
05:57:12 <pikhq> Oh, right. "Regents of the University of California".
05:57:21 <pikhq> Yeah, that's been relicensed by the Regents.
05:57:35 <Gregor> I should petition RedHat to fix the license in newlib.
05:57:40 <Gregor> 'cuz that was a depressing moment X-D
06:01:32 <Gregor> In that case, newlib is still awesome :P
06:13:02 <Gregor> Actually, newlib IS pretty awesome. It's wildly incomplete, but it's a sufficient platform to build a real libc on, while taking care of all the stupid boilerplate for you.
06:16:10 <Sgeo_> I suppose maybe tomorrow #esoteric can figure out the semantics of YASBB rotation
06:27:41 -!- Gregor-L_ has joined.
06:27:58 <Gregor-L_> I've built newlib like fifty times in the last hour :P
06:30:18 -!- Gregor has quit (Ping timeout: 252 seconds).
06:32:30 -!- Gregor-L_ has quit (Ping timeout: 252 seconds).
06:37:01 -!- Gregor-L_ has joined.
06:52:18 -!- GreaseMonkey has joined.
06:53:27 <Gregor-L_> Which of course means that it works.
06:54:39 <Gregor-L_> Except for the docs, which don't build and are annoying >_<
07:11:13 -!- Gregor-L_ has changed nick to Gregor.
07:11:20 <Gregor> That's BASICALLY everything.
07:20:21 <Gregor> Once I've got GCC running on a browser, you'll all bow down to my amazitude.
07:22:41 <Gregor> ld:built in linker script:2: syntax error // what a very confusing error message
07:23:24 <ais523> ld uses .gld scripts behind the scenes, but the defaults work for almost everything
07:23:34 <ais523> I have no idea how one of the builtins ended up with a syntax error, though
07:24:15 <Gregor> Yeah, that's the confusing part :P
07:24:18 <Gregor> Not the use of scripts.
07:24:36 <Gregor> But the fact that it built one in that doesn't work. Either that or JSMIPS has a bug so subtle that it only affects this program.
07:46:41 <Gregor> Hey, I fixed the thing that made it spit out "Urgent Socket Condition" all the time
07:48:02 -!- CakeProphet has quit (Ping timeout: 245 seconds).
07:57:43 -!- coppro has quit (Remote host closed the connection).
07:59:06 -!- oerjan has quit (Quit: Good night).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:07:20 -!- Mathnerd314 has quit (Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.2.4/20100611143157]).
08:19:45 -!- cheater99 has quit (Ping timeout: 252 seconds).
08:23:38 -!- Phantom_Hoover has joined.
08:34:05 -!- cheater99 has joined.
08:52:36 -!- KingOfKarlsruhe has joined.
09:04:32 -!- ais523 has quit (Remote host closed the connection).
09:12:44 -!- tombom has joined.
09:17:42 -!- calamari has quit (Quit: Leaving).
09:22:14 <GreaseMonkey> Phantom_Hoover: not sure but you can still buy them AFAIK
09:22:55 <Phantom_Hoover> Why is writing 6502 assembly held in such high regard?
09:25:57 <GreaseMonkey> i guess it would be in the demoscene, i'm not sure about elsewhere though
09:36:10 -!- KingOfKarlsruhe has quit (Remote host closed the connection).
09:49:25 -!- GreaseMonkey has quit (Quit: I'm using NO SCRIPT WHATSOEVER - Download it at file:///dev/null).
10:46:24 <fizzie> I seem to vaguely remember something modern using a 6502-derived design, but I have no recollection what it might be.
10:48:31 <AnMaster> argh why does this compile. The function it calls doesn't seem to be defined anywhere.
10:48:41 <fizzie> Wikipedia just says "it is still made for embedded systems", but doesn't provide examples.
10:49:10 <AnMaster> and last I checked C was case sensitive...
10:49:43 <AnMaster> Beep(oto2freq[oto], len*200); appears in a C source file, it is not disabled with #if or such as far as I can tell
10:49:55 <AnMaster> however, nowhere does the function or macro Beep appear
10:50:26 <AnMaster> there is beep(void) but that is 1) wrong case 2) wrong parameter count
10:51:27 <fizzie> There probably are case-insensitive linkers somewhere in the world, but that sounds unlikely.
10:52:09 <AnMaster> also it isn't in the headers, I checked them, since this is kernel code it doesn't use any libc hidden away anywhere
10:53:39 <fizzie> You should probably be getting an implicit-declaration warning out of it if it isn't actually declared in any header; the linker script can only define the symbol, after all.
10:54:09 <AnMaster> fizzie, strange that gcc doesn't include that in -Wall -Wextra then
10:54:29 <AnMaster> (no newer gcc support this target)
10:54:33 <fizzie> Getting back to the 6502 thread, I seem to recall that TI made a beefed-up Z80 model quasi-recently.
10:56:22 <fizzie> "The eZ80 (like the Z380) is binary compatible with the Z80 and Z180, but almost four times as fast as the original Z80 chip at the same clock frequency. Available at up to 50 MHz[1] (2004), the performance is comparable to a Z80 clocked at 200 MHz if fast memory is used --"
10:56:52 <fizzie> It also extends some registers to 24 bits so that it can directly access up to 16 MB.
10:57:04 <AnMaster> fizzie, not binary compatible if the binary depends on timing
10:58:17 <AnMaster> fizzie, hm wait, 16 bit addresses would allow 64 KiB right?
10:58:20 <fizzie> Good enough for most purposes, anyhow.
10:58:33 <AnMaster> fizzie, so how did the original x86 allow you to have 640 KiB?
10:58:47 <AnMaster> I mean, it doesn't make sense for any power of two?
10:58:59 <AnMaster> well, not any common one I can think of
10:59:21 <fizzie> It allows up to 1 MB, the higher parts are just used by ROM and such.
11:00:29 <fizzie> It has 20-bit addresses, with the segmentation nonsense.
11:01:01 <AnMaster> fizzie, so 12 bits for segment stuff?
11:01:46 <fizzie> You need two for a full address.
11:01:58 <AnMaster> right, I forgot something important here: and that is that x86 is a mess
11:02:30 <fizzie> X:Y maps to X<<4 + Y. I'm too slow with this N900 kbd.
11:03:06 <Phantom_Hoover> I seem to remember reading that it was because they could only afford 20 address pins on the 8086.
11:03:14 <fizzie> Haven't exactly gotten out of bed yet.
11:03:43 <fizzie> There also that whole A20 line enablation mess.
11:04:19 <Phantom_Hoover> Do you still need to use the keyboard controller to do that, by the way?
11:04:56 <fizzie> You need to pretend to be using it, but I think motherboards have dedicated circuitry for it.
11:05:10 <fizzie> The procedure to enable it is still the same, I believe.
11:06:41 <AnMaster> actually I would want a completely new 64 bit architecture. With more registers than AMD64. And less of the compat cruft
11:06:50 <fizzie> (For "compatibility" with apps that expect memory access past 1MB wrap around to the beginning, the 21st address line is hardwired to be 0; originally they used an unused pin of the keyboard controller to make it possible to enable it.)
11:07:29 <AnMaster> what about 64 x 64-bit GPR? + 32 x 256 bit SIMD registers?
11:07:53 <AnMaster> fizzie, IA64 is certainly nice on paper
11:08:19 <AnMaster> fizzie, but as someone (Knuth?) said: it turned out it was basically impossible to write good compilers for it
11:10:23 <AnMaster> Phantom_Hoover, do you know about out of order execution?
11:10:43 <AnMaster> Phantom_Hoover, what about superscalar cpus?
11:11:36 <AnMaster> Phantom_Hoover, if you are seeing "you need to know other stuff before I can explain why" coming up next then you are right
11:12:04 <Phantom_Hoover> I can guess what the first thing is, but I'm lost on the second.
11:12:26 -!- yiyus has quit (Ping timeout: 240 seconds).
11:12:55 <AnMaster> Phantom_Hoover, basically because IA64 is VLIW it leaves all this work to the compiler instead of doing it in hardware. In theory the compiler should be able to make better optimisations since it knows more and is less limited (doesn't have to be done quickly and so on). In practise it turned out to be too tricky.
11:13:18 <AnMaster> Phantom_Hoover, http://en.wikipedia.org/wiki/Out-of-order_execution http://en.wikipedia.org/wiki/Superscalar http://en.wikipedia.org/wiki/Very_Long_Instruction_Word
11:16:12 <AnMaster> Phantom_Hoover, Reading those is a better way to understand the issue than me trying to explain it
11:16:26 -!- yiyus has joined.
11:20:53 <fizzie> VLIW hasn't really caught on, though there's this pretty successful not-so-V LIW RISC/DSP hybrid called FirePath (made by the folks that used to be Acorn) that e.g. Broadcom uses in their telco side hardware; see http://everything2.com/title/FirePath
11:21:48 <fizzie> It's sadly quite unknown; but the (lead?) designer was pretty enthusiastic about it when she spoke at an event I happened to be at.
11:31:02 <fizzie> And then there are those more strictly DSP things.
11:32:07 <AnMaster> fizzie, didn't Acorn turn into ARM?
11:32:12 <AnMaster> or do I misremember completely
11:32:41 <fizzie> Yes, but most of what used to be Acorn got split out again.
11:34:59 <fizzie> The businessy parts are probably more confusing than the techy parts. :p
11:35:36 <AnMaster> fizzie, well isn't that some sort of fundamental rule of the world?
11:36:20 <fizzie> I think one of the three platforms that our DSP programming course's project-work could be done (because they had the hardware available) wad AD's SHARC, which has 4 instructions wide opcodes.
11:38:05 <fizzie> Analog Devices, or something like that.
11:38:08 <AnMaster> fizzie, anyway DSP is pretty niche really
11:38:20 <AnMaster> fizzie, I was wondering about wad there
11:38:55 <fizzie> There's a lot of market for DSP chips, they just aren't so well-known.
11:39:47 <fizzie> (We did our project with the TI TMS320C54...16? I'm not sure of the two last numbers there.)
11:42:28 <fizzie> There's a bit of explicit parallelism in that thing too; there are some opcodes with mnemonics of the form "A x y | B z" which do A to x, y and B to z simultaneously. But a very limited set of those.
11:44:35 <fizzie> Pshhff, I don't recall details. Delay slots in branches, at least.
11:45:40 <fizzie> ST B, *TMP+0% ; delay line sample <- (B_old >> 16)
11:45:40 <fizzie> || MPY *PPTR+, B ; B_new <- T * (1-g*g)
11:45:40 <fizzie> ; TMP <- circ(TMP+AR0)
11:45:40 <fizzie> ; PPTR <- address of -g
11:45:46 <fizzie> That does a store and multiply in parallel.
11:46:31 <fizzie> (TMP and PPTR are macro parameters; they're actually register names when used.)
11:48:34 <fizzie> It's a circular-buffer addressing mode.
11:49:17 <fizzie> The "+0%" suffix means "add the value of AR0, but do it modulo-style, using the starting address and length defined by the circular-buffer control registers".
11:50:06 <fizzie> In this case AR0 had the value 1; there's no "+%" addressing mode. (Just plain + would mean "increment by one".)
11:53:33 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds).
11:55:50 <fizzie> They probably ran out of bits to encode addressing modes in, or silicon to implement them in. :p
11:56:17 <AnMaster> fizzie, what would +% mean though?
11:56:56 <fizzie> Increment by one, but do the same circular-buffer thing.
11:57:03 <fizzie> Now I have to waste a register to hold the number 1 in.
12:01:23 <fizzie> It's mostly a 16-bit processor (memory access is done in 16-bit words), but it has two 40-bit wide accumulators (A and B). Rest of the registers (T + AR0 .. AR7) are 16-bit.
12:13:20 <fizzie> There was a dual-core ARM7 + TI C54x DSP chip in some bit of hardware I can't quite recall right now; apparently it was the predecessor of the OMAPx platforms that are used in a lot of smartphones nowadays. (The N900 has an OMAP3 3430 == 500 MHz ARM Cortex A8 + PowerVR SGX 530 GPU + 430 MHz TI C64x+ DSP + some sort of image processor I don't know about.)
12:14:01 <fizzie> That was meant to be parsed as "dual-core (ARM7 + C54x)", not "(dual-core ARM7) + C54x", in case it was unclear.
12:15:00 <fizzie> The C64x, incidentally, is a real VLIW thing. 256-bit opcodes; don't know how many instructions that is, probably 8.
12:27:25 -!- DH____ has joined.
12:32:56 <AnMaster> fizzie, and unrelated to the classica C64 I presume?
12:38:44 <fizzie> The full name would be something like TMS320C64xx+, where xx is some two-digit number I don't know.
12:50:05 <fizzie> TI folks sure can't spell: "Several Ubunto specific issues -- XDS100 support for Ubnutu 10.04 -- too problemnatic for emulation connectivity."
12:52:02 -!- DH____ has quit (Read error: Connection reset by peer).
13:03:54 -!- DH____ has joined.
13:07:33 -!- Phantom_Hoover has joined.
13:11:38 -!- BeholdMyGlory has joined.
13:11:38 -!- BeholdMyGlory has quit (Changing host).
13:11:38 -!- BeholdMyGlory has joined.
13:18:52 <Phantom_Hoover> What is the problem with computing the 3-body problem?
13:29:21 <fizzie> For a real answer, you might have to wait for one of the channel's mathematician, but my gut feeling (based on really vague recollections of handwavy descriptions) is that you can do it with numerical methods (and therefore with a Turing machine, if you want) to any arbitrary precision (if you have enough patience), but there are no easy (or practical for the purposes of getting results out of it, anyway) analytical solutions to it.
13:29:35 <fizzie> Pluralize mathematician there.
13:30:31 <fizzie> Here's one more bit of trivia for the C54x (ended up browsing through the manuals); if you do a delayed branch, it'll execute the two words following the branch, but you'll have to keep in mind that some instructions (those containing immediate values, at least) are two words long already.
13:30:52 <fizzie> Makes you wonder whether you could split a two-word instruction across the branch and have it execute correctly.
13:34:41 <fizzie> Could be somewhat useful in something like: [code that puts label1 or label2 to A]; BACCD A; NOP; LD #0xffff, A; label1: [raw word X]; ...; label2: [raw word Y]; ...
13:35:40 <fizzie> Compared to the more understandable: BACC A; label1: LD #X, A; ...; label2: LD #Y, A; ...
13:36:03 <fizzie> (BACC A is basically BACCD A; NOP; NOP.)
13:38:02 <AnMaster> fizzie, what if you put a branch in the branch delay slot?
13:38:20 <fizzie> I think that was explicitly defined as to resulting in undefined behaviour.
13:38:52 <AnMaster> fizzie, aww, it would be awesome if you could execute just a few instructions from the middle of another function that way
13:42:32 <fizzie> It's possible that it could work.
13:42:45 <fizzie> At least on some specific models. :p
13:46:15 <Phantom_Hoover> Is there a 3D renderer that supports non-Euclidean space?
13:47:02 <AnMaster> Usage error: try 'nqc -help' to display options <-- how useless. What in my command line is wrong I wonder. Missing flag? typoed flag? Something else?
13:48:12 <AnMaster> oh missing filename it seems... But the command I tried to run shouldn't need one? huh
13:48:53 <fizzie> It might also do something pretty strange. The thing has a 6-step pipeline, and there's already some magic involved to make the early steps (prefetch, fetch) start reading words from the branch target before the branch is actually executed.
14:01:32 <fizzie> You should take that as a "I do not know of any" rather than "no".
14:01:48 <fizzie> Contrary to popular expections, I am in fact not omniscient. (I know it's hard to believe.)
14:02:42 <fizzie> Personally I would've guessed someone would have at the very least hacked POV-Ray to do something bizarre, but a quick googling did not reveal anything.
14:04:08 <AnMaster> shouldn't be hard to make povray do that I expect
14:04:16 <AnMaster> considering all the other stuff done with it
14:16:11 <AnMaster> anyone have any experience parsing coff?
14:16:26 <AnMaster> I'm considering writing a program that patches the OS on my RCX
14:16:42 <Sgeo_> Later on, anyone want to help me figure out the semantics of rotation in this program?
14:16:44 <AnMaster> currently whenever I mess around in the OS source code I have to re-download the whole thing
14:18:01 <Sgeo_> I'm pretty sure it's rotation around an axis
14:21:10 <Sgeo_> For starters, why 0 degrees does not mean "do nothing"
14:23:38 <Sgeo_> I don't know, but a guess is translation. It's automatically translating something
14:24:01 <Sgeo_> Which is not nice because there's separate input for translation
14:24:22 <Sgeo_> Rotation is counterclockwise, according to the documentation.
14:24:48 <Sgeo_> http://www.andras.net/yasbb.html#mozTocId911022
14:25:04 <AnMaster> why are you using quaternions?
14:25:13 <AnMaster> or was that just Phantom_Hoover?
14:32:03 <Sgeo_> Ok, give me some coords for easy testing, multiples of 1000
14:32:14 <Sgeo_> Let me first do the obvious ones
14:32:37 <AnMaster> Sgeo_, uh? easy testing with what?
14:32:52 <Sgeo_> To determine WTF rotation means with this thing
14:33:46 <AnMaster> Sgeo_, what is that thing btw?
14:33:56 -!- cheater99 has quit (Quit: Leaving).
14:34:03 <AnMaster> Sgeo_, oh btw, try 0,1000 and 1000,0
14:34:10 <Sgeo_> AnMaster, got those
14:34:13 -!- cheater99 has joined.
14:34:30 <AnMaster> it could be rotating relative origo, absolute not relative
14:35:09 <AnMaster> depending on how the coordinate system looks
14:35:37 <AnMaster> Sgeo_, also are you rotating points or sprites?
14:35:54 <AnMaster> Sgeo_, and what is the program
14:35:59 <Sgeo_> Points.. well, objects, but I'm ignoring the AW specific stuff as much as possible
14:36:04 <Sgeo_> http://www.andras.net/yasbb.html#mozTocId911022
14:36:52 <AnMaster> Sgeo_, what is it for exactly?
14:37:21 <Sgeo_> AnMaster, moving stuff in the game
14:37:32 <Sgeo_> We're relocating some of the stuff
14:37:40 <Sgeo_> Currently, everything's too far away
14:38:48 <Sgeo_> The Project I've been working on for a while
14:39:06 <Sgeo_> A game in Active Worlds
14:41:45 <AnMaster> yay, medium size mine sweeper in 48 seconds. New person record :)
14:42:25 <Sgeo_> Hm, it keeps freezing
14:42:34 <Sgeo_> I think it dislikes the fake data I'm giving it
14:44:03 <Sgeo_> The simulated data has () in the name of the object
14:44:08 <Sgeo_> That may be problematic
14:45:09 <Sgeo_> well, the name is really supposed to hold a filename
14:45:31 <AnMaster> Sgeo_, and? () is perfectly valid in filenames afaik
14:45:43 <AnMaster> everything but the zero byte and / are allowed iirc
14:45:59 <AnMaster> probably different rules there,
14:46:01 <Sgeo_> Ok, it's not AW's fault
14:46:25 <AnMaster> Phantom_Hoover, not mysterious at all
14:46:35 <AnMaster> Phantom_Hoover, considering that : was used as path delimiter on classical Mac OS
14:46:56 <AnMaster> Phantom_Hoover, classic mac os had fun paths
14:47:12 <Phantom_Hoover> But a file that shows up in ls as "a:b" will be "a/b" in the Finder.
14:47:15 <AnMaster> 1) Foo <-- file in current directory
14:47:24 <AnMaster> 1) Foo:Bar <-- file Bar on volume Foo
14:47:39 <AnMaster> 1) :Foo:Bar <-- file Bar in directory Foo in current directory
14:47:55 <AnMaster> 1) ::Foo:Bar <-- equiv to ../Foo/Bar
14:48:01 <AnMaster> 1) :::Foo:Bar <-- equiv to ../../Foo/Bar
14:48:26 <AnMaster> Phantom_Hoover, this was one of the main issues when porting ICK to classic MacOS
14:48:38 <AnMaster> Phantom_Hoover, it was careless with adding extra /
14:48:50 <AnMaster> nor would extra \ hurt on windows
14:49:01 <AnMaster> but on classical MacOS it changed stuff completely
14:49:55 <Phantom_Hoover> But it doesn't really explain why OS X substitutes : for / in the finder.
14:52:17 <AnMaster> Phantom_Hoover, well I suspect it is the reason, but it isn't a good one
14:53:41 -!- Gracenotes has quit (Ping timeout: 260 seconds).
14:53:54 <Sgeo_> Ok, simulation complete
14:53:58 <Sgeo_> Now, let's test some stuff
14:54:16 <Sgeo_> What should the first rotate around coord be?
14:55:37 <Sgeo_> It spontaneously froze
14:56:03 <Sgeo_> Hm? The software? YASBB
14:56:08 <Sgeo_> http://www.andras.net/yasbb.html#mozTocId911022
14:56:38 <Sgeo_> Shall I try rotating around 0, 1000 in the "old build" (whatever that means) by 0 degrees?
14:57:30 <Sgeo_> Ok, that translated everything by (0, -1000)
14:59:13 <Sgeo_> I think I get it now.
14:59:52 <Sgeo_> It's not simply a "rotation point", it's a point of original build thing. I made a coordinate subtractor, but it's not needed.
14:59:58 <Sgeo_> You can just use this, I think
15:00:11 <Sgeo_> That's _very_ crappily documented though.
15:03:15 <Sgeo_> Seriously, to move something without rotating, the easiest thing to do is "rotate before build"?
15:03:45 <Sgeo_> It's like "Rotate Before Build" is supposed to mean "Oh, the build's center is here"
15:06:37 <Sgeo_> I wish that it wasn't labelled "rotate before build"
15:08:00 <Sgeo_> Let me try moving the whole thing, centered at (0, 1000), to (0, 5000), rotated 180
15:09:03 <Sgeo_> Um, let me write these out
15:10:21 <Sgeo_> (0, 0) -> (0, 6000), (0, 1000) -> (0, 5000), (1000, 0) -> (-1000, 5999), (-1000, 0) -> (999, 6000), (0, -1000) -> (0, 7000)
15:16:22 <Phantom_Hoover> How would you go about actually making a non-Euclidean raytracer?
15:16:43 <Phantom_Hoover> You'd presumably need to specify the curvature of space somehow.
15:20:39 <AnMaster> Phantom_Hoover, you could wait for him to come on
15:21:05 <AnMaster> Phantom_Hoover, probably will happen within 8 hours
15:21:46 <Phantom_Hoover> I suppose the process would be along the lines of: create the space from a specification, then put stuff in it, then trace rays along geodesics.
15:25:59 -!- alise has joined.
15:27:05 <Phantom_Hoover> I'm wondering if it's practical to make a non-Euclidean rayttracer.
15:27:37 <Phantom_Hoover> However, I don't really know how you would go about doing so
15:27:56 <Phantom_Hoover> Obviously, you need a way of specifying the curvature.
15:28:07 <alise> ill read up on noneuclid geometry to help :P
15:28:23 <Phantom_Hoover> I was thinking of simply using the Gaussian curvature, if the concept is extensible into 2D.
15:29:38 <Phantom_Hoover> After that, the position of stuff needs to be established within the space.
15:30:45 <alise> raytracing is 3d...
15:32:44 -!- alise has left (?).
15:32:50 -!- alise has joined.
15:32:56 <alise> "British TV at the moment is basically made up of auctions, antiques, auctions of houses that people later do up, doing up houses, moving from one house to another usually abroad, boxes with an unknown quantity of money inside, quizzes loosely reliant on a vague grasp of general knowledge, talking to idiots about their issues and circa 1990s murder mysteries."
15:32:57 <Sgeo_> Actually, you still need to subtract to determine altitude
15:33:51 <Phantom_Hoover> Hacking POVRay to do this looks like it will be nigh-impossible, as well.
15:35:00 <alise> raytracers are easy
15:35:36 <Phantom_Hoover> Is there an algorithm for finding the geodesic between two points in N-E space?
15:36:36 <Phantom_Hoover> Presumably reflection can be kept as angle-of-incidence-equals-angle-of-reflection
15:41:46 -!- MizardX- has joined.
15:44:08 -!- tombom has quit (Quit: Leaving).
15:45:30 -!- MizardX has quit (Ping timeout: 252 seconds).
15:45:35 -!- tombom has joined.
15:45:45 -!- MizardX- has changed nick to MizardX.
15:48:56 -!- relet has joined.
15:53:02 * Sgeo_ wonders if YASBB has rounding issues
16:11:13 <AnMaster> Phantom_Hoover, also which N-E geometry are you planning for?
16:11:18 <AnMaster> Phantom_Hoover, aren't there several?
16:12:01 <AnMaster> Phantom_Hoover, anyway, how would you specify coordinates in them?
16:12:06 <Phantom_Hoover> I was thinking of the 3D analogues of spherical and hyperbolic geometry.
16:13:06 <Phantom_Hoover> Then again, I'm not even sure how easy it will be to make the computer understand N-E geometry in the first place.
16:13:45 <AnMaster> Phantom_Hoover, hm. perhaps mathematica has something for it. It is worth checking.
16:15:34 <Phantom_Hoover> The top Google hit is for a MathWorld article with no Mathematica demonstration
16:17:32 <AnMaster> Phantom_Hoover, surely there must be some coordinate system for it though?
16:23:47 * Sgeo_ may go to the bookstore tomorrow
16:23:51 <Sgeo_> Maybe buy a math book
16:25:13 <Phantom_Hoover> Geomview supports some form of 3D NE geometry, but it confuses me a great deal.
16:27:59 <alise> <Phantom_Hoover> Then again, I'm not even sure how easy it will be to make the computer understand N-E geometry in the first place.
16:28:07 <alise> i predict as easy as E geometry, but with some extra double handling
16:30:53 <alise> http://web.mit.edu/geomview_v1.9.3/www/Non_002dEuclidean-Geometry.html
16:31:37 <alise> The default model is all three spaces is Virtual. This corresponds to the camera being in the same space as, and moving under the same set of transformations as, the geometry itself. <-- you may not want this because non-euclidean geometry is unintuitive and thus hard to manœuvre in
16:31:56 <alise> In hyperbolic space, the Projective model setting gives a view of the projective ball model of hyperbolic 3-space imbedded in Euclidean space. The camera is initially outside the unit ball. In this model, the camera moves by Euclidean motions and geometry moves by hyperbolic motions.
16:32:08 <alise> they embed a ball with hyperbolic 3-space inside... into euclidean space
16:32:15 <alise> and have the camera /outside/ of the ball, and thus in euclidean space
16:32:24 <alise> not sure what the conformal ball model is, but eh
16:32:31 <alise> projective sounds best for hyperbolic geometry
16:32:39 <Phantom_Hoover> A ball is topologese for the inside of a sphere, isn't it?
16:32:43 <alise> In spherical space, the Projective model gives a view of half of the 3-sphere imbedded in Euclidean 3-space. Spherical motions give rise to projective transformations in the Projective model, and to Moebius transformations in the Conformal model. In both of these models the camera moves by Euclidean motions.
16:32:49 <alise> hyperbolic sounds less confusing :P
16:32:57 <alise> Phantom_Hoover: yes
16:33:25 <alise> There are several sample hyperbolic space objects in the data/geom/hyperbolic subdirectory of the Geomview directory. Likewise, the subdirectory data/geom/spherical contains several sample spherical space objects.
16:33:39 <alise> I suggest looking at them with all three models and choosing the most intuitive; I bet for hyperbolic it will be Projective.
16:33:43 <Phantom_Hoover> There's no such directory in my installation, by the way.
16:33:47 <alise> Phantom_Hoover: but note that this will /never/ be intuitive
16:33:49 <alise> Phantom_Hoover: there will be
16:33:51 <alise> in /usr/share, probably
16:35:17 <alise> what distro, package?
16:35:31 <alise> if it's debian/ubuntu [insert snarky remark about how debian fucks with every damn package]
16:35:52 <alise> Phantom_Hoover: also, you linked to fourmilab; thus i love you
16:36:12 <alise> Phantom_Hoover: same as Arch
16:37:47 <Phantom_Hoover> I was viewing non-hyperbolic models with space set to hyperbolic.
16:42:18 <alise> Phantom_Hoover: Hmm, I lack the files too.
16:42:21 <alise> <Phantom_Hoover> I was viewing non-hyperbolic models with space set to hyperbolic.
16:42:30 <alise> did it look awesome
16:43:46 <alise> Phantom_Hoover: abstr.off in spherical geometry shows you the inside of the shape
16:44:18 -!- oklopol has joined.
16:45:01 <oklopol> what comes after 1, 3, 2, 4, 5, 6, 7?
16:45:04 <alise> all i know is that it's amazing
16:45:46 <fizzie> 12, according to OEIS hit #1.
16:45:48 <oklopol> Phantom_Hoover: not very natural imo
16:46:13 <oklopol> i'm assuming no background info
16:46:17 <fizzie> oklopol: The 12 comes from: "a(1) = 1, a(n)= smallest number not occurring earlier such that a(n-1)*a(n) -1 is a prime. re-arrangement of natural numbers such that the product of adjacent terms is one more than a prime."
16:46:21 <oklopol> you don't need to know which sequences are important in math
16:46:27 <alise> Phantom_Hoover: ...you know Sam Hughes and qntm.org?
16:46:32 <oklopol> fizzie: yeah so 12 is not very natural
16:46:41 <alise> pikhq does i know that
16:47:16 <oklopol> well okay not that unnatural either, i misunderstood first
16:47:29 <oklopol> but so okay you don't like sequences extrapolation i guess
16:47:54 <oklopol> sorry i made a mistake, then 12 may have been the most natural one :)
16:48:30 <fizzie> oklopol: The 9 was from "Triangle read by rows which contains in row n that permutation of the n numbers T(n-1)+1..T(n) which yields a smallest multiple of n after concatenation. T(n) are the triangular numbers. If no such multiple exists, the row contains zeros". (Away for now, though.)
16:49:22 <oklopol> i'm asking because i think my first answer was the less natural one
16:49:42 <fizzie> oklopol: That I'd naturally read as 1 / 3,2 / 4 / 6,5 / 7 / 9,8 / 10 / 12,11 / 13 / ... -- is this the natural one you were thinking of?
16:49:53 <oklopol> oh no that didn't occur to me
16:50:01 <alise> pikhq: yeah, well, bad news
16:50:09 <alise> pikhq: his whole non-fiction/misc section has been deleted, it seems.
16:50:20 <alise> pikhq: it's not on his main page links and i can't think of the url
16:50:56 <oklopol> the one of mine that gives 9 is "(add 2)^n sub 1 for n = 1, ..."
16:50:58 <alise> Phantom_Hoover: abstr.off with conformal hyperbolic
16:51:17 <oklopol> but your "imperative" thing is more natural, i think
16:51:29 <oklopol> then i had a slightly less local thingie that gives you 10
16:52:43 <oklopol> fizzie: 1, 3, 2, 4, 6, 5, 7, 10, 8, 11, 9
16:52:48 <pikhq> alise: There's not even the "how to destroy the world" thing!
16:53:02 <alise> pikhq: Wait, wait, let's find the URL that it used to have.
16:53:11 <alise> http://qntm.org/destroy
16:53:15 <alise> Apparently that is now part of his "blog".
16:53:17 <alise> One question; why.
16:53:30 <alise> http://qntm.org/blog And oh my god can we have some fucking organisation.
16:53:57 <alise> I was looking for his "what comes next, 1, 2, 3," page or something
16:55:13 <Phantom_Hoover> You can have a function that will give literally any sequence.
16:55:22 <alise> Phantom_Hoover: that's what the page was about
16:56:07 <Phantom_Hoover> It's one of those things I always want to tell people, but they never listen.
16:56:18 <alise> that's because it's a pedantic assholey point to make
16:56:28 <alise> "HAHAHAHA your reasonable request is stupid in the face of my edge-case"
16:56:35 <alise> it's always quite thoroughly obvious what the question means
16:56:47 <alise> "what naturally contains these elements and other ones that satisfy some meaningful, possibly useful, property?"
16:56:55 <alise> yes, well, find it interesting silently :P
16:58:08 -!- Mathnerd314 has joined.
16:58:30 <alise> That sounds like something off Star Trek.
16:59:39 <oklopol> http://qntm.org/joke hehehe
16:59:47 <alise> "Their phasers are locking on!" "Shields up!" [BAM] "They've BYPASSED OUR SHIELDS!" "But how?" "Captain, I believe they are using a proto-nucleising energy transmitter to create a hole in our shields." "Quick, try hyperbolising the helicoid!" "But that's suicidal!" "Not when they're creating holes in it, it isn't! It won't be stable for long enough to create a wormhole!" "Hyperbolising..." [BAMS STOP] "...It worked!"
16:59:50 <AnMaster> Phantom_Hoover, I thought you meant tech the tech
16:59:55 <Phantom_Hoover> Holy crap, the conformal projection looks like something out of Lovecraft.
17:00:08 <AnMaster> Phantom_Hoover, what are you rendering with?
17:00:25 <alise> AnMaster: geomview
17:01:13 <pikhq> alise: Idea for this whole Flinix thing: shar packages. :P
17:01:24 <alise> pikhq: Or just use tar :P
17:01:34 <alise> Phantom_Hoover: i strongly recommend using projective or conformal when trying to figure stuff out
17:01:43 <pikhq> But tar is a *program*!
17:01:49 <AnMaster> alise, from the screenshots it doesn't look like a raytracer though
17:01:53 <alise> pikhq: That is included in BusyBox.
17:01:57 <alise> Also, MY name. MY name!
17:02:10 <pikhq> FURINIKUSU. Happy now?
17:02:23 <alise> HAHAHAHA MY NAME IS BETTER
17:02:27 <alise> Phantom_Hoover: Floppy Linux!
17:03:01 <pikhq> AnMaster: Too large.
17:03:12 <alise> AnMaster: used to.
17:03:15 <AnMaster> anyway who uses floppies these days?
17:03:20 <alise> AnMaster: Who cares?
17:03:29 <alise> Of course you can ...
17:03:47 <alise> TODAY: AnMaster discovers there is a world outside of his own computer setup.
17:03:58 <Sgeo_> I would prefer to dedicate my last breath of air to getting more air.
17:04:11 <pikhq> Half the point is just to be silly, anyways. :P
17:04:12 <alise> AnMaster: I'm fitting a modern kernel, full BusyBox utilities, X11, a window manager, and the dillo web browser onto a floppy disk. pikhq is wasting his time making a vastly inferior version of this and shall perish.
17:04:26 <alise> Sgeo_: If you know it's your last breath, who cares about air?
17:04:42 <alise> pikhq: I predict you will fail because you SUCK.
17:04:49 <AnMaster> alise, logically floppies should be the actually floppy ones only
17:04:55 <AnMaster> alise, and then I doubt you can buy new ones
17:05:01 <alise> AnMaster: logically you're full of shit.
17:08:16 <alise> http://qntm.org/1111
17:08:48 <alise> It's sexy like a beast.
17:10:47 <Phantom_Hoover> I mean, for some things it's almost identical to Projective, but for others it's what you would expect if you left a bomb in a polygon factory.
17:12:19 <AnMaster> alise, hm, does it work for sequences that contain rational numbers? Since the author of that page mentions "integer sequences" specifically it seems like it may not be the case.
17:12:40 <alise> http://en.wikipedia.org/wiki/Lagrange_polynomial
17:12:49 <alise> it works for reals too.
17:12:51 <Phantom_Hoover> It works by making a polynomial that intersects all of the points.
17:12:59 <AnMaster> alise, hm, he shouldn't limit it to integer sequences then on that page.
17:13:05 <alise> AnMaster: oh, shut up.
17:13:17 <Phantom_Hoover> Integer sequences are the only ones you're ever asked about.
17:13:46 <Phantom_Hoover> The spherical Conformal projection of the sphere is cool...
17:13:59 <AnMaster> Phantom_Hoover, screenshot or such?
17:14:26 <alise> Phantom_Hoover: what does it look like?
17:15:23 <AnMaster> Phantom_Hoover, you could screenshot just this one
17:15:46 <fizzie> AnMaster: If you mean the PC 5.25" floppies, you can buy those from floppydisks.com, though I'm not sure if they have suppliers that still manufacture them. They do say they're able to get floppies in large quantities, so maybe.
17:16:26 <AnMaster> let me see how long it would take. 1) hit PrtScr, 2) select save in dialog 3) use command line script to upload it somewhere (I have one for omploader, there are other ones for other services out there iirc), paste link script gave on irc
17:17:01 <AnMaster> or alt-printscreen for current window
17:21:02 <Phantom_Hoover> And it renders a hypercube much better than Euclidean does
17:22:06 * alise implements lagrange polynomials in haskell
17:23:50 <alise> mind, it only gives values, not the actual polynomial
17:24:05 <alise> Phantom_Hoover: how do i make an object go away?
17:24:07 <alise> deleting it doesn't work
17:26:57 <alise> It still apepars on screen.
17:29:41 <alise> does it work for you?
17:30:43 <alise> when selecting it in the list of the Main window and pressing dd?
17:31:00 <alise> or in the camera window somehow?
17:36:00 <AnMaster> -alise- VERSION xchat 2.8.8 Linux 2.6.33-ARCH [x86_64/2.01GHz/SMP] <-- I think you need to update. Arch is on 2.6.34 now isn't it?
17:40:12 <alise> Not sure. I'm a bit lazy.
17:40:21 <alise> And why is X-Chat telling you my system specifications...?
17:40:24 <alise> [[Is it taboo, in the world of software, to deliver code which is at the same time freely available for anybody to inspect but not available for free modification? Is it acceptable to say "look but don't touch"?]] --Sam Hughes
17:40:31 <alise> Thou hath disappointed me, Sam Hughes.
17:41:04 <alise> [[I was working on performance enhancements in the HATETRIS AI algorithm. Someone, unsolicited, sent me a version of HATETRIS with all of the enhancements I was working on already implemented. For example, expressing each row in the well as a binary number encoding a bit field, instead of an array. Does that person now get co-credit on what I was about to do?]]
17:41:46 <AnMaster> alise, because xchat does that by default
17:42:05 <alise> AnMaster: At worst a security hole, at best a... completely useless non-feature.
17:42:18 <alise> (you could have exploits in your kernel; security by obscurity, yes, but still, no need to blab those kinds of things)
17:42:39 <AnMaster> bbl upgrade that I need to restart X for...
17:42:40 <alise> AnMaster: and in the one move I *wouldn't* expect of X-Chat, it seems to be unconfigurable from the GUI
17:43:32 <alise> There, I have a new VERSION string.
17:43:40 -!- relet has quit (Read error: Connection reset by peer).
17:43:45 <alise> Ugh, it doesn't work.
17:44:09 <AnMaster> alise, turn it off (forgot where) then add a custom one
17:44:16 <alise> yeah it's the first part I'm trying to do
17:44:48 -!- relet has joined.
17:45:21 -!- CakeProphet has joined.
17:45:26 <alise> hi relet, CakeProphet
17:45:49 <alise> /set irc_hide_version on
17:46:04 <alise> I now have a new VERSION string without pesky system details.
17:46:29 <alise> So, list of available netcats:
17:46:56 <alise> Netcat 1.10 -- http://nc110.sourceforge.net/ (plus various patched versions)
17:46:56 <alise> nmap.org Ncat -- http://nmap.org/ncat/
17:46:56 <alise> GNU Netcat -- http://netcat.sourceforge.net/
17:47:09 <alise> All of which respond to nc(1), and have very similar names to "nc" or "netcat". Sheesh.
17:50:00 * pikhq wonders what the simplest Linux bootloader is.
17:50:07 <oklopol> guess what this program does: 8============================D
17:50:21 <alise> something not suitable for a pg-13 channel
17:50:29 <alise> pikhq: lilo is pretty damn simple
17:50:31 <alise> especially old lilo
17:50:36 <alise> apart from that, syslinux?
17:50:38 <pikhq> Ideally one that can be written to a floppy via cat boot linux > /dev/fdd
17:50:39 <alise> it's lightweight apparently
17:50:46 <alise> pikhq: or perhaps even loadlin
17:50:48 <pikhq> Screw. Filesystems.
17:50:57 <alise> pikhq: Screw formatted floppies.
17:51:17 <alise> pikhq: http://busybox.net/~vda/mboot/
17:51:20 <alise> pikhq: Master boot record that boots.
17:51:29 <alise> pikhq: http://busybox.net/~vda/linld/ DOS linux loader from the same guy.
17:51:33 <pikhq> Does it load Linux?
17:51:55 <pikhq> I'm going with "no".
17:52:26 <alise> linld is designed for loading Linux from DOS.
17:52:36 <pikhq> Directly load Linux.
17:52:43 <alise> and, well, it's just a COM
17:52:45 <alise> can't use many syscalls
17:53:07 <oklopol> http://qntm.org/1111 <<< a better answer than an ugly random polynomial is "after 1 1 1 1 there's a 5, in the sequence 111151111511115..."
17:53:18 <alise> pikhq: just get rid of the dos-unloading shit from linld and you're done :P
17:53:47 <alise> oklopol: the statement is more "for every sequence of reals there is a polynomial such that f(n) = a_n"
17:53:56 <pikhq> alise: Guess I'll just make linld run on direct hardware and call it a day then. :P
17:53:59 <alise> which just happens to give "slight" justification to giving any answer to "next in sequence"
17:54:04 <alise> oklopol: well implicitly
17:54:12 <alise> by explaining lagrange interpolation
17:54:24 <AnMaster> alise, the nmap ncat isn't a bad one as such. And I seem to have no one called nc on my system, only /usr/bin/ncat
17:54:43 <alise> AnMaster: Yes, but calling entirely independent programs the same name sucks. Just creates confusion.
17:54:59 <oklopol> much less justification than taking a repeating set of integers imo; well, okay i guess if it was not true that every finite sequence can be expressed as a polynomial, then that would be a lot more justification
17:54:59 <AnMaster> alise, well it seems to be called ncat not netcat or nc consistently?
17:55:00 <alise> Especially GNU Netcat, which is un-UNIXy bloat completely the opposite of what Hobbit intended.
17:55:06 <alise> AnMaster: gnu netcat takes up both netcat and nc.
17:55:08 <alise> and is called "netcat".
17:55:12 <alise> it shares no code with netcat.
17:55:18 <AnMaster> alise, I meant the nmap.org one
17:55:25 <alise> it's a confusing name
17:55:31 <alise> i was confused by it until i figured it out :P
17:56:13 <AnMaster> alise, just had to do a pacman -Qo followed by pacman -Qi to find out it was a nmap.org one. Think man page also mentions it
17:56:27 * pikhq looks for the Linux 2.4 boot sector.
17:56:46 <alise> AnMaster: There's no arch package for stock Hobbit netcat 1.10 so I had to compile it myself.
17:57:33 <alise> aur/nc is a version patched with god-knows-what.
17:57:37 <alise> When it comes to netcat, I'm a purist. :-)
17:57:49 <AnMaster> alise, you needed to patch too iirc?
17:57:58 <alise> If the structures and variables aren't named "poop", if there isn't a define called GAPING_SECURITY_HOLE, if it doesn't have *Hobbit*'s signature on it, I won't use it.
17:57:59 <AnMaster> alise, anyway I doubt the hobbit one does ipv6
17:58:03 <alise> AnMaster: no, I just couldn't figure out the build system
17:58:07 <alise> ok, I had to add one patch (to include a header file)
17:58:15 <alise> but that's just bitrot ... of the unix systems not of netcat :-)
17:58:23 <alise> it doesn't -- thankfully, nobody else does ipv6 either
17:58:37 <AnMaster> okay so now my thunderbird is suddenly called "lanikai"... Irritating.
17:58:46 <alise> AnMaster: probably another trademark issue.
17:58:57 <alise> AnMaster: there is a patched netcat with ipv6
17:59:09 <AnMaster> yes but it was called shredder before. Oh it seems it is still called shredder in a few places
17:59:20 <alise> shredder is a confusing name for a mail client
17:59:23 <alise> AnMaster: they change name every new version
17:59:48 <AnMaster> well I found shredder a funny name
17:59:58 <AnMaster> oh and it still says shredder on the "you just updated" tab
18:00:20 <alise> http://i.imgur.com/CtXcm.jpg
18:00:40 <fizzie> There's also the good old loadlin for "loading Linux from DOS"; I have no idea which one of those would be simplest.
18:00:55 <alise> fizzie: linld was created because loadlin broke for the author and he found it too complex to fix
18:00:58 <alise> So, yeah, linld is simpler.
18:01:23 <AnMaster> ffs. 404 for enigmail version supposed to work with this
18:01:26 <fizzie> The Linux boot protocol is (surprisingly) well documented in Documentation/x86/boot.txt, though, so it's not hard to whip up a loader.
18:01:30 * pikhq fetches Linux 2.4 in hopes of being able to use its boot sector
18:01:41 <pikhq> (it came with a bootloader. Bwahahah.
18:01:42 <alise> pikhq: just write your own loader ... although you'd have to do initramfs stuff
18:01:57 <alise> pikhq: I strongly suggest you get rid of tmpfs, using shmfs or whatever it is instead, add block devices, and use initrd.
18:02:01 <pikhq> alise: initramfs from the point of view of a bootloader is the same as initrd.
18:02:59 <pikhq> I'll compare the size of tmpfs vs. an initrd with other filesystems.
18:03:22 <alise> pikhq: if you disable tmpfs
18:03:26 <alise> then there's some built in filesystem
18:03:28 <alise> shmfs or ramfs or something
18:03:42 <alise> so disable tmpfs, disable initramfs, enable block devices, disable every block device thing there is, enable initrd
18:03:50 <alise> pikhq: btw you can compile a filesystem into the kernel.
18:03:53 <pikhq> alise: And how do you propose getting anything *onto* the ramfs?
18:04:14 <alise> pikhq: Umm ... serialise the ramfs to disk!
18:04:26 <alise> pikhq: Fine, initramfs then. :P
18:04:29 <alise> pikhq: Look at this: http://en.gentoo-wiki.com/wiki/Initramfs#Embedding_into_the_Kernel
18:04:32 <alise> If you want the initramfs to be embedded into the kernel image, edit your kernel config and set Initramfs source file(s) to the root of your initramfs, (e.g /usr/src/initramfs):
18:04:32 <alise> Linux Kernel Configuration: Enabling the initramfs
18:04:32 <alise> General setup --->
18:04:32 <alise> (/usr/src/initramfs) Initramfs source file(s)
18:04:32 <alise> Now when you compile your kernel it will automatically compress the files into a cpio archive and embed it into the bzImage. You will need to recompile the kernel any time you make any changes to your initramfs.
18:04:41 <pikhq> Yes, I'm aware of how you can compile in an initramfs.
18:04:56 <alise> hmm, we need an irc correction language
18:05:42 <AnMaster> alise, yes a subset of sed works well
18:06:03 <alise> nah we need something more esoteric
18:06:04 <AnMaster> would delete that line you wanted deleted
18:06:16 <alise> vimish stuff could work quite well, "3 delete previous line"
18:06:22 <alise> to erase the three previous lines
18:06:35 <alise> of course, the prefix would be a *
18:06:50 <alise> and invalid programs would be specified to run with sed, failing that, perl (more regular expression capabilities)
18:07:01 <alise> failing that, the human should figure out the program's intent :P
18:08:12 * AnMaster ponders a matrix based esolang.
18:09:08 <AnMaster> hm actually, could elementary matrix math be TC?
18:09:20 <AnMaster> what would you need to extend it with I wonder...
18:09:22 <alise> all elementary matrix math functions terminate :P
18:09:52 <CakeProphet> if I wanted a shell program that I could run to communicate with a background server process... how would I accomplish this?
18:10:10 <AnMaster> alise, good point. However I want a TC, self modifying matrix based language that is basic matrix math + the minimum extra required to make it TC
18:10:35 <alise> CakeProphet: A few options.
18:10:35 <AnMaster> alise, I'm not asking anyone else to make this :P
18:10:50 <alise> A theprogram.pid file.
18:10:56 -!- Mathnerd314 has quit (Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.2.6/20100625231939]).
18:11:11 <alise> AnMaster: which is basically the degenerate case of a file socket (which i forget the proper name of)
18:11:16 <alise> (i don't think...)
18:11:21 <AnMaster> starting the bg server process from the shell and redirecting it's stdio to, say, fd 4 and fd 5
18:11:36 <AnMaster> alise, well doesn't have to be a fifo on the fs
18:11:55 <alise> AnMaster: or just write and read to fd 4 and 5 directly ofc
18:12:03 <alise> but a fifo would be the cleanest fs way to do this
18:12:08 <alise> whatever you do don't use ipc sockets
18:12:52 <AnMaster> CakeProphet, you could get pid easily of the last backgrounded program using some variable
18:13:57 <AnMaster> alise, what is wrong with ipc sockets?
18:14:10 <AnMaster> I never used them and don't know much about them really
18:14:17 <alise> AnMaster: imagine the most complicated, stupid way to do ipc you can
18:14:21 <alise> now layer it on everything
18:14:28 <CakeProphet> AnMaster: is this something that I could do at any time?
18:14:33 <alise> i only tried to use them once and started looking them up and immediately i was just like "yeah fuck that"
18:14:37 <alise> CakeProphet: write a .pid file.
18:14:40 <alise> like everyone else :P
18:14:42 <CakeProphet> log in to an SSH and run this program and it'll connect with the server
18:14:50 <CakeProphet> alise: ah okay. Didn't even consider that. Shut it. :P
18:14:55 <alise> CakeProphet: dude we've been telling you how to do that for the past ages :P
18:14:56 <alise> CakeProphet: or use a fifo
18:14:57 <AnMaster> CakeProphet, make the program write it's pid to a file then
18:15:04 <alise> where do most pid files go?
18:15:06 <alise> /var/somewhere/program.pid
18:15:09 <alise> what's somewhere, i forget
18:15:12 <alise> CakeProphet: incorrect.
18:15:19 <alise> <alise> CakeProphet: A few options.
18:15:19 <alise> <AnMaster> alise, I'm not asking anyone else to make this :P
18:15:19 <alise> <alise> A file socket.
18:15:19 <alise> <alise> A TCP socket.
18:15:19 <alise> <alise> A theprogram.pid file.
18:15:21 <AnMaster> but that tend to be init.d only
18:15:42 <alise> AnMaster: ah yes, /var/run
18:15:43 <CakeProphet> alise: that was ages ago, /and/ for something unrelated.
18:15:44 <AnMaster> alise, the pid doesn't allow you to talk to the program easily. Only signals
18:15:49 <alise> CakeProphet: no... it wasn't.
18:15:52 <alise> and it wasn't ages ago
18:16:01 <alise> AnMaster: which is why i'm suggesting a fifo
18:16:12 <alise> [ehird@ping run]$ ls
18:16:12 <alise> ConsoleKit dhcpcd rpcbind.lock syslog-ng.ctl xdm.pid
18:16:12 <alise> crond.pid dhcpcd-eth0.pid rpcbind.pid syslog-ng.pid
18:16:12 <alise> daemons hald rpcbind.sock utmp
18:16:12 <alise> dbus lirc sudo VirtualBox
18:16:17 <alise> like rpcbind and syslog-ng :P
18:16:17 <AnMaster> alise, I forgot how fifos on the file system work when you close them
18:16:26 <alise> AnMaster: i think so, yes.
18:16:30 <alise> otherwise why would syslog-ng use it for control
18:16:39 <alise> just make the fifo /var/run/foo.(sock|ctl) and use it to communicate, voila
18:16:42 <AnMaster> is that a fifo or socket I wonder
18:16:45 <alise> just start a damn tcp server
18:16:52 <alise> AnMaster: how would i find out?
18:17:03 <alise> [ehird@ping run]$ file rpcbind.sock
18:17:03 <alise> rpcbind.sock: socket
18:17:03 <alise> [ehird@ping run]$ file syslog-ng.ctl
18:17:03 <alise> syslog-ng.ctl: socket
18:17:09 <alise> meh, what kind of socket is that?
18:17:14 <AnMaster> srwxr-xr-x 1 root root 0 29 maj 19.54 syslog-ng.ctl
18:17:27 <AnMaster> that is the only one that can show up on the file system
18:17:36 <AnMaster> alise, don't think you can make bash talk to it though
18:17:42 <alise> just use a tcp socket :P
18:17:58 <alise> as i have said many times, tcp should really have ports be strings so that this stuff is viable
18:18:02 <alise> localhost:syslog-ng
18:18:04 <AnMaster> alise, that has the downside of not having permissions on it
18:20:01 <CakeProphet> alise: were we talking about doing hot-swapping?
18:20:17 <alise> CakeProphet: what?
18:20:21 <alise> CakeProphet: you never said that.
18:20:31 <alise> hotswapping should just be done by
18:20:40 <CakeProphet> alise: oh... it was just a second ago. I didn't scroll up to see it. :P
18:20:41 <alise> kill -SIGHUP $(cat /var/run/foo.pid)
18:21:11 <Sgeo_> Grr Chrome and Reddit don't mix
18:21:59 <alise> The two rabbits have just attempted to mate.
18:21:59 <AnMaster> you would probably need two fifos btw
18:22:06 -!- augur has joined.
18:22:06 * AnMaster checks the reopening behaviour
18:22:10 <alise> To put this into perspective, I would like to note that one of them is big and the other one is tiny.
18:22:23 <alise> Also, they're both neutered.
18:22:45 <alise> CakeProphet: I've seen SIGHUP to mean "reload", and /var/run/foo.pid is very common.
18:22:49 <alise> So all you need is to tell people to do:
18:22:54 <alise> kill -HUP $(cat /var/run/foo.pid)
18:23:00 <AnMaster> alise, eh, it seems to close both ends when you close it on the writing end at least
18:23:13 <alise> ssh cow@someserver.com 'kill -HUP $(cat /var/run/foo.pid)'
18:23:19 <alise> (I *think* ssh starts a shell.)
18:23:20 <CakeProphet> alise: dunno if I'll have access to that directory on the server I'd be hosting from, so I might just put it in the local directory of the program.
18:23:30 <alise> CakeProphet: you're going to use a shared server?
18:23:36 <alise> what are you, retarded? :|
18:23:44 <alise> buy a fucking vps :P
18:23:48 <AnMaster> alise, closing the reading end does not result in that
18:24:45 <AnMaster> CakeProphet, what are you doing this for?
18:24:48 <CakeProphet> alise: hey fuck you. At this point I don't know what I'm going to run on.
18:24:58 <alise> Hey fuck you buddy.
18:25:09 <AnMaster> CakeProphet, if you use erlang there are easier ways for reconnecting an erlang shell
18:25:10 <alise> CakeProphet: yeah, i'll just say that ... you want a vps
18:25:25 <alise> $15-$20/mo, not a gigantic expense if you really want to run a proper mud server.
18:25:31 <alise> (of course you'd need more if it grew to ... any size)
18:26:26 <CakeProphet> AnMaster: I'm not going to use Erlang though. and yes, I know it can, but I'm going with Haskell for sure.
18:26:32 <alise> Why not use Erlang?
18:26:37 <alise> It's pretty perfect for a MUD :P
18:26:50 <alise> Haskell? You'd better have the objects be coded in Haskell, or you fail.
18:26:56 <alise> Yeah, Haskell isn't "weird" :P
18:27:04 <CakeProphet> alise: what else would the objects be coded in?
18:27:29 <alise> CakeProphet: some mudscript thing.
18:27:37 <alise> gl sandboxing haskell, i suggest using haskell-plugins.
18:27:48 <alise> http://hackage.haskell.org/package/mueval
18:27:56 <alise> it only does expressiosn i think, not sure
18:28:00 <alise> by gwern, though, so you know it's good.
18:28:01 <CakeProphet> alise: why would I sandbox it. I'm going to be the only programmer.
18:28:06 <CakeProphet> I'm just going to program everything the normal way.
18:28:08 <alise> CakeProphet: oh, not a MUSH
18:28:12 <alise> how thoroughly boring
18:28:47 <alise> mushes have user-codable objects.
18:29:53 <alise> mueval or haskell-plugins
18:30:00 <alise> and if you don't do it you fail forever :|
18:30:19 <alise> mueval only does expressions i think so you'd want haskell-plugins
18:30:27 <alise> make sure the world is structured functionally though :)
18:30:56 <CakeProphet> most of it will probably be stateful, I'm sure.
18:31:05 <alise> then don't use haskell
18:31:33 <CakeProphet> though I'm going to stick to message passing when I can
18:31:57 <AnMaster> $ erl -sname foo and then erl -sname bar -remsh foo@localhost
18:32:20 <AnMaster> you could start the first as a daemon easily enough
18:32:37 <AnMaster> CakeProphet, it seems sad missing out on easy hot code swap though
18:32:57 <alise> you fail at haskell :(
18:32:59 <CakeProphet> I'm not going to be convinced either way. If I decide on Erlang it will be independently.
18:33:51 <CakeProphet> Haskell wins at parsing and text handling. Haskell can be modified to do all the bells and whistles Erlang would be considered for.
18:34:22 <AnMaster> CakeProphet, except possibly the hot code swapping part, which according to pikhq would be somewhat painful to do in haskell
18:34:37 <CakeProphet> Haskell-coded commands would be able to load in their own Parsec parsers. It would be sweet.
18:34:46 <pikhq> AnMaster: Which is painful to do in literally every language but Erlang.
18:34:46 <CakeProphet> eh. I can do something that's good enough to the same thing
18:34:57 <alise> both of you, stop talking
18:34:59 <alise> pikhq can keep talking
18:35:10 <AnMaster> alise, you forgot the magic word
18:35:18 <pikhq> alise: What for, pray tell?
18:35:22 <alise> btoh of you, stop the fuck talking
18:35:33 <CakeProphet> I'm going to go do something else and maybe return when alise disappears.
18:35:48 <AnMaster> CakeProphet, sounds like a good idea.
18:36:01 <alise> i was joking you know ...
18:36:18 <pikhq> Haskell wins at parsing, is quite good at concurrency, is functional... Only things Erlang's got on it is being distributed and hotloading of code.
18:36:25 -!- DH____ has quit (Read error: Connection reset by peer).
18:37:12 <alise> Nooobody can heeeaaar youuuu :P
18:37:16 <alise> They've all run away because of me
18:37:44 <alise> omg mayan long count calendar dates
18:37:54 <alise> baktun . katun . tun . uinal . kin
18:37:56 <alise> THEY'RE IP ADDRESSES
18:38:10 <alise> it's currently 12 . 19 . 17 . 8 . 12
18:38:20 <CakeProphet> eh, I'm still lurking. I just prefer not to be verbally abused when I speak, even if it isn't really taken seriously.
18:38:28 <alise> quick, someone nmap 12.19.17.8.12
18:38:32 <alise> okay okay so we need one more field
18:38:47 <alise> CakeProphet: The 'fuck' was in response to AnMaster asking for the magic word.
18:38:53 <alise> Not an additional exhortation.
18:39:20 <CakeProphet> alise: it was nothing particularly specific that made me come to that conclusion
18:39:29 <alise> Then I did not verbally abuse you.
18:39:42 <alise> Anyway, I won't be gone for the rest of the day and part of the night, so good luck with that.
18:40:12 <CakeProphet> I could make some crazy functional scripting lang and hotswap that. :)
18:40:19 <alise> Call it "Haskell".
18:41:01 <CakeProphet> I don't think there's any sense way to hot-swap Haskell though. The "copyover" approach is the best though. Because it a) doesn't disconnect anyone b) restarts the server cleanly with the new code.
18:41:25 <alise> "They have the most impressive 1:1 scale model, display cities I have ever seen." -- on North Korea
18:41:45 <alise> "Having actually been to North Korea, I can tell you that the best thing about it is getting to leave afterwards."
18:41:49 <CakeProphet> but get this: it'll be object oriented functional.
18:41:57 <CakeProphet> I mean, naturally, it's a MUD. there's objects everywhere.
18:42:06 <alise> http://i.imgur.com/dn9RY.jpg <-- They did not survive this.
18:42:11 <alise> CakeProphet: objects, A.K.A. closures
18:43:13 <pikhq> Objects can't inherit.
18:43:25 -!- Geekthras has quit (Ping timeout: 265 seconds).
18:43:26 <CakeProphet> oh but I'm sure it can be composed of closures. So why don't I just use machine code then?
18:43:35 <alise> Indeed, in the usual model CLASSES inherit.
18:43:44 <alise> In fact, Alan Kay did not envision inheritance.
18:43:56 <alise> He now resents inheritance quite a bit.
18:44:05 <alise> Inheritance is basically legislated abstraction-breaking.
18:44:19 <alise> Now you're the one being a dick.
18:44:40 <pikhq> IMO, the only defining attribute of "object-oriented programming" is that you have "objects" consisting of data, with the functions contained within closing over the containing object.
18:44:54 <alise> [[One of our guides knew the basic outlines of Michael Jackson's life: "Oh, the guy who was born black and then became white and weird and just died?"]]
18:45:06 <alise> Phantom_Hoover: because your inherited class depends on implementation details of its inheriter
18:45:18 <pikhq> CakeProphet: Yeah, it *is* the single common attribute of all OOP things. :)
18:45:18 <alise> what is the point of OOP? To encapsulate and thus hide implementation details.
18:45:26 <alise> Inheritance: It's the feature of OOP that defeats the point of OOP. Yay!
18:45:34 <alise> THEN, SUDDENLY, Java.
18:45:38 <pikhq> And this can *easily* be done in any functional language with abstract data types.
18:46:00 <CakeProphet> pikhq: how would the methods be done sanely? Dynamic dispatch?
18:46:15 <Phantom_Hoover> So anything with inheritance is defeating the point of OOP?
18:46:31 <CakeProphet> well the thing about that alise is that there are different uses for inheritance.
18:46:36 <alise> Phantom_Hoover: pretty much... purist oop is not very practical, practical oop is not very useful.
18:46:40 <pikhq> CakeProphet: Methods? Those are functions inside the object that close over the object.
18:46:50 <alise> CakeProphet: the only proper form of inheritance is not inheritance, it is COMPOSITION.
18:46:54 <alise> And guess what closures are really good at?
18:47:05 <CakeProphet> and generally implementation details still don't need to be known. Instead you have an abstraction of the "core behavior" of a process which you can proceed to expand on
18:47:31 <alise> some very smart oop people who dislike inheritance and like composition: alan kay, gilad bracha. also, anyone who has ever actually thought about or studied it.
18:47:45 <CakeProphet> pikhq: I meant how would you handle types in Haskell.
18:47:58 <pikhq> CakeProphet: Whaddya mean?
18:48:06 <alise> "Types? Can you do them in Haskell?"
18:48:40 <pikhq> Phantom_Hoover: Sticking two things together to make a new thing.
18:48:42 <alise> Phantom_Hoover: Instead of having a class "be" another class plus some stuff, we have a class contain the class "you inherit from".
18:48:51 <alise> Basically, composition is putting your parent in yourself .... bad terminology.
18:49:00 <alise> It's fussy and awkward to use with existing OOP languages.
18:49:02 <alise> It's easy with closures.
18:49:05 <CakeProphet> I guess I'm just wondering how you could sanely implement all of the OOP functionality in Haskell.
18:49:07 <pikhq> You do this all the *time* in functional programming, and in certain OOP languages.
18:49:07 <alise> But what pikhq said.
18:49:09 <alise> You stick two things together.
18:49:17 <alise> CakeProphet: by using the parts of OOP that are actually decent and useful.
18:49:19 <pikhq> Most sane in Smalltalk and Tcl's SNIT object system.
18:49:56 <CakeProphet> composition is wonky in static typing unless you have a wicked type system (aka not Java)
18:50:46 <CakeProphet> I think the prototype model fits best in a language like Haskell
18:50:46 <alise> CakeProphet: good thing haskell has a wicked type system.
18:50:53 <alise> Phantom_Hoover: clos is conventional oop, it just does conventional oop really well
18:50:55 <alise> still conventional oop
18:50:55 <CakeProphet> you have objects, you can clone objects, and you can clone via composition.
18:50:59 <alise> CakeProphet: no, you don't do that
18:51:05 <alise> there is no cloning
18:51:07 <alise> because there is no mutation
18:51:16 <alise> you instead have constructors, which are basically ... functions returning the object closures
18:51:29 <alise> and then you can tell the object to give you an identical object but with some stuff different
18:51:33 <alise> these are very easily composed, naturally
18:51:42 <alise> you can use pattern matching to handle the messages you want
18:51:57 <pikhq> data SimpleObject = SimpleObject {method1 :: Foo -> Bar; method2 :: Bar -> Baz; bar :: Bar}; newSimpleObject newBar = let this = SimpleObject {method1 = \_-> bar this;method2 = \x->barToBaz;bar = newBar} in this
18:51:58 <alise> then have a wildcard "handle x = mySoCalled'Parent' x"
18:52:05 <pikhq> Bam, a simple object in OOP Haskell.
18:52:40 <Phantom_Hoover> That stems directly from first-class functions, though.
18:52:46 <CakeProphet> but it would be sort of like prototype because there wouldn't technically be a distinction between an object and a class.
18:52:54 -!- DH____ has joined.
18:53:16 <pikhq> CakeProphet: Yes. Classes are a bizzare, bizzare thing.
18:53:37 <pikhq> Whereas just objects are actually a very simple and occasionally reasonable abstraction.
18:54:19 <CakeProphet> pikhq: I think it arises from a) bad type systems b) easier to deal with. if you do everything with objects you either need to consume large amounts of memory storing function pointers or have something like differential inheritance.
18:55:44 <CakeProphet> newObject = (CMyObject ...) `delegatesTo` DelegateObject
18:55:52 <pikhq> CakeProphet: Yeah, most object systems involve large amounts of memory going towards function pointers. :P
18:56:08 * alise writes a good object example in haskell
18:56:30 <pikhq> alise: Hooray, do it better than I!
18:57:17 <CakeProphet> though some operators would be fancy. :>: for delegation. :)
18:58:23 <pikhq> alise: BTW, it seems that dynamically linked binaries *on uclibc* are smaller than statically linked ones pretty consistently.
18:58:39 <CakeProphet> hmmm... would it be reasonable or sane to make Haskell Objects members of State or ST?
18:58:41 <pikhq> And also beat the hell out of glibc's dynamic binaries.
18:59:18 <alise> pikhq: But they art slower and you need kernel support!
18:59:22 <alise> Which makes the kernel bigger!
18:59:40 <pikhq> alise: No kernel support is involved, actually.
18:59:50 <alise> *Main> counter#Value
18:59:50 <alise> *Main> counter#Increment#Value
18:59:50 <alise> *Main> counter#Increment#Decrement#Value
18:59:51 <pikhq> Dynamic linking is done in userspace.
19:00:18 <pikhq> Here's the entire total of kernel support: "interpreter requested; call that with the binary as an argument".
19:00:29 <pikhq> The "interpreter" does all the dynamic linking.
19:00:39 <pikhq> (this is ld-linux.so)
19:01:17 <CakeProphet> I think defining members in OO Haskell should involve simply creating regular Haskell data constructors and then plugging them into the OO constructor
19:01:49 <pikhq> CakeProphet: Dude, you fail.
19:02:14 <alise> counter (Value = 0)
19:02:14 <alise> *Main> counter#Increment#Increment
19:02:14 <alise> counter (Value = 2)
19:02:16 <pikhq> In any sane OO Haskell, there is *no distinction* between members and any other function. Except they happen to close over the right things.
19:02:26 <pikhq> alise: Source code?
19:03:00 <alise> pikhq: http://pastie.org/1020883.txt?key=vnekr3vinecdhfimobgrw
19:03:09 <alise> I'll do functions with arguments now, then some composition.
19:03:29 <Gregor> Another problem with actually installing an operating system on JSMIPS: At present, I maintain the UNIX process abstraction by actually giving each process its own simulator instance :P
19:04:05 <CakeProphet> pikhq: what alise just did is no different than what I was saying.
19:04:08 <alise> pikhq: There are some issues due to restrictions in Haskell; if you want to do an argumenty function you have to do:
19:04:12 <alise> counter' n Modify = \n -> ...
19:04:15 <alise> counter' n Modify n = ...
19:04:17 <CakeProphet> there is the OO handling stuff... and then there is the programmer defined member values.
19:04:19 <alise> which makes pattern matching a bit of a bitch
19:04:23 <alise> and also the Agent stuff is a bit verbose
19:04:26 <alise> but it's just a proof of concept
19:04:35 <alise> I think it reflects well on Haskell's flexibility.
19:04:59 <alise> *Main> (counter#Modify) 3
19:04:59 <alise> counter (Value = 3)
19:05:02 <alise> Gotta make that precedence better.
19:06:15 <alise> Actually, I don't think it's /possible/ to bind tighter than function calls.
19:06:46 <CakeProphet> surely there's a way to do counter#Modify 3
19:06:55 <alise> That would require binding tighter than a function call. :-)
19:07:01 <alise> I could have Modify construct a message...
19:07:26 <alise> *Main> counter#Modify 3
19:07:26 <alise> counter (Value = 3)
19:07:27 -!- ais523 has joined.
19:07:30 <alise> Then (Modify 3) is the message.
19:07:35 <alise> CakeProphet: like that, yeah
19:07:42 <alise> *Main> counter#Modify 3#Value
19:07:45 <alise> ais523: guess what I've invented
19:08:17 <ais523> alise: a purely-functional, statically typed communication mechanism that goes faster than the speed of light?
19:08:24 <alise> ais523: OOP Haskell.
19:08:28 <alise> Well, technically, reinvented for the Nth time.
19:08:30 <alise> But this time it's gooood.
19:08:46 <ais523> heh, I wasn't that far off
19:09:06 <alise> hmm... my objects have no notion of self
19:09:12 <alise> nested where clauses, fuck yeah
19:09:25 <CakeProphet> alise: the nice thing about that setup is you can have functions that return messages.
19:09:33 <alise> which means you can do e.g.
19:09:37 <alise> counter#destroyTheWorld
19:09:45 <alise> so I invented that C# feature that lets you do that, static methods or something
19:09:50 <alise> AND there's a built-in syntactical distinguisher for them!
19:09:54 <alise> why am I such a fucking genius :|
19:10:35 <CakeProphet> alise: I have a feeling typeclasses could be used for great good
19:10:44 <Gregor> I think it's time to BASH in BASH!
19:10:54 <alise> wtf, where clauses only apply to one pattern-matching clause
19:11:54 -!- relet has quit (Read error: Connection reset by peer).
19:12:14 <CakeProphet> alise: perhaps put all of Agents functionality into a typeclass so that "metaobjects" can be programmed. Essentially like classes except better.
19:13:05 <CakeProphet> so then you could have objects implemented as, say, maps that are easy to modify.
19:15:30 <alise> unfortunately you can't do things like
19:15:33 <alise> foo ++ show c#Value ++ bar
19:15:38 <alise> because the precedence is impossible to do like that
19:16:22 <alise> *Main> talker "alise" # Speak "Hello, world!"
19:16:23 <alise> "Hello, world!", said alise.
19:16:37 <alise> *Main> talker "alise"
19:16:37 <alise> *Main> talker "alise" # Name
19:17:37 <Gregor> Well ... that was bizarrely easy ...
19:17:56 <CakeProphet> alise: this is why I should make a scripting language that makes everything syntatically convenient.
19:18:06 <alise> Gregor: What was? Mating with an android?
19:18:24 <Gregor> No, that was a long time ago.
19:18:37 <alise> Bashing an android while mating with it?
19:19:18 <Gregor> Damn. Well, it built :P
19:21:30 <Phantom_Hoover> alise, isn't substituting for missing full stops at the end of a post a little unnecessary?
19:21:44 <CakeProphet> alise: here's an idea. You could syntatically lift functions into OO land. Similar to $ but with different precedence.
19:21:51 <alise> http://ed.fnal.gov/projects/scientists/amanda.html <-- A visit to Fermilab caused Amanda's impression of a scientist to change from a smart, thin woman in a lab coat who gets into the Guiness World Book of Records... into something that anyone can be, especially if you're a chubby man with a beard.
19:21:57 <alise> Well, that sure improved her image of scientists!
19:22:52 <alise> ALL THE BEFORE IMAGES AND DESCRIPTIONS ARE AWESOME AND THE AFTER ONES ARE BORING
19:22:55 <alise> WHAT HAVE YOU DONE TO THESE KIDS
19:23:38 <Phantom_Hoover> I wonder what their impressions of computer people are?
19:24:59 * Sgeo_ cries at Chrome's lies
19:25:09 <Phantom_Hoover> Also, I don't think geomview is very good for N-E rendering.
19:26:23 <CakeProphet> it's hard for an IRC bot to understand such things.
19:27:04 <CakeProphet> Phantom_Hoover: if by weird you mean awesome, then yes, I agree.
19:27:38 <CakeProphet> dialecting looks so much fun, but languages have terrible support for it.
19:28:15 <alise> Ugh, I've had another problem with self.
19:28:20 <alise> | msg <- Increment = self#Modify 1
19:28:20 <alise> | msg <- Decrement = self#Modify (-1)
19:28:20 <alise> where self = Agent (counter' n)
19:28:26 <alise> This even looks like nicer syntax than the pattern matching.
19:28:32 <alise> And lets us use self over multiple clauses.
19:28:36 <alise> pikhq: So, it's good, right?
19:28:44 <CakeProphet> OO isn't meant for Haskell. or perhaps OO isn't meant to be used, maybe this is what Haskell is telling us.
19:28:52 <alise> pikhq: It utilises GADT pattern matching changing the type, and thus you have to use proper pattern matching.
19:29:00 <alise> CakeProphet: no, Haskell just wasn't DESIGNED for OOP :P
19:29:02 <alise> I can get this working
19:29:05 <AnMaster> <pikhq> Objects can't inherit. <-- have you ever heard about prototype based OOP?
19:29:05 <alise> just a few minor niggles
19:29:16 <alise> that's not inheritance.
19:29:20 <pikhq> alise: Not bad at all.
19:29:30 <alise> pikhq: not bad except it can't work for the reasons I stated
19:29:40 <CakeProphet> let's give it a better name than that though...
19:29:41 <alise> CakeProphet: you don't need to use layout in haskell
19:29:48 <alise> you can just use {, } and ;
19:29:59 <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
19:31:01 <EgoBot> I am tted Kennedy Queen of France.
19:31:18 <AnMaster> <alise> that's not inheritance. <-- when you construct a new object based on another it does inherit it in a sense
19:31:50 <AnMaster> alise, so in which sense does in not inherit? Presumable there is some vital aspect of your definition of inheritance that I'm missing.
19:32:08 <alise> It's extension, not inheritance.
19:32:11 <alise> Standard OOP terminology.
19:32:32 <AnMaster> alise, hm okay. But what exactly makes something inheritance then.
19:32:52 <alise> !postmodern the future Asphalt walked out onto the pavementplace, the globe redefined his extrapolatorymusings; why was this "Sinister prescenses are at force..." bothering him? Sinister prescenses are at force ... and it was bothering him ... Asphalt . . .
19:32:53 <EgoBot> tted Kennedy future Asphalt walked out onto tted Kennedy pavementplace, tted Kennedy globe redefined his semiotically extrapolatorymusings; why was semiotically this semiotically "Sinister prescenses are at force..." bothering foucault? Sinister prescenses are at force ... and the semiotic object was semiotically bothering foucault ... Asphalt . . .
19:33:24 <alise> Tted Kennedy semiotically foucalted.
19:33:30 <alise> AnMaster: pretty much
19:34:12 <AnMaster> alise, hm. It would make perfect sense to call extension "inheritance" though. and the other way around as well come to think of it.
19:34:53 <alise> Uh oh, I need GADT inheritance here.
19:34:59 <alise> pikhq: I'm about to introduce typeclasses into the mix. Why god why.
19:35:19 <CakeProphet> !haskell main = do { len <- pick [2..10]; mapM_ putStrLn $ replicateM len $ pick ['A'..'Z'];} where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
19:35:43 <CakeProphet> !haskell main = do { len <- pick [2..10]; mapM_ putStrLn $ replicateM len $ pick ['A'..'Z'];} where pick a = System.Random.randomRIO (0, length a - 1) >>= return . (a !!)
19:35:47 <alise> Jesus christ I'm a fucking lunatic.
19:36:54 <CakeProphet> !haskell import System.Random; main = do { len <- pick [2..10]; mapM_ putStrLn $ replicateM len $ pick ['A'..'Z'] } where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
19:37:11 <alise> type Handler t = forall msg a. (Message t msg) => msg a -> a
19:37:11 <alise> newtype Agent t = Agent (Handler t)
19:37:14 <alise> pikhq: ^ WHY GOD WHY
19:38:58 <alise> {-# LANGUAGE RankNTypes, TypeSynonymInstances, MultiParamTypeClasses, FlexibleContexts, GADTs #-}
19:39:14 <alise> , UndecidableInstances, TuringCompleteTypeSystem, UndecidableCompilation, ...
19:39:18 <AnMaster> <alise> Jesus christ I'm a fucking lunatic. <-- I completely agree! ;P
19:39:30 <AnMaster> alise, anyway what are you doing?
19:39:34 <alise> ..., SolveDiophantineEquationsInTheTypeSystem, ...
19:39:41 <alise> AnMaster: OOP Haskell.
19:39:54 <alise> AnMaster: The GOOD parts of OOP.
19:39:58 <alise> Actually, it's working quite well!
19:40:36 <AnMaster> alise, you should do it C++ style. Just because. I mean, if there is that "{} in python" hack then "C++ OOP in haskell" also deserves a place
19:40:38 <CakeProphet> !haskell import System.Random; main = do { len <- pick [2..10]; liftM putStrLn $ replicateM len $ pick ['A'..'Z'] } where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
19:41:06 <alise> AnMaster: I did one of those {} in Python hacks! :P
19:41:19 <CakeProphet> !haskell import System.Random; import Control.Monad; main = do { len <- pick [2..10]; liftM putStrLn $ replicateM len $ pick ['A'..'Z'] } where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
19:41:41 <CakeProphet> !haskell import System.Random; import Control.Monad; main = do { len <- pick [2..10]; mapM_ putStrLn $ replicateM len $ pick ['A'..'Z'] } where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
19:42:42 <CakeProphet> !haskell import System.Random; import Control.Monad; main = do { len <- pick [2..10]; putStrLn =<< (replicateM len $ pick ['A'..'Z']) } where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
19:43:20 <CakeProphet> !addinterp simpleacro haskell import System.Random; import Control.Monad; main = do { len <- pick [2..7]; putStrLn =<< (replicateM len $ pick ['A'..'Z']) } where pick a = randomRIO (0, length a - 1) >>= return . (a !!)
19:43:20 <EgoBot> There is already an interpreter for simpleacro!
19:43:55 <AnMaster> <alise> AnMaster: I did one of those {} in Python hacks! :P <-- okay then you should do C++ style templates in haskell. Just because.
19:44:31 <alise> that's not what templates are
19:44:35 <alise> typeclasses are close
19:45:35 <CakeProphet> technically you could typesafe macros because the type of an unevaluated expression can be considered the same as the evaluated one.
19:46:29 <CakeProphet> because macros would expand at compile-time, and thus be type safe anyways.
19:46:40 <alise> pikhq: Help me debug this >_>
19:47:39 <CakeProphet> alise: hmmm, you could make method dispatch a typeclass operation.
19:47:52 <alise> CakeProphet: close to what i am doing
19:48:06 <alise> class Message (t :: *) (msg :: * -> *)
19:48:06 <alise> type Handler t = forall msg. (Message t msg) => forall a. msg a -> a
19:48:06 <alise> newtype Agent t = Agent (Handler t)
19:48:06 <alise> (#) :: (Message t msg) => Agent t -> msg a -> a
19:49:07 <alise> Wow, Aung San Suu Kyi has actually been the Prime Minister-elect of Burma since 1990.
19:52:23 <alise> pikhq: OK, this inheritance idea is fucked up.
19:55:22 <Gregor> Well, bash fails in a really weird and confusing way.
19:55:31 <alise> Your country assaulted a Guardian reporter.
19:55:35 <alise> This cannot be forgiven.
19:55:49 <alise> We are no longer friends.
19:56:11 <alise> The Toronto police apparently decided that instead of arresting the rioters, they'd do this to a Guardian reporter:
19:56:11 <Gregor> AnMaster: I run bash -l, I type 'ls' and hit enter, then it shows ">" like it was waiting for me to finish a string literal. When I press ', it alerts, when I press " it doesn't help.
19:56:15 <alise> "Two officers held him a third punched him in the stomach. The man collapsed. Then the third officer drove his elbow into the man's back."
19:56:28 <alise> Because, you know: that's easier.
19:56:42 <AnMaster> Gregor, 'ls' with or without quotes?
19:56:48 <AnMaster> Gregor, also what does the -l switch to bash do?
19:56:55 <Gregor> AnMaster: Makes it a login shell.
19:57:20 <AnMaster> Gregor, bash -l works for me. typing ls and hitting enter works
19:57:34 <AnMaster> Gregor, bash -l displays my normal prompt though
19:58:08 <AnMaster> Gregor, I thought this happened on your normal system. Why didn't you say it was JSMIPS
19:58:10 <Gregor> I'm not claiming that bash is just broken :P
19:58:11 <alise> http://ed.fnal.gov/projects/scientists/kevin.html Scientists are slightly less green than beforehand.
19:58:18 <Gregor> Because of course it was JSMIPS! :P
19:58:35 <AnMaster> Gregor, how should I know, I thought you were currently out taking photos for zee!
19:58:43 <alise> http://ed.fnal.gov/projects/scientists/pat.html XD
19:58:59 <alise> http://ed.fnal.gov/projects/scientists/andy.html Scientists have pointy heads now
19:59:06 <alise> Also they are more sinister and evil rather than just evil
19:59:26 <alise> http://ed.fnal.gov/projects/scientists/michael.html When I went to Fermilab, I found out that all scientists lean sideways.
19:59:36 <AnMaster> alise, visit to Fermilab hm. Well the ones before looks like chemists. the ones after look like physicists or compsci
19:59:58 <alise> http://ed.fnal.gov/projects/scientists/dand.html I found out that not all scientists have horribly mangled arms.
20:00:05 <alise> Also, they grin really creepily.
20:00:49 <alise> http://ed.fnal.gov/projects/scientists/ashley.html wat
20:01:09 <alise> http://ed.fnal.gov/projects/scientists/ashlee.html On the other hand, when *I* went to Fermilab I found out that scientists do not lean sideways, as I previously thought.
20:01:26 <alise> http://ed.fnal.gov/projects/scientists/kierman.html Scientists actually dislike sienceshirtco.com.
20:01:26 <AnMaster> alise, don't blame them because they can't draw
20:01:41 <alise> http://ed.fnal.gov/projects/scientists/katie.html The one on the right actually contains beer.
20:02:00 <alise> http://ed.fnal.gov/projects/scientists/dans.html I thought scientists were awesome, but then it turned out they're just boring.
20:02:02 -!- CakeProphet has quit (Ping timeout: 276 seconds).
20:02:06 <alise> *actually just boring.
20:02:09 <AnMaster> alise, you don't need to spam every page, they are linked internally
20:02:14 <Phantom_Hoover> That reminds me of the Look Around You episode with the test-tube full of teat.
20:02:16 <alise> I'm only spamming the funny ones.
20:02:25 <alise> http://ed.fnal.gov/projects/scientists/jesse.html SCIENTISTS ARE RADIOACTIVE
20:02:34 <alise> this is the only one that got more awesome
20:02:36 <alise> good on you, jesse
20:02:53 <alise> no wait, that could also be jesus
20:03:15 <alise> http://ed.fnal.gov/projects/scientists/jeffrey.html He's sticking his middle finger up at the sun.
20:03:15 <AnMaster> alise, you know scientists who aren't chemists or biologists don't usually look like chemists.
20:03:18 <alise> He did not sleep last night.
20:03:21 <AnMaster> however in the public image they do
20:03:26 <AnMaster> alise, that explains a lot I think
20:03:26 <alise> AnMaster: you are being very dim and boring.
20:03:36 <AnMaster> alise, dim? how so? Boring: yes probably
20:03:39 <alise> http://ed.fnal.gov/projects/scientists/james.html Scientists are actually Atlas.
20:03:46 <alise> And don't have capes, or log books.
20:03:54 <oklopol> "* AnMaster ponders a matrix based esolang." <<< given a set of matrices it is undecidable whether there's a product of them that evaluates to 0, you can reduce pcp to this problem
20:03:56 <alise> They just hold the world up while standing on a comic frame.
20:04:06 <alise> oklopol: undecidable isn't very practical for computing :-D
20:04:28 <AnMaster> oklopol, undecidable hm? also which one is pcp?
20:04:46 <alise> I want a lab coat so bad.
20:04:57 <oklopol> AnMaster: you have two morphisms and you try to find a word whose image is the same in both
20:04:57 <alise> And a completely-white lab filled with computers and awesome sciency-looking machines.
20:05:08 <alise> Phantom_Hoover: but I want an awesome tailored one to make sure that it's just slightly too big for me
20:05:19 <Phantom_Hoover> Someone at my school got a new Casio, and I am now suffering for severe calculator envy.
20:05:25 <alise> I want to drink coke out of a test tube xD
20:05:29 <AnMaster> alise, I have not seen anyone at university in a lab coat, but the chemistry department is at the other end of the campus
20:05:29 <oklopol> that is, you have pairs of strings, and you try to find a sequence of these pairs such that both sequences (left-sequence and right-sequence) give you the same string
20:05:44 <Phantom_Hoover> I *used* to have one of the ones that basically had a small CAS in them.
20:05:57 -!- Gregor has quit (Ping timeout: 252 seconds).
20:06:01 <Phantom_Hoover> But I left it behind at summer, and I was kicked out of the school later that day.
20:06:06 <AnMaster> oklopol, hm okay, don't think I heard of that one before
20:06:13 <alise> Phantom_Hoover: For being excessively sciencey?
20:06:21 <oklopol> alise: well i mean that implies you can make a tm run, at least in the sense that in any product that evaluates to zero there must've been a run of the tm. i don't know how a language could be made out of this, but surely somehow :)
20:06:26 <AnMaster> oklopol, what is the full name for it? I assume pcp is an abbrev. Since googling it turns up lots of unrelated thins
20:06:31 <alise> AnMaster: pcp theorem
20:06:34 <oklopol> AnMaster: post correspondence
20:06:39 <alise> http://en.wikipedia.org/wiki/PCP_theorem
20:06:55 <alise> i assumed computational complexity would be relevant
20:07:01 <alise> http://en.wikipedia.org/wiki/Post_correspondence_problem
20:07:07 -!- ais523_ has joined.
20:07:45 -!- ais523 has quit (Disconnected by services).
20:07:48 -!- ais523_ has changed nick to ais523.
20:07:52 <alise> In 2002, under the influence of PCP, rapper Big Lurch murdered a female acquaintance, and ate parts of her body.
20:07:58 <alise> mathematics is bad for you
20:08:01 <oklopol> (two of our profs on that page, isn't that just so cool)
20:08:47 <oklopol> i read "big lunch", that would've fit better
20:09:14 <oklopol> hirvensalo does quantum computation mostly
20:09:37 <AnMaster> oklopol, "Ruohonen" looks more Finnish than "hirvensalo" to me
20:09:44 <AnMaster> checking that ref list that is
20:10:04 <alise> hirvensalo is def. more finnishy
20:10:27 <alise> the cosmological constant is 7
20:10:27 <oklopol> i actually once tried to read that exact paper
20:10:49 <oklopol> yes, at least was back then
20:11:31 <alise> "The law is this: every odd-numbered Star Trek movie is dreck. Every even-numbered Star Trek movie is terrific. This Law - the subjectivity of movie criticism notwithstanding - held up perfectly for decades."
20:12:08 <AnMaster> alise, I'm not quite sure I believe that.
20:12:13 <alise> http://qntm.org/odd
20:12:24 <alise> It's completely true if you count Galaxy Quest between Insurrection and Nemesis.
20:12:36 <alise> Still, all the films up to Nemesis in 2002 work fine even without the obviously sound inclusion of Galaxy Quest.
20:12:48 <alise> Phantom_Hoover: by including Galaxy Quest, Nemesis is marked as bad and 2009 is marked as good as it should be.
20:12:52 <alise> Beforehand, Nemesis was marked as good and 2009 as bad.
20:13:00 <alise> Therefore, Galaxy Quest is a Star Trek film.
20:13:15 <AnMaster> alise, I don't remember galaxy quest?
20:13:18 <alise> http://en.wikipedia.org/wiki/Galaxy_Quest
20:14:07 <alise> It almost universally sucks.
20:14:46 <alise> I haven't actually read The Culture series, I really should...
20:15:32 <alise> Yeah, don't do that.
20:15:47 <alise> Should I read them in chronological or publication order?
20:15:56 <alise> I don't want to skip any of them, so don't suggest that.
20:16:22 <oklopol> i want a cartoon that teaches topological dynamics to children
20:16:57 <Phantom_Hoover> I read it in something like Consider Phlebas → Use of Weapons → The State of the Art → The Player of Games → Matter → Excession
20:17:03 <oklopol> there are ones for history and shit, why not math
20:17:09 <alise> I either want to read it in chronological or publication order. :P
20:17:22 <oklopol> actually i think i heard about some retarded cartoon where numbers tried to build their way up to infinity or something
20:17:23 <alise> Or, failing that, the order in which I can read it and not think "What's that? That hasn't been introduced yet...".
20:17:33 <Phantom_Hoover> And chronological and publication order are the same in nearly all cases.
20:18:02 <Phantom_Hoover> The State of the Art was published before anything else IIRC.
20:18:13 -!- Gregor has joined.
20:18:19 <alise> No, Consider Phlebas.
20:18:36 <alise> Consider Phlebas is 1987; The State of the Art, 1991.
20:19:11 <alise> Also, where does Inversions fit in, considering it is not /explicitly/ in the same universe?
20:19:39 <alise> Consider Phelbas was the first.
20:19:51 <alise> What eponymous story? One included in The State of the Art?
20:20:07 <alise> God, it'd be easier reading Finnegans Wake.
20:20:19 <Phantom_Hoover> It is frequently recommended that you read The Player of Games first, though.
20:21:02 <Sgeo_> alise, did you hear about the time I chose visual effects over nostalgia?
20:21:04 <alise> Ah, the State of the Art contains two Culture stories and one Culture novella.
20:21:12 <alise> Should I read the rest in it, or just the Culture ones?
20:21:15 <alise> Sgeo_: yes, you said that a day ago.
20:21:25 <Sgeo_> Oh. That's why I asked.
20:21:32 <Sgeo_> And I don't think it was a day ago
20:21:41 <Phantom_Hoover> Anyway, you're recommended to read TPOG first because CP isn't set in the Culture and doesn't explain things.
20:21:45 <Sgeo_> I keep thinking a week ago
20:21:59 <Sgeo_> No, it was yesterday >.>
20:22:21 <alise> Consider Phlebas isn't set in the Culture?
20:22:47 <alise> Surely it's easy to read it first, if he published it without any context about the Culture being available to anyone...
20:23:16 <Gregor> AnMaster: Same as it was a couple days ago? :P
20:23:53 <Phantom_Hoover> But this was primarily because the bookshops conspire against mme.
20:23:55 <alise> Also, should I avoid reading The Algebraist for reasons of sheer confusion?
20:24:30 <alise> cheater99: you just referenced contemporary pop music in a meeting of classical music fans
20:24:36 <alise> cheater99: congrats!
20:24:42 <alise> Phantom_Hoover: Yes, precisely.
20:24:47 <AnMaster> Gregor, figured out the bug causing bash to mess up that way?
20:24:48 <alise> Phantom_Hoover: How much stuff can my mind take at once? :P
20:24:52 <AnMaster> Gregor, and did you update the demo yet?
20:25:07 <Gregor> AnMaster: Haven't even tried. You mean system.html? Not with bash, but with all the speed fixes as of yesterday.
20:25:20 <cheater99> alise: hey, i'm listening to a classical concerto right now, btw, it's pretty good
20:25:24 <AnMaster> Gregor, will try it in a few minutes then
20:25:26 <Gregor> I guess I could install GNU coreutils on it.
20:25:30 <Phantom_Hoover> alise, you might want to leave it until later, though.
20:25:33 <alise> cheater99: i mean by referencing star trek
20:25:49 <cheater99> alise: are you bad mouthing star trek?
20:25:51 <alise> we're discussing actual sci-fi :P
20:25:54 <alise> i like star trek a lot
20:25:56 <alise> but it's hardly sci-fi
20:25:59 <alise> more like "tech"-fi
20:26:11 <alise> firstly, stop saying wat
20:26:16 <alise> secondly, read what everyone is saying
20:26:30 <AnMaster> Gregor, "Urgent Socket Condition" ?
20:26:36 <cheater99> and said hello, I am Locutus of Borg.
20:26:36 <AnMaster> Gregor, why the heck did ls say that
20:26:39 <alise> [[As for what the Culture is: well, keep in mind that although there are
20:26:40 <alise> no plot spoilers here it will alter the impact of CONSIDER PHLEBAS
20:26:40 <alise> advocated by the "read-CONSIDER PHLEBAS-first" faction.]]
20:26:44 <alise> Factions? Oh, jesus christ.
20:26:47 <Gregor> AnMaster: That's a bug I fixed this morning :P
20:26:50 <cheater99> ohhh Locutus, we don't like your kind here
20:26:51 <alise> YOU GUYS HAVE FACTIONS ABOUT WHICH ORDER TO READ THE BOOKS IN.
20:27:00 <Gregor> AnMaster: waitpid wasn't setting status at all, so if it used status, then it would get a weird result.
20:27:13 <alise> This is frequently recommended, at least to the extent of "Read
20:27:13 <cheater99> because you can't accept Locutus of Borg for who he is can you alize
20:27:13 <alise> CONSIDER PHLEBAS first," because there are low-level spoilers for
20:27:13 <alise> CONSIDER PHLEBAS in the other books, to the extent that you know more
20:27:13 <alise> about the Culture than you otherwise would.
20:27:20 <AnMaster> Gregor, wth what will be noticable faster now?
20:27:21 <cheater99> you have to be hating all the time haven't you
20:27:26 <alise> This is the order in which I read the books. I wasn't terribly
20:27:26 <alise> impressed by CONSIDER PHLEBAS, and generally recommend the other order
20:27:29 <alise> OH FOR FUCK'S SAKE
20:27:37 <alise> Phantom_Hoover: did consider phlebas "terribly impress" you when you read it first?
20:27:54 <AnMaster> Gregor, cat dir.php is just as slow
20:28:02 <Gregor> AnMaster: vim for example. Depending on your browser, it could be usable. Note that LOAD time is still really slow, but RUN time is fast. And vt100 is no faster.
20:28:03 <alise> "this is because PLAYER OF GAMES is, in
20:28:03 <alise> the opinions of those who recommend this order, a better book" ;; I don't care about goodness if I'm taking this undertaking!
20:28:17 <alise> Phantom_Hoover: One thing, though.
20:28:23 <alise> Wikipedia says the publication order is "almost" chronological.
20:28:34 <alise> What is the actual chronological order? Does it involve reading parts of The Player of Games at different times?
20:28:45 <cheater99> i might be helping make an art installation
20:29:09 <Gregor> AnMaster: It doesn't report the fact that it's a read-only filesystem properly :P
20:29:13 <Phantom_Hoover> alise, I'm not totally sure where Look to Windward fits in, since I haven't read it.
20:29:20 <alise> They're... adapting the Culture to film.
20:29:22 <alise> How does that even work?
20:29:23 <AnMaster> Gregor, oh, you could have a ramfs in the client
20:29:30 <cheater99> you get wet when you think of me programming the zuse z1
20:29:32 <AnMaster> Gregor, also it should have said file not found or such
20:29:37 <alise> Phantom_Hoover: Yes, but...
20:29:39 <AnMaster> Gregor, since ls listed a file called bar
20:29:43 <alise> Phantom_Hoover: Wouldn't visualising it destroy it? :P
20:29:51 <AnMaster> Gregor, not very read only thus
20:29:56 <Gregor> AnMaster: Good lord, this is a fucking MIPS simulator in JavaScript, how about you be a LITTLE bit more lenient on the fact that not every syscall is emulated
20:30:10 <alise> Phantom_Hoover: "Here is the thing that you cannot possibly imagine."
20:30:33 <Phantom_Hoover> At least A Gift From the Culture doesn't actually feature the Culture in it.
20:31:14 <AnMaster> Gregor, but I thought it said when it wasn't supported?
20:31:21 <AnMaster> Gregor, like it does right at the start
20:31:21 <Phantom_Hoover> There's only one big special-effecty scene in it, and it's not hugely groundbreaking.
20:31:23 <alise> Phantom_Hoover: Is "A Gift From the Culture" in TSOTA?
20:31:36 <alise> *A Gift of the Culture, also.
20:31:43 <alise> So what is the chronological ordering of:
20:31:45 <alise> A Gift of the Culture
20:31:49 <alise> The State of the Art?
20:31:58 <alise> Do they all take place right after another in some order, or are they intermingled?
20:32:00 <alise> Phantom_Hoover: Gah!
20:32:15 <alise> Okay, what's the best order to read them in? In the order they appear in TSOTA, after Use of Weapons?
20:32:55 <Phantom_Hoover> And the other Culture short story is set at the time of CP.
20:33:09 <alise> ... so TSOTA should go after use of weapons so as not to spoil it, okay.
20:33:21 -!- oerjan has joined.
20:33:24 <alise> Phantom_Hoover: Does it contain the minor spoilers from the other books, though?
20:33:29 <Phantom_Hoover> The only continuity is a throwaway remark Sma makes in UOW.
20:33:30 <alise> i.e., will I want some Culturey background to read it?
20:33:45 <Gregor> AnMaster: Depends on the command.
20:33:50 <Phantom_Hoover> Like I said, there isn't really much continuity between books.
20:33:50 <alise> Right. So reading The State of the Art before Use of Weapons would definitely be a bad idea?
20:34:05 <Gregor> AnMaster: It doesn't always say it's unsupported, it just sets errno properly, so the command has to actually check. A lot of the heirloom commands never check errno.
20:34:11 <Phantom_Hoover> There are lots of references to CP, and Matter has a spoiler for Excession.
20:34:19 <alise> "The State of the Art" is a longish novella, set in Iain M. Banks'
20:34:19 <alise> popular 'Culture' universe. It was first published in a slim volume
20:34:19 <alise> entitled "The State of the Art," in 1989 by Mark V. Ziesing, an
20:34:19 <alise> American small press, ISBN 0-929480-06-6. In 1991, Orbit (a UK
20:34:19 <alise> publisher) brought out a volume also entitled "The State of the Art."
20:34:20 <alise> This contains the aforementioned novella, plus seven short stories, one
20:34:22 <alise> of which ("A Gift from the Culture") is also set in the "Culture"
20:34:24 <alise> universe. ISBN 0-356-19669-0. It has had both hardback and paperback
20:34:30 <alise> of them were set in the Culture?
20:34:43 <AnMaster> Gregor, no one does if they don't expect failure
20:34:45 <alise> Phantom_Hoover: Is it recommended to read the other stories in The State of the Art at the same time, or not?
20:34:58 <Gregor> AnMaster: Well too bad for them then :P
20:35:06 <AnMaster> Gregor, I mean, some things are unlikely to fail. close() is one that might but most people expect won't, just as an example
20:35:31 <Phantom_Hoover> If you consider the way the Idiran War ends a spoiler, read CP first, and read Excession before Matter
20:35:35 <Gregor> AnMaster: Even if close() does fail, it's usually not a big deal.
20:35:42 <AnMaster> Gregor, heck man 2 close says "Not checking the return value of close() is a common but nevertheless serious programming error."
20:35:43 <alise> Phantom_Hoover: CP will definitely come first. (hurrr alternate interpretations hur hur)
20:35:46 <oerjan> <Phantom_Hoover> Can you extend Gaussian curvature into 3 dimensions?
20:35:53 <Phantom_Hoover> I didn't read Excession first, and I still thought it was brilliant.
20:36:21 <AnMaster> Gregor, hm... "It is quite possible that errors on a previous write(2) operation are first reported at the final close().Not checking the return value when closing the file may lead to silent loss of data. This can especially be observed with NFS and with disk quota."
20:36:36 <oerjan> given that general relativity uses (albeit minkowskian) curvature in 4, i should assume so. that doesn't mean i know how, probably tensors like with general relativity.
20:36:46 <Gregor> AnMaster: Also with JSMIPS :P
20:36:48 <alise> Phantom_Hoover: My dilemma stated more clearly: http://pastie.org/1020958.txt?key=3y6yazvffvltauzv0dyqcw
20:37:24 <Sgeo_> What is the program supposed to do in that situation? Try, try, try again?
20:38:06 <alise> Phantom_Hoover: You cannot data it?
20:38:15 <alise> What about Descendant?
20:38:47 <alise> Phantom_Hoover: Also, shouldn't the novella come between The Player of Games and Use of Weapons?
20:38:52 <alise> That would be the publication order.
20:39:02 <AnMaster> Phantom_Hoover, it would be fun to write two books that contain spoilers for each other
20:39:16 <AnMaster> people would have problems figuring out which one to read first if you publish both at the same time
20:39:18 <alise> Phantom_Hoover: Eh?
20:39:39 <oerjan> Phantom_Hoover: ^ (not really helpful though)
20:40:02 <Phantom_Hoover> TSOTA fits differently into the chronology than to the publication date.
20:40:05 <AnMaster> alise, I assume it takes place in time both before and after some other book
20:40:14 <AnMaster> that is what he means with spread out I guess
20:40:16 <alise> Phantom_Hoover: fffff
20:40:21 <alise> Phantom_Hoover: What the fuck are you doing to me, Iain M. Banks
20:40:22 <AnMaster> it would be a sensible interpretation at least
20:40:50 <alise> I NEVER HEARD OF THAT.
20:40:55 <alise> WHERE THE FUCK IS THAT
20:41:14 <alise> Phantom_Hoover: dude
20:41:19 <alise> Odd Attachment isn't in the Culture universe
20:41:29 <alise> A Gift of the Culture and Descendant are
20:42:24 <alise> Phantom_Hoover: then why did you say that >_<
20:43:28 <alise> So, where is the State of the Art novella chronologically? Publication-wise, it's in-between The Player of Games and Use of Weapons.
20:44:26 <alise> But is it good to read it in that order, or should I really read UOW right after TPOG?
20:44:42 <alise> I am obsessive about this shit
20:44:45 <alise> gimme an answer :D
20:45:11 <alise> That is ... two answers.
20:45:20 <alise> also, I think I'll read all the state of the art short stories in one go, chronologically; it's only the novella I'm concerned about.
20:47:09 <alise> I don't flip coins, I need some shred of reasoning no matter how vague, dammit! :(
20:47:21 <alise> Okay, so UOW references TSOTA.
20:47:29 <alise> And TSOTA doesn't spoil anything for UOW? Not necessarily details
20:47:31 <alise> But, like, the impact
20:47:58 <alise> And did you read all the short stories in TSOTA in order, even the irrelevant ones?
20:48:03 <alise> If so, I'll just read them like that, skipping the novella.
20:48:10 <alise> Which should work great, right?
20:48:18 <alise> Since TSOTA is just a compilation that happens to include the previously-published novella.
20:48:31 <alise> So when the short stories were organised, presumably they were organised in a good reading order, with TSOTA chucked in there.
20:48:54 <alise> http://pastie.org/1020971.txt?key=0um6qkke7gm7x9w5xmunba
20:49:04 <Phantom_Hoover> I haven't read Look to Windward, so I'm afraid I don't know where it fits in.
20:49:24 <alise> Wikipedia says that the publication order is almost chronological; I'm going to assume that the only hiccup is with TSOTA.
20:49:49 <alise> LTW is a loose sequel to CP, references Excession (so it's definitely after Excession).
20:50:10 <alise> Matter is set chronologically latest, IIRC.
20:51:03 <alise> Matter is definitely last, I think.
20:51:16 <alise> And LTW is definitely after Excession, which provides the ordering: Excession, Inversions, Look to Windward, Matter.
20:51:22 <alise> Since I'm pretty sure you should read Inversions after Excession.
20:52:51 <alise> Inversions is only implicitly in the Culture universe, and is set on a late-Middle Ages Europe-esque planet.
20:53:11 <alise> With some aliens, apparently; implied to be from the Culture, I think.
20:53:29 <alise> I'm just Wikipediaing this. :P
20:53:38 <alise> But anyway, it was published after Excession and is otherwise irrelevant, so it sounds good.
20:54:06 <alise> I already know some spoilers, i.e. what the Culture is.
20:54:13 <alise> But the others seem to have leaked out of my head.
20:54:31 <alise> I know that they name their ships funny things, live very long lives, there's these mind things, etc.
20:54:34 <alise> But not anything deeper than that.
20:54:40 <alise> Anyway, I think it'd be nice to have a more low-key, slower plot like Inversions to take a break after things like Excession.
20:54:45 <alise> So Inversions is staying there.
20:56:55 * alise tries to come up with a language whose entire interpretation consists of finding some value that satisfies some constraint.
20:57:25 <alise> you input integers a, b, and c and it tries to find n such that "a^f(b,n) - c > g(c) + n^a" or something.
20:57:31 <alise> And this happens to be Turing-complete, somehow.
20:57:42 <alise> Like, if there's no solution it loops forever, otherwise it finds one in finite time.
20:57:43 <ais523> alise: Clue's like that, but for finding functions
20:57:53 <alise> And then some sort of output on the process of trying to solve it to do output.
20:57:57 <ais523> that is, oklopol's clue
20:58:06 <ais523> anyway, Diophantine equations work like that
20:58:13 <alise> yes, but they're undecidable
20:58:32 <ais523> it's undecidable whether there's a solution, just like it's undecidable whether a TC program terminates
20:58:43 <alise> well, that's boring, diophantine equations are too general
20:58:49 <ais523> normally, "undecidable" = TC, "uncomputable" = above-TC
20:58:52 <alise> the input parameters should be simple, like a matrix (oklopol spurred this idea) or some integers or something
20:59:33 <Phantom_Hoover> Hey, now that the maths nerds are here, can anyone answer my question on the 3-body problem?
21:00:14 <alise> It's approximated when required.
21:00:25 <Phantom_Hoover> Thus implying that the universe doesn't run on a Turing machine?
21:00:44 <alise> Maybe it is solvable with, say, brute force or something.
21:00:48 <ais523> Phantom_Hoover: the Universe may also be an approximation
21:01:06 <ais523> although, that's Wolfram's theory, and nobody really believes him
21:01:24 * oerjan wouldn't know without wikipeding
21:01:37 <alise> Phantom_Hoover: well it could be /very/ precise
21:01:45 <ais523> Phantom_Hoover: I doubt it, it's rarely possible to tell you're in an approximate universe if you're approximate yourself
21:01:45 <alise> after all, the universe-computer can take as long as it wants for a single planck time
21:01:56 <alise> we couldn't measure its inaccuracy
21:01:57 <ais523> it'd look much the same as quantum uncertainty
21:02:03 <alise> because our instruments would have to be accurate enough
21:02:06 <alise> which they aren't, by definition
21:02:22 <alise> Phantom_Hoover: a far more deeper inaccuracy than that
21:02:24 <ais523> and besides, if Newton's laws of gravity are wrong, the actual laws might be computable even if our current approximations aren't
21:02:35 <ais523> Phantom_Hoover: err, build a Turing machine for me and I'll get back to you on that
21:02:36 <alise> Phantom_Hoover: consider memory bits flipping; does that mean finite state machines don't work in this universe?
21:02:38 <alise> no, it just means they're unreliable
21:02:47 <alise> we have no actually reliable machines or computers in this universe.
21:02:55 <alise> so indeed: turing machines don't work.
21:02:59 <alise> nor do finite state automata.
21:03:04 <alise> or any computer, device or thing.
21:03:14 <alise> ais523: I love the idea of a universe that uses incredibly high-precision floating point.
21:03:26 <alise> "This particle has a mass of... ?!?!... NaN."
21:03:31 <ais523> could explain the Voyager anomaly, I suppose
21:03:33 <Phantom_Hoover> Can't you make things sufficiently macroscopic and redundant that the probability of an error is miniscule?
21:03:36 <alise> "This other particle has a mass of NaN too. But when we compare them..."
21:03:40 <alise> "THEY DON'T HAVE THE SAME MASS!"
21:03:43 <oerjan> Phantom_Hoover: um that's what we _do_
21:04:07 <alise> Phantom_Hoover: miniscule is valid.
21:04:10 <ais523> on the basis that it's sufficiently far away from the Sun (still the main gravitational influence on it) that it's getting rounding errors
21:04:14 <AnMaster> ais523, idea: write a lisp macros that makes scheme post-fix instead of prefix
21:04:21 <alise> Phantom_Hoover: that's what it would do
21:04:24 <AnMaster> err I meant to highlight alise about this
21:04:24 <alise> that's what we're saying
21:04:27 <alise> but things like the 3-body problem
21:04:29 <alise> are /always/ inaccurate
21:04:33 <alise> it's not about errors
21:04:35 <alise> it's about unsolvability
21:04:46 <AnMaster> so you have (2 3 +) instead of (+ 2 3) and so on
21:04:49 <Phantom_Hoover> OK, so why can't we try approximating the 3-body problem better than the universe?
21:04:55 <alise> Phantom_Hoover: ...
21:04:58 <oerjan> Phantom_Hoover: however our attempts to continue moore's law are hitting the very problem that we have trouble shrinking circuits more without them becoming too unreliable
21:04:58 <alise> Phantom_Hoover: no comment
21:05:04 <AnMaster> next step after that would presumably be to make it not use () for it
21:05:08 <alise> Phantom_Hoover: (because if OUR MATTER is approximate we cannot possibly approximate better than our matter)
21:05:30 <alise> ais523: I am now enamoured with the idea that we're running on an approximating universe with things like miniscule rounding errors.
21:05:42 <alise> ais523: Hey, this means there's an actual smallest real in our universe. Zeilberger is right!
21:06:02 <alise> (the universe's floating-point epsilon)
21:06:04 <ais523> smaller reals can be represented, but they can't measure anything?
21:06:11 <Phantom_Hoover> If you can pull the probability of an error down low enough, can't you get arbitrarily close to what the universe does?
21:06:25 <alise> ais523: just like floating point numbers below the epsilon exists, but you can't add them properly
21:06:40 <alise> since the eps is the smallest number such that eps+1 > 1
21:06:51 <ais523> hmm, perhaps this explains quantum energy levels
21:06:56 <alise> Phantom_Hoover: yes
21:07:03 <alise> Phantom_Hoover: but never just as close
21:07:04 <ais523> I can imagine that they're denormalised floating-point numbers in some more complicated system than simple binary floats
21:07:22 <alise> Phantom_Hoover: because there's always the compounding of errors, since our emulation of an X must necessarily consist of more than one flawed particle
21:07:22 <tombom> i think we've cracked the universe guys
21:07:29 <alise> Phantom_Hoover: so the error is always more than the universe's native error
21:07:34 <alise> tombom: because of this? agreed
21:07:35 <tombom> get on the blower to hawking
21:08:00 <Phantom_Hoover> Wait, quantum indeterminacy decoheres over large scales, doesn't it?
21:08:11 <tombom> we've discovered that the universe is based on approximate floating points
21:08:12 <alise> ais523: whoa... dark matter was introduced to account for some thingy that shouldn't have been if the universe obeyed blah blah
21:08:25 <alise> ais523: but actually, the answer is that the universe isn't a good enough approximation to obey our physics
21:08:31 <oerjan> tombom: i _hope_ you're being sarcastic
21:08:34 <alise> the error in mass or whatever it is is just because it's approximated
21:08:36 <Phantom_Hoover> So you could design a computer that isn't affected by particle-level errors.
21:08:45 <alise> tombom: well not necessarily IEEE floating point :-D
21:08:49 <alise> Phantom_Hoover: who says the errors are quantum?
21:08:53 <AnMaster> <alise> ais523: I am now enamoured with the idea that we're running on an approximating universe with things like miniscule rounding errors. <-- that would explain string theory and lots of other strange stuff. They are trying to come up with a theory explaining rounding errors ;)
21:08:55 <alise> 3-body problem: they could be in gravity, for one
21:08:57 <tombom> i don't know how you guessed
21:09:10 <alise> AnMaster: oh my god, strings are like ... the parts of floating points
21:09:18 <alise> Phantom_Hoover: it does not
21:09:22 <oerjan> tombom: well it was either that or the sudden onset of crankdom ;D
21:09:26 <alise> quantum stuff may decohere
21:09:46 <tombom> this is one of the most likely channels to have a sudden onset of crankdom imo
21:09:55 <AnMaster> alise, perhaps. I just meant that they are trying to build a "sensible" theory based on observing the rounding errors of the universe. Resulting in nonsense basically.
21:10:10 <Phantom_Hoover> Probably nothing can interfere with it, so it's errors will be *very* small.
21:10:30 <AnMaster> alise, however this does not explain why pi doesn't have a finite number of decimals.
21:10:35 <alise> tombom: oerjan's already had his :)
21:10:38 <alise> AnMaster: because pi isn't real
21:10:54 <alise> we just threw a bunch of finite symbols together and came up with this algorithm that produces digits that works in euclidean geometry, an abstract, non-real thing
21:11:00 <alise> AnMaster: space is only locally euclidean anyway
21:11:06 <alise> so euclidean geometry's pi doesn't even apply to the real world.
21:11:12 * oerjan swats alise -----### DO NOT DOUBT MY GENIUS
21:11:17 <alise> who says our pi isn't a finite approximation, like video games use?!
21:11:33 <ais523> the ancient Chinese thought pi was sqrt(10)
21:11:51 <ais523> and I don't think their technology or maths was good enough to disprove that
21:11:52 <AnMaster> alise, well we don't have perfect circles even. It is built out of atoms and smaller particles
21:12:01 <alise> oklopol: ~-0.0206 error
21:12:06 <oklopol> you'd think they could measure that well
21:12:15 <alise> sqrt(10) ~= pi + 0.0207
21:12:24 <AnMaster> tombom, that one is more sensible
21:12:34 <tombom> scratch that, sqrt(10) is a horrible approximation
21:12:38 <alise> an error of 0.02 isn't /so/ bad
21:12:42 <alise> I mean, in the "real world"...
21:12:47 <oklopol> did they know about pythagoras
21:12:59 <oklopol> also i don't know what oyu mean actually
21:13:07 <oklopol> how could they have pythagorased?
21:13:13 <Gregor> AnMaster: There, fix't.
21:13:19 <Gregor> (Fix not uploaded yet.
21:13:21 <Phantom_Hoover> tombom, my father used to be convinced that pi was exactly 22/7
21:13:21 <AnMaster> Gregor, what is? the universe rounding errors?
21:13:29 <ais523> that's my favourite pi approximation
21:13:29 <tombom> Phantom_Hoover, oh dear
21:13:33 <Gregor> AnMaster: echo hi > bar; cat bar
21:13:37 <AnMaster> alise, hm I suspect this means we are inside some kind of simulation
21:13:43 <AnMaster> Gregor, fixed how? to error out?
21:13:47 <oklopol> Phantom_Hoover: and what could they have done with it?
21:13:52 <AnMaster> Gregor, or did you implement unionfs? ;P
21:14:04 <alise> AnMaster: that's not so unlikely, but really, it could just be that the quantumy foamy matter computers that are space's underlying structure are just approximations
21:14:05 <Phantom_Hoover> oklopol, you can work out pi armed only with Pythagoras.
21:14:27 <oklopol> oh well yeah but nothing direct
21:14:36 <oklopol> we're talking about guys who can't tell 3.14
21:14:50 <ais523> tombom: because it's short and incredibly accurate
21:14:51 <Phantom_Hoover> You can work out the perimeter with the diameter and Pythagoras.
21:15:01 <Gregor> AnMaster: I just fixed the bugs that made it fail to write, as it turns out I already had local files "unioned" on top of remote files :P
21:15:02 <alise> ais523: that's not my favourite pi approximation
21:15:09 <ais523> alise: which one's yours?
21:15:14 <oklopol> Phantom_Hoover: i don't see how
21:15:22 <tombom> my favourite is !haskell pi
21:15:30 <AnMaster> alise, and that explains why the universe is mostly sensible on an atomic level but quite weird if you go subatomic. Basically we have reached the levels where we can observe the imperfectness in the simulation
21:15:47 <Phantom_Hoover> oklopol, subdivide an n-gon into n isosceles triangles.
21:16:23 <alise> ais523: my favourite approximation is (426880*sqrt(10005)) / sum(k=0 -> G_64) ((6*k)! * (13591409 + 545140134*k))/((3*k)! * (k!)^3 * (-640320)^(3*k))
21:16:37 <oklopol> well yes, i believe there's some way.
21:16:38 <AnMaster> tombom, anyway you never explained "crankdom". Or was it "<tombom> oerjan's word"?
21:16:39 <alise> (426880*sqrt(10005)) / sum(k=0 -> G_64) (((6*k)! * (13591409 + 545140134*k))/((3*k)! * (k!)^3 * (-640320)^(3*k)))
21:16:50 <tombom> yeah it was oerjan's word
21:16:51 <AnMaster> if so, I ask oerjan to explain crankdom.
21:16:52 <Phantom_Hoover> Using tan, you can get the size of the base of the isosceoles triangle.
21:16:59 <tombom> i'm not sure exactly how he defines it
21:17:01 <alise> increase G_64 for greater accuracy, it's great, you just remember one formula and a bunch of huge numbers!
21:17:04 <tombom> i presume just becoming a crank!
21:17:24 <AnMaster> tombom, when there are multiple concurrent conversations, prefixing lines with the person you respond to kind of helps. No offence meant.
21:17:34 <Phantom_Hoover> By making n really big, you get a good approximation of pi.
21:17:44 <Sgeo_> Why has walking outside seemed to energize me?
21:17:54 <tombom> i don't remember if i didn't or if so why i didn't, or what cotnextr it was in
21:17:58 <tombom> i'l;l try harder next time AnMaster
21:18:24 <oklopol> i doubt you get a very good approximation, i doubt you get a new digit in polynomial time
21:18:51 <AnMaster> alise, where is that approximation from?
21:19:03 <oklopol> well i guess that depends on how exactly you do this, you could just jump exponentially with n ofc
21:19:26 <alise> AnMaster: it's the Chudnovsky formula for pi, if you s/G_64/infinity/; then it's actually a definition of pi
21:19:29 <alise> rather than an approximation :P
21:19:39 <alise> AnMaster: it converges really fast; 14 digits per term
21:19:51 <alise> so having an upper bound of G_64 produces something that's... pi, unless you're /really/ picky
21:20:11 <alise> G_64*14 correct digits is a /lot/ :P
21:20:21 <AnMaster> alise, you could make it A(G_(G_64),G_(G_64)) of course ;P
21:20:32 <alise> yeah but it's quicker just to compute G_64 terms :D
21:20:34 <AnMaster> (protip: you can't. No one can)
21:21:06 <oklopol> hey i think i came up with an even bigger number
21:21:13 <oklopol> but i don't wanna scare you
21:21:19 <AnMaster> alise, anyway (6*G_64)! just makes my mind boggle
21:21:22 <alise> http://fc05.deviantart.net/fs70/f/2010/036/2/6/2650964e842eee21cbfc40d9feeba53f.png ;; ITT: an xkcd strip is made many times better with the addition of a single panel at the end.
21:21:31 <alise> AnMaster: (6*G_64)! = G_64
21:21:33 <alise> to very high precision
21:21:47 <oerjan> AnMaster: it's the composition of the word "crank" with the suffix "-dom". maybe i should have used "-hood" instead.
21:21:48 <alise> protip: increasing G_64 so that it's anything more than G_64 to anyone but the most pedantic observer in the universe is hard.
21:22:23 <oklopol> alise: i prefer the original
21:22:41 <alise> oklopol: ok it's not actually all that better
21:22:44 <alise> but the original is a bit shitty
21:22:57 <alise> i mean, spirit? come on, it's been on mars for 1944 days and is still being actively used, boo hoo
21:23:11 <oklopol> i'm not saying it's a great reference
21:23:17 <oklopol> i'm not saying it makes sense
21:23:17 <alise> voyager is in space, spirit is next door
21:23:34 <alise> we could easily go and fetch spirit now, in person, if we really wanted to
21:23:50 <alise> voyager... not so much
21:24:10 <Sgeo_> There is an xkcd strip that I found inspirational
21:24:16 <Sgeo_> Or, well, at the time
21:24:28 <AnMaster> <oerjan> AnMaster: it's the composition of the word "crank" with the suffix "-dom". maybe i should have used "-hood" instead. <-- hm that doesn't explain what it means
21:24:48 <tombom> there are very few good xkcd
21:24:58 <tombom> AnMaster, do you know what a crank is?
21:25:04 <alise> tombom: incorrect; almost all xkcds before strip, say, 200 are excellent
21:25:10 <AnMaster> tombom, yes some meanings of it
21:25:10 <oklopol> where the guy just runs around for 1.5 hours
21:25:13 <Sgeo_> http://www.xkcd.com/267/
21:25:14 <alise> before 300, the majority are great
21:25:20 <alise> before 400, the majority are quite good
21:25:27 <tombom> he jsut means somebody who does and says and believes stupid things
21:25:39 <tombom> has crazy ideas and defends them to the death sort of thing
21:25:39 <AnMaster> tombom, it is obviously a person cranking a handle ;)
21:25:49 <alise> tombom: you're trying to talk to AnMaster
21:26:07 <AnMaster> of course I know what a crank is
21:26:09 <tombom> i liked the one where everybody was thinking about how everybody else was a sheep
21:26:19 <tombom> sorry anmaster to sound patronising then :\
21:26:37 <AnMaster> best synonym I can think of is crackpot
21:26:52 <Sgeo_> Speaking of crackpots
21:26:55 <oerjan> AnMaster: sure it does, if you know what the parts mean
21:27:03 <tombom> http://www.xkcd.com/610/
21:27:10 <oklopol> yeah but then none of them drowned because their asses were filled with water when the flood came
21:27:16 <tombom> crackpot is the same as a crank
21:27:25 <AnMaster> oerjan, I don't know what the -dom prefix mean as such. is it like in "boredom"?
21:27:45 <oklopol> (...my attempt at just a reference, no joke, if that wasn't clear)
21:28:09 <alise> http://xkcd.com/24/ <-- this is an example of an awesome xkcd strip.
21:28:10 <tombom> also the more i see that xkcd the more i like it
21:28:16 <oklopol> AnMaster: doesn't swedish have the same damn suffix
21:28:26 <AnMaster> tombom, err meant suffix. Just kind of sleepy :P
21:29:10 <AnMaster> misread what you said as "doesn't Swedish have damn suffixes"
21:29:13 <tombom> why does it turn into a "meghan..." strip at the bottom
21:29:13 <oklopol> there's one almost identical that means the same thing afaik
21:29:43 <alise> tombom: that wasn't Megan at the time.
21:29:49 <alise> i think that was the first appearance of that drawing
21:30:17 <tombom> http://goatkcd.com/ better xkcd (nws)
21:30:20 <AnMaster> but then it is 27 C in this room
21:30:20 <alise> it is one continuous conversation, mind, just not with one person
21:30:32 <alise> Here's a nice one: http://xkcd.com/68/
21:30:36 <alise> Not terribly intellectual, but amusing.
21:31:05 <tombom> bring back the haversine
21:31:08 <oerjan> AnMaster: what oklopol says
21:31:12 -!- jcp has quit (Ping timeout: 252 seconds).
21:31:26 <alise> tombom: i don't think sine have ever used haver.
21:31:44 <tombom> i feel like i'm missing a brilliant pun
21:31:54 <AnMaster> oklopol, was thinking of "boredom" case specifically
21:32:30 <alise> i like the achewood parody: http://xkcd.com/141/
21:32:34 <alise> tombom: TOP SEKRIT LOL
21:32:42 <alise> basically haver is this irc replacement thing and sine is the network where the people who made it are.
21:32:45 <alise> haversine get it LOL LOL
21:32:46 <AnMaster> oklopol, uttråkad is the adjective (bored) but I can't think of a way to turn that into "boredom"
21:33:06 <oklopol> trkig is something like blahly i know that much
21:33:22 <AnMaster> oklopol, ah google translate suggests "leda"
21:33:45 <AnMaster> oklopol, it sounds slightly archaic to me
21:33:46 <tombom> alise: yeah i had no chance
21:33:49 <tombom> thanks for the explanation
21:33:56 <AnMaster> oklopol, at least in that sense
21:34:07 <AnMaster> oklopol, "att leda" as a verb is "to lead"
21:34:17 <alise> http://xkcd.com/123/ is a classic ofc
21:34:29 <AnMaster> oklopol, oh and it also suggests tristess
21:34:38 <alise> tombom: ! i just pinpointed the start of megan
21:34:40 <alise> tombom: http://xkcd.com/128/
21:34:42 <oklopol> AnMaster: well yes i did know the verb
21:34:51 -!- jcp has joined.
21:35:03 <AnMaster> oklopol, did you know "tristess"?
21:35:12 <alise> tombom: thankfully those comics were incredibly rare until around comic 300 to 400
21:35:42 <alise> http://xkcd.com/122/ <-- ITT: xkcd foreshadows its future portrayal of what counts as a cool girl
21:36:36 <alise> this is also good: http://xkcd.com/145/
21:36:43 <alise> Phantom_Hoover: yeah ... by randall
21:37:04 <tombom> i don't really think he can say that
21:37:04 <alise> i think 128 was meant to be joking but definitely a turn for the worse there
21:37:17 <tombom> it's so awful i can't imagine why he'd think it's a good joke
21:37:29 <alise> i think the joke is meant to be in the alt text
21:37:37 <tombom> i like dinosaur comics
21:37:45 <alise> i love dinosaur comics
21:37:54 <alise> http://xkcd.com/136/ ;; huh, that recent shitty one was /not/ the first to include an explicit depiction of a vagina.
21:39:10 <alise> Phantom_Hoover: eh?
21:40:16 <oklopol> i should start making comics that are just about people talking in definitions
21:40:58 <AnMaster> oklopol, you mean like that game a few days ago?
21:41:03 <oklopol> alise: you didn't read my definition speak
21:41:19 <AnMaster> oklopol, okay that would be fun
21:41:25 <Sgeo_> I believe it might be possible to make memory cells in AW action line stuff
21:41:26 <alise> oklopol: i did yeah
21:41:30 <oklopol> alise: i substituted definitions of math terms
21:41:35 <Phantom_Hoover> Anyway, let's not even start on xkcd's effect on Wikipedia
21:41:37 <alise> i wanna make a comic but i have no drawing talent :(
21:41:45 <AnMaster> oklopol, half the fun would be finding out the actual joke by reverse engineering the definitions
21:42:03 <alise> i wouldn't even have any pretentions about being good or anything, I'd just make every comic basically like dinosaur comics but it'd go on for a whole page and the panels would constantly be being broken and tons of tangents where people argue over definitions would happen in parallel
21:42:07 <Sgeo_> Tailsteak couldn't draw at first
21:42:16 <alise> and they would just sort of speculate on the nature of the universe while stuff happens
21:42:21 <oklopol> to have a joke that's more than just a joke + obfuscation, that the definition substitution had some sort of point
21:42:27 <AnMaster> Phantom_Hoover, I feel that this last time wikipedia ended up looking silly by the edit war making it into press, thus making it notable
21:42:34 <Sgeo_> THe guy who drew Triangle and Robert could never draw
21:42:35 <AnMaster> I wonder what happened to that hm
21:42:54 <alise> "This is Karl Marx --> [picture]. He is not Richard Feynman --> [picture]." "But is he? Truly, I think that--" "--and as I was saying in an alternate dimension, 'Truly, I think that'.---- THE END"
21:43:04 <alise> "You can't end a comic just by saying 'THE END'."
21:43:17 <oklopol> alise: substitute some definitions in and i'm game
21:43:38 <AnMaster> Phantom_Hoover, don't remember which comic
21:43:45 <AnMaster> and nothing on http://en.wikipedia.org/wiki/Xkcd about it
21:44:06 <AnMaster> Phantom_Hoover, ah yes talk page has it: the Malamanteau one
21:44:36 <alise> "Have you ever noticed that when we go on enough tangents the universe ends up splitting to accomodate them?" "That's some serious circle rape, man." "What?" "Nothing. Hey, did you ever hear of a guy who always lied?" "No, but I've heard of Lie groups..." "Now you're the one substituting the wrong definition." "Substituting? Definitions? What? We've been talking about aardvarks..." "I believe your cognitive post-mortem reality is falling apart." "That isn't
21:44:37 <alise> what post-mortem means." "Exactly."
21:44:57 <AnMaster> Phantom_Hoover, see the talk page of http://en.wikipedia.org/wiki/Xkcd the section I mentioned
21:46:59 <Phantom_Hoover> The people saying that "Malamanteau" deserves an article.
21:47:24 <oerjan> alise: yes, yes, we all agree it's a good idea you don't make comics
21:47:36 <alise> oerjan: what? that would be AWESOME!
21:47:41 <AnMaster> Phantom_Hoover, well it does deserve a one sentence mention on the xkcd page
21:47:52 <oerjan> alise: well everyone except _you_, then
21:48:00 <Phantom_Hoover> It occurs to me that xkcd seems to be gravitating towards SMBC's format.
21:48:18 <Phantom_Hoover> Or perhaps they both gravitated towards the same format.
21:48:46 <AnMaster> Phantom_Hoover, never heard of that
21:49:03 <alise> "Have you ever died?" "Has [on top: the symbiotic co-creator of the anti-matter universe] [on the bottom: Karl Marx] ever flown?" "Flown, I" "--mean died, to complete your sentence if it were me saying it, not you." "Well, I think you should say 'if it was me', to promote grammar revolution." "Fuck you." "You mean 'fuck yourself', bourgeoisie fucker."
21:49:25 <alise> Phantom_Hoover: xkcd is just stealing SMBC's jokes now
21:49:41 <oerjan> Phantom_Hoover: mind bleach, NOW
21:49:54 <tombom> that's fascinating alise
21:49:54 <Phantom_Hoover> There has been the occasional theft, but not everything.
21:50:38 -!- zzo38 has joined.
21:50:49 <zzo38> Why is it more so than a real whale?
21:50:57 <Phantom_Hoover> OTOH I had a moment of hopelessness when I noticed the big red button.
21:51:53 <Sgeo_> Fat people eat accumulates.
21:53:15 <alise> "Haahaha! I have stolen ALL your goat!" "Goat is not its own plural." "Indeed. But you only have one goat." "Then you shouldn't say 'ALL'." [universe splits into 7] [in all 7 universes:] "This is universe [8 - universe it actually is]. Isn't that grand? Hahaha[universes recombine]ahahaha." "You had an 'a' after an 'a' there. It's meant to alternate 'h' and 'a'." "I said an 'h' while all the universes were recombining."
21:53:17 <alise> [universes split again]
21:53:30 <oerjan> zzo38: it's a miracle!
21:53:34 <alise> "[in odd universes:]Hahahaha[in even universes:]Ahahahaha[etc.]" [universes combine]
21:53:42 <alise> "You can't have possibly gotten it right that time." "Quantum, man. Quantum."
21:53:48 <alise> "Your 'a' and 'h' were simultaneously dead and not dead?
21:53:49 <oerjan> or possibly, evil magic. we're not quite sure.
21:53:57 <alise> "Don't collapse my quantum buzz, man."
21:58:03 <alise> "Your quantum bu" "No referencing previous comics." "But referencing our actual universe's nature as a whole is permi" "Yes. Also, I know what you're going to say, so stop say" "same goes for you, buddy. Same goes for y" "don't call me buddy" "No" "Yes" "No" "(bool)0.5" "Your mother was a bool zero one point five." "How dare you. [kills you]" "You can't make things happen just by putting them in brackets. [punches you]" "Ow! I thought you just sai" "I said y
21:58:03 <alise> ou couldn't. I can."
22:01:05 <Sgeo_> I am about to design a very crappy language
22:01:19 -!- calamari has joined.
22:01:23 <Sgeo_> That will make it far easier to work, albeit inefficiently, in a worse excuse for a language.
22:01:53 <Gregor> alise: How about I add syscalls to call JS directly, and you implement X using those syscalls X-P
22:02:41 <alise> Gregor: no need to implement X, just a driver for Xserver (not X.org)
22:03:22 <Gregor> alise: How about I add syscalls to call JS directly, and you implement a driver for Xserver using those syscalls X-P
22:04:18 <alise> Gregor: how about the other way around :|
22:04:35 <zzo38> I wrote some rules for AERM please tell me if you have any question/comment? Also tell me which mahjong rulsets you like, if you know any. http://zzo38computer.cjb.net/mahjong/anime_evolution/
22:04:38 <Gregor> Except I know more about JSMIPS, so I can add the syscalls easily :P
22:05:19 <Sgeo_> http://pastie.org/1021063
22:05:23 <Sgeo_> feel free to kill me
22:05:41 <alise> Phantom_Hoover: by comic logic
22:05:45 <alise> pikhq: where is Xserver in the xorg tree?
22:06:35 <zzo38> Sgeo_: I don't want to kill you! I have other stuff to eat
22:08:03 <Sgeo_> I don't want your baby! I already ate.
22:08:21 <zzo38> Sgeo_: That is good thing because I don't have any baby
22:09:47 <alise> If any South Korean citizen tries to visit North Korea crossing the big concrete wall, he'll be killed by the american soldiers. The 'Security Law' in South Korea forbides to any South Korean citizen to talk or read about the North or else he'll be punished with jail or even death penalty.
22:09:52 <oerjan> mm, fresh ground Sgeo_
22:10:34 <alise> -- North Korea's official website
22:10:51 <alise> Stable. A government with solid security and very stable political system, without corruption.
22:10:51 <alise> Full diplomatic relations with most EU members and rest of countries.
22:11:01 <Sgeo_> So, thoughts on poorly-designed language?
22:11:24 <alise> Only few people in the world know that Korea is divided by a big concrete wall in the Parallel 38 that was built by the United States of America when the Korean War finished.This wall is hundreds of times bigger than the one that existed in Germany and is separating the Korean families, brothers, parents... the nation is divided because the U.S.A. is dominating the southern part and keeps an army of more than 40.000 soldiers to avoid the union of th
22:11:44 <alise> The unification of Korea, the peace in the peninsula and the meeting of all the families is possible, but the U.S.A. isn't interested on it, and every year with the support of the South Korean Army they display big military maneuvers like the 'Ulji Focus Lens' or 'Team Spirit with the purpose of invading and dominate the North. Only when the american soldiers will leave South Korea and the citizens will recover they sovereignity, a big united Korean na
22:12:49 <Sgeo_> Anyone want to make a fibonacci counter in this language?
22:12:57 <alise> http://www.korea-dpr.com/business/Garment.pdf north korean garments
22:13:09 <alise> pikhq: where's xserver in xorg tree :|
22:13:14 <zzo38> I have idea invent command-web. A command-web can be included in any HTML document, in its own file, linked to by HTTP headers, or by local overrides. Allowing you to make web applications as command-line programs, including I/O redirection, pipe, and any other stuff usable in command-line programs.
22:13:18 <Sgeo_> if(getcell1("bit"))
22:13:21 <alise> Gregor: i'm looking in xserver source :P
22:13:23 <Sgeo_> That should probably be ifcell1
22:13:26 <alise> Gregor: i wanna do the js though :(
22:13:40 <Sgeo_> Besides cell1s and cell2s, there's not much that can be if'ed on
22:13:53 <zzo38> And make command-web more simplicity and can work without any web-browser installed, no JavaScript required, and make the command-web specification to be simple and easy to implement in many program language, and efficiently.
22:13:54 -!- augur has quit (Remote host closed the connection).
22:14:03 <zzo38> Sgeo_: What language do you mean?
22:14:04 -!- augur has joined.
22:14:09 <Sgeo_> http://pastie.org/1021063
22:14:48 <zzo38> Sgeo_: I saw that, but I don't see the documentation?
22:15:08 <Sgeo_> That is the documentation for now
22:15:16 <Sgeo_> Still a lot more evil to come
22:15:30 <Sgeo_> And I'm going to introduce it to a large community that might very well be thankful
22:15:40 <Gregor> alise: You would be doing the JS.
22:15:47 <Gregor> alise: All I'd be doing is giving an eval syscall.
22:15:58 <alise> Gregor: But that's rubbish!
22:16:55 <Gregor> I don't see how. Seems like the modular solution to me.
22:17:19 <Gregor> Phantom_Hoover: For X11 in your browser :P
22:17:27 <Sgeo_> Why don't I say bit1 and bit2 instead of memcell1 and memcell2
22:17:41 <Gregor> alise: OK, project delayed for quite a while; I have no sockets X-D
22:17:51 <Gregor> Not even UNIX domain sockets.
22:18:01 <alise> "Your poetry stinks like rotten eggs and fish." "As do your rotten eggs and fish." "So, what's the happenings today?" "What if the universe was really made up of tiny little universes, each constituting a particle in ours? And what if this went down forever, like those famous turtles?" "I don't think the turtles were famous, just the quote..." "Well, you're not famous either." "I never said that. Anyway, what if the universe was--" "hang on, that was my theo
22:18:01 <alise> ry." "Yes, indeed it was." "What if the universe was--" "Maybe it could be both our theories?" "Okay." "No, I disagree. I refuse to cooperate. It is mine now. Mine! MWAHAHAHA[goes outside edge of panel and loops around the page]HAHAHAHAHAHAHAHAHAHAHA--"
22:18:18 <alise> Gregor: Not in your libc?
22:18:29 <Gregor> alise: Not at all. Not in libc, not in the kernel, nowhere.
22:18:57 <alise> Oh, of course, it's your kernel.
22:19:14 <alise> Phantom_Hoover: JSMIPS.
22:19:19 <alise> Gregor: Why not just ... implement POSIX in Javascript?
22:19:28 <alise> Gregor: Have the bytecode be Javascript or something.
22:19:36 <Gregor> alise: That is what I'm doing. But slowly, and only what I need when I need it :P
22:19:45 <alise> Gregor: I mean, as opposed to having an architecture.
22:20:27 <Gregor> Because C assumes there's pointer-addressable memory, and by the time you've added pointer-addressable memory, you've done 99% of the work of emulating MIPS.
22:20:54 <Gregor> So the question is, do you do the remaining 1% to emulate MIPS, or the massive amount of work to retarget GCC at a platform that isn't a platform?
22:21:28 <alise> Gregor: Fair enough.
22:21:48 <Gregor> MIPS really was the easy route :P
22:22:22 <ais523> JSMIPS really ought to be able to do network connections
22:22:30 <ais523> either with HTML5 sockets, or by bouncing off its own server
22:22:38 <alise> HTML5 sockets would be nice to use.
22:22:56 <ais523> yep, and more secure too
22:23:05 <ais523> don't want to make JSMIPS into a (very slow) open proxy for everything...
22:23:41 <alise> Gregor: again, where is your kernel and libc?
22:23:47 <zzo38> Can you please tell me if the AERM rules are good so far?
22:23:49 <Gregor> My "OS" is all in JavaScript. The syscall barrier is between JS and MIPS instead of being between different layers.
22:24:10 <alise> Where is your JS OS?
22:24:15 <Gregor> The C library is newlib, and the patch for it is in the source repo, which is linked at http://codu.org/projects/jsmips/
22:24:16 <alise> Where is your libc?
22:24:33 <Gregor> All of it is in said source repo of course :P
22:24:44 <alise> Wow, your newlib patch is huge.
22:24:56 -!- augur has quit (Remote host closed the connection).
22:25:10 -!- augur has joined.
22:25:42 <alise> Gregor: where is system.html maintained?
22:32:13 <Sgeo_> Just realized that each read of a memcell is very expensive
22:32:24 <Sgeo_> On read, one of two codepaths happen
22:32:31 <Sgeo_> One for on, one for off
22:33:04 <Sgeo_> To add more, I could chain another memcell to it which is essentially (0 for this set of codepaths, 1 for this other set)
22:33:53 <Sgeo_> What do you call a piece of data that can represent 0, 1, 2, or 3?
22:35:31 <Gregor> alise: My newlib patch is mostly adding newlib/libc/sys/jsmips , which is pretty big, yeah. There's also some garbage because I had to regenerate configure and Makefile.in's for that, so that's kinda bullshit but I had to do it.
22:35:59 <Gregor> alise: system.html is just init.html renamed, init.html is generated by the Makefile in the root of the jsmips repo from the sources in init/ and some simple HTML wrapper stuff.
22:36:05 <ais523> hmm, I was trying to debug something from the asm, and having problems
22:36:10 <Sgeo_> They can't be read easily since there is one path of execution per possibility. It stores a bit (or I could make memcells store a quat. Maybe memcell2 is bit and memcell4 is quat). It's a thing I'm thinking of in Active Worlds
22:36:10 <alise> I'm trying to find Xserver...
22:36:17 <ais523> I go to look at the source, and find that not only is it in asm, but it has inline machine code
22:36:17 <Sgeo_> I haven't actually built an in-world memcell yet
22:36:29 <ais523> and inlining machine code in asm is really quite a crazy prospect
22:36:42 <Sgeo_> Is there even a point?
22:37:19 <ais523> it was to put a label in the middle of a statement, it seems
22:37:56 <Sgeo_> alise, 0, 1, 2, or 3
22:38:00 <Sgeo_> Have a better name?
22:38:33 <Sgeo_> Actually, I don't think I can make quats anyway.
22:38:40 <alise> binary -> bit, trinary -> trit, quarternary -> quarter -> quartert
22:39:32 <alise> but they end with -it
22:39:40 <alise> which is why they use the trinary name, not ternary
22:40:19 <oerjan> the -i is from the part before the -nary
22:41:19 <alise> oerjan: yes, but listen
22:41:26 <alise> oerjan: base 3 is ternary, trinary is the /less common/ na,e
22:41:32 <alise> yet it isn't a tert
22:41:37 <alise> because it's meant to end with -it
22:41:41 <alise> so clearly, it's a quit.
22:41:56 <oerjan> (technically, latin counting numbers for "n each")
22:42:08 <alise> oh wait, 5 is quit
22:42:53 <alise> not octal, what's the full name
22:43:14 <alise> quin? is that the 6 prefix?
22:43:35 <alise> oerjan: octonary, then?
22:43:47 <alise> unit, bit, trit, quat, quit, senit, sept, octit.
22:43:58 <alise> using senit for six rather than sent
22:44:10 <alise> yes, but septenit sounds shit.
22:44:41 <alise> unit, bit, trit, quat, quit, senit, septenit, octit, nonit, decenit,
22:45:21 <Sgeo_> I was just thinking I could make memcells easily hold arbitrary sizes, but I was wrong
22:45:39 <alise> unit, bit, trit, quat, quit, senit, septenit, octit, nonit, decenit, undecenit
22:45:47 <oerjan> http://home.comcast.net/~igpl/NXR.html last column
22:47:47 <oerjan> and noveni, although wikipedia definitely says nonary base
22:52:01 <oerjan> historical change doesn't always treat latin numbers well. not that the system looks that consistent to begin with
22:52:28 -!- DH____ has quit (Quit: Trillian (http://www.ceruleanstudios.com).
22:53:36 <Sgeo_> create animate me . 1 1 0, name a; adone name b
22:54:01 <Sgeo_> To even READ a bit, I need to use sdone, which I was planning for quats
22:54:09 <pikhq> alise: Xserver is in the Xserver tarball.
22:54:24 <pikhq> Welcome to the joys of modular X.
22:54:52 -!- zzo38 has quit (Quit: ,z.).
22:54:57 <Sgeo_> name name=a b works well, I think
22:55:09 <ais523> hmm, this is a crazy question so this is as good a channel to ask as any: does anyone here know how I could find out the exact behaviour of a Pentium II in response to code near the instruction pointer being modified?
22:55:39 * pikhq is quite annoyed at libX11
22:55:46 <pikhq> It appears to require multibyte support.
22:56:33 <pikhq> ais523: Uh. This is undefined behavior, so: *check and see* how much that screws with the instruction cache.
22:57:26 <ais523> pikhq: I don't have a Pentium II to test on; and I need the general case, rather than the behaviour in any specific case
22:57:37 <ais523> I was hoping it'd be documented somewhere, but Google isn't helping
22:58:05 <pikhq> ais523: Your most *likely* behavior if you don't flush the instruction cache is that it continues executing the old code until that goes out of the instruction cache.
22:58:27 <ais523> yep; and how big is the instruction cache? the documentation I find doesn't even really explain that
22:58:39 <pikhq> Varies from chip to chip.
22:58:41 <ais523> also, did instruction-cache flushing exist back then? I thought it was newer than that
22:59:10 <pikhq> The 686 is about where that started being done on x86.
22:59:44 <ais523> the compiler that's producing the offending code claims to be targeting the 586
23:01:05 <Sgeo_> Looks like quats aren't happening
23:01:27 <Sgeo_> Unless I find another way to store data
23:01:51 <Sgeo_> I see another way to store data, but it takes time for it to read
23:02:16 <Sgeo_> All because I can't change the name of an object from a different object
23:03:26 <pikhq> ais523: 486 started it, actually.
23:03:52 <ais523> in which case, quite possibly I've indirectly found a bug in DJGPP, in that it's relying on undefined behaviour when it shouldn't be
23:04:27 <Sgeo_> The idea would be that the storage would either emit a signal (so to speak) every so often, or not
23:04:37 <Sgeo_> To read, determine if a signal is sent in time
23:04:41 <pikhq> I presume that DJGPP strives to generate code that'll run on more than just a 386. :)
23:05:03 <ais523> pikhq: well, the triple for it contains "i586"
23:05:42 <pikhq> Should be managing the cache right.
23:06:27 <ais523> I was trying to run some DJGPP code on a crazy emulator that has a 900-instruction or so pipeline
23:06:40 <ais523> and it didn't work due to self-modification, now I'm trying to figure out whether the code or the emulator is wrong
23:06:41 <pikhq> ... 900-instruction pipeline.
23:06:59 <pikhq> I suspect the emulator is wrong.
23:07:06 <pikhq> Try running it on a Pentium 4.
23:07:12 <ais523> well, it should be changed to match reality, at least
23:07:17 <pikhq> That had something like a 32-instruction pipeline.
23:07:22 <ais523> to emulate programs that rely on broken behaviour better
23:11:11 -!- Phantom_Hoover has quit (Ping timeout: 265 seconds).
23:12:43 <Gregor> Welp, added primitives to call JavaScript from C.
23:13:12 <alise> pikhq: so where IS xserver
23:14:18 <alise> Gregor: mind if i have a branch where i just rip out the console?
23:14:42 <Gregor> Although it's pretty modular and trivial to remove anyway.
23:14:48 <Gregor> Register on the site and I can give you push privs.
23:15:30 <Sgeo_> What can be done with something that, say, has a certain number of states, and changing to one particular state causes code to execute?
23:16:34 <Gregor> Sgeo_: Uh ... since you didn't define "code", I'm gonna go with "everything"
23:17:15 <Sgeo_> more, irrelevant for this discussion, stuff to happen.
23:17:59 <pikhq> alise: Uh. Not sure where's a good source; I pulled it out of /usr/portage/distfiles.
23:18:11 <alise> pikhq: In the git repository, xserver is just the regular X.org server.
23:18:26 <Sgeo_> Turns out that I can't use it
23:18:27 <pikhq> Yes, that is the regular X.org server.
23:19:00 <alise> pikhq: I can see no git repository with Xserver.
23:19:13 <alise> Apparently it is maintained "as a module".
23:19:49 <pikhq> http://www.x.org/archive/individual/xserver/
23:23:16 <alise> That's ... the normal X.org server.
23:23:18 <alise> I'm asking about Xserver.
23:24:27 <alise> pikhq: I don't THINK they've been merged ...
23:24:36 <alise> Wikipedia says Xserver (KDrive) is now a module of X.org.
23:24:58 <pikhq> alise: That *is* the normal X.org server.
23:25:10 <alise> The normal X.org server is derived from XFree86.
23:25:15 <pikhq> You get KDrive by configuring with --kdrive
23:25:21 <alise> Does that /replace/ the server?
23:25:30 <Gregor> alise: BTW, patches/buildcc.sh will build a complete C compiler, if you didn't notice that ... 's a bit easier than following the README instructions.
23:25:32 <alise> I don't see whyTF it's a configuration option.
23:25:45 <alise> pikhq: Anyway, so where's the KDrive source?
23:25:56 <pikhq> *In those tarballs*.
23:26:04 <pikhq> *I have linked to it*.
23:26:43 <pikhq> Most of the KDrive source is just the X server. It just has much, much less than the normal server.
23:26:57 <pikhq> (IIRC, the stuff that KDrive rewrote has become the normal implementation)
23:27:35 <alise> pikhq: I know, I know, but surely KDrive has a different driver architecture and stuff?
23:28:00 <pikhq> alise: Yes: namely, it doesn't have one.
23:28:14 <alise> pikhq: You can write your own driver, no?
23:28:16 <alise> It just has it compiled in.
23:28:21 <alise> So where would I look at to see those drivers?
23:29:56 <alise> pikhq: Or is it just regular X drivers?
23:30:00 <alise> If so, damn I hope they're easy to write.
23:30:14 -!- pikhq has quit (Read error: Connection reset by peer).
23:30:22 <alise> http://cgit.freedesktop.org/xorg/xserver/tree/hw/kdrive ;; this, I wonder
23:32:47 -!- tombom has quit (Quit: Leaving).
23:33:01 <alise> Gregor: I need your help navigating this tree :P
23:33:31 <alise> Gregor: So we can skip a mouse driver for now, a keyboard driver will be easier, I think for X.
23:35:13 <alise> Gregor: I bet X sends some complex shit to its graphical drivers, since it can be quite high-performance.
23:36:22 <Gregor> I wonder if adapting the framebuffer driver would be easiest ... not very canvasy though.
23:36:39 <alise> http://webcvs.freedesktop.org/xserver/xserver/hw/kdrive/neomagic/?pathrev=HEAD
23:36:43 <alise> old neomagic drive for kdrive
23:36:49 <alise> kdrive is a lot smaller and zippier
23:36:51 <alise> so we should really use it
23:37:07 <alise> Gregor: ...yeah, framebuffer will be a lot easier.
23:37:18 <alise> Holy shit X drivers are complicated.
23:37:21 <alise> http://www.linux-fbdev.org/HOWTO/index.html
23:37:23 <alise> Look at that! A howto!
23:37:32 <alise> http://linuxconsole.sourceforge.net/fbdev/HOWTO/index.html
23:37:35 <Gregor> I could probably whip up a framebuffer driver on top of JSMIPS+canvas relatively easily *shrugs*
23:37:35 <alise> An easier to read version of that howto
23:37:52 <Gregor> It's the "setting the video mode" part that's barfy.
23:38:22 <alise> Can't we just ignore that?
23:38:38 <alise> And only support one mode?
23:39:19 <Gregor> I suppose ... actually, I could just implement a simpler interface for that *shrugs*
23:39:38 <Gregor> I don't really have device files either, but that's actually not too bad.
23:40:45 <Gregor> OK, step one: something resembling device files.
23:41:14 <alise> Gregor: Ooh, I want to do that.
23:41:36 <alise> Gregor: Although it'll only be tonight and then on Friday I can work on it :P
23:41:46 <alise> Gregor: iirc the /dev/mouse and /dev/keyboard protocols are very simple, aren't they?
23:41:49 <alise> Then it's just /dev/fb.
23:42:16 <Gregor> The implementation of I/O devices is already abstracted, it should be relatively simple, you just need to make a new kind of file in filesystem.js, support it with open(), and maybe add mknod to newlib.
23:42:32 <Gregor> (Or just ignore mknod and have them compiled in)
23:43:02 <alise> Gregor: Do they even need to look like devices?
23:43:06 <alise> Like the major,minor stuff.
23:43:18 <Gregor> They just need to be JS prototypes.
23:43:37 <Gregor> The only reason to use that is because then mknod() would work and that's more UNIX *shrugs*
23:43:37 <alise> I won't have to compile anything, will I? I can use your system.html.
23:43:44 <alise> Yes, more UNIX but more work :-)
23:44:07 <alise> Gregor: Face it, the only reason I'm doing this is to get Firefox running in Firefox, no matter how slowly it goes.
23:45:00 <Gregor> Actually my goal was vim :P
23:45:05 <Gregor> But now that I have that ... Idonno, emacs?
23:45:09 <alise> Emacs is easy from there.
23:45:12 <alise> How about X11 emacs?
23:45:23 <alise> Gregor: ... MySQL.
23:45:33 <Gregor> Chrome running in FIrefox.
23:45:34 <alise> Gregor: OHMYGOD QEMU.
23:45:36 <Gregor> Firefox running on Chrome.
23:45:40 <alise> Gregor: You've just invented the universal online emulator.
23:45:53 <alise> Gregor: We could make a KQEMU port for speed :P
23:45:58 <alise> To run on the ... kernel ... of JavaScript.
23:46:38 <alise> Gregor: We're talking this Web OS thing a little too literally, methinks :P
23:46:53 <alise> We're building Web 4.0. At least, we'll be on to Web 4.0 before this thing is even vaguely speedy.
23:46:59 <alise> Even the Java applet x86 emulator is faster.
23:47:49 <alise> Gregor: Huh. Xephyr is KDrive.
23:48:53 <Gregor> I don't think it does.
23:49:52 <alise> I was just remarking.
23:50:04 <alise> Gregor: If I implement /dev/keyboard that'll break the console.
23:50:50 <Gregor> So long as it can eventually be fixed :P
23:50:57 <Gregor> And aren't you doing this in a branch anyway?
23:51:16 <alise> Gregor: I was just going to check out the hg thing and start working, who gives a fuck about in-repo branches :P
23:52:16 <Gregor> Well, you could push back your branch and have it all dandy and usable by people who are not you while still allowing the console to work :P
23:52:46 <alise> But why would I give YOU my code!
23:53:22 <alise> I follow the crazy lunatic model of software development: don't use revision control, then only release it at all when it's done and perfect.
23:53:53 <alise> "Hoopla! is an improvised comedy show akin to Whose Line Is It Anyway? but with better jokes[...]" So, they ruined Whose Line Is It Anyway?.
23:54:25 <alise> I just googled hoopla :P
23:55:39 <alise> Gregor: The framebuffer driver API seems ridiculously simple.
23:56:12 <alise> Gregor: http://linuxconsole.sourceforge.net/fbdev/HOWTO/4.html
23:56:16 <alise> the rest is just about video cards and monitors
23:56:37 <alise> Actually, that seems incomplete.
23:56:54 <alise> Gregor: hg url plz
23:57:02 <Gregor> https://codu.org/projects/jsmips/hg/