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