< 1292198808 0 :quintopia!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1292198823 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292199228 0 :wareya!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1292199255 0 :wareya!~wareya@cpe-74-70-142-220.nycap.res.rr.com JOIN :#esoteric < 1292199375 0 :augur!~augur@208-59-167-26.c3-0.slvr-ubr1.lnh-slvr.md.cable.rcn.com JOIN :#esoteric < 1292199380 0 :oerjan!oerjan@tyrell.nvg.ntnu.no JOIN :#esoteric < 1292199460 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :mm, ice cappuccino < 1292199524 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, a bit on the chilly side? < 1292199531 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, but I guess it is still quite a cool idea < 1292199535 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's hot inside < 1292199564 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, but where does the ice come into it? < 1292199585 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well it's refrigerated < 1292199593 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, not hit then? < 1292199597 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :hot* < 1292199601 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :I'm confused < 1292199611 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i mean the room is hot < 1292199618 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1292199624 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, lucky you < 1292199627 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, in this winter < 1292199645 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : elliott, this looks interesting https://github.com/joelthelion/autojump/wiki < 1292199645 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :old < 1292199657 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, does it work well? < 1292199665 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Some people swear by it :P < 1292199677 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, your personal opinion? < 1292199678 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :use it for all your swearing < 1292199688 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :It doesn't support ksh so I'd be violating my principles by using it. < 1292199698 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :oerjan, I could have sworn you was about to make a pun < 1292199715 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, apart from that? < 1292199775 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: Got a bucket? < 1292199801 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, yes, /dev/null < 1292199809 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :(the bitbucket) < 1292199813 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: No, I mean, uh, come to ineiros' pit./ < 1292199822 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, not about to log in again < 1292199828 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, need to get up in 6 hours < 1292199829 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :so nigh < 1292199831 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :night* < 1292199836 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :The end is nigh. < 1292199859 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, just tell me what happened here on irc < 1292199874 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: I created two beautiful waterfalls and now I can't find the way back up. I could just /spawn :P < 1292199888 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, in his pit? < 1292199893 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, also /sethome < 1292199900 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: MAYBE in his pit. < 1292199917 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, why did you carry the buckets in your quickslots < 1292199935 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: It's what I do. < 1292199939 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :It was not unintentional :P < 1292199946 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, then you have to face the consequences < 1292199955 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Will they ever be the same again? < 1292199974 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :I < 1292199978 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :I'm sure he will remove them < 1292201476 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: I already did. < 1292201479 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant is still on. < 1292202176 0 :hagb4rd!unknown@unknown.invalid QUIT :Ping timeout: 264 seconds < 1292203975 0 :hagb4rd!~perdito@koln-d932907e.pool.mediaWays.net JOIN :#esoteric < 1292204507 0 :sftp!unknown@unknown.invalid QUIT :Read error: Connection reset by peer < 1292205024 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :http://torrentfreak.com/mininova-pays-settlement-to-brein-to-end-bittorrent-lawsuit-101210/ Mininova finally gives up. < 1292205029 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :RIP, you were shitty. < 1292205164 0 :tswett!unknown@unknown.invalid PART #esoteric :? < 1292205546 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: so people actually (1) still use DES < 1292205550 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: and (2) use DES to hash passwords < 1292205895 0 :Sgeo!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1292206000 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I'd link to something incredibly awesome, but it would reveal my approximate location < 1292206007 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Although I might have done so already < 1292206008 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Hmm < 1292206057 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :elliott, name the school I go to < 1292206080 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: Farmingdale. < 1292206083 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :http://sphotos.ak.fbcdn.net/hphotos-ak-snc4/hs887.snc4/72009_10150103222437744_618027743_7875332_7903663_n.jpg < 1292206095 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :How is that incredibly awesome < 1292206110 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :To be fair, I didn't actually look more than a glance. < 1292206134 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Well, it makes me happy, at any rate < 1292206181 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I don't actually know what it is :P < 1292206195 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is tempted to look for jpeg metadata ;D < 1292206198 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I'm certified to give CPR < 1292206204 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ooh good idea oerjan < 1292206209 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: um isn't cpr ... pretty easy < 1292206219 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :i mean, as far as things go :P < 1292206223 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: Sadly, you are not certified to take clear pictures. < 1292206241 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :elliott, ye...es < 1292206260 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Although doing it wrong on someone who doesn't need it can kill them < 1292206262 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: no interesting EXIF. < 1292206269 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1292206274 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: Doing it wrong on someone who does need it can kill them too < 1292206290 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Indeed, taking unclear pictures can cost lives. < 1292206298 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Someone who does need it is already dead. Doing it wrong just increases the chance that they'll stay dead < 1292206311 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :*severely increases < 1292206311 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: ... Your definition of "dead" SUCKS. < 1292206320 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Beyond all previous known bounds of suckage. < 1292206331 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :"I was dead but -- thanks to Sgeo -- I got better!" < 1292206343 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :CPR doesn't actually restart the heart < 1292206346 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :If you think cardiac arrest constitutes death, WELCOME TO THE PAST < 1292206347 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :"And I didn't even get turned into a newt!" < 1292206397 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo is now qualified in ZOMBIE CREATIONL. < 1292206398 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*CREATION. < 1292206409 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: OMG IF WE FLATLINE WE CAN BECOME ZOMBIES. < 1292206413 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :GOOD IDEA OR BEST IDEA < 1292206435 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I'm not entirely sure why trained persons are preferred for AED usage. I mean, as long as you follow directions... ah, that's probably why. Although I doubt the thing about using adult pads on children and not child pads on adults is on there < 1292206447 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :THAT'S CLEARLY HOW THE KIM FAMILY GOT THEIR SUPERPOWERS < 1292206469 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i mean most of them look half dead already < 1292206492 0 :hagb4rd!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1292206496 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: COPYRIGHT FUCK YEAH: Aston Kutcher is in trouble for broadcasting 13 minutes of the film Killers, starring Aston Kutcher, on the interwebnets. < 1292206520 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Did he make the film, or just star in it? < 1292206530 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: He made every single frame with his own nose. < 1292206534 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :By hand. < 1292206536 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I mean. by nose. < 1292206549 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :nasufacturing < 1292206565 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I wonder if porn companies do copyright violation lawsuits. < 1292206585 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :BEHOLD, UDEV: < 1292206585 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ENV{x11_options.EmulateWheel}="true" < 1292206586 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ENV{x11_options.EmulateWheelButton}="2" < 1292206586 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ENV{x11_options.YAxisMapping}="4 5" < 1292206586 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ENV{x11_options.XAxisMapping}="6 7" < 1292206586 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ENV{x11_options.Emulate3Buttons}="false" < 1292206588 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ENV{x11_options.EmulateWheelTimeout}="200" < 1292206600 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :That's right -- we replaced xorg.conf with a bunch of magic files that have conditional rules to ... set xorg.conf settings. < 1292206610 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :PROGRESS AUTOMATIC MAGICISM < 1292206613 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Gregor, aimed to embarrass < 1292206621 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: What. < 1292206628 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :embareass < 1292206639 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :... < 1292206641 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Kill him. < 1292206647 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Just kill him and evrything will be perfect. < 1292206708 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Die Bösen werden geschlachtet, die Welt wird gut. < 1292206736 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: IN AN ALTERNATE UNIVERSE < 1292206786 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that _was_ a quote in case you didn't realize < 1292206814 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: IN AN ALTERNATE UNIVERSE WHERE NORWAY IS HITLER < 1292206818 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :LIKE THE ACTUAL PERSON HITLER < 1292206822 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :QUANTUM THEORY SAYS IT IS POSSIBLE < 1292206836 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :many-person interpretation < 1292206840 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :hm I can't find the thing that let you easily do single-file git < 1292206948 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Many-Norway Interpretation < 1292206958 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1292207105 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/Erich_Fried < 1292207114 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(the poet of the above) < 1292207172 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i'm going to assume he was being *slightly* sarcastic :) < 1292207175 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :just a tad < 1292207182 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :elliott: you don't say :D < 1292207292 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: You should donate like three servers to me. < 1292207375 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: WHY HAVEN'T I RECEIVED THEM YET < 1292207419 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :"Do not doubt him who tells you he is afraid, but be afraid of him who tells you he has no doubts." < 1292207628 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :elliott: That would leave me with -3 servers. < 1292207645 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: SO? < 1292207717 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gives Gregor i servers < 1292207736 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION steals j servers from Gregor < 1292207779 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Seriously, kill him. < 1292207822 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION multiplies elliott by i < 1292207836 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Please. < 1292207847 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION quantum collapses Sgeo  < 1292207863 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :GET REAL < 1292208152 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :... *Anyone* still uses DES? < 1292208194 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :elliott: ... *That's* how X11 settings get set? < 1292208198 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :elliott: Udev‽ < 1292208209 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Seemingly! (That's for overriding stuff.) < 1292208229 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: The DES thing was Gawker. Their password DB got stolen and they've cracked two hundred thousand passwords or so. < 1292208236 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Serves them right too, Gawker are scum. < 1292208258 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Takes a complete moron to continue using DES. < 1292208289 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It was demonstrated to be entirely practical to crack 10 years ago... < 1292208335 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :What about Triple-DES? < 1292208352 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: lol. < 1292208356 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :YOU FUNNY MAN < 1292208399 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: (Well, yes, it works. For now.) < 1292208407 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: Triple DES is not comically poor. < 1292208426 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: *However*, there are much better encryption schemes to use. < 1292208427 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :All these things are "for now" < 1292208430 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Wanna build an FPGA DES cracker and run it on the database? (Not publicly leaked yet, but ...) < 1292208433 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: Hahahahahaha. < 1292208440 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I don't have $10,000 handy. < 1292208442 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: Okay, firstly: IT WAS PASSWORDS. < 1292208447 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :YOU DO NOT ENCRYPT PASSWORDS < 1292208450 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :YOU *HASH* PASSWORDS < 1292208464 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :... WAITWAITWAIT THEY ENCRYPTED THE PASSWORDS WITH DES WHY GOD WHY < 1292208465 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Why would someone encrypt a password? < 1292208467 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: http://www.sciengines.com/copacobana/ < 1292208473 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Don't need $10k. < 1292208493 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I wonder how they cracked so many so quickly. < 1292208518 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :elliott: With $10k worth of FPGAs. < 1292208519 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Is it possible for them to crack several without actually determining the key? < 1292208533 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :http://www.sciengines.com/copacobana/photos/photo_b4.jpg < 1292208543 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Fun thing, I have undone cryptography and computer security homework that I'm putting off at this moment < 1292208543 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: Are you sure that's $10k worth. Just buy evaluation boards :P < 1292208555 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: NEVER EVER DO CRYPTOGRAPHY *EVER* < 1292208557 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I should look for my textbook or something < 1292208562 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :That is directed specifically at you. < 1292208579 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :elliott, uh... why? < 1292208585 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :elliott: Still... Even if it is $10k, that's still *terrible* encryption. < 1292208603 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :That's seriously at the point of "if any single person wants it fairly badly, they can have it." < 1292208608 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :And surely you don't think I'm a security moron, do you? I mean, maybe I don't follow best practices in my own life, but < 1292208659 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And, of course, any business or government would hardly think anything of it. < 1292208698 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: Almost nobody should try and write cryptographic code. < 1292208708 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I would yell the same at pikhq and ais523. < 1292208719 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :But you get a special, additional message. < 1292208722 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :That message is: NEVER EVER < 1292208736 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Rule #1 of cryptography is you will almost certainly fuck it up. < 1292208742 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :he'd probably even yell it at himself. i hope. < 1292208782 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I still have homework I haven't done < 1292208790 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in fact every morning he stands in front of the mirror for 10 minutes yelling "DON'T DO CRYPTOGRAPHY!" < 1292208802 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's a wonder they let him out of that institution, really. < 1292208813 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :`quote matrimony < 1292208824 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :No output. < 1292208829 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :-_-' < 1292208835 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: i don't think anyone added it < 1292208850 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :In 7 min, I'm quitting IRC < 1292208895 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :`quote matri < 1292208895 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Forever? < 1292208896 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :No output. < 1292208899 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :`quote oerjan < 1292208900 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :7) what, you mean that wasn't your real name? Gosh, I guess it is. I never realized that. \ 19) ehird has gone insane, clearly. \ 21) oerjan: are you a man, if there weren't evil in this kingdom to you! you shall find bekkler! executing program. please let me go... put me out! he's really a < 1292208906 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :`run quote oerjan | tail -n 2 < 1292208908 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :195) it's not obvious from quantum mechanics that you can destroy a universe arbitrarily. \ 247) oerjan: What, can girls aim their penises better? < 1292208916 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: what did you do to the quote < 1292208937 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :nothing, and i do not recall anyone actually _adding_ it to HackEgo in the first place < 1292208946 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1292208973 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :18:47:56 oerjan: No, I definitely meant E=m. Who cares about the energy of an object in motion, anyways? :P < 1292208973 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :18:48:50 THAT IS THE KIND OF ATTITUDE THAT HAS LEAD TO THE CURRENT OBESITY EPIDEMIC < 1292208973 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :18:49:22 oerjan: :D < 1292208973 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :18:49:36 oerjan: you need like a web form where people can file requests to be married to you, just for a few weeks < 1292208973 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :18:49:39 it could be very profitable < 1292208975 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :18:49:53 oerjan: :D < 1292208977 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :18:50:18 pikhq: don't you agree, i mean < 1292208979 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :18:50:24 that comment totally warrants brief matrimony. < 1292208981 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :hard to condense to quote size < 1292209056 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :n/m < 1292209162 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :TWO MINUTES LEFT < 1292209198 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ban him after the 7 minutes < 1292209200 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :FOREVER. < 1292209246 0 :benuphoenix!~benuphoen@beowulf.benuphoenix.com JOIN :#esoteric < 1292209250 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I'm sorry, Elliott. I'm afraid I can't do that. < 1292209275 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: you're now my least favourite insane all-powerful AI. < 1292209280 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: (previously you were my favourite) < 1292209299 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i'm not very all-powerful really. ok maybe just a little. < 1292209379 0 :benuphoenix!unknown@unknown.invalid QUIT :Client Quit < 1292209417 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: YOU SHOULD COME BACK TO AGORA < 1292209419 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: ALSO YOU < 1292209432 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :the great thing is, it's so boring now that you don't have to do anything < 1292209503 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I was outside with the dog < 1292209511 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :I should probably look for my textbook or something < 1292209516 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: it's been two minutes < 1292209519 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ban him < 1292209520 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Or do the ambiguous Perl project < 1292209530 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Or go insane < 1292209542 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :YOU ALREADY DID THAT < 1292209569 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: IT'S BEEN SEVEN MINUETS < 1292209573 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yes, all seven Minuets < 1292209580 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :more like twelve, actually < 1292209598 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :My laptop's acting broken < 1292209605 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gives his laptop the middle finger < 1292209610 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: that does not stop you quitting IRC < 1292209617 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: can't you see he has a problem < 1292209619 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: YOU MUST BE THE REMEDY < 1292209631 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: IRC終われ! < 1292209657 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: GOATS HATE YOUR CONNECTION < 1292209670 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :elliott: well but don't you see, if i banned people for procrastinating here, i'd have to ban myself too < 1292209686 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: yeah but you don't say "OKAY I'M GOING IN N MINUTES" and then not :D < 1292209694 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal only gets away because → is not *yet* regulated < 1292209729 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :also, he actually _does_ occasionally sleep at nighttime < 1292209763 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well me too although that's more of a pseudorandom accident < 1292209827 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo: BATS < 1292209828 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ALWAYS < 1292209829 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :KNOW < 1292209830 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oh god < 1292209857 0 :Sgeo_!~Sgeo@ool-18bf618a.dyn.optonline.net JOIN :#esoteric < 1292209858 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :what's this talk, have you gone batshit insane? < 1292209861 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION → nowhere in particular < 1292209878 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Darn, I thought Sgeo would have pinged out by now < 1292209888 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: ENTERING IS NOT LEAVING < 1292209889 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :"He quit, yay!" "Wait, he's back" < 1292209909 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: didn't you buy some fucking melatonin < 1292209911 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :i distinctly recall < 1292209917 0 :Sgeo!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1292209923 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Sleep is not my issue here < 1292209926 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :My issue is homework < 1292209937 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1292209938 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Piles and piles of homework < 1292209942 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: when i get thrown off here i usually have to kill my irssi after logging on again < 1292209943 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well take some anyway just for the hell of it < 1292209954 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: i'll give you $15 for every hour you stay up on Melatonin after the first < 1292209956 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :because of this going through a shell account < 1292209964 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :i.e., take regular melatonin dose, first hour passes, then $15 for every full hour after that < 1292209964 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :go! < 1292209973 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :elliott, maybe in 2 weeks < 1292209995 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i wonder if my doctor would give me melatonin if i asked < 1292210009 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: well it's over-the-counter in most places < 1292210019 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: WP says it's prescription-only in the uk but it isn't since you can buy it anyway < 1292210031 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: failing that just import it http://melatonin.com/ :P < 1292210041 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It's considered a dietary supplement in the US. < 1292210062 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Meaning it isn't even fucking regulated beyond actually having to contain only what it claims to contain. < 1292210079 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: it's on all those vaguely-new-agey ~herbal remedies~ websites over here < 1292210103 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Tobacco: All natural. Must be good for you, try some today! < 1292210107 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :apparently it requires a prescription in norway < 1292210114 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: Your body doesn't produce tobacco. < 1292210119 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :norway is pretty strict about such things, i think < 1292210123 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: oh well, just import it anyway :D < 1292210141 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I was more mocking herbal stuff than anything connected to melatonin < 1292210143 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i mean worst case, you get outraged headlines talking about the drug smuggling charges for ... melatonin on the national newspapers < 1292210149 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: and that would be hilarious. < 1292210154 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: Ah. Fair enough. < 1292210171 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :elliott: well there wouldn't be anything wrong with _asking_ my doctor would it, given that i actually have an appointment on thursday < 1292210174 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Hmm. What does the body produce that you shouldn't take in more of? < 1292210184 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: well maybe he'll find out about your cocaine habit < 1292210189 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: semen < 1292210202 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: um, shit? :p < 1292210213 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :(it's a she) < 1292210224 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: that's what he wants you to think < 1292210229 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :A shee? Creator of norns? < 1292210239 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ok seriously, ban him < 1292210242 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :you have justification now < 1292210258 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Just heard a cat yelping. Got frightened, then realized that my cat is right here < 1292210284 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: HCl. < 1292210330 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :In homeroom, which was in a science classroom: "Hey Seth, what's HCI? Is it safe to drink?" < 1292210342 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :"I" < 1292210343 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :rage < 1292210362 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :elliott, not against me. I'm saying what the person said... < 1292210374 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure HCI is possible. < 1292210407 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :What about H#C#I# for nonzero #? < 1292210415 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Erm, possibly different numbers < 1292210505 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :turtles < 1292210506 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Probably *possible*, not necessarily all that *stable*. < 1292210509 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :turtles say bye Sgeo_ < 1292210511 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_ go bye bye < 1292210514 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :turtles < 1292210625 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :elliott, if you help me find my textbook... hm, I have nothing of value to give you. But since it's physically impossible for you to help me find it anyway < 1292210641 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :"Methyl iodide, also called iodomethane, and commonly abbreviated "MeI", is the chemical compound with the formula CH3I." < 1292210649 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: The one thing of value you could give me is for you to leave right now. < 1292210680 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :I hope you realize that I'm not taking you seriously < 1292210698 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: Um, I was really serious there. < 1292210708 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: that's supposedly simplest organic iodine compound < 1292210712 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*+the < 1292210713 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: no that's you < 1292210720 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :you're the simplset organic iodine compound < 1292210722 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*simplest < 1292210723 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :also a kitten < 1292210877 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no i'm really more a puppy < 1292210894 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Ok, 3 min, I leave < 1292210914 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :2min < 1292210915 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ban him this time < 1292210921 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: also, i hate dogs, so you're a kitten < 1292210928 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :elliott, what's with the me-hate? < 1292210939 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Sgeo_: i'm just trying to help you achieve your goals < 1292210940 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :which are leaving < 1292210946 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :which also coincides with my goals, which are to be an asshole < 1292210960 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :My goal is to get my homework done. If I could do that and stay on IRC, I would < 1292210977 0 :Sgeo_!unknown@unknown.invalid PRIVMSG #esoteric :Although avoiding IRC hasn't helped in the past... < 1292210990 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :i bet next class you'll learn about looping through an array! < 1292210991 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :"Industrially significant organoiodine compounds, often used as disinfectants or pesticides, are iodoform (CHI3), methylene iodide (CH2I2), and methyl iodide (CH3I)." < 1292210995 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :an education well-spent < 1292211031 0 :Sgeo_!unknown@unknown.invalid QUIT :Quit: Leaving < 1292211070 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: can you ban him anyway? < 1292211215 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :afk < 1292211266 0 :Sasha2!~WHAT@97-124-32-78.phnx.qwest.net JOIN :#esoteric < 1292211341 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: BAN HIM < 1292211414 0 :Sasha!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1292211706 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :hmm so if pastebins, url shorteners and image hosters are the same thing maybe EVERYTHING Is < 1292211707 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*is < 1292211850 0 :poiuy_qwert!~poiuy_qwe@CPE001b115db0ae-CM0018c0c24ffc.cpe.net.cable.rogers.com JOIN :#esoteric < 1292212039 0 :augur!~augur@208.58.6.161 JOIN :#esoteric < 1292212471 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais better be more active tomorrow < 1292212473 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ensure it < 1292212641 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :sed 's/^X//' > \R\E\A\D\_\M\E << '+ END-OF-FILE '\R\E\A\D\_\M\E < 1292212642 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :X# This file is part of the Concurrent Versions System CVS. < 1292212643 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oh that is clever! < 1292212647 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :remind me to use that in ddshar maybe < 1292212654 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oh wait i can't really, not with this architecture < 1292212655 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :darn < 1292212661 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :remind me to do ddshar properly, then < 1292212708 0 :quintopi1!~quintopia@209.59.220.33 JOIN :#esoteric < 1292212714 0 :quintopi2!~quintopia@209.59.220.33 JOIN :#esoteric < 1292212778 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :[[# No versioning of symbolic links. Symbolic links stored in a version control system can pose a security risk - someone can create a symbolic link index.htm to /etc/passwd and then store it in the repository; when the "code" is exported to a Web server the Web site now has a copy of the system security file available for public inspection. A developer may prefer the convenience and accept the responsibility to decide what is safe to version and < 1292212778 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : what is not; a project manager or auditor may prefer to reduce the risk by using build scripts that require certain privileges and conscious intervention to execute.]] < 1292212780 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :worst excuse ever < 1292212789 0 :quintopi2!unknown@unknown.invalid QUIT :Client Quit < 1292212838 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :[[OpenCVS is a BSD-licensed implementation of the popular Unix version control software called Concurrent Versions System. OpenCVS is developed as a part of the OpenBSD project by Jean-Francois Brousseau, Joris Vink, Xavier Santolaria, Niall O'Higgins and others. < 1292212838 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :OpenCVS aims to be as compatible as possible with the GNU CVS implementation without compromising security or source code correctness, and to provide better access control.[1] As of October 2010[update], the project website claims that "OpenCVS is to be released soon"[2] and the project shows CVS activity as recent as August 1st, 2010. The project is still actively being developed. < 1292212838 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :[edit] OpenRCS < 1292212839 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Because of the development of OpenCVS the developers saw the need for OpenRCS also and OpenBSD has started to develop a free and secure version of RCS also.]] < 1292212844 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :http://www.opencvs.org/ < 1292212846 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: LOL NIH < 1292212890 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :RCS was first released in 1982[1] by Walter F. Tichy while he was at Purdue University as a free and more evolved alternative to the then-popular Source Code Control System (SCCS). It is now part of the GNU Project, who is still maintaining it. The current development version is 5.7.95 (released on 2010-12-02,[2] is a step toward the first release since 1995[3]—5.8 is planned to be released “in a week or so”.[3] < 1292212938 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Haha wow, Jörg Schilling maintains SCCS. < 1292212969 0 :quintopi1!unknown@unknown.invalid QUIT :Client Quit < 1292212975 0 :p_q!~poiuy_qwe@66.49.147.144 JOIN :#esoteric < 1292213014 0 :poiuy_qwert!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1292213055 0 :elliott!unknown@unknown.invalid QUIT :Quit: Leaving < 1292213221 0 :hagb4rd!~perdito@koln-4d0b6f8c.pool.mediaWays.net JOIN :#esoteric < 1292213492 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :damn it took him forever to get to bed :P < 1292213507 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :(hi elliott! i love you i promise!) < 1292214233 0 :Sasha!~WHAT@97-124-33-181.phnx.qwest.net JOIN :#esoteric < 1292214403 0 :Sasha2!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1292215182 0 :CPi!~CPi@113.111.198.10 JOIN :#esoteric < 1292215414 0 :CPi!unknown@unknown.invalid PRIVMSG #esoteric :假洋鬼子 < 1292215427 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :slip inside my sleeping bag < 1292215437 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :sasha! < 1292215463 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :`translate 假洋鬼子 < 1292215469 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :oh thanks oerjan < 1292215474 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :was just gonna ask someone to do that < 1292215494 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :Fake foreign devil < 1292215500 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1292215566 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto en zh Don't you like our topic? :D < 1292215568 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :你不喜欢我们的话题? :Ð < 1292215645 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto zh en 你不喜欢我们的话题? < 1292215646 0 :CPi!unknown@unknown.invalid PRIVMSG #esoteric :你们喜欢用英文,这很正常。但你们的标题我不太认同 < 1292215646 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :You do not like our topics? < 1292215669 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto zh en 你们喜欢用英文,这很正常。但你们的标题我不太认同 < 1292215680 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :Do you like English, this is normal. But I do not agree with your title < 1292215740 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :`translatefromto en zh It's just meant as a joke anyhow. < 1292215741 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :这只是意味着一个玩笑,无论如何。 < 1292215779 0 :CPi!unknown@unknown.invalid PRIVMSG #esoteric :may be < 1292215863 0 :oerjan!unknown@unknown.invalid TOPIC #esoteric :If this topic doesn't confuse you, you haven't understood it properly. | http://tunes.org/~nef/logs/esoteric/?C=M;O=D < 1292215960 0 :CPi!unknown@unknown.invalid PRIVMSG #esoteric :我想大家都没有什么恶意,只是在开放的网络,更需要开放的精神,还有中国人的胸怀 < 1292215978 0 :CPi!unknown@unknown.invalid PRIVMSG #esoteric :对不起,打扰啦 < 1292215991 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :`translate 我想大家都没有什么恶意,只是在开放的网络,更需要开放的精神,还有中国人的胸怀 < 1292215993 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :I think everybody does not mean anything, but in an open network, more needs to open up the spirit of the Chinese people's mind there < 1292216012 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :`translate 对不起,打扰啦 < 1292216013 0 :HackEgo!unknown@unknown.invalid PRIVMSG #esoteric :I'm sorry to bother friends < 1292216049 0 :CPi!unknown@unknown.invalid QUIT :Quit: Leaving < 1292216372 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :he has a point i suppose < 1292216427 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :eh < 1292216451 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :i was gonna change topic to "this topic is as subtle as your penis" but that's not really the medium for that joke < 1292216489 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :don't do that, if our previous topic attracted furious chinese, then that might attract furious women < 1292216500 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :exactly < 1292216515 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :although it's especially apt for women < 1292216596 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :how about "this topic is as subtle as the idea of a penis as a status symbol for males" :P < 1292216626 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :_may be_ < 1292216646 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :nah it's too convoluted < 1292216661 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :JUST LIKE YOUR PENIS < 1292216851 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :that's what she said < 1292216864 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :("she" is traditionally taken to be "your mom") < 1292216988 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :WANTED (soon): Pithy, short, well-known phrases about evil. < 1292217005 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :(Which include the word "evil") < 1292217015 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :The love of money is the root of all evil. < 1292217169 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :related: women are evil < 1292217272 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Hear no evil, see no evil, speak no evil. < 1292217342 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*See no evil, hear no evil, speak no evil. < 1292217355 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"I am evil, not stupid." < 1292217382 0 :TLUL!~TLUL@wikia/The-last-username-left JOIN :#esoteric < 1292217564 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :All that is necessary for the triumph of evil is that good men do nothing. < 1292217631 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Do good, reap good; do evil, reap evil. < 1292217662 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: BTW, this is incredibly fun < 1292217697 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: what are you going to do with them? < 1292217708 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Trying to get the best pithy title for a paper about eval :P < 1292217724 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :The Root of All Eval was vetoed as being misleading since we're not about provenance. < 1292217795 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :The current title is The Eval that Men Do, but I think we can do better. < 1292217805 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"a necessary evil" < 1292217869 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :probably not for the paper you're writing < 1292217889 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :That's already used for a subsection, with a question mark (A Necessary Eval?) < 1292217893 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"good vs. evil" < 1292217948 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Seems a bit more biased than we want in a title for a scientific paper :P < 1292217985 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: anything you write is going to bring up evil-eval associations, so... < 1292217992 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :this bible site is darn slow < 1292218012 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"an evil spirit" < 1292218023 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: I googled "evil quotes" < 1292218037 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: THAT'S CHEATING < 1292218040 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :also, evil < 1292218049 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: It's supposed to bring up evil-eval associations of course, but the title, not taken as a pun, should not be biased. The bias should only be through the pun :P < 1292218092 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :To fear the LORD is to hate evil < 1292218095 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"the wave of eval" < 1292218109 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION whistles innocently^Wevilly < 1292218146 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"the worst of evil" < 1292218182 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :what's the paper about? < 1292218203 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"the lesser of two evils" < 1292218209 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :"Why do you < 1292218210 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :entertain evil thoughts in your hearts?" < 1292218262 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ah here i think is the one i was looking for: "The Heart of the Sons of Men Is Full of Evil" < 1292218294 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: what's the paper about? < 1292218311 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: It's an in-depth study of how eval is used in real-world code. < 1292218311 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION hazards a guess it's about eval somehow < 1292218373 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :hmm, the eval that men do is actually descriptive < 1292218401 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Yes < 1292218408 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :But it's not pithy enough :P < 1292218416 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :It'll do if we don't find anything better < 1292218445 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"evil empire" < 1292218462 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"The Eval Empire"...? < 1292218528 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :ACTION whistles the Star Wars theme < 1292218573 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I seem to recall some short phrase involving "the nature of evil", but can't find it ... < 1292218589 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"axis of evil", but that's someone's blog < 1292218653 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is now looking at Wikipedia titles, which have much less noise < 1292218668 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"fear no evil" < 1292218690 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"the mind of evil" < 1292218701 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"don't be evil" < 1292218737 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"all about evil" < 1292218787 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :I think "Resident Eval" wins the worst-possible-name award. < 1292218793 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :(Using the same method :P ) < 1292218852 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"the changing face of evil" < 1292218891 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"for love of evil" < 1292218912 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"I will fear no evil" < 1292218950 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"the ultimate evil" < 1292218971 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Deliver Us from Eval X-D < 1292219009 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"defending the throne of evil" < 1292219047 0 :asiekierka!~asiekierk@078088180066.elblag.vectranet.pl JOIN :#esoteric < 1292219052 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"good people in times of evil" < 1292219072 0 :asiekierka!unknown@unknown.invalid PRIVMSG #esoteric :hey < 1292219092 0 :hagb4rd!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1292219141 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"the stench of evil" < 1292219145 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric ::p < 1292219200 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: I think that's pretty much it < 1292219203 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :The evil league of evil? < 1292219208 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1292219238 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"evil among us" < 1292219243 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Yeah, unfortunately I think The Eval that Men Do is still the best :( < 1292219262 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :an evil that walks the earth < 1292219272 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :yeah i think it suits your paper best as well < 1292219313 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :(but when you find a good reason to write a paper called "The Life of Eval Knieval" let me know) < 1292219453 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: on the other hand, now you know how to quickly find good titles if you're completely stuck < 1292219475 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :i would be surprised if he had not done this before < 1292219489 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Now I need to find how to name a subsection Lord Deliver Us from Eval < 1292219513 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :drop the lord and you can find a way < 1292219562 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :also, since it is the worst-possible-name, resident eval deserves a subsection < 1292219613 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: IMO "the eval empire" should also be in there < 1292219635 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: It's a good'n, but I don't know what it means :P < 1292219665 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :how about you have a section judging whether uses of eval are legitimate or stupid < 1292219666 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :spawn of eval < 1292219670 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :and call it "the eval umpire" < 1292219687 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: used by Ronald Reagan to refer to the Soviet Union < 1292219700 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: Nonono, I don't what it means in terms of eval < 1292219711 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :quintopia: ... *barf* :P < 1292219747 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :no, you use it for the introduction... "widespread use of eval", etc. < 1292219794 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Rats Lave On No Eval Star < 1292219928 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :OOOH < 1292219945 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :See No Eval, Hear No Eval can be a title for a subsection about how most analyses simply ignore eval 8-D < 1292220077 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :hmm... "a report on the banality of eval" < 1292220161 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :^ Gregor ? < 1292220175 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :eval is not banal though < 1292220230 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :only Gregor knows the results of his paper, and whether or not eval is banal < 1292220232 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :Gregor, eval considered harmful? < 1292220244 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :I'm sure this has been done < 1292220276 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :i lolled a little though < 1292220306 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: "Considered Harmful" Papers Considered Harmful < 1292220315 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :Gregor, indeed < 1292220438 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: does your paper end up showing that eval is banal? < 1292220477 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: You could say that < 1292220481 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :the conclusion should definitely be called the evaluation instead < 1292220540 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: then IMO < 1292220565 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :"A Report on the Banality of Eval" is a better title < 1292220569 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: Is that a reference to something though? < 1292220603 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :yeah, http://en.wikipedia.org/wiki/Banality_of_evil < 1292220633 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oh the eichmann book < 1292220642 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Mmmmmm < 1292220659 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :up to you, of course < 1292220670 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :Gregor, js < 1292220671 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :? < 1292220675 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: Yuh < 1292220780 0 :asiekierka[2]!~asiekierk@078088180066.elblag.vectranet.pl JOIN :#esoteric < 1292220906 0 :asiekierka!unknown@unknown.invalid QUIT :Ping timeout: 260 seconds < 1292220941 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :bbl, university < 1292220963 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: where's it going to appear? LtU? < 1292220993 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: I can't guarantee that it's going to appear anywhere :P < 1292221006 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: But we're aiming for ECOOP, which luckily is non-anonymous so I can talk about it :P < 1292221017 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :but I want to see it! < 1292221033 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: how does non-anonymous peer review work? < 1292221068 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: advance copies for everyone here, right? eyes only? < 1292221087 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :quintopia: Uhhh, like any other peer review? Remove conflicts of interest, and don't be "that guy" who treats people preferentially :P < 1292221130 0 :asiekierka!~asiekierk@078088180066.elblag.vectranet.pl JOIN :#esoteric < 1292221130 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :This is the third paper I've published this term, but the first I've mentioned here since the other two have been anonymous :P < 1292221158 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :you are avoiding the question sir < 1292221175 0 :asiekierka[2]!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1292221179 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Indeed! < 1292221205 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :If somebody wants to proofread it on Wednesday, maybe :P < 1292221521 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :anonymous papers? < 1292221565 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Nonanonymous < 1292221596 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: why can't I read it now? just throw it up somewhere like arXiv, Google docs, etc. < 1292221599 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :...for some of us it's the concept of an _anonymous_ paper which boggles the mind :D < 1292221614 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Right now it's a giant pile of graphs with little explanation :P < 1292221621 0 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com JOIN :#esoteric < 1292221622 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Anonymous only for review < 1292221662 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1292221677 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :when will they become nonymous? < 1292221698 0 :asiekierka!unknown@unknown.invalid PRIVMSG #esoteric :you mean lolonymous < 1292221726 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :coppro: When/if published :P < 1292221829 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well i'm not _sure_ if math uses anonymous review, the times i was asked it certainly wasn't. in any case keeping it secret for anyone _other_ than the reviewere sounds weird, given that we basically give preprints to anyone who could want one... < 1292221844 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*-e < 1292221869 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :true that < 1292221881 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :so gregor, what were the other papers about, vaguely? < 1292221896 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Well, you're supposed to make a best-faith effort not to reveal that information just in case someone knows someone who knows someone, unless you actually intend to work with them. < 1292221901 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :quintopia: JavaScript and JavaScript. < 1292221905 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :(not vaguely because you have to keep them secret. vaguely because i don't care enough to hear details) < 1292221914 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :oh, blargh < 1292221918 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :ACTION stopped caring < 1292221919 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :gnight < 1292221921 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :do you write about anything but js? < 1292221932 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :quintopia: Not right now ;P < 1292221958 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: _and_ we give talks at conferences about the work, too. < 1292221970 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ... yes, that's the whole point of a conference. < 1292222001 0 :hagb4rd!~perdito@koln-d9329929.pool.mediaWays.net JOIN :#esoteric < 1292222014 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :it's because judging the work based on its author is such a good nutjob-filtering heuristic in math, anonymous review would break the field. < 1292222017 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and unless it's a very big field it would be extremely likely for the reviewere to be at that conference, i should think... < 1292222019 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders wtf oerjan thinks Gregor means by "anonymous submission" :P < 1292222051 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: These are /conference/ submissions. < 1292222060 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: oh. < 1292222062 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Conferences are the journals of Computer Science. < 1292222087 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :i think math should go that way too < 1292222097 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok i guess it's not common to have pre-reviewed conference talks in math either < 1292222150 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: A non-pre-peer-reviewed conference in CS is called a joke :P < 1292222281 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :HAHAHAHA good one Gregor < 1292222397 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :... not a good joke I'll admit. < 1292222530 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :speaking of jokes, i hear doug presented the chicken paper at a conference. wish i could have been there. < 1292222533 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: why? they just need some way to, after the first minute, shut them up and say "next" < 1292222552 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: the music! < 1292222609 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Mathnerd314: That's just how CS works. Journals are generally considered sort of an olde and musty means of doing things, used only for extremely drab things like giant proofs and shit, conferences are just the equivalent for new and ongoing stuff. < 1292222646 0 :Mathnerd314!unknown@unknown.invalid PRIVMSG #esoteric :probably the way math works too < 1292222666 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Idonno how math works :P < 1292222681 0 :quintopia!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: who does? it's alchemy... < 1292222892 0 :hagb4rd!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1292223522 0 :asiekierka!unknown@unknown.invalid QUIT :Ping timeout: 272 seconds < 1292225557 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Now I have the H. Lee hand grenade of Auntie Ock. < 1292225629 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*groan* < 1292225967 0 :Sasha2!~WHAT@97-124-35-253.phnx.qwest.net JOIN :#esoteric < 1292226089 0 :Sasha!unknown@unknown.invalid QUIT :Ping timeout: 265 seconds < 1292226975 0 :hagb4rd!~perdito@koln-d9329a6b.pool.mediaWays.net JOIN :#esoteric < 1292227199 0 :clog!unknown@unknown.invalid QUIT :ended < 1292227200 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1292227501 0 :Mathnerd314!unknown@unknown.invalid QUIT :Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.2.12/20101026210630] < 1292231142 0 :zzo38!unknown@unknown.invalid QUIT :Remote host closed the connection < 1292232036 0 :zzo38!~zzo38@h24-207-49-17.dlt.dccnet.com JOIN :#esoteric < 1292232075 0 :nooga!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1292233091 0 :quintopia!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1292233112 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292233454 0 :evincar!~chatzilla@daffa.rh.rit.edu JOIN :#esoteric < 1292234525 0 :ais523!~ais523@unaffiliated/ais523 JOIN :#esoteric < 1292234953 0 :hagb4rd!unknown@unknown.invalid NICK :hagb4rd|afk < 1292235958 0 :quintopia!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1292236677 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292237067 0 :quintopia!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1292237083 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292237141 0 :quintopia!unknown@unknown.invalid QUIT :Client Quit < 1292237194 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292237420 0 :evincar!unknown@unknown.invalid QUIT :Quit: ChatZilla 0.9.86 [Firefox 3.6.13/20101203075014] < 1292237508 0 :quintopi1!~quintopia@209.59.220.33 JOIN :#esoteric < 1292237541 0 :quintopia!unknown@unknown.invalid NICK :Guest36478 < 1292237589 0 :quintopi1!unknown@unknown.invalid NICK :quintopia < 1292237956 0 :ais523!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1292239128 0 :quintopia!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1292239135 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292239158 0 :quintopia!unknown@unknown.invalid QUIT :Client Quit < 1292239158 0 :Guest36478!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1292239173 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292239366 0 :hagb4rd|afk!unknown@unknown.invalid NICK :hagb4rd < 1292239418 0 :TLUL!unknown@unknown.invalid QUIT :Quit: *disappears in a puff of orange smoke* < 1292239623 0 :quintopia!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1292239635 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292240037 0 :quintopia!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1292240053 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292240624 0 :quintopia!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1292240632 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292242852 0 :FireFly!~firefly@unaffiliated/firefly JOIN :#esoteric < 1292242994 0 :quintopia!unknown@unknown.invalid QUIT :Quit: Lost terminal < 1292243063 0 :oerjan!unknown@unknown.invalid QUIT :Quit: leaving < 1292243125 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292243312 0 :quintopia!unknown@unknown.invalid QUIT :Client Quit < 1292243350 0 :hagb4rd!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1292243366 0 :quintopia!~quintopia@209.59.220.33 JOIN :#esoteric < 1292243548 0 :wareya!unknown@unknown.invalid QUIT :Ping timeout: 272 seconds < 1292243638 0 :Sasha2!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1292243680 0 :Sasha!~WHAT@97-124-34-148.phnx.qwest.net JOIN :#esoteric < 1292244709 0 :atrapado!~rodrigo@193.144.79.241 JOIN :#esoteric < 1292246139 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric : < 1292246591 0 :hagb4rd!~perdito@koln-4d0b754d.pool.mediaWays.net JOIN :#esoteric < 1292247060 0 :ais523!93bcc029@gateway/web/freenode/ip.147.188.192.41 JOIN :#esoteric < 1292248531 0 :wareya!~wareya@cpe-74-70-142-220.nycap.res.rr.com JOIN :#esoteric < 1292249628 0 :wareya!unknown@unknown.invalid QUIT :Ping timeout: 272 seconds < 1292250430 0 :wareya!~wareya@cpe-74-70-142-220.nycap.res.rr.com JOIN :#esoteric < 1292251407 0 :p_q!unknown@unknown.invalid QUIT :Quit: This computer has gone to sleep < 1292251469 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, you know your job is potentially awesome when you come up with a valid reason to play Enigma during a meeting, and even tell the other people there you're doing so < 1292251575 0 :hagb4rd!unknown@unknown.invalid PRIVMSG #esoteric :its even better when there is no need to tell the others at all < 1292251584 0 :hagb4rd!unknown@unknown.invalid PRIVMSG #esoteric :i guess^^ < 1292252766 0 :asiekierka!~asiekierk@078088180066.elblag.vectranet.pl JOIN :#esoteric < 1292253052 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hagb4rd: nah, I could get away with that sort of thing nearly all the time, nobody pays attention to what you're doing < 1292253431 0 :olsner!unknown@unknown.invalid QUIT :Ping timeout: 255 seconds < 1292253476 0 :elliott!~elliott@unaffiliated/elliott JOIN :#esoteric < 1292253526 0 :olsner!~salparot@c83-252-161-133.bredband.comhem.se JOIN :#esoteric < 1292253689 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so olsner wtf is that stuff you have to do before long mode your code is magic :D < 1292254322 0 :sftp!~sftp@79.174.49.208 JOIN :#esoteric < 1292254777 0 :hagb4rd!unknown@unknown.invalid QUIT :Quit: hagb4rd < 1292254856 0 :nopseudoidea!~nopseudoi@85-168-235-235.rev.numericable.fr JOIN :#esoteric < 1292255011 0 :nopseudoidea!unknown@unknown.invalid PART #esoteric :? < 1292255431 0 :hagb4rd!~perdito@koln-d932d78d.pool.mediaWays.net JOIN :#esoteric < 1292255942 0 :hagb4rd!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1292255945 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1292255961 0 :Phantom_Hoover!~phantomho@cpc12-sgyl29-2-0-cust185.sgyl.cable.virginmedia.com JOIN :#esoteric < 1292255969 0 :augur!~augur@208.58.6.161 JOIN :#esoteric < 1292256132 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Thing that annoys me about Minecraft: you get flint from gravel. < 1292256136 0 :Sgeo!~Sgeo@137.125.188.14 JOIN :#esoteric < 1292256149 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :In class now < 1292256151 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Flint is found in limestone in real life, not gravel. < 1292256152 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, why does that annoy you? < 1292256155 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1292256163 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :No way I'd be able to focus on homework for a different class < 1292256177 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, but boats accelerating up waterfalls due to floating on water doesn't bother you? < 1292256182 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Nor am I willing to pirate a textbook (I own the physical copy) and I obviously don't have the textbook with me < 1292256190 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal, no! < 1292256200 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover, arguably that is a much larger error < 1292256212 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal, but it's a cool error! < 1292256237 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1292263481 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1292263481 0 :clog!nef@bespin.org JOIN :#esoteric < 1292263484 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: reason I don't think it should be .scapegoat, btw: it's not configuration, and it's not a cache; it's an actual directory with useful contents, just not one you want at the top of your file lists < 1292263485 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hi clog < 1292263489 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :gah, this convo hasn't been logged < 1292263494 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I have it logged < 1292263498 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :good < 1292263509 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :i'll put it on a pastebin in a bit < 1292263515 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well, sprunge < 1292263519 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :evil idea: paste the entire log in-channel, so that a) clog logs it, and b) Vorpal gets to read it < 1292263528 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I've done that before, during much shorter outages < 1292263530 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(also, probably bad idea) < 1292263538 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, and also, servers < 1292263544 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you don't want to have a directory foo/ with just .scapegoat in it < 1292263545 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :does sprunge stay around forever? < 1292263550 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and yes < 1292263554 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :git makes it "foo.git" < 1292263563 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :there's no real reason you shouldn't be able to do, e.g. < 1292263572 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :darcs uses _darcs, which isn't ideal but which is better than .svn or whatever < 1292263601 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :~/awesomeproject$ cp -R @scapegoat /var/scapegoat/awesomeproject < 1292263619 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and scapegoat when pulling would basically go "is this directory a scapegoat repository? if not, look at ./@scapegoat" < 1292263622 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and everyone's happy < 1292263631 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: _darcs is actually like that solely for Windows < 1292263638 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :really? how boring < 1292263641 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I didn't even realise it ran on Windows < 1292263650 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is that why it doesn't record permissions? < 1292263652 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and people (even me...) have lobbied to change it to .darcs... regretfully < 1292263654 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: who knows? < 1292263661 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it only runs on windows through some half-cygwin monster, I think < 1292263664 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I forget what, exactly < 1292263677 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(also, we so need an ISO 646 for permissions, i.e. a permission subset that works everywhere sane) < 1292263688 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the problem with _darcs that you really want something that comes after everything in the alphabet; just like you name things README and INSTALL so they sort first alphabetically, the scapegoat directory should come last to avoid annoyance < 1292263693 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(then we can invent trigraphs for permissions that aren't there) < 1292263706 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I get used to ignoring a load of junk at the start of ls outputs < 1292263720 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in fact, last is probably more readable than first because of the way terminals scroll < 1292263724 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :first scrolls off before last does < 1292263728 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I say we just track Unix permissions in the actual implementation (it can be abstracted out as metadata in the specification) and forget Windows even exists < 1292263738 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: so do I < 1292263740 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : in fact, last is probably more readable than first because of the way terminals scroll < 1292263743 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yes, but e.g. graphical file managers < 1292263748 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :README and INSTALL go first, which is nice < 1292263752 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wow, I forgot they existed for a while < 1292263769 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I'm far from a live-inside-the-terminal sort of person < 1292263771 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I actually use Nautilus occasionally :) < 1292263773 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so do I < 1292263780 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :specifically, for opening Enigma levels < 1292263784 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1292263791 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm not entirely sure why; I just developed different workflows for different sorts of file for some reason < 1292263797 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Oh, is that why README and co. are uppercased? Too bad that not all LC_COLLATEs operate that way < 1292263801 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Yes. < 1292263816 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :(Any others than C?) < 1292263816 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why not do it Makefile-style and just uppercase the first letter? < 1292263825 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: I doubt it < 1292263826 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ACTION makes mental note to make sure scapegoat implementation is in C, because it's flexible enough that the overhead of something else is probably a bad idea :) < 1292263828 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I always figured it was just to make them stand out < 1292263830 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I know README sorts to the middle in my ls < 1292263840 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well, you see 00README on ftp servers a lot < 1292263841 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and the like < 1292263844 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I'm mostly just wondering about en_US < 1292263848 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292263858 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: mine's en_GB.UTF-8, I think < 1292263860 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Because if that doesn't work that way, then most people probably don't see it like that :-P < 1292263862 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ditto < 1292263866 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Same here < 1292263871 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :even though there's no actual reason to use UTF-8 for British English other than the £ sign < 1292263876 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, you use British English? < 1292263877 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: you're... en_GB.UTF-8? < 1292263887 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and €, I suppose < 1292263889 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ACTION 's mind causes a fault or two < 1292263904 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :$ locale | sed 's/"//g' | cut -d= -f2 | sort -u < 1292263904 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :custom < 1292263904 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :en_DK.utf8 < 1292263904 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :en_GB.utf8 < 1292263904 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :fi_FI.utf8 < 1292263904 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: btw, I needed this conversation to regain my sanity < 1292263914 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the Linux keylogger thing was as disasterous as you might have imagined < 1292263944 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :ais523, huh? < 1292263958 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's not nice debugging code where the only indication that something went wrong is that the entire system crashes hard (apart from interrupt handlers; and as the keylogger hooks the keyboard interrupt, any key you press to try to fix the problem makes things worse) < 1292263973 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: :D < 1292263981 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you do realise you can gdb linux? < 1292263983 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :probably painful though < 1292263986 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: I'm paid to help people work on exercises, even if they were terribly flawed in the first place < 1292263994 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I didn't, in fact I thought it was impossible < 1292264004 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and gdb on the keyboard interrupt handler is asking for a disaster < 1292264011 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as you'd have to use, umm, telepathy to control it? < 1292264019 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: umm, you run Linux in qemu or whatever < 1292264021 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(the handler in question is called on mouse movements and clicks too) < 1292264023 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and attach gdb to it from outside < 1292264028 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, that makes more sense < 1292264029 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's called kgdb < 1292264036 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, technically, it's over a serial port < 1292264040 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but you just tell qemu to emulate a serial port < 1292264048 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :we're using the serial console in the NetHack TAS < 1292264052 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(good luck debugging the serial driver...) < 1292264057 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, the Debian installer, modified to run NetHack < 1292264063 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: what. < 1292264076 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the serial console because it was faster than waiting for the network connection to come up < 1292264097 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ooh, let's argue about what hash function to use to identify things! < 1292264099 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and the Debian installer beause we were trying to strip down Debian and then realised that the installer itself was Linux-based, really small, and ran a single program < 1292264126 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(GUIDs are lame, (1) they're random numbers, which feels so unplatonic and bad, and (2) hash-addressing is awesome, because it constitutes a near-certain proof that you know what the content is) < 1292264129 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(it no longer actually installs Debian, unfortunately; that'd have been pretty fun if it did) < 1292264134 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: :D < 1292264154 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: btw, the Debian installer has an actual name, although not the part you mean < 1292264160 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :the installer program itself is called debian-installer < 1292264166 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :you probably mean "the Debian installer environment" < 1292264169 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, I do < 1292264172 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, hash arguing! the most fun and pointless sport there is < 1292264190 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what about SHA-(maximum filename length on Windows) < 1292264197 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because it's probably shorter than UNIX's < 1292264200 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: heh < 1292264203 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(this is, with typical filesystems) < 1292264217 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'd say we should just go for whatever turns out to be the winner of SHA-3, except that they disqualified djb's CubeHash < 1292264222 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and I'm sad because I /like/ CubeHash < 1292264223 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :My eyes really hurt for some reason... < 1292264235 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :apparently, they disqualified some just because they were too simple < 1292264240 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: also, you do realise that SHA-n isn't n hex digits? < 1292264241 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and thus, too good to be true < 1292264245 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: indeed < 1292264246 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: not too simple, just ones that made them "nervous" < 1292264252 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :unless your source is something more than the press release < 1292264266 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: no, my source is something less, it's a random Slashdot comment < 1292264272 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1292264277 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but they have a pretty good accuracy on average < 1292264290 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :more or less like Wikipedia is still mostly correct < 1292264294 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: to be honest, we could just use SHA-512 and it'd never be a problem, but *eh* < 1292264305 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :we could use md5 and it'd never be a problem < 1292264312 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :unless people were trying to store hash collisions or something < 1292264318 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or deliberately trying to screw up repos < 1292264319 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: not true, what if we version-controlled those presidential predictions :) < 1292264323 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1292264333 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: deliberately screwing up repos is a platonic concern, considering everything is one gigantic tree < 1292264337 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292264353 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the filenames (and thus patch names) should probably include the hash algo as part of the name < 1292264356 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: an issue of SHA-512 is that I can imagine a filename having multiple hashes in its path < 1292264360 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so we can change without breaking compatibility < 1292264366 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and a lot of filesystems have limits < 1292264373 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, base36 encode whatever hash we use? < 1292264376 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, like /etc/passwd < 1292264386 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I dunno, hexadecimal is so pretty :) < 1292264399 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, IIRC the SHA2 algos are designed to not get weaker by any more than you'd expect if you remove bits at the end < 1292264412 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as in, obviously they get weaker, but they don't collapse or anything like that < 1292264416 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Max filename length 255 bytes < 1292264417 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :--JFS < 1292264424 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :now, presumably that's a single path < 1292264426 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :rather than the whole thing < 1292264428 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*single path component < 1292264428 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is that for filename components? or the whole thing? does it count slashes? < 1292264432 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, comments crossed < 1292264448 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, whole thing would be ridiculous, I'm sure I have something about that long on my system < 1292264449 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: which is it < 1292264456 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why would filenames have multiple hashes in their path, anyway? < 1292264468 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you want to refer to multiple hashes, you just hash the hashes together < 1292264474 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: because the hash-based-append-only-key-value-store is nested < 1292264481 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because? < 1292264493 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: erm, because otherwise you'd end up storing patch1_thing1_foo1 < 1292264495 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, in fact, every single thing would have its own hash, even if it's nested inside something else < 1292264500 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so the nesting doesn't have to reflect on the filesystem < 1292264502 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so never mind < 1292264503 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's the point < 1292264511 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there are arbitrary nesting levels, but the filesystem itself is flat < 1292264518 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :right < 1292264548 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: prediction: if we get any sort of reputation at all, we'll get a bad reputation from people who do "ls [NUL]scapegoat" and see a shitload of hashes < 1292264550 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and nothing else < 1292264560 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oh well, better than Monotone, which just has a gigantic sqlite database < 1292264575 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :NUL in filenames is a terrible idea < 1292264585 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it was a joke < 1292264588 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292264597 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you'd still have things like the equivalent of git config --global, too < 1292264607 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as in, nothing to do with the repo at all, but with the user < 1292264612 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, SHA-512 is only 128 hexadecimal digits, so we shouldn't have a problem < 1292264614 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~/.scapegoat would be an excellent place for those < 1292264621 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ah, 255 is very unlikely to be whole-path! < 1292264640 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION vaguely wonders if there's a hash algorithm that produces cryptosecure 8.3 filenames < 1292264641 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: because Nix does /nix/store/LONGHASH--packagename-version/... (or similar), where ... is a whole root tree < 1292264653 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so anything with a long path installed to / gets an even longer path in there < 1292264653 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :my guess is no, there probably just aren't enough filenames to prevent bruteforcing < 1292264661 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and people use various filesystems on nix < 1292264665 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, what are the valid chars of an 8.3 name? < 1292264714 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in terms of what physically fits on the filesystem, anything including NUL, except spaces are used to pad the filename portions to 8 and 3 respectively < 1292264714 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, should ~/.scapegoat be an append-only-hash-addressed-key-value store itself, or just a directory with some plain text files in it? < 1292264718 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I say the latter, for easy editing :P < 1292264728 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, DOS didn't check for validity in the filenames, that was left up to individual applications < 1292264729 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Well, depends < 1292264734 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and nothing complex should really go into ~/.scapegoat anyway; if it has to, a store can go in a subdirectory < 1292264742 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Isn't lowercase stored as uppercase in FAT16 < 1292264743 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: what did most things consider valid, then? I know that it's uppercase-only < 1292264746 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I remember the chaos I had trying to delete an 8.3 filename with an embedded space years ago, on DOS < 1292264769 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: indeed, but if you flip the bits on the disk by hand, it won't physically you changing the letters to lowercase < 1292264771 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Legal characters for DOS filenames include the following: < 1292264771 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * Upper case letters A–Z < 1292264771 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * Numbers 0–9 < 1292264771 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * Space (though trailing spaces in either the base name or the extension are considered to be padding and not a part of the filename, also filenames with spaces in them could not be used on the DOS command line because it lacked a suitable escaping system) < 1292264772 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * ! # $ % & ' ( ) - @ ^ _ ` { } ~ < 1292264773 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * (FAT-32 only) + , . ; = [ ] < 1292264776 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * Values 128–255 < 1292264786 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Well, of course you can physically flip a / into a Unix filename as well < 1292264794 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I've known some FAT16 systems to uppercase, e.g., ë < 1292264795 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :That doesn't mean it's valid as such :-P < 1292264797 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :umm, I meant é < 1292264799 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so, 26+10+1+16+128 < 1292264810 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :is the number of valid chars < 1292264815 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and there's 11 of them < 1292264836 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: an 8.3 filename, even with insane 128-255 characters and space, has 82.4983 bits in it < 1292264840 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :slightly more because trailing spaces are allowed, but not leading or embedded spaces < 1292264851 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so, answer: not really anything secure, no < 1292264871 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: OTOH, there's rather more filenames than you can bruteforce < 1292264876 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so that's around 2^41 for a birthday attack, considering a theoretically perfect hash < 1292264881 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: 6830686029298982514463981 < 1292264893 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :if we ignore 128-255 and space, then 7516865509350965248 < 1292264894 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I fear 2^41 is within range of modern hardware, more or less < 1292264903 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :even though it's a horrendously large number < 1292264904 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(which is 62.7 bits) < 1292264909 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: heh, you *fear* that? < 1292264920 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292264925 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :modern hardware is scary < 1292264932 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :remember I grew up with floppy disks < 1292264941 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :A megabyte is big, dammit < 1292264958 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :2^41 is large enough that although I have a mental idea of how it compares to various other large numbers, I just can't mentally conceptualise it at all < 1292264965 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, and you said 50K was quite a large save file and thus is a feasible minecraft save file < 1292264973 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1292264975 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I think the server's must be about 80 megs by now < 1292264977 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :maybe more, 100 or so < 1292264982 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what is it saving? < 1292264996 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (big number)x(big number)x128 bytes < 1292265001 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :at least, I think blocks are bytes < 1292265006 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: plus a little bit more < 1292265021 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: big is, uhh < 1292265024 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well the area isn't square < 1292265031 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just a bitmap of the entire 3D map? < 1292265033 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :elliott: What about stuff like snow on top of ground, that doesn't take up a tile does it? < 1292265036 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: http://a322.org/mc/map-2010-11-29.png is a recent-ish map < 1292265036 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you'd think it'd at least use runlength encoding < 1292265037 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: basically, yes < 1292265040 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, it probably does < 1292265045 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but that's the raw data it's storing < 1292265050 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: That counts as a block I think. < 1292265055 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: Just a not-very-tall block. < 1292265066 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: You can't place stuff on top of it until the next block above, I don't think. < 1292265092 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, the fact that it's 3d means it's storing a bunch of underground caves and lava and oceans and stuff < 1292265092 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Fair enough < 1292265125 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, I'm afraid I'm going to not be able to stop myself from writing a hash-addressed, append-only key value store now < 1292265126 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: even so, you'd imagine them to be relatively easily compressible < 1292265142 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, snow, ice, torches, redstone, etc. are just non-solid blocks. < 1292265143 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: go for it, we might even use it and even if we don't, it'd be useful in general < 1292265166 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, it can't compress them too much, since it has to random-access write frequently < 1292265193 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :RLE survives random-access writes pretty easily < 1292265203 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it occurs to me that I may just be reinventing Venti backed by a unix file system < 1292265207 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although you'd need to use something like a skiplist to prevent shuffling data around in memory too much < 1292265211 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (http://en.wikipedia.org/wiki/Venti) Venti is a network storage system that permanently stores data blocks. A 160-bit SHA-1 hash of the data (called score by Venti) acts as the address of the data. This enforces a write-once policy since no other data block can be found with the same address: the addresses of multiple writes of the same data are identical, so duplicate data is easily identified and the data block is stored only once. Data < 1292265211 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : blocks cannot be removed, making it ideal for permanent or backup storage. Venti is typically used with Fossil to provide a file system with permanent snapshots. < 1292265215 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(plan 9) < 1292265314 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm < 1292265330 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I don't know how it does actual storage, but the network protocol deflate-compresses the block updates it sends out. < 1292265332 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I just realised that there's one problem with my "merging two scapegoat directories is always easy" thing < 1292265341 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :SHA-1? isn't that broken nowadays? < 1292265343 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: which is? < 1292265343 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Assuming 50000 square units, which doesn't seem unreasonable, the map would be 300 megabytes uncompressed < 1292265349 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: um, it's Plan 9 < 1292265353 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: SHA-1 isn't nearly broken, no < 1292265356 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it's been attacked < 1292265358 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but not nearly broken < 1292265361 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, Plan 9 is old < 1292265363 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, OK < 1292265367 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :they probably picked it soon after SHA-1 came out < 1292265372 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :less than theoretically perfect, probably < 1292265378 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: besides -- "Several source code management systems, including Git, Mercurial, Monotone, and Fossil, use the sha1sum of various types of content (file content, directory trees, ancestry information, etc.) to uniquely identify them." < 1292265381 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which always scares the crypto people < 1292265396 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, it's been attacked. < 1292265398 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: don't you want to 1-up them? < 1292265400 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: of course! < 1292265403 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I'm not suggesting we use it < 1292265419 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, i just realised an issue < 1292265427 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: with my "merging two scapegoat directories is always trivial" thing < 1292265433 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what is it? < 1292265489 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: given a scapegoat directory, how can the user ask for a reasonable working copy of a project without being given additional information? Note that it is possible to merge every single scapegoat directory ever (ok, ignoring hash collisions) without doing anything more than letting the merge of two identically-named and identically-valued files happen (which is a nop). < 1292265507 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if the answer is "figure out what the Official Branch is and extract that", tell me how you'd do that < 1292265513 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :remember that you must address everything by its hash < 1292265543 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they'd need to specify a branch, which is after all just a criterion for selecting a set of patches < 1292265550 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the real question is how < 1292265562 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: right. < 1292265564 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think some sort of nicknames-for-hashhes method would be useful < 1292265574 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*nicknames-for-hashes < 1292265576 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I mean, personally, I don't see ScapegoatHub taking off if you have to paste a big hash in to get a project :) < 1292265581 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: possibly ... but then how do you store them? < 1292265587 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :without breaking the Merge Principle < 1292265590 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just like git uses server branch, and the server can be abbreviated < 1292265603 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think you could get away with the same principle < 1292265617 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, perhaps µscapegoat/nicknames/[hash that's being nicknamed]-[hash of the nickname] < 1292265622 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :where the content of the file is the nickname itself < 1292265648 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: then, when the user asks for branch "fobly", scapegoat looks at ↓scapegoat/nicknames/*-H, where H = hash("fobly") < 1292265650 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :simpler, you could just do "scapegoathub.org/intercal" or whatever < 1292265651 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Oh, and the block updates take up 2.5 bytes per block. (One byte for block type, one nibble for metadata, one nibble for static daylight value, one nibble for dynamic block light value or some-such.) < 1292265659 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no < 1292265665 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: æscapegoat is the scapegoat directory < 1292265672 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oh, it was another topic < 1292265674 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, hah < 1292265680 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I mean, just for specifying a branch name < 1292265683 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and if there's only one nicknames/*-H file, it accepts it and uses that hash < 1292265687 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, are they packed? < 1292265689 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but if there's multiple, it goes "conflicting nicknames!" < 1292265693 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: does this seem reasonable to you? < 1292265697 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, or what does he put in the remaining holes? < 1292265704 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you can say which server it's a nickname according to < 1292265717 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so to download someone's project, you connect to the server and request a particular nickname from it, it tells you what hash that is < 1292265720 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'm really adamant about the "never any conflicts in øscapegoat directories" thing, because being able to synchronise with *anything* is just too nice, and also being able to merge any two arbitrary repositories < 1292265721 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: They're packed. I don't know how it deals if there's an odd number of blocks in a chunk update. < 1292265722 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and then gives you the hash and all the dependencies < 1292265726 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, but the beauty of this is, < 1292265727 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I agree < 1292265730 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's the same concept < 1292265731 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(Maybe zero-pads the last byte.) < 1292265733 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I just invented our branch naming method too < 1292265734 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: without any servers < 1292265737 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just a different syntax on the command line < 1292265738 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and yes < 1292265766 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: simply, to nickname an object with hash H, to nickname N, you write N to ¹scapegoat/nicknames/H-HN, where HN = hash(N) < 1292265771 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric : Vorpal: They're packed. I don't know how it deals if there's an odd number of blocks in a chunk update. <-- sounds inefficient to unpack < 1292265777 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, is this for your mapper? < 1292265789 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: then we just need naming standards < 1292265806 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that raises the risk of someone slipping a malicious nickname in < 1292265809 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: e.g., say that @tip names the Official Branch by convention < 1292265814 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (issue: how to name things that aren't constant?) < 1292265815 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: does it? how? < 1292265823 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think the problem we've come up against is the DNS problem < 1292265830 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :' ais523: simply, to nickname an object with hash H, to nickname N, you write N to ¹scapegoat/nicknames/H-HN, where HN = hash(N) < 1292265832 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :decentralized, secure, memorable, pick two < 1292265839 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :What's with the superscript 1? < 1292265845 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: running gag < 1292265854 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: we can't agree on a name for the directory, so we're picking random Unicode characters as prefixes < 1292265855 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, I don't see why security is important here < 1292265867 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :why is it called scapegoat? < 1292265868 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: It's not *that* inefficient: to get one nibble, it's a single >>1 to get byte offset, and either a &0x0f or a >>4 to get the value. Anyway, I don't look at the metadata or light values, so... < 1292265877 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: because say you have a nickname you care about, underload or whatever < 1292265878 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if there's two files claiming to give a value to the nickname "grok", and you ask scapegoat for grok, it just goes BEEP BEEP YOU CAN'T DO THAT IT'S BROKEN FIX IT < 1292265887 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I don't think you should name anything underload < 1292265895 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you should name something, e.g. "tip" or "next-gen" < 1292265908 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the fact that merging two unrelated repositories would make these nicknames useless is irrelevant; you just reassign them < 1292265912 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, are nicknames server-relative? or global? < 1292265915 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: they are, after all, mere conveniences < 1292265918 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: neither < 1292265919 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I thoguht you meant global < 1292265921 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, why is it named scapegoat? It make me thing of scapegoat tree (the data structure). < 1292265929 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: because it's blame-based < 1292265929 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: because it's based on blame < 1292265934 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: basically, < 1292265936 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :heh, interesting < 1292265937 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, there's a data structure called a scapegoat tree? < 1292265952 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if you ask scapegoat for "a good working directory", it looks up the nickname -- say -- @tip < 1292265956 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and uses that < 1292265974 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :a good working directory for... what? < 1292265975 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :ais523: It's yet another self-balancing binary tree. < 1292265980 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the repository! < 1292265982 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, yes, a self balancing tree with no per-node memory overhead compared to plain binary trees < 1292265985 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: now, if a nickname points to more than one thing -- e.g. you merged two independent repositories -- it'd go "Beep! Beep! Name points to two things! Fix this!" < 1292265986 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :say I connect to scapegoathub.org and ask it for @tip < 1292265990 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you don't! < 1292265994 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah, good < 1292265997 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: scapegoat doesn't even know what scapegoathub.org *is* < 1292265998 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :we're getting somewhere now < 1292266003 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: indeed < 1292266005 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: for instance, imagine this < 1292266008 0 :Sasha2!~WHAT@97-124-39-38.phnx.qwest.net JOIN :#esoteric < 1292266009 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I want to download a project from there < 1292266011 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what do I do? < 1292266022 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: $ wget http://scapegoathub.org/especially-ridiculous-distribution-methods/tarballs/my-awesome-project-of-luv.tar < 1292266031 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: $ tar xf my-awesome-project-of-luv.tar < 1292266033 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: $ ls < 1292266038 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ¾scapegoat < 1292266042 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OK, and that tarball contains all the hashes in the project and their dependencies, presumably? < 1292266044 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: $ scg give-me-a-reasonable-cwd < 1292266045 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1292266048 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah, I see < 1292266050 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it'd look up @tip < 1292266068 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, ¾? < 1292266071 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that wget line, although it'd work, though, is likely inefficient < 1292266074 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: of course, you wouldn't actually distribute repositories that way, I was just trying to demonstrate how I'm trying to make everything completely agnostic of how you get the scapegoat directory < 1292266075 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :As for the current map, the bounding box is about 4704x6032 blocks, of which 6913281 blocks (24.36%) actually exists; that means about 850 megabytes if I just take *128 bytes; more, if it's actually *128*2.5; less, if it's more sensibly stored. < 1292266082 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: thus the /especially-ridiculous-distribution-methods/ < 1292266088 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: as i said, running gag < 1292266090 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292266099 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, mhm < 1292266106 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, if you did e.g. < 1292266115 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, iirc the admin said it was like 100 MB some weeks ago < 1292266122 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: $ cp -R proj/someproj/€scapegoat/* proj/anotherproj/€scapegoat < 1292266124 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: then you did < 1292266127 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: $ cd proj/someproj < 1292266132 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: $ scg give-me-a-reasonable-cwd < 1292266138 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: I think it's very likely the on-disk storage is deflate'd or something. < 1292266142 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ERROR: Nickname "@tip" points to more than one hash! < 1292266144 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: [ahash] < 1292266146 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: It might be kept uncompressed in memory, though. < 1292266146 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: [anotherhash] < 1292266146 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, ah probably < 1292266149 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(Away some moments.) < 1292266150 0 :Sasha!unknown@unknown.invalid QUIT :Ping timeout: 250 seconds < 1292266153 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Please rectify this problem with "scg name". < 1292266164 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so, obviously, you just have to fix that to get it working < 1292266172 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, built anything on the server yet btw? < 1292266183 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: IMO there's little reason to try and keep nicknames global, because (1) they're just conveniences and (2) you can easily reassign them < 1292266195 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, slightly unrelated; I've realised that you could use a patch name instead of a branch name, making every patch implicitly "a branch containing only dependencies of this patch" < 1292266195 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (you should probably version them, but that's irrelevant at this point) < 1292266204 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: indeed < 1292266204 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Oh, right, I meant 300 gigabytes earlier, I typoed my divisor < 1292266209 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, there's *one* remaining problem with this < 1292266219 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: Nothing of relevance < 1292266222 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, 300 GB for what? < 1292266234 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :2010-12-13 20:35:14 ( Deewiant) Assuming 50000 square units, which doesn't seem unreasonable, the map would be 300 megabytes uncompressed < 1292266239 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: one thing that worries me is why the nicknames have to be inside the ¬scapegoat directory < 1292266240 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant, ah < 1292266247 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they seem more reasonable alongside rather than inside it < 1292266251 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: maybe they don't, but let's stick with it until I've corrected this issue: < 1292266253 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OK < 1292266258 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: with ðscapegoat/nicknames/HO-HN (HO = hash of object, HN = hash of name), how do you make @tip always point to the Official Branch? < 1292266270 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: updating it every time the Official Branch changes is brittle and ugly < 1292266272 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: aha! < 1292266275 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I've got it < 1292266282 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the Official Branch is just an algo for picking a certain set of hashes < 1292266285 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :wait wait wait < 1292266285 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you make it point to the algo < 1292266286 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :WAIT < 1292266290 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :better? < 1292266290 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the formula for the Official Branch is *itself* an object, of type Pointer < 1292266292 0 :MigoMipo!~John@84-217-14-115.tn.glocalnet.net JOIN :#esoteric < 1292266295 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's what I just said < 1292266299 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, but I thought it first :D < 1292266306 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've just been assuming that all this time < 1292266309 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and didn't realise you weren't too < 1292266310 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: whenever anything tries to use a Pointer as something of another type, it's implicitly evaluated < 1292266312 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :good < 1292266315 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :that was easy < 1292266316 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'd call it of type Branch < 1292266320 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it's just semantics < 1292266322 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, okay, but you get the point < 1292266344 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: as for whether it's in ħscapegoat or not, I think it should be, because having branch and tag names in the repository is nice < 1292266349 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and also, I think they should be versioned < 1292266361 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, I think we maybe need two layers < 1292266366 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: e.g., if you merge two projects in a silly manner, and then resolve the branch naming conflicts < 1292266368 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :that should be versioned < 1292266381 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and quite possibly; perhaps we should have ”scapegoat/store be the actual key-value backing < 1292266389 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, that's what I was about to suggest < 1292266391 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (but I *refuse* to break the copy-merging :)) < 1292266393 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, smartquotes? shame on you! < 1292266403 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hey, I like smart quotes :) < 1292266405 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that way, copymerging would work, but copycaching would wrok too < 1292266408 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*work < 1292266410 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Microsoft ruined their reputation by doing them terribly < 1292266413 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(and pre-Unicode) < 1292266415 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :i.e. just copying the store < 1292266423 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: indeed < 1292266427 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: wait, what do you mean by copycaching? < 1292266458 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I mean, just copying the store wouldn't necessarily change the repo, because it might be based entirely on whitelisting branches < 1292266465 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm... some VCSes try to promote the idea of branching by cloning... but I think that's actually really infeasible with scapegoat, because of the platonic view of things :) < 1292266466 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which is, I suspect, the most common usecase < 1292266469 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(note: I don't see this as a bug) < 1292266470 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it'd speed things up in future < 1292266476 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: whoa, I just realised something excellent < 1292266489 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: say you want two working directories pointed at a different branch of the same project < 1292266489 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: it's not infeasible, you just hardlink the stores < 1292266508 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: $ mkdir branch1; ln -s main/ħscapegoat branch1 < 1292266516 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: heh, right, but the point is < 1292266526 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: some VCSes promote doing it without even telling the VCS you're branching < 1292266528 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but anyway, that's lovely < 1292266531 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the question is, whether the store has to be inside the directory or not < 1292266542 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (the above softlink doesn't work in every other VCS, because they have the working directory addressed without a hash) < 1292266544 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it doesn't, working directories and stores are independent < 1292266552 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, so far it looks like 4/5th of the code with be a char mapping table :P < 1292266567 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in fact, there's no reason to have multiple stores on a given physical computer at all < 1292266568 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(TODO: figure out how to find the relevant working directory without having the path hardcoded and keeping merging and linking working) < 1292266575 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: indeed < 1292266579 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you don't want a patch, you just don't whitelist it < 1292266587 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but you would, anyway, for convenience :) < 1292266596 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and for speed using scapegoat, probably < 1292266600 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you want to save network traffic, or whatever, you set things to download only patches that are contained in some branch you have < 1292266605 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1292266621 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but NOTE, I *still* refuse to have anything in ñscapegoat be able to have the same file name but different contents < 1292266628 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :agree, I don't see a reason to do that < 1292266631 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and I'll never shut up about that :) < 1292266654 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the only remaining thing I can't figure out how to do without that is how to identify "the current working scratch space", and I'm sure I'll figure that out < 1292266665 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(perhaps it doesn't even have to exist) < 1292266670 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :actually, I think it works the other way round < 1292266679 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1292266684 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what you ideally want is for the working directory to implicitly be a branch < 1292266693 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :referring to "the changes that happen to be in this directory right now" < 1292266703 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and the only tricky part there is figuring out what its name is < 1292266706 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: actually, I think the VCS should not even care about the current working directory unless you tell it to commit it < 1292266713 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(perhaps not platonically, but practically) < 1292266726 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's just, the VCS has to know what patch your working directory is applied to < 1292266728 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i.e., its parent < 1292266734 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, and all the changes since < 1292266736 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so we have to figure out a way to look that up < 1292266741 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: which I'm not sure how to do < 1292266749 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :because we can't have łscapegoat/current-parent < 1292266758 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm in favour of editor integration so every change automatically makes a patch, then committing is just grouping them into a larger patch < 1292266779 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I think I'm for that in theory, but strongly against in practice due to efficiency and disk space concerns < 1292266790 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :assuming you mean every change as in every keypress < 1292266791 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :weren't you writing an editor that worked like that? < 1292266798 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and maybe not /quite/ to that level < 1292266804 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, sort of < 1292266807 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :every save would be good enough for most practical purposes < 1292266812 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: my editor just pushed saving one level lower < 1292266814 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and let the rest cascade < 1292266830 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, it's nice to be able to cherrypick and organise each change < 1292266835 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so I'm not sure that's actually practical < 1292266838 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :anyway, whatever < 1292266847 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: lack of sensible cherrypicking is one of the things I dislike most about git, btw < 1292266854 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as in, you can do it, but it's much worse than darcs or scapegoat < 1292266857 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the only thing that needs to be figured out, really, is how to figure out what the parent of the current working directory is < 1292266867 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1292266880 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :since you can't have Ωscapegoat/current-parent, as I said < 1292266897 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :since that violates the One Filename, One Contents (Modulo Hash Collisions) Principle < 1292266901 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :TODO: give that principle a better name < 1292266905 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*One Possible Content < 1292266935 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm... ReiserFS, were it still maintained (heh) would be perfect for scapegoat < 1292266950 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: since, it's going to have a *huge* number of files, most of them very small < 1292266967 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :thankfully, filesystems with the same advantages as ReiserFS in that area are popping up < 1292266972 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ext4, to a degree, and btrfs (grr Oracle) < 1292266979 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :one thing that worries me is the files-per-directory limit < 1292266988 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that many filesystems have < 1292266994 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(it crashed NAO a while ago, for instance) < 1292266996 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :why not use a non-file backing? < 1292267003 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :or rather < 1292267010 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: for trivial ®scapegoat merging < 1292267013 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :consolidate the data in some db locally < 1292267017 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :nope. < 1292267018 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: conceptually, that works fine with scapegoat, as does any other sort of backing store < 1292267020 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :not happening :) < 1292267026 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it defeats the esofeature that elliott most wants for it < 1292267027 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, okay, but is it actually practical to not do so < 1292267039 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: sure, it'd just lose an important feature < 1292267046 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it may be eso, but I think it's valuable < 1292267050 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, indeed < 1292267054 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :eso != useless < 1292267060 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although there is a strong correlation < 1292267060 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: for instance, having to run a special VCS-specific server turns a lot of people off < 1292267066 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I do insist that it's an esofeature, though < 1292267067 0 :cheater99!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1292267075 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: this way, anything that can distribute a file tree -- including tarballs! -- works for pulling < 1292267078 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, rsync backup on .minecraft takes AGES due to the many small files. Fewer larger files would end up less spread out over the disk < 1292267080 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(the copy-with-cp, rather than filesystem store) < 1292267087 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: that's rsync's fault < 1292267090 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: just tar it up beforehand < 1292267097 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, no it isn't. tar would be just as slow < 1292267104 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, because 90% of the time is seeking < 1292267106 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: that's tar's fault < 1292267109 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :if it isn't in cache < 1292267111 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, you fail < 1292267117 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: nope, tar fails < 1292267135 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, so what should it do to work around the required seeking? < 1292267157 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: switch you to a filesystem that stores small files inline < 1292267163 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :like btrfs (I think ext4 does it too) < 1292267167 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: (or buy you an SSD) < 1292267175 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, using ext4 or jfs on that partition iirc < 1292267183 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: wrt files-per-directory, < 1292267187 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, no I couldn't. The backing disk is 2 x 1 TB < 1292267194 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: easy hack: just do store/1, store/2, store/3, ..., store/55555555 < 1292267202 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and also have a prefix _ < 1292267208 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: store/_1 is another hierarchy just like store/ < 1292267217 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, that'd become inefficient over time < 1292267228 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you'd a) end up with duplicate stores for the same hash, in, say, /1 and /2 < 1292267229 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you think you could ever use up (max inodes in directory)^2? < 1292267230 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, better, use the two first letters of the hash as prefix < 1292267237 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I don't think store/_1 would ever actually happen < 1292267240 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and b) have to lsearch all the subdirs to find a given stash < 1292267241 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: oh, that is a better idea, indeed < 1292267242 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't mean _1 < 1292267243 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :perhaps first three < 1292267247 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I just mean with the numbered subdirs < 1292267248 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :like store/fa/fabajshd.whatever < 1292267248 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: see what Vorpal said < 1292267250 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :that's an actually good idea < 1292267255 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I was thinking about that < 1292267256 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :although let's say first three or four characters < 1292267258 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, this is a classical solution to the issue < 1292267263 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, look at stuff like ccache for example < 1292267264 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it doesn't scale in that you need to know which size of prefix to use < 1292267265 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: I know, it just didn't occur to me < 1292267271 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and it'd have to be fixed in advance < 1292267280 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, you could subdivide < 1292267283 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: just pick the longest prefix that all of them will fit into a single dir of a filesystem we're targeting < 1292267297 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, filesystems are becoming 64-bit < 1292267299 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, if store/fa becomes too large then split it in store/fa/a/ and so on < 1292267300 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, what is a good lowest-common-denominator for filesystem limits anyway? ext2? < 1292267303 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so presumably, the limit is going away < 1292267309 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'd say Minix filesystem < 1292267309 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, see what I mean? < 1292267317 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it's probably the stupidest, simplest, most limited Unix-like filesystem there is < 1292267321 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: then you could have subdivided and nonsubdivided versions of the same system and try to merge them < 1292267327 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, oh right < 1292267335 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, it doesn't *really* matter too much < 1292267343 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, this works as long as you don't want copy on merge < 1292267343 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: because we can always just define a new repository format with more subdivision < 1292267348 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I'm just trying to preserve your esofeature < 1292267348 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :elliott, can't those adjectives all be applied to Minix itself? < 1292267355 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, you can't copy merge then < 1292267360 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :against all possible eventualities < 1292267364 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (and that'll be the one exception to the copy-merge rule -- if the Ŧscapegoat/version files aren't equal, then you're fucked) < 1292267378 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (thankfully, you can just convert the older one) < 1292267381 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: no, we can make do without that exception too < 1292267390 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what you do is, you use version-specific subdirs in ôscapegoat < 1292267391 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, I *do* think that using a sqlite db or such would be far more efficient < 1292267393 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you mean store everything in ¥sca- heh < 1292267404 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: sure, I guess, but the resulting repository would be useless < 1292267406 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then, if you detect two different versions there < 1292267408 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: haha! < 1292267411 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you convert it all to the newer formar < 1292267413 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*format < 1292267415 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: not for scapegoat itself, that's for sure < 1292267422 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, well for the metadata I meant < 1292267422 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and also would *completely* ruin my esofeature < 1292267431 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, sqlite isn't good for storing large blobs < 1292267431 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: fair enough, then < 1292267436 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, and yes it would < 1292267439 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, or not < 1292267442 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, fuse-sqlite ! < 1292267446 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: rugh < 1292267447 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*ugh < 1292267449 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, :D < 1292267455 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, note: I was not serious < 1292267471 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: does that /exist/? < 1292267477 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I love the concept, though < 1292267496 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: anyway, sqlite is relational < 1292267503 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and scapegoat's database isn't even remotely relational < 1292267515 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :the most I'll even *think* about caving into would be an object database < 1292267520 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well, freeform object database < 1292267523 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :like a JSON database or something < 1292267541 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric : Vorpal: does that /exist/? <--- not that I know < 1292267549 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's not too far off the NoSQL databases < 1292267555 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: as long as you could get two separate database files and do "scg db merge db1 db2" I'm *willing* to consider it. < 1292267556 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, btw rugh is +5 V right? < 1292267560 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*maybe* < 1292267560 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, and rugl -5 V < 1292267563 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :I think something like that exists < 1292267564 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :or do you use 3.3? < 1292267569 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, now I have an urge to call them databasen just to annoy all the people who come up with silly plurals for things < 1292267570 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: shaddap :P < 1292267578 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: UNICES < 1292267585 0 :Deewiant!unknown@unknown.invalid PRIVMSG #esoteric :http://www.nongnu.org/libsqlfs/ < 1292267599 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: btw, what happened to you going home? (please don't answer this with "oops, I forgot, goodbye!", as that'll just teach me not to ask in future) < 1292267611 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Deewiant: that's the wrong way around, no? < 1292267613 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: oh, I decided to stay as long as the conversation was interesting < 1292267616 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal meant mounting sqlite with FUSE, didn't he? < 1292267623 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'd better think of something, then :) < 1292267625 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, yes, which makes no sense < 1292267655 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, I didn't want to go home in rush hour < 1292267664 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: terrible idea: People are defined as the set of objects they've created. < 1292267668 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, anyway, I strongly suspect the esofeature will kill efficiency. Adding a version number is indeed a good idea < 1292267670 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(no, really, it's terrible, I'm joking) < 1292267672 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but two hours for an interesting ontopic conversation here (if you consider esoVCSes as esoprogramming) is close to a record < 1292267680 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: that's not so much terrible as nonsensical < 1292267682 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :and then, if you have to drop it, sad, but not much to do about < 1292267683 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: well, we'll see :P < 1292267692 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and impossible to enforce without some sort of public-key signing < 1292267699 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: if I can get "scg db merge db1 db2" working exactly the same way with some database, then I'll consider it < 1292267713 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, I think that patch authors and the like *should* be tied to a public key, now that you mention it < 1292267715 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: "scg"? that's even worse than "sg" < 1292267724 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: so do I, but not to get that genuinely terrible idea working < 1292267728 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: to avoid the situation mentioned in http://geekz.co.uk/lovesraymond/archive/so-i-married-a-kernel-programmer < 1292267733 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, what does git's repo format look like? < 1292267736 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Transcription if you won't click that: < 1292267741 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Reiser: Oh dear god, please forgive me! < 1292267744 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Linus: Um, hi Reiser < 1292267748 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Reiser: Linus, I've done something TERRIBLE! < 1292267754 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Linus: Tell me, I'm sure we can sort it out < 1292267761 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Reiser: I faked a Signed-Off-By From CHRISTOPH HELLWIG! < 1292267766 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*from < 1292267778 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :[...irrelevant material elided...] < 1292267781 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: um, a mess < 1292267799 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, but fast iirc? < 1292267801 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :git is a versioned filesystem that, as of late, has started pretending it's a version control system :) < 1292267816 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: scg was a legitimate brain-typo < 1292267818 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: for spg < 1292267827 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :spg may be a bad name if it's hard to remember < 1292267828 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :spg doesn't sound very scapegoat-y < 1292267830 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292267849 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :let's just call the binary (insert non-ASCII character here) < 1292267851 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if cpressey were here, he'd be adamant that we call the implementation something different from the specification < 1292267861 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but I think that's a terrible idea in this case :) < 1292267870 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, btw, how will you store stuff. I mean, incremental diff? What I'm wondering about is how long a checkout from scratch would take < 1292267870 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :better, let's make the binary "scapegoat", and symlink it from /every/ non-ASCII Unicode character < 1292267874 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so you don't have to remember which is its < 1292267879 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: brilliant! < 1292267884 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, for a repo with many many many commits (think, linux source code) < 1292267891 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: ask ais523 to summarise the patch format in one line ... < 1292267894 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :hopefully he's okay with doing that :P < 1292267899 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not with clog down < 1292267902 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it's not really a patch at all, it's...something < 1292267907 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: what should I grep for? < 1292267908 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'd be bound to mess something up < 1292267910 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I have your logs < 1292267911 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, it is up isn't it? < 1292267916 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :clog, hi! < 1292267919 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : anyway, you can think of the lines, with unique IDs (which don't have to be consecutive integers, I just don't want to keep typing long hashlike strings) as "start of file:0", "end of file:1", "add 'a' between 0 and 1:2", "add 'b' between 2 and 1:3", "add 'c' between 3 and 1:4" < 1292267926 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wow, this client has a lot of scrollback < 1292267932 0 :cheater99!~cheater@e181137083.adsl.alicedsl.de JOIN :#esoteric < 1292267933 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: it's back up, wasn't when the conversation started < 1292267940 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1292267956 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, oh is this the fractal one discussed here some time ago? < 1292267962 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yse < 1292267963 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*yes < 1292267969 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: scapegoat is the perfect version control system for ElliottOS < 1292267974 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ah, bound to be HUGE amount of data then < 1292267978 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :erm no < 1292267984 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: tell him why he's wrong, i'm way too lazy < 1292267988 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the fractal nature isn't even the major feature, it's just there to simplify things < 1292268001 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: one large piece of information in many small pieces is still much the same amount of information < 1292268002 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I don't see why there'd be more data than a diff, really < 1292268012 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :maybe slight overhead from the fact that they're objects < 1292268023 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, true, but does it store it per line or at a more granular level? < 1292268025 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I mean, if you stored every character separately, sure... < 1292268029 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: both < 1292268042 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, that sounds like it would have some overhead to me < 1292268045 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: why scapegoat is perfect for ElliottOS: there's only one language to deal with, so it can be totally semantic about the storage; there's no files, but scapegoat works fine without files < 1292268046 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :etc. :P < 1292268055 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: indeed < 1292268068 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but say it doubles or triples the overhead, that's not going to be amazingly large as VCSes go < 1292268097 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, how large is linux-2.6.git again? Some hundred MB iirc? < 1292268115 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: internally, you could always just store, say, lines as the lowest thing and then address codepoints as positions in that line, no? < 1292268123 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: "again"? you expect me to have it memorised, and to have told you before? < 1292268141 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: indeed < 1292268150 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, hm I thought you complained about the size some months ago in here. Maybe it was someone else < 1292268152 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suspect an efficient implementation will actually store entire recent trees < 1292268162 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to avoid having to reconstruct them on every edit < 1292268162 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: in fact, as a storage optimisation, you could not store lines separately < 1292268165 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not all of them, just a few < 1292268168 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: that is, you store them in the patch < 1292268171 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and just attach a hash to them < 1292268173 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :this is all storage optimisation < 1292268184 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and then you have some kind of index that says "for the line with hash FOO, see patch BAR" < 1292268186 0 :Zuu_!unknown@unknown.invalid NICK :Zuu < 1292268187 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1292268187 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so you get one file per patch? < 1292268195 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, in the store < 1292268200 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: of course, in an ideal scenario, the store library will handle all this :) < 1292268202 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :if you just tell it to < 1292268222 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, what if two authors made the exact same change, will they get the same filename? < 1292268233 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: hehe... ais523, tell him about identical changes! < 1292268234 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, (that is, does the hashed bit include the author?) < 1292268237 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: no, it wouldn't be the exact same as it wouldn't have the same author < 1292268254 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but the line they append would be the same < 1292268258 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :since it would simply be the hash of the line they add < 1292268261 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :on the other hand, there wouldn't be a conflict unless you asked for one, because it'd automerge the changes < 1292268267 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :right? < 1292268279 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: oh, you mean hash individual source lines as well as patches themselves, as an optimisation? < 1292268293 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: sure, and destination lines too < 1292268294 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: just an idea < 1292268294 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that'd probably be a pessimisation, on the basis that the lines are likely to be generally shorter than the hashes < 1292268297 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :probably < 1292268299 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :sounds like space-time tradeoff < 1292268317 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I don't really care how slow it goes as long as it's faster than darcs, and doesn't increase exponentially < 1292268323 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suppose, what you could do is, if the line is shorter than a hash, store the line; if it's longer than or equal to a hash, store the hash < 1292268332 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: meh, seems like a waste of time < 1292268332 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, does darcs increase exponentially? < 1292268335 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but this is a Vorpal-level microoptimisation at this stage < 1292268342 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, also, what about super-exponentially? < 1292268345 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: probably not, but it's so slow, who can tell? < 1292268348 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: in the worst case, yes, but that case is kind-of hard to trigger nowadays < 1292268354 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, XD < 1292268364 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :darcs is pretty nice platonically, but *really* bad for computers < 1292268369 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :hah < 1292268375 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, it never been slow for me < 1292268377 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and I'm not convinced patch theory actually /does/ much other than look mathematical < 1292268381 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: sorear looked into it, and decided the way it handled conflicts made no sense, mathematically < 1292268384 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: dude, you use bzr < 1292268387 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :bzr is the slowest VCS out there < 1292268390 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, I used darcs too < 1292268390 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :whereas sg conflict handling is very sensible < 1292268393 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it's so slow as to be painfully unusable, and everyone agrees < 1292268398 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :your opinion on speed is biased :P < 1292268407 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, uh, it works fine for me. I never had issues with speed. < 1292268424 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(if the order you apply the patches in matter, or a patch has nowhere to apply, that's a conflict; you resolve it by reverting both patches and adding a new one) < 1292268424 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, sure, hg is a bit faster, but bzr is not annoyingly slow < 1292268437 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*in matters < 1292268446 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: also, reverts are stored as just "revert patch X" < 1292268463 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :both for semantic reasons, and because that's all the info you need, you don't need to store what was reverted < 1292268481 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, patches should be able to have multiple authors < 1292268492 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: for instance, if you merge two identical changes, who's the author? I don't think it should be "whoever told scapegoat to merge" < 1292268495 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :they're the *committer* < 1292268498 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but I don't see how they're the author < 1292268499 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292268509 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :the author is both of the people who had the wise idea to, I don't know, add "foo" to the README < 1292268510 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, I'd say the author of the merge is in fact scapegoat itself < 1292268517 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, yes, but that's not helpful to see in repositories < 1292268517 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, what is this about blame based bit? < 1292268518 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and there are two authors in its dependencies < 1292268526 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if you see the diff that adds foo, you should see both authors who did it < 1292268532 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: admittedly, for more complex merges, I'm not sure < 1292268539 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it should probably be the person who ran scapegoat, in that case < 1292268543 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :as scapegoat is basically acting as their automatic helper < 1292268553 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: well, the great thing is, all the info's available both ways < 1292268559 0 :impomatic!unknown@unknown.invalid PART #esoteric :? < 1292268566 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292268573 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, so what is the blame bit? < 1292268585 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: thing I don't like about git: if you have a merge conflict, it puts it in the actual file being merged < 1292268587 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :exclude some author simply? < 1292268592 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think the author should be scapegoat, incidentally, to avoid identical conflict resolutions of identical patches propagated ad infinitum < 1292268594 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :which, of course, makes it a completely meaningless file to whatever tools you use it with < 1292268598 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, most VCS does that iirc < 1292268603 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: it's bad < 1292268608 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, wait < 1292268609 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, quite < 1292268613 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if a patch can have multiple authors < 1292268615 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: just do authors = [] < 1292268618 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :where [] is the empty set < 1292268619 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292268641 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :'twould also let you submit patches anonymously < 1292268654 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, disagree < 1292268663 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: such a path doesn't have no authors, it has an anonymous author < 1292268665 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, I'm unsure on that myself < 1292268675 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and what of the GPG key? < 1292268687 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, anonymous patches wouldn't have one < 1292268691 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: an anonymous author should be something like "Anonymous ", though < 1292268705 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(yes, .invalid is actually in RFCs!) < 1292268707 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I know < 1292268724 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :signing should perhaps be optional < 1292268733 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so you can sign a commit rather than the individual lines in it, for instance < 1292268737 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, why email < 1292268744 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, ais523: do either of you have any plan to implement this btw? < 1292268746 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: perhaps... < 1292268749 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: yes, at least I do < 1292268753 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :s/ / / < 1292268755 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you could set the default branch rules to reject unsigned patches < 1292268758 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I didn't before round about now < 1292268761 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but I do now < 1292268776 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: I had very vague plans which never got anywhere, and a lot of more urgent things to do < 1292268785 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ah right < 1292268786 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think even gcc-bf is above scapegoat on my list of things on indefinite hold < 1292268798 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :most things work better with someone to work on them with, though < 1292268807 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but if I start working on it, it better shoot near the top of that list, I don't wanna do all this myself :P < 1292268833 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: this may be a bad time to do it, then; you could try in December instead < 1292268837 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :umm, January < 1292268855 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: haha, you vastly overestimate how quickly I work on things < 1292268862 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'll probably spend the next few months puttering about with key-value stores < 1292268875 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in that case, it wouldn't need to be near the top of the list, halfway down would be just fine < 1292268905 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: by start working on it, I mean for actual real < 1292268909 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :as in, implementing the actual patches and algorithms < 1292268942 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, key value stores are easy aren't they? < 1292268948 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, as in, a solved problem really < 1292268948 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: not this kind of key value store < 1292268960 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: it's hash-addressed, append-only, and *everything* goes through that mechanism < 1292268973 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and it has to be fast, space-efficient, and capable of supporting huge, huge trees < 1292268973 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, oh and does it need to copy merge? < 1292268975 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and I mean huge < 1292268976 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: "append-only" always reminds me of "write-only" < 1292268978 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and it's also recursive < 1292268985 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: well, sure, but that's already handled by the hash-based part < 1292268990 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :why recursive, btw? < 1292268991 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, "immutable" isn't quite right, obviously < 1292268998 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: recursive simply because objects contain other objects < 1292269004 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: patches contain changes < 1292269006 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: branches contain patches < 1292269007 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :etc. < 1292269013 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I mean, patches have authors < 1292269021 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if it wasn't recursive, you'd have to say patch1_author1 or something < 1292269023 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :don't they just refer to the hashes of the other objects, though? < 1292269025 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, can it be self-recursive? < 1292269038 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, sure, but that's recursivity < 1292269042 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: just optimised out, into pointers < 1292269046 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: wat? you mean cyclic? < 1292269049 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, I see < 1292269051 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, yes! < 1292269051 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I suppose there's no reason it couldn't point to itself < 1292269055 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you aren't storing plaintext, but arbitrary objects < 1292269060 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I knew I was missing something < 1292269065 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, this patch depends on itself! < 1292269069 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, perhaps not totally arbitary, but close < 1292269084 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and, I mean, you'd want to say { insert_reference(patch, "some_relevant_thing", anobj); } and have it automatically insert a hash reference < 1292269096 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I mean, I'm not storing arbitrary objects, it's more like... < 1292269096 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, wait, this would modify the hash right < 1292269111 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, which means you would have to find a self-hash kind of < 1292269116 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'm storing a key-value store, which can have, as its values, either strings, or key-value stores; which can have, as their values, ... < 1292269124 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: it's like YAML with all the features for things like mutually recursive pointers < 1292269126 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: looks like I'm not supporting mutual references, then! < 1292269130 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except, in the filesystem rather than a serialisation < 1292269134 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: YAML has those, actually < 1292269138 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I know < 1292269142 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's what I was referencing < 1292269144 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but, not really; I mean, I'm literally just storing: < 1292269144 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the fact that it does < 1292269149 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :data Foo = String | Map String Foo < 1292269153 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :really < 1292269157 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, fair enough < 1292269160 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :except that, values of the latter are replaced by the hashes of the relevant objects < 1292269164 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :JSON, then, rather than YAML < 1292269166 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :when serialised < 1292269169 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: JSON has integers! < 1292269172 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and arrays < 1292269185 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, I suppose < 1292269196 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :scapegoat would like unordered sets < 1292269202 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: easy < 1292269207 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: to insert into a set, do < 1292269217 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :set[hash(obj)] = "irrelevant" < 1292269222 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: or rather, set[obj] = ... < 1292269226 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and it gets auto-hashed < 1292269229 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1292269235 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well < 1292269236 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1292269236 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :like the old Perl trick of setting them to 1 < 1292269239 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :set[hash(obj)] = obj < 1292269245 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :because, you can't have a pointer as a key, only a string < 1292269250 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so that's from a string to a pointer < 1292269250 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, right < 1292269254 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :just, they happen to be encoded almost identically < 1292269256 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you'd probably want to optimise that case < 1292269259 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :probably, yes < 1292269261 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(key = value with different encoding) < 1292269293 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, I bet GitHub are worried about having to store N copies of many, many commits < 1292269295 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :because of forked projects < 1292269302 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :whereas scapegoathub doesn't have to worry about that in the slightest :) < 1292269313 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, doesn't git support shared repo data? < 1292269317 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, even bzr does that < 1292269318 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :github may use a similar form of centralised hash database < 1292269326 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: not that i know of, probably if you do links < 1292269328 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :given how git works and what they do, they'd be fools not to < 1292269334 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: nah, they use actual git < 1292269341 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: afaik < 1292269362 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: what's your opinion on fastforwards in git? < 1292269367 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: what are they? < 1292269368 0 :Vorpal!unknown@unknown.invalid PRIVMSG #esoteric :elliott, shared repo is one feature I love with bzr < 1292269372 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I've probably heard of them and just forgotten it < 1292269386 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: in scapegoat, that's easy; you just symlink the ßscapegoat dirs < 1292269387 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: they're a merge when one side made no changes < 1292269398 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in which case, there's no commit message for the merge, it just copies across < 1292269400 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Vorpal: and it's guaranteed to never clash, if they're the same repo, just with branches and the like < 1292269416 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: erm, how can there be any requirement to merge if one side made no changes/ < 1292269418 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*changes? < 1292269419 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's technically a merge-rebase, just a special case that comes up a lot < 1292269420 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: because it's git < 1292269427 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you're merging changed with unchanged < 1292269435 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :remember, git cares about snapshots, not diffs < 1292269435 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: as in, if the server is A->B->C, and your tree is A->B->C->D, I don't see why it doesn't just turn into A->B->C->D < 1292269441 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: it does, that's a fastforward < 1292269448 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :some git users really dislike them < 1292269451 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: in fact, scapegoat's logic already has it doing that; the point of divergance is C, so a branch for D is created, attached to C < 1292269457 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and it tries to merge with the Official Branch < 1292269460 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :which is -- surprise! -- C < 1292269460 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, I think scapegoat handles the issue great < 1292269465 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and merging X with X is a nop < 1292269468 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so it just succeeds < 1292269480 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: *I think elliott's mergeless commit system in scapegoat handles the issue great < 1292269480 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1292269481 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :git's model really screws up that case badly, thoguh < 1292269488 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I promise not to get *too* egotistical about that! < 1292269490 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :by making it really conceputally confusing < 1292269506 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: git made so much more sense when it was a low-level distributed filesystem, and tools like cogito build a VCS on top of it < 1292269514 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but then everyone went WAAH! MAKE GIT ITSELF USABLE! < 1292269517 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and now it's insane < 1292269537 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: can I make a confession? I stole the every-commit-branches-and-merges-are-optional thing < 1292269543 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :from http://en.wikipedia.org/wiki/PVCS, an old CVS-alike < 1292269552 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :"However PVCS can also be configured to support several users simultaneously attempting to edit the file; in this case the second commiter (chronologically speaking) will have a branch created for him/her so that both modifications, instead of conflicting, will appear as parallel histories for the same file. This is unlike CVS and Subversion where the second commiter needs to first merge the changes via the update command and then resolve conflic < 1292269552 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ts (when they exist) before actually committing." < 1292269558 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but, on the other hand, PVCS was primarily locking-based < 1292269565 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and didn't have a nice auto-merging algorithm for the common case < 1292269565 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so nyah < 1292269572 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hg works a bit like that too < 1292269593 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :indeed, except that it treats heads and branches differently, and having multiple of the former is a huge pain that you try and rectify immediately < 1292269595 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :which, really, makes little sense < 1292269597 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(you think I'd design a VCS without scouting out the competition?) < 1292269610 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, what was that GNU VCS called? < 1292269613 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: arch? < 1292269615 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :/tla < 1292269616 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's it < 1292269622 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the insane one that we tried and failed to set up ages ago < 1292269625 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1292269630 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: have you looked at Monotone? < 1292269633 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no < 1292269635 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it's similarly crazy in over-hash-use :) < 1292269639 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(and very, very slow) < 1292269652 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: in fact, it met all of Linus' criteria for what the new kernel VCS must be *except* for being fast < 1292269656 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :which it failed very hard at :) < 1292269722 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: have you looked at Codeville? good luck doing that, the site is gone now < 1292269727 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I haven't < 1292269741 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, the name is worryingly reminiscent of Farmville < 1292269751 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which I fear has stolen a potentially useful name fragment < 1292269753 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's Ross Cohen & Bram Cohen (bittorrent inventor)'s, circa 2005, still used at BitTorrent, Inc. < 1292269768 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: basically, it was very much focused on never having to merge anything manually again < 1292269775 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :[[It uses an innovative merging algorithm called the "Codeville merge". A new merge algorithm called "Precise Codeville" or "pcvd" merge is under development.]] < 1292269776 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and apparently, < 1292269783 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :[[The SCCS file format uses a storage technique called interleaved deltas (or the weave). This storage technique is now considered by many revision control system developers[who?] as key to some advanced merging techniques, such as the "Precise Codeville" ("pcdv") merge.]] < 1292269808 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: btw, #revctrl exists on freenode, but I haven't found it a particularly worthwhile place < 1292269812 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :not bad, just not very interesting < 1292269814 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you know, the best thing about Wikipedia cleanup tags is that they identify the source of code straight off < 1292269823 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :* Topic for #revctrl is: You are in a maze of twisty little version control systems, all different: aegis bazaar codeville cvs darcs git mercurial monotone rcs revc svk svn tla vesta || wiki: http://revctrl.org/ || mailing list: http://lists.zooko.com/mailman/listinfo/revctrl || logs: http://colabti.org/irclogger/irclogger_logs/revctrl or http://www.scooter.cx/~mozbot/ || see channels of specific systems for hel < 1292269823 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*source of text < 1292269828 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: heh < 1292269844 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: svk is truly a sight to behold; it's written in perl, and based on svn < 1292269844 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, is that topic completed as "help" or "hell"? < 1292269848 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it turns svn into a destributed system < 1292269855 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's completed as hel < 1292269858 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :X-D < 1292269894 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1292269907 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so would scapegoat come with, like, a library of merging techniques? < 1292269915 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :as in, a bunch of "conditions for this working => actions to take" rules < 1292269922 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think so < 1292269928 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :actually, more likely it'd be a library of patch types < 1292269931 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'm *fairly* sure it's doomed to end up with a programming language inside it. < 1292269937 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :much like darcs attempts but never really got started at < 1292269938 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: What with branch specification, this, ... < 1292269952 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(branch specification = e.g., the formula that @tip is defined to be) < 1292269954 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :things like the search-and-replace patch would be so much better if they were actually semantic < 1292269975 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: interesting idea, but i'd only attempt it with a language plugin handy < 1292269978 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you know what? I fear we'll end up with editor : Emacs :: VCS : scapegoat < 1292269980 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and a very good one at that < 1292269983 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I mean, with the language plugins < 1292269993 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, I fear that too; I'm going to try and stop you if you start making it *too* flexible < 1292270002 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :for reasons of both speed and sanity :) < 1292270005 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and implementability < 1292270022 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: can I at least have a Towers of Hanoi simulator? < 1292270027 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oh, fine < 1292270033 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Feather revision control system: every change is applied retroactively, so there are no changes to track. Problem solved! < 1292270044 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I was joking < 1292270053 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I know... I was too (re Feather) < 1292270066 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :don't make me get my head around Feather right now < 1292270071 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1292270080 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it would be fun if you could somehow set up a bunch of branches such that merging them would end up solving a towers of hanoi game in the process < 1292270091 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (thing to make ABSOLUTELY SURE OF: merging always halts) < 1292270095 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :like solving Sokoban inside apt? < 1292270099 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yse < 1292270101 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*yes < 1292270105 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*sudoku < 1292270109 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Sokoban really would be impressive < 1292270117 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I was thinking that :P < 1292270148 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you know, I've never heard of any really innovative VCS ideas < 1292270155 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I think you're the only real innovator in the field :P < 1292270172 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: that could almost be the motto of #esoteric < 1292270211 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, but at least programming languages have active academia..e? academiae? < 1292270225 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the only VCS-related topic I can think of that gets papers is regular-style merging algorithms < 1292270313 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1292270345 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it occurs to me that the loss of þscapegoat/names is rather disasterous < 1292270352 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :as, for instance, you no longer know what the tip is < 1292270352 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well < 1292270353 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :actually, you do < 1292270360 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :since @tip always means one thing < 1292270369 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: in fact, @tip shouldn't be in þscapegoat/names, because it should be constant < 1292270374 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you used þ earlier! < 1292270377 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :referring to the Official Branch definition < 1292270379 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: whoops, sorry < 1292270388 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :i'm running out of alt-gr < 1292270392 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*§scapegoat < 1292270394 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's why I was using dead keys < 1292270427 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: arguably, you might actually want to redefine what the default checked-out branch is... but that argument sounds flimsy to me < 1292270428 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and really confusing < 1292270440 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :if the repository can configure everything about the VCS, you can never be sure how the VCS will act < 1292270443 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :which doesn't sound like a good policy to me < 1292270452 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, repos themselves don't have a "checked-out branch", platonically < 1292270457 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just hints for which branches might be interesting < 1292270480 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, yes, but consider @tip < 1292270500 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if we say in the spec that @tip is, platonically, [some hash], referring to the formula for the Official Branch < 1292270508 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: then it always behaves consistently < 1292270515 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if we don't, and a repo can redefine @tip < 1292270522 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(@tip being the implicit argument to, e.g. "gimme-a-cwd") < 1292270528 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :then the VCS could behave unpredictably < 1292270548 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, "the Official Branch" needs to be bounded somehow < 1292270564 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :presumably, by the hashes in the tarball in question < 1292270570 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: basically, I'm just saying that some names should be built into scapegoat, not looked up in the repository < 1292270583 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and @tip is one of them, it should always point to one single formula that is blessed, by word of god, to be the formula for working out the Official Branch < 1292270608 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, should repo stores contain only patches that are vaguely relevant to the repo? < 1292270623 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if you're a distributor, then yes < 1292270635 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I think we should have a garbage-collect command that gets rid of all unreferenced objects < 1292270653 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: ooh, risky in a sense < 1292270654 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (note: git has this, and people say it's a design flaw in git; c'est la vie) < 1292270669 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, only in that you could potentially lose patches that aren't referenced anywhere, if everyone in the world does it < 1292270671 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :more so than in git, on the basis that you'd need to define, right now, all branches that might later be interesting < 1292270674 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but how would you look at such a patch anyway? < 1292270678 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :you'd have to specify its hash directly < 1292270686 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or a branch that matches it < 1292270689 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, it wouldn't go that insane < 1292270702 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well, maybe it would < 1292270711 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ok, how about this for logic: < 1292270725 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: everything not reachable from @tip, and that doesn't have a nickname, is removed < 1292270726 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: except... < 1292270730 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: forwards from @tip too < 1292270733 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so you'd get the temporary branches < 1292270742 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that could work < 1292270750 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but should not be something that people run regularaly < 1292270752 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*regularly < 1292270754 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'm not sure how you'd look forwards from @tip, though :) < 1292270756 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and indeed < 1292270773 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's a case to be made for making patches never deletable ever, which is to protect the VCS from clueless users to some extent < 1292270776 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :screwing things up < 1292270808 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well < 1292270814 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: consider scapegoathub, with its One Gigantic Store < 1292270835 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: when you ask for a tarball of Ðscapegoat for a certain project from scapegoathub < 1292270841 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: how does it determine what subset to give you? < 1292270842 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :obviously, downloading the whole thing and asking for @tip would be stupid < 1292270856 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: however it determines it: that's the algorithm to figure out what objects you need to keep in the store < 1292270857 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :everything else can go < 1292270873 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there are two possibilities; ask for @tip for a subset of patches, or ask for a different nickname < 1292270892 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in that case, you could just get @tip's referent itself and its dependencies < 1292270893 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, say you want to download every branch < 1292270895 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :like a git clone < 1292270895 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so you wouldn't get branches, etc < 1292270902 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: how would you do that? < 1292270907 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :for every branch, you'd need a way to know what project they belonged to, I suppose < 1292270910 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (this includes unnamed branches, say if there's branches past @tip that haven't been merged yet) < 1292270928 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :otherwise, suppose I make readme-alpha.txt inside my intercal repository < 1292270933 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's a new file that has no relation to anything else < 1292270944 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :htf is the VCS meant to know that it belongs to INTERCAL rather than some other random project? < 1292270964 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, / itself is an entity, right? < 1292270967 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :just like lines and files < 1292270970 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed, I've just realised that < 1292270973 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so it says that you append a file to / < 1292270980 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and that / happens to be intercal's < 1292270983 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, I only just noticed < 1292270989 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in that case, you can even do an SVN < 1292270996 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and grab a portion of a directory tree < 1292271000 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292271007 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: except that, they wouldn't have scapegoat directories < 1292271011 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :because that's eww < 1292271018 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I forgot SVN did that < 1292271024 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you could grab a portion, but a different way < 1292271028 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and then calculate @tip for that portion < 1292271030 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm happy now < 1292271030 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: of course, directories MUST be entities, to track empty directories < 1292271039 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(which is *not* an unheard of usecase; I've wanted to do it before!) < 1292271047 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think this solves both problems at once < 1292271067 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :even better, you can make two projects into one large one just by creating a new / *below* the existing two < 1292271073 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and moving them into place < 1292271095 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :thus, the concept of "create entirely new repo" exists, but also "merge repo" and "split repo", neither of which is well-defined in, say, darcs < 1292271110 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(not merge as in VCS merge, but merge as in what's considered one project) < 1292271111 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: holy shit, you can merge two /s < 1292271114 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1292271121 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: that is, if you have two separate projects that don't have any clashing filenames < 1292271125 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you can merge them into one, new / < 1292271133 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: this is beautiful. < 1292271134 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :even if they did, you could < 1292271137 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you'd just have conflicts < 1292271150 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, yes, I mean you could merge them into one branch...patch...thing < 1292271152 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :one state < 1292271160 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :we need a better name for this concept < 1292271197 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: "tree" < 1292271199 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :is what git calls it, IIRC < 1292271203 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suggest we call it an (insert random non-ASCII character here) < 1292271210 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: "root" is probably an unambiguous name < 1292271214 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :as in, a single root < 1292271215 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: git's name is more for a snapshot of the entire state, as that's what it thinks of it as < 1292271225 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :"by default, scapegoat checks out the root identified by @tip" < 1292271226 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, it could be the root, a leaf, or even one of the brnaches < 1292271230 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*branches < 1292271232 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'm not talking tree-wise! < 1292271235 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I just meant root as in / < 1292271245 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the problem is we have two conceptual trees and they go in different directions < 1292271247 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: agh, the problem with trees is that they take up so much terminology :) < 1292271259 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what about "twig"? < 1292271281 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I can't see myself calling the gcc source tree a "twig". < 1292271299 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :here: let's call them "turtles" < 1292271301 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: file tree... file root... ugh < 1292271306 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because they're mostly defined in terms of other turtles < 1292271308 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: okay, we'll call them turtles. *for now* < 1292271311 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :not forever :P < 1292271314 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and you can add new turtles beneath, if you like < 1292271330 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :do you add turtles in the bottom or on the top? < 1292271361 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :both < 1292271380 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it's turtles all the way up < 1292271417 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: how come we've unified most of the disparate concepts in VCSes and this /still/ feels more complicated? :) < 1292271435 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :ooh, have you been esovcsing? < 1292271446 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :olsner: yes, except it's turning out to be disgustingly useful < 1292271452 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :yuck! < 1292271455 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: because it's alien < 1292271458 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I'm considering disowning it and putting it up for adoption < 1292271464 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(not really) < 1292271472 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :put it this way, what's simpler, BF or C? < 1292271482 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: BF, of course < 1292271497 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :disagree < 1292271503 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :coppro: really? < 1292271528 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :Yes! < 1292271536 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :bear in mind I teach C, and have come to the conclusion that BF would probably be easier to teach < 1292271539 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: coppro uses C++, he's crazy < 1292271548 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :when was the last time you wrote an operating system in BF? < 1292271549 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although admittedly, it isn't normally used to write kernel-mode keyloggers < 1292271557 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :coppro: that's got nothing to do with the simplicity of a language ... < 1292271582 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :C runtime model: flat memory, file system, arithmetic, stack ... < 1292271592 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :BF runtime model: flat tape, increment, decrement < 1292271603 0 :olsner!unknown@unknown.invalid PRIVMSG #esoteric :coppro: has anyone? yet? < 1292271605 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(ok, also: input stream, output stream, but that's still far more simple) < 1292271608 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :olsner: to my knowledge, no < 1292271620 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :coppro: so how is C simpler? < 1292271632 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :I just said < 1292271644 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :coppro: no, you didn't < 1292271647 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :you asked an irrelevant question < 1292271673 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: well, I fear scapegoat goes the other way, it's a C to existing VCS's BF < 1292271688 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: perhaps < 1292271703 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's more like Lisp or Haskell vs C, really < 1292271704 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I mean, BF has all that disparate [>+<-] and [>+>+<<-]>[<+>-] stuff < 1292271712 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :whereas C just uses assignment < 1292271724 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: we're looking at it from a C perspective, and it seems like *such* a complicated gob of memory management and pointers, but at the same time, really elegant < 1292271731 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :now say C = git, hg, etc. < 1292271742 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suppose that's another step on a similar scale < 1292271744 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :of course, this view is just an artefact of looking from C < 1292271750 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :if we looked from something more objective, it'd look simpler < 1292271792 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: time to make your head hurt: what is the most true-to-the-model name of the command commonly called "commit" in other VCSes? < 1292271798 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sure, now imperative stuff and side effects are all the same, everything's a function in the mathematical sense, flow control's just another function < 1292271804 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but why do I have to use monads? < 1292271817 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: "commit" is ambiguous in other VCSes < 1292271823 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :i.e., the one that inserts a new branch off from the branch of the current working directory < 1292271826 0 :oklofok!~oklopol@dyn37-232.vpn.utu.fi JOIN :#esoteric < 1292271826 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :idea: < 1292271828 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and then tries to merge it with @tip < 1292271831 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: what do you call it? < 1292271834 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :we should actually do something with the ideas we come up with here < 1292271836 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :git commit approximately equals naming a set of hashes < 1292271842 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: err, doesn't try to merge with tip < 1292271850 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it just inserts a new branch off from the branch of the current working directory < 1292271855 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :(ironically, we will just ignore this idea) < 1292271856 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :coppro: I'm already planning to implement it. < 1292271860 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :this is a serious discussion, actually < 1292271870 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :git push is approximately equal to scapegoat make-the-other-side-aware-of < 1292271877 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and-tell-it-to-accept-these < 1292271877 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the "merge with all branches >= the one this is diverged from" is what happens on a default push < 1292271883 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think "push" is a pretty true name for that < 1292271889 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: perhaps < 1292271899 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: with scapegoat, there's "give this store all the hashes we've got that it hasn't" < 1292271900 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :scapegoat is too long to type < 1292271902 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but that's a low-level command < 1292271912 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and you're more likely to want it to do "merge with all branches >= the one this is diverged from" automatically afterwards < 1292271916 0 :coppro!unknown@unknown.invalid PRIVMSG #esoteric :blargh econ 101 < 1292271918 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :coppro: it's going to be sg or spg or something < 1292271923 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: well, the main semantic action is "tell the other side to whitelist these patches" < 1292271926 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :just like mercurial is hg < 1292271936 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: right, it's just -- you know the commit logic I came up with? < 1292271939 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292271941 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: in the Vorp/Orcl situation < 1292271949 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :whitelisting the patches does that automatically, is the brilliant thing < 1292271965 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if they didn't need whitelisting, push would be a no-op, it'd figure out they existed automatically, somehow < 1292271969 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ooh, it's obviously "sg sync" < 1292271970 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so "sg push" = "sg send" + "sg whitelist" < 1292271977 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :where send is just < 1292271982 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :"send all the hashes that we've got and the remote server doesn't" < 1292271988 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, sync's a good name for that < 1292271996 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: except, sync feels like it should be two-way < 1292272004 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so let's say that sg sync is, conceptually, sg send + sg recv < 1292272007 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and shouldn't it? < 1292272008 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: just, optimised so it does both at once < 1292272019 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and then "sg push" = "sg send" + "sg whitelist" or something < 1292272021 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well < 1292272022 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :actually < 1292272023 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :more like < 1292272023 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, send and receive aren't useful operations, you'll get the patch eventually anyway < 1292272030 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :"sg push" = "sg recv" + "sg whitelist" + "sg send" < 1292272035 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you don't not receive patches, conceptually, you just don't whitelist them < 1292272038 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: sure they are, it's the only time where actual data is transferred :) < 1292272044 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: they are implementation details < 1292272046 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: in this case < 1292272049 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(the fact that you might not care about the existence of non-whitelisted patch is an implementation detail) < 1292272054 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, oh I see < 1292272058 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but important ones, ones that you couldn't get away from without completely redesigning the internet < 1292272059 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :we want to give the implementation details an actual name < 1292272063 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1292272109 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so, e.g., sg push would end up pulling down everything that's happened lately, try and merge your current branch with all the ones >= your current branch's parent (this is my commit logic), and then it would send the result back off < 1292272113 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :or something along those lines < 1292272125 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and that'd be < 1292272127 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :$ sg recv < 1292272128 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :$ sg whietlist < 1292272129 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*whitelist < 1292272132 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :$ sg send < 1292272132 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :or similar < 1292272141 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(except probably keeping the same network connection for recv/send) < 1292272149 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: does that sound about right? < 1292272159 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I imagine a config setting (as in, actually ~/.scapegoat, not one of the non-ASCII dirs) would be whether to automatically send and recv on general principles < 1292272164 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and what to send and recv in that case < 1292272176 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :obviously, whitelisting your patches on the remote system would need to actually send the patches < 1292272189 0 :oerjan!oerjan@tyrell.nvg.ntnu.no JOIN :#esoteric < 1292272198 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I agree with your idea < 1292272229 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, the reason this feels complex is that scapegoat's model is mathematically simple, yet at odds with the way the Universe actually works < 1292272237 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think that's pretty eso < 1292272242 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's just, you can't possibly update your main VCS server properly without (1) knowing all the things it knows -- you have to be able to figure out the three structure; (2) merging (however it's done) your patch with everything >= its parent that it *can* merge with; and (3) giving your patches, and all effects, to the server < 1292272249 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so you have to address that detail at some point < 1292272255 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :ais523, I am suddenly immensely interested in this concept. < 1292272258 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(2) is the only bit part of the actual platonic model < 1292272264 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292272268 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but (1) and (3) are required for it to be able to actually /do/ anything < 1292272272 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :again, indeed < 1292272280 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ideally, you'd have them happen automatically as much as possible < 1292272281 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: come to think of it, we should probably specify the non-platonic bits too, just at a higher layer < 1292272282 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :unless you told it not to < 1292272284 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :since they're quiet important < 1292272286 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*quite < 1292272294 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, we should use a different name for it, though < 1292272297 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :otherwise we'd have incompatible implementations of the platonic model... which makes a spec rather silly < 1292272303 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to make it clear it's an impl, not the system itself < 1292272323 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, "Scapegoat: A Model for Distributed Version Control" vs. "Scapegoat: Implementation in Practice" < 1292272325 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :something like that < 1292272341 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (Scapegoat's too good a name not to use for the end product) < 1292272346 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292272353 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you know, it took ages to come up with that name < 1292272373 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, if people think the VCS malfunctions, we can just blame them for looking for someone to blame < 1292272376 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1292272398 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I thought for a short period of time that it sounded a bit negative and confrontational to be the name ... then I realised that MAJOR COMPANIES are saying the word "git" on a regular basis, and mentally congratulated Linus Torvalds for being such a magnificent bastard < 1292272422 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :[[git /'ɡɪt/ < 1292272422 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Git is an extremely fast, efficient, distributed version control system ideal for the collaborative development of software.]] --GitHub homepage; now mentally substitute the real dictionary definition rather than their technical one < 1292272433 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(that is, in actual fact, how git was named; Linus said it was named after himself) < 1292272448 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: the GIMP has all sorts of issues due to its nam < 1292272451 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*name < 1292272454 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :the GIMP is a really terrible name < 1292272456 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and yet, I doubt it's going to be changed < 1292272471 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :perhaps someone can do an Iceweasel on it < 1292272474 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: thankfully, the GIMP is such a horrible program that putting people off using it is probably a good thing < 1292272481 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :meh, I find it useful < 1292272485 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, it's useful < 1292272493 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think it depends on what you're trying to use it for < 1292272502 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's just that if you made an image editor, and at every design decision, took the direct opposite of what GIMP took, you'd end up with a wonderful program < 1292272504 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, the UI has got noticeably better over the last few years, but it's still quite bad < 1292272516 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: they're moving to a single-window model, and I can't wait to see how they mess it up < 1292272523 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(optionally, I think) < 1292272526 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: wasn't that the actual method by which certain design decisions in git were made? < 1292272527 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(but who would turn it off?) < 1292272533 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if in doubt, do the opposite of SVN? < 1292272537 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: *CVS < 1292272546 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: "When I say I hate CVS with a passion, I have to also say that if there are any SVN (Subversion) users in the audience, you might want to leave. Because my hatred of CVS has meant that I see Subversion as being the most pointless project ever started. The slogan of Subversion for a while was "CVS done right", or something like that, and if you start with that kind of slogan, there's nowhere you can go. There is no way to do CVS right." < 1292272548 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1292272564 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: incidentally, have you ever used svn? < 1292272565 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it's truly awful < 1292272567 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1292272575 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :slow, bloated, hard to use (especially to create a repository) < 1292272579 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :badly designed ... < 1292272586 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the major thing that irritates me about it is the inability to svn log withotu an internet connection < 1292272591 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ugh < 1292272601 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've never tried to actually create a repo, just look at other people's and commit occasionally < 1292272611 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sometimes I use tailor to create an automatic mirror of them in darcs < 1292272621 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: let's put it this way: the recommended way to host a svn repository is via WebDAV. < 1292272622 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and I used git-svn on a serious project once < 1292272630 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: specifically, WebDAV in Apache. < 1292272644 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, I'm unaware of what WebDAV is, and get the feeling that I'm probably better off not knowing < 1292272648 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I have vaguely heard of it, though < 1292272650 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :The protocol consists of a set of new methods and headers for use in HTTP. The added methods include: < 1292272650 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * PROPFIND — used to retrieve properties, stored as XML, from a resource. It is also overloaded to allow one to retrieve the collection structure (a.k.a. directory hierarchy) of a remote system. < 1292272650 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * PROPPATCH — used to change and delete multiple properties on a resource in a single atomic act < 1292272650 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * MKCOL — used to create collections (a.k.a. a directory) < 1292272650 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * COPY — used to copy a resource from one URI to another < 1292272652 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * MOVE — used to move a resource from one URI to another < 1292272654 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * LOCK — used to put a lock on a resource. WebDAV supports both shared and exclusive locks. < 1292272656 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : * UNLOCK — to remove a lock from a resource < 1292272658 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: that's WebDAV. < 1292272663 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: basically, subversion does commits via extended HTTP. < 1292272668 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you may now hang yourself. < 1292272676 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(and yes, it is *that slow*) < 1292272695 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there was a pretty hilarious case where a leaked internal Microsoft memo said that they'd gained an advantage with DAV on the basis that it was complicated and the open-source people would probably guess wrong as to what to copy first < 1292272700 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: honestly, if not for the pserver login crap, cvs is nicer to use than svn < 1292272701 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and haha < 1292272705 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and a couple of days later, the whole thing was implemented in Apache < 1292272723 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: proprietary software, gotta love its motivations < 1292272725 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(probably not in a particularly working state, but just to show off) < 1292272767 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: incidentally, it'd be nice if scapegoat is structured in a way that you can do almost all processing client-side (I know the server is just "another client", but you know what I mean) < 1292272772 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(and I know that servers are optional) < 1292272783 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you can change that to "command-side" < 1292272785 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so that it isn't a pain to use it on a low-powered VPS < 1292272786 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well ,yes < 1292272788 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*well, yes < 1292272794 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as in, whichever side happens to have the sg command < 1292272798 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and i know this is horribly implementation-detail for this point in time, but still < 1292272799 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or whatever we call it < 1292272800 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: right < 1292272813 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: haha, i just realised something < 1292272833 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :again? < 1292272838 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :this is a huge project for sudden realisations < 1292272839 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you can give people commit access by letting them only: add files to store/; and add and modify files in . < 1292272849 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(well, the only files out of that are ... names) < 1292272853 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and in fact you never modify names < 1292272858 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you can give people commit access by letting them only: add files to store/; and add and delete files in . < 1292272860 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's sort-of like the opposite of Feather, it keeps becoming suddenly easier to understand every now and then, rather than harder < 1292272861 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1292272861 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(to delete names) < 1292272871 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, can you set up rsync servers to let you do that easily? < 1292272875 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it would be nice < 1292272876 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :probably < 1292272890 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :scp would work, but it'd give more permissions than necessary < 1292272933 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is there an rscp? < 1292272936 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if not, there should be < 1292272941 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :googling suggests not < 1292272962 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, you can write that after your append-only key value store < 1292272966 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: actually, if we go the database file route, rsync will be basically a requirement < 1292272976 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: because it can just send a delta from the old file < 1292272985 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh right, I thought we'd have to write our own system for syncing < 1292272986 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(you wouldn't overwrite the old file, though; you'd merge it) < 1292272988 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but we can just use rsync < 1292272997 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, except, if we don't go the db file route, we don't even need rsync < 1292273004 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :anything that can... upload and download files works fine < 1292273017 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :rsync would still help by sending just the files we didn't already have < 1292273025 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, yes, indeed < 1292273035 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: that's why I used wget and tar, previously < 1292273043 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :to highlight /why/ i wanted such an insane feature :) < 1292273070 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :insane + useful, the best combination < 1292273072 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: nice thing about the key-value store: every file comes with its own checksum < 1292273084 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :if hash(lookup(x)) != x, something went wrong/has been tampered with < 1292273097 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :bonus: hashing is pretty fast, so you can do this all the time without much overhead < 1292273112 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(hmm, SHA-3 is selecting for speed as well as security, so that'll be nice) < 1292273127 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is it selecting for fast or slow? < 1292273132 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: fast < 1292273135 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but secure < 1292273145 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: of course, for things like password hashing, you want slow < 1292273146 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so sub-ideal for passwords < 1292273152 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but for more general things, fast is a great advantage < 1292273156 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is still reading about the Gawker hack < 1292273177 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I doubt bcrypt will be beaten for passwords any time soon, especially as it basically has a parameter for "increase this when computers get faster". < 1292273183 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*faster, and it'll become more secure < 1292273204 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :people have been suggesting scrypt, which is designed like bcrypt except that it deliberately parallelises really badly < 1292273210 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :to make it harder to use GPUs to attack it < 1292273215 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, yes, that's Colin Percival's < 1292273218 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I forgot about that one < 1292273224 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yes, scrypt is probably the best right now < 1292273226 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(doesn't really help, though, as you can just check multiple passwords in parallel...) < 1292273238 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: doesn't help if you only want to crack one < 1292273244 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :e.g. the missile launch codes :) < 1292273252 0 :poiuy_qwert!~poiuy_qwe@CPE001f5b00390f-CM001e6b2335dc.cpe.net.cable.rogers.com JOIN :#esoteric < 1292273257 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, I mean you're trying to crack a particular hash < 1292273264 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ah, i see < 1292273266 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you test password1 against the hash while testing password2 against the hash < 1292273275 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, yes, but you'd need more than if it was easily-parallelisable < 1292273276 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't think it's even theoretically possible to avoid that < 1292273315 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, using non-sg vcses is going to feel horrible now < 1292273319 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :thanks for that :P < 1292273322 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sorry < 1292273330 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i'm kidding :) < 1292273333 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :they already do feel horrible :P < 1292273356 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :git is already entirely usable for me even though it's far from my favourite VCS, it just more or less won the DVCS war < 1292273372 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yes, it did, and I kind of regret egging it on < 1292273389 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I hadn't quite realised that it wasn't like it was when it started out -- a versioned file system with a VCS built on top of it < 1292273441 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh well, thankfully we #esotericers exist in our own bubble where we do what we want and suffer the consequences < 1292273459 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric : it's sort-of like the opposite of Feather, it keeps becoming suddenly easier to understand every now and then, rather than harder <-- so after you've implemented it, you can do feather by a simple time reversal >:) < 1292273464 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: incidentally, how does scapegoat handle binary files? presumably it's just fixed to byte-based? < 1292273475 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: perhaps it should have a binary diff algorithm included for those rare cases < 1292273478 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it depends on what sort of binary diffs are sane < 1292273488 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :treating them as blobs is generally what you want < 1292273494 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: http://www.daemonology.net/bsdiff/ < 1292273497 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :unless you go down the C-INTERCAL route and have source code in binary < 1292273500 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (also Colin Percival) < 1292273513 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: by binary I mean things like image data < 1292273513 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(ESR deleted the files in question on the basis that he thought they were generated; good thing that VCSes exist...) < 1292273521 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :not mostly-text files with little binary snippets in them, say < 1292273524 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: what files are those again? < 1292273531 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the character conversion tables < 1292273535 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1292273551 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :making them text would have required an extra layer of encoding for no reason at all < 1292273551 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, I basically mean just images, complicated level data formats, that sort of thing < 1292273607 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: a rare correct usage of big O: "bsdiff is quite memory-hungry. It requires max(17*n,9*n+m)+O(1) bytes of memory, where n is the size of the old file and m is the size of the new file. bspatch requires n+m+O(1) bytes." < 1292273646 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"plus an arbitrary constant", it's being used for there? < 1292273651 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1292273668 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: e.g., what most people mean by O(2n) is 2n + O(1) < 1292273678 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :or, at least, close < 1292273689 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: now that we've got a vaguely good idea of what scapegoat is, we can argue about more important things, like code formatting standards < 1292273696 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and software licenses < 1292273709 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :presumably, not my irritate-everyone format for C? < 1292273723 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I doubt annoying everyone /equally/ is actually possible, but that one must be close < 1292273731 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: indeed not; btw, I made a more irritating format than that < 1292273753 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I didn't say "as irritating as possible", just "equally irritating" < 1292273756 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: http://sprunge.us/hShh < 1292273764 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (one mistake there: &c and &d should be & c and & d) < 1292273774 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's evil < 1292273780 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the indents before the { and } are spaces, but the indents before the actual code are 2-widtht abs < 1292273782 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*2-width tabs < 1292273784 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's like GNU-style, but in reverse < 1292273788 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :MWAHAHAHA < 1292273804 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :worryingly, it actually fulfils the design goals for GNU style better than GNU style itself < 1292273807 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and all but the last * go in the type, the last goes before the name < 1292273808 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :unless there's only one < 1292273811 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :in which case it goes in the type < 1292273838 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I should hire you to work on my hypothetical esolang that's designed to look like C but have subtly different semantics almost everywhere < 1292273850 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: is this the kind of hiring that involves no pay? :) < 1292273854 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think so < 1292273861 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I do that kind of hiring a lot! it rarely works < 1292273884 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i say we release it under the WTFPL, and then when esr relicenses it it'll actually /work/ < 1292273890 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(note: justification slightly meaningless) < 1292273923 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I dislike the WTFPL < 1292273927 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: why? < 1292273931 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because I have paranoid parents and some of the paranoia rubs off < 1292273935 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I've been using it exclusively lately < 1292273941 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the FSF consider it a valid Free software license < 1292273942 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I get a lot of "but what if someone does something illegal with your code?" < 1292273954 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and they want me to put disclaimers in my licensing against that sort of thing < 1292273959 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :"Every major Linux distribution (Debian, Red Hat, Gentoo, SuSE, Mandrake, etc.) ships software licensed under the WTFPL." < 1292273969 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(even though, I suppose, it's a field-of-use restriction) < 1292273970 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well -- [[The WTFPL is an all-purpose license and does not cover only computer programs; it can be used for artwork, documentation and so on. As such, it only covers copying, distribution and modification. If you want to add a no warranty clause for a program, you may use the following wording in your source code: ]] < 1292273988 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you can't stop people using your code for illegal purposes < 1292273989 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :elliott: And what single piece of software is that? < 1292273990 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'd like at least a no-warranty clause, anyway < 1292273994 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: licenses only cover /redistribution/ < 1292273997 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: software, plural < 1292273997 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: indeed < 1292274009 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: I'm not sure what, exactly; I seem to recall I looked it up once < 1292274010 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :mostly because a lot of people are extreme idiots < 1292274020 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: eh? < 1292274022 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :maybe not the majority < 1292274025 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: i'm just saying that that would have to be an EULA < 1292274031 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and EULAs are evil < 1292274034 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and invalid, too < 1292274035 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, I'm not talking about the no illegal use clause < 1292274041 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :obviously that makes no sense in a contract < 1292274049 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :"Oh shit dude, the EULA says I can't use this for illegal purposes, guess I won't then." < 1292274057 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I was talking about no warranty < 1292274058 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Using this software to break the law is AGAINST THE LAW!! < 1292274061 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ah < 1292274070 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"I slipped and fell and broke my finger on a CD of your software, I demand $20,000" < 1292274083 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, it's easy enough to put a no-warranty clause on top of the WTFPL... really, I'd use another license, it's just that there's no good PD-equivalent license < 1292274087 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :those sorts of people would probably actually be stopped by a warranty disclaiemr < 1292274090 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*disclaimer < 1292274094 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(creative commons zero is (1) IIRC under revision and (2) really, really long and ugly) < 1292274110 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, I know, I'll just remove the requirement from the ISC < 1292274113 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've thought about using CC0 for something (other than Esolang) < 1292274123 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and actually copying the entire license text in < 1292274124 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Copyright (c) Year(s), Company or Person's Name < 1292274124 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Permission to use, copy, modify, and/or distribute this software for any < 1292274124 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :purpose with or without fee is hereby granted. < 1292274124 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES < 1292274124 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF < 1292274125 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR < 1292274127 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES < 1292274128 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN < 1292274129 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :without an indication that it's actually public domain < 1292274131 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF < 1292274132 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. < 1292274135 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :there we go! < 1292274137 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: sorry for the flood < 1292274138 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is that... BSD1? < 1292274139 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :the only changed paragraph is the second one < 1292274141 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or BSD0? < 1292274145 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: http://en.wikipedia.org/wiki/ISC_license < 1292274155 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :boring, I like the idea of removing yet more clauses from BSD now < 1292274156 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's BSD2, minus stuff the Berne convention makes unnecessary; OpenBSD use it for everything < 1292274166 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and it's FSF-declared Free < 1292274169 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and it's OSI-approved < 1292274173 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: basically, the change is just < 1292274176 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Permission to use, copy, modify, and/or distribute this software for any < 1292274176 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :purpose with or without fee is hereby granted, provided that the above < 1292274176 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :copyright notice and this permission notice appear in all copies. < 1292274180 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :--> Permission to use, copy, modify, and/or distribute this software for any < 1292274180 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :purpose with or without fee is hereby granted. < 1292274190 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :let's call it BSD1, then < 1292274193 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as that's a great name for a license < 1292274203 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, I like the concept of a license where the version numbers go backwards < 1292274211 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's more like BSD0 < 1292274214 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :as it has, literally, no requirements < 1292274226 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but the permission is still a clause, isn't it? < 1292274232 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: maybe... but then ISC is BSD1 < 1292274235 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so ours is... BSD0.5 < 1292274245 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :a true 0-clause license would be all rights reserved < 1292274255 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: my absolute favourite license is the OSI-approved Fair License: < 1292274256 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Usage of the works is permitted provided that this instrument is retained with the works, so that any entity that uses the works is notified of this instrument. < 1292274257 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :DISCLAIMER: THE WORKS ARE WITHOUT WARRANTY. < 1292274263 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but it's only OSI-approved AFAIK, not anything else < 1292274276 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and removing the requirement would make it so vague as to be useless < 1292274278 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, does that have a power of at least 1? < 1292274281 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :("Usage of the works is permitted.") < 1292274283 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: heh < 1292274288 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :we should use that to license the Agoran source code < 1292274311 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, "Usage... is permitted"? "/Usage/"? < 1292274322 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's a pretty restrictive license, without futher clarification < 1292274323 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: redistribution is usage! < 1292274324 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: redistribution is usage! < 1292274325 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oops < 1292274333 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: not according to most licenses I've seen < 1292274342 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :e.g. the GPL allows unlimited usage but limits redistribution < 1292274342 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'm not seriously suggesting it, I just like it < 1292274344 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1292274365 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think there should be a collaborative-effort license < 1292274382 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :now to try and find an SHA-512 library that isn't horrible < 1292274386 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(for the key-value store prototype) < 1292274399 0 :Wamanuz2!unknown@unknown.invalid QUIT :Remote host closed the connection < 1292274421 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"Permission to use, copy, modify... is granted provided that each derivative work adds another 6 words and one punctuation mark to this sentence: 'David slowed slightly as his ears,'." < 1292274434 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ah, LibTomCrypt has it < 1292274438 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it could become quite a story after a few thousand people had modified it < 1292274450 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: heh < 1292274475 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I did remember the sentence fragment right, right? < 1292274479 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes < 1292274495 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :David Slowed, slightly as his ears, entered the room. < 1292274508 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :David Slowed Slightly, as his ears, was gigantic. < 1292274509 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you added an extra comma, that's cheating < 1292274519 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: erm, such modification happened all the time when we were playing with it < 1292274522 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1292274530 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's just the comma at the end that's immutable? < 1292274539 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: not sure even that was immutable :) < 1292274544 0 :Wamanuz!~Wamanuz@78-69-168-43-no84.tbcn.telia.com JOIN :#esoteric < 1292274546 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I seem to remember it was < 1292274556 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in that case, I'll replace the sentence with "Just another Perl hacker," < 1292274558 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :David slowed slightly as his ears rebelled against his tyranny and forcefully pushed him backwards. < 1292274654 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: come to think of it, < 1292274664 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: scapegoat's store is pretty much identical to ElliottOS' model of the world < 1292274680 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: with scapegoat, you could merge every possible store and, ignoring hash collisions, get a valid storage of... everything < 1292274682 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's a good thing, right? < 1292274691 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: with ElliottOS, every object is identified by its unique hash < 1292274694 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, how many OSes are you working on now? ElliottOS, Kitten, and @? < 1292274697 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and you can refer to objects anywhere in the world with it < 1292274699 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ElliottOS = @ < 1292274702 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1292274703 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :only two, then < 1292274715 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, you're working on the linux-on-a-floppy too, aren't you? < 1292274716 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: @ is a macro that expands to whatever ElliottOS will be called in its first real release < 1292274723 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Flinix is abandoned as I can't get X on it :P < 1292274724 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, I see < 1292274799 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: incidentally, is this a weird thought to have: "releasing software is an obsolete notion"? < 1292274833 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: gah, no, if you go too far down that path you end up with JNLP < 1292274845 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, no, I wasn't thinking *that* < 1292274854 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :good < 1292274871 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm glad I discovered JNLP without explicitly looking for it < 1292274875 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1292274884 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I was just thinking that it's probably nicer to have a Debian-esque model: every now and then, you update the stable branch in your repo with all the changes you've done in the development repo in < 1292274885 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the thought of coming up with that in the first place and looking for it explicitly is worrying < 1292274893 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :or, if you just did some experimental commits, all the commits up to, but not including, that one < 1292274900 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and then you just point people to that < 1292274905 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(and, ideally, offer auto-generated tarballs of it) < 1292274908 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :rather than making actual releases < 1292274912 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hardly any programming projects have the issue of "how do I not do auto-update" < 1292274919 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1292274960 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so, what's the scapegoat language like :P < 1292274967 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :that you specify merge tactics (patch types, whatever) and branch specifications in < 1292274987 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :gah, impl details again < 1292274996 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is it not enough just to specify that it's a program? < 1292275020 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, we've solved most of the theoretical issues :) < 1292275034 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: also, um, I'd personally include the language as part of the platonic spec < 1292275037 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :considering it's pretty important < 1292275045 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not the pragmatic spec? < 1292275058 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, no, because it's pretty core to the whole thing, I'd say < 1292275059 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, I suppose all this depends on how practical and how eso we want to be < 1292275064 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: e.g. every branch is a "program" in this < 1292275064 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :arguably, you could use CSS < 1292275070 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well, not much of a program, it's not TC (hopefully) < 1292275076 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but every branch is specified by one of these < 1292275078 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so it's pretty integral < 1292275090 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :on the plus side, it has most of the properties we need, on the minus side, it's CSS < 1292275105 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: It ... how would you write a patch type in CSS. < 1292275107 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :You're crazy. < 1292275137 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :square brackets after the tag name with a key-value pair, presumably < 1292275163 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: You know what, we're not using CSS. < 1292275173 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292275183 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :can you think of an existing language other than CSS that does most of what we need, though? < 1292275200 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no, it's pretty much a very domain-specific language < 1292275204 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292275221 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, it wouldn't be too far off OIL, which is the only DSL I've ever written < 1292275238 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :actually, no, it would be miles off OIL < 1292275239 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: INTERCAL-sans-esr would be (\p => p.author != *long_hash_that_identifies_esr_goes_here) < 1292275263 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what lang is that? Ruby? C#? < 1292275267 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can't quite identify the syntax < 1292275267 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: mu < 1292275275 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: It's haskell, except -> to => to avoid ambiguity, and != < 1292275278 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1292275279 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and *x to mean "the object with hash x" < 1292275284 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: mu meaning, none < 1292275289 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292275307 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :just to clarify it wasn't some random language name :) < 1292275316 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(as ESR wrote C-INTERCAL originally, removing his contributions and things that depend on them wouldn't leave you with very much) < 1292275322 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, I know < 1292275323 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it was a joke < 1292275336 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: @tip would be rather complex < 1292275337 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ooh, useful, I just got an email informing me of a seminar at 4pm < 1292275342 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and yes, I am in the same timezone as you < 1292275342 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1292275362 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wow, it's sent time is 9:07pm today < 1292275368 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: in fact, I'm half-way to saying "fuck it, let's use a super-simple specification mechanism, way below a language, and just hardcode the meaning of @tip and the like" < 1292275370 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I thought it would just be a slow received, apparently not... < 1292275413 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: make it pluggable, start with hardcoded @tip, etc, and a simple specification lang, and just leave space for expansion later < 1292275449 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: maybe... but on the other hand, I'm not sure I'd *want* people to be able to specify, e.g., @foo, being the last commit that didn't have a parent thrice removed with "foo" in its patch or... or something else silly like that. < 1292275464 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :by a simple specification lang, I mean -- what was your specification for branch ais523 again? < 1292275468 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :as in, only patches you specifically accept < 1292275481 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :only patches that I've whitelisted in the repo < 1292275487 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :would be my typical branch specification < 1292275498 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :presumably, the branch would just be a patchset, same as any other, in that case < 1292275511 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and the interesting part would be for the whitelist command to update the nicknames < 1292275523 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that doesn't actually need a lang at all < 1292275527 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no, the nickname would point to the specification < 1292275540 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, but in this case the specification is "one patch and its dependencies" < 1292275549 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just, /which/ is updated by the whitelist command < 1292275549 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the other type of branch doesn't need a specification, because it has the implicit "...that doesn't conflict with this branch" that everything has < 1292275559 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so in fact, the only type of specification we need is (mu | whitelisted-specifically) < 1292275561 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, "one set of patches" < 1292275563 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :erm < 1292275565 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so in fact, the only type of specification we need is (none | whitelisted-specifically) < 1292275575 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: that works for what I'd use < 1292275586 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you might want the "everything but Oracle" < 1292275597 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I can't think of another useful specification other than things like @tip < 1292275602 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, well maybe < 1292275608 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: this definitely needs more thought < 1292275613 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: the anonymous siblings of @tip need some way to refer to them, too < 1292275629 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as in, that branch exists via a formula, but it wouldn't automatically have any name at all, not even a hash < 1292275632 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: indeed, I'm not actually sure how you *get* to them < 1292275637 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :er no it would have a hash < 1292275641 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :everything has a hash < 1292275643 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it's just that < 1292275646 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :the hash would be the commit < 1292275652 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :er, the patch < 1292275654 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I mean, nothing would insert the hash into any database automatically < 1292275664 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: sure it does -- the commit's hash < 1292275668 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :patches are branches, aren't they? < 1292275678 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, I see, you can't have multiple unrelated commits in any of those branches < 1292275695 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so although in general you can't refer to a set of patches by a hash without creating the hash, the set always has exactly one element here < 1292275704 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so yep, you can just use the commit's hash < 1292275727 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: sheesh, I want a Ph.D. out of this < 1292275734 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it's making my head hurt enough just trying to figure it out < 1292275745 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and better still, the whitelist list on the repo in question gives an easy list of all @tip's siblings (they're its direct, rather than indirect, dependencies) < 1292275754 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that was... unexpectedly trivial < 1292275770 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: dammit, model, stop making things easy for us < 1292275776 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :we like a challenge! < 1292275784 0 :augur!unknown@unknown.invalid QUIT :Remote host closed the connection < 1292275802 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ok, here's something we haven't addressed - metadata. < 1292275804 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, I have an idea! < 1292275810 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: make sure you save that log, btw < 1292275816 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it is being saved, constantly < 1292275817 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I keep logs < 1292275818 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'd like to review the conversation, and this is a webclient that doesn't log < 1292275819 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, right < 1292275821 0 :augur!~augur@129.2.129.32 JOIN :#esoteric < 1292275826 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I mean, somewhere you can find it more easily < 1292275826 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: files are just their contents, not anything else; the names and permissions are stored in the *directory* they're in < 1292275838 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: this also means that moving a file around doesn't even touch it < 1292275840 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :just its hierarchy < 1292275847 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so this allows putting a / below your existing / without changing every single file < 1292275849 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :how well does that fit a common programmer's use of a filesystem? < 1292275853 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I imagine, quite well < 1292275854 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: what do you mean? < 1292275867 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, what features of a file are attached to the file itself? < 1292275872 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: in this model? < 1292275873 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the contents. < 1292275874 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :size is, obviously; absolute path probably isn't < 1292275880 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: a file is just an arbitrary chunk of texct. < 1292275881 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*text. < 1292275882 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't mean, in your model, but in general use < 1292275883 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1292275897 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I *think* I'd say that the (directory-local) name and permissions of a file are part of it < 1292275898 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if you decided to send me a file, what metadata would you send along with it? < 1292275901 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but that's just cognitive bias < 1292275912 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the name; not the permissions, owner, or group < 1292275916 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but I think the name thing is just, human bias < 1292275922 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :we like things to have names tied closely to them < 1292275930 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :whereas from a VCS perspective, it makes more sense to have them in the directories < 1292275934 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, many programming languages do too < 1292275939 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Java, for instance < 1292275941 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, and consider the case of merging two files < 1292275946 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and also, splitting one file up into multiple < 1292275953 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: this is /much/ easier if files are just text, and have no metadata < 1292275957 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and all the metadata is in the directories < 1292275961 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, I suppose so < 1292275992 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, that was an easy decision made < 1292276000 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but -- how are directories stored? obviously, we need to be able to patch them < 1292276001 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: aha! < 1292276010 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: directories exist *only* as a (built-in) language "plugin" < 1292276013 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: they have no textual form < 1292276019 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that works, I think < 1292276020 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the unit is something like, "one item of metadata" < 1292276033 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: actually, no < 1292276035 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the unit is "one entry" < 1292276038 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed, I think probably all language plugins should work like that < 1292276039 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :including name, permissions, etc. < 1292276049 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, sure, just, they'll be built on parsing the actual text < 1292276052 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :whereas this won't < 1292276055 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :most of them will choose to have a plaintext backing < 1292276058 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but perhaps some won't < 1292276067 0 :augur!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1292276067 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no, I think we should definitely stick to only tracking actual files < 1292276069 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :even if they're binary < 1292276078 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :as in, the language plugin shouldn't be serialised; the plugin should read in the actual files < 1292276083 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and they should handle formatting changes < 1292276086 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :IMO < 1292276089 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1292276095 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: they're more like, smarter semantic diffs, rather than AST versioners < 1292276097 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, give the plugin the choice of whether it's filesystem-related or not? < 1292276111 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so for, say, C you can handle the source code just fine < 1292276112 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: eh... I think it's a lot simpler if the plugin just gets a file and is told "hey, make sense of this" < 1292276119 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :conceptually, too, as in the scapegoat model < 1292276119 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but wouldn't it be great to, say, version a running Haskell program < 1292276125 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :otherwise, the platonic model would be way too general < 1292276127 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I mean, not the source code, the program itself < 1292276129 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :to the point of uselessness < 1292276136 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :we can do that later, though < 1292276145 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it sounds cool, but it doesn't sound like something I'd actually want to do :) < 1292276149 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :at least, not outside of @, in Unix < 1292276158 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wow, i just got a second reminder about that seminar < 1292276165 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: MAKE SURE YOU DON'T MISS IT < 1292276166 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders about time zone issue < 1292276176 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: maybe it's for tomorrow? < 1292276194 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :nope, today < 1292276201 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: maybe it's automated, and the system was slow/down? < 1292276210 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I was wondering about that < 1292276215 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suspect it's automated, at least < 1292276223 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :probably the mail server it used was down or something < 1292276269 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so, does sg have any nice properties/features that you know of for single-developer cases? < 1292276274 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :heck, for versioning dotfiles? :) < 1292276309 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :one that would be nice would be the ability to extract just a file and its dependencies from a large project and work on that < 1292276326 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've tried to do that before, but darcs ended up pulling in 9/10 of the project because it was too coarse-grained < 1292276328 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, re: storing file metadata in directories, the command line tool would have to be a bit smart about that, i.e. say that telling it to track file X is actually interpreted as cherry-picking the change to the directory of X < 1292276335 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if multiple files were changed in a patch, it had to use both or neither < 1292276347 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :sg could easily use "half a commit" if necessary < 1292276357 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (does ^ make sense?) < 1292276363 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: indeed < 1292276371 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's not a massive smartness issue, though < 1292276379 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292276425 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: btw, to get this out of the way, I strongly oppose having Ŋscapegoat's name actually start with a non-ASCII character :-) < 1292276441 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fair enough < 1292276485 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you could just use , that's in ASCII and sorts to the end of a directory < 1292276489 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1292276497 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :@scapegoat or %scapegoat seem like the best bets to me (wow, just realised the perl connection) because they're at least near the top (% comes before numbers and letters, @ before letters) and they suggest "special things" but don't have to be escaped in a shell < 1292276500 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(unlike {arch} :-)) < 1292276515 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, left shift + left control + u lets you type arbitrary Unicode in GNOME by specifying its hex code < 1292276524 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :not here < 1292276531 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :in a specific input method, perhaps < 1292276560 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, really? < 1292276566 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well, I'm certainly using gnome < 1292276566 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it works on CentOS here and Ubuntu at home < 1292276588 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, and seems not to be sensitive to which control and which shift is used, unlike altgr < 1292276589 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :debian here... but who knows what i have input methods set to < 1292276604 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, http://www.google.com/intl/en/ipv6/statistics/ is really depressing < 1292276630 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and v4 is running out faster than ever < 1292276644 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, it'll continue running out long after it's actually out of addresses < 1292276658 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hopefully, IPv4 exhaustion will finally prompt ISPs to start switching to IPv6 < 1292276660 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but you never know < 1292276674 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: actually, the last allocations are almost in < 1292276687 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and the actual-last-address-allocated estimate is looking like about March 2011 < 1292276688 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed, 7 blocks left, and the last 5 are allocated all at once < 1292276691 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Ilari can confirm for sure < 1292276699 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so "long after" is wrong < 1292276714 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I was referring to recursive NAT < 1292276721 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I suspected that < 1292276724 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which is bound to be the stopgap used, until people realise that it doesn't actually work < 1292276728 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but, still, consider every VPS provider ever < 1292276738 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I could create five new slices right now, and each would get its own static IP < 1292276746 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and there's no real way to NAT VPSes < 1292276750 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, you wouldn't be able to in a while, I suspect < 1292276752 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :since you can run anything on them, on any port < 1292276762 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :exhaustion will hit servers much harder than clients < 1292276764 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so it really is a huge thing, because businesses don't exactly want shared hosting < 1292276775 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and when they need to put a new machine up ... they just can't < 1292276826 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292276835 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's huge, but it probably won't cause the end of the world < 1292276840 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :rather, it'll just be a wake-up call < 1292276851 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I suggest we assign an IPv6 address to every scapegoat object, just to make IPv6 depletion that much easier < 1292276862 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :does that even make sense? < 1292276885 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it can if we make it! < 1292276921 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :"We reply to Russ Cox's "Yacc is Not Dead" by running the example that he claims has best-case complexity of Ω(3^n). It terminates instantly for n > 100." < 1292276926 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :WHERE IS FUNGOT < 1292276934 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: OH GOD THE BEES < 1292276950 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, so what should we do for public keys? presumably, commits should be optionally signable < 1292276958 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and author objects would have a gpg public key with them < 1292276968 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :elliott, what's Russ Cox's "Yacc is Not Dead"? < 1292276971 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :Actually, its now February... And yes, some RIR will grab 2 blocks, and then last five are immediately distributed. < 1292276972 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: a blog post < 1292276980 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: that makes sense, I suspect < 1292276983 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :fizzie, for killing fungot, I challenge you to a Minecraft duel! < 1292276988 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Choose your weapons! < 1292276999 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Phantom_Hoover: are there any plausible weapons? < 1292277001 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, maybe we should just have it future-proof... as in, just include gpg-signature keys in patches, and gpg-pubkey in authors < 1292277004 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't know whether to laugh < 1292277005 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and then we can switch at a later date < 1292277016 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and tools that don't want to can just ignore them, like other unknown keys < 1292277018 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :ais523, that's for fizzie to decide! < 1292277019 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think we should futureproof everything, where it doesn't cost too much < 1292277020 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: also, there's a sword in Minecraft, so yes < 1292277029 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :does it work for PvP? < 1292277033 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Buckets of lava and water, and cobblestones! < 1292277037 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :well, minecraft has pvp, yes < 1292277042 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :although it's disabled on our server < 1292277043 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :along with health :P < 1292277055 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :making a battle to the death rather difficult < 1292277072 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: why am I suddenly reminded of Falcon? < 1292277088 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: erm, for minecraft or for scapegoat? :) < 1292277093 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :minecraft < 1292277097 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :And that RIR is thought to be APNIC... < 1292277099 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :i have no idea < 1292277125 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: it's as if Minecraft's put in any feature that anyone asked for < 1292277126 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :ais523, because it's astonishingly poorly-coded? < 1292277133 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: not really < 1292277134 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :ais523, ohhhh, no. < 1292277137 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or attempted to, but not got too far < 1292277149 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's Survival Multiplayer; the existence of PvP is practically a given < 1292277154 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Notch removes everything that's enjoyable which causes the game to be played in The Wrong Way. < 1292277156 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :you can't disable health with the stock server, we use a mod < 1292277158 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :fair enough < 1292277163 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but you can disable monsters and pvp < 1292277168 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is the server open-source, btw? < 1292277170 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Best example: /home. < 1292277174 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :ais523, no. < 1292277176 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or at least open-binary? < 1292277178 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no, but people have deobfuscators that you run on the decompiled java < 1292277179 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :open-binary, yes. < 1292277183 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (this is how mods exist) < 1292277191 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the nice thing about the mod we use, hMod, is that it has a stable plugin API < 1292277197 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so only one person needs to worry about server code changes < 1292277203 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :by open-binary, I more or less mean "allowed to download the binary at will, etc" < 1292277208 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1292277212 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :even if you don't have teh game < 1292277214 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*the < 1292277221 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :http://minecraft.net/download/minecraft_server.jar?v=1292277191330 < 1292277291 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: another thing nicknames are useful for: identifying author objects < 1292277291 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, just checked the computer here, it's IPv4 only < 1292277295 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: indeed < 1292277300 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :useful when you want to do, e.g., "sg mail foo" to mail patches to foo < 1292277303 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they're useful for naming anything, more or less < 1292277304 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :one issue with that: we need a consistent prefix < 1292277313 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :enforced? or convention? < 1292277315 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :~foo would be ideal, but you'd have to quote it in a shell < 1292277316 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: convention < 1292277321 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :The "there will be beta soon" blagpost also said he'll start working on a stable server API for mds. < 1292277327 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suggest lpsz, to annoy Windows programmers < 1292277333 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although that joke's a bit dated nowadays < 1292277334 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: only enforced thing is that @ is a reserved prefix, I think < 1292277339 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :for things like @tip < 1292277354 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: although arguably, @ should mean "branch" < 1292277357 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :Long pointer size? < 1292277373 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (this is the point where it's worth considering having a different set of nicknames for each object type rather than this silly prefix business...) < 1292277393 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Ilari: long pointer to zero-terminated string < 1292277410 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :as opposed to a short pointer? < 1292277418 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292277425 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although even in win3.1, it was a silly distinction < 1292277440 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because the library functions you were calling were unlikely to be in the same segment as your program itself < 1292277447 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :And long pointer? Who uses that with 32-bit stuff? < 1292277455 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Ilari: relic from 16-bit Windows < 1292277460 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the prefix was preserved into win32 < 1292277466 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :And that lparam/wparam stuff. < 1292277467 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I hope they finally got rid of it with #net, though < 1292277470 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*.net < 1292277476 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :C#NET < 1292277526 0 :fungot!~fungot@momus.zem.fi JOIN :#esoteric < 1292277528 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: annoying thing about scapegoat: it's so close to being perfect for Haskell, except that you'd need all the store operations to be in IO because of the implementation detail that you happen to save them < 1292277543 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: also, it's probably over-generalised enough that Haskell would be too slow :( < 1292277568 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(not with hand-optimisation, perhaps, but then why bother using haskell?) < 1292277573 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :Wonder how many Linux programs (besides stuff like DOSEmu or so) use far pointers (at least Linux/i386 has some syscall that only makes sense with far pointers...) < 1292277594 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Far pointers? < 1292277633 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I'm wondering if the object store might want to store more complicated things too; a patch is basically a set, isn't it? < 1292277647 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it would be a bit awkward to do set[hash(x)]=x for every single change in a patch < 1292277683 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292277707 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :OTOH, maybe we should just store a patch as its changes, sorted in some arbitrary way? < 1292277718 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :in which case, we'd need lists (and at that point I'd agree that we should abandon a filesystem-based approach...) < 1292277765 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :storing a patch as its changes would effectively store the whole repo in any toplevel patch < 1292277778 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so obviously you can't do that completely in general < 1292277785 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it would be a sensible optimisation for some patches < 1292277803 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: define toplevel < 1292277834 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, a patch that isn't referred to by any other < 1292277844 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as in, the merge of @tip and its siblings < 1292277857 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :worse, the same would apply to any patch that had ever been @tip < 1292277902 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, are you sure? < 1292277908 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: wouldn't it be the set of changes from the previous @tip? < 1292277941 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, you mean not recursively < 1292277978 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, I imagine that could work < 1292278000 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, "changes, not recursive" is pretty much the definition of a diff :) < 1292278005 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :-based VCS < 1292278015 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I mean, you already have a diff-esque format < 1292278018 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :the list of changes < 1292278027 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so just, make them relative to their parent(s) in the tree < 1292278031 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :still, there's the issue of multiple parents < 1292278046 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hg has commits with multiple parents and is diff-based < 1292278049 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure how it works, though < 1292278049 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :how do you distinguish between the diff from the previous @tip (all the merged changes), and the diff from the merged changes (the previous @tip)? < 1292278057 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, maybe you store one diff per parent < 1292278061 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :such that each diff produces the same result < 1292278069 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :if you have multiple parents < 1292278070 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :maybe? < 1292278071 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :i dunno < 1292278075 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I was thinking of that, but then the diff to the "small" parent's going to be the whole repo < 1292278086 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think, if you're just going for efficiency, you store the smallest diff to a parent < 1292278101 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :which'll be right 99% of the time, and the rest, you just calculate from scratch < 1292278111 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: TODO: figure out what hg does in this case < 1292278115 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(multiple parents) < 1292278172 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, I wonder what it *does* do? < 1292278179 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it definitely has commits with multiple parents, usually merges < 1292278182 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and it definitely stores things as diffs < 1292278190 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in our case, every commit is a merge except for the first < 1292278195 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so every commit has multiple parents < 1292278215 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : How does hg handle the storage of commits with two parents (e.g. merges) internally? If it stores them as a diff, which parent does it calculate the diff from? < 1292278218 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :--#mercurial < 1292278222 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :let's see if anyone's awake < 1292278242 0 :Phantom_Hoover!unknown@unknown.invalid QUIT :Ping timeout: 245 seconds < 1292278329 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : elliot: Mercurial always stores snapshots conceptually. Delta compression is handled at a lower level. < 1292278329 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : elliott: but conceptually, the diff shown from a merge is from the first parent < 1292278330 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : mpm: OK. How would the lower level look in the case of two parents being merged? < 1292278330 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : homa_rano: ah -- how does hg work out which parent is the first? < 1292278334 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (mpm is the creator of mercurial) < 1292278343 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :also, I love how I catch out everyone who doesn't use tab complete < 1292278349 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't highlight me if you spell my name wrong, guys... < 1292278358 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric : ais523: and the actual-last-address-allocated estimate is looking like about March 2011 <-- i've seen at least twice (Ilari yesterday was the second time) estimates indicating late _January_ < 1292278370 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: yep, I was behind on my results < 1292278379 0 :impomatic!~chatzilla@87.114.29.124 JOIN :#esoteric < 1292278383 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the first is the one you had checked out when you typed 'hg merge' < 1292278384 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : ah :) < 1292278385 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: why is it accelerating? people trying to get addresses before the Internet runs out? < 1292278388 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :argh ninjaed < 1292278393 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so, tl;dr hg just picks an arbitrary parent to diff from, pretty much < 1292278398 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ? < 1292278400 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: diff-to-one-parent seems correct for us, too < 1292278412 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :One of the model estimates (as opposed to personal guesses of various people) was in January few days ago. < 1292278413 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yep, it's just that, they have a working copy that they can choose to diff from; we have no real way to decide which < 1292278422 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :calculating a diff from every parent is expensive < 1292278425 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and we should pick the one that results in the smaller diff as it's a sensible heuristic to determine which one makes the better working copy < 1292278433 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oh, wait < 1292278434 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : but the underlying storage is unrelated to parentage < 1292278434 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : elliott: We may or may not delta against a convenient revision in the underlying storage. < 1292278434 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : mpm: OK. < 1292278445 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and can't you just calculate in parallel and stop once you have any diff? < 1292278447 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : Would it, say, diff against every parent and then pick the shortest diff? < 1292278447 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : Or? < 1292278450 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :let's find out! < 1292278453 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: no, not if you want the smallest one < 1292278468 0 :augur!~augur@208.58.6.161 JOIN :#esoteric < 1292278481 0 :Ilari!unknown@unknown.invalid PRIVMSG #esoteric :The current estimates are 2nd February and 23rd February. < 1292278483 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, you have to remember that with sg's extra metadata, you can do some large diffs very quickly < 1292278499 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you can? < 1292278505 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :as normally, you'll find a common ancestor quickly if you just do a breadth-first search < 1292278511 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and there's no need to expand any further from there < 1292278512 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :Anyone fancy thrashing this guy at his own programming contest? http://skybuck.org/BoxifyMe < 1292278531 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if a line's the same line in two files, then it's got to be based on the same patch < 1292278533 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :impomatic: "And may the boxforce be with the fokking you ! ;) =D LOL." < 1292278540 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :impomatic: I can't do anything related to anyone who says... whatever that is. < 1292278546 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if it's in the same context, then those have to be based on the same patch, too < 1292278553 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and so on recursively < 1292278554 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: true < 1292278559 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: It generally deltas against the last revision, regardless of how it's related. But that's an implementation detail. < 1292278569 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: the problem is, in sg, we can't have the luxury of treating diffs as an implementation detail < 1292278572 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :because they're fundamental < 1292278583 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, at the bottom level, there are only a very few diffs < 1292278606 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the "insert "x" between 2 and 3", "change 5 to "hello world"", "delete 8" < 1292278612 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, oh, here's something you might like < 1292278615 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: http://git-annex.branchable.com/ < 1292278619 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: from Joey Hess, of Debian fame < 1292278621 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :very interesting < 1292278636 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :although of course, you'd want to probably cache what combinations of those bottom-level patches came to < 1292278639 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :the walkthrough especially (well, after the two introductory paragraphs) < 1292278642 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :highly recommend you take a look < 1292278643 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and yes, true < 1292278660 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: "change 5 to "hello world"" < 1292278665 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: wouldn't that be "change 5 to 6"? < 1292278667 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've had a quick look, I'll check more later < 1292278672 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: no, that /is/ 6 < 1292278681 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: wait, the *change* is the line? < 1292278691 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's blame-based < 1292278694 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: ok, let's say 6 = insert "x" between 2 and 3 < 1292278698 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :lines are referred to by the change that introduced them < 1292278698 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: what's "change 6 to "hello""? < 1292278713 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I suspect the guy running the contest is about 10 years old :-) < 1292278714 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it changes the x that was originally addded between 2 and 3 to "hello" < 1292278727 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and because this is scapegoat, it knows which one that was, and whether it's still there < 1292278762 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :impomatic: I would do it except reading the image in sounds like the only part that'd take any time, and it sounds boring :) < 1292278764 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if it had been deleted since, or changed to something else, it wouldn't be there, or have a different number, respectively, so it wouldn't be found < 1292278783 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so "change 3489573945 to "blah"" if 3489573945 isn't present in the revision we're applying this to would barf out? < 1292278784 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1292278794 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :elliott: yes, that's the definition of a merge conflict < 1292278802 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, how easy is it to do "sg diff", i.e. "give me a diff between, say, @tip and current working directory" < 1292278811 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: as in, an actual unified diff < 1292278823 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and after you've answered that: same question, but s/@tip/r1/ and s/current working directory/r2/ for arbitrary r1 and r2 < 1292278851 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :conceptually simple; you take the set difference between the recursive dependencies of each < 1292278862 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then convert that into the lines in question < 1292278864 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then add context < 1292278883 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but actual simplicity? < 1292278891 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suspect also simple < 1292278896 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I mean, imagine a revision from 10 years ago to now, when there's been 3 rewrites in-between < 1292278899 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and you want a unified diff between them < 1292278908 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :surely "sg diff r1 r2" would be ... rather slow? < 1292278928 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in that case, I suspect it might be, finding a common ancestor would take ages < 1292278935 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and then sg would list one with a bunch of +s, and the other with a bunch of -s < 1292278942 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it wouldn't generate a textual diff, but a conceptual diff < 1292278950 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: err, no, I mean in an actual diff -u output < 1292278952 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :not anything sg-specific < 1292278953 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :textual < 1292278957 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it would be an actual -u output < 1292278961 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1292278963 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but I mean, not generated by diffing text < 1292278966 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: come to think of it, how fast would "sg checkout rev" be? < 1292278968 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :for an arbitrary rev < 1292278971 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but by working out what changed, then converting that into unidiff < 1292278980 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I suspect the answer is "slow, in the general case" < 1292278987 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and incredibly slow with a naive impl, but easily optimisable < 1292279001 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: how easily? < 1292279015 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if you mean "oh, just store the last few revisions unpacked"... well < 1292279017 0 :impomatic!unknown@unknown.invalid PRIVMSG #esoteric :elliott: Al Zimmermann's latest programming contest requires quite a bit of processing power :-) http://azspcs.net/Contest/Cards < 1292279023 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suspect the best storage is a git-like one: for each patch which nothing depends on, store the entire tree; for each patch which something depends on, store a diff from something that depends on it < 1292279029 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I don't think a 15-year-old revision should take hours to check-out. < 1292279030 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :i.e. a backwards tree of diffs < 1292279042 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :A minute, would be about the most I'd accept (assuming it's not huge, filesystem-wise) < 1292279055 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then, every so often, store a complete tree < 1292279055 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :with a local Ħscapegoat directory < 1292279062 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in order to speed the process up < 1292279068 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: maybe... does git actually do that though? < 1292279069 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :say, once every 100 dependencies or so < 1292279078 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think it does either that, or something pretty similar < 1292279081 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can't quite remember the details < 1292279086 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I don't think the Linux git has hundreds of full copies of Linux in it. < 1292279088 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I suspect that would work, though, and even has tuneable performance < 1292279127 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1292279133 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, we'll see :P < 1292279147 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, I just realised something < 1292279160 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think the Linux git tree probably does have hundreds of full copies < 1292279161 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, wait, I realised something but it was wrong < 1292279164 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and no < 1292279166 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :perhaps one at each release < 1292279171 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: linux-2.6.git is <200 megs < 1292279181 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because they're deduplicaetd < 1292279183 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*deduplicated < 1292279188 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :via hashes < 1292279189 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: latest 2.6 itself is 60 megs bzipped < 1292279192 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*bzip2ed < 1292279195 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1292279205 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is git fast at really old revisions? < 1292279209 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes < 1292279215 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: all revisions take the same time to extract, afaik < 1292279225 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :more or less, at least < 1292279235 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, we can look into what it does < 1292279250 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :worst case, just use git as the FS behind scapegoat and let it handle the deduplication, if it's that magical < 1292279263 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: we should look at hg's internal system too, since it's like git but less hacky :) < 1292279268 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and it's also python < 1292279281 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :which is probably easier to get overall details from than git's optimised C < 1292279293 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :"store a diff against something" is probably reasonable for an implementation strategy, but it's unclear how it would work for really old things < 1292279320 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric : oerjan: ? <-- i was (still am :D) way backscrolled so i didn't see Ilari had commented on the same thing < 1292279329 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, I thought nicknames could be done in the store, but I was wrong < 1292279331 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oh! maybe I wasn't < 1292279345 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they'd be global if they were < 1292279350 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :by definition, pretty much < 1292279369 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, yes, it's just that if you had multiple clashing nicknames, you couldn't use those nicknames < 1292279375 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: first, let's say that the hash function takes a type as a parameter -- branch, pointer, nickname, whatever -- and mixes that into the hash however < 1292279396 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's nice to have short nonunique nicknames like "elliott" for a local repo < 1292279406 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: shush, i'm explaining how you can have that < 1292279408 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :in the store < 1292279439 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: now, store a nickname like this: nickname_kvstore = insert(kvstore, type="nickname", key=nickname, value=new_kvstore) < 1292279452 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so, this has {hash(nickname, type="nickname") => {}} < 1292279455 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and nickname_kvstore is the kvstore < 1292279458 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: now < 1292279481 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric : oerjan: why is it accelerating? people trying to get addresses before the Internet runs out? <-- that's the suspicion < 1292279481 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: insert(nickname_kvstore, type="branch", key=the_branch_not_its_hash_the_actual_branch_object, value=the_branch_etc_etc_etc) < 1292279497 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so it's {hash(nickname, type="nickname") => {hash(branch, type="branch") => branch}} < 1292279506 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: now, imagine copying a store into another < 1292279512 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: obviously, in this case, the hash for the nickname just gets bigger < 1292279513 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh, so branches own their own list of other branches < 1292279516 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :... < 1292279517 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :no! < 1292279518 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's... peer to peer branching < 1292279520 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1292279525 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :that has nothing to do with what i said! < 1292279526 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, nicknames to other branches < 1292279526 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :stop exasperating me < 1292279528 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :no < 1292279536 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, yes, in that they're versioned, but they don't HAVE to be < 1292279538 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wait, no, I misread < 1292279539 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I'm just talking about the kv store itself < 1292279556 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so, if foo is the nickname for bar in one repo, and the nickname for baz in another, and you copy them into another < 1292279558 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: you'd get < 1292279561 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :thought you had a hash from branches to hashes of nicknames to branches, that isn't what you said though < 1292279582 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :{hash("foo", type="nickname") => {hash(bar, type="branch") => bar, hash(baz, type="branch") => baz}} < 1292279589 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: now, here's how you look up a nickname: < 1292279600 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :nickname_kvstore = lookup(kvstore, "foo", type="nickname") < 1292279611 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then you get a set of possibilities < 1292279614 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :if (number_of_elems(nickname_kvstore) != 1) { NOOO! IT'S BAD! } < 1292279624 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I thought that's what we were doing anyway? < 1292279632 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :else /* get the single element out */ < 1292279634 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, it is < 1292279639 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the reason it wasn't in the store was so you could copy stores indiscriminately without global namespace pollution < 1292279659 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: right, except that it doesn't actually matter, unless you actually use sg on those merged stores directly < 1292279669 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: in my model, I didn't think it could go in the kvstore < 1292279680 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: because I made the file be called HB-HN < 1292279686 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :where HB = hash of branch, HN = hash of nickname < 1292279694 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and I didn't realise that it could be done without two hashes in one name < 1292279703 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :you couldn't do hash(HB "-" HN) because you don't know HB < 1292279706 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but this works < 1292279711 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: anyway, consider scapegoathub < 1292279728 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it simply only includes nicknames that reference objects it's sending down < 1292279732 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292279745 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: (this means we need a sort of, "second level search", i.e. give me the key whose value contains this key, which is easy with a filesystem, at least) < 1292279747 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I just like the theory that someone could grab its store without all their nicknames becoming useless < 1292279754 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :perhaps what we need is a whitelist for nicknames too < 1292279763 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in fact, you could store them in a not a filesystem < 1292279766 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :just like directoreis < 1292279766 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, what i was thinking is, you know how directories? < 1292279767 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1292279768 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1292279769 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*directories < 1292279777 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think we both came up with that at the same moment < 1292279788 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, wait, that means we don't even need < 1292279794 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: we don't even need this method of storing it < 1292279800 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: we just have a not-a-filesystem with a bunch of names < 1292279805 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: oh, but a problem < 1292279806 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1292279809 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: say @tip is Orcl < 1292279825 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: Orcl don't like me, so they don't include foobarly in their nicknames < 1292279826 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :within a given repo, entirely possible < 1292279827 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: what now? < 1292279836 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :well, it's in your nicknames < 1292279841 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, but what about other people? < 1292279842 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they just don't whitelist that, you do < 1292279851 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: how would they discover the branch? < 1292279859 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm... actually, wait < 1292279862 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: @tip makes *no sense* < 1292279870 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not globally, no < 1292279876 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it makes sense relative to a particular branch < 1292279879 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: platonically, everything is part of one yggdrasil repository < 1292279884 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1292279885 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: but that's the thing, @tip *is* a branch < 1292279889 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it was meant to be the bootstrap that let you see anything else < 1292279892 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's a subbranch < 1292279896 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmmmph < 1292279903 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think repositories themselves have to be the bootstrap < 1292279903 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: great, everything just got re-confused in my head < 1292279916 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: I *think* I've just gone back to thinking that nicknames shouldn't be part of turtles themselves < 1292279922 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :to avoid a huge bootstrap issue < 1292279930 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ah, right < 1292279938 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it works perfectly except bootstrap < 1292279949 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: right... and we're not in the bootstrapping business < 1292279953 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and personally, I don't want to be in that business < 1292279956 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :so we need to rethink < 1292279957 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :hrmm < 1292279959 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :because Featehr < 1292279962 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :*because Feather? < 1292279966 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: partly, yes :) < 1292279974 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but also because i want to solve version control, not bootstrapping too! < 1292279994 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, at least I like scapegoat now (previously I thought it was line-based for no real reason, and impossible to store efficiently) < 1292280016 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I think the problems are tractable, if we step a *little* outside platonic perfection < 1292280018 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :to allow bootstrapping < 1292280026 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :once you have a pointer to a useful branch, you're basically sorted < 1292280029 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and there's no problems < 1292280057 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: if we hardcode @tip to mean a certain hardcoded specification, then we can probably store nicknames in turtles < 1292280072 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: it's just that, two branches having two different ideas of what nicknames there are is perverse < 1292280081 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :you could switch to a branch and have no way to switch to another branch without going through @tip < 1292280092 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oh right, that's enough to not turtle nicknames for me < 1292280114 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: so I think the original, Åscapegoat/names approach was actually best < 1292280115 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it'd be like visiting a website and finding it had entirely different DNS and your back button didn't work < 1292280121 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and there's no real point to put them in the store, really < 1292280122 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :although I might < 1292280125 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it's an implementation detail at this point < 1292280233 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yeah, might as well use my nested-hash-in-store if I can get that working efficiently with the two-level search for scapegoathub < 1292280249 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :if not, easy enough to use the %scapegoat/names system (yes, I'm dropping the unicode thing) < 1292280258 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, scapegoathub is a ridiculous website name < 1292280262 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it really is < 1292280268 0 :MigoMipo!unknown@unknown.invalid QUIT :Ping timeout: 255 seconds < 1292280315 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :the other options are !scapegoat (no, shells barf on that), "scapegoat (nope, shells), #scapegoat (nope, shells... as well as reminding me of IRC and being weird), $scapegoat (shells), %scapegoat, &scapegoat (shells), 'scapegoat (shells), (scapegoat (shells), )scapegoat (shells), *scapegoat (shells), +scapegoat (shells? maybe not), ,scapegoat (weird), -scapegoat (nah) < 1292280321 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(for the directory) < 1292280326 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I think out of those, %scapegoat or +scapegoat is the best choice < 1292280343 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :+foo seems to be uninterpreted in bash, so that's a possibility < 1292280355 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it is, some programs use it for long options < 1292280362 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Is there a problem with naming it just ... scapegoat? < 1292280364 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: true, but programs operating on files? < 1292280365 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :including programs generated by C-INTERCAL, I think just to be perverse < 1292280368 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: erm, this is the directory like .hg < 1292280371 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :OH < 1292280381 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :Why not .scapegoat then? :P < 1292280389 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: I don't want it to be called .scapegoat because it's neither configuration nor a backup file < 1292280391 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and there's no real reason to hide it < 1292280398 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :it's not very *interesting*, but it's not irrelevant < 1292280402 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :don't backup files end with ~? < 1292280405 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and eliding it from filename listings is just confusing < 1292280408 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: yes, why? < 1292280417 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: don't call it a backup directory, I'll have to slap you < 1292280423 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then why would you start them with .? < 1292280428 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1292280430 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :or is this a Vorpal-level misunderstanding on my part? < 1292280434 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: well, vim calls its swap files .something.swp I think < 1292280434 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I forget < 1292280440 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :emacs has .#foo# too, at least for me, sometimes < 1292280464 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you're thinking of the broken symlinks starting .# it uses to prevent accidentally opening the same file twice < 1292280475 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(why it uses broken symlinks for that purpose, I'm not sure) < 1292280478 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric : *because Feather? <-- wait is this scapegoat idea actually _based_ on feather? < 1292280480 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no < 1292280486 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's too insane for words < 1292280487 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :we could also go for :scapegoat (naw), ;scapegoat (shells), scapegoat (shells), ?scapegoat (shells, I think) < 1292280491 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :but those come after numbers < 1292280496 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :making them not really order any particular way at all < 1292280498 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :we're making design decisions to stop it working like Feather as much as possible < 1292280517 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, what about calling it -rf? < 1292280519 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :possibly some things put ^scapegoat before other things too < 1292280520 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: :D < 1292280545 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :+scapegoat seems like the best contender to me, it's like %scapegoat but less ugly... and really, I don't know of any tool that accepts +-options and would be useful to use on a file, at least, not very often < 1292280552 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and the + makes me think "additional" < 1292280563 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :as in, you don't *need* this, if you want these files, but it has additional sets of files like this that you might liek < 1292280564 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :*like < 1292280577 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep, I like the look of the + too < 1292280582 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except that it renders really badly with this font < 1292280586 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I blame your font < 1292280591 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I didn't even know you /could/ render a + asymmetrically... < 1292280594 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :wow < 1292280603 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric : [...] (yes, I'm dropping the unicode thing) <-- i was about to ask... < 1292280611 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: :) < 1292280614 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and now I'm wondering if arch/tla is perhaps just terribly misunderstood, and they picked all their filenames for perfectly good reasons :D < 1292280624 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(it's a pixel shorter on the left than right, and a pixel shorter below than above) < 1292280625 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: and if all that confusing terminology is just GENERALITY! < 1292280629 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: probably not. < 1292280640 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the difficulty of creating a repo is quite large < 1292280649 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :yes, I say we go for "sg init" < 1292280650 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think it has some sort of repo repo you store your repos in < 1292280651 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1292280666 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ideally, you wouldn't have to think about all this advanced technology every day... < 1292280694 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais523: hmm, every repo needs to come with one commit there, because it's the branch everything is based on < 1292280702 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :I suggest it be authorless, and absolutely contentless < 1292280715 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and then every store will include that object and maybe a few others if it needs extra ones to exist :) < 1292280731 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hmm, shouldn't it be an empty directory? < 1292280734 0 :Phantom_Hoover!~phantomho@cpc3-sgyl21-0-0-cust116.sgyl.cable.virginmedia.com JOIN :#esoteric < 1292280737 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :brb < 1292280747 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :also, I need to go home, now may be a good time < 1292280749 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :bye everyone < 1292280756 0 :ais523!unknown@unknown.invalid QUIT :Quit: Page closed < 1292280802 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :Does he hate me that much? < 1292280981 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you weren't supposed to suspect that < 1292280988 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is back to the future < 1292281050 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :elliott: The only acceptable directory name is +scape🐐 < 1292281056 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :And if you can't read that ... neither can I, but still < 1292281059 0 :Phantom_Hoover!unknown@unknown.invalid PRIVMSG #esoteric :ACTION goes forward to the past. < 1292281065 0 :Phantom_Hoover!unknown@unknown.invalid QUIT :Remote host closed the connection < 1292281756 0 :oklofok!unknown@unknown.invalid QUIT :Ping timeout: 240 seconds < 1292281857 0 :poiuy_qwert!unknown@unknown.invalid QUIT :Quit: This computer has gone to sleep < 1292282125 0 :oklofok!~oklopol@dyn37-232.vpn.utu.fi JOIN :#esoteric < 1292282317 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :okokoko < 1292282362 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklopower! < 1292282823 0 :impomatic!unknown@unknown.invalid QUIT :Quit: ChatZilla 0.9.86 [Firefox 3.5.16/20101130074636] < 1292283192 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :Do you have any idea or comment or collaboration or anything about TeXnicard? Should I create a IRC channel on my server for this purpose? (Remember to FLUSH the channel afterwards if you want to ensure your question/comment is not lost due to power failures!) < 1292283625 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric : hmm, hg log -r 'limit(sort(all(), -rev), 4) and not merge()' does the same thing as hg log -l 4 -M, which isn't what i want < 1292283629 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Dear god it has Python in it. < 1292283648 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: erm I don't believe you can FLUSH an IRC channel < 1292283690 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :elliott: On most IRC servers you cannot. On CthulhuIRCd, you can FLUSH an IRC channel. < 1292283699 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :this is _zzo38's_ IRC channel we are talking about, it's ... right. < 1292283709 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ah. < 1292283721 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :in other words, it's not IRC :) < 1292283797 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :elliott: It is IRC, it is just non-standard. Commands like NS and CS supported on Freenode are not standard IRC commands either. < 1292283881 0 :FireFly!unknown@unknown.invalid QUIT :Quit: swatted to death < 1292283898 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :(And I have no need to support syntactically incorrect commands in my server.) < 1292284014 0 :Gregor!unknown@unknown.invalid PRIVMSG #esoteric :elliott: +scape🐐 < 1292284047 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :Gregor: Is 🐐 a goat? :p < 1292284123 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: Why do you want to support syntactically incorrect commands in your server? < 1292284214 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ...:D < 1292284218 0 :sftp!unknown@unknown.invalid QUIT :Remote host closed the connection < 1292284223 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: what did you do < 1292284279 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ugh, I hate libraries whose manuals are PDFs < 1292284290 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :(or postscripts or dvis, before zzo38 mentions it :P) < 1292284379 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: um i'm pretty sure i never said i wanted that < 1292284379 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :🐐 - "U+1F410 GOAT (eighth of the signs of the Asian zodiac)" < 1292284385 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Not that I have in any of my fonts either. < 1292284413 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: you didn't ctcp him or anything? < 1292284420 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: WHY DO YOU WANT TO KILL BABIES < 1292284421 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :Sorry, "eighth of the signs of the Asian zodiac, used in Vietnam"; was reading the RAM instead. < 1292284431 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :elliott: BECAUSE THEY'RE SO TASTY < 1292284434 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: rams and goats, what's the difference < 1292284447 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: why do you think oerjan wants to support syntactically incorrect commands in his server? < 1292284450 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :elliott: The difference is that they use the GOAT in Vietnam. < 1292284463 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :elliott: Because some people do. < 1292284471 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ALSO THEY SCREAM TOO MUCH < 1292284475 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: what? < 1292284496 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :elliott: Well, it seems common. < 1292284500 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: (for some X in People, WantsSyntacticallyIncorrectCommands(X)) => WantsSyntacticallyIncorrectCommands(oerjan)? < 1292284504 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :i... think not < 1292284509 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :U+1F47D EXTRATERRESTIAL ALIEN, right there between BABY ANGEL and ALIEN MONSTER. < 1292284517 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: mind, I do want syntactically-incorrect commands in my IRC servers. < 1292284524 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :(The "miscellaneous symbols and pictographs" block sure is the best.) < 1292284532 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :elliott: Why? < 1292284542 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: because they're convenient. < 1292284578 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :elliott: I think they still should be made syntactically correct even if it is going to be convenient! < 1292284591 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: not possible, with existing clients < 1292284622 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :fizzie: *EXTRATERRESTRIAL < 1292284627 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :elliott: It is possible with my client, if your client doesn't do that, it is partially broken. < 1292284639 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: yep, but I don't like your client, and I like the client I use < 1292284655 0 :zzo38!unknown@unknown.invalid PRIVMSG #esoteric :elliott: Can't you correct the client you use then? < 1292284681 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: no, I use my distribution packages for convenience. < 1292284687 0 :fizzie!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: EXTRATASTY. < 1292284690 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ooh, cpressey linkified feather on the wiki. i think this means we are all doomed. < 1292284693 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :zzo38: correcting them brings me no benefit, is a lot of effort, and I'd have to update it for each new version of my client. < 1292284702 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: that's not allowed! < 1292284711 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :ais has said he won't create a page until it's ready < 1292284718 0 :elliott!unknown@unknown.invalid PRIVMSG #esoteric :and putting intentional redlinks there that won't be filled for ages is just silly