←2010-12-05 2010-12-06 2010-12-07→ ↑2010 ↑all
00:03:08 -!- TLUL|afk has changed nick to TLUL.
00:08:26 -!- FireFly has quit (Quit: swatted to death).
00:15:42 <elliott> mycroftiv: hmm, does plan 9 not link only the parts of libc that the program uses?
00:20:51 <elliott> mycroftiv: or is the startup code just that huge? :)
00:29:54 <elliott> mycroftiv: it's ok, i won't mock your OS if you tell me the truth.
00:30:03 <elliott> you don't have to worry.
00:31:14 <oerjan> IT'S A TRAP!
00:31:44 <elliott> mycroftiv: if you're crying, i'm sorry.
00:32:25 <elliott> [[> One can obviously easily construct a Turing machine, which for every formula F in first order predicate logic and every natural number n, allows one to decide if there is a proof of F of length n (length = number of symbols). Let ψ(F,n) be the number of steps the machine requires for this and let φ(n) = maxF ψ(F,n).
00:32:28 <elliott> Obviously?]] --reddit
00:32:30 <elliott> *sigh*
00:32:41 <elliott> it was obvious to me, it certainly would have been obvious to von neumann...
00:33:06 <elliott> [["Obviously'' if you're one of the greatest logicians or mathematicians ever, maybe.]]
00:33:13 <elliott> hey oerjan i'm one of the greatest logicians or mathematicians ever
00:33:17 <elliott> reddit proves it
00:33:20 <oerjan> yay
00:33:34 <elliott> oerjan: was it obvious to you?
00:33:37 <elliott> "One can obviously easily construct a Turing machine, which for every formula F in first order predicate logic and every natural number n, allows one to decide if there is a proof of F of length n (length = number of symbols). Let ψ(F,n) be the number of steps the machine requires for this and let φ(n) = maxF ψ(F,n)."
00:33:39 <elliott> if so: YOU ARE TOO!
00:33:47 <oerjan> of course
00:34:00 <oerjan> but then i've seen the result before
00:34:02 <elliott> dude we're like, all the greatest logicians or mathematicians ever
00:34:30 <elliott> oerjan: my brain has a wonderful rule that goes something like "decide if ... [in finite set] -> enumerate & check all elements"
00:34:35 <elliott> it gets applied all the time
00:34:40 <elliott> although not when in Program Vaguely Efficiently mode :p
00:35:12 <oerjan> sometimes no better algorithm is known
00:35:22 <elliott> oerjan: yes, well :)
00:36:15 <elliott> heh
00:36:19 <elliott> [[In January 2010, Grothendieck wrote a letter to Luc Illusie. In this "Declaration d’intention de non-publication", he states that essentially all materials that have been published in his absence have been done without his permission. He asks that none of his work should be reproduced in whole or in part, and even further that libraries containing such copies of his work remove them.]]
00:36:27 <elliott> that's totally going to happen!
00:36:56 <elliott> wait, that means the publication of the letter itself was against the request expressed in the letters :D
00:37:43 <Slereah> Even if it does, some dude probably has done the article about it again on that subject
00:37:46 <elliott> oh, it seems he may have requested its publication
00:37:53 <elliott> Slereah: eh?
00:37:55 <elliott> erm
00:37:59 <elliott> not its publication, just publication of the request
00:38:12 <elliott> wait no the letter is online :D
00:38:50 <elliott> oerjan: apparently grothendieck considers publication of his *past* works unlawful
00:39:12 <elliott> methinks he may be slightly shifted from his rightful place on his rocker
00:40:18 <oerjan> well it is possible that he has retained all rights and so can deny republication
00:40:56 <elliott> oerjan: oh, that may be entirely correct; even so, no sane recluse would go out of their way to do that, seeing as it doesn't affect them at all
00:41:11 <elliott> and making the request involves contacting the outside world >:)
00:43:08 <elliott> poor mycroftiv, living in fear of revealing the truth about his OS
00:46:11 <Sgeo> Windows 1.0?
00:49:50 <elliott> mycroftiv: you have betrayed me
00:54:42 -!- Mathnerd314 has quit (Ping timeout: 250 seconds).
00:56:18 <elliott> mycroftiv: i feel an overwhelming sadness in my hear.
00:56:20 <elliott> heart.
01:07:03 -!- Mathnerd314 has joined.
01:15:50 <pikhq> elliott: The worst part about being very smart is that you don't perceive yourself as being very smart.
01:15:58 <pikhq> elliott: You instead perceive everyone else as really stupid.
01:16:09 <elliott> pikhq: wrong, i have an excellent ego
01:16:16 <elliott> i just pretend to be humble to please people >:)
01:16:17 <elliott> ...sometimes
01:17:12 <pikhq> But surely you tend to assume that other people are going to see things that are obvious to you, only to have that horribly crushed by their ability to stop thinking entirely?
01:17:49 -!- Sasha2 has quit (Remote host closed the connection).
01:18:04 -!- Sasha has joined.
01:18:07 <elliott> pikhq: Not really.
01:19:30 <pikhq> Funny, I get horribly depressed by things like people finding math impossibly difficult, because I start by going "Well, I'm not *that* smart, and holy fuck these people are fucking stupid. GAAAAH."
01:19:53 <pikhq> It takes me a while to recall that yes, I actually am more intelligent than average.
01:21:12 <pikhq> Some part of me likes to think that I'm normal. Go figure.
01:23:39 <elliott> pikhq: You could try not giving a shit.
01:23:42 <elliott> I do that. It's great.
01:23:50 <elliott> I hardly give a shit about anything.
01:24:26 <pikhq> WHY DOES EUGENICS SEEM LIKE SUCH A GOOD IDEA SOMETIMES.
01:24:47 <elliott> pikhq: The editor of the HTML5 specification agrees!
01:25:34 <pikhq> Sadly, it's a bit unethical and it doesn't work. But still, it's damned tempting sometimes.
01:25:41 <Mathnerd314> pikhq: blame the parents for telling them to hate math
01:26:23 <pikhq> Mathnerd314: And the school system, which holds calculus as the highest form of mathematics anyone could ever aspire to.
01:26:25 <elliott> Mathnerd314: you're full of shit.
01:26:43 <elliott> you really think that the vast majority of parents tell their kids, "Kid... hate math, kay?"
01:26:56 <pikhq> Seriously, just by taking calc I in my junior year of high school people acted like I was fucking Newton or something.
01:27:03 <elliott> the educational system, sure, blame that. but saying that parents tell kids to hate mathematics?
01:27:19 <pikhq> (and I do not mean that in the sense of copulating with Newton)
01:27:40 <Mathnerd314> elliott: no, the kids ask their parents for help with their math HW, and the parents say "I don't like math; find someone else to ask"
01:28:05 <elliott> Mathnerd314: i think you are rather confused...
01:28:48 <elliott> pikhq: quick, what command should I do next
01:28:58 <oerjan> elliott: rm -rf /
01:29:14 <elliott> although it also accepts . and .., which it shouldn't
01:29:23 <pikhq> Mathnerd314: The worst part is, what passes for mathematics education is only tangentially *related* to mathematics!
01:29:25 <Mathnerd314> elliott: yes, me has doubleplusungood communication skillz
01:29:31 <pikhq> Mathnerd314: It's education in calculation!
01:29:36 <elliott> rm -rf .. being the ouroboros variant of rm -rf / :)
01:29:42 <elliott> pikhq: yo yo answer my questions more
01:29:48 <pikhq> (and, with the increasing use of calculators, education in the *operation of calculators*)
01:30:02 <pikhq> elliott: tac
01:30:39 <elliott> pikhq: Interestingly, not in POSIX!
01:30:48 <elliott> pikhq: And I think I should get mv before tac. :P
01:30:57 <pikhq> elliott: I say, why I say, that was a joke, son!
01:31:08 <Mathnerd314> pikhq: but they don't teach calculators well; just the other day I had to show someone how to multiply matrices
01:31:21 <pikhq> Mathnerd314: Try "show someone what a matrix is".
01:32:10 <Mathnerd314> pikhq: easy; it's just "a square full of numbers"
01:32:14 <pikhq> Mathnerd314: Remember: the typical person's extent of mathematical knowledge is elementary algebra and elementary arithmetic.
01:32:39 <pikhq> Oh, and some Euclidean geometry.
01:32:49 <elliott> pikhq: How was that a joke? :P
01:33:05 <pikhq> elliott: Why would you ever want tac as a coreutils?
01:33:11 <pikhq> elliott: coreutil
01:33:17 <pikhq> elliott: ... So that was a bad joke.
01:33:20 <pikhq> elliott: Anyways. mv
01:33:24 <elliott> pikhq: But tac is useful :P
01:33:49 <pikhq> Mathnerd314: We are literally talking people who do not know what a proof *is*.
01:33:51 <elliott> It's weird how some util-linux commands' man pages are filed under "BSD General Commands Manual"
01:33:58 <pikhq> Mathnerd314: Y'know, one of the most basic things in mathematics.
01:34:41 <elliott> pikhq: pcc has a wonderful bug in it that causes it to seemingly not print any warnings in some files
01:34:45 <elliott> just the filename :D
01:34:56 <elliott> "x.c is a bad program! I won't tell you why!"
01:36:01 <Mathnerd314> pikhq: not really; Euclid's "proofs" are different from today's notions
01:36:25 -!- sftp has quit (Remote host closed the connection).
01:36:44 <pikhq> Mathnerd314: They literally have no concept of logic, formal or informal.
01:37:58 <elliott> pikhq: that's a vast exaggeration at least with "informal"
01:38:08 <elliott> Mathnerd314: not really
01:38:17 <elliott> Mathnerd314: they left as much to the reader as modern advanced mathematics :)
01:38:38 <pikhq> elliott: You haven't heard people fall to common, basic logical fallacies all the freaking time, have you?
01:38:45 <elliott> pikhq: yes, yes i have.
01:39:01 <elliott> ok let's stop talking about this, #esoteric should be a place away from all this crap :P
01:39:19 <elliott> pikhq: you know what's evil about rename()?
01:39:33 <elliott> pikhq: Wrong! The answer is: it's in <stdio.h>
01:39:34 <pikhq> What?
01:39:38 <elliott> pikhq: My mv will be implemented with
01:39:46 <elliott> >:D
01:39:52 <elliott> although that isn't atomic
01:40:02 * elliott looks up how rename is implemented
01:40:57 <pikhq> System call.
01:41:11 <elliott> oh, indeed, rename is a system call
01:41:17 <elliott> pikhq: wait what; what is a system call doing in stdio.h
01:41:33 <pikhq> elliott: It being a system call is an implementation detail.
01:41:40 <pikhq> elliott: ISO C mandates rename.
01:41:53 <elliott> pikhq: yes, but it doesn't use the stdio machinery
01:41:59 <elliott> i guess otherwise it would go in unistd.h...
01:42:15 <pikhq> But it's part of ISO C's IO library.
01:42:29 <elliott> right
01:42:54 <elliott> pikhq: I love my library requirement system.
01:42:59 <elliott> /*@needs: barfx.c parsemode.c */
01:43:01 <elliott> First line of mkdir.
01:45:46 <elliott> pikhq: Remind me to replace getopt sometime. :p
01:46:15 -!- oerjan has quit (Quit: Good night).
01:58:13 <elliott> Note to self: refactor out rm's confirm logic into a library; mv needs it too.
01:58:23 -!- TLUL has changed nick to TGAY.
01:58:53 <elliott> TGAY: Totally Gay?
01:59:24 <TGAY> Trolling someone who hates gay people
01:59:34 <TGAY> Everyone in the channel did something like this
01:59:53 -!- TGAY has changed nick to TLUL.
02:00:56 -!- looler has joined.
02:01:16 -!- looler has quit (Client Quit).
02:03:55 <elliott> TLUL: what channel? and who?
02:04:08 <TLUL> #wikia-runescape, and the guy who's now nicked to Heterosexual
02:05:09 <elliott> TLUL: Man, you've made me join a channel about (1) Wikia and (2) RuneScape.
02:05:12 <elliott> I hate you to death.
02:05:16 <TLUL> LOL
02:09:34 <elliott> TLUL: googling this guy, he calls himself a conservative republican
02:09:39 <elliott> holy shit
02:09:42 <elliott> http://runescape.wikia.com/wiki/User:Liquidhelium
02:09:49 <elliott> republican logo as picture
02:09:52 <elliott> american flag background with eagle
02:09:52 <TLUL> Ikr
02:09:54 <elliott> "GOP"
02:09:57 <elliott> jesus.
02:09:58 <TLUL> Look on his talk page
02:10:03 <TLUL> We were trolling him at the bottom
02:10:22 <TLUL> And I recently linked him to some lesbian porn asking him to "help me identify the song in the background of this video"
02:10:23 <elliott> Christian, homophobic "I dislike liberals because of their tendency to treat people as idiots" what.
02:10:43 <TLUL> I know, he's a traditional bible-thumping homophobic moron
02:10:53 <elliott> # Anyone that calls me Liquidhelm, or a variant thereof, can expect to make me extremely mad.
02:10:54 <elliott> # Anyone that wants me to use the British spellings or date format can leave my page and not come back.
02:10:55 <elliott> oh man
02:10:58 <elliott> if he hadn't just left
02:11:01 <elliott> SO MUCH FUN
02:11:22 <TLUL> I wrote a module for TLULbot that auto-corrects any american english to british english in all of his edits
02:11:30 <TLUL> And notifies him on his talk
02:11:48 <TLUL> Using the name Liquidhelm
02:12:52 <elliott> TLUL: i would say you're cool but you evidently play runescape
02:12:57 <elliott> so sorry, i withhold the compliment
02:14:22 <TLUL> Actually, I haven't played in a long time
02:19:47 <elliott> TODO: mv; stuff.
02:20:47 <elliott> Also: See if I can fix pcc.
02:20:49 <elliott> (Maybe try tcc.)
02:20:50 -!- elliott has quit (Quit: Leaving).
02:49:07 -!- kmc has joined.
03:05:50 -!- augur has quit (Remote host closed the connection).
03:06:27 -!- augur has joined.
03:10:41 -!- augur has quit (Ping timeout: 245 seconds).
03:50:41 -!- olsner has joined.
03:53:29 -!- Goosey has quit (Read error: Connection reset by peer).
03:54:42 -!- augur has joined.
05:33:31 -!- sftp has joined.
05:55:59 -!- augur has quit (Remote host closed the connection).
06:06:12 -!- augur has joined.
06:06:59 -!- sftp has quit (Read error: Connection reset by peer).
06:16:07 -!- Mathnerd314 has quit (Remote host closed the connection).
06:17:39 -!- Quadrescence has quit (Ping timeout: 240 seconds).
06:20:58 -!- nooga has quit (Quit: Lost terminal).
06:45:33 -!- myndzi has joined.
06:57:18 -!- kar8nga has joined.
07:06:54 -!- MigoMipo has joined.
07:18:23 -!- MigoMipo has quit (Read error: Connection reset by peer).
07:25:15 -!- kar8nga has quit (Remote host closed the connection).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:02:59 -!- Sgeo has quit (Read error: Connection reset by peer).
08:14:46 -!- wareya_ has joined.
08:17:33 -!- wareya has quit (Ping timeout: 240 seconds).
09:12:50 -!- sebbu has quit (Read error: Connection reset by peer).
09:13:19 -!- sebbu has joined.
10:31:41 -!- TLUL has quit (Quit: *disappears in a puff of orange smoke*).
10:33:38 -!- Sasha has quit (Ping timeout: 240 seconds).
11:00:00 -!- ais523 has joined.
11:52:31 -!- ais523 has quit (Remote host closed the connection).
11:52:51 -!- ais523 has joined.
12:28:29 -!- yorick has quit (Remote host closed the connection).
12:45:23 -!- nooga has joined.
12:45:39 <nooga> the topic
12:47:41 <Ilari> Reference to that arsenic-using bacteria discovered in Mono lake?
12:48:52 <nooga> ha
12:48:59 <nooga> i just took the #tinyrb channel
12:49:28 <nooga> http://macournoyer.com/blog/2009/02/12/tinyrb/
13:15:27 -!- wareya_ has quit (Ping timeout: 276 seconds).
13:32:17 -!- ais523 has quit (Read error: Operation timed out).
13:39:24 -!- wareya has joined.
13:48:17 <nooga> http://createyourproglang.com/ oh, yeah!
13:48:30 <nooga> we should write our own book and sell it for \$
13:59:06 -!- Sasha has joined.
14:07:32 -!- Phantom_Hoover has joined.
14:08:42 -!- sftp has joined.
14:09:06 <Vorpal> Phantom_Hoover, hi. Spent a few minutes on MC this evening. You should check out my awesome throne room
14:09:38 <Vorpal> Phantom_Hoover, 25x25x7 (dug out most yesterday)
14:09:47 <Phantom_Hoover> Where?
14:10:03 -!- nooga has quit (Ping timeout: 276 seconds).
14:10:09 <Vorpal> Phantom_Hoover, you know the ladder in my mountain?
14:10:15 <Vorpal> Phantom_Hoover, from near skyway to mines?
14:10:23 <Vorpal> there is now a platform along the lower half
14:10:24 <Vorpal> there
14:11:24 <Vorpal> Phantom_Hoover, gold throne on obsidian podium. sad you can't sit on a block edge in MC (or sit at all)
14:14:42 -!- FireFly has joined.
14:14:45 -!- FireFly has quit (Changing host).
14:14:45 -!- FireFly has joined.
14:20:06 <Vorpal> Phantom_Hoover, ehird quit in there btw. While I was digging. He will fall quite a few tiles heh
14:20:13 <Vorpal> err blocks*
14:28:55 -!- oerjan has joined.
14:31:50 -!- ais523 has joined.
14:37:04 -!- Wamanuz3 has quit (Remote host closed the connection).
14:38:39 -!- Wamanuz has joined.
14:40:52 -!- ais523 has quit (Read error: Connection reset by peer).
14:42:11 -!- ais523 has joined.
14:42:21 -!- kmc has quit (Ping timeout: 240 seconds).
14:43:25 -!- augur has quit (Remote host closed the connection).
14:52:25 -!- goyo has joined.
14:52:59 <goyo> hoola chatos
14:53:15 <goyo> holaaa ?
14:53:24 <goyo> hay alguien ?
14:53:27 <goyo> cucuuu
14:54:16 -!- goyo has left (?).
14:58:43 -!- elliott has joined.
15:00:27 <Vorpal> elliott, weird?
15:01:21 <elliott> ?
15:01:34 <oerjan> YES HE IS
15:07:43 <Vorpal> elliott, you spawned and hung in midair on MC
15:07:51 <Vorpal> then left
15:08:05 <elliott> Vorpal: minecraft nullpointerexception'd
15:08:25 <Vorpal> elliott, oh weird
15:08:51 -!- nopseudoidea has joined.
15:14:04 -!- augur has joined.
15:16:38 -!- Sgeo has joined.
15:17:05 * Sgeo decides to refuse to do the assignment as given
15:17:25 <Sgeo> I will show, in Perl, two ways to do it without XOR swapping, then a XOR swap in a different language
15:19:49 <Phantom_Hoover> What's the assignment?
15:20:34 <Sgeo> "Write a Perl script that will use assign interger values to each of two variables.
15:20:35 <Sgeo> The program should swap the values in the variables without using any additional variables to temporarily hold either of the values.
15:20:35 <Sgeo> HINT: Use the bitwise exclusive or operator to complete this assignment"
15:20:53 <elliott> Sgeo: You're so eddgggggggggy.
15:23:13 <elliott> Vorpal: You're a postgres fan right?
15:30:26 <elliott> Vorpal: btw, about ElliottOS
15:30:39 <Sgeo> There's a third one now?!
15:30:55 <elliott> Sgeo: what?
15:31:05 <Sgeo> @, Kitten, and ElliottOS
15:31:08 <elliott> no
15:31:13 <elliott> @ is just shorthand for the latter
15:31:21 <Sgeo> Ah
15:34:04 <fizzie> Gah, why would someone do a xor-swap in *Perl* when you can do the oh-so-intuitive (a,b)=(b,a) variant instead.
15:34:40 <Sgeo> fizzie, to teach about its existence
15:34:47 <Sgeo> And I can never spell that word
15:36:31 <fizzie> Yeees, but in Perl? Or is your whole course about it?
15:39:13 <Phantom_Hoover> Sgeo is doing Computers For Stupid People.
15:39:28 <Sgeo> My whole course is about Perl
15:39:50 <Phantom_Hoover> Sgeo, why *are* you doing Computers For Stupid People?
15:39:57 -!- yorick has joined.
15:40:01 <Sgeo> Because I don't have a spine
15:40:51 <fizzie> Sounds like you could make quite an article in some medical journal somewhere, then.
15:41:17 <elliott> (*(*(argv++)))
15:41:25 <elliott> How does one parenthesise this correctly? >___________________>
15:41:56 <Sgeo> elliott, that seems.. weird to do unless you're doing it in a loop, which would make sense, so nevermind
15:42:58 <Sgeo> Also, um, wouldn't that only be useful for the first argument, or am I mistaken?
15:43:07 <fizzie> *argv++ == *(argv++), at least. And I don't think the one more star does anything special.
15:44:14 <elliott> fizzie: I should probably stop being a three-star programmer instead. :)
15:44:33 <elliott> (argv, here, is a ***.)
15:45:51 <fizzie> Then *(*argv)++ sounds a more likely operation, but anyway. (That's be like *argv++ for the usual **-argv if you pass &that there.)
15:46:10 <fizzie> s/'s/'d/
15:50:11 <oerjan> elliott: i vaguely recall postfix operators have precedence over prefix ones
15:50:14 <Phantom_Hoover> Sgeo, I'm assuming it's to work out the first character of each argument.
15:50:25 <elliott> fizzie: Oh, indeed.
15:50:26 <elliott> Phantom_Hoover: No.
15:50:52 <Phantom_Hoover> elliott, **argv is surely the first character of the first item of argv?
15:51:06 <fizzie> Phantom_Hoover: This is a three-star argv.
15:51:16 <Phantom_Hoover> fizzie, zuh?
15:51:18 -!- kmc has joined.
15:51:23 <Phantom_Hoover> Surely that segfaults?
15:51:37 <fizzie> Phantom_Hoover: He's given &argv to some function, I think.
15:51:45 <Phantom_Hoover> Ah.
15:51:53 <Gregor> ...
15:51:55 <Phantom_Hoover> Why would you want to modify argv itself?
15:52:13 <fizzie> Isn't that pretty common?
15:52:30 <Phantom_Hoover> fizzie, why?
15:52:33 <fizzie> gtk_init(&argv, &argv) for example.
15:52:55 <fizzie> So that the function can steal its own args and leave the app's args there.
15:53:15 <fizzie> s/argv/argc/ there, of course.
15:54:45 <Phantom_Hoover> Hmm.
15:55:00 <fizzie> I think there was some iffiness about manipulating the real argv's contents. And at least you can't add more arguments in there.
15:57:13 * Sgeo embarrasses himself in front of Gilad Bracha :(
16:00:05 -!- MigoMipo has joined.
16:00:10 <Vorpal> Phantom_Hoover, working on implementing your suggestion (fenceposts)
16:00:16 <Vorpal> but going to make some food (in RL) now
16:07:33 <oerjan> Sgeo: literally? :D
16:08:50 <Phantom_Hoover> Gilad Bracha is watching you.
16:11:11 * oerjan gets the reference
16:12:02 <Sgeo> Is there anyone here who doesn't?
16:12:19 <elliott> <fizzie> I think there was some iffiness about manipulating the real argv's contents. And at least you can't add more arguments in there.
16:12:19 <fizzie> Gilad Bracha will only answer those supplicants that perform the traditional ritual of embarrassment in front of him.
16:12:21 <elliott> I do that.
16:13:42 <fizzie> Which one; modify argv contents or add new args?
16:14:13 <Sgeo> That's it, I'm at war with this professor
16:14:51 <Sgeo> I mentioned it
16:14:52 <elliott> fizzie: The former. Or, well, I think I actually do both, but only ever add one, to replace the terminating NULL.
16:15:24 <Sgeo> "This is the way the authors of the book did it. It might not be the most secure, but we're only doing this for class, to show how to connect to the [MySQL] server"
16:15:32 <Sgeo> http://pastie.org/1352473
16:15:54 <fizzie> Quite a lot of people do modify argv, I just remember vaguely that there might've been some extreme-portability concerns. It might well be completely okay though.
16:17:11 -!- elliott has quit (Quit: Leaving).
16:17:21 -!- elliott has joined.
16:17:25 <elliott> #include <unistd.h>
16:17:26 <elliott> void _start(void)
16:17:28 <elliott> {
16:17:30 <elliott> _exit(0);
16:17:32 <elliott> }
16:17:34 <elliott> fizzie: ha ha, fuck you portability
16:17:36 <elliott> (--true.c)
16:20:08 <Phantom_Hoover> Well, at least it doesn't take 52 lines like GNU true.
16:20:30 <fizzie> But it doesn't check your mail. :/
16:24:30 -!- Sgeo has quit (Read error: Connection reset by peer).
16:24:57 -!- Sgeo has joined.
16:30:00 -!- nooga has joined.
16:32:17 <Sgeo> "Mine says that mybooks already exists" "Did you execute it twice?" "Yes" "That's why"
16:37:45 <Vorpal> fizzie, there?
16:38:24 <Vorpal> fizzie, you should check that throne room I made in MC out. 25x25x10 with obsidian podium and gold throne
16:38:35 <Vorpal> also chandeliers
16:39:12 * Phantom_Hoover realises he still types absurd queries into Google.
16:39:27 <Phantom_Hoover> Like "C++, suckishness thereof".
16:40:46 <Vorpal> hm it needs lava lighting in the floor
16:41:17 * Sgeo misread that as Java
16:41:30 <Sgeo> Wait, isn't MC client written in Java? :/
16:47:21 <ais523> hmm, a random reddit comment said that Eric Schmidt coauthored lex
16:47:25 <ais523> which is somewhat unexpected
16:47:46 <ais523> elliott: hmm, is _start in user or impl namespace?
16:48:13 <elliott> ais523: dunno; it's ELF-specific, though
16:48:26 <Sgeo> What happens if a script has x set but not r?
16:48:26 <ais523> I know C has weird rules for underscore-lowercase
16:48:27 <elliott> ais523: Eric Schmidt authored lex to be precise IIRC
16:48:29 <elliott> he was the original author
16:48:33 <elliott> you didn't know that? :)
16:48:36 <ais523> elliott: I didn't
16:49:02 <elliott> ais523: relatedly, see the last line in the BUGS section of http://plan9.bell-labs.com/magic/man2html/1/lex :)
16:49:41 <ais523> hmm, that lex does the same thing as UNIX lex
16:49:57 <ais523> I've got used to Plan9 by now doing something completely different with the same name
16:50:23 <ais523> also, that -t think looks very unUNIXy, I'd have made it output to stdout and people can redirect to lex.yy.c by hand if they like
16:50:55 <elliott> ais523: it's historic
16:51:03 <ais523> but this is plan9
16:51:07 <elliott> ais523: and not really; after all, "cc" used to have no -o option
16:51:11 <elliott> and just spat out to a.out
16:51:12 <ais523> why does it have to match what history UNIX options do
16:51:15 <ais523> elliott: in UNIX, fine
16:51:17 <elliott> on plan 9 it's e.g. 8.out where 8 is the architecture character
16:51:37 <ais523> but when you're trying to make a better UNIX, that seems like an obvious thing to change to get closer to the philosophy
16:51:45 <elliott> ais523: Plan 9 is Version 11 Unix, and even V10 Unix was quite pure
16:51:48 <elliott> Tenth Edition, that is
16:51:53 <ais523> why would you use -o if > exists?
16:52:02 <elliott> ais523: I mean, it's not as if they went "zomg! This is so crufty, let's replace it."
16:52:14 <elliott> ais523: because it was SysV and BSD that were cluttering it up, not Bell Labs Unix
16:52:45 <ais523> well, yes
16:53:05 <ais523> I'm the sort of person who sees any command-line options as too crufty if they change metadata, rather than add parameters needed to do what the program does
16:53:10 <ais523> e.g. I'm fine with most of the options of tr
16:53:22 <elliott> ais523: and I think there was this thought in Unixy days that compilers weren't really filters, because you didn't immediately process the output file in another pipeline or something
16:53:25 <ais523> but not with, say, -o
16:53:33 <ais523> elliott: compilers are pipelines nowadays
16:53:39 <elliott> ais523: indeed
16:53:41 <ais523> you really ought to be able to do something like cc | ld
16:53:54 <ais523> to compile and link
16:54:01 <elliott> meanwhile, I'm trying to make Flinix again
16:54:08 <ais523> perhaps even cpp | cc | ld, and you could write a script around that as your actual compiler
16:54:14 <elliott> (latest Linux kernel, X windowing system and networking on a 1.44 meg floppy)
16:54:32 <elliott> System is 604 kB
16:54:33 <ais523> latest stable kernel? or latest development kernel?
16:54:35 <elliott> Waaay too big!
16:54:36 <elliott> ais523: stable
16:54:46 <ais523> or recent stable kernel hacked to expose an API for writing keyloggers?
16:54:51 <elliott> :D
16:55:01 <ais523> stupid stupid exercise...
16:55:07 <elliott> ais523: I'm going to ridiculous lengths like, "disable the block layer; to get the actual floppy read, use the embedded initramfs support with ramfs"
16:55:47 <ais523> heh
16:55:49 <elliott> and i'm going to use http://asm.sourceforge.net/asmutils.html for the coreutils, most likely
16:55:52 <elliott> busybox is too big
16:56:04 <ais523> even if you strip cruft out of it?
16:56:23 <elliott> ais523: it's written in C!
16:56:27 <ais523> also, are you going to stay within 1.44 MiB? you can fit more than that much data on a 1.44 MiB floppy by formatting it weirdly
16:56:40 <elliott> ais523: yes, I am going to stay within that
16:56:50 <ais523> up to around 1.7, IIRC
16:56:54 <elliott> ais523: for the X server I'm going to try and get http://www.superant.com/smalllinux/tinyX01.html working; it's *very* small... libc5-based :)
17:01:19 <elliott> ais523: can you explain POSIX to me? "date MMDDhhmm[[YY]YY][.ss]"
17:01:23 <elliott> WHY IS YEAR IN BETWEEN MINUTE AND SECOND
17:01:26 <elliott> *MINUTES AND SECONDS
17:02:00 <ais523> elliott: I almost choked
17:02:04 <ais523> don't shock me like that
17:02:11 <elliott> ais523: :D
17:02:24 <ais523> my guess is that it's mandatory stuff first, optional stuff later
17:02:29 <ais523> also, [[YY]YY] has me suspicious
17:02:37 <elliott> clearly "99" means 99 AD
17:02:48 <ais523> does that mean that for 2010, you have to write 1020 to distinguish it from 1910 which would be just 10 or 1019?
17:04:01 <elliott> ais523: presumably it means you can either say 1999 or 99
17:04:04 <elliott> and 2010 for >1999
17:04:32 <ais523> oh, it is the right way round
17:04:43 <ais523> I interpreted it as [YY[YY]] somehow
17:05:03 <elliott> ais523: brilliant
17:05:32 <elliott> ais523: although, clearly the second YY should be interpreted as /addition/
17:05:40 <elliott> 2010 is 9911 or 1199
17:05:51 <elliott> the maximum year is 2098 -> 9999
17:06:04 <elliott> it's Y2K38-compliant...
17:07:16 * Sgeo has no desire to touch a script that has a blatant SQL Injection vulnerability
17:07:45 <ais523> Sgeo: not even to fix the vulnerability?
17:09:14 <elliott> WARNING: your nasm version 2.08.01 may miscompile asmutils, please use nasm 0.98.39!
17:13:20 <elliott> ais523: hmm, do you know how to force gcc not to omit an unused static function from an object file?
17:13:36 <Deewiant> Make it non-static?
17:14:18 <elliott> Deewiant: perhaps :)
17:19:02 -!- Sgeo has quit (Ping timeout: 255 seconds).
17:19:51 <elliott> Anyone happen to have a nasm 0.98.39 binary lying around?
17:21:27 -!- Zuu_ has joined.
17:25:18 -!- Zuu has quit (Ping timeout: 265 seconds).
17:26:51 -!- nopseudoidea has quit (Quit: Quitte).
17:27:27 <elliott> \$ wc -c src/cat src/mkfs.minix
17:27:28 <elliott> 684 src/cat
17:27:28 <elliott> 1013 src/mkfs.minix
17:27:29 <elliott> But... how.
17:28:14 <elliott> 97852 total
17:28:22 <elliott> Lesson learned: asm + Brain Raiter + other people = holy shit, man.
17:28:32 <elliott> It even has a fucking init.
17:28:47 <elliott> 522 bytes.
17:31:22 -!- Sasha has quit (Ping timeout: 250 seconds).
17:31:51 <Phantom_Hoover> Are you talking about asmutils?
17:32:54 <elliott> Yes.
17:33:00 <elliott> What the fuck. Their shell has command-line editing.
17:33:07 <elliott> It's 5.3K.
17:33:15 <elliott> Also pipes, redirection.
17:33:19 <elliott> Job control.
17:33:29 <elliott> AND TAB COMPLETION
17:33:34 <elliott> WTFF
17:34:02 <ais523> elliott: busybox has tabcomplete, but it's optional
17:34:08 <ais523> to be fair, a basic tabcomplete is pretty easy
17:34:14 <ais523> as you have to be able to handle filename*
17:34:42 <ais523> so you can just do the same thing but substitute on the command-line
17:34:48 <elliott> ais523: yes, but this thing has command-line editing (i.e. readline-esque), pipes, overwrite and append redirection, job control, *and* tab completion that shows the possible matches on double-tab like bash... and it's 5.3K.
17:34:49 <ais523> perhaps even reuse the code
17:35:00 <ais523> elliott: 5.3K seems about right for that
17:35:09 <ais523> most modern software is bloated
17:35:12 <elliott> ais523: err, have you looked at the size of a typical C binary sometime? :)
17:35:23 -!- Sasha has joined.
17:35:36 <ais523> normally around 50-60 KB due to everything linked into it, headers, etc
17:35:48 <elliott> ais523: well let's put it this way, I'm writing my own coreutils in C, linking with pcc/dietlibc -- which produces tiny binaries -- and then using Brian Raiter's insane sstrip utility; even then, my cat is 5K and my mkdir is 8K
17:35:51 <ais523> at least, that's where it was when I was younger, I'm not sure if it's changed since
17:35:57 <elliott> admittedly mine has graceful error recovery and messages
17:36:10 <ais523> I don't see why cat needs to be larger than a few tens of bytes
17:36:24 <ais523> (well, a few hundred if you're using a format whose headers require it)
17:36:32 <elliott> ais523: well, maybe it shouldn't be; I'm just saying that getting binaries that small is impossible using C
17:36:45 <elliott> my true/false are 248 bytes, and I've abandoned portability for that (ELF-only)
17:37:15 <elliott> ais523: and my cat is ridiculously simple; it accepts no options, and doesn't use standard IO at all
17:37:20 <ais523> elliott: I don't think it is
17:37:25 <ais523> impossible, that is
17:37:26 <elliott> ais523: it's probably only over 1000, 2000 bytes because I have the errno texts in there
17:37:32 <elliott> ais523: oh really? on Linux, you mean?
17:37:40 <ais523> no, I was talking about in general
17:37:43 <elliott> ais523: I mean on Linux
17:37:50 <ais523> I've used embedded C compilers for devices that only have 4 KiB of ROM altogether to write the program into
17:37:52 <elliott> the only reason these asmutils sizes are surprising is that they're on Linux
17:37:55 <ais523> and only a few tens of bytes of RAM
17:39:32 <elliott> ais523: just checked; my cat makes only one call to something that isn't libc, and it's strerror
17:39:44 <elliott> ais523: probably it would be 1K without the error strings table
17:39:56 <ais523> how many libc functions does it call exactly once? you could inline them to save space
17:40:04 <elliott> ais523: no libc functions
17:40:13 <elliott> apart from strerror.
17:40:14 <elliott> ais523: the functions it calls are: open, read, write, strerror.
17:40:19 <elliott> ais523: the first three are system calls.
17:40:32 <elliott> oh, wait
17:40:35 <elliott> strlen too
17:40:40 <elliott> so it knows how long strerror's result is
17:40:44 <ais523> elliott: you can inline syscalls too
17:41:04 <elliott> ais523: that reminds me of something I'm going to do in elliottOS
17:41:08 <ais523> if you want it small, why don't you make a custom strerror that just handles the errors possible from open, write, and read?
17:41:49 <elliott> ais523: I was considering having some sort of automated thing where I can just list error names and it'd include only them, but then I looked at the size of my local /bin/true -- 21K -- and realised that *that* was dynamically linked and, dammit, I'm way ahead of the competition already.
17:41:55 <elliott> pesky asm coders giving me legitimate competition :)
17:42:25 <elliott> right now i've got basename, cal, cat, date, dirname, echo, env, false, kill, link, mkdir, mv, pwd, rm, signal, sleep, strings, true, uname, vis and yes and they all fit into about 97K
17:42:31 <elliott> ais523: (on amd64, that is)
17:42:37 <elliott> so in fact it'd be more like 50K? on i386
17:42:40 <elliott> and the asmutils are i386
17:43:01 <elliott> ais523: oh, and if you link them all into one binary it's more like 23K. which, when UPX'd, turns into 15K. (on amd64)
17:43:02 <elliott> still...
17:43:46 <ais523> EACCES, EAGAIN (and EWOULDBLOCK if it has a different value), EBADF, EEXIST, EFAULT, EFBIG, EINTR, EINVAL, EIO, EISDIR, ENOSPC, ELOOP, EMFILE, ENAMETOOLONG, ENFILE, ENODEV, ENOENT, ENOMEM, ENOSPC, ENOTDIR, ENXIO, EPERM, EPIPE, EROFS, ETXTBSY
17:44:08 <ais523> some of those can't happen with the usage used in cat, e.g. EPIPE wouldn't happen as you use the default SIGPIPE handler, EINVAL wouldn't happen if you made sure you used valid arguments
17:44:10 <Gregor> "* There is no scientifically-justifiable reason to exclude pornography, which is a vital part of the web ecosystem. However, bear in mind that we're tracing JavaScript, not MPEG and JPEG decoding."
17:44:22 <Gregor> ^^^ This bullet-point is my crowning achievement as as a scientist.
17:44:42 <ais523> Gregor: did you write that?
17:44:44 <elliott> Gregor: What. X-D
17:44:47 <ais523> or cause someone else to write it?
17:44:52 <Gregor> ais523: I wrote it :P
17:45:10 <elliott> `addquote <Gregor> "* There is no scientifically-justifiable reason to exclude pornography, which is a vital part of the web ecosystem. However, bear in mind that we're tracing JavaScript, not MPEG and JPEG decoding." <Gregor> ^^^ This bullet-point is my crowning achievement as as a scientist.
17:45:20 <elliott> come on, HackEgo, you can do it!
17:45:26 <Gregor> <HackEgo> Eh, I'll get to it eventually.
17:45:37 <elliott> Gregor: why the hell do the quote scripts use sqlite? Can I make them use a plain text file instead?
17:45:41 <elliott> It'd be much faster :P
17:45:44 <elliott> `help
17:45:45 <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/
17:45:46 <HackEgo> 270|<Gregor> "* There is no scientifically-justifiable reason to exclude pornography, which is a vital part of the web ecosystem. However, bear in mind that we're tracing JavaScript, not MPEG and JPEG decoding." <Gregor> ^^^ This bullet-point is my crowning achievement as as a scientist.
17:45:46 <Gregor> elliott: Feel free.
17:46:23 <elliott> ais523: ok, this is ridiculous; the 97K asmutils has "cda2raw". and telnetd. and fingerd. and eject.
17:46:25 <elliott> and fdisk.
17:46:28 <elliott> and ftpd. and httpd.
17:46:32 <elliott> and ifconfig.
17:46:36 <elliott> and rc6crypt.
17:46:55 <elliott> and more.
17:46:58 <elliott> (as in, more(1))
17:47:12 <elliott> Vorpal Vorpal Vorpal
17:48:26 <HackEgo> No output.
17:49:23 <elliott> `run echo '#!/bin/sh' >bin/addquote; echo "[ \"\\$1\" ] || { echo 'Add what quote?'; exit 1}" >>bin/addquote
17:49:24 <HackEgo> No output.
17:49:30 <ais523> elliott: any respecting *utils clone needs to have a decent pager
17:49:33 <HackEgo> No output.
17:49:46 <Vorpal> elliott, yes?
17:49:49 <ais523> elliott: why are you screwing up addquote?
17:49:59 <elliott> ais523: can you please read? I'm rewriting it to use a plain text file
17:50:07 <elliott> Vorpal: sec :P
17:50:31 <ais523> presumably you're going to use shuf | head or something to pick random quotes?
17:50:44 <elliott> ais523: something like that, yes
17:50:52 <ais523> even though it's O(n log n) and thus inefficient?
17:51:02 <ais523> (or is shuf designed to run in O(n) when piping into head? that's theoretically possible)
17:51:14 <elliott> ais523: Well, actually I was going to use a sed script and wc -l.
17:51:17 <elliott> And probably \$RANDOM or whatever.
17:51:22 <elliott> ais523: or head and tail, actually
17:51:35 <elliott> tail -n +\$randomlinenumber | head -n 1
17:52:03 <elliott> `run mv quotes/quote.db quote.db.bak; rmdir quotes; echo 'echo "\$1" >>quotes' >>bin/addquote; echo 'echo "\$(wc -l quotes)) \$1"' >>bin/addquote
17:52:05 <HackEgo> No output.
17:52:09 <ais523> using shuf is so much simpler
17:52:14 <elliott> `addquote My hovercraft is full of eels.
17:52:15 <HackEgo> No output.
17:52:19 <elliott> ugh
17:52:24 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26893
17:52:31 <elliott> this is what using unix before vi must have felt like :)
17:52:43 <ais523> elliott: it's more like using unix before ed
17:52:47 <ais523> no editors allowed but cat
17:52:51 <elliott> ais523: well, my commands here are basically like ed commands
17:52:52 <elliott> just longer
17:53:05 <ais523> and scheduling cron to call emacs --retroactive
17:53:07 <elliott> `run sed -i 's/1}1 }/' bin/addquote
17:53:09 <HackEgo> No output.
17:53:12 <HackEgo> Failed to clone the environment!
17:53:15 <elliott> ais523: what @ emacs --retroactive
17:53:17 <elliott> ...
17:53:18 <elliott> Gregor:
17:53:22 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.22659
17:53:30 <elliott> what, it didn't fix my typo
17:53:46 <ais523> elliott: the idea is that Emacs does everything, thus in order to edit a file before Emacs is implemented, you just schedule a cronjob to call Emacs in the future when it is implemented
17:53:50 <elliott> `run sed -i 's/\{ /{/' bin/addquote
17:53:52 <HackEgo> No output.
17:53:56 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.29387
17:53:57 <ais523> using an option to Emacs to get it to edit the file back when you added it to the crontab in the first place
17:53:58 <elliott> ais523: brilliant
17:54:06 <elliott> ok, what am I getting wrong about sed?
17:54:11 <Gregor> Please mess with HackBot in PM :P
17:54:17 <elliott> Gregor: I'm not messing, I'm developing!
17:54:21 <elliott> and
17:54:22 <elliott> <HackEgo> Failed to clone the environment!
17:54:35 <Gregor> Please develop with HackBot in PM :P
17:54:42 <Gregor> Yesyes, it does that when you spam it too much :P
17:55:09 <elliott> sed -i 's/\{ /{/g' bin/addquote
17:55:12 <elliott> ok, there is no reason that doesn't work
17:55:14 <elliott> why does that not work.
17:57:18 <elliott> Ohh, I need a chmod to get it actually working... wait, do I?
17:57:35 <Gregor> `run hexdump -C bin/addquote
17:57:38 <HackEgo> 00000000 23 21 2f 62 69 6e 2f 62 61 73 68 0a 5b 20 22 24 |#!/bin/bash.[ "\$| \ 00000010 31 22 20 5d 20 7c 7c 20 7b 65 63 68 6f 20 27 41 |1" ] || {echo 'A| \ 00000020 64 64 20 77 68 61 74 20 71 75 6f 74 65 3f 27 3b |dd what quote?';| \ 00000030 20 65 78 69 74 20 31 7d 0a 65 63 68 6f 20 22 24 | exit 1}.echo "\$|
17:57:41 <elliott> <HackEgo> /tmp/hackenv.18166/bin/addquote: line 2: exit: 1}: numeric argument required
17:57:46 <elliott> Gregor: What.
17:57:51 <elliott> Why did you do that X-D
17:58:01 <ais523> elliott: what's to stop him catting a file in hexadecimal
17:58:01 <Gregor> Just making sure it wasn't a different issue :P
17:58:08 <ais523> also, isn't the command in question od -t x1?
17:58:14 <elliott> Gregor: ...what issue, exactly?
17:58:31 <Gregor> elliott: I didn't see how you got the file there in the first place, and fetch from pastebins usually has Windows line endings :P
17:58:34 <Gregor> `run ls -l bin/addquote
17:58:38 <ais523> Gregor: he put it there via cat
17:58:42 <elliott> Gregor: Mega echo, man. Also, I'm already fixing it.
17:58:43 <HackEgo> -rwxr-xr-x 1 5000 0 103 Dec 6 17:58 bin/addquote
17:58:43 <elliott> ais523: echo
17:58:44 <elliott> not cat
17:58:46 <ais523> oh, right
17:58:53 <elliott> I'm fixin' it
17:58:55 <ais523> that's effectively a cat
18:00:49 <Vorpal> <elliott> Vorpal: sec :P <-- well?
18:00:58 <elliott> Vorpal: okay, now
18:01:13 <elliott> Vorpal: you know how ElliottOS does everything in ring 0?
18:01:23 <Vorpal> yeah sure
18:01:34 <ais523> also, if you have cat in an infinite loop (as in cat /dev/zero > /dev/null), IMO it shouldn't exit on any signal but SIGKILL
18:01:41 <ais523> or if you send some other signal 9 times
18:01:53 <ais523> kill -9, we can assume kills it 9 times over
18:01:57 <Vorpal> elliott, go on
18:02:01 <elliott> Vorpal: yes, yes,
18:02:11 <elliott> Vorpal: well, a huge advantage of this
18:02:13 <ais523> elliott: I demand you use rings 1 and 2 for their intended purposes!
18:02:19 <elliott> Vorpal: is that syscalls no longer need to go through the kernel
18:02:22 <elliott> Vorpal: you can *inline a syscall*
18:02:24 <elliott> as in, literally
18:02:32 <elliott> ais523 saying "inline a syscall" to mean something else made me remember this
18:02:37 <ais523> how do you deal with paging?
18:02:39 <elliott> so, e.g., if some syscall talks to some hardware
18:02:45 <elliott> and some user program calls it
18:02:48 <Vorpal> elliott, yes obviously. Many syscalls are probably a bit too large though for that to be profitable
18:02:56 <elliott> well, the program's resulting machine code would actually talk to the hardware directly
18:03:02 <elliott> Vorpal: well this is where the synthesis-style stuff comes in
18:03:09 <elliott> the syscall code gets smaller when you remove the arguments
18:03:16 <elliott> or, some of them
18:03:20 <Vorpal> some yes
18:03:24 <elliott> anyway, this is great because kernel calls now cost exactly 0
18:03:31 <elliott> ais523: what do you mean, how do you deal with paging?
18:03:44 <ais523> elliott: pointers are different from usermode and kernelmode point of view
18:04:05 <ais523> e.g. two different programs can each use 0x110000 for their own variables
18:04:22 <ais523> if you aren't context-switching into a different ring, you'd need to avoid reverse segfaults somehow
18:04:22 <elliott> ais523: that's not how elliottos works
18:04:34 <ais523> ah, each application shares the same memory pool?
18:04:38 <elliott> ais523: ElliottOS has a single global address space, which maps to both disk and RAM
18:04:45 <elliott> RAM is essentially a disk cache
18:05:03 <elliott> ais523: security is implemented by not letting any random machine code run; everything has to go through the Friendly Compiler (unless the user explicitly overrides this)
18:05:31 <ais523> that sounds rather like using a JITting VM for everything
18:05:39 <ais523> and cacheing the output
18:05:44 <elliott> ais523: well, yes, basically
18:05:49 <ais523> in fact, it might actually be the same thing viewed from a different point of view
18:05:50 <elliott> ais523: the compiler is always present in the system, and runs all the time
18:06:09 <elliott> ais523: (although it's actually a specialiser, that's not too relevant in this case -- although it does mean that even /while a program runs/, compilation could be happening as part of it)
18:06:11 <elliott> due to specialisation
18:06:13 <ais523> also, how long are your pointers? 64 bits?
18:06:15 <elliott> i.e. runtime code generation
18:06:19 <elliott> ais523: it's x86-64 only, so yes
18:06:28 <ais523> normally it's a minor detail, but for that I feel it's somehow important
18:06:45 <elliott> ais523: I'm planning to actually have even the addresses that map to disk and RAM not be the "top level" of addressing,
18:06:52 <elliott> ais523: and have a global distributed namespace of object hashes as the top level
18:07:05 <elliott> e.g., an object is uniquely identified by its 512-bit identifier/(hash?)
18:07:10 <elliott> universally
18:07:13 <elliott> no matter what computer it's on
18:07:16 <elliott> also, objects are immutable
18:07:24 <elliott> so it ends up GCing your disk :)
18:07:33 <ais523> elliott: that can be a pain if you want to make backups
18:07:42 <ais523> to guard against bad sectors and the like
18:07:52 <elliott> ais523: how would it be a pain?
18:07:53 <ais523> and it's hard to see what, if anything, shred would do
18:08:02 <elliott> ais523: you mean, two copies of one file on one computer?
18:08:09 <ais523> yep
18:08:34 <elliott> ais523: that's relatively simple, you'd just construct the same object, basically
18:08:48 <elliott> ais523: anyway, do you mean shred as in the concept, or shred as in the unix command?
18:08:49 <ais523> it would let you use cp -rp for backups, though
18:08:49 <ais523> which is great
18:08:52 <elliott> if the latter: there are no unix commands
18:08:54 <elliott> and there is no cp.
18:09:17 <ais523> elliott: I mean, as in what the UNIX command's intended to do
18:09:21 <ais523> not as in its specific implementation
18:09:24 <elliott> ais523: anyway same-disk backups are pretty near worthless considering that bad sectors basically *don't exist* now, and my main target disk medium is solid state drives
18:09:28 -!- Sgeo has joined.
18:09:30 <elliott> because they have fast random access
18:09:31 <elliott> like RAM does
18:09:38 <ais523> elliott: they have a lot more bad sectors than magnetic hard drives or floppies
18:09:41 <elliott> which is important, obviously
18:09:43 <elliott> ais523: what, SSDs?
18:09:52 <ais523> yep, but their failure mode is for the sector to become readonly
18:09:53 <elliott> ais523: you do realise that with SSDs, the failure mode is "you can't write any more", not "you lose data", right?
18:09:55 <elliott> yeah
18:10:06 <elliott> so same-disk backups are quite irrelevant in my case
18:10:09 <ais523> so most SSDs just transparently copy the data somewhere else as soon as it's changed
18:10:46 <elliott> ais523: Pop quiz: How do you insert a ' in the middle of a '-quoted string in sh?
18:10:59 <ais523> '\'' is one character shorter
18:11:06 <Phantom_Hoover> And invalid.
18:11:06 <elliott> ais523: aww, but that's boring!
18:11:09 <elliott> Phantom_Hoover: no it's not
18:11:12 <ais523> Phantom_Hoover: really? I seem to remember using it
18:11:30 <Phantom_Hoover> Oh? I thought backslashes were ignored in ' strings.
18:11:40 <ais523> Phantom_Hoover: the backslash is outside the string there
18:11:46 <elliott> the ' is part of ais523's example
18:11:50 <elliott> {{{ '\'' }}}
18:11:50 <Phantom_Hoover> Ah.
18:12:00 <ais523> as in, 'I don'\''t know why I single-quoted this string in the first place'
18:14:38 <Sgeo> Does newspeaklanguage.org have an uptime .. percentage of 50% or something?
18:14:55 <elliott> Gregor: um, I can't seem to "touch quotes" in the home directory
18:15:00 <Sgeo> Did my proof of epic failness manage to crash something?/
18:15:04 <elliott> Gregor: was the quotes/ directory specially preserved somehow?
18:15:45 <Gregor> elliott: I see an empty file named quotes in \$PWD.
18:15:59 <elliott> Gregor: ...you do now, it wasn't there a second ago.
18:16:03 <elliott> <elliott> `touch quotes
18:16:03 <elliott> <HackEgo> No output.
18:16:04 <elliott> <elliott> `ls
18:16:04 <elliott> <HackEgo> addquote.bak \ babies \ bin \ foo \ paste \ quine \ quote.bak \ quote.db.bak \ tmpdir.20107
18:16:04 <elliott> <elliott> `ls
18:16:04 <elliott> <HackEgo> addquote.bak \ babies \ bin \ foo \ paste \ quine \ quote.bak \ quote.db.bak \ quotes \ tmpdir.20384
18:16:51 <elliott> ais523: btw, you know that shuf|head thing?
18:16:58 <ais523> yes?
18:17:06 <elliott> since head closes its stdin after reading the N lines, most programs will exit at that point
18:17:09 <elliott> so it probably is efficient
18:17:21 <elliott> but shuf has its own lovelily un-unixy solution, it has its own -n argument, so let's go with that :P
18:17:22 <ais523> it depends on how shuf is implemented
18:17:50 <elliott> hmm, although, I want to look up quotes by # too, so i won't do that
18:18:02 <ais523> to look up by number, just use tail|head with appropriate arguments
18:20:31 <elliott> Gregor: OK, WTF is it with the race conditions in HackEgo?
18:21:21 <ais523> <joeyadams> Seeing as how C's most common application is writing C compilers, it logically follows that JavaScript's most common application is writing JavaScript compilers.
18:21:27 <ais523> I like this line of reasoning
18:21:31 <Gregor> elliott: There are no race conditions, however consecutive runs are not guaranteed to run in the environments generated by previous runs. After running and giving you the results, it commits and merges (if necessary) them back into the mainline.
18:21:49 <elliott> Gregor: So I can't even flock(1) to make sure stuff doesn't overwrite other stuff?
18:22:08 <Gregor> elliott: No, it has real merging.
18:22:16 <ais523> Gregor: ...wow, I didn't think it would work like that
18:22:20 <ais523> what happens if the merge fails
18:22:26 <Gregor> ais523: Then the output is lost.
18:22:31 <elliott> Gregor: 'cuz, you see, I addquote'd two quotes and it decided to only use one.
18:22:32 <Gregor> (At least the FS part of the output)
18:22:34 <elliott> WHICH WAS LAME YOU UNDERSTAND
18:22:35 <ais523> both outputs? or the older, or the newer?
18:22:49 <Gregor> ais523: OK, admittedly that is a race condition :P
18:23:00 <Gregor> ais523: "Whichever one gets there first"
18:23:13 <Gregor> I don't consider it to be a problem because serializing everything would be a suckfest, and not the good kind.
18:23:41 <ais523> now this is giving me an esolang idea
18:23:48 <ais523> an esolang which records the state of the program at every command run
18:23:56 <ais523> and applies each command to a random previous state of the program
18:24:03 <ais523> and then merges the results somehow
18:24:42 <elliott> Gregor: So is there anything I can do?
18:26:52 <Gregor> elliott: The same "problem" exists right now. Either make your quotes mergeable, or don't add quotes in parallel sessions. I will not serialize its behavior.
18:28:50 <ais523> elliott: use something simple like a DB, rather than a complicated text file
18:28:54 <elliott> `addquote <Gregor> "* There is no scientifically-justifiable reason to exclude pornography, which is a vital part of the web ecosystem. However, bear in mind that we're tracing JavaScript, not MPEG and JPEG decoding." <Gregor> ^^^ This bullet-point is my crowning achievement as as a scientist.
18:28:55 <HackEgo> 270) <Gregor> "* There is no scientifically-justifiable reason to exclude pornography, which is a vital part of the web ecosystem. However, bear in mind that we're tracing JavaScript, not MPEG and JPEG decoding." <Gregor> ^^^ This bullet-point is my crowning achievement as as a scientist.
18:29:04 <Gregor> That was fast :P
18:29:06 <ais523> `quote
18:29:07 <HackEgo> 4) <lament> i read paths as penis :(
18:29:11 <Gregor> `quote 270
18:29:13 <HackEgo> 270) <Gregor> "* There is no scientifically-justifiable reason to exclude pornography, which is a vital part of the web ecosystem. However, bear in mind that we're tracing JavaScript, not MPEG and JPEG decoding." <Gregor> ^^^ This bullet-point is my crowning achievement as as a scientist.
18:29:16 <elliott> waitw ait
18:29:18 <elliott> it has new features
18:29:20 <elliott> LET ME TELL YOU THEM
18:29:20 <elliott> :P
18:29:23 <elliott> `pastequotes
18:29:24 <Gregor> OMG
18:29:26 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5886
18:29:31 <elliott> ...lawl
18:29:33 <elliott> That happens sometimes :P
18:29:34 <elliott> `pastequotes
18:29:36 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17215
18:29:42 <elliott> With one command, I have obsoleted Sgeo's site!
18:29:48 <elliott> AND
18:29:55 <elliott> `quote now accepts a regular expression!!!
18:29:56 <ais523> elliott: Sgeo's site works over HTTP
18:29:56 <HackEgo> No output.
18:30:11 <elliott> ais523: well, you can look at the quotes with HTTP here, too, it's just a plain text file
18:30:16 <elliott> just you don't get the quote numbers
18:30:21 <ais523> `quote /(?{print "Hello, world!";})/
18:30:22 <HackEgo> No output.
18:30:25 <elliott> IN FACT, I'm going to make quote use egrep now, now grep.
18:30:27 <elliott> ais523: No. :P
18:30:30 <ais523> elliott: your regex parser is broken
18:30:41 <elliott> `quote (DA)
18:30:42 <HackEgo> 257) <olsner> DAMN YOU, I'm leaving <Vorpal> olsner, FINALLY NOTHING BETWEEN ME AND WORLD DOMINATION!
18:30:52 <Sgeo> Another major difference: elliott's thing is currently active
18:30:53 <ais523> why the parens?
18:30:59 <elliott> ais523: because that would be literally (DA) in grep
18:31:06 <elliott> and I wanted to see if my s/grep/egrep/ worked
18:31:10 <ais523> but grep matches parens literally
18:31:15 <elliott> ais523: egrep doesn't
18:31:18 <ais523> oh, you're checking to see if you used a different grep impl
18:31:19 <elliott> thus the test
18:31:22 <ais523> what's egrep's syntax?
18:31:23 <elliott> same impl
18:31:25 <elliott> just a different option
18:31:27 <elliott> ais523: egrep == grep -E
18:31:35 <elliott> it's basically PCRE, without all the super-advanced stuff
18:31:37 <ais523> but if it doesn't do embedded Perl, it fails
18:31:40 <elliott> `quote oklopol
18:31:41 <HackEgo> 48) <oklopol> i can get an erection out of a plank, you can quote me on that. \ 50) <oklopol> i'm not a porn star, no \ 53) <oklopol> anyway, torture would be fun to experience, true <oklopol> should put that on my todo list \ 56) <oklopol> i'm my dad's unborn sister \ 74) <oklopol> GregorR: are you talking about ehird's
18:31:53 <Deewiant> IOW, it's basically not PCRE
18:32:15 <ais523> Deewiant: PCRE doesn't do embedded Perl anyway
18:32:17 <Phantom_Hoover> `quote AnMaster
18:32:18 <HackEgo> 7) <AnMaster> that's where I got it <AnMaster> rocket launch facility gift shop \ 68) <ehird> thanks AnMaster \ 73) <AnMaster> ehird, well yes probably \ 104) <AnMaster> I'm 100% of what sort of magic was involved in it \ 152) <AnMaster> fungot!*@* added to ignore list. <fungot> AnMaster: i'd find that a bit annoying to wait
18:32:27 <ais523> I think it has some sort of callback to let you do embedded any language you want
18:32:32 <elliott> `pastequotes AnMaster|Vorpal
18:32:33 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.4940
18:32:37 <elliott> `pastequotes AnMaster|Vorpal
18:32:38 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.26746
18:32:44 <elliott> hmm, looks like I just introduced a bug
18:32:46 <Phantom_Hoover> elliott, you said "Thanks, foo" without saying "Thoo"?
18:32:55 <ais523> (now I'm wondering if I should add a PCRE library as a C expansion library to C-INTERCAL, that allows embedded INTERCAL in regular expressions)
18:32:56 <elliott> Thoo :D
18:33:17 <elliott> #!/bin/sh
18:33:18 <elliott> if [ "\$1" ]; then quotes "\$1"; else allquotes; fi | paste
18:33:19 <Deewiant> Thue
18:33:21 <elliott> hmm, now where's the bug there?
18:33:30 <elliott> `run quotes "AnMaster|Vorpal"
18:33:31 <HackEgo> No output.
18:33:34 <ais523> test takes more than one argument?
18:33:36 <elliott> `quotes AnMaster
18:33:37 <Phantom_Hoover> `quote
18:33:37 <HackEgo> No output.
18:33:38 <HackEgo> 98) <fungot> ehird: every set can be well-ordered. corollary: every set s has the same diagram used from famous program talisman with fnord windows to cascade, someone i would never capitalize " i"
18:33:41 <elliott> `quotes Vorpal
18:33:42 <HackEgo> No output.
18:33:42 <Phantom_Hoover> `quote
18:33:44 <HackEgo> 89) <Sgeo> What else is there to vim besides editing commands?
18:33:45 <elliott> er
18:33:46 <elliott> "quotes" :D
18:33:47 <elliott> Phantom_Hoover: plz stop
18:33:49 <elliott> race conditions
18:34:11 <elliott> `quotes is now an alias for quote
18:34:12 <HackEgo> No output.
18:34:14 <elliott> `pastequotes AnMaster|Vorpal
18:34:17 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.27675
18:34:21 <elliott> `pastequotes AnMaster|Vorpal
18:34:24 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.19439
18:34:29 <elliott> wtf?
18:34:33 <elliott> Gregor: what *causes* that anyway
18:34:34 <elliott> `pastequotes AnMaster|Vorpal
18:34:35 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17564
18:34:50 <elliott> `pastequotes AnMaster|Vorpal
18:34:51 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5211
18:34:51 <Gregor> elliott: What causes what?
18:34:59 <elliott> Gregor: see every paste apart from the last one
18:35:04 <elliott> e.g. http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.17564
18:35:15 <elliott> Okay, http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.5211 is the Compleat Vorpal Kwote Kollection.
18:35:22 <ais523> `quote (((((a*)*)*)*)*)*b
18:35:23 <HackEgo> 3) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 5) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 8) <Warrigal> GKennethR: he should be told that you should always ask someone before killing
18:35:39 <ais523> hmm, we need more strings of consecutive as in the quotedb
18:35:48 <ais523> `quote ((((([^a]*)*)*)*)*)*b
18:35:49 <elliott> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas if!
18:35:49 <HackEgo> 3) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 5) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 8) <Warrigal> GKennethR: he should be told that you should always ask someone before killing
18:35:55 <elliott> `addquote <ais523> hmm, we need more strings of consecutive as in the quotedb <elliott> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas if!
18:36:01 <HackEgo> 271) <ais523> hmm, we need more strings of consecutive as in the quotedb <elliott> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas if!
18:36:04 <elliott> ais523: there you go
18:36:08 <ais523> `quote (((((a*)*)*)*)*)*b
18:36:10 <HackEgo> 3) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 5) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 8) <Warrigal> GKennethR: he should be told that you should always ask someone before killing
18:36:21 <ais523> `quote (((((a*)*)*)*)*)*s
18:36:22 <HackEgo> 1) <Aftran> I've always wanted to kill someone. >.> \ 2) <Aftran> I used computational linguistics to kill her. \ 3) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 4) <lament> i read paths as penis :( \ 5) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have
18:36:27 <elliott> ais523: egrep doesn't do backreferences AFAIK
18:36:33 <elliott> so good luck with that
18:36:33 <ais523> those aren't backrefs
18:36:39 <elliott> ais523: no, but that's only slow if you do backrefs
18:36:42 <ais523> `quote (((((a+)+)+)+)+)+s
18:36:43 <HackEgo> 4) <lament> i read paths as penis :( \ 5) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 6) <Keiya> I think the freemasons are actually a cover for homosexual men. \ 7) <AnMaster> that's where I got it <AnMaster> rocket
18:36:47 <elliott> (or are really stupid and implement it like that anyway, I guess)
18:36:50 <ais523> or if you use a backtracking impl, which most regex engines do
18:36:55 <elliott> ais523: grep, famously, doesn't
18:37:01 <elliott> presumably GNU weren't stupid enough to fuck even that up
18:37:01 <ais523> and egrep?
18:37:04 <elliott> ais523: EGREP IS GREP
18:37:08 <elliott> IT'S LITERALLY A SYMLINK
18:37:12 <elliott> `run ls -l \$(which egrep)
18:37:13 <tswett> Wait, did Aftran really say "I've always wanted to kill someone. >.>"?
18:37:13 <HackEgo> -rwxr-xr-x 2 0 0 115928 Apr 22 2010 /bin/egrep
18:37:14 <ais523> elliott: yes, but is it using the same impl?
18:37:19 <elliott> ais523: yes!
18:37:30 <elliott> In GNU grep, there is no difference in
18:37:30 <elliott> available functionality between basic and extended syntaxes.
18:37:33 <elliott> ais523: ^ grep(1)
18:37:38 <elliott> it's just a nicer syntax
18:37:41 <elliott> () instead of \(\) and the like
18:37:45 <ais523> `quote (...).*\1
18:37:47 <HackEgo> 3) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 5) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 6) <Keiya> I think the freemasons are actually a cover for homosexual men. \ 7) <AnMaster>
18:37:59 -!- nopseudoidea has joined.
18:38:09 <tswett> `quote arm
18:38:10 <HackEgo> 189) <fungot> ais523: killer bunnies can be harmed by domesticated canines only.
18:38:11 <ais523> hmm, is that doing backrefs or not, now? it returned a subset of the results
18:38:24 <ais523> `quote (.....).*\1
18:38:28 <HackEgo> 3) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 5) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 7) <AnMaster> that's where I got it <AnMaster> rocket launch facility gift shop \ 8) <Warrigal>
18:38:36 <elliott> Back References and Subexpressions
18:38:36 <elliott> The back-reference \n, where n is a single digit, matches the substring
18:38:36 <elliott> previously matched by the nth parenthesized subexpression of the
18:38:36 <elliott> regular expression.
18:38:38 <elliott> oh, fuck you GNU
18:38:39 <tswett> Remind me, is fungot bot or human?
18:38:43 <elliott> tswett: Bot :P
18:38:45 <ais523> `quote (....,.).*\1
18:38:46 <HackEgo> 31) IN AN ALTERNATE UNIVERSE: <oerjan> In an alternate universe, I would say "In an alternate universe, ehird has taste" \ 86) <ehird> Evolution is awful, awful, awful
18:38:51 <tswett> fungot: ko zvati
18:38:51 <ais523> `quote (.......).*\1
18:38:53 <HackEgo> 5) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 7) <AnMaster> that's where I got it <AnMaster> rocket launch facility gift shop \ 8) <Warrigal> GKennethR: he should be told that you should always ask someone before killing
18:39:01 <elliott> Known Bugs
18:39:01 <elliott> Large repetition counts in the {n,m} construct may cause grep to use
18:39:01 <elliott> lots of memory. In addition, certain other obscure regular expressions
18:39:01 <elliott> require exponential time and space, and may cause grep to run out of
18:39:01 <elliott> memory.
18:39:02 <elliott> Back-references are very slow, and may require exponential time.
18:39:02 <ais523> I wonder how far I can go wit hthis
18:39:05 <elliott> oh, whatever
18:39:06 <ais523> `quote (..........).*\1
18:39:07 <HackEgo> 5) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 7) <AnMaster> that's where I got it <AnMaster> rocket launch facility gift shop \ 12) <Madelon> Lil`Cube: you had cavity searches? <Lil`Cube> not yet <Lil`Cube> trying to thou,
18:39:11 <elliott> who cares, the quote db is way too small anyway :P
18:39:15 <elliott> for it to be a huge deal
18:39:17 <ais523> `quote (.............).*\1
18:39:18 <HackEgo> 5) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have definitely weakened... <Quas_NaArt> More practice is in order. \ 31) IN AN ALTERNATE UNIVERSE: <oerjan> In an alternate universe, I would say "In an alternate universe, ehird has taste" \ 71) <GregorR-L> If I ever made a game where you
18:39:19 <elliott> and HackEgo kills stuff that runs too long
18:39:25 <ais523> it's just repeating nicks now, mostly
18:39:30 <ais523> `quote (.{20}).*\1
18:39:32 <HackEgo> 31) IN AN ALTERNATE UNIVERSE: <oerjan> In an alternate universe, I would say "In an alternate universe, ehird has taste" \ 78) <GregorR> ??? <GregorR> Are the cocks actually just implanted dildos? <GregorR> Or are there monster dildos and cocks? <GregorR> Or are both the dildos and cocks monster? \ 138) <ais523> so
18:39:44 <ais523> `quote (.{30}).*\1
18:39:45 <HackEgo> 254) <Sgeo> I think I'll write that COBOL program a bit later<Sgeo> I think I'll write that COBOL program a bit later<Sgeo> I think I'll write that COBOL program a bit later<Sgeo> I think I'll write that COBOL program a bit later<Sgeo> I think I'll write that COBOL program a bit later<Sgeo> I think I'll write that COBOL program
18:39:50 <ais523> oh come /on/
18:39:56 <tswett> Whelp, that's the last quote.
18:40:01 <elliott> ais523: blame me for that, I was intending to remove it
18:40:08 <elliott> ais523: umm, I'll add a deletequote
18:40:11 <elliott> shouldn't be hard
18:40:12 <ais523> `quote (.{25}).*\1
18:40:13 <HackEgo> 31) IN AN ALTERNATE UNIVERSE: <oerjan> In an alternate universe, I would say "In an alternate universe, ehird has taste" \ 138) <ais523> so a.b.c.d.e.f.g.h.i.j.k.com might be self-relative, but a.b.c.d.e.f.g.h.i.j.k.l.com always means a.b.c.d.e.f.g.h.i.j.k.l.com.? \ 254) <Sgeo> I think I'll write that COBOL program a bit
18:40:42 <tswett> Say, it would be annoyingly easy to make a Lua bot.
18:40:55 <ais523> hmm, is "a.b.c.d.e.f.g.h.i.j.k.l.com" or "In an alternate universe, " longer?
18:41:03 <ais523> I want to know who has second place
18:42:20 <elliott> `delquote 254
18:42:21 <HackEgo> No output.
18:42:24 <elliott> `quote 254
18:42:25 <HackEgo> 254) <Gregor> elliott: My university has two Poultry Science buildings. <Gregor> Two!
18:42:27 <elliott> `quote 253
18:42:28 <HackEgo> 253) <Sgeo> How much do mainframes cost these days? I mean, they're obsoleteish, right? My notebook's much more powerful? So surely, they're cheap?
18:42:47 <ais523> `quote (.{25}).*\1
18:42:49 <HackEgo> 31) IN AN ALTERNATE UNIVERSE: <oerjan> In an alternate universe, I would say "In an alternate universe, ehird has taste" \ 138) <ais523> so a.b.c.d.e.f.g.h.i.j.k.com might be self-relative, but a.b.c.d.e.f.g.h.i.j.k.l.com always means a.b.c.d.e.f.g.h.i.j.k.l.com.?
18:42:54 <ais523> `quote (.{27}).*\1
18:42:55 <HackEgo> 138) <ais523> so a.b.c.d.e.f.g.h.i.j.k.com might be self-relative, but a.b.c.d.e.f.g.h.i.j.k.l.com always means a.b.c.d.e.f.g.h.i.j.k.l.com.?
18:42:59 <ais523> yay, I win
18:43:21 <elliott> `addquote This quote is here so I can test delquote.
18:43:22 <HackEgo> 271) This quote is here so I can test delquote.
18:43:25 <elliott> `delquote 271
18:43:26 <HackEgo> *poof*
18:43:29 <elliott> `quote 271
18:43:31 <HackEgo> No output.
18:43:32 <elliott> `quote 270
18:43:34 <HackEgo> 270) <ais523> hmm, we need more strings of consecutive as in the quotedb <elliott> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas if!
18:43:36 <elliott> yay
18:43:43 <elliott> `help
18:43:43 <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/
18:43:53 <ais523> 270 is not a particularly good quote either
18:43:59 <elliott> `delquote 270
18:44:00 <elliott> indeed
18:44:04 <HackEgo> *poof*
18:44:21 <ais523> `quote (.{5})(.*\1){3}
18:44:27 <HackEgo> 77) <ehird> no Deewiant <Deewiant> No?! <Deewiant> I've been living a lie <ehird> yep. <Deewiant> Excuse me while I jump out of the window -> \ 78) <GregorR> ??? <GregorR> Are the cocks actually just implanted dildos? <GregorR> Or are there monster dildos and cocks? <GregorR> Or are both the dildos and cocks monster? \ 93)
18:44:45 <ais523> `quote (.{5})(.*\1){4}
18:44:46 <HackEgo> 93) <Oranjer> oohhh <Oranjer> ha <Oranjer> heh <madbrain> and what are your other characteristics? <Oranjer> oh, many, madbrain <Oranjer> but it's hardly worth it to go on with listing that list here
18:44:50 <elliott> oh dear, I have a bug
18:44:55 <ais523> meh, just repeated nicks
18:45:13 <ais523> `quote ()*
18:45:18 <HackEgo> 1) <Aftran> I've always wanted to kill someone. >.> \ 2) <Aftran> I used computational linguistics to kill her. \ 3) <Slereah> EgoBot just opened a chat session with me to say "bork bork bork" \ 4) <lament> i read paths as penis :( \ 5) <Quas_NaArt> Hmmm... My fingers and tongue seem to be as quick as ever, but my lips have
18:45:19 <Deewiant> ais523: Disallow the <>?
18:45:32 <ais523> Deewiant: perhaps, but you'd need to use zero-width assertions for that
18:45:39 <elliott> wait, how does one do echo safely?
18:45:41 <Deewiant> ais523: No, just [^<]
18:45:44 <ais523> to distinguish <abcdeabcdeabcde> from abcdeabcdeabcde
18:45:45 <elliott> as in, avoid any arguments?
18:45:47 <elliott> echo doesn't allow --
18:45:52 <ais523> Deewiant: bu the <> aren't part of what's matched
18:45:53 <Deewiant> ais523: Of course it's not general but it could help
18:46:02 <elliott> ? anyone know?
18:46:31 <Deewiant> elliott: echo -
18:46:37 <ais523> there isn't one
18:46:38 <elliott> \$ echo - x
18:46:39 <elliott> - x
18:46:40 <elliott> Deewiant: you are incorrect
18:46:47 <Deewiant> elliott: Works on SOLARIS
18:46:54 <ais523> I just checked the manpage
18:46:56 <elliott> oh, I'll just use printf
18:47:08 <Deewiant> % echo - x
18:47:08 <Deewiant> x
18:47:12 <ais523> in fact, I'm not sure if it's possible to print -n, followed by a newline, with GNU echo
18:47:18 <ais523> without printing other stuff on the same line
18:47:21 <Deewiant> % echo - -n
18:47:22 <Deewiant> -n
18:47:27 <elliott> ais523: echo -n '-n
18:47:28 <elliott> '
18:47:34 <ais523> elliott: haha
18:47:42 <ais523> you're right, that does work
18:47:51 <ais523> without the newline, is it impossible?
18:47:55 <ais523> echo -n -n prints the null string
18:48:04 <elliott> ais523: echo -ne '-n\n'
18:48:15 <tswett> elliott: how old are you now, mate? Are you still younger than my little brother or have you outgrown him by now?
18:48:34 <ais523> elliott: /without the newline/
18:48:36 <ais523> that prints a newline
18:48:40 <elliott> ais523: ah
18:48:51 <elliott> tswett: I have indeed been getting older at an exponential rate.
18:49:23 <tswett> So now you're, what, 24 years old?
18:49:33 <ais523> tswett: he said /exponential/ not quadratic
18:49:40 <elliott> you tell him ais523!
18:49:44 <ais523> s/\/ /\/, /
18:50:06 <ais523> that'd have been clearer if I matched on the not...
18:50:24 <tswett> Oh, right.
18:50:26 <elliott> `addquote this is just a test
18:50:27 <HackEgo> 270) this is just a test
18:50:28 <elliott> `delquote 270
18:50:29 <tswett> 483 years old?
18:50:33 <HackEgo> *poof*
18:50:34 <elliott> ok, here is the current source code:
18:50:42 <elliott> allquotes http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/56862be707f3/bin/allquotes
18:50:44 <tswett> That is the mark of Gregor right there.
18:50:45 <elliott> quote http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/56862be707f3/bin/quote
18:50:49 -!- Sgeo has quit (Ping timeout: 255 seconds).
18:50:51 <elliott> pastequotes http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/56862be707f3/bin/pastequotes
18:50:53 <ais523> tswett: except that Gregor didn't write that
18:51:00 <tswett> It's still the mark of Gregor.
18:51:00 <ais523> elliott decided to rewrite our quotedb
18:51:08 <elliott> quotes is an alias of quote
18:51:28 <ais523> `addquote <tswett> That is the mark of Gregor right there. <ais523> tswett: except that Gregor didn't write that <tswett> It's still the mark of Gregor.
18:51:29 <elliott> ais523: my religion prohibits me from allowing a program to maintain what is just a list of \n-terminated strings with sqlite
18:51:29 <HackEgo> 270) <tswett> That is the mark of Gregor right there. <ais523> tswett: except that Gregor didn't write that <tswett> It's still the mark of Gregor.
18:51:35 <elliott> *a Unix program
18:51:41 <elliott> especially if the system is slow
18:51:48 <ais523> elliott: use Oracle instead?
18:51:48 -!- kar8nga has joined.
18:51:51 <elliott> ais523: hmm, can I redo that quote with two spaces between messages?
18:51:54 <elliott> it looks weird without it :P
18:52:05 <ais523> elliott: but I don't mentally put two spaces between messages
18:52:07 <ais523> otherwise
18:52:11 <ais523> if you split a sentence up like this
18:52:20 <ais523> it would become grammatically incorrect
18:52:23 <ais523> due to the incorrect spacing
18:52:29 <elliott> ais523: not grammatically, orthographically
18:52:38 <ais523> punctuation normally counts as grammar, doesn't it/
18:52:56 <quintopia> i think double-spacing is a good stand-in for newlines when they can't exist
18:53:06 <ais523> also, pressing shift immediately after / should make it into a ? even if you already sent the message to IRC
18:53:15 <ais523> quintopia: I normally use {{{ \ }}}
18:53:32 <elliott> allquotes http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/allquotes
18:53:32 <elliott> quote http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/quote
18:53:32 <elliott> pastequotes http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/pastequotes
18:53:32 <elliott> And the latest quote database is always available at http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/quotes.
18:53:36 <quintopia> ais523: that is also acceptable
18:53:36 <elliott> ais523: no, punctuation is orthography
18:53:46 <elliott> ais523: this is why augur speaks with perfect grammar but terrible orthography :)
18:53:55 <HackEgo> 271) test1
18:54:00 <elliott> hmm, I'd write an editquote except, really, you could just use ed for that
18:54:00 <HackEgo> 272) test2
18:54:04 <elliott> `delquote 271
18:54:05 <HackEgo> *poof*
18:54:06 <elliott> `delquote 272
18:54:08 <HackEgo> *poof*
18:54:20 <elliott> oerjan: mwahaha
18:54:22 * oerjan swats elliott -----###
18:54:29 <oerjan> I WAS NOT FINISHED TESTING
18:54:42 <oerjan> `quote 271
18:54:43 <HackEgo> 271) test2
18:54:48 <quintopia> pastequotes dumps all quotes to pastebin?
18:54:51 <oerjan> `quote 272
18:54:52 <HackEgo> No output.
18:54:58 <ais523> elliott: what would you use for something that was basically a serialised hash
18:55:04 <elliott> ais523: eh?
18:55:05 <ais523> like a typical editable learndb?
18:55:10 <elliott> ais523: ah
18:55:12 <ais523> instead of enter number, get quote
18:55:17 <ais523> enter topic, get quote
18:55:22 <oerjan> elliott: it seems you accidentally completed my test
18:55:29 <oerjan> `delquote 271
18:55:30 <HackEgo> *poof*
18:55:34 <oerjan> `quote 271
18:55:35 <HackEgo> No output.
18:55:36 -!- Sgeo has joined.
18:55:44 <elliott> quintopia: HackEgo's pastebin, yes; you can also search
18:55:48 <elliott> and get all the resulting quotes as a paste
18:55:48 <quintopia> elliott: that second delquote should say "there is no quote with that number" instead of *poof*
18:55:54 <elliott> by giving pastequotes an argument
18:55:57 <elliott> quintopia: ok, i'll implement that
18:56:01 <elliott> ais523: depends! I can think of a few possibilities off the top of my head
18:56:09 <elliott> ais523: the "accepted" solution is berkeley db
18:56:15 <ais523> ooh, now I've thought of doing it as a filesystem
18:56:16 <elliott> ais523: the ultra-Unixy solution is one file per info
18:56:20 <ais523> yep
18:56:32 <ais523> hmm, directories are basically just associative arrays, aren't they/
18:56:33 <elliott> ais523: and the sanest way is probably a file of the form "topic:...blah blah blah..."
18:56:35 <oerjan> quintopia: actually it said No output.
18:56:47 <elliott> wrong
18:56:50 <elliott> it said poof twice
18:57:00 <oerjan> oh wait
18:57:08 * oerjan read the wrong line
18:57:15 -!- nooga has quit (Ping timeout: 265 seconds).
18:57:27 <ais523> OK, new esolang idea: everything is an associative array
18:57:32 <ais523> including the keys of associative arrays
18:57:42 <ais523> you'd have to start with {}, then {{} => {}}, etc
18:57:47 * Sgeo was about to shout "Lua"
18:58:05 <ais523> Sgeo: JS works the same way as Lua on that
18:58:10 <ais523> which is to say, not like /this/
18:58:11 -!- nooga has joined.
18:58:12 <ais523> I mean /everything/
18:58:33 <elliott> testing one new feature before fixing delquote
18:58:35 <elliott> `pastenquotes
18:58:36 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.21067
18:58:41 <elliott> yay
18:58:43 <elliott> `pastenquotes 20
18:58:44 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/paste/paste.28761
18:58:51 <elliott> N random quotes, good for your health
18:58:58 <ais523> you can get a lot more possibilities at the next level
18:59:08 <Sgeo> Instead of going 0, 1, 2
18:59:10 <ais523> as you have two possible keys, either of which might or might not have an associated value
18:59:13 <Sgeo> It's more like 0, 1a, 1b
18:59:19 <ais523> and two possible values for each of them
18:59:25 <ais523> then there's a combinatorial explosion from there
18:59:37 <elliott> quintopia: hmm, actually, fixing delquotes like that would be a pain and not really worth it
18:59:41 <quintopia> ais523: could you at least have syntactic sugar for strings and identifiers, like, "elliott" automatigically expands to {"e" => {"l" => {"l" => {"i" => {"o" => {"t" => {"t" => {}}}}}}}}?
18:59:44 <ais523> it'd be much like basing everything on sets, or on lists, just more annoying
18:59:55 <ais523> quintopia: hmm, I wonder if that's an obvious way to do identifiers, I suppose it is
19:00:00 <elliott> actually, wait, I could do it
19:00:29 <ais523> this is more general than lists, I suppose, as you can always construct cons cells as {head => tail}, but you can also have more than one pair as long as the keys are distinct
19:01:31 <elliott> `delquote 9999999999
19:01:32 <HackEgo> No output.
19:01:36 <quintopia> it's equivalent to lists in my mind...at least in how you'd use it.
19:01:37 <elliott> done
19:01:42 <HackEgo> 271) blarghl
19:01:44 <elliott> `delquote 271
19:01:45 <HackEgo> *poof*
19:01:53 <elliott> the power of diff
19:02:00 <quintopia> :D
19:02:17 <elliott> http://codu.org/projects/hackbot/fshg/index.cgi/raw-file/tip/bin/delquote
19:02:18 <elliott> literally
19:02:19 <elliott> the power of diff
19:03:13 <elliott> I think the development time of this new quotes system reflects well on Unix, even when you don't have a visual editor :P
19:04:02 -!- cheater99 has quit (Ping timeout: 245 seconds).
19:04:47 -!- Sgeo has quit (Ping timeout: 255 seconds).
19:04:58 <ais523> `delquote `echo Hello World 1>&2`
19:04:59 <HackEgo> No output.
19:05:03 <ais523> boring
19:05:04 <elliott> ais523: that wouldn't work anyway
19:05:08 <elliott> you have to use `run for that
19:05:13 <elliott> ais523: but it only takes a number
19:05:17 <HackEgo> 271) example
19:05:20 <elliott> `run delquote \$(echo 271)
19:05:21 <HackEgo> *poof*
19:05:22 <ais523> yep, I wanted to give it a string to see how it reacted
19:05:31 <ais523> and I picked a string which would be noticeable if it got shell-unescaped
19:05:32 <elliott> ais523: well, I think that \$(... 1>&2) = ""
19:05:42 <elliott> same with ``, ofc
19:05:47 <elliott> where "" denotes empty string
19:05:47 <ais523> `run echo test `echo Hello World 1>&2`
19:05:48 <HackEgo> test
19:05:56 <ais523> `run echo test 1>&2
19:05:57 <HackEgo> No output.
19:06:01 <ais523> oh, HackEgo doesn't output stderr
19:06:10 <ais523> `run (echo test `echo Hello World 1>&2`) 2>&1
19:06:11 <HackEgo> Hello World \ test
19:06:15 <ais523> `run (echo test `echo Hello World 1>&2`) 2>&1
19:06:17 <HackEgo> Hello World \ test
19:06:22 <ais523> elliott: it does work
19:06:39 <elliott> ais523: heh, okay
19:06:55 <ais523> `` (or \$()) only redirects stdout, stderr stays unchanged
19:06:56 <HackEgo> No output.
19:06:56 <elliott> `run ls bin | grep quote
19:06:58 <HackEgo> addquote \ allquotes \ delquote \ pastenquotes \ pastequotes \ quote \ quotes
19:07:17 -!- Zuu_ has changed nick to Zuu.
19:07:27 -!- Zuu has quit (Changing host).
19:07:27 -!- Zuu has joined.
19:08:14 <elliott> http://www.superant.com/smalllinux/files/
19:09:31 <quintopia> oh this is bril http://d-e-f-i-n-i-t-e-l-y.com/
19:09:37 <elliott> ooooold
19:09:57 <elliott> ais523: guess who's running a Linux 1.0.9 system in qemu??
19:09:59 <elliott> OOPS THAT'S RIGHT
19:10:00 <elliott> IT'S ME
19:10:17 <elliott> wow, this GNU ls doesn't have -h
19:14:10 <elliott> grr, I can't find smallX
19:17:39 -!- nopseudoidea has quit (Quit: Quitte).
19:18:17 -!- cheater99 has joined.
19:19:40 <elliott> System is 557 kB
19:19:44 <elliott> it has ethernet support. well, sort of
19:19:49 <elliott> I don't think I've actually included any ethernet drivers :P
19:20:17 <ais523> things I didn't even realise it was possible to do by accident: I just pasted the entire front page of a forum into an email I was composing by mistake
19:20:36 <ais523> it was a plaintext email, but it was still laid out neatly with nested tables
19:21:28 <elliott> ais523: ha
19:21:39 <elliott> ais523: so, do you think 557 KiB is way too big for a kernel?
19:22:47 <elliott> "If unsure, say N." --Kconfig, about Ethernet support
19:22:54 <elliott> they be smokin' the crack
19:22:56 <oerjan> Nsure
19:23:28 <ais523> elliott: well, it is a kernel
19:23:36 <elliott> Vorpal: question! If I only enable 10/100Mbit ethernet, and don't include any 1Gbit ethernet drivers, will 1Gbit ethernet cards work with it?
19:23:38 <elliott> just at a slower speed?
19:23:39 <elliott> say yes
19:23:50 <elliott> ais523: yes, but it doesn't support swap.
19:23:51 <ais523> as long as it comes with all the applications you ever need compiled in as kernel modules, you don't actually need a userspace
19:23:55 <elliott> ais523: or any filesystems.
19:24:01 <elliott> ais523: or large swathes of useful APIs.
19:24:02 <Vorpal> elliott, I doubt it
19:24:06 <elliott> ais523: or just about any hardware at all
19:24:08 <ais523> "any filesystems"?
19:24:18 <elliott> ais523: I've disabled them all
19:24:20 <ais523> how does it access files, then?
19:24:21 <Vorpal> elliott, those are just grouping drivers
19:24:22 <elliott> I'll probably enable FAT or something
19:24:28 <elliott> ais523: it doesn't; you bundle it with an initramfs
19:24:34 <Vorpal> elliott, based on speed of unit they are for
19:24:39 <ais523> oh, ramfs is a filesystem
19:24:42 <elliott> ais523: the bootloader handles loading the kernel from the floppy, which contains the initramfs, which contains everything you need
19:24:43 <elliott> ais523: no it isn't
19:24:47 <elliott> it's internal kernel code
19:24:53 <ais523> semantics
19:24:57 <elliott> it isn't exposed to userspace the way i have it
19:25:14 <ais523> oh, there's something beautiful about having a filesystem but not exposing it to userspace
19:25:23 <elliott> Vorpal: gah, but these drivers will take up space! I need to fit the kernel AND programs into 1.44 megs!
19:26:48 <elliott> ;hackers' libc
19:26:48 <elliott> ;
19:26:48 <elliott> ;Yes, this is the most advanced libc ever seen.
19:26:48 <elliott> ;It uses advanced technologies which are possible only with assembly.
19:26:48 <elliott> ;Two main features that make this libc outstanding:
19:26:48 <elliott> ;1) calling convention can be configured AT RUNTIME (cdecl is default)
19:26:50 <elliott> ;2) THE smallest size
19:26:52 <elliott> --asmutils
19:27:21 <elliott> -rwxr-xr-x 1 elliott elliott 19246 Dec 6 17:38 libc.so.0
19:27:32 <elliott> -rw-r--r-- 1 elliott elliott 20566 Dec 6 17:38 libc.a
19:28:47 <ais523> 1) sounds like it takes up space
19:31:06 <elliott> ais523: I think when your libc is 20.5 decimal kilobytes, you can afford to spend bytes on lavish features :P
19:32:17 <elliott> (vmware cpu wtf--disable)
19:32:29 <elliott> hey ho, ELF support is smaller than a.out support
19:35:17 <elliott> hmm, did I forget to disable most of ipv4?
19:36:29 <ais523> I like the way you're doing IPv6 but not IPv4
19:36:35 <ais523> or are you doing neither?
19:38:17 <elliott> ais523: IPv4 but not IPv6
19:38:21 <elliott> why did you think i was doing ipv6?
19:38:46 <ais523> because you said you were disabling ipv4
19:39:09 <ais523> given that ipv4 is going to run out soon, and that ipv6 is a bit simpler anyway, I was wondering if ipv6 was the better choice if you were only going to have one networking protocol
19:39:17 <elliott> ais523: disabling *most of* :)
19:39:37 <elliott> ais523: i don't have an ipv6 link so i'm not getting rid of ipv4 :)
19:39:52 <elliott> grr, what more can I turn off..
19:40:24 <elliott> CONFIG_DEFAULT_SECURITY_DAC=y
19:40:24 <elliott> CONFIG_DEFAULT_SECURITY=""
19:40:24 <elliott> CONFIG_HAVE_KVM=y
19:40:25 <elliott> hmm
19:40:41 <elliott> │ Symbol: HAVE_KVM [=y] │
19:40:41 <elliott> │ Type : boolean │
19:40:41 <elliott> │ Selected by: X86 [=y] │
19:40:42 <elliott> heh
19:41:28 <elliott> I wonder if a nommu build is smaller :)
19:41:38 <fizzie> That's just the "can do KVM" symbol, I think; it's what actual CONFIG_KVM depends on.
19:42:24 <elliott> yeah
19:43:06 <Vorpal> elliott, well my kernel is 1.5 MB and it supports only my system
19:43:28 <elliott> Vorpal: How? I've disabled basically EVERYTHING EVER and mine is still 500K or so.
19:43:49 <elliott> Did you compress it with some secret EvenBetterThanLZMA? Seriously, I have no idea how to get this any smaller.
19:44:11 <ais523> maybe he's found one of the few files in existence azip actually beats LZMA on
19:44:19 <Vorpal> elliott, 500 K < 1.5 MB?
19:44:20 <elliott> ais523: does he have azip?
19:44:22 <Vorpal> uh
19:44:32 <elliott> Vorpal: Yes, but I don't see how you can pack a useful desktop system into 3x that size.
19:44:35 <Vorpal> elliott, I use zlib compression btw
19:44:36 <ais523> I managed to construct one, but lzma >> azip > bzip2 >>> gzip for most largish files
19:44:37 <elliott> Considering my kernel supports basically NOTHING.
19:44:40 <Vorpal> because I haven't bothered changing
19:44:54 <ais523> azip loses to bzip2 on smaller files
19:44:54 <elliott> ais523: Is azip fast?
19:44:58 <ais523> not massively
19:45:02 <elliott> ais523: faster than bzip2?
19:45:05 <elliott> bzip2 is pretty slow
19:45:12 <ais523> hmm, I haven't timed them against each other
19:45:13 <ais523> I'll do that now
19:45:37 <elliott> ais523: If it's faster to decompress than bzip2, I think it occupies a very useful niche.
19:45:44 <elliott> LZMA is way overkill and very slow and memory intensive for most purposes.
19:46:20 <ais523> I haven't really tried to optimise it, except by speeding up inner loops when they were getting in my way, and by using O(n log n) sorts over O(n^2) sorts
19:47:05 <elliott> 1648198 -> 851342 51.65% linux/386 vmlinux
19:47:07 <elliott> UP motherfuckin' X.
19:47:17 <elliott> Useless, unfortunately :P
19:47:21 <ais523> nah, it's much slower than bzip2 it seems
19:47:22 <elliott> It's bigger than my bzImage.
19:47:38 <ais523> I wonder how far it could be optimized
19:48:06 <elliott> ais523: you should try, I'd love to distribute stuff as azip and be able to claim to be doing it for reasons other than pissing everyone off
19:48:13 <elliott> ais523: btw, what's azip's native extension? .az?
19:48:16 <elliott> don't say .azip, that's boring
19:48:19 <ais523> yep, .az
19:48:41 <ais523> I abandoned azip mostly because I couldn't find a niche for it, it seems inferior to some other compression protocol in every respect
19:48:56 <elliott> hmm, do tickless systems have smaller kernels? :P
19:49:18 <elliott> System is 585 kB
19:49:19 * elliott make
19:49:44 <elliott> I refuse to stop until I have the kernel, asmutils, an X server and xterm on a single floppy.
19:49:52 <elliott> Ideally a super-stupid IRC client too. Say RawIRC :P
19:50:23 <ais523> decompression was about 4 times slower than bunzip2 on my test file
19:50:34 <ais523> and that can potentially be improved by memoizing it
19:50:54 <ais523> (it took around 2 minutes the first time because I forgot an < character and it was trying to read stdin; that run doesn't count)
19:51:03 <ais523> just 1.739s the second time
19:51:15 <elliott> ais523: aha!
19:51:22 <ais523> bunzip2 took 0.420s
19:51:22 <elliott> ais523: try getting rid of all your IO code and using mmap instead
19:51:37 <ais523> as I said, I haven't really tried to optimise it
19:51:58 <elliott> ais523: hmm, I don't have the code any more; could you pastebin it again? I'd like to have a go at optimising it
19:52:04 <elliott> System is 587 kB
19:52:08 <elliott> aww, tickless *adds* bytes
19:53:05 * elliott i686s it in the hopes of getting a smaller kernel
19:54:24 <ais523> http://pastebin.ca/2012252
19:54:35 <ais523> also, pastebin's syntax highlighting fails on ' inside shell comments
19:55:06 <ais523> also, why the hell does GNU shar try to use gettext?
19:55:55 <elliott> ais523: you missed an excellent opportunity there to give me a .tar.az
19:56:12 <elliott> ais523: also, what kind of name for a computer is desert? :)
19:56:35 <ais523> elliott: well, I like it
19:56:42 <ais523> also, you've had loads of chances to spot my hostname before
19:56:50 <elliott> ais523: I have?
19:57:00 <elliott> ais523: grrrrrrrr, pastebin.ca does DOS line endings
19:57:02 <ais523> when I set it, I actually conciously wondered how long it would be before a #esoteric denizen commented on it
19:57:09 <ais523> elliott: so does the Internet generally
19:57:17 <elliott> ais523: also -- sharbomb! :)
19:57:19 <ais523> you can just dtou it or something, though, can't you?
19:57:23 <elliott> yeah, I fromdos'd it
19:57:40 <ais523> and are shars supposed to bomb? IIRC, zips are
19:57:44 <elliott> ais523: do you use any particular flags when compiling this?
19:57:46 <elliott> and who knows
19:57:52 <elliott> I think they're meant to be like tars, and not
19:58:07 <ais523> elliott: not really, let me find my makefile
19:58:22 <ais523> seems I use gcc -O2 -ggdb -g3 -Wall -Wextra
19:58:43 <ais523> that's a rather higher debug option than I normally use, which says something about the code
19:59:17 <elliott> ais523: got the test file you were using?
19:59:29 <Phantom_Hoover> Anyone have a way to work out the pixelised image of an ellipse?
19:59:34 <Gregor> amazon.de -> "Mein Kampf" -> 2 results in the category "Gay & Lesbian?" -> "The Ideal Gay Man: The Story of Der Kreis"
19:59:36 <Gregor> Huh?
19:59:37 <Phantom_Hoover> (That isn't GIMP.)
20:00:34 <ais523> elliott: it's the released public beta of C-INTERCAL, as an uncompressed tarball
20:00:47 <ais523> azip works kind-of badly on files that have already been compressed, in fact much worse than many other algos
20:00:50 <elliott> ais523: the one with the - in the version number?
20:00:53 <ais523> yep
20:01:06 <ais523> I also use the GPL version 3 as a smaller test file
20:01:13 <ais523> when I want to be able to actually check the whole thing by hand
20:01:14 <elliott> ais523: have you got a link? my browser is being slow right now
20:01:21 <ais523> I can't remember where it is offhand
20:02:16 <elliott> System is 478 kB
20:02:18 <elliott> block layer = bloat
20:02:18 <ais523> here, if you want to see how the algo works, run "./azip -t GPL > /dev/null" (where GPL is any GPL-like document)
20:02:39 <ais523> that won't give the low-level summary, but it will give a high-level summary of how it works
20:02:40 <elliott> ais523: oh, I'm more interested in optimising it than understanding whatever crazy scheme you've come up with :)
20:02:44 <ais523> from there, it's pretty much just Shannon coding
20:02:53 <elliott> as far as I'm concerned, if it's faster than bzip2, it occupies a useful niche
20:03:08 <ais523> and it's a surprisingly simple scheme, resembling gzip's but with a much better ratio
20:03:20 <elliott> hmm, where's the GPL on a typical Debian system?
20:03:22 <fizzie> Phantom_Hoover: Can't you just use just about any language for that, iterate through points (-N, -M) .. (N, M) and for each point (x,y) set it if x^2/a^2 + y^2/b^2 <= 1 for suitable values of a, b? (I'm assuming an axis-oriented ellipse is just fine for you.)
20:03:44 <Phantom_Hoover> fizzie, too much work!
20:03:49 <Phantom_Hoover> It's for ROU construction!
20:03:53 <ais523> that's where I got my copy from
20:04:16 <augur> elliot: i dont speak with perfect grammar
20:04:29 <augur> elliott: but thats because performance is not competence
20:04:33 <elliott> augur: SURE IS
20:04:35 * ais523 wonders if a flamewar will start about using the GPLv2 vs. the GPLv3 as a test file for compression algorithms
20:05:04 <ais523> also, it's worth pointing out that azip writes to stdout, and reads from stdin if no file is given; unazip was written in a rush so it ignores command-line arguments and only acts as a filter, zcat style
20:05:15 <Gregor> Both are godawful test files.
20:05:15 <ais523> this is a superior interface to gzip's
20:05:21 <ais523> Gregor: in what way?
20:05:33 <Gregor> ais523: Well, part of a decent test /suite/, sure. But not as an individual test.
20:05:41 <Gregor> It's just ... ASCII test. Repetitive, ASCII text.
20:05:46 <Gregor> s/test/text/
20:05:49 <ais523> Gregor: it's not massively repetitive
20:05:50 <elliott> ais523: did you measure compression or decompression speed?
20:05:53 <ais523> and it has things like the section in allcaps
20:06:02 <elliott> Gregor: repetitive, ascii text -- you mean like source code?
20:06:02 <ais523> elliott: decompression's around 4x slower than bzip2
20:06:33 <ais523> compression is, atm, around 27 times slower; that obviously needs improvement
20:06:54 <elliott> ais523: hmm, why do you use unsigned long long?
20:06:58 <elliott> that's == unsigned long on 64-bit
20:06:58 <ais523> I suspect this is partly because bzip2 splits the input stream into chunks, and azip always compresses the entire file
20:07:01 <elliott> oh, for 32-bit
20:07:13 <ais523> in places I actually do absolutely need 64-bit precision
20:07:19 <ais523> like the fixed-point cube route routine
20:07:21 <ais523> *cube root
20:07:33 <ais523> which is memoized because it's far too slow otherwise
20:07:41 <elliott> long long is == int64_t on 64-bit, right?
20:07:58 <fizzie> Phantom_Hoover: perl -e 'use GD; (\$X, \$Y) = (110, 15); (\$a, \$b) = (100, 12.5); \$i = new GD::Image(2*\$X+1, 2*\$Y+1); \$i->colorAllocate(255,255,255); \$c = \$i->colorAllocate(0,0,0); foreach \$y (-\$Y .. \$Y) { foreach \$x (-\$X .. \$X) { \$i->setPixel(\$x+\$X, \$y+\$Y, \$c) if (\$x*\$x)/(\$a*\$a) + (\$y*\$y)/(\$b*\$b) <= 1; } } open F, ">:raw", "e.png"; print F \$i->png();'
20:08:08 <elliott> ais523: hmm, do assert()s get compiled out with -DNDEBUG?
20:08:11 <elliott> using glibc
20:08:30 <fizzie> Phantom_Hoover: That gives you a black-on-white ellipse in e.png, with a canvas of 221x31 and axes of 100 and 12.5.
20:08:46 <elliott> ugh, you've tied the parsing to the IO
20:09:26 <ais523> elliott: they do
20:09:31 <ais523> also, I don't think I did
20:09:39 <ais523> I interleaved the parsing with the IO, but they aren't tied to each other
20:09:44 <elliott> size_t innumber_bounded_flat(FILE* f, size_t bound) {
20:09:49 <elliott> outnumber_bounded_inner. */
20:09:49 <elliott> size_t innumber_bounded_inner(FILE* f, size_t minbound, size_t bound,
20:09:49 <elliott> int countup_000, size_t origbound) {
20:09:49 <ais523> and I don't think the IO is a noticeable overhead
20:09:50 <elliott> etc.
20:10:03 <ais523> ah
20:10:12 <elliott> ais523: well, azip certainly has one major advantage; unazip.c is frickin' small :P
20:10:19 <ais523> elliott: that was deliberate
20:10:23 <ais523> I think it can be made smaller, too
20:10:45 <ais523> anyway, all the I/O of compressed data is centralised in inbit/outbit
20:10:49 <ais523> because the system reads a bit at a time
20:11:18 <Phantom_Hoover> fizzie... how...
20:11:46 <elliott> ais523: well, if it's mmap, then inbit will just be return *s++ :P
20:11:47 <elliott> or whatever
20:11:53 <ais523> the file's padded to a whole byte at the end, because I had no other option
20:11:57 <elliott> ais523: but seriously, reading a bit at a time *is* going to be a noticeable overhead!
20:12:32 <ais523> elliott: the funny thing about azip is that it still beats gzip even if it doesn't bother encoding numbers at all and just writes them as (number of bytes in number)(number)
20:12:38 <ais523> although it's way behind bzip2 if you do that
20:13:20 <elliott> ais523: heh, really?
20:13:23 <elliott> gzip must be terrible
20:13:29 <ais523> indeed
20:13:55 <ais523> actually, I think I specialcased the number that was usually 2 in that encoding scheme
20:14:06 <fizzie> Phantom_Hoover: It might have some rounding-off problems when the border hits exactly the center of a pixel, and the center of the ellipse is (I think) in the middle of a pixel, and so on, so it might not be exactly what you want. (I mean, for a 200-pixel-wide ellipse that has the border tangential to the edge of a pixel, you'd need the center on the border between two pixels, or some-such.)
20:14:25 <fizzie> (You get what you pay for.)
20:14:27 <ais523> (azip encodes a 2 in the value that's usually 2 in a single bit, using longer codes for other numbers)
20:14:36 <Phantom_Hoover> fizzie, how did you code that in what... 5 minutes?
20:14:47 <elliott> Phantom_Hoover: ...it's trivial
20:14:54 <elliott> just a for loop setting some pixels
20:14:58 <ais523> see azip.c line 455 for a discussion of the probabilities
20:15:05 <Phantom_Hoover> I do not actually have GD.
20:15:07 <ais523> which seem relatively constant amongst source code tarballs
20:15:09 <elliott> ais523: how much memory overhead does azip have?
20:15:09 <Phantom_Hoover> Whatever that is.
20:15:12 <elliott> unazip
20:15:21 <ais523> elliott: ah, that's the brilliant part
20:15:25 <elliott> Phantom_Hoover: just install the package
20:15:26 <ais523> it's O(size of the compressed file), IIRC
20:15:35 <Phantom_Hoover> elliott, what's the name?
20:15:48 <elliott> ais523: I'm not impressed; LZO is O(0)
20:15:57 <elliott> ais523: well, O(1); you need a source and destination buffer
20:16:00 <ais523> is LZO actually a compressor?
20:16:07 <elliott> ais523: err, yes
20:16:09 <elliott> ais523: http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Oberhumer
20:16:14 <elliott> ais523: it gets almost-as-good results as gzip
20:16:15 <fizzie> Phantom_Hoover: libgd-gd2-perl.
20:16:17 <elliott> ais523: and can decompress in realtime (IO-bound)
20:16:21 <elliott> on even weak hardware
20:16:21 <ais523> I mean, the memory used by the entire unazip.c is O(size of compressed file) plus a constant
20:16:26 <ais523> although it can't stream
20:16:32 <elliott> ais523: same for LZO, it operates on blocks at a time
20:16:34 <ais523> why did I add the constant there?
20:16:37 <ais523> now I have two constatns
20:16:42 <fizzie> I'm not surprised you don't have it; it's quite horrible.
20:16:43 <ais523> *two constants
20:16:43 <elliott> so if you have a 4096 block size, it'll use 8K for the entire run
20:17:07 <ais523> hmm, ingenious
20:17:17 <ais523> but as we've already established, "almost as good as gzip" isn't actually very good
20:17:31 <elliott> ais523: lzo isn't designed to be well-compressing
20:17:32 <ais523> (azip the compressor eats a huge amount of memory, incidentally)
20:17:53 <elliott> ais523: it's designed to be better than not compressing, to use a tiny amount of constant memory, and to decompress so fast that it's IO-bound
20:17:59 <elliott> it fits all three, and is widely used as a result
20:18:59 <ais523> elliott: the encoding in that link is screwed up
20:19:14 <elliott> ais523: no it's not
20:19:16 <elliott> those aren't hyphens
20:19:25 <ais523> they're encoded as %E203 here
20:19:26 <fizzie> Phantom_Hoover: Anyway, you get more "elliptical-looking" endpoints out of it if you use something like 99.5 for \$a (because then the parallel-to-y-axis edges of the ellipse are tangential to the edge of a pixel) but that way you'll get just a 199-wide ellipse.
20:19:28 <ais523> which makes no sense
20:19:52 <ais523> also, Wikipedia is being very slow for me for some reason
20:20:11 <ais523> to the extent that the CSS hasn't loaded at all
20:20:24 <elliott> ais523: is there a development repository in ubuntu? like, something even less stable than natty
20:20:46 <elliott> ais523: wait, memoised_fibonacci is totally pointless, you can just inline every single value,t here's only 92
20:20:48 <elliott> *there's only 92
20:22:40 <ais523> elliott: indeed; I thought about that
20:22:50 <elliott> modifying it now to inline them all
20:22:55 <ais523> but decided a function to generate them was more self-documenting than a list of constants in which errors wouldn't be obvious
20:22:56 <elliott> hmm, what's the unsigned long long suffix? ULL?
20:23:02 <fizzie> I was thinking of using LZO in rfk86 -- based on the fact that I have a "tmp.txt.lzo" file here -- but in the end I went with a rather simplistic LZ77/Huffman decompressor, basically a simplified deflate.
20:23:03 <ais523> yep
20:23:13 <Phantom_Hoover> elliott, what's this about Fibonacci?
20:23:21 <ais523> btw, can you think of something that acts more or less like a fixed-point cube root but is less expensive to calculate?
20:23:47 <ais523> the maths indicated a ^0.3 would work best there, but I changed it to ^1/3 to make it easier and faster to implement, and it hardly makes any difference
20:24:05 <ais523> also, fixed-point cubes should not be that complex to write,
20:25:16 <elliott> ais523: wow, look at the whitespace pattern I get when word-wrapping the table: http://sprunge.us/bENR
20:25:38 <elliott> ais523: also, hmm, a logarithm of some sort maaaybe?
20:25:40 <elliott> perhaps not
20:25:45 <oerjan> !echo hi
20:26:03 <ais523> elliott: you expect log to be easier to implement than cube root?
20:26:12 <ais523> and act vaguely the same way?
20:26:17 <fizzie> Log2 certainly is rather easy.
20:26:24 <elliott> ais523: well, log2 is trivial :P
20:26:25 <fizzie> At least an approximation of.
20:26:32 <fizzie> It's not very similar, though.
20:26:37 <elliott> it isn't, no
20:26:43 <ais523> elliott: approximating to the nearest integer, OK, but getting the other decimal places, rather harder
20:26:54 <elliott> " Find integer log base 2 of the pow(2, r)-root of a 32-bit IEEE float (for unsigned integer r)"
20:26:57 <oerjan> !echo hi
20:26:59 <elliott> ais523: good enough for you? :P
20:26:59 <EgoBot> hi
20:27:00 <ais523> and I can't just use floating-point because it needs to be deterministic across systems, and I'm not good enough at floating-point to manage that
20:27:20 <oerjan> Gregor: what's with the frequent swallowing of the first command?
20:28:02 <oerjan> !haskell let fib = 0:1:zipWith(+)fib(tail fib) in fib!!92
20:28:14 <elliott> ais523:
20:28:14 <elliott> \$ time ./unazip <test.az >/dev/null
20:28:14 <elliott> real0m0.688s
20:28:25 <ais523> how does that compare to bunzip2?
20:28:28 <elliott> ais523: either that paid off, or my system is significantly faster than yours, which I doubt since IIRC the CPU is the same on our two computers
20:28:30 <ais523> also, what did you change?
20:28:30 <oerjan> !echo hi
20:28:33 <elliott> dunno, lemme try bzip2
20:28:35 <elliott> ais523: just made fibs a table
20:28:46 <fizzie> Unabomber, unazip.
20:28:49 <ais523> but they're memoized, so that should hardly make a difference
20:29:04 <elliott> \$ time bzcat test.bz2 >/dev/null
20:29:04 <elliott> real0m0.280s
20:29:11 <oerjan> !echo hi
20:29:12 <EgoBot> hi
20:29:21 <elliott> test is ick-0.-2.0.29.pax
20:29:26 <oerjan> !haskell let fib = 0:1:zipWith(+)fib(tail fib) in fib!!92
20:29:28 <EgoBot> 7540113804746346429
20:29:55 <ais523> all you're doing is calculating them at writecodetime rather than runtime
20:29:55 <ais523> and calculating the fibonacci numbers once is not going to take very long
20:29:57 <oerjan> !haskell 7540113804746346429 :: Double
20:29:59 <EgoBot> 7.540113804746346e18
20:30:09 <oerjan> why stop at 92?
20:30:17 <elliott> oerjan: 64-bit int
20:30:27 <oerjan> hm
20:30:38 <elliott> ais523: you use malloc?!
20:30:53 <ais523> well, how else am I going to allocate memory?
20:30:56 <elliott> ais523: I think you need indoctrinating into the cult of mmap.
20:31:03 <oerjan> !haskell maxBound :: Data.Int.Int64
20:31:06 <EgoBot> 9223372036854775807
20:31:11 <elliott> Malloc is slow. Realloc too.
20:31:21 <ais523> the whole thing has to be read before it can start decompressing
20:31:31 <elliott> ais523: I mean use mmap instead of malloc...
20:31:49 <ais523> well, I suppose you can figure out how much needs to be allocated in advance
20:31:52 <elliott> ais523: using MAP_ANONYMOUS
20:31:53 <elliott> ais523: no
20:31:55 <elliott> ais523: you can rely on overcommitting
20:32:00 <elliott> just mmap 2, 4 gigs, whatever
20:32:08 <Phantom_Hoover> elliott, is malloc slower than proper GC?
20:32:17 <elliott> Phantom_Hoover: Umm, that question is meaningless.
20:32:27 <fizzie> Is there a six-words-or-so description of this whole azip business?
20:32:32 <Phantom_Hoover> ...It is.
20:32:40 <ais523> well, I mean that after the first non-declaration line of main, you know right now how much memory you'll need for the rest of the program
20:32:46 <ais523> fizzie: my attempt to make a compression algorithm
20:32:50 <ais523> that's seven, but close enough
20:32:58 <elliott> fizzie: ais523's compressor. Slow, big... fix!
20:33:03 <fizzie> Yes, I was hoping for something that's sort of describe what's the novelty of it.
20:33:08 <ais523> I mostly abandoned it after I realised it wasn't as good as existing algos, elliott is trying to make something useful of it
20:33:10 <fizzie> I grokked that much from the context.
20:33:12 <ais523> fizzie: there isn't a novelty of it
20:33:17 <elliott> <ais523> well, I mean that after the first non-declaration line of main, you know right now how much memory you'll need for the rest of the program
20:33:18 <ais523> which is why I abandoned it
20:33:19 <fizzie> Oh. :/
20:33:20 <elliott> ais523: then why do you have realloc?
20:33:29 <elliott> if (n == 0) return 0;
20:33:29 <elliott> if (n >= memorylen) {
20:33:29 <elliott> memory = realloc(memory, sizeof (unsigned long long) * (n+1));
20:33:29 <elliott> if (!memory) {
20:33:31 <elliott> cuberoot_leftshift_40
20:33:34 <fizzie> I was expecting some sort of a radical New Kind Of Compression.
20:33:35 <ais523> elliott: that's in the memoization for cube roots
20:33:42 <ais523> fizzie: it is a radical New Kind of Compression
20:33:47 <ais523> just one that happens to be not as good as lzma
20:33:48 <elliott> ais523: why not just allocate a big static table?
20:33:59 <fizzie> Yes, well, that's the sort of novelty I was looking for.
20:34:27 <ais523> elliott: hmm
20:34:46 <ais523> I doubt it would make a massive difference
20:34:51 <ais523> especially as n there is theoretically unbounded
20:35:02 <elliott> ais523: you don't have to bother memoising every value
20:35:04 <elliott> only reasonable values
20:35:12 <elliott> │ Symbol: ANON_INODES [=y] │
20:35:12 <elliott> │ Type : boolean │
20:35:13 <elliott> │ Selected by: X86 [=y] || EPOLL [=n] || SIGNALFD [=n] || TIMERFD [=n] || EVENTFD [=n] || PERF_EVENTS [=y] && HAVE_PERF_EVENTS [=y] || INFINIBAND_USER_ACCESS │
20:35:14 <elliott> what's this then
20:35:55 <ais523> elliott: I think n there can range from 0 up to the number of tnodes in the file, plus some small constant
20:36:09 <ais523> if you run azip with -v, it'll tell you how many tnodes there are, plus lots of other irrelevant data
20:36:27 <elliott> ais523: when do you find out how many tnodes are in the file?
20:36:47 <ais523> it changes as the compression algo proceeds
20:37:02 <ais523> so not until the end do you find out how many it ended up with
20:37:26 <ais523> it spends most of its time eliminating tnodes by doing things like inlining them, or just putting them into different orders
20:37:28 <elliott> Vorpal: if you compile an initramfs into the kernel, does it receive the kernel's compression?
20:37:37 <elliott> and, accordingly, can I disable the "Load whatever-compressed initramfs" support?
20:38:14 <Vorpal> elliott, no clue
20:38:49 <ais523> I think there are a few tens of thousands, eventually, in the paxball test
20:39:09 <ais523> not as many as I'd like, really
20:39:22 <elliott> System is 480 kB
20:40:20 <elliott> things I can omit from asmutils: ccd (?), cda2raw, chvt(?), cpuinfo(?), cpuspeed, deallocvt(? I think so, I have no VTs), chvt(?), deflate(?), eject, fingerd, ftpd, httpd, m_inetd, ksyms(?), ...?
20:40:49 <ais523> chvt is also to do with VTs, I think
20:40:56 <ais523> and deflate's a compression algo IIRC
20:41:00 <elliott> I know that :P
20:41:42 <elliott> wonder if STARTUP=y shrinks it
20:42:07 <elliott> Note: Several utils (cpuinfo, eject, httpd, kill, etc) have their own additional configuration in the source code.
20:42:13 <fizzie> Yes, chvt does alt-fN style console-switching except programmatically.
20:42:57 <fizzie> cda2raw is an awfully specific utility, if it does what one'd expect from the name.
20:43:09 <elliott> It does, I believe.
20:43:09 -!- Sasha has quit (Ping timeout: 240 seconds).
20:43:17 <elliott> aren't CDAs raw PCM anyway?
20:43:17 <ais523> fizzie: extracts audio from a CD?
20:43:26 <elliott> well, maybe it takes a block device
20:43:34 <elliott> TODO: Figure out whether setting CPU to Pentium Pro actually made it smaller.
20:43:35 <ais523> elliott: at least on Windows, CDAs are just little files that specify which track on the CD to seek to
20:43:43 -!- Sasha has joined.
20:43:47 <elliott> ais523: that's CDDA
20:43:50 <elliott> CDA presumably stands for CD Audio
20:44:01 <elliott> (isn't it CDDA? oh, whatever. maybe not)
20:44:11 <ais523> elliott: the files have the extension .cda on Windows, and appear as files in the directory represented by an audio CD
20:44:17 <elliott> heh, gzip uses deflate
20:44:18 <elliott> PNG, too
20:44:22 <elliott> ais523: right, okay
20:44:23 <fizzie> And "really raw" CD audio isn't just raw PCM; there's also error-correction/subcode data.
20:44:26 <elliott> thought it was .cdda
20:44:29 <fizzie> I'm not sure how often you actually see those, though.
20:44:35 <elliott> fizzie: does the block device expose those? :P
20:44:41 <ais523> fizzie: really really /really/ raw CD audio has an extra layer of encoding
20:44:48 <ais523> because the physics of CDs prevent them from having two 1s in a row
20:45:03 <fizzie> Well, yes. But the "logical" format has frames of K samples and the error-correction.
20:45:08 <ais523> (luckily, you can have two 0s in a row, or CDs would be stuck doing 1010101010101010 forever)
20:46:08 <elliott> ais523: is it 0 -> 0; 1 -> 10?
20:46:10 <elliott> or 1 -> 01
20:46:14 <ais523> elliott: no, it's more complicated than that
20:46:18 <elliott> ais523: hmm, why?
20:46:24 <elliott> ais523: to allow seeking?
20:46:28 <ais523> so that each constant-length string of bits becomes a constant-length string in the encoding
20:46:44 <ais523> otherwise, a CD full of 0s would hold more data than a CD full of 1s
20:46:47 <elliott> 0 -> 101; 1 -> 010?
20:46:54 <elliott> <ais523> otherwise, a CD full of 0s would hold more data than a CD full of 1s
20:46:56 <elliott> that would be brilliant
20:47:02 <ais523> that doesn't quite work; 100; 010 would but is wasteful
20:47:03 <elliott> wait, 0 -> 101; 1 -> 010 doesn't get seeking right either
20:47:09 <elliott> oh, indeed
20:47:16 <elliott> ais523: what is it, then?
20:47:24 <ais523> the encoding itself uses a similar principle, but on blocks of quite a lot of bits on the LHS
20:47:29 <elliott> right
20:47:34 <ais523> I don't know what it is offhand, it's not the sort of thing you can memorise
20:47:49 <elliott> 0 -> 00, 1 -> 10, 11 -> 010
20:47:58 <elliott> then 111 -> 01010
20:48:00 <elliott> that doesn't work either
20:48:03 <elliott> but is a fun encoding anyway
20:48:49 <elliott> brb
20:52:40 -!- elliott has quit (Read error: Operation timed out).
20:58:37 <fizzie> It seems to do 8-bit blocks (i.e. bytes) that are encoded with 14-bit codewords from just a simple look-up table, and the words are chosen so that each 1 is separated by 2..10 zeroes.
20:59:41 <fizzie> And DVDs have a similar scheme except there it's a four-state FSM that translates 8-bit inputs to 16-bit codewords; but it has the same "ones separated by 2..10 zeros" property.
21:01:11 <fizzie> Oh, and the CD encoding also puts three "merging" bits between each 14-bit codeword, set so that the number-of-zeroes property holds, so it's actually a 8-to-17 bit encoding scheme.
21:01:17 -!- ais523 has quit (Read error: Connection reset by peer).
21:02:22 * Phantom_Hoover finally finished compiling Flight Gear.
21:02:57 <Phantom_Hoover> Aaaaaand, it segfaults.
21:03:27 <oerjan> a plane crash, then
21:05:57 <Phantom_Hoover> The plane accidentally flew over NULL.
21:08:58 -!- ais523 has joined.
21:10:04 -!- kar8nga has quit (Remote host closed the connection).
21:10:32 <Phantom_Hoover> So, anyway, I think the whole Wikiplia concept would be greatly improved by a) self-implementing it and b) allowing a program to alter that interpreter globally (given passwords and all that jazz).
21:16:46 <coppro> Wikiplia?
21:17:53 -!- ais523 has quit (Read error: Connection reset by peer).
21:18:59 <nooga> Wikiplia?
21:19:06 -!- ais523 has joined.
21:31:41 <Phantom_Hoover> coppro, nooga, an (unfortunately dead) attempt at making a wiki-based programming language.
21:33:49 <ais523> hmm, so what should be my reaction when someone emails me a WAV file of Rick Astley's "Never gonna give you up"?
21:34:05 <ais523> at least, I assume it is from the filename, I haven't actually tried to listen to it, especially as it's likely a copyright infringement
21:34:34 <ais523> and given that it's uncompressed, it's quite large
21:35:10 <oerjan> "That is _so_ 2008"?
21:35:38 <ais523> pity there's no way to delete some attachments from an email while retaining others
21:35:52 <ais523> so I'll have to delete the whole thing once I've looked through the attachments that I actually wanted them to send
21:36:19 <Phantom_Hoover> ais523, so I'm assuming you take pride in never violating copyright?
21:37:50 <ais523> Phantom_Hoover: that's something to be proud about?
21:37:58 <ais523> I just dislike violating the law without a really good reason
21:38:23 <ais523> also, it's definitely not illegal to be emailed a rickroll, unless the laws have gone completely insane; I think it's your reaction to it that matters
21:41:34 <Phantom_Hoover> The laws _have_ gone completely insane, but I actually want to talk about Wikiplia rather than a debate that is extremely old and conversions in which are extremely rare.
21:41:43 <Phantom_Hoover> How goes Feather?
21:42:37 <ais523> go away
21:42:58 -!- Mathnerd314 has joined.
21:50:51 <Phantom_Hoover> Mathnerd314!
21:51:14 <Mathnerd314> yes...?
21:52:03 * Mathnerd314 bows
21:55:50 <Phantom_Hoover> Bow MORE!
21:58:29 <Mathnerd314> no, it was merely for politeness's sake. you should return my bow, and more deeply
21:58:51 <Phantom_Hoover> And tell me what the next prime is!
21:59:24 <Mathnerd314> no. no primes for you.
22:00:18 -!- ais523_ has joined.
22:00:31 -!- ais523 has quit (Ping timeout: 264 seconds).
22:00:35 -!- ais523_ has changed nick to ais523.
22:01:00 <Vorpal> where is elliott when you need him
22:02:16 -!- nooga has quit (Read error: Operation timed out).
22:02:21 <ais523> Vorpal: what do you need him for?
22:02:43 <madbr> Do you guys think it's possible to design a language+CPU suitable for deep parallelism? (aside that there's map/reduce)
22:04:13 <Vorpal> ais523, he has nothing against dying in minecraft. I need someone to test a deadly trap :P
22:04:22 -!- nooga has joined.
22:04:34 <ais523> madbr: look at OpenCL and GPGPUs
22:04:46 <ais523> they're built pretty much entirely around parallelism
22:05:13 <ais523> to the extent that something as simple as an if is inefficient because it can't work the same way in every one of your thousands of threads at once
22:05:44 <madbr> yeah but that's a... really specialised architecture
22:05:56 <madbr> basically you're the one doing all the work :D
22:06:32 <madbr> I was thinking something more like a super-out-of-order cpu
22:07:00 <oerjan> Phantom_Hoover: 317
22:07:17 <Deewiant> Itanium?
22:07:29 <Phantom_Hoover> oerjan, you're hired.
22:07:48 <oerjan> yay
22:08:06 <madbr> where it loads in a huge block of instructions at once and then each instruction just waits after its data dependencies in parallel
22:08:17 <Phantom_Hoover> Turn up to work tomorrow with a spatula and 3 8GB flash drives.
22:09:04 <oerjan> I QUIT
22:10:21 -!- ais523 has quit (Ping timeout: 240 seconds).
22:10:42 <madbr> for instance if it was stack based, you could have something like "6 4 +" in the middle of an instruction string at it could already turn that into "10" for the next cycle
22:11:03 <madbr> even though there's a bunch of instructions before
22:11:32 -!- ais523 has joined.
22:13:49 <madbr> deewiant: yes, take that to the power of 11
22:14:20 -!- Sasha has quit (Read error: Connection reset by peer).
22:14:30 <Phantom_Hoover> oerjan, YOU CANNOT QUIT PHANTOM INDUSTRIES
22:14:45 <Deewiant> Just saying that such things as you describe do exist, though maybe not "to the power of 11" in the way you'd want
22:16:26 <Phantom_Hoover> Polynomials of the 11th degree are the BEST kind of polynomials!
22:16:48 <Phantom_Hoover> Vorpal, incidentally, remember that Minecraft diary elliott linked to?
22:16:51 <madbr> yeah I was thinking of something like...
22:16:53 <Phantom_Hoover> The guy died.
22:16:55 <Vorpal> Phantom_Hoover, which one?
22:17:05 <Vorpal> Phantom_Hoover, towards a new dawn?
22:17:08 <Phantom_Hoover> Vorpal, the one you had a sarcasm failure with.
22:17:14 <Vorpal> oh that one
22:17:20 <Vorpal> Phantom_Hoover, do you want to try a lethal trap?
22:17:30 <madbr> every new loaded instruction is allocated to a new register/execution unit
22:17:30 <Phantom_Hoover> Vorpal, depends.
22:17:47 <Phantom_Hoover> If all of the stuff in my inventory will be salvageable, then yes.
22:17:48 <Vorpal> Phantom_Hoover, I will provide a chest to put your items in
22:18:04 <Phantom_Hoover> No, that's too inconvenient.
22:18:12 <Vorpal> Phantom_Hoover, hm there is lava involved so...
22:18:13 <Phantom_Hoover> My inventory is nearly full of cobbles.
22:18:20 <Vorpal> Phantom_Hoover, two big chests?
22:18:29 <Vorpal> Phantom_Hoover, also I can donate more cobble if you want
22:18:34 <madbr> that unit reads the "ready" bit from its input dependencies. when all the dependencies are "ready" then it computes the result and in turn turns on its ready bit
22:18:45 <Vorpal> Phantom_Hoover, I have two big chests full plus a lot more spread out
22:18:48 <Phantom_Hoover> Vorpal, I'll pass.
22:19:13 <Vorpal> Phantom_Hoover, I don't know if you will die from falling or from the lava btw
22:19:26 <Phantom_Hoover> Is this your trapdoor?
22:19:26 <Vorpal> Phantom_Hoover, I could replace it with water I guess
22:19:45 <Vorpal> Phantom_Hoover, indeed.
22:22:03 <Vorpal> Phantom_Hoover, I replaced lava with water. But you will still get extra torches and extra gravel
22:22:09 -!- Sasha has joined.
22:31:13 <nooga> aha jak tak to mi sie nie chce < that's completely common and normal Polish sentence and I just realised that it looks weird to me
22:31:28 <nooga> like, uh, Chinese
22:34:38 <oerjan> fang en hai
22:36:39 <madbr> yeah that's the "wtf is that word" effect
22:37:14 <madbr> read a normal word over and over, eventually it will look like a weird alien word and you'll wonder where it came from
22:41:03 <nooga> ;D
22:42:53 <pikhq> nooga: 中国語っぽい？
22:44:01 -!- elliott has joined.
22:45:04 -!- Sasha has quit (Remote host closed the connection).
22:46:00 <elliott> .
22:46:01 -!- Sasha has joined.
22:46:59 <Vorpal> Phantom_Hoover, how much fall damage did you take?
22:48:19 <elliott> ?
22:48:39 <Phantom_Hoover> Vorpal, around 50%.
22:49:23 <elliott> ?
22:49:38 <Vorpal> Phantom_Hoover, hm not more
22:49:58 <elliott> ?
22:50:11 <Vorpal> Phantom_Hoover, and lava destroys item. Yeah this would be annoying if made twice as deep due to having to do the obsidian trapping chamber
22:50:12 <elliott> what fall
22:50:48 <Phantom_Hoover> elliott, Vorpal's trapdoor in the throne room.
22:52:28 <Vorpal> elliott, if you want to see how deep it is come on now. I'm not going to operate it again for a while. it is too painful to set up
22:52:33 <Vorpal> so see it while it is open
22:52:44 <Vorpal> elliott, and now means "within one minute"
22:54:04 -!- MigoMipo has quit (Read error: Connection reset by peer).
22:54:20 <Vorpal> okay, closing it
22:54:28 <oerjan> SPECIAL OFFER TO KILL YOU, ONLY TODAY
22:54:35 <Phantom_Hoover> elliott, it's not very deep.
22:54:38 * Phantom_Hoover → sleep
22:54:49 -!- Phantom_Hoover has quit (Remote host closed the connection).
22:58:01 <Vorpal> oerjan, no "special offer to see death trap depth
22:59:16 <oerjan> i am of course assuming that the only way to see the depth properly is to fall through it
23:00:16 * Vorpal prods elliott. At least see where the trap is :P
23:03:49 <Vorpal> elliott, fizzie suggested to use gravel in front of the throne so you could grovel
23:03:53 -!- ais523 has quit (Remote host closed the connection).
23:11:13 -!- augur has quit (Remote host closed the connection).
23:11:13 <nooga> SPARC
23:11:21 <nooga> is the best architecture EVER
23:11:35 <nooga> with this http://en.wikipedia.org/wiki/Open_Firmware
23:12:06 <nooga> an it's got Forth shell
23:20:33 -!- yorick has quit (Remote host closed the connection).
23:33:10 <pikhq> So did New World PPC Macs.
23:34:34 -!- sftp has quit (Remote host closed the connection).
23:35:52 <Gregor> ... doesn't EFI have a Forth shell to this day?
23:36:17 <elliott> no
23:36:36 <Gregor> Hm
23:37:28 <Vorpal> night
23:40:04 <pikhq> EFI is basically Open Firmware made worse.
23:40:17 <pikhq> Why? NIH
23:43:36 -!- Sasha has quit (Ping timeout: 250 seconds).
23:45:10 -!- Sasha has joined.
23:49:35 -!- Mathnerd314 has quit (Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.2.12/20101026210630]).
23:51:57 <nooga> Forth is cool
23:53:22 -!- Sgeo has joined.
←2010-12-05 2010-12-06 2010-12-07→ ↑2010 ↑all