00:08:41 <zzo38> You can also type "view-source:" in front of the URL to force it to display in the browser (at least this works for Firefox and other Mozilla-based browsers).
00:10:10 <shachaf> Does it work in Mozilla Navigator?
00:12:40 <Sgeo__> shachaf, do you play Dominion?
00:13:01 <Sgeo__> Also ais523 isn't here, I wanted to tell him thanks for being a good historian
00:13:25 <Sgeo__> Or... whatever you call it when someone meticulously documents stuff for the benefit of future historians
00:14:25 <fizzie> I think I've played Dominion once at a birthday party. If that's referring to the card game.
00:14:48 <Sgeo__> I learned the rules and might try playing through the tutorial tonight
00:15:06 <Sgeo__> It's evenly matched like Prismata but has RNG
00:15:53 <shachaf> OK, then let's play Prismata.
00:16:46 <fizzie> Thanks, but no-thanks. Sounds too reasonable a thing to do.
00:18:24 * Sgeo__ is reading http://www.mail-archive.com/agora-official@agoranomic.org/msg07043.html
00:23:10 -!- augur has joined.
00:29:12 <Sgeo__> Huh, that was an office in Agora that I apparently held but don't remember holding
00:30:57 * oerjan stealthily takes a DNA sample of MoonyThe"Human"
00:33:30 * oerjan puts the sample into the analyzer
00:34:41 -!- augur has quit (Remote host closed the connection).
00:34:45 * oerjan wonders why the analyzer ran away screaming
00:35:17 -!- augur has joined.
00:35:39 <boily> MoonyTheHuman: you aren't human. you're a moon hth
00:35:53 <Sgeo__> boily, like Prozac the Bear?
00:36:33 <MoonyTheHuman> I dunno what i am, have a list of usernames: MoonyTheHuman, qbitn, MoonyTheDwarf, moon, moon_, moon__, moon___, moonheart08
00:36:55 <MoonyTheHuman> note that qbitn is new, i wanted something original :P
00:37:44 <oerjan> hm Prozac the Bear, that was a long time ago. i don't even remember clearly what he was.
00:38:15 -!- jaboja has quit (Ping timeout: 264 seconds).
00:40:03 -!- augur has quit (Ping timeout: 240 seconds).
00:40:18 <Sgeo__> oerjan, Triangle and Robert character
00:40:58 <oerjan> Sgeo__: i know that. i just don't remember how far he was from being a bear. probably a lot, given the comic.
00:42:11 <HackEgo> This channel is about programming -- for the other kind of esoterica, try #esoteric on EFnet or DALnet.
00:42:16 <HackEgo> #esoteric is the only channel that doesn't exist. After monqy left it became slightly off-centër. It's about 30 m (100 ft) across. oerjan seems to be making a lawn in the northern part, but it keeps getting dug up by free ranging moons. May contain crude drawings of nuts.
00:43:02 <shachaf> `slwd #esoteric//s-doesn't exist-exists-
00:43:06 <HackEgo> wisdom/#esoteric//#esoteric is the only channel that exists. After monqy left it became slightly off-centër. It's about 30 m (100 ft) across. oerjan seems to be making a lawn in the northern part, but it keeps getting dug up by free ranging moons. May contain crude drawings of nuts.
00:43:37 <oerjan> `slwd #esoteric/s/about/a 7-codimensional hyperburrito about/
00:43:50 <oerjan> `slwd #esoteric//s/about/a 7-codimensional hyperburrito about/
00:43:54 <HackEgo> wisdom/#esoteric//#esoteric is the only channel that exists. After monqy left it became slightly off-centër. It's a 7-codimensional hyperburrito about 30 m (100 ft) across. oerjan seems to be making a lawn in the northern part, but it keeps getting dug up by free ranging moons. May contain crude drawings of nuts.
00:44:36 <HackEgo> wisdom/#esoteric:#esoteric is the only channel that exists. After monqy left it became slightly off-centër. It's a 7-codimensional hyperburrito about 30 m (100 ft) across. oerjan seems to be making a lawn in the northern part, but it keeps getting dug up by free ranging moons. May contain crude drawings of nuts.
00:44:56 <shachaf> `slwd #esoteric//s#burrito#whatever#
00:44:58 <HackEgo> wisdom/#esoteric//#esoteric is the only channel that exists. After monqy left it became slightly off-centër. It's a 7-codimensional hyperwhatever about 30 m (100 ft) across. oerjan seems to be making a lawn in the northern part, but it keeps getting dug up by free ranging moons. May contain crude drawings of nuts.
00:45:04 <shachaf> Just about anything is an improvement over burrito jokes.
00:45:52 <oerjan> shachaf: but the original has taco ;_;
00:46:19 <oerjan> `slwd #esoteric//s#whatever#enchilada#
00:46:22 <HackEgo> wisdom/#esoteric//#esoteric is the only channel that exists. After monqy left it became slightly off-centër. It's a 7-codimensional hyperenchilada about 30 m (100 ft) across. oerjan seems to be making a lawn in the northern part, but it keeps getting dug up by free ranging moons. May contain crude drawings of nuts.
00:46:35 <oerjan> shachaf: triangle and robert's world is a 4-dimension hypertaco hth
00:54:56 -!- augur has joined.
01:04:48 -!- augur has quit (Remote host closed the connection).
01:20:17 <MoonyTheHuman> [BODY:QUADRUPED_NECK:2EYES:4EARS:8NOSE:16LUNGS:32HEART:64GUTS:128ORGANS:256THROAT:512NECK:1024SPINE:2048BRAIN] << i seriously regret putting this on cats
01:29:40 -!- augur has joined.
01:31:51 <boily> uhm. are they the number of body parts, or some other random stats?
01:38:25 -!- byteflame has joined.
01:45:30 <boily> holy fungot may you have mercy on us all...
01:45:30 <fungot> boily: to find. initiates my bad reaction of companies that the attached and let it go with maureen's december 22nd.
01:45:53 * boily will try to not have nightmares about these Teratomorphic Kitties
01:47:18 <MoonyTheHuman> Wow in this DF world Dingo Men are the most successful
01:47:40 -!- hppavilion[1] has joined.
01:49:08 -!- Froox has quit (Ping timeout: 258 seconds).
01:55:47 * boily confusingly mapoles Phantom_Hoover
02:04:15 -!- augur has quit (Remote host closed the connection).
02:04:52 -!- augur has joined.
02:07:10 <MoonyTheHuman> 4EARS:8NOSE:16LUNGS:32HEART:64GUTS:128ORGANS:256THROAT:512NECK:1024SPINE:2048BRAIN
02:07:29 -!- Akaibu has quit (Quit: Connection closed for inactivity).
02:09:40 -!- augur has quit (Ping timeout: 250 seconds).
02:10:39 <boily> I am not there. I am an illusion.
02:10:50 * boily flees and hides under covers
02:10:57 -!- boily has quit (Quit: PRIMITIVE CHICKEN).
02:16:39 -!- augur has joined.
02:25:16 -!- Phantom_Hoover has quit (Remote host closed the connection).
02:27:55 <oerjan> quintopia: i am not sure when's the last time i beered. it may have been a family visit some years ago. on rare occasions i cognac or aquavit. hm, i haven't had wine in a while either.
02:43:12 -!- augur has quit (Remote host closed the connection).
02:43:47 -!- augur has joined.
02:45:03 -!- augur has quit (Read error: Connection reset by peer).
02:45:57 -!- augur has joined.
02:50:12 <quintopia> oerjan: i just tried a Nøgne Ø doible IPA and it was pretty bad so so far norways beer performance is a bit lacking
02:55:18 -!- MoonyTheHuman has quit (Quit: Page closed).
02:57:39 -!- Zarutian has joined.
02:59:28 <Zarutian> hmm.. Anyone know of any macro extensible version of LOOP or other esolang that is basically at the primitive recursive function level of completeness?
02:59:46 <oerjan> i have a problem with the GHC user's guide. its table of contents needs a table of contents.
03:02:09 <oerjan> Zarutian: i got confused because BlooP is like the last part of that.
03:06:07 <Zarutian> I was thinking if combining something like such macro LOOP with something like Postscript display model or RIPSCRIP|NAPLPS plus outside eventlooping would yeild somewhat usable software whose turns|iteration of the eventloop are known to terminate*
03:07:36 <Zarutian> (* property of primitive recursive functions that by construction they do terminate as the only backbranching (or backjumping) construct is a countdown loop whose counter is only set right before it is entered)
03:14:27 <Cale> good ol' BBSes
03:17:02 <HackEgo> Cale: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
03:22:15 <shachaf> `` ln -s relcome bin/welcome
03:22:37 <HackEgo> HackEgo: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
03:23:34 <Cale> Is the choice of starting colour randomised, or based on the user's name?
03:23:41 <Cale> `welcome HackEgo
03:23:43 <HackEgo> HackEgo: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
03:23:52 <Cale> `relcome HackEgo
03:23:54 <HackEgo> HackEgo: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on EFnet or DALnet.)
03:23:59 <HackEgo> #!/bin/sh \ welcome "$@" | rainwords
03:24:05 <HackEgo> #!/hackenv/bin/shebang_args_or_input python \ import random; w=[l.split() for l in open("/dev/stdin").read().split("\n")]; r=[4,7,8,9,2,6,13]; print "\n".join((lambda s: " ".join(chr(3) + "%02d"%r[(i+s)%len(r)] + l[i] for i in range(len(l))))(random.randrange(0, len(r))) for l in w)
03:26:30 * oerjan notes that no one `relcomed Zarutian, but isn't sure whether e's new or not.
03:27:45 <Cale> shachaf: haha, check this out: https://en.wikipedia.org/wiki/Slow-growing_hierarchy#Relation_to_fast-growing_hierarchy
03:28:59 <shachaf> That article title looks like a joke.
03:30:34 * Zarutian wonders what HackEgo would do with: curl -sS https://gist.githubusercontent.com/zarutian/9191d98f731241a52e1a4f6a59dd0587/raw/f4b7cee07dea66e8721ded9559059245e79bdf9b/test.sh | tee test.sh | openssl dgst -sha256 | { read k; if [ "$k" == "113b61457034e72b9a12eb875df5ed71e265dcc6105c00e472187d30c0cc8c88" ] ; then source test.sh ; else echo "failed"; fi }
03:32:29 <Zarutian> btw that is a demostration of a better curlpipebash though such things are still rather bad
03:34:02 <Zarutian> `echo -n "bla" | openssl dgst -sha256
03:34:04 <HackEgo> -n "bla" | openssl dgst -sha256
03:35:09 <shachaf> Also you can /msg HackEgo to try things out.
03:35:17 <shachaf> Just make sure that if you change anything you do it in the channel.
03:35:20 <HackEgo> WARNING: can't open config file: /usr/lib/ssl/openssl.cnf \ (stdin)= 4df3c3f68fcc83b27e9d42c90431a72499f17875c81a599b566c9889b9696703
03:35:54 -!- centrinia has joined.
03:45:02 -!- moonythedwarf has quit (Remote host closed the connection).
03:45:46 -!- moon_ has joined.
03:46:28 -!- moon_ has changed nick to moonythedwarf.
03:46:47 <shachaf> `le/rn mustard watch/A mustard watch is just a classical watch extended with a certain amount of mustard in the mechanism.
03:49:32 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
04:00:10 -!- centrinia has quit (Quit: Leaving).
04:18:58 -!- moonythedwarf has quit (Excess Flood).
04:19:16 -!- moon_ has joined.
04:19:44 -!- moon_ has changed nick to moonythedwarf.
04:22:18 -!- Jafet has joined.
04:51:25 -!- moonythedwarf has quit (Read error: Connection reset by peer).
05:00:02 -!- Zarutian has quit (Quit: Zarutian).
05:10:19 -!- mrSynAckster has joined.
05:20:45 -!- contrapumpkin has joined.
05:22:37 -!- copumpkin has quit (Ping timeout: 252 seconds).
05:23:09 -!- copumpkin has joined.
05:26:13 -!- contrapumpkin has quit (Ping timeout: 265 seconds).
05:26:42 -!- contrapumpkin has joined.
05:28:40 -!- copumpkin has quit (Ping timeout: 244 seconds).
05:29:05 -!- copumpkin has joined.
05:31:16 -!- contrapumpkin has quit (Ping timeout: 244 seconds).
05:36:28 -!- contrapumpkin has joined.
05:36:52 -!- copumpkin has quit (Ping timeout: 240 seconds).
05:40:51 -!- Alcest has joined.
05:40:57 -!- mrSynAckster has left.
05:42:33 -!- contrapumpkin has quit (Ping timeout: 240 seconds).
05:43:31 -!- Kaynato has quit (Ping timeout: 252 seconds).
06:00:52 -!- byteflame has quit (Ping timeout: 240 seconds).
06:18:06 <HackEgo> brainfuck is the integral of the family of terrible esolangs. The name is a euphemism for "beef". bf -c -t "+>+++++>+++" | mklang --array
06:27:35 <oerjan> `` rgrep 'of the day' wisdom
06:27:44 <HackEgo> wisdom/markdown:The markdown flavor of the day is walnut.
06:28:16 <oerjan> `slwd markdown//s/walnut/camphor/
06:28:20 <HackEgo> wisdom/markdown//The markdown flavor of the day is camphor.
06:34:55 <shachaf> `learn The number of the hour is 14.
06:34:57 <HackEgo> Learned 'number': The number of the hour is 14.
06:35:43 <zzo38> Now I added the program to make hint files into FreeUHS.
06:36:04 <zzo38> Please look at the documentation and tell me if it is good or not good or whatever.
06:36:17 <shachaf> But you didn't provide a link to the documentation.
06:37:06 <zzo38> https://www.npmjs.com/package/freeuhs
06:39:52 <zzo38> It also has JSON export and SQL export.
07:12:58 -!- hppavilion[1] has joined.
08:02:15 -!- kuroro has quit (Ping timeout: 264 seconds).
08:27:25 -!- kuroro has joined.
08:51:44 -!- gamemanj has joined.
08:54:31 -!- augur has quit (Remote host closed the connection).
09:02:28 -!- Akaibu has joined.
09:16:13 -!- oerjan has quit (Quit: Nite).
09:46:37 -!- heroux has quit (Ping timeout: 252 seconds).
09:46:52 -!- heroux has joined.
09:48:23 -!- augur has joined.
10:09:05 <zzo38> Falling on top of what?
10:09:22 <zzo38> When I type these messages on this computer, it makes noise; it doesn't silence.
10:12:15 <gamemanj> if you threw silence off of a cliff, would it fall?
10:19:42 <hppavilion[1]> Trump's odds of winning (according to five3eight) have dropped to about 25%
10:23:48 <hppavilion[1]> gamemanj: So instead, we'll probably get... Hillary
10:25:08 <zzo38> You have to injure both candidates so that they will not recover in time.
10:25:34 <gamemanj> Well. You'll probably get Hillary. I, on the other hand, will be sipping tea and watching as the rotten tomatoes get flung over that golf course I heard about.
10:26:26 <hppavilion[1]> gamemanj: Where do you live and how hard will it be to flee there?
10:26:53 <gamemanj> At least one famous ship hit an iceberg when trying to get from here to where you are.
10:27:04 <gamemanj> Where "here" is at the country level.
10:27:18 <hppavilion[1]> I seem to remember the Titanic aiming for New York
10:27:33 <gamemanj> If the titanic was aiming for New York
10:27:39 <gamemanj> then where was it coming from?
10:29:00 <gamemanj> Yes. So if it was going *from* Europe
10:30:39 <fizzie> http://i2.kym-cdn.com/photos/images/original/000/531/391/b58.gif is what people hereabouts tend to use when they've done something like that.
10:31:42 <hppavilion[1]> fizzie: I thought it was the shame matrix of solidity?
10:32:05 <fizzie> I don't know where it's from. Know Your Meme just has the image in their gallery, no explanations.
10:32:08 <int-e> it's a box you can... meditate... in
10:33:10 <int-e> (now I'm wondering why Portal doesn't feature one of those... it would fit perfectly)
10:33:57 <int-e> Perhaps you could even use one to capture turrets.
10:34:57 <int-e> Which would be much more turricula
10:35:08 <int-e> Which would be much more turriculane than the usual technique of knocking them over?
10:37:26 <fizzie> To jump back to the original conversation -- given recent events, I'd think fleeing to here is going to be increasingly difficult, what with this whole "get all them foreigners out" stuff.
11:00:14 <shachaf> But almost everyone in England is a foreigner.
11:21:09 <hppavilion[1]> (wait, are we talking about immigration recently or about the fact that Americans are all immigrants unless they're native?)
11:21:16 -!- augur has quit (Remote host closed the connection).
11:22:09 <shachaf> We're talking about the fact that people in England tend not to be US citizens, under a US-centric view of the world.
11:37:15 -!- boily has joined.
11:45:40 <boily> only if you use them as /-substitutes hth
12:11:14 <HackEgo> arabic//.scihpylgoreiH sa drah sa ton hguoht ,troppus stnof ekam ot drah yrev si taht egaugnal citimes lartnec a si cibarA
12:11:17 <HackEgo> guestbot//guestbot is nobody
12:12:10 <boily> how the fungot am I supposed to format wisdom/arabic in the PDF...
12:12:37 <shachaf> I'd half a mind to delete it.
12:12:58 <HackEgo> <int-e> revert accbc9c5c7ec \ <ais523> echo wisdom/* | shuf | head -n 10 | xargs rm \ <oerjan> revert \ <elliott> revert 1 \ <Bike> revert \ <FreeFull> for x in wisdom/*; do rev "$x" > "$x"a; mv "$x"a "$x"; done \ <guestbot> learn guestbot is nobody
12:13:09 <gamemanj> boily: Well, by the look of it, it's just in reverse
12:13:22 <b_jonas> shachaf: feel free to revert it
12:15:25 <HackEgo> Cats are cool, but should be illegal.
12:15:35 <boily> yes, but I'd like for the arabic part to be to the right. and maybe LaTeX supports character reflections, so it can really be RTL.
12:17:25 <b_jonas> boily: don't do character reflections for this. reflect the whole paragraph.
12:19:08 <boily> uuh... that's what I meant, just checking if somebody paid attention...
12:19:36 <b_jonas> but I think the arabic entry shouldn't be reflected
12:19:55 * boily tries to whistle innocently, but only splits bits of peanut butter toast
12:19:57 <b_jonas> you should either just show it as is, or show it aligned to the right margin instead of the left
12:20:19 <boily> ss\split\ss\spit\ss
12:28:19 <hppavilion[1]> How long do you think it is before fandoms dominate enough of the world that politicians start having to pander to them?
12:28:33 <hppavilion[1]> Apparently, Ted Cruz officially* endorsed Applejack as best pony
12:29:31 -!- boily has quit (Quit: WORTHY CHICKEN).
12:38:32 <HackEgo> 000000 2e 73 63 69 68 70 79 6c 67 6f 72 65 69 48 20 73 >.scihpylgoreiH s< \ 000010 61 20 64 72 61 68 20 73 61 20 74 6f 6e 20 68 67 >a drah sa ton hg< \ 000020 75 6f 68 74 20 2c 74 72 6f 70 70 75 73 20 73 74 >uoht ,troppus st< \ 000030 6e 6f 66 20 65 6b 61 6d 20 6f 74 20 64 72 61 68 >nof ekam ot drah< \ 000040 20 79 72 65 76 20 73 69 20 74 61 68
12:48:20 <Jafet> `echo Arabic is a central semitic language that is very hard to make fonts support, though not as hard as Hieroglyphics.
12:48:21 <HackEgo> Arabic is a central semitic language that is very hard to make fonts support, though not as hard as Hieroglyphics.
12:48:41 <Jafet> I wonder how many terminals display that correctly.
12:49:07 <nortti> I know of three. os x terminal.app, pangoterm, and one I can't remember the name of
12:50:53 -!- bauen1 has joined.
12:54:04 -!- bauen1_ has quit (Ping timeout: 260 seconds).
13:01:56 <FreeFull> Jafet: What counts as correctly, and what as incorrectly?
13:02:59 <FreeFull> I saw this (typed out rather than copy-pasted): "Arabic is a central semitic language that is very hard to make fonts support, though not as hard as Hieroglyphics."
13:03:08 <FreeFull> Is that what it's supposed to look like?
13:13:06 <gamemanj> What I see is ",troppus stnof ekam ot drah yrev si taht egaugnal citimes lartnec a si cibarA not as hard as Hieroglyphics."
13:13:30 <gamemanj> Oh, there's also "hguoht" at the start.
13:13:41 <gamemanj> I was wondering where that "though" went.
13:16:32 -!- hppavilion[1] has quit (Ping timeout: 240 seconds).
13:31:24 -!- copumpkin has joined.
13:38:25 <b_jonas> oh, then why didn't you say that, stupid error message?
13:43:33 -!- Sgeo__ has quit (Ping timeout: 240 seconds).
14:03:32 <Jafet> gamemanj: that's a... novel interpretation of RTLO.
14:04:22 <Jafet> hmm, most articles about the RTLO seem to be about using it to spoof filename extensions.
14:06:27 <gamemanj> Jafet: Well, word-wrapping break.
14:06:54 <gamemanj> It's after "cibarA" that it wraps to the next line.
14:31:14 -!- byteflame has joined.
14:42:32 -!- `^_^v has joined.
16:42:45 <HackEgo> [wiki] [[Talk:BackFlip]] https://esolangs.org/w/index.php?diff=49071&oldid=19937 * Weux082690 * (+513) /* Boolean Logic */ new section
16:43:06 <HackEgo> [wiki] [[Talk:BackFlip]] https://esolangs.org/w/index.php?diff=49072&oldid=49071 * Weux082690 * (+92) /* Boolean Logic */
17:17:40 -!- Kaynato has joined.
17:18:19 -!- bauen1 has quit (Ping timeout: 260 seconds).
17:19:42 -!- bauen1 has joined.
17:24:00 -!- atrapado has joined.
17:40:29 -!- bauen1 has quit (Ping timeout: 260 seconds).
17:49:04 -!- Phantom_Hoover has joined.
17:51:42 -!- bauen1 has joined.
18:22:54 -!- MoALTz has joined.
18:32:51 -!- Alcest has quit (Ping timeout: 264 seconds).
18:59:49 -!- Phantom_Hoover has quit (Ping timeout: 260 seconds).
19:09:16 -!- augur has joined.
19:40:42 -!- miketo has joined.
20:07:24 <haavard> Does anyone know of a simple black-box testing framework I can use to test my esolang interpreter? As in, running my program with lots of different input and testing for output or performance regressions
20:07:47 <haavard> I'm using a home-made shell script currently, but it feels like I'm reinventing the wheel
20:08:51 <gamemanj> home-made shell scripts are pretty useful to get things quickly. As long as you don't try embedding a scripting language into it...
20:09:04 -!- Zarutian has joined.
20:09:26 <gamemanj> There's probably a better way, but it depends what language your esolang interpreter is written in
20:10:13 <haavard> It's worked pretty well so far, but it only checks stdout/stderr output. I'd love to be able to monitor performance improvements/regressions, but that complicates things a lot
20:10:21 <haavard> FWIW, the interpreter is written in C
20:15:54 <gamemanj> Perhaps consider a define to load & run the test suite from a file (alternating code/input/output) then write out the test times to another file?
20:16:09 <gamemanj> That way you don't end up covering binary start times, which will always be off on the first test,
20:16:36 <gamemanj> (There's some complex stuff about caching which I don't think anybody entirely understands)
20:17:14 <gamemanj> (Maybe there should be a sysfs interface for finding out about - and potentially adding to - the cache...)
20:18:29 -!- augur has quit (Remote host closed the connection).
20:18:36 <haavard> I feel like I'm gonna spend more time creating a test system than improving the interpreter
20:33:03 <quintopia> @tell boily USPS is chatting with Postes Canada to find out why this package was returned to me. They'll get back to me by Sep. 8. Is this too long to wait for redress y/n?
20:34:50 <gamemanj> haavard: That's true. You'd probably spend more time configuring any test system you get than the interpreter, anyway.
20:35:36 <gamemanj> haavard: So, you'd probably end up spending more time either way than if you stick with the shell script...
20:36:25 <haavard> Yeah, I'm sticking with the basic shell script for now. The only thing it lacks is performance testing, anyway
20:37:46 <gamemanj> Easily doable just with a few additional lines in the program itself to check the time at the start & end.
20:40:26 -!- byteflame has quit (Ping timeout: 244 seconds).
20:43:18 -!- byteflame has joined.
20:55:07 <int-e> Somehow I think Cindercone is getting hacked.
20:57:37 -!- jaboja has joined.
21:03:01 <izabera> what's the expected run time of a program that mmaps a 4gb file on a machine with less than 4gb free ram, and then writes a byte in 1 million random positions on that file?
21:05:38 <gamemanj> Around about 8.2zorks. The realtime values depend on, for starters, HDD density, kernel version, and magic.
21:06:06 <izabera> i don't know how much magic i get
21:06:24 <gamemanj> Oh, no, it's not how much magic.
21:06:35 <gamemanj> It's just magic itself provides the answer. Kind of.
21:06:57 <gamemanj> ...in all seriousness, though, IDK? Try it and find out! :)
21:08:12 <gamemanj> I'm pretty sure HDD density and kernel version are major factors, but so are things like "what else is currently causing HDD usage" and "what other programs does the kernel consider a priority..."
21:08:52 <gamemanj> Like, if you were running two copies of this program, you'd get different results.
21:13:05 <int-e> What's the actual read granularity of modern drives? I imagine it could be larger than the typical 4kb page size...
21:14:44 <pikhq> It depends on the drive, but most commonly it's 4k on new spinning rust.
21:15:19 <int-e> anyway if it were 4kb, then you'd be loading about 1.47GB of data... if that fits in the RAM and the read heads don't have to move you're looking at about half an hour. In practice, I wouldn't be surprised to be off by a factor of 4 in either direction, and possibly more.
21:16:02 <int-e> The real answer is to measure, not guess.
21:16:22 <int-e> the kernel will read in
21:16:36 <izabera> well ok but it can discard each page as soon as it's read
21:16:54 <int-e> and that's the slow part... writing out can be delayed and done in a nice escalator algorithm fashion so I expect it will actually be quite a bit faster.
21:17:02 <int-e> izabera: it won't.
21:17:24 <pikhq> It won't unless you specifically tell it to with madvise.
21:17:26 <int-e> and since you're going to read each sector approximately e times, it's actually worthwhile to keep them around
21:17:55 <int-e> s/sectore/4kb block/
21:18:31 <pikhq> If you say MADV_DONTNEED each time it still probably *won't* immediately flush to disk.
21:19:23 <int-e> Hmm, are MADV_DONTNEED pages zeroed eagerly?
21:19:42 <izabera> what's the difference between MADV_FREE and MADV_DONTNEED
21:19:50 <izabera> the man page isn't clear about it
21:20:01 <int-e> (just realiizing that I know dangerously little about the specifics of Linux' memory management)
21:20:39 <pikhq> int-e: They're not zeroed *at all*.
21:21:07 <int-e> pikhq: afaiui there's a pool of zeroed pages for mmap of /dev/zero.
21:21:35 <pikhq> MADV_DONTNEED only informs the kernel that a given memory range won't be accessed soon, so the kernel is free to discard the in-memory page (in which case reads will trigger a load from the backing store).
21:21:42 <int-e> which is very useful because the C library likes to satsify large calloc requests that way
21:22:03 <int-e> (and malloc... not clearing pages would produce data leaks)
21:22:18 -!- xfix has quit (Ping timeout: 250 seconds).
21:22:19 -!- augur has joined.
21:22:47 <pikhq> MADV_FREE does MADV_DONTNEED, but if it discards the in-memory page it will zero-fill on demand (i.e. COW a zero page) instead of loading from backing store.
21:23:17 <pikhq> MADV_DONTNEED also works on any memory mapping, while MADV_FREE only works on private anonymous pages.
21:24:03 <izabera> pikhq: that's totally not in the man page
21:24:23 <pikhq> So: MADV_DONTNEED is a minor potential optimization for reducing the working set. MADV_FREE is usable by a malloc's free() implementation.
21:24:54 <int-e> shachaf: you're just as helpful as usual
21:25:04 <shachaf> It doesn't have the same feel to it now that elliott is gone.
21:25:40 <izabera> would MADV_DONTDUMP also improve performance somehow?
21:26:02 <pikhq> Only when you're crashing.
21:26:09 <shachaf> int-e: Really? I think that's a lot less helpful than usual.
21:26:17 -!- Eritzap has joined.
21:26:53 <shachaf> I couldn't take participate in this conversation on my phone, anyway.
21:27:06 <int-e> shachaf: I believe that you only add "hth" when whatever you say is not, actually, very helpful.
21:27:24 -!- xfix has joined.
21:27:37 <shachaf> Well, that's the standard usage in this channel.
21:27:41 <int-e> which is perfectly fine, btw
21:27:53 <shachaf> Sometimes I put it on helpful things, though.
21:28:05 <shachaf> Gotta keep people on their toes, right?
21:28:34 <pikhq> izabera: The situation you describe would best fit MADV_RANDOM, yeah.
21:30:34 <int-e> hmm, I wonder whether it would be worthwhile to make a list of 1000 random addresses, tell the kernel that they will be needed using MADV_WILLNEED, and then start modifying the bytes...
21:30:56 <int-e> ...the theory being that this gives the kernel an opportunity to schedule the disk reads nicely
21:31:13 <shachaf> Oh, do you know the addresses in advance?
21:31:45 <int-e> shachaf: it's just chunking
21:32:56 <int-e> basically, instead of generating a random address for each write access, I would generate a few in advance, then write.
21:33:10 <int-e> this may not be possible in all cases.
21:41:38 <int-e> and I also have no clue whether it actually pays off... it's a matter of magic.
21:47:42 <int-e> grrrr @mercurial... why does a hg revert -a not clear the resolution status of files
21:48:14 <int-e> shachaf: why is that?
21:48:55 <shachaf> It blocks the whole thread when there's a page fault, so it's unusable if you implement your own threading.
21:49:43 <int-e> well that means you don't like any virtual memory management at all
21:50:11 <shachaf> Or I want it to integrate with my userspace threads better.
21:51:12 <gamemanj> If you're worried about page faults, just have a thread controlling access to the memory, and then use FIFOs to send commands to/from it.
21:51:21 <gamemanj> How will you allocate memory for these FIFOs? mmap, of course...
21:51:33 <gamemanj> page faults take up time, that's the nature of page faults.
21:52:18 <int-e> I see no sane other way. The thing that causes the page fault is a plain CPU instruction... So whatever alternative instructions you want to have executed while the page is loaded, the kernel will have to know about. That's what OS threads are for.
21:52:52 <shachaf> Well, asynchronous page faults could be an option.
21:53:37 <gamemanj> When a page fault is executing, your program is in the middle of an instruction.
21:53:40 <int-e> I think you'd have to talk to CPU desgners about that.
21:53:43 <gamemanj> There's not really any better API that is possible.
21:55:16 <int-e> It should be possible to have instructions that check whether a page is currently mapped. and I could imagine triggering some sort of "soft" page fault as well [arguably madvise fills that niche already].
21:55:42 <int-e> But it needs serious effort and I'm not convinced it's worth it.
21:55:56 <shachaf> Checking whether a page is currently mapped has a race condition, of course.
21:56:03 <shachaf> Unless that instruction is mlock or something.
21:56:16 <shachaf> Er, never mind, "instruction".
21:56:22 <gamemanj> By that, do you mean that the page can be unmapped before you actually do anything with it?
21:56:54 <int-e> And with Linux, you can have page faults on any memory access anyway. Code is loaded using mmap, and basically anything can be swapped.
21:57:17 <gamemanj> To put it simply... If you are working on a system where the memory is managed for you, expect the memory to be managed for you.
21:57:59 <shachaf> Well, I'd like my RTS to manage my memory, not the kernel.
21:58:14 <shachaf> Or at least I have to have it do that.
21:58:23 <shachaf> My thoughts are not coherent right now.
21:58:44 <gamemanj> Well, I'm sure there's some way to coerce the kernel with some specific obscure features.
21:59:09 <gamemanj> And by "coerce" I mean "make it so page faults are not a thing, ever, unless you are using mmap for file IO"
22:00:00 <int-e> presumably mlock (shachaf mentioned it) goes a long way in that direction
22:00:22 <gamemanj> When what more is there to say? :)
22:01:13 <int-e> gamemanj: rhetorical questions are dangerous on here... they tend to get answered.
22:01:48 <gamemanj> Then why haven't pigs started to fly?
22:01:58 <int-e> gamemanj: physics!
22:02:10 <gamemanj> I was hoping pigs would start to fly. :(
22:02:32 <int-e> gamemanj: I guess a catapult would do the trick
22:02:38 <int-e> gamemanj: or an airplane
22:03:52 <gamemanj> "Delivery on receipt of one (1) English pound to the first person who walks to <geolocation> with a picture of a pig on an aeroplane - preferably piloting it."
22:04:06 <gamemanj> ...would be what I was writing if I was living in the 1900's.
22:05:12 <gamemanj> Of course, the person would just fly the aeroplane there,
22:05:38 <gamemanj> and then walk about it a bit so as to meet the second requirement.
22:05:50 <gamemanj> *first requirement, not second.
22:06:17 <gamemanj> And then they'd ask for two pounds just because they cheated the system.
22:07:16 <Jafet> it would be nice to have asynchronous L2 caches
22:08:08 <int-e> I mean, to some extent this idea is implemented
22:08:29 -!- Eritzap has quit (Quit: Page closed).
22:08:39 <Jafet> I wonder if you can detect this by pinning pairs of hyperthreads so that each one wakes up when the other faults
22:09:49 <int-e> yes, hyperthreads *are* a target for side channel attacks
22:10:11 * Zarutian wonders what the fuck 'hyper'-threads are.
22:10:19 <int-e> (not quite what you said, but this has real world security implications)
22:10:32 <int-e> Zarutian: several threads running on a single core
22:10:36 <izabera> fun thing: try truncating a file that's being mmaped by someone else
22:10:57 <alercah> Zarutian: hyperthreads are when a single processor interleaves computations on multiple threads as if it were two separate CPUs
22:10:58 <Zarutian> int-e: how is that diffrent from usual multithreading?
22:11:09 <izabera> it causes a bus error in the process that mmaped that file
22:11:11 <alercah> Zarutian: it's hardware-level
22:11:16 <int-e> Zarutian: the idea is that each thread will suffer from latencies and not use all execution units, so two threads can better use the core.
22:11:19 <izabera> is there even any way to detect that before it happens?
22:11:25 <Zarutian> alercah: oh, an never works fast.
22:11:30 <int-e> Zarutian: more traditionally, threads would be one per core.
22:12:19 <Zarutian> int-e: hyperthreads each seems to suffer from the combined latencies of two or more threads.
22:12:25 <int-e> Zarutian: from a logical point of view there is no difference to normal multithreading (that's pretty much the point really).
22:12:51 <int-e> Zarutian: they are designed to improve total throughput.
22:12:55 -!- gamemanj has quit (Ping timeout: 244 seconds).
22:13:07 <int-e> they will slow down individual threads (hopefully only slightly)
22:14:08 <Zarutian> int-e: total throughbut yes, overall slowdown much more noticable. (At least in soft-hard realtime applications such as interactive A/V processing)
22:15:48 <int-e> it's application specific. I care a lot about make -j wallclock time and then hyperthreading is actually a good thing
22:17:51 <int-e> and in principle a kernel could reserve a whole core for realtime threads (reducing latencies) and use hyperthreading for batch threads (improving throughput). Is that done?
22:17:54 <Zarutian> isnt make mostly IO bound and that to mass storage?
22:18:26 <int-e> It depends. Recompiling stuff (after editing a file) tends to be served from the fs cache.
22:18:29 <Zarutian> int-e: I think hyperthreading is just turned on by default without any regard of this issues.
22:18:34 <Jafet> make is mostly the-build-tools-it-runs-bound.
22:19:30 <int-e> I'm mainly talking about make because it's what I use for parallelization of those other tools.
22:20:03 <Jafet> linux probably assumes that people who set up real-time systems know how to pin them to cpus.
22:20:51 <Jafet> and how to come up with scheduling priorities that don't lock up the whole system.
22:34:03 -!- byteflame has quit (Ping timeout: 240 seconds).
22:38:34 -!- Jafet has quit (Quit: Jafet).
22:39:19 -!- augur has quit (Remote host closed the connection).
22:39:52 -!- augur has joined.
22:41:14 -!- MoALTz has quit (Quit: Leaving).
22:42:52 -!- moon___ has joined.
22:42:56 <moon___> 76.1.72.128 at port 5138 << little telnet based chat im working on, it already has nicknames and so far only one bug i can find which might just be microsoft telnet being wierd
22:44:42 <myname> irc already is a little telnet based chat
22:44:53 -!- augur has quit (Ping timeout: 258 seconds).
22:45:09 <moon___> ik lol, im just writing it for fun
22:59:16 -!- moon___ has quit (Ping timeout: 250 seconds).
23:00:03 -!- Phantom_Hoover has joined.
23:00:23 <tswett> Here's a vague question.
23:00:28 <tswett> Suppose I have a group presentation.
23:00:38 <tswett> How can I write a nice machine-readable proof that the group it presents is finite?
23:01:19 -!- Sgeo__ has joined.
23:01:39 <tswett> There's a decision problem there, of course: given a group presentation, determine whether or not the presented group is finite.
23:01:56 <tswett> Is that decision problem even semidecidable in either direction?
23:02:24 <tswett> To prove that the group given by a presentation is finite, you can get part of the way by specifying a multiplication table for the group.
23:02:29 <int-e> "presentation" is the thing with generators and equations, right?
23:02:42 <tswett> It's easy to verify that the group given by the multiplication table has all the generators and satisfies all the equations.
23:03:06 <int-e> it's tempting to think that finiteness is semidecidable :P
23:03:13 <int-e> but probably wrong.
23:03:55 <tswett> I think I've got it. Yes, it's semidecidable.
23:04:11 <tswett> Suppose that the generated group is, in fact, finite. Then there's a proof that it's finite, consisting of...
23:04:22 <int-e> lots of equational proofs
23:04:44 <tswett> A multiplication table, where every element of the multiplication table is written in terms of the generators.
23:05:04 <int-e> I shouldn't have guessed wrong in the first place... from my theoretical background this should've been immediately obvious. lala
23:05:07 <tswett> Each generator must be present as one of the elements of the multiplication table.
23:05:27 <tswett> And finally, prove that each of the equations implied by the multiplication table follows from the presentation.
23:06:19 <tswett> That's not necessarily a very concise proof, though.
23:06:36 <int-e> but it settles the question
23:07:17 <tswett> But I'm wondering how to write a *nice* machine-readable proof that the generated group is finite.
23:09:36 <tswett> Here's a group presentation written in terse notation:
23:09:45 <tswett> Whoops, lemme try again.
23:10:41 <tswett> According to this page, that group presentation is for A5: https://en.wikipedia.org/wiki/Presentation_of_a_group
23:10:56 <tswett> But A5 has 60 elements.
23:11:05 <tswett> So its multiplication table has 3600 entries.
23:11:13 -!- moon__ has joined.
23:12:15 <tswett> What's a "nice" way, then, to prove that the generated group is finite?
23:16:04 <int-e> well, you can reduce the multiplication table size; you only need to be able to multiply by generators and their inverses
23:17:31 <tswett> Hmm. http://mathoverflow.net/questions/7721/what-methods-exist-to-prove-that-a-finitely-presented-group-is-finite
23:17:37 <int-e> or perhaps you can produce a complete list of suffixes that are each equivalent to a shorter one
23:17:57 <int-e> and then I'd investigate (Knuth-Bendix) completion in this context
23:18:37 <int-e> (hmm, prefixes are conceptually easier)
23:19:50 <int-e> (I had not looked at the link when I suggested Knuth-Bendix completion)
23:21:48 <int-e> I guess the main point of doing completion would be to actually find equational proofs.
23:21:52 <tswett> https://en.wikipedia.org/wiki/Tietze_transformations - maybe you could prove that a group is finite by using Tietze transformations to turn its presentation into one that's "obviously" finite.
23:23:06 <tswett> Are there any finitely presented groups which are infinite, but where every element has finite order?
23:28:09 -!- augur has joined.
23:29:05 -!- boily has joined.
23:34:23 <lambdabot> quintopia said 3h 1m 20s ago: USPS is chatting with Postes Canada to find out why this package was returned to me. They'll get back to me by Sep. 8. Is this too long to wait for redress y/n?
23:34:35 <HackEgo> hockey//Hockey is okey, but parsley is gharsley.
23:35:08 <tswett> I guess one "easy" way to prove that a finitely presented group is finite is by showing that every expression longer than a certain length is equivalent to a shorter one.
23:35:30 <boily> @tell quintopia quinthellopia. I'll be on vacation between September 3 and September 18 inclusive. Like, really on vacation. Like, on another continent. If you could resend after that, that'd be great. I'll be home at that time.
23:36:15 <tswett> Like, consider this group presentation in terse notation:
23:36:39 <tswett> It's a group presentation.
23:36:44 <int-e> tswett: I think I pretty much suggested this
23:36:47 <quintopia> helloily. if you'd rather pick it up in person, come meet me at niagara falls on october 9th...
23:37:19 <tswett> Every expression for that group presentation contains one of these four subexpressions: aa, aa', a'a, a'a'
23:37:25 <tswett> Each of which is equivalent to e.
23:37:26 <boily> niagara falls is what... 9 hours from here?
23:38:09 <quintopia> probs. but it's at least twice that from here, so i'm doing most of the work here. besides, i'll be there anyway :P
23:38:18 <boily> which is a good argument :D
23:38:47 <tswett> Man, this is turning out to be a bit of a tricky problem.
23:38:57 <tswett> Here's a different problem...
23:40:15 <quintopia> istm that "group presentation" doesn't have its usual meaning here...
23:41:10 <tswett> Prove that the additive group of the integers (characterized as the initial ring) is freely generated by 1.
23:41:12 <int-e> quintopia: aa means aa = e, or a = a^-1.
23:41:43 <int-e> as an abelian group?
23:42:04 <int-e> it's cyclic anyway
23:42:17 <tswett> That the additive abelian group of the integers is the abelian group freely generated by 1.
23:42:45 <quintopia> int-e: very different from a group of people working together to research, organize, and present, in speech form, some information to a larger group
23:43:12 <int-e> quintopia: AH, that didn't occur to me at all, thanks
23:43:34 <int-e> quintopia: so what does "m" in "istm" stand for?
23:43:59 <int-e> oh. "it", not "I".
23:44:23 <int-e> That's where I went wrong. (mislead by "istr")
23:44:52 <quintopia> that's what 4la's are for: mizzling
23:47:22 <int-e> "if I may believe"
23:55:16 -!- myname has quit (Ping timeout: 250 seconds).