←2016-03-05 2016-03-06 2016-03-07→ ↑2016 ↑all
00:00:14 <oerjan> `culprits wisdom/angband
00:00:20 <HackEgo> b_jonas
00:02:14 <oerjan> `culprits wisdom/utumno
00:02:16 <HackEgo> b_jonas
00:04:29 <b_jonas> `culprits orodruin
00:04:31 <HackEgo> No output.
00:04:43 <b_jonas> `culprits wisdom/orodruin
00:04:45 <HackEgo> b_jonas b_jonas
00:10:16 <b_jonas> `learn Horn is the reduction system behind prolog, and also the magical body part growing on the head of unicorns.
00:10:18 <HackEgo> Learned 'horn': Horn is the reduction system behind prolog, and also the magical body part growing on the head of unicorns.
00:12:03 <oerjan> `` ls wisdom/enr*
00:12:04 <HackEgo> wisdom/enrichment center \ wisdom/enrichment centre
00:12:24 <oerjan> `` sed -i 's/center/Center/' wisdom/enr*
00:12:27 <HackEgo> No output.
00:12:58 <oerjan> `` sed i 's/prolog/Prolog/' wisdom/horn
00:12:58 <HackEgo> sed: -e expression #1, char 1: expected \ after `a', `c' or `i'
00:13:04 <oerjan> `` sed -i 's/prolog/Prolog/' wisdom/horn
00:13:06 <HackEgo> No output.
00:13:08 <oerjan> fnord.
00:13:40 <b_jonas> `? horn
00:13:41 <HackEgo> Horn is the reduction system behind Prolog, and also the magical body part growing on the head of unicorns.
00:13:56 <b_jonas> ``` head wi*/enr*
00:13:57 <HackEgo> ​==> wisdom/enrichment center <== \ The Enrichment Center regrets to inform you that this next test is impossible. \ \ ==> wisdom/enrichment centre <== \ The Enrichment Center regrets to inform you that this next test is impossible.
00:14:27 <b_jonas> `? char
00:14:28 <HackEgo> char? ¯\(°​_o)/¯
00:14:55 <b_jonas> `? long
00:14:55 <HackEgo> long? ¯\(°​_o)/¯
00:15:04 <b_jonas> `? irc
00:15:05 <HackEgo> IRC is short for "Internet Relay Chat". It is named so because all the servers are constructed from relays.
00:15:22 <oerjan> `learn Char is a prominent component of charcoal.
00:15:24 <HackEgo> Learned 'char': Char is a prominent component of charcoal.
00:15:39 <oerjan> `learn Long is the Chinese word for dragon.
00:15:41 <HackEgo> Learned 'long': Long is the Chinese word for dragon.
00:16:02 <b_jonas> oh, is long double a chinese word for a multi-headed dragon then?
00:16:12 <oerjan> sounds plausible
00:16:21 <b_jonas> and how about long long?
00:16:38 <b_jonas> `? auto
00:16:39 <HackEgo> auto? ¯\(°​_o)/¯
00:16:40 <oerjan> except for -bl- being pretty much impossible phonologically.
00:16:54 <b_jonas> `? constexpr
00:16:55 <HackEgo> constexpr? ¯\(°​_o)/¯
00:17:03 <b_jonas> `? zkstr
00:17:04 <HackEgo> zkstr? ¯\(°​_o)/¯
00:17:36 <oerjan> `learn Auto is the German word for car.
00:17:38 <HackEgo> Learned 'auto': Auto is the German word for car.
00:18:13 <oerjan> `learn Zkstr is Georgian for "Ow my tongue!"
00:18:17 <HackEgo> Learned 'zkstr': Zkstr is Georgian for "Ow my tongue!"
00:18:36 <oerjan> actually it might just be czech.
00:18:46 <oerjan> `learn Zkstr is Czech for "Ow my tongue!"
00:18:49 <HackEgo> Learned 'zkstr': Zkstr is Czech for "Ow my tongue!"
00:18:57 <b_jonas> NO! wait
00:19:04 <b_jonas> I wanted to add one for zkstr
00:19:23 <oerjan> GO AHEAD
00:20:05 -!- hppavilion[1] has joined.
00:20:51 <b_jonas> `learn zkstr is a common consonent cluster at the start of Russian words, see eg. http://www.math.bme.hu/~ambrus/pu/metro-typo-2
00:20:53 <HackEgo> Learned 'zkstr': zkstr is a common consonent cluster at the start of Russian words, see eg. http://www.math.bme.hu/~ambrus/pu/metro-typo-2
00:21:18 <oerjan> `` sed -i 's/nent/nant/' wisdom/zkstr
00:21:21 <HackEgo> No output.
00:21:41 <zgrep> Hahah, zkstr. :D
00:22:12 <oerjan> b_jonas: is that meant to be rotated that way
00:22:23 <b_jonas> oerjan: no, I was probably just lazy to unrotate it
00:22:37 <zgrep> oerjan: No, you're just experiencing life sideways.
00:22:43 <zzo38> ZWSTR is something else though, compared with zkstr, I suppose
00:22:55 <b_jonas> oerjan: the actual sign is upright
00:23:07 <zgrep> oerjan: https://xkcd.com/417/
00:23:54 <zzo38> ZWSTR is Z-machine character packing.
00:24:18 <b_jonas> zzo38: oh! it sounded like a macro from <windows.h> related to wide character strings
00:24:22 <oerjan> b_jonas: i take it it's э typoed as з
00:24:26 <b_jonas> oerjan: yes
00:24:31 <b_jonas> oerjan: there's also another typo on the same sign
00:24:57 <boily> `? int
00:24:59 <HackEgo> int? ¯\(°​_o)/¯
00:25:07 <b_jonas> let me unrotate it though
00:25:23 <boily> oerjan: what should be an int?
00:25:39 <hppavilion[1]> I'm on, lambdabot
00:25:45 <hppavilion[1]> Ah, no new messages
00:25:50 <zgrep> boily: A double.
00:25:58 <boily> hppavellon[1].
00:26:01 <boily> zgrellop. eh?
00:26:10 <hppavilion[1]> ahoily
00:27:28 <hppavilion[1]> Emojicode is kind of stupid
00:27:44 <hppavilion[1]> It just treats emoji as a special kind of name, like a noob
00:27:45 <zgrep> boily: That's what should be an int.
00:28:55 <oerjan> <boily> oerjan: what should be an int? <-- i dunno
00:29:24 <boily> zgrep: but a double is fundamentally different from an int! it's just wrong to conflagrate them together.
00:29:26 * boily shudders
00:29:32 <b_jonas> done: rotated, also made smaller
00:31:04 <oerjan> b_jonas: well if there's another typo, i don't know enough of the language to see it.
00:31:05 <zgrep> boily: It's wrong to large and destructive fire them together?
00:32:09 <zgrep> Though I see your point. Perhaps 4. 4 is meant to be an int.
00:32:13 <boily> `` ls wisdom/conf*
00:32:14 <HackEgo> ls: cannot access wisdom/conf*: No such file or directory
00:32:23 <boily> ...?
00:32:31 <boily> `` ls wisdom/con*
00:32:32 <HackEgo> wisdom/conspirabiology \ wisdom/context
00:32:40 <boily> where was it again...
00:32:45 <boily> `? szoup
00:32:46 <HackEgo> A szoup a szilárd tápszereknek híg alakban való elkészítése a célból, hogy könnyebben emészthetők legyenek; a hígító anyag a viz, mely feloldja s magába veszi a tápanyag legértékesebb részeit.
00:33:16 <oerjan> b_jonas: i suspect "secour" might not be correct
00:33:55 <b_jonas> oerjan: yes
00:34:46 <boily> zgrep: found it! ↓
00:34:50 <boily> `? disflagrate
00:34:52 <HackEgo> disflagrate v.t.perf.: a traditional technique from Poland (earliest attestation c. 1042) used to separate szoups. Nowadays, commercial production is entirely mechanized.
00:35:13 <boily> ints and doubles should be disflagrated.
00:35:28 <boily> 4 is an int. fungot is a double.
00:35:28 <fungot> boily: you obviously aren't sufficiently infused with the red ip packets. but that's ok, i won't even be done. thanks, folks,
00:35:58 * zgrep gives boily some extra red IP packets to infuse themselves with
00:36:27 <b_jonas> don't forget the blue screws if anything happens
00:36:39 <b_jonas> `? elephant
00:36:40 <HackEgo> elephant? ¯\(°​_o)/¯
00:36:40 <b_jonas> `? seal
00:36:41 <HackEgo> seal? ¯\(°​_o)/¯
00:36:49 <b_jonas> `? tail
00:36:50 <HackEgo> tail? ¯\(°​_o)/¯
00:36:50 <b_jonas> `? head
00:36:51 <HackEgo> head? ¯\(°​_o)/¯
00:36:52 <zgrep> `? elephant seal
00:36:53 <HackEgo> elephant seal? ¯\(°​_o)/¯
00:37:00 <b_jonas> `? unicorn
00:37:01 <HackEgo> unicorn? ¯\(°​_o)/¯
00:37:03 <b_jonas> `? pony
00:37:04 <HackEgo> pony? ¯\(°​_o)/¯
00:37:07 <b_jonas> oh man
00:37:15 <zgrep> `? ?`
00:37:16 <HackEgo> ​?`? ¯\(°​_o)/¯
00:37:26 <b_jonas> `? bill
00:37:27 <HackEgo> bill? ¯\(°​_o)/¯
00:37:27 <b_jonas> `? coin
00:37:28 <HackEgo> coin? ¯\(°​_o)/¯
00:37:32 <b_jonas> `coin
00:37:33 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: coin: not found
00:37:34 <b_jonas> `coins
00:37:40 <boily> if I ever write or contribute to a roguelike, there'll be a Red Ip Infusion. it'll make you mutate into a fungotlike creature.
00:37:40 <fungot> boily: however, gives me a couple of large mailing lists have you noticed that ordinarily reasonably people these days...
00:37:52 <boily> b_jonas: you should http://codu.org/projects/hackbot/fshg/index.cgi/file/d4b6d8a299e9/wisdom hth
00:38:02 <HackEgo> epipcoin relycoin fronncoin rutcndejxcoin verservocoin alcecoin lazycoin (())coin retercardcoin yabecoin hackicoin vercoin ranslawcoin coropiccoin exisablecoin rocerylovcoin fannahcoin whitethattcoin novicoin pogancoin
00:38:22 <Lymia> ais523, I might try to write my "ultimate solution" for BFJoust again.
00:38:29 <b_jonas> `? pdp endian
00:38:32 <b_jonas> `? endian
00:38:33 <HackEgo> pdp endian? ¯\(°​_o)/¯
00:38:33 <HackEgo> endian? ¯\(°​_o)/¯
00:38:43 <b_jonas> Lymia: good luck for that :-)
00:38:51 <b_jonas> `? bswap
00:38:51 <Lymia> Ultimately, BFJoust programs are deterministic.
00:38:52 <HackEgo> bswap? ¯\(°​_o)/¯
00:38:52 <Lymia> :)
00:39:58 <oerjan> `? php endian
00:39:59 <HackEgo> php endian? ¯\(°​_o)/¯
00:40:24 <zgrep> `? oerjan
00:40:26 <HackEgo> Your famous mysterious evil overlord oerjan is a lazy expert in future computation. Also an antediluvian Norwegian who mildly dislikes Roald Dahl. He can never remember the word "amortized" so he put it here for convenience. His arch-nemesis is Betty Crocker.
00:40:44 <zgrep> Huh.
00:40:45 <zzo38> I intend also making up some roguelike game. Some of my ideas include that the stairs can only go one way, that different kind of character configurations have different high score menus, and that you can switch the display between ASCII and VT100 mode (so that you can use ASCII mode when you want to print or put in a text file or webpage or whatever when VT100 is not supported)
00:40:57 <zzo38> Possibly can be written in JavaScript.
00:41:44 <oerjan> `? submarine
00:41:45 <HackEgo> submarine is the same as suburban... except for bodies of ocean water instead of cities.
00:41:59 <oerjan> `` sed -i 's/s/S/' wisdom/submarine
00:42:02 <HackEgo> No output.
00:42:27 <zzo38> Do you like these ideas? In the original "Rogue" game, the stairs can only go one way (even though the commands for stairs go both ways)
00:42:37 <oerjan> zgrep: you think php endian is overdoing the evil?
00:42:39 <\oren\> haagen dazs has a special limited edition peppermint white chocolate flavor
00:43:02 <boily> zzo38: one way stairs are nice. not sure about what you mean by high score menus?
00:45:06 <oerjan> `culprits wisdom/elendil
00:45:09 <HackEgo> b_jonas b_jonas b_jonas b_jonas
00:45:29 <shachaf> `wisdom
00:45:31 <HackEgo> russell's teapot/Russell's Teapot / Short and stout / Orbits near Mars / Or thereabout. / If you see it / Let us know / If you don't / What does that show?
00:45:44 * oerjan tempted to change `learn etc. to say whether the file was previously existing. except that would be work.
00:46:06 <shachaf> `url bin/learn
00:46:08 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/bin/learn
00:46:15 -!- tromp_ has quit (Read error: Connection reset by peer).
00:46:40 -!- tromp_ has joined.
00:46:53 <zzo38> boily: I mean once the game end it calculate the score (based on what dungeon level you reached as well as other things) and then add it to the high score menu in the proper position, but you can add separate high score menu also for different kind of player characters, since they can involve different tactics, special abilities, carrying capacity, and so on
00:47:32 <shachaf> oerjan: All the work is editing through this scow HackEgo interface.
00:47:38 <boily> zzo38: makes sense tdh
00:48:51 <\oren\> shachaf: couldn't you just edit it offline and then make a patchfile?
00:48:59 <shachaf> And then what?
00:49:07 <oerjan> `culprits wisdom/elrond
00:49:10 <HackEgo> prooftechnique prooftechnique
00:49:11 <\oren\> and then use patch
00:49:57 <oerjan> you don't need patch, just `fetch and cp
00:50:38 <shachaf> If you ahve `fetch then you don't need patch.
00:50:43 <shachaf> Does `fetch work?
00:50:46 <oerjan> yes.
00:50:55 <shachaf> Was it broken in the past?
00:51:03 <oerjan> not that i recall
00:51:38 <oerjan> it's wget/curl etc. that are broken because they're inside the sandbox
00:52:40 <shachaf> Ah.
00:53:48 <shachaf> `` echo $'3i\n[ -e "wisdom/$topic" ] && verb="Learned" || verb="Relearned"\n.\n5s/Learned/$verb/\nw\n' | ed bin/learn
00:53:51 <HackEgo> 148 \ 207
00:54:37 <shachaf> oerjan: please test twh
00:54:48 <oerjan> `cat bin/learn
00:54:49 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\?[:;,.!?]\? .*//') \ [ -e "wisdom/$topic" ] && verb="Learned" || verb="Relearned" \ echo "$1" >"wisdom/$topic" \ echo "$verb '$topic': $1"
00:55:17 <oerjan> `? test
00:55:18 <HackEgo> test failed. HackEgo-JUnit is not available.
00:55:27 <oerjan> `? testing
00:55:28 <HackEgo> testing? ¯\(°​_o)/¯
00:55:36 <oerjan> `learn Testing is expensive.
00:55:41 <HackEgo> Relearned 'testing': Testing is expensive.
00:55:47 <oerjan> `learn Testing is expensive and overrated.
00:55:47 <shachaf> Oops.
00:55:49 <HackEgo> Learned 'testing': Testing is expensive and overrated.
00:55:53 <shachaf> I guess I mixed them up.
00:55:57 <oerjan> BIT OF A SWITCH
00:56:00 <boily> testing is definitely overrated.
00:58:35 <shachaf> I guess you're waiting for me to fix it.
00:58:54 <oerjan> also wondering how you swap two words with sed
00:59:00 <shachaf> I was also wondering.
00:59:10 <shachaf> I'll just cheat.
00:59:12 <shachaf> `` echo $'3s/Relearned/Learned/\n3s/Learned/Relearned/\nw\n' | ed bin/learn
00:59:14 <HackEgo> 207 \ 207 \ echo "$1" >"wisdom/$topic"
00:59:26 <shachaf> `cat bin/learn
00:59:26 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\?[:;,.!?]\? .*//') \ [ -e "wisdom/$topic" ] && verb="Relearned" || verb="Learned" \ echo "$1" >"wisdom/$topic" \ echo "$verb '$topic': $1"
00:59:54 <oerjan> ...how did that work.
01:00:01 <oerjan> oh.
01:00:04 <shachaf> s/// only switches the first occurrence without /g
01:00:33 <oerjan> `learn Testing is expensive, overrated and annoying.
01:00:36 <HackEgo> Relearned 'testing': Testing is expensive, overrated and annoying.
01:00:44 <oerjan> `forget testing
01:00:46 <HackEgo> Forget what?
01:00:54 <oerjan> `learn Testing might eventually succeed.
01:00:57 <HackEgo> Learned 'testing': Testing might eventually succeed.
01:02:03 <shachaf> oerjan: now that wasn't so hard was it
01:02:12 * oerjan presents shachaf with the Delegate of the Month award (in pewter)
01:02:25 <shachaf> oerjan: what, you think this was free?
01:02:27 <shachaf> you owe me one now
01:03:00 <shachaf> What I want is a script that looks at the hg log and tells you what the last file that was modified was.
01:03:34 <oerjan> `` hg --help | paste
01:03:39 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/paste/paste.20546
01:04:12 <shachaf> By the way, someone (b_jonas?) figured out a way easier way to do `culprits.
01:04:18 <shachaf> Since you can give hg log a format argument.
01:04:34 <Lymia> hrm.
01:04:40 <oerjan> `` hg log --help | paste
01:04:43 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/paste/paste.16400
01:07:03 <ais523> `unidecode -
01:07:04 <HackEgo> ​[U+002D HYPHEN-MINUS]
01:07:11 <ais523> `unicode FIGURE DASH
01:07:12 <HackEgo> ​‒
01:08:55 <oerjan> `` hg log -l 1
01:08:57 <HackEgo> changeset: 7127:4f71d933f13e \ tag: tip \ user: HackBot \ date: Sun Mar 06 01:04:25 2016 +0000 \ summary: <oerjan> ` hg log --help | paste
01:09:16 <shachaf> `` hg log -l 1 --template "{files}\n"
01:09:17 <HackEgo> paste/paste.16400
01:09:22 <shachaf> thx tdh
01:10:02 <oerjan> `mkx bin/lastfiles//hg log -l 1 --template "{files}\n"
01:10:06 <HackEgo> bin/lastfiles
01:10:10 <oerjan> `lastfiles
01:10:13 <HackEgo> bin/lastfiles
01:10:51 <oerjan> `` echo test >a; echo test >b
01:10:54 <HackEgo> No output.
01:10:55 <oerjan> `lastfiles
01:10:57 <HackEgo> a b
01:11:20 <oerjan> `rm a b
01:11:21 <HackEgo> rm: cannot remove `a b': No such file or directory
01:11:24 <oerjan> `` rm a b
01:11:26 <HackEgo> No output.
01:11:35 <oerjan> `culprits a; culprits b
01:11:37 <HackEgo> No output.
01:11:49 <oerjan> wat
01:11:52 <shachaf> oerjan: fool me twice -- you can't get fooled again
01:11:55 <oerjan> `culprits a
01:11:57 <HackEgo> oerjan oerjan oerjan int-e fizzie oerjan elliott blotter guestbot guestbot ThatOtherPerson ThatOtherPerson
01:12:06 <oerjan> oops
01:12:10 <oerjan> `culprits b
01:12:12 <HackEgo> oerjan oerjan oerjan Jafet
01:12:20 <oerjan> darn
01:13:06 <oerjan> ok they weren't already existing
01:16:41 <shachaf> oerjan: ok now write something useful with it
01:16:44 <oerjan> hm i think the repository browser has changed, now it autoloads more commits when i get to the end
01:17:01 <shachaf> like a command that lets you sed or rele/rn the lastfile
01:18:43 <oerjan> >_>
01:18:52 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
01:21:36 -!- augur has joined.
01:22:08 <Lymia> I should
01:22:24 <Lymia> Integrate a few more clever strategies into Nyuroki
01:22:31 <Lymia> Some optimization can be done.
01:31:16 -!- mad has joined.
01:38:26 <oerjan> `? guard
01:38:27 <HackEgo> The guards are immune to electricity. They're humans in rubber pig suits. They're insulated.
01:38:40 <oerjan> `` sed -i 's/ / /g' wisdom/guard
01:38:42 <HackEgo> No output.
01:47:12 <Lymia> !ztest nyuroki http://paste.lymia.moe/lymia/ee20dff3277b873dc9db288ed94d0a7a234da3c7.bf
01:47:14 <zemhill> Lymia: URL fetch problems: redirection forbidden: http://paste.lymia.moe/lymia/ee20dff3277b873dc9db288ed94d0a7a234da3c7.bf -> https://paste.lymia.moe/lymia/ee20dff3277b873dc9db288ed94d0a7a234da3c7.bf
01:47:21 <Lymia> !ztest nyuroki https://paste.lymia.moe/lymia/ee20dff3277b873dc9db288ed94d0a7a234da3c7.bf
01:47:23 <zemhill> Lymia.nyuroki: points 9.07, score 30.37, rank 6/47 (-3)
01:48:44 <Lymia> !ztest nyuroki https://paste.lymia.moe/lymia/6412212ffb16b73f794dd3618505fc2327197571.bf
01:48:45 <zemhill> Lymia.nyuroki: points 9.07, score 30.37, rank 6/47 (-3)
01:49:04 <Lymia> !ztest nyuroki https://raw.githubusercontent.com/Lymia/JoustExt/master/examples/nyuroki-esoteric.bf
01:49:04 <zemhill> Lymia.nyuroki: points 13.43, score 37.40, rank 3/47 (--)
01:49:54 <Lymia> !ztest nyuroki https://paste.lymia.moe/lymia/5a0374d9319002dc5622e6b104165f08dc6964e2.bf
01:49:55 <zemhill> Lymia.nyuroki: points 13.48, score 37.49, rank 3/47 (--)
01:50:19 <Lymia> !ztest nyuroki https://paste.lymia.moe/lymia/43bd79e53928002bf3d7aab81586842ea19bb80d.bf
01:50:20 <zemhill> Lymia.nyuroki: points 13.45, score 37.30, rank 3/47 (--)
01:51:09 -!- cyyyyyyyyy has joined.
01:51:18 -!- cyyyyyyyyy has left.
01:52:45 <Lymia> !ztest nyuroki https://paste.lymia.moe/lymia/afef3d2374d3eb83d7c2066ede331d7c3c500b9d.bf
01:52:47 <zemhill> Lymia.nyuroki: points 10.50, score 32.55, rank 6/47 (-3)
01:53:19 <mad> oh man
01:53:25 <mad> craziest cpu idea yet
01:54:08 <mad> memory addresses are remaped in chunks of 4k according to a page table
01:54:16 <mad> (this is how a standard mmu works)
01:54:22 <mad> but only for data, not instructions
01:57:40 <Lymia> !ztest nyuroki https://paste.lymia.moe/lymia/d1bb3b65edb4bbbc3853214c80ed371b7eb0a039.bf
01:57:43 <zemhill> Lymia.nyuroki: points 13.36, score 37.16, rank 3/47 (--)
01:58:13 <Lymia> !ztest nyuroki https://paste.lymia.moe/lymia/fa117cd7cf6ea372d1b3b3ef49417ae9803a6c1c.bf
01:58:15 <zemhill> Lymia.nyuroki: points 12.86, score 36.50, rank 3/47 (--)
01:58:52 <Lymia> bleh
01:58:55 <Lymia> going to PM
02:00:18 -!- AlexR42 has joined.
02:04:43 -!- augur has quit (Remote host closed the connection).
02:10:26 <Lymia> Apparently a lot of people abused the size of my wiggle clear.
02:10:30 <Lymia> Er, offset clear*
02:12:08 -!- hppavilion[1] has joined.
02:12:48 <prooftechnique> mad: And what does that get you?
02:13:25 -!- PinealGlandOptic has joined.
02:22:48 <mad> it takes one less TLB on the chip... I guess
02:40:42 <ais523> Lymia: programs tend to special-case against good programs accidentally
02:40:47 <ais523> as people experiment with values to see what happens
02:41:01 <ais523> you beat the worse programs anyway, so the constants tend to match up well against the better ones
02:54:35 -!- Phantom_Hoover has joined.
02:58:32 -!- idris-bot has quit (Quit: Terminated).
02:58:52 -!- idris-bot has joined.
03:02:28 <boily> @metar CYQB
03:02:29 <lambdabot> CYQB 060200Z 17004KT 15SM SCT054 M09/M16 A3018 RMK SC3 SLP228
03:04:08 <shachaf> `le//rn te/st//Directories are expensive.
03:04:11 <HackEgo> Learned «te/st»
03:04:18 <shachaf> `lastfiles
03:04:20 <HackEgo> wisdom/te/st
03:04:26 <shachaf> whoa whoa whoa
03:04:35 <shachaf> I was thinking that wouldn't work as intended.
03:04:50 <shachaf> `` rm wisdom/te/st; rmdir wisdom/te
03:04:52 <HackEgo> No output.
03:04:58 <shachaf> oerjan thinks of everything
03:05:44 -!- Phantom_Hoover has quit (Read error: Connection reset by peer).
03:05:57 <Lymia> !zhill nyuroki https://raw.githubusercontent.com/Lymia/JoustExt/master/examples/nyuroki-esoteric.bf
03:06:02 <boily> @metar CYQB
03:06:03 <lambdabot> CYQB 060200Z 17004KT 15SM SCT054 M09/M16 A3018 RMK SC3 SLP228
03:06:13 <boily> argh. I want my new metar!
03:06:31 <boily> meanwhile, just done playing my first game of Ashes. quite a good game!
03:06:40 <Lymia> !zjoust nyuroki https://raw.githubusercontent.com/Lymia/JoustExt/master/examples/nyuroki-esoteric.bf
03:06:40 <zemhill> Lymia.nyuroki: points 18.79, score 49.46, rank 2/47 (+1)
03:08:06 -!- Alejandro15 has joined.
03:08:44 <boily> Alejandro15: buenas tardes.
03:08:56 <boily> @metar CYQB
03:08:56 <lambdabot> CYQB 060300Z 18003KT 15SM BKN048 M08/M16 A3017 RMK SC7 SLP225
03:09:17 <oerjan> <shachaf> oerjan thinks of everything <-- well, there's an obvious weakness remaining.
03:09:44 <shachaf> Which weakness?
03:09:57 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
03:10:18 <Alejandro15> como esta boily
03:10:40 <oerjan> you cannot distinguish a commit that creates several files from one that creates a file with spaces in its name
03:11:10 <shachaf> Oh, it's space-separated.
03:11:15 <shachaf> The newline terminates commits.
03:11:27 <oerjan> *edits
03:11:28 <shachaf> `bienvenido Alejandro15
03:11:30 <HackEgo> Alejandro15: ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/. (Para el otro tipo de esoterismo, prueba #esoteric en EFnet o DALnet.)
03:12:35 <boily> Alejandro15: un poco cansado... ¿y tu?
03:12:50 <Lymia> !bfjoust nyuroki https://raw.githubusercontent.com/Lymia/JoustExt/master/examples/nyuroki-esoteric.bf
03:12:53 <EgoBot> ​Score for Lymia_nyuroki: 6.4
03:12:55 <Lymia> Is that bot still alive
03:12:56 <ais523> congrats Lymia, just saw you move up to #2
03:13:02 <Alejandro15> bien
03:13:07 <Lymia> ... wut
03:13:10 <boily> Alejandro15: ¿eres de venezuela?
03:13:30 <Lymia> uuh
03:13:42 <Lymia> !bfjoust nyuroki http://raw.githubusercontent.com/Lymia/JoustExt/master/examples/nyuroki-esoteric.bf
03:13:45 <EgoBot> ​Score for Lymia_nyuroki: 6.3
03:13:50 <Lymia> halp
03:14:24 <oerjan> Lymia: what's the problem? EgoBot's unhalpful output?
03:14:29 <ais523> Lymia: hmm, the report is contradicting the breakdown
03:14:32 <Alejandro15> si
03:14:34 <oerjan> !help bfjoust
03:14:34 <EgoBot> ​Sorry, I have no help for bfjoust!
03:14:43 <Lymia> egobot thinks my program is -
03:14:48 <oerjan> !bfjoust
03:14:48 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
03:14:50 <ais523> or, hmm, perhaps not
03:14:53 <ais523> probably a parse error
03:14:56 <Lymia> !bfjoust nyuroki http://pastebin.com/raw/b0MEJFpT
03:14:59 <EgoBot> ​Score for Lymia_nyuroki: 52.6
03:15:02 <Lymia> There we go
03:15:04 <ais523> Lymia: aha, it must have parsed the hyphen in the URL
03:15:13 <ais523> congrats on #1 :-)
03:15:26 <boily> Alejandro15: discúlpeme, no sé hablar español muy bien... mi lengua materna es el francés.
03:15:46 -!- Alejandro15 has left.
03:15:54 <Lymia> Isn't that hill fish in a barrel :p
03:15:55 <boily> beuh...
03:16:01 <boily> oerjan: at least, he spoke!
03:16:31 <ais523> did you change the strategy significantly? or did you just tweak numbers?
03:17:03 <oerjan> boily: good show
03:17:22 <ais523> I guess if it was a large change you'd probably change the name
03:17:32 <Lymia> Mostly tweaked numbers.
03:17:36 <ais523> margins3 is similar to margins, but it's also different in a lot of major ways (e.g. it does a fast rush on short tapes)
03:17:40 <Lymia> It also leaves a trail always now, not only on cells it cleared
03:18:06 <Lymia> By "tweaked numbers", I mean "tweaked a single number".
03:18:47 <boily> oerjan: just you wait. he'll be back. (probably against his own volition; I wouldn't be surprised there's a default autojoin list for his client)
03:19:29 <Lymia> I might try a defense program next, maybe?
03:19:55 <ais523> it'll be hard, but perhaps possible
03:20:07 <ais523> one of the codepaths in margins3 runs purely against defence programs
03:20:20 <ais523> and it was hard to beat them all even though I knew for a fact the opponent was defence and/or very slow
03:20:44 -!- augur has joined.
03:20:44 <ais523> there's a bit of the code that runs only if the opponent is actively adjusting the current cell, and winning in all situations from there is painful
03:21:10 <ais523> in the end I did the same thing as in preparation except 3- rather than 2-cycle, it works quite well
03:21:25 <shachaf> whoa whoa whoa, in Chu spaces you have points : 1 -> A and copoints : A -> _|_
03:21:28 <shachaf> That's so reasonable.
03:21:29 <Lymia> How's that bit of code work anyway?
03:22:00 <Lymia> In Nyuroki, anything complex I tried worked worse than the dead simple thing I do.
03:22:04 -!- lynn has quit (Ping timeout: 260 seconds).
03:22:23 <ais523> Lymia: which bit of the code? defence detection? defence clear?
03:22:39 <Lymia> Clearing versus something that's actively changing its flag.
03:22:57 <ais523> oh, I just set the cell I'm on to all 256 possible values
03:23:05 <ais523> if it doesn't hit zero there are shenanigans going on
03:23:32 <\oren\> AUGH
03:23:53 <\oren\> I pitched up too much and accidentally flew into space
03:24:19 <boily> \oren\: KSP?
03:24:40 <Lymia> ais523, I mean the code you called "golden ratio based clear"
03:24:48 <\oren\> yes
03:24:56 <Lymia> I definitely don't understand what it's doing.
03:25:12 <ais523> it's basically a normal clear loop but it changes polarity and/or direction every n cycles, where n is the length of time it naturally takes to clear a cell times the golden ratio
03:25:50 <ais523> this means that if the opponent is locking without changing the cell's value over time, I'm guaranteed to hit the pessimal value for the opposition eventually (as I try every polarity and position modulo the clear loop interval)
03:26:21 <ais523> and if the opponent is changing the value over time, I hit the pessimal starting value for the opposition eventually via starting at a different value each time
03:26:26 <ais523> in theory, at least
03:26:28 <Lymia> How do you lock and change the value over time?
03:26:45 <Lymia> I can't think of a smart way to achieve that.
03:27:09 <ais523> well, one simple lock algorithm is ((+)*128(.)*128)*-1
03:27:16 <ais523> that'll lock many sorts of two-cycle clear
03:27:24 <ais523> but it changes the value by +128 every 256 cycles
03:27:39 <Lymia> Presumably something like +((+)*128(.)*128)*-1?
03:27:55 <Lymia> I'd be worried about that bit of parity
03:28:07 <Lymia> Where there's some "starting values" where you kill yourself.
03:28:28 <ais523> oh, yes, you can't do that by itself
03:28:35 <ais523> only once you know the opponent is there, or if you adjust the flag first
03:28:43 <ais523> this is, assuming you're locking the flag
03:28:47 <ais523> there are two ways you can do locks
03:28:54 <ais523> on the flag, which has the advantage that the opponent might fall off
03:29:16 <ais523> or in front of the flag, which has the disadvantage that the opponent might fall through, but the advantage that if the cell's zeroed for two cycles (and the opponent doesn't spot it) you don't lose
03:29:51 <Lymia> Everything "smart" I tried for Nyuroki worked worse than the "brain dead" thing I do now.
03:29:59 -!- boily has quit (Quit: EVOCATIVE CHICKEN).
03:30:24 <Lymia> I check a cell twice before moving on to the next one, so I don't get bitten by something like (+)*127(-+)*-1
03:30:58 <Lymia> Then, in the actual clear loop, I do a 2-cycle clear for 1000 cycles, and if that fails, move on to a 5-cycle clear. If that fails, I just assume I'm not on the flag because apparently that works better.
03:32:47 <ais523> I tried something like that for margins3 first
03:32:59 <ais523> it sort-of worked but I could never get a clean sweep against defence programs
03:33:14 <ais523> there was always one that seemed to hold out (not necessarily the same one, although shudderlock was a big offender)
03:33:32 <Lymia> I never paid much attention to which programs did what. ^.^
03:33:36 <Lymia> But I guess I should look that up sometime.
03:33:41 -!- Alejandro15 has joined.
03:34:59 <Lymia> Maybe I should try to integrate that golden ratio clear myself sometime.
03:35:17 <ais523> it takes a lot of space in the program
03:35:33 <ais523> and I'm not even 100% sure it works mathematically, although it seems to work in practice
03:35:37 -!- Alejandro15 has left.
03:35:57 <Lymia> My first instinct is to do something with prime numbers personally
03:36:28 <ais523> well, 256 is coprime with everything that isn't a power of 2
03:37:20 <Lymia> My intuition was that if a clear cycle and a defense cycle had coprime lengths, you get every "alignment" between them eventually.
03:38:13 <Lymia> So, say, if there's an +- in a defense loop, and -+ in an clear loop with a length coprime to it, both would eventually execute at the same time. And they'd die.
03:38:41 <ais523> there are some defence loops that work against any integer-sized clear, with an appropriate alignment
03:38:58 <ais523> (+)*256(.)*256, for example, will lock [(.)*x+] for any x
03:39:08 -!- Alejandro15 has joined.
03:39:23 <Lymia> Even clears like, say, [-.-+]?
03:39:29 <ais523> err, that's less than 128, I think
03:40:40 <ais523> I think that won't be locked on the flag (it can get two zeroes), but will be locked elsewhere (the locking program can't detect two zeroes), so long as the cycles line up correctly
03:40:48 -!- Alejandro15 has left.
03:41:36 <Lymia> Right. So it'll work assuming you're actually on the flag. (and only then, unfortunately)
03:41:59 <ais523> this is the hardest part of attacking into defence programs
03:42:04 <Lymia> And if the defense loop doesn't have a factor of 5, I suppose.
03:42:06 <ais523> and is someting that margins exploits
03:42:23 <ais523> it uses a defence pattern that makes it impossible for the opponents to observe two zeroes in a row
03:42:35 <ais523> so eventually they have to take a leap of faith and move on
03:42:46 <ais523> at which point it shudders the flag in the hope that the opponent will do it again
03:43:13 -!- hppavilion[1] has joined.
03:46:42 -!- Alejandro15 has joined.
03:47:30 -!- Alejandro15 has left.
03:48:05 -!- lleu has quit (Read error: Connection reset by peer).
03:48:52 <Lymia> I had the idea that you could have a clear loop like [-.+.--++-++-] (length 13)
03:48:52 <Lymia> Since it does every possible 2 instruction sequence of cell changes, it should be able to clear (on the flag) any defense program with a coprime defense loop length.
03:48:52 <Lymia> But I'm not sure how practical it'd actuall be
03:48:53 <Lymia> actually*
03:48:54 <Lymia> ... being able to make it impossible to observe two zeros in a row is actually pretty nasty.
03:49:43 <Lymia> It means there's ultimately no safe option to attack.
03:50:09 <ais523> right
03:50:16 <ais523> however the downside for margins is that it also means that it can't attack itself
03:50:24 <ais523> it's devoting every cycle to merely drawing
03:51:00 <Lymia> Hrm.
03:51:04 <Lymia> I'd like to see an alternative hill
03:51:15 <Lymia> That counts a draw as both programs losing, maybe?
03:51:18 <Lymia> Does zim do that?
03:51:24 <Lymia> zem*
03:52:00 <ais523> egojoust is much more draw-hostile than zemhill
03:52:22 <ais523> I like draws not being penalised much, though, because it makes programs like margins (which aim to win short tapes and draw long ones) possible
03:52:42 <ais523> really, the tradeoffs margins needs to make just to aim for its draw means that its strategy isn't broken
03:52:54 <ais523> the fact that it's doing well is mostly a symptom of opponents not caring about short tapes
03:53:03 <ais523> which has been a trend in the BF Joust metagame for ages now
03:53:32 <Lymia> They don't?
03:53:32 <ais523> (most of your games will be on long tapes so those make sense to focus on)
03:53:45 <Lymia> I guess that also makes sense to explain why Nyuroki does well
03:54:02 <ais523> preparation sets ten decoys
03:54:07 <ais523> so it autoloses on tape length 10
03:54:10 <Lymia> If it sees any non-zero cell while setting decoys, it immediately jumps to the main clear.
03:54:38 <Lymia> Which, well.
03:54:47 <ais523> ooh, interesting
03:54:55 <ais523> I'm not sure I can think of a program that does that, but it makes a lot of sense
03:55:03 <Lymia> If it's a short tape, and the opponent is setting decoys, you've probably just bypassed their decoys.
03:55:08 <Lymia> And are on their flag while they're setting decoys.
03:55:11 <Lymia> Not a good look for them.
03:55:30 <ais523> do you set decoys forwards or backwards?
03:55:48 <Lymia> Backwards.
03:56:14 <ais523> so if the opponent's decoy setup is inside yours, you notice
03:56:16 <ais523> that's clever
03:57:59 <mad> ais523 : the other day you were asking for alternative cpu designs?
03:58:23 <mad> I have such a design : an out-of-order VLIW
03:58:39 <ais523> hmm
03:58:51 <ais523> is that just redundant, or does it have some advantage?
03:59:04 <mad> basically the front end is a VLIW where you fetch a whole instrction cache line every cycle
03:59:26 <mad> and "execute" it in one go
04:00:15 <mad> but the "execution" in one go is only the register renaming and scheduling to make the calculations runnable out-of-order
04:00:34 -!- oerjan has quit (Quit: Nite).
04:00:41 <ais523> ooh, I just noticed some old code that never runs got into margins3
04:00:43 <Lymia> ais523, right. Is that new(ish?)?
04:00:44 <mad> once the calculations are done, then the retirment is also 1 large op per cycle
04:00:57 <mad> the op format is weird:
04:01:06 <Lymia> I thought checking before planting decoys was something others have done before.
04:01:35 <mad> each VLIW bundle takes up 16 bytes and has 8 micro-ops in it
04:01:41 <ais523> Lymia: that's today's winner
04:02:17 <Lymia> I've also got a shameless piece of metagaming
04:02:22 <ais523> !bfjoust margins3 http://nethack4.org/esolangs/margins3.bfjoust
04:02:27 <EgoBot> ​Score for ais523_margins3: 24.2
04:02:30 <ais523> !zjoust margins3 http://nethack4.org/esolangs/margins3.bfjoust
04:02:32 <zemhill> ais523.margins3: points 10.88, score 52.78, rank 1/47 (--)
04:02:38 <Lymia> Since pretty much everything sets decoys, I skip straight to cell 14 if I don't see any decoys
04:02:43 <mad> micro-ops consist of stuff like: mov register/immediate into accumulator, add/sub/and/or/xor/shr/shl/sar accumulator value by register/immediate, store accumulator in register
04:02:49 <Lymia> What I mean is, is it new to check for decoys before planting your own?
04:03:08 <mad> so an instruction is something like:
04:04:22 <ais523> all I did was deleted the dead code to clean up the "published" version a bit
04:04:26 <ais523> Lymia: inside your own decoy setup, I think so
04:04:34 <ais523> there are programs that check for enemy clears inside their own setup
04:04:35 <shachaf> Hmm, http://chu.stanford.edu/PrattSRMK2016.pdf (slide 12) shows a way to present adjointness as associativity. Is there anywhere else that comes up? Maybe in the context of regular adjunctions?
04:04:41 <ais523> but not that check for enemy decoys, intentionally at least
04:04:46 <Lymia> I see
04:04:52 <mad> ld ac, r1; sub ac, r0; mul ac, r2; sar ac, 16; add ac, r0; store r1, ac
04:04:59 <mad> that's 1 opcode
04:05:21 <ais523> dependency analysis on ac is going to be a nightmare, surely?
04:05:23 <mad> it takes 4+ cycles to execute (due to the dependencies)
04:05:29 <Lymia> If you have too many operations in one bundle, to where most programs can't use them all
04:05:40 <ais523> I'm asuming the OOE thing resolves it, but it's going to be a lot of work
04:05:48 <mad> yes this HAS to be OOE
04:05:52 <Lymia> Wouldn't that stress the code cache?
04:05:55 <mad> but there's a trick
04:05:58 <Lymia> hrm
04:06:16 <Lymia> What's the benefit over a non-VLIW instruction set that does OOE.
04:06:26 <mad> basically each instruction is loaded into an execution unit and the execution unit has its own accumulator and runs the operations one by one
04:06:39 <mad> so actually it doesn't have to rename the accumulator
04:07:02 <mad> the next instruction is forced to wipe out the accumulator in its first instruction so there can be no dependency
04:08:31 <Lymia> ais523, that might explain the #1 then. I didn't realize checking for enemy decoys (a proxy indicator of being on a short tape) was anything that hadn't be done before.
04:08:53 <mad> instruction format limits the number of register stores per instruction so that it the target registers can be renamed in 1 cycle
04:09:01 <ais523> and I didn't realise you were doing it, presumably because you assumed it was nothing special
04:09:31 <mad> basically it's like if you had an OOO cpu but when instructions go into an ALU they execute a whole bunch of stuff sequentially in that ALU
04:09:55 <mad> and on the final microop the accumulator value of that ALU is stored back to the register file
04:10:07 <mad> or sent to the memory store queue
04:10:55 <mad> the reason it's organized this way is that this reduces the number of write and read ports on your register files a lot
04:11:49 <mad> instead of needing a register rename and writeback on each value add/shift/etc in a chain of computation, you only have one rename and one writeback at the end of the chain
04:12:57 <Lymia> It's also why I started with short decoys instead of vice versa
04:13:45 <mad> ld ac, r1; sub ac, r0; mul ac, r2; sar ac, 16; add ac, r0; store r1, ac reads 4 times from the register file and writes 1 time only; the equivalent RISC sequence does 7 reads and 4 writes
04:14:10 -!- augur has quit (Remote host closed the connection).
04:14:44 <mad> once you start a chain of computation, then you also need much less ressources to calculate the inter instruction dependencies
04:15:06 <mad> instead you just execute 1 instruction per cycle on every dependency chain
04:15:19 <mad> and the instruction format separates the dependency chains for you
04:15:33 <Lymia> If only I knew a HDL
04:15:43 <mad> I'm learning verilog
04:16:00 <mad> mostly because it's kinda like c++ :D
04:16:08 <mad> instead of being... strange like VHDL
04:16:53 <mad> another way of putting it is
04:17:02 <mad> take a RISC, but add an accumulator
04:17:25 <mad> every instruction writes the result to both the accumulator, and optionally another register as well
04:17:33 <ais523> Verilog's more like a scripting language, really
04:17:39 <Lymia> ais523, maybe I should it into the wiki page?
04:17:50 <mad> you can easily find the dependency chains in the instruction stream:
04:18:01 <ais523> Lymia: good idea; you're not editing the 2015/2016 sections (which I'm editing atm) so there shouldn't be a conflict
04:18:11 <ais523> although make sure you use a section edit rather than editing the whole page
04:18:12 <mad> every time you see an instruction that DOESN't have the accumulator in its input, it's the start of the chain
04:18:46 <mad> so the instruction stream becomes
04:19:25 <mad> [startofchain modifyaccum modifyaccum modifyaccum modifyaccumandwritebacktosomeregister startofchain modifyaccum modifyaccumandwritebacktosomeregister]
04:19:55 <mad> you can issue both "startofchain" instructions at the same time
04:19:57 <Lymia> I'm not sure if it should count as defense or attack.
04:20:16 <Lymia> The 'effect' is to detect short tapes when you have decoys
04:20:25 <mad> and then let the 2 concerned units run the other instructions in the chain one after another until the writeback instruction at the end
04:21:15 <ais523> Lymia: it's synchronization
04:21:18 <mad> the cost is that every input register other than the accumulator must be renamed first before any instruction downstream can run
04:21:35 <mad> from then on, register renaming is sufficient to solve all your dependencies
04:21:35 <ais523> it's a method of figuring what the opponent is doing, but doesn't do anything to prevent it in its own right
04:21:43 <ais523> it just allows you to come up with a better strategy
04:21:53 <mad> hence it's an OOO-VLIW
04:21:55 <ais523> to counter the opponent's technique
04:22:09 <mad> VLIW because you issue a whole bunch of stuff to do together in one go
04:22:15 <Lymia> The way I used it in nyuroki, I'm not quite countering the opponent's technique at all.
04:22:38 <mad> OOO because the individual sub components are reordered and all registers are renamed
04:22:38 <Lymia> Rather, I'm taking advantage of the opponent's behavior to detect short tapes.
04:23:38 <mad> basically it's trying to have the benefits of OOO-RISC (flexible execution order, can execute past a data cache miss) without the downsides (too many register writes and renames every cycle)
04:24:30 <ais523> Lymia: err, right
04:25:02 <ais523> I guess this is similar to the way growth2 often figures out the exact length of the tape via observing the opponent's clear pattern and guessing rule of nine
04:25:18 <ais523> it's kind-of scary seeing it rush right to the opponent's flag, ignoring all decoys, and clearing it
04:25:29 <ais523> I suppose that's synchronization too
04:25:35 <ais523> or maybe we should rename the section
04:25:39 <ais523> "intelligence", perhaps
04:25:52 <Lymia> "Infer information from the opponent's behavior"?
04:26:37 <ais523> should be a single word really, if we're talking about the section that currently discusses tripwires
04:27:39 <Lymia> The article says "At times you may want to use some behavior that depends on you being in lockstep with your opponent, like the "Lock" strategy above. The way to do this is generally with tripwires:" to explain the section right now.
04:28:09 <ais523> yes, we should probably generalize it
04:28:09 <Lymia> What'd cover behavior like assuming rule of nine, or decoys behind yours as well as synchronization?
04:28:11 <ais523> given how short it is
04:28:28 <ais523> perhaps "reconnaisance"
04:28:46 <ais523> assuming I've spelled that correctly
04:29:09 <Lymia> I feel like Synchronization might still work as its own section. It's pretty specific, instead of "branching" to different strategies, so to speak.
04:29:29 <ais523> well, there are quite a lot of programs that branch based on tripwires
04:29:35 <Lymia> And breadcrumb decoys is in "defense", which is similar in concept.
04:29:56 <ais523> most poke programs have some sort of fast rush detection nowadays
04:30:10 <ais523> (otherwise fast rush would do a lot better than it currently does!)
04:34:28 -!- ais523 has quit (Read error: Connection reset by peer).
04:37:39 <Lymia> rip ais
04:42:13 -!- treaki__ has joined.
04:44:19 -!- tromp_ has quit (Ping timeout: 260 seconds).
04:44:24 <HackEgo> [wiki] [[Special:Log/newusers]] create * Lymia * New user account
04:45:47 -!- ais523 has joined.
04:46:04 -!- treaki_ has quit (Ping timeout: 260 seconds).
04:46:11 -!- ais523 has quit (Client Quit).
04:46:18 <Lymia> rip ais x2
04:46:21 -!- ais523 has joined.
04:46:29 <Lymia> Hopefully no rip ais x3
04:46:35 -!- tromp_ has joined.
04:46:49 <HackEgo> [wiki] [[BF Joust strategies]] https://esolangs.org/w/index.php?diff=46497&oldid=43127 * Ais523 * (+7937) /* 2016 */ new section :-)
04:46:54 <shachaf> Lymia: it'll happen 521 more times hth
04:47:01 <Lymia> :(
04:47:25 <ais523> anyway, that's how margins3 works
04:47:30 -!- augur has joined.
04:47:38 <ais523> looks like I wrote quite a lot about it
04:47:43 <ais523> even though it's conceptually not that complex
04:48:14 <shachaf> So natural transformations are homotopies : C x 2 -> D
04:48:26 <shachaf> How come no one uses that definition or even talks about it?
04:51:43 -!- augur has quit (Ping timeout: 244 seconds).
04:54:41 <HackEgo> [wiki] [[Language list]] M https://esolangs.org/w/index.php?diff=46498&oldid=46486 * Luis Mendo * (+11) Added link to MATL
04:59:30 <Lymia> ... hrm. I wonder if ].] would be useful against something like margin's lock?
05:03:52 <Lymia> ais523, oh, I see.
05:04:02 <zzo38> On some TV/VCR/DVD?whatever you cannot use the numbers for anything other than the channel and track number you cannot select from menu or time or whatever, but I can suggest a much better way. Numbers by itself means nothing but most commands can accept numeric prefixes (if you use vi then you can know it is similar) and some commands can accept numeric suffixes for variant of the command too.
05:04:18 <Lymia> So the problem margin has with nyuroki is that it leaves a size 1 trail, screwing up the tripwire, right?
05:04:22 <Lymia> Isn't that common behavior too?
05:04:25 <zzo38> For example if you want to record for thirty minutes and then stop you can push 3 0 REC or you can push REC 3 0 DELAY STOP and either way would work.
05:04:56 <zzo38> (If you push REC by itself then it won't stop until you push STOP or if the tape runs out)
05:05:30 <ais523> Lymia: so most programs work on the assumption that the opponent is already at their first few decoys, due to rushing and/or poking
05:05:40 <ais523> as such, a trail wouldn't help and just slows you down
05:05:46 <Lymia> ah
05:05:49 <ais523> although I've found that even a small trail can be surprisingly helpful sometimes
05:06:03 <Lymia> I have it just because it was easier to code that way
05:06:32 <Lymia> Are you working on the strategies page?
05:06:53 <ais523> hmm, this channel likes stupid M:tG combos, right? someone created a deck that requires on the order of (2 tetrate 42) turns to win goldfishing
05:06:57 <ais523> Lymia: I've already updated it
05:07:01 <ais523> with margins3
05:07:06 -!- PinealGlandOptic has quit (Quit: leaving).
05:07:09 <zzo38> ais523: What cards is it?
05:07:10 <ais523> I'm not working on the individual strategies section right now
05:07:16 <Lymia> kk
05:07:16 <ais523> zzo38: https://www.reddit.com/r/magicTCG/comments/494kqq/how_can_we_make_the_slowest_deck_possible_or_how/d0ozihf
05:09:03 <zzo38> OK
05:09:59 <Lymia> Maybe it'd be best to be conservative and start a new "Recon" section?
05:10:24 <Lymia> Or toss it in with Attack unless you can think of a reason why a defensive program would do the reverse checking thing.
05:12:01 <Lymia> hrm
05:12:25 <Lymia> It occurs to me that it's closely related to breadcrumb decoys though.
05:14:59 <Lymia> Let's see if it's even useful.
05:17:41 <ais523> Lymia: defensive programs often set more decoys than aggressive programs and /really/ want to avoid decoy clashes
05:18:01 <ais523> e.g. most of waterfall3's losses at the time it was created were decoy clashes
05:18:28 <ais523> although, defensive programs often detect decoy clashes via tripwire disturbance rather than via unexpectedly nonzero cells
05:18:49 <Lymia> I'm going to see if switching nyuroki to use tripwires helps or hurts
05:36:49 <Lymia> Yeah.
05:36:53 <Lymia> Nyuroki with tripwires works OK.
05:36:56 <Lymia> Not well, but.
05:38:39 <Lymia> Probably mostly because I don't actually have routines specialized for fast rushes/pokes
05:41:09 <Lymia> ais523, what about a section like "Decision Making"? "Techniques to determine information about the opponent, or the tape, and use that information to your advantage."
05:41:26 <Lymia> hrm.
05:41:28 <Lymia> Or, rather.
05:41:46 -!- augur has joined.
05:41:48 <Lymia> "Techniques to determine information about the opponent, or the tape, which can be used to your advantage by changing strategies depending on this information."
05:42:54 <zzo38> Magic: the Gathering has some keyword abilities dealing with +1/+1 counters; I think cards can be made up that combine them (such as: evolve + undying, unleash + tribute, megamorph + undying, sunburst + graft, etc)
05:46:28 -!- augur has quit (Ping timeout: 252 seconds).
05:55:28 -!- AlexR42 has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
05:58:19 <Lymia> I wonder what BFJoust would look like if [] took 0 cycles.
06:13:11 <zzo38> Another kind of variant of BF Joust would be that . writes into opponent's input queue and , reads and removes the first byte of your own input queue, or if your input queue is empty it acts like + but is not affected by reversing polarity.
06:15:02 <zzo38> There are also other possibilities for what happen if your own input queue is empty, for example it acts like . instead in such a case
06:26:57 <ais523> Lymia: triplocks everywhere, most likely unbeatable ones; one-cycle clears meaning that decoys wouldn't gain you anything if cleared in the right direction
06:29:39 <ais523> although, actually, the clears would be fast enough to beat the triplocks
06:37:30 -!- XorSwap has joined.
06:48:52 <zzo38> A television set could be made including "Famicom mode", where it assumes the input is the output of Famicom PPU and uses that to index into a (possibly user-defined) palette, so it converts NTSC into indexed colours
07:08:43 -!- lambda-11235 has quit (Quit: Bye).
07:12:07 <pikhq> It could probably also autodetect that it was getting Famicom PPU output.
07:12:20 <pikhq> The PPU output really weird NTSC.
07:12:28 <pikhq> Among other things its color burst was a square wave.
07:14:41 -!- augur has joined.
07:15:04 -!- augur has quit (Remote host closed the connection).
07:18:26 -!- augur has joined.
07:19:44 -!- augur has quit (Remote host closed the connection).
07:30:58 -!- XorSwap has quit (Ping timeout: 252 seconds).
07:36:01 -!- bender| has joined.
07:36:20 -!- bender| has quit (Changing host).
07:36:20 -!- bender| has joined.
07:37:59 -!- tromp has quit (Remote host closed the connection).
07:45:38 -!- ais523 has quit.
08:38:31 -!- tromp has joined.
08:42:49 -!- tromp has quit (Ping timeout: 240 seconds).
08:50:02 -!- AnotherTest has joined.
09:17:41 -!- Phantom_Hoover has joined.
09:48:39 -!- ais523 has joined.
09:55:04 -!- ais523 has quit (Ping timeout: 252 seconds).
09:58:05 -!- ais523 has joined.
10:03:18 -!- jaboja has joined.
10:03:19 -!- Phantom_Hoover has quit (Ping timeout: 268 seconds).
10:11:57 -!- J_Arcane has quit (Ping timeout: 268 seconds).
10:14:42 -!- Phantom_Hoover has joined.
10:35:19 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
10:39:18 -!- tromp has joined.
10:43:33 -!- tromp has quit (Ping timeout: 244 seconds).
10:46:18 -!- jaboja has quit (Read error: Connection timed out).
10:46:54 -!- jaboja has joined.
10:47:48 -!- rdococ has joined.
11:26:30 -!- AlexR42 has joined.
11:29:30 -!- ais523 has quit.
11:32:51 -!- vodkode has joined.
11:40:10 -!- tromp has joined.
11:40:14 -!- zadock has joined.
11:44:33 -!- tromp has quit (Ping timeout: 240 seconds).
11:47:26 -!- jaboja has quit (Ping timeout: 250 seconds).
11:55:55 -!- AlexR42 has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
12:04:54 -!- Reece` has joined.
12:25:09 -!- feliks has quit (Ping timeout: 268 seconds).
12:27:36 -!- earendel has quit (Ping timeout: 246 seconds).
12:32:51 -!- earendel has joined.
12:36:50 <b_jonas> “<shachaf> By the way, someone (b_jonas?) figured out a way easier way to do `culprits.” => yes, but I haven't finished the implementation yet, because I also want to write a new version of noping
12:36:57 <b_jonas> you can see the current state at, I think,
12:37:02 <b_jonas> ``` cat bin/culprits-ng
12:37:21 <HackEgo> ​#!/bin/sh \ exec hg log -l 512 --template "{desc}\0" -- "$@" | perl -0ne '/^<([^>]*)>/ and print"$1 "'
12:39:35 <b_jonas> The original implementation of culprits is the typical abomination of the kind I hate, like the unix scripts that try to grep and imperfectly parse ps's output without passing switches to ps that already make that much easier
12:40:57 <shachaf> b_jonas: I'm sure you're a fan of nitia.
12:42:36 <b_jonas> what's nitia?
12:42:38 <int-e> without nitia, we would not exist
12:42:45 <b_jonas> `? nitia
12:42:47 <HackEgo> nitia is the inventor of all things. The BBC invented her.
12:43:05 <Riviera> exec for the part of a pipe seems silly
12:43:14 <b_jonas> `? tanebventions
12:43:15 <HackEgo> Tanebventions include D-modules, Chu spaces, automatic squirrel feeders, the torus, Stephen Wolfram, Go, submarine jousting, the universe, weetoflakes, persistence, the reals, Lambek's lemma, robots, progress, and this sentence. He never invents anything involving sex.
12:43:30 <int-e> `culprits bin/wisdom
12:43:31 <HackEgo> oerjan oerjan oerjan oerjan oerjan oerjan shachaf shachaf tswett tswett shachaf shachaf shachaf shachaf
12:43:40 <shachaf> `culprits bin/addquote
12:43:41 <int-e> `culprits bin/quote
12:43:54 <HackEgo> tswett tswett Gregor shachaf shachaf shachaf elliott elliott nitia
12:43:57 <HackEgo> tswett tswett oerjan elliott ais523 ais523 elliott FreeFull oerjan FreeFull fizzie shachaf shachaf elliott elliott nitia
12:45:42 <int-e> . o O ( `learn_append nitia However, nitia did not have much wisdom. )
12:46:03 <shachaf> And also of nitia's friend, estin.
12:47:15 -!- earendel has quit (Ping timeout: 264 seconds).
12:47:20 -!- lynn has joined.
12:51:54 -!- feliks has joined.
12:57:01 <int-e> `culprits useless_file.txt
12:57:04 <HackEgo> fizzie estin
12:58:23 <int-e> `? estin
12:58:24 <HackEgo> estin? ¯\(°​_o)/¯
13:13:57 -!- Alejandro15 has joined.
13:19:38 -!- Alejandro15 has quit (Quit: Leaving.).
13:20:46 -!- AlexR42 has joined.
13:26:01 -!- tromp has joined.
13:30:11 -!- tromp has quit (Ping timeout: 248 seconds).
13:33:10 <izabera> `` unidecode $'\1'
13:33:19 <HackEgo> U+0001 <control> \ UTF-8: 01 UTF-16BE: 0001 Decimal: &#1; \ . \ Category: Cc (Other, Control) \ Bidi: BN (Boundary Neutral)
13:46:11 -!- AlexR42 has quit (Quit: My Mac has gone to sleep. ZZZzzz…).
13:48:44 <int-e> Hmm, Google's slight misrepresentation of Lee Sedol's strength works... I'm reading articles stating that he's the strongest player, when Google wrote that he has the strongest record over the past 10 years. That's probably true, but Ke Jie has been the dominating player last year.
13:48:49 <int-e> (Ke has a 8:2 record against Lee)
13:49:30 -!- lynn has quit (Ping timeout: 246 seconds).
13:50:27 <int-e> (when I say "Google wrote" I mean whoever does PR on behalf of the Alphago team)
13:56:00 <Lymia> hrm
13:56:29 <Lymia> How hard would it be to run zemhill's markov scoring algorithm on thousands of programs at once
13:56:37 <Lymia> or, rather, what's the computational complexity of it
14:04:00 -!- boily has joined.
14:10:58 <FireFly> ``cat bin/culprits
14:10:59 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: `cat: not found
14:11:00 -!- tromp has joined.
14:11:04 <FireFly> `cat bin/culprits
14:11:05 <HackEgo> hg log --removed "$1" | grep summary: | awk '{print substr($2,2,length($2)-2)}' | sed "s/.$/\x0F&/" | xargs
14:18:14 <boily> `culprits bin/culprits
14:18:17 <HackEgo> Jafet Jafet tswett tswett shachaf shachaf shachaf FireFly FireFly FireFly FireFly FireFly FireFly shachaf
14:18:50 <boily> @ask Jafet where are you at now?
14:18:50 <lambdabot> Consider it noted.
14:38:30 -!- zadock has quit (Quit: Leaving).
14:49:39 <Lymia> !zjoust dumb ((+)*2310(.)*2310)*-1
14:49:39 <zemhill> Lymia.dumb: points -25.12, score 5.75, rank 47/47
14:49:57 <Lymia> !zjoust dumb ((+)*210(.)*210)*-1
14:49:58 <zemhill> Lymia.dumb: points -23.76, score 5.67, rank 47/47 (--)
14:55:28 <boily> !zjoust chicken +[>[-.]]
14:55:29 <zemhill> boily.chicken: points -33.14, score 2.90, rank 47/47
15:11:16 <Lymia> !zjoust perfection (>)*29 (-)*120 [-]
15:11:16 <zemhill> Lymia.perfection: points -41.81, score 1.02, rank 47/47
15:11:24 <Lymia> !zjoust perfection (>)*29 (-)*120 [-.]
15:11:25 <zemhill> Lymia.perfection: points -41.81, score 1.02, rank 47/47 (--)
15:11:51 <Lymia> !zjoust perfection (>)*20 ([(-)*120 [-.]{}] >)%-1
15:11:51 <zemhill> Lymia.perfection: points -36.86, score 2.10, rank 47/47 (--)
15:12:24 <Lymia> !zjoust meow (()*-1)*-1
15:12:25 <zemhill> Lymia.meow: points -33.14, score 2.90, rank 47/47
15:12:28 <b_jonas> heh, "perfection"
15:12:38 <Lymia> fsvo "perfection"
15:12:39 <myname> perfection with -40 points
15:19:59 -!- lynn has joined.
15:28:19 <\oren\> what is this, misere bfjoust?
15:29:53 <int-e> !zjoust < <
15:29:53 <zemhill> int-e: Program name (<) is restricted to characters in [a-zA-Z0-9_-], sorry.
15:30:02 <int-e> !zjoust lt <
15:30:02 <zemhill> int-e.lt: points -46.00, score 0.00, rank 47/47
15:30:37 -!- boily has quit (Quit: TRIACONTAHEDRON CHICKEN).
15:30:39 <int-e> !zjoust (+-+)*-1
15:30:39 <zemhill> int-e: "!zjoust progname code". See http://zem.fi/bfjoust/ for documentation.
15:30:47 <int-e> !zjoust pmp (+-+)*-1
15:30:48 <zemhill> int-e.pmp: points -7.43, score 12.85, rank 47/47
15:32:16 <int-e> !zjoust gpmp >(+-+)*-1
15:32:18 <zemhill> int-e.gpmp: points -9.62, score 6.69, rank 47/47
15:32:36 <int-e> !zjoust gpmp >+*128(+-+)*-1
15:32:38 <zemhill> int-e.gpmp: points -9.57, score 6.73, rank 47/47 (--)
15:33:06 <int-e> !zjoust gpmp >>-<<(+-+)*-1
15:33:07 <zemhill> int-e.gpmp: points -7.05, score 13.02, rank 47/47 (--)
15:33:52 <int-e> !zjoust gpmp >>->+<<<(+-+)*-1
15:33:53 <zemhill> int-e.gpmp: points -6.74, score 13.34, rank 45/47 (+2)
15:34:13 <int-e> funny
15:39:38 <int-e> int-e.gpmp vs ais523.death_to_defence / >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> -42 / ais523.death_to_defence wins. ... I guess it lives up to its name :)
15:40:09 <myname> wait, suicide is marginally worse than "perfection"?
15:40:53 <\oren\> since I added the characters for vim Powerline, are there any other widely used (where "widely" means >100 people) terminal programs that use special charatcers?
15:41:59 <myname> do you fully support that lineudrawed nethack thingie?
15:43:41 <\oren\> does it use any non-unicode charatcers?
15:44:06 <myname> i have no clue
15:45:22 <myname> also, do you have any idea if i can somehow use that in connectbot? :D
15:46:15 -!- jaboja has joined.
15:51:15 -!- lambda-11235 has joined.
15:51:31 <\oren\> hmm, I wonder... I have an andorid phone, so I'll try to figure it out
15:52:33 <myname> i can set the system font, but that does not at all change the font inside connectbot
15:52:42 <myname> and i have absolutely no idea why that is
15:54:27 -!- oerjan has joined.
15:56:10 <int-e> ollehrjan
15:57:08 <oerjan> inoonret-e
15:58:37 <oerjan> int-e: btw, i'm slightly disappointed that foglio didn't draw van rijn resembling the real rembrandt
15:59:03 <\oren\> hmm I think it must have a font file somewhere inside the app's files
16:02:47 <int-e> oerjan: well, attitude wise he is more of a da vinci anyway
16:03:00 <oerjan> heh.
16:03:26 <oerjan> it's hard to tell with the sepia, but i guess he's another member of the red-haired family.
16:04:37 <int-e> maybe we will meet him again... in the flesh... in the past.
16:05:14 <b_jonas> meet who?
16:05:32 <int-e> The master van Rijn.
16:06:00 <int-e> `? gg
16:06:07 <HackEgo> gg? ¯\(°​_o)/¯
16:06:08 <int-e> `? girl genius
16:06:10 <HackEgo> girl genius? ¯\(°​_o)/¯
16:06:12 -!- boily has joined.
16:06:16 <int-e> `? oots
16:06:17 <HackEgo> oots? ¯\(°​_o)/¯
16:07:32 <boily> `? olist
16:07:33 <HackEgo> Update notification for the webcomic Order of the Stick. http://www.giantitp.com/comics/ootslatest.html
16:08:42 <b_jonas> `culprits olist
16:08:45 <HackEgo> shachaf shachaf
16:08:55 <oerjan> b_jonas: *cough*
16:09:15 <oerjan> int-e: needs a much longer beard
16:10:06 -!- jaboja has quit (Ping timeout: 248 seconds).
16:12:03 <oerjan> also, you could say that about all the sparks.
16:12:27 <int-e> including Agatha... perhaps not.
16:13:10 <b_jonas> `culprits wisdom/olist
16:13:13 <HackEgo> shachaf shachaf shachaf oerjan elliott Bike
16:13:25 <int-e> `? comic
16:13:26 <HackEgo> comic? ¯\(°​_o)/¯
16:13:47 <HackEgo> [wiki] [[Special:Log/newusers]] create * Orlando99 * New user account
16:13:55 <oerjan> . o O ( `learn comic sans ... )
16:15:33 <oerjan> what's with all the helicopters today
16:16:44 <int-e> `le/rn comics/Recommended comics include genius stick, stuck girl, and home of the order.
16:16:52 <HackEgo> Learned «comics»
16:17:29 <HackEgo> [wiki] [[User:Orlando99]] N https://esolangs.org/w/index.php?oldid=46499 * Orlando99 * (+145) Created page with "Hi! I'm Orlando99. I haven't created any esoteric programming languages '''yet''', but I'm working on a new one. I hope I'll finish it soon... :)"
16:17:32 <prooftechnique> `
16:17:32 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: : not found
16:17:38 <prooftechnique> `? elrond
16:17:39 <HackEgo> Elrond is a rogue program originally created to police the Matrix, eventually gaining increased individuality and becoming a threat to the Machines themselves.
16:17:49 <HackEgo> [wiki] [[User:Orlando99]] https://esolangs.org/w/index.php?diff=46500&oldid=46499 * Orlando99 * (-2)
16:18:18 <myname> int-e: i like that one
16:20:53 <boily> `le/rn comics/Recommended comics include Genius Stick, Stuck Girl, and Home of the Order.
16:20:56 <HackEgo> Learned «comics»
16:21:08 <boily> long live the Oxford comma!
16:21:15 <prooftechnique> <3
16:22:23 <int-e> boily made a capital effort there.
16:23:25 <boily> should it be “the” or “The”%
16:23:32 <boily> s%\%%?%
16:23:53 <oerjan> "the"
16:24:37 <izabera> why would you purposely use % as a separator -_-
16:24:56 <oerjan> indeed, it puts your sanity into question.
16:25:13 <boily> izabellora. s/// expressions are fun to mangle!
16:25:25 -!- zadock has joined.
16:25:31 <boily> hellørjan. oh you of little faith... Believe in my Sanity!
16:25:37 <Taneb> I think somewhere on freenode there's a channel for programmers who do intentionally difficult things for fun
16:25:39 <prooftechnique> `le/rn Oxford/The home of English, woven shirts, and the serial comma.
16:25:42 <HackEgo> Learned «oxford»
16:25:49 <oerjan> `culprits wisdom/oxford
16:25:50 <Taneb> I think they also program in things like brainfuck and Malbolge
16:25:54 <HackEgo> prooftechnique
16:26:39 <myname> Taneb: crazy crowd
16:26:40 <oerjan> `cat bin/slash_learn
16:26:41 <HackEgo> cat: bin/slash_learn: No such file or directory
16:26:45 <oerjan> `cat bin/slashlearn
16:26:45 <HackEgo> sep="/"; [[ "$0" == *//* ]] && sep="//"; [[ "$1" == ?*"$sep"* ]] || exit 1; key="$(echo "${1%%$sep*}" | lowercase)"; value="${1#*$sep}"; echo "$value" > "$(echo-p "wisdom/$key")" && echo "Learned «$key»"
16:26:48 <int-e> Taneb: Sounds like a scary place to me. A place you tell naughty children about so that they stay in their beds while failing to sleep.
16:26:52 -!- J_Arcane has joined.
16:27:50 <oerjan> darn
16:28:48 <int-e> oerjan: I lost your train of thought
16:29:11 <oerjan> boily: that's what all the sane people say just before they break hth
16:29:23 <b_jonas> Homestick and Order of the Stuck?
16:29:24 <oerjan> or possibly just after.
16:30:25 <oerjan> int-e: which train?
16:30:55 <int-e> the one that rolled over "darn"
16:31:33 <oerjan> i just realized fixing slashlearn in the same way as shachaf fixed learn looks ugly
16:31:57 <int-e> oh ok
16:32:02 <myname> why fixing it?
16:32:14 <b_jonas> fuck
16:32:17 <oerjan> myname: so it says whether the wisdom previously existed
16:32:24 <myname> ah
16:32:44 <myname> isn't it just a symlink to le/rn?
16:33:01 <int-e> `echo-p
16:33:02 <HackEgo> No output.
16:33:11 <oerjan> myname: the other way around
16:33:12 <int-e> `cat bin/echo-p
16:33:13 <HackEgo> echo "$1"; [[ "$1" == */* ]] && mkdir -p "${1%/*}" 2>/dev/null
16:33:19 <int-e> hah
16:33:27 <myname> oerjan: that doesn't make sense
16:33:35 <oerjan> myname: it's older.
16:33:40 <int-e> `culprits bin/echo-p
16:33:43 <HackEgo> oerjan
16:33:46 <myname> why should slashlearn look at the number of slashes?
16:33:46 * oerjan waves
16:33:47 <b_jonas> I think the filling came out of one of my teeth
16:33:57 <oerjan> b_jonas: it's a pandemic!
16:33:59 <b_jonas> I'll have to get an urgent appointment to my dentist
16:34:35 <oerjan> myname: um so that le/rn and le//rn both work hth
16:35:00 <oerjan> by "older", i mean creation, not latest version hth
16:35:33 <b_jonas> le/rn and le//rn could just point to two different files instead of stupid argv[0] magic
16:35:35 <myname> okay
16:35:52 <oerjan> b_jonas: that's impossible, because they're the same file
16:35:54 <int-e> . o O ( what about le///rn )
16:35:54 <myname> b_jonas: how so
16:36:08 <b_jonas> sure, but change them
16:36:11 <b_jonas> oh
16:36:13 <b_jonas> right
16:36:16 <b_jonas> ugh
16:36:21 <oerjan> :D
16:36:23 <b_jonas> um, use different names?
16:36:29 <b_jonas> like slashlearn and slashslashlearn?
16:36:48 <oerjan> b_jonas: um le/rn was created because slashlearn was too long hth
16:37:19 <oerjan> your strange insistence on using it notwithstanding.
16:37:23 <int-e> we want c/o/n/v/e/n/i/e/n/c/e, and cslashoslashnslashvslasheslashnslashislasheslashnslashcslashe just doesn't cut it for us
16:39:26 <oerjan> int-e: i think that cuts it too fine, rather
16:40:06 <int-e> o/e/r/j/a/n, does it hurt when I do this?
16:40:17 <oerjan> remarkably little.
16:40:33 <b_jonas> what if the double slash syntax was `le/rn /key//value
16:40:44 <b_jonas> that's as many characters as `le//rn key//value I think
16:40:51 <b_jonas> and doesn't collide with anything
16:40:54 <int-e> but less intuitive
16:41:34 <int-e> I honestly believe the $0 trick is good for the limited purpose it serves
16:42:07 <b_jonas> ok
16:44:33 <oerjan> `` [ -e te/st/ing ] || echo "nope"
16:44:34 <HackEgo> nope
16:45:05 <oerjan> ok the hardest part now is that slashlearn uses ; instead of newlines
16:46:29 <oerjan> `cat bin/learn
16:46:30 <HackEgo> ​#!/bin/bash \ topic=$(echo "$1" | lowercase | sed 's/^\(an\?\|the\) //;s/s\?[:;,.!?]\? .*//') \ [ -e "wisdom/$topic" ] && verb="Relearned" || verb="Learned" \ echo "$1" >"wisdom/$topic" \ echo "$verb '$topic': $1"
16:46:38 <oerjan> `cat bin/slashlearn
16:46:39 <HackEgo> sep="/"; [[ "$0" == *//* ]] && sep="//"; [[ "$1" == ?*"$sep"* ]] || exit 1; key="$(echo "${1%%$sep*}" | lowercase)"; value="${1#*$sep}"; echo "$value" > "$(echo-p "wisdom/$key")" && echo "Learned «$key»"
16:46:48 <oerjan> sep="/"; [[ "$0" == *//* ]] && sep="//"; [[ "$1" == ?*"$sep"* ]] || exit 1; key="$(echo "${1%%$sep*}" | lowercase)"; value="${1#*$sep}"; echo "$value" > "$(echo-p "wisdom/$key")" && echo "Learned «$key»"
16:48:19 <oerjan> `mkx bin/slashlearn//sep="/"; [[ "$0" == *//* ]] && sep="//"; [[ "$1" == ?*"$sep"* ]] || exit 1; key="$(echo "${1%%$sep*}" | lowercase)"; value="${1#*$sep}"; [ -e "wisdom/$topic" ] && verb="Relearned" || verb="Learned"; echo "$value" > "$(echo-p "wisdom/$key")" && echo "$verb «$key»"
16:48:22 <HackEgo> bin/slashlearn
16:48:35 <oerjan> `? testing
16:48:36 <HackEgo> Testing might eventually succeed.
16:48:42 <oerjan> `forget testing
16:48:45 <HackEgo> Forget what?
16:48:59 <oerjan> `le/rn testing/Testing is fragile.
16:49:02 <HackEgo> Relearned «testing»
16:49:10 <oerjan> argh
16:49:12 <oerjan> oh
16:49:15 <myname> loo
16:49:35 <oerjan> `mkx bin/slashlearn//sep="/"; [[ "$0" == *//* ]] && sep="//"; [[ "$1" == ?*"$sep"* ]] || exit 1; key="$(echo "${1%%$sep*}" | lowercase)"; value="${1#*$sep}"; [ -e "wisdom/$key" ] && verb="Relearned" || verb="Learned"; echo "$value" > "$(echo-p "wisdom/$key")" && echo "$verb «$key»"
16:49:37 <HackEgo> bin/slashlearn
16:49:45 <oerjan> `forget testing
16:49:47 <HackEgo> Forget what?
16:49:50 <oerjan> `le/rn testing/Testing is fragile.
16:49:52 <HackEgo> Learned «testing»
16:50:01 <oerjan> `le/rn testing/Testing can only do so much.
16:50:03 <HackEgo> Relearned «testing»
16:50:07 <oerjan> there you go.
16:51:08 <int-e> `learn estin didn't believe in automation.
16:51:11 <HackEgo> Learned 'estin': estin didn't believe in automation.
16:51:21 <b_jonas> `? estin
16:51:22 <HackEgo> estin didn't believe in automation.
16:55:00 <\oren\> god, can the process for getting superuser permissions on android be any more confusing?
16:55:47 <myname> you mean, exploiting a bug?
16:56:36 <b_jonas> `? chicken
16:56:38 <HackEgo> chicken is boily af
16:56:38 <b_jonas> `? egg
16:56:39 <HackEgo> egg? ¯\(°​_o)/¯
16:56:45 <\oren\> any number of websites and apps and whatnot, none looking at all trustworthy, it makes Windows look completey sane
16:57:27 <\oren\> and all I wanted to do was edit one fricking file
16:57:53 <myname> xda is oretty trustworthy
17:01:13 <b_jonas> `? xda
17:01:14 <HackEgo> xda? ¯\(°​_o)/¯
17:02:25 <\oren\> I mean seriously why the hell isn't there just a button to open a goddamn bash shell
17:02:33 -!- bender| has quit (Quit: Ping Pong Fuckout).
17:02:48 <\oren\> isn;t this supposed to be linux
17:02:53 <oerjan> @tell ais523 <ais523> although make sure you use a section edit rather than editing the whole page <-- i read somewhere that doesn't matter any longer
17:02:53 <lambdabot> Consider it noted.
17:03:09 <myname> how would it prevent an app to use this?
17:03:22 <oerjan> make it a physical button.
17:03:44 <myname> that doesn't fix the problem at all
17:04:43 <\oren\> um, the button would be part of the main settings?
17:04:56 <\oren\> I mean windows has a way to do this easily
17:04:59 <boily> `culprits wisdom/chicken
17:05:02 <HackEgo> mroman
17:05:17 <boily> @tell mroman mrelloman.
17:05:17 <lambdabot> Consider it noted.
17:05:22 <myname> windows has a button to make you able to destroy everything?
17:05:30 <\oren\> yes
17:05:31 <oerjan> myname: several, in fact
17:05:41 <oerjan> >_>
17:05:47 <myname> great design
17:06:28 <\oren\> you can edit any file on the system if you click through all the warning messages
17:07:03 <myname> that reminds me of the video qhere people started formating a drive through voice recognition
17:08:01 <\oren\> wait... my windows computer has a sim card slot
17:08:18 <\oren\> I don't need this bullshit anyway
17:08:25 * boily eyes \oren\'s computer with suspicion
17:08:36 <boily> that sounds like a phone to me.
17:09:27 <\oren\> it isn't a phone, it's just a thinkpad with all the trimmings
17:09:55 <\oren\> well except I didn't shell out for a super-good minitor
17:09:59 <\oren\> *screen
17:10:14 <boily> a minitor: a screen with low resolution?
17:10:18 -!- jaboja has joined.
17:10:32 <\oren\> yes
17:11:03 <b_jonas> that's like the monotaur
17:11:15 <b_jonas> and the majotaur
17:11:28 <\oren\> 1366x768
17:11:29 <myname> my notebook also has a sim card slot
17:12:27 -!- Reece` has quit (Quit: Leaving).
17:16:04 <\oren\> yeah so basically instead of trying to tether the wifi connection, I'll just put my sim card in my computer whenever I want to use my data connection from my computer
17:17:31 <\oren\> my plan is a "bring your own phone" plan, so i think that's allowed
17:18:13 <b_jonas> sure, why would you use a bad android phone when you have a better one
17:18:39 <prooftechnique> stereotaur
17:19:30 <Lymia> Cyanogenmod makes root less stupid, at least. :P
17:19:46 <Lymia> It's built into the system, so, it's probably trustworthy.
17:19:47 <myname> Lymia: well, you just need root to install it
17:19:56 <myname> easy game
17:20:02 <Lymia> You reimage the phone after you get root though.
17:20:11 <Lymia> So, I don't really need to worry about the rooting program being "trustworthy" per se.
17:20:41 <\oren\> I am just "bringing" a 15 by 9 inch, 6 pound clamshell "phone"
17:20:56 <Lymia> I have a Samsung phone, so, I just reimaged it using the 'supported' method.
17:21:29 <myname> withbthe thirdparty app
17:21:57 <prooftechnique> \oren\: You mean you don't even have to bolt it into your car? Technology has come so fr
17:22:00 <prooftechnique> *far
17:22:11 <\oren\> lol
17:23:10 <prooftechnique> Even today with pervasive smartphones, there's a certain romantic access to a "car phone"
17:23:11 <Lymia> <oerjan> make it a physical button.
17:23:23 <Lymia> Can't you just do something like how UAC works
17:23:25 <prooftechnique> As if to say "I have so much going on that I have a dedicated phone just for my car"
17:23:39 <\oren\> Lymia: that's what I was saying
17:23:46 <Lymia> Pop up a secure OS level dialog that applications can't interact with.
17:23:59 <Lymia> Put the button a 5 second timer so nobody presses it on accident because an application is sneaky.
17:24:10 <Lymia> Or require a passphrase.
17:24:25 <\oren\> use a captcha
17:24:29 <prooftechnique> FSVO "secure" and "can't"
17:24:45 <Lymia> well.
17:25:01 <Lymia> If you have enough permissions to screw with a privileged security dialog
17:25:09 <Lymia> You probably have the permissions to do what you wanted to do in the first place anyway
17:25:20 <\oren\> when UAC pops up, the computer beeps, the screen goes black for a second, and then the UAC dialog pops up
17:25:27 <prooftechnique> I'm hearing "run as root all the time". Got it. Sounds easy. :)
17:25:45 <Lymia> ???
17:26:13 -!- augur has joined.
17:26:13 <\oren\> and then it says in a scary way, "are you sure you want [application] to be able to do [something]"
17:26:14 <prooftechnique> You say I'll never have to enter my password to install my special weather widgets ever again? Sounds dandy!
17:26:45 <Lymia> I don't know what you think we're talking about, but, that's certainly not it.
17:27:00 <\oren\> prooftechnique: on my other computer I use puppy linux, so, yeah, all root all the time
17:27:14 <prooftechnique> \oren\: It almost literally says the "something" part, though, unless UAC dialogs have gotten more informative recently
17:27:21 <Lymia> \oren\, It's more complicated than that. There's some isolation mechanism between the actual application processes and the system component that does the UAC prompts (and presumably elevates the privileges of the processes that request it)
17:27:42 <Lymia> Doesn't UAC still not have fine-grained permissions
17:28:04 <\oren\> Lymia: sure, but I'm just describing the user interface
17:28:17 <Lymia> I thought it still only had two modes: A) Anything a normal unprivileged user can do, B) Anything your user can do, including adminstrative stuff if you have the permissions.
17:28:18 <\oren\> which goes out of its way to make sure the user pays attention
17:28:49 <prooftechnique> And in doing so probably causes itself to be ignored even harder
17:29:10 <prooftechnique> It's so jarring that I imagine most users just wildly click through it without wondering what the triggering process is
17:29:28 <\oren\> depends. my mother will click "no", even I tell her five times to click yes
17:30:12 <b_jonas> \oren\: so you don't have enough permission to control your mother?
17:30:58 <\oren\> yeah. I hate doing tech support
17:33:06 -!- oerjan has quit (Quit: Sounds like you need a mother upgrade).
17:39:06 <Lymia> \oren\, at least, if it's aimed at technical users, the only requirement of the user interface is that you could only give access "intentionally", no?
17:39:46 <Lymia> (Hence, a 2-4 second timer on the accept button in case an application tries to trick a user into pressing it by timing when it brings up the dialog.)
17:40:10 <Lymia> It doesn't need to be unforgable unless you have a password prompt.
17:40:10 <\oren\> right, but it should also make clear to non-techs that this is a sensitive feature
17:40:33 <Lymia> There's no point in a fake escalation prompt, unless it requires a password.
17:41:02 <Lymia> Yeah, that isn't exactly easy either.
17:44:36 -!- earendel has joined.
17:45:10 <Lymia> Mainly because
17:45:13 <Lymia> they don't freaking read
17:46:43 <b_jonas> fuck... this stupid hole where the filling came out is impossible to clean. my tooth will start hurting in no time.
17:47:01 <b_jonas> I'll have to be really careful and get an appointment first thing tomorrow
17:53:03 <JX7P> Subject-Oriented Programming seems an interesting place to research
17:53:10 <JX7P> or Context-Oriented
17:54:26 <J_Arcane> I just want to see some new GUI approaches that aren't a big bowl of imperative sOOP.
17:58:14 <Lymia> wtf
17:58:19 <Lymia> When did I write this Python script
17:58:23 <Lymia> And why did I use os.chdir at all
17:59:58 <J_Arcane> there's all this stuff going on now with functional reactive programming, and cool declarative approaches to same, and yet it's all web-focused. The native approaches either try to glue FRP onto the existing sOOP, or just run web stuff in a browser window.
18:00:20 <Lymia> sOOP?
18:02:58 -!- augur has quit (Remote host closed the connection).
18:04:20 -!- Thassa has joined.
18:04:28 <Thassa> Hweh
18:07:15 <\oren\> I've begun translating my game from C into Javascript
18:07:48 <Thassa> Ayy
18:12:01 <Lymia> You poor thing
18:12:12 <Lymia> Nobody should have to suffer Javascript.
18:18:56 -!- XorSwap has joined.
18:21:26 <J_Arcane> Lymia: object oriented + soup.
18:21:43 <Lymia> soup? Never heard that term
18:21:55 <J_Arcane> as in " a big mass of interdependent stateful objects that give the functional programming zealot in me hives "
18:23:03 <Lymia> ah
18:23:18 <\oren\> but most gui elements are inherently stateful
18:24:36 <J_Arcane> true. But there are other approaches to handling that state while allowing individual components to remain purely functional.
18:25:41 -!- vodkode has quit (Quit: Leaving).
18:25:56 <\oren\> YAY! gensokyo radio is playing ym favorite song
18:26:57 <J_Arcane> I work with Reagent in my day job, for example, where largely you're working with pure functions that just return markup that gets rendered by virtual DOM, and page state is handled by a single canonical atom.
18:27:35 <J_Arcane> Which is a really fun way to work with an interface, and makes me sad there's not really a native equivalent unless you count the React Native bindings (which are presently a giant nightmare behemoth)
18:30:53 <\oren\> well I mean what i would do to avoid state would be to have each button callback be a function that takes the whole state and returns a new state
18:31:39 -!- XorSwap has quit (Ping timeout: 244 seconds).
18:31:49 <\oren\> but then you'd have to redraw everything with each button press
18:34:50 <b_jonas> `fix_my_tooth
18:34:54 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: fix_my_tooth: not found
18:35:01 <b_jonas> Isn't there a command for this?
18:35:02 <b_jonas> `dentist
18:35:03 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: dentist: not found
18:35:07 <b_jonas> `appointment dentist
18:35:08 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: appointment: not found
18:35:31 <\oren\> `brush teeth
18:35:32 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: brush: not found
18:35:52 <\oren\> `floss teeth
18:35:52 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: floss: not found
18:36:50 <\oren\> for(@teeth){brush;floss;}
18:50:29 <Lymia> I hope that's not actual Perl
19:01:01 <JX7P> well, i've finally abolished the need to declare objects with a * in Objective-C (JX)
19:01:37 <JX7P> since i have abolished plans for stack objects, and if I ever do, it'll use alloca() (so will remain a pointer)
19:04:39 -!- Thassa has quit (Remote host closed the connection).
19:15:19 <pikhq> /win 26
19:15:21 <pikhq> :(
19:23:46 -!- jaboja has quit (Ping timeout: 252 seconds).
19:24:46 -!- jaboja has joined.
19:25:21 <shachaf> oerjan: Wait, didn't slashlearn do the learned/relearned thing in the past?
19:25:28 <shachaf> Or learn did, or something?
19:25:45 <shachaf> And then there was a bug with the program being run twice that made it not work well?
19:52:43 <prooftechnique> Ooh, mlton is in brew, now
20:11:59 <zzo38> I can program both in C and in JavaScript
20:15:08 <zzo38> Including a Z-machine implementation in JavaScript. I made a simple front-end for use with Node.js although this front-end is simple and does not do word wrap and pausing per page. (The back-end though uses pure JavaScript and does not require Node.js)
20:15:18 -!- rdococ has quit (Read error: Connection reset by peer).
20:17:40 -!- XorSwap has joined.
20:19:59 -!- Lymia has quit (Ping timeout: 260 seconds).
20:22:35 <\oren\> I'm working on making my string library less wonky
20:25:00 <\oren\> in particular, applying a consistent naming scheme
20:25:13 -!- Lymia has joined.
20:27:13 -!- zadock has quit (Quit: Leaving).
20:37:15 -!- XorSwap has quit (Ping timeout: 268 seconds).
20:39:21 <\oren\> maybe i should also run some test programs through valgrind
20:39:45 -!- lynn_ has joined.
20:41:12 -!- lynn has quit (Ping timeout: 260 seconds).
20:48:05 -!- jaboja has quit (Ping timeout: 244 seconds).
20:57:59 -!- lynn_ has changed nick to lynn.
21:04:43 -!- Lord_of_Life has quit (Excess Flood).
21:06:55 -!- PinealGlandOptic has joined.
21:07:37 -!- Lord_of_Life has joined.
21:13:25 -!- XorSwap has joined.
21:16:04 -!- boily has quit (Quit: STAIR CHICKEN).
21:24:02 -!- hppavilion[1] has joined.
21:29:10 -!- XorSwap has quit (Ping timeout: 252 seconds).
21:37:40 -!- XorSwap has joined.
21:42:44 -!- jaboja has joined.
21:44:14 -!- sioux000 has joined.
21:46:36 -!- hppavilion[2] has joined.
21:47:50 <int-e> ah I learned a new term. That PCP question I asked a while ago could be rephrased as stating that the set of PCP instances having a finite solution and set of PCP instances having no infinite solution are /recursively inseparable/.
21:49:34 -!- hppavilion[1] has quit (Ping timeout: 244 seconds).
21:52:00 <\oren\> http://www.orenwatson.be/STR.h.htm http://www.orenwatson.be/STR.c.htm
21:52:04 <int-e> (for those who care but don't remember, the question wasn't whether this is true; it was whether this has been established in the literature)
22:01:48 -!- lynn has quit (Ping timeout: 276 seconds).
22:04:16 -!- ais523 has joined.
22:04:48 <ais523> huh, nyuroki dropped four places?
22:06:02 <b_jonas> ehwhat?
22:08:32 <Lymia> wut
22:08:36 <Lymia> Did I accidentally submit the wrong version
22:09:20 <Lymia> !bfjoust nyuroki https://raw.githubusercontent.com/Lymia/JoustExt/master/examples/nyuroki-esoteric.bf
22:09:22 <EgoBot> ​Score for Lymia_nyuroki: 6.4
22:09:27 <Lymia> !zjoust nyuroki https://raw.githubusercontent.com/Lymia/JoustExt/master/examples/nyuroki-esoteric.bf
22:09:27 <zemhill> Lymia.nyuroki: points 18.62, score 49.60, rank 2/47 (+4)
22:09:43 <Lymia> It appears so
22:10:10 <Lymia> !bfjoust nyuroki http://pastebin.com/raw/p68cTXd8
22:10:12 <EgoBot> ​Score for Lymia_nyuroki: 51.9
22:18:16 <\oren\> I am practicing my cgi scripting
22:18:44 <ais523> back at #2 now, that's better
22:20:43 <\oren\> !zjoust
22:20:43 <zemhill> \oren\: "!zjoust progname code". See http://zem.fi/bfjoust/ for documentation.
22:21:18 <\oren\> I couldn't rember what the tld for zem was
22:21:37 -!- idris-bot has quit (Ping timeout: 240 seconds).
22:21:57 -!- Melvar has quit (Ping timeout: 276 seconds).
22:26:49 -!- Melvar has joined.
22:34:59 -!- oerjan has joined.
22:36:35 -!- hppavilion[2] has quit (Ping timeout: 244 seconds).
22:36:59 <oerjan> <-- i don't remember whether `learn had that problem. we'll see.
22:37:01 <oerjan> er
22:37:05 <oerjan> <shachaf> And then there was a bug with the program being run twice that made it not work well? <-- i don't remember whether `learn had that problem. we'll see.
22:37:12 <oerjan> `url bin/learn
22:37:24 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/bin/learn
22:37:41 -!- hppavilion[2] has joined.
22:37:51 <oerjan> i wouldn't be surprised if it breaks in some case.
22:38:58 <oerjan> shachaf: i suggest you ask nitia.
22:39:11 <oerjan> because i see nothing relevant in the browser.
22:41:16 * oerjan grumpy because bruised his knee on the ice. again.
22:41:36 <oerjan> also because i have a cold.
22:41:47 <shachaf> @metar ENVA
22:41:47 <lambdabot> ENVA 062220Z 11006KT 9999 SCT057 M00/M06 Q1005 RMK WIND 670FT 14011KT
22:41:57 <shachaf> @metar KOAK
22:41:57 <lambdabot> KOAK 062153Z 22012KT 10SM SCT035 BKN110 BKN160 16/06 A2998 RMK AO2 SLP153 T01560061
22:42:05 <shachaf> oerjan: there's an obvious solution to ice problems hth
22:42:33 <oerjan> moving to california has other problems, alas
22:42:50 <shachaf> i can't think of any
22:43:41 <oerjan> i take it you have a very limited imagination
22:44:51 -!- hppavilion[2] has quit (Ping timeout: 244 seconds).
22:46:29 <oerjan> shachaf: anyway, the tests of `learn and `le/rn worked, so if there's a problem it's obviously not reliably so.
22:46:43 <shachaf> `url bin/slashlearn
22:46:44 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/bin/slashlearn
22:46:52 <oerjan> i expect it would have something to do with file creation
22:47:24 <shachaf> whoa whoa whoa
22:47:27 <ais523> what's up with `learn?
22:47:31 <ais523> or potentially up?
22:47:43 <shachaf> http://codu.org/projects/hackbot/fshg/index.cgi/rev/9c7426991c5f
22:47:58 <oerjan> ais523: we've modified `learn and `le/rn to give different output dependent on whether the file already existed
22:48:14 <oerjan> because i was tired of checking everytime someone else forgot to :P
22:48:16 <ais523> ah right
22:48:20 <shachaf> slashlearn is 15 months old?
22:48:22 <shachaf> That's ridiculous.
22:48:25 <shachaf> I refuse to believe that.
22:48:52 <oerjan> shachaf: 17?
22:49:05 <shachaf> Fine.
22:49:15 -!- hppavilion[2] has joined.
22:49:17 <oerjan> ah indeed you did distinguish.
22:49:27 <shachaf> Anyway the logs from whenever I was doing that should explain what the problem was.
22:49:35 <shachaf> Good thing we have an expert logreader here.
22:50:23 <oerjan> eek
22:52:58 <oerjan> http://codu.org/logs/log/_esoteric/2014-11-19#103938shachaf
22:53:21 <shachaf> What happened to you reading logs so I don't have to?
22:53:39 <shachaf> Reading logs of things I said in IRC is usually pretty painful.
22:53:45 <oerjan> i thought you were just opposed to doing the searching
22:54:13 <shachaf> The searching is easy with a timestamp.
22:56:12 <oerjan> http://codu.org/logs/log/_esoteric/2014-11-19#110103fizzie
22:56:25 -!- XorSwap has quit (Quit: Leaving).
22:56:29 <oerjan> apparently it may be broken with files with spaces in them?
22:56:41 <shachaf> Oh, now I remember.
22:56:48 <shachaf> So it's no problem for learn.
22:56:51 <oerjan> `le/rn Te sting/This is horrible?
22:56:55 <HackEgo> Learned «te sting»
22:57:06 <oerjan> this worked...
22:57:15 <oerjan> maybe the bug has been fixed?
22:57:20 <shachaf> `le/rn Te sting/Did you mean "The sting"?
22:57:24 <HackEgo> Relearned «te sting»
22:57:28 <shachaf> Hm.
22:57:30 <shachaf> Maybe.
22:57:55 <shachaf> I do remember talking to fizzie about how it should be fixed.
22:58:15 <shachaf> `revert
22:58:17 -!- hppavilion[2] has quit (Ping timeout: 244 seconds).
22:58:25 <HackEgo> rm: cannot remove `/home/hackbot/hackbot.hg/multibot_cmds/env/.hg/store/data/canary.orig': Is a directory \ Done.
22:58:50 <shachaf> I also remember talking about how revert should be fixed, but that obviously didn't happen.
22:59:10 <ais523> well we clearly can't fix it from inside the bot itself, without some sort of exploit
22:59:25 <oerjan> ais523: well the assumption was that fizzie could...
22:59:30 <oerjan> or at least Gregor
22:59:36 <b_jonas> ``` /bin/cat bin/revert
22:59:37 <HackEgo> ​/bin/cat: bin/revert: No such file or directory
22:59:43 <b_jonas> what
22:59:47 <b_jonas> revert is a real command?
22:59:51 <oerjan> b_jonas: `revert is a builtin
22:59:53 <b_jonas> I see
23:00:04 <b_jonas> but I thought we could read the hg history
23:00:06 <b_jonas> culprits does so
23:00:09 <ais523> has to be, otherwise you could delete `revert and nobody else would be able to delete it
23:00:10 <b_jonas> so can't we make our own revert?
23:00:14 <b_jonas> sure, but
23:00:18 <b_jonas> can't we make a similar command?
23:00:19 <oerjan> b_jonas: yes. so we _could_ create revert these days.
23:00:20 <ais523> *revert it
23:00:26 <ais523> we could potentially make our own revert though, yes
23:00:30 <prooftechnique> Call it rerevert
23:00:30 <oerjan> b_jonas: in fact we have bin/undo
23:00:35 <ais523> it'd just have to have a different name
23:00:42 <ais523> `` echo test > test2
23:00:44 <HackEgo> No output.
23:00:46 <ais523> `undo
23:00:48 <b_jonas> ais523: yes, I know, and termbot has a builtin to revert the whole hard disk to pristine state too
23:00:49 <HackEgo> hg diff: option -c requires argument \ patch: **** Only garbage was found in the patch input.
23:00:52 <ais523> hmm
23:01:02 <ais523> `rm test2
23:01:03 <oerjan> ais523: you need a commit
23:01:05 <HackEgo> No output.
23:01:07 <b_jonas> ``` tr \! \! < bin/undo
23:01:07 <HackEgo> ​#!/bin/sh \ hg diff -c "$@" | patch -p1 -R
23:01:15 <b_jonas> whoa
23:01:17 <shachaf> patch: When I give you garbage in the patch input, I expect garbage in the patch output.
23:01:18 <ais523> b_jonas: what's up with that tr?
23:01:29 -!- p34k has joined.
23:01:55 <b_jonas> ais523: I'm afraid to use cat, because if I wanted to hide something, I'd install a fake bin/cat
23:02:08 <b_jonas> so /bin/cat or perl -pe1 seems safer
23:02:15 <ais523> `` < bin/undo
23:02:15 <HackEgo> No output.
23:02:16 <oerjan> shachaf: the only problem with fizzie fixing it is that it probably won't get updated in Gregor's source repository
23:02:17 <b_jonas> sure, you could mask any of those too
23:02:19 <ais523> hmm
23:02:32 <b_jonas> but still
23:02:35 <ais523> is `paste a builtin?
23:02:44 <ais523> if so then you could use that to prevent something being faked
23:02:57 <ais523> but it seems implausible to me to trust tr but not cat
23:03:02 <ais523> `more bin/undo
23:03:04 <HackEgo> ​#!/bin/sh \ hg diff -c "$@" | patch -p1 -R
23:03:08 <b_jonas> ais523: sure, and it's even worse to trust bin/\`\`
23:03:19 <b_jonas> ais523: but you know how bin/ls is a script, right?
23:03:35 <oerjan> ais523: paste is not a builtin.
23:03:37 <ais523> yes, IIRC it's not for hiding things but for preventing breakage
23:03:49 <b_jonas> sure
23:04:09 <Phantom_Hoover> `paste bin/paste
23:04:10 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/bin/paste
23:04:19 <b_jonas> oh!
23:04:21 <Phantom_Hoover> i mean there's your answer anyway
23:04:26 <b_jonas> let's create a fake bin/revert !
23:04:27 <Phantom_Hoover> check the mercurial repo online
23:04:38 <b_jonas> `tac bin/revert
23:04:40 <HackEgo> ​/hackenv/bin/tac: line 2: bin/revert: No such file or directory
23:05:05 <ais523> `url bin/url
23:05:06 <HackEgo> http://codu.org/projects/hackbot/fshg/index.cgi/file/tip/bin/url
23:05:30 <ais523> that one should be unfakeable; although `url could lie, a human would be able to see the lies in the resulting URL
23:05:51 <b_jonas> `echo $'#!/bin/sh\nexec git reset --hard HEAD^\n' > bin/revert
23:05:52 <HackEgo> ​$'#!/bin/sh\nexec git reset --hard HEAD^\n' > bin/revert
23:06:01 <b_jonas> ``` echo $'#!/bin/sh\nexec git reset --hard HEAD^\n' > bin/revert
23:06:03 <HackEgo> No output.
23:06:14 <b_jonas> nah, no
23:06:43 <b_jonas> ``` echo $'#!/bin/sh\nexec git revert HEAD\n' > bin/revert
23:06:45 <HackEgo> No output.
23:06:49 <b_jonas> don't lose the history
23:07:43 <shachaf> Is the .hg part of the repository read-only or something?
23:08:08 <ais523> it's a read-only mount
23:08:23 <ais523> `` rm -r .hg/*
23:08:24 <HackEgo> rm: cannot remove `.hg/00changelog.i': Read-only file system \ rm: cannot remove `.hg/branch': Read-only file system \ rm: cannot remove `.hg/branchheads.cache': Read-only file system \ rm: cannot remove `.hg/cache': Read-only file system \ rm: cannot remove `.hg/dirstate': Read-only file system \ rm: cannot remove `.hg/last-message.txt': Read-only
23:08:46 <ais523> (the great thing about hackego is that you can enter highly destructive commands almost at will as it's typically easy to fix the results)
23:10:02 <oerjan> b_jonas: why are you using git commands, HackEgo is mercury
23:10:30 <b_jonas> oerjan: it's a fake command, so it doesn't matter, right?
23:10:34 <oerjan> OKAY
23:10:35 <b_jonas> and I don't know mercurial
23:10:43 <tswett> @metar KLAS
23:10:43 <lambdabot> KLAS 062256Z 25017G28KT 10SM FEW050 SCT080 19/M04 A2967 RMK AO2 PK WND 25029/2234 SLP033 T01891039
23:10:51 <b_jonas> read-only? ok, then let's make it
23:11:00 <b_jonas> ``` echo $'#!/bin/sh\nexec git revert --no-commit HEAD\n' > bin/revert
23:11:02 <HackEgo> No output.
23:11:06 <b_jonas> or can we not write the index either?
23:11:18 <ais523> the whole thing is on a read-only file system
23:11:27 <b_jonas> hmm
23:11:30 <ais523> the way you'd implement a `revert, though
23:11:36 <ais523> would be to change the filesystem to match an old revision
23:11:41 <ais523> then let the autocommit do the rest of the work
23:11:41 <b_jonas> sure, we'd need to modify only the filesystem
23:11:45 <b_jonas> without the index
23:12:09 <ais523> bleh, lack of orthogonality in git commands strikes again
23:12:22 <ais523> what you'd want would be a checkout of an old revision without changing the current revision
23:13:08 <ais523> possibly that's git checkout -p commit -- .
23:13:12 <ais523> it's a little unclear from the docs
23:13:18 * ais523 checks how you'd do it in scapegoat
23:13:23 <b_jonas> I think the command for that is git checkout HEAD^
23:13:24 <b_jonas> but I'm not sure
23:13:34 <ais523> b_jonas: that gives you a detached HEAD though
23:13:39 <ais523> because it also changes the current revision
23:13:40 <b_jonas> #``` echo $'#!/bin/sh\nexec git checkout HEAD^\n' > bin/revert
23:13:41 <b_jonas> ah right
23:13:47 <b_jonas> then git checkout HEAD^ .
23:13:54 <b_jonas> ``` echo $'#!/bin/sh\nexec git checkout HEAD^ .\n' > bin/revert
23:13:55 <HackEgo> No output.
23:14:04 -!- lleu has joined.
23:14:12 <ais523> in scapegoat it'd be sg-focus revision .
23:14:24 <ais523> giving any path, including ., prevents the default name changing
23:14:49 <ais523> alternatively, sg-focus hash
23:14:56 <ais523> because a hash is not a name, and thus can't be the default name
23:18:08 -!- AnotherTest has quit (Quit: ZNC - http://znc.in).
23:25:24 <oerjan> <b_jonas> I'll have to be really careful and get an appointment first thing tomorrow <-- fwiw in my recent case i had to wait 2 weeks because my dentist had the flu. he said there was only a little deterioration. my web searches were inconlusive on how urgent it is.
23:27:12 <shachaf> I should probably talk to a dentist too.
23:27:24 <shachaf> I guess I should find one.
23:30:39 -!- blockzombie has joined.
23:30:49 <oerjan> otoh i underestimated the danger once, and now i'm never getting my perfect teeth back :(
23:32:19 <oerjan> (hint: halving the amount you brush can put you over from 0 holes one year to 6 the next.)
23:32:28 <oerjan> *cavities
23:32:39 <b_jonas> oerjan: (a) it's a large hole, and (b) it's annoying
23:32:56 <b_jonas> perfect teeth! I won't get those either, heh
23:33:14 <b_jonas> that ship has sailed
23:33:19 <prooftechnique> just get dentures and call it a day hth
23:35:30 <mad> if I can delay the moment I start getting root canals and stuff by a few decades I'll be happy
23:35:42 <myname> i have great teeth
23:36:08 <myname> no matter the amount of brushing, i don't get any problems
23:36:34 <pikhq> If it's not hurting, then it's probably not *urgent*.
23:36:35 <oerjan> myname: that's what i thought about mine.
23:36:53 <pikhq> If it was hurting a lot but now isn't, though, then it's quite urgent. :)
23:37:05 <myname> well, it is like this for almost three decades
23:37:39 <oerjan> <pikhq> If it was hurting a lot but now isn't, though, then it's quite urgent. :) <-- EEK. that's what i experienced the last couple weeks D:
23:37:59 <oerjan> well maybe not a "lot". but somehow it stopped.
23:38:46 -!- sioux000 has quit (Quit: Leaving.).
23:39:11 <oerjan> and i had a dentist appointment and couldn't get myself awake for it.
23:39:28 <b_jonas> pikhq: the filling fell out recently. that means now there's a big gaping hole IN MY TEETH. the hole is impossible to clear, so it will always be full of food. it doesn't hurt now, but it will very soon.
23:39:31 <prooftechnique> My occasional tooth pain is usually mitigated by increasing my vitamin intake
23:39:38 <prooftechnique> I think D and B12 are the big ones?
23:39:57 <oerjan> prooftechnique: i'm taking vitamin pills already.
23:40:04 <olsner> just make sure to mix in enough placebo
23:40:07 <prooftechnique> And ones that I often don't get enough of, probably
23:40:09 <b_jonas> and it's not just that it will hurt, but that very soon it will be so inflammed that it will be impossible to make a permanent filling, so I'll need a temporary one and then another appointment.
23:40:27 <myname> olsner: :D
23:40:36 <b_jonas> the question is not if, but when
23:40:43 <b_jonas> the hole is ugly and deep and big
23:40:46 <b_jonas> and between two teeth
23:40:49 <b_jonas> where it's impossible to clear
23:41:06 <oerjan> <myname> well, it is like this for almost three decades <-- me too
23:41:20 <pikhq> b_jonas: Well, that's at least not immediately worrying but is definitely something to fix.
23:43:18 <oerjan> i had a single cavity in my teens, in a tooth that was later removed due to orthodontics. (at least, later dentists couldn't find it.) then nothing until i was 44.
23:43:42 -!- hppavilion[2] has joined.
23:44:52 <oerjan> b_jonas: OK GET IT FIXED
23:44:52 <HackEgo> [wiki] [[Language list]] https://esolangs.org/w/index.php?diff=46501&oldid=46498 * B jonas * (+91)
23:45:48 <oerjan> i do recall from the web searches that size mattered.
23:46:17 <myname> that's what she said
23:48:19 <oerjan> yoda disagrees
23:49:32 <ais523> ugh, this conversation is causing my teeth to hurt :-(
23:49:36 <ais523> nocebo effect is annoying
23:49:47 <b_jonas> ais523: sorry
23:49:50 <prooftechnique> I'm so sad that Voxelwiki is gone. They left my page up for so long
23:49:58 <ais523> it's time for a routine dentist appointment for me anyway around now though so I may as well book one
23:50:05 <b_jonas> I have some placebo vitamin pills, but not fluoride ones for your teeth
23:50:27 -!- jaboja has quit (Ping timeout: 248 seconds).
23:50:34 <ais523> well I use fluoride toothpaste
23:50:35 <prooftechnique> Try various placebos until you find one that works for you. Surely one of them must be the right kind of fake
23:50:44 <Lymia> !bfjoust test (,)*1000<
23:50:46 <EgoBot> ​Score for Lymia_test: 0.0
23:50:49 <Lymia> !bfjoust test (.)*1000<
23:50:51 <EgoBot> ​Score for Lymia_test: 6.1
23:50:57 <Lymia> !ztest test (,)*1000<
23:50:58 <zemhill> Lymia.test: points -46.00, score 0.00, rank 47/47
23:51:01 <Lymia> !ztest test (.)*1000<
23:51:01 <zemhill> Lymia.test: points -35.33, score 2.72, rank 47/47
23:51:15 <ais523> I think most BF Joust interpts treat , as a comment
23:51:19 <ais523> rather than as a no-op
23:51:45 <Lymia> Yeah
23:51:47 <Lymia> I was just confirming
23:52:19 <b_jonas> !ztest ddecoy (+)*127>(+)*129(.)*-1
23:52:19 <zemhill> b_jonas.ddecoy: points -27.57, score 4.41, rank 47/47
23:52:44 <oerjan> <Lymia> I hope that's not actual Perl <-- it could be if you defined @teeth, brush and floss right, no?
23:53:06 <Lymia> bleh implicit variables.
23:53:06 <Lymia> :(
23:54:04 <prooftechnique> !bfjoust ([])*1000<
23:54:04 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
23:54:04 <oerjan> <ais523> it's time for a routine dentist appointment for me anyway around now though so I may as well book one <-- my dentist sends out a card with an appointment once a year. next monday, in fact.
23:54:10 <prooftechnique> !bfjoust test ([])*1000<
23:54:12 <EgoBot> ​Score for prooftechnique_test: 6.1
23:54:25 <prooftechnique> !ztest test ([])*1000<
23:54:25 <zemhill> prooftechnique.test: points -32.14, score 2.99, rank 47/47
23:54:34 <prooftechnique> Not as bad as I expected
23:54:52 <b_jonas> that doesn't look like a very sensible program
23:55:05 <b_jonas> I mean, isn't (.)*-1 better than that?
23:55:50 <b_jonas> !bfjoust pause (.)*-1
23:55:52 <EgoBot> ​Score for b_jonas_pause: 6.1
23:56:05 <ais523> b_jonas: Lymia was checking whether . and , did the same thing
23:56:20 <ais523> the program was designed so that the the score would change based on how long the program lasted before committing suicide
23:56:23 <b_jonas> !bfjoust pause ()*-1
23:56:26 <EgoBot> ​Score for b_jonas_pause: 6.1
23:56:38 <ais523> as some programs will suicide aginst a no-op program in less than 1000 cycles
23:56:47 <ais523> also, "()*-1" is quite the special case
23:56:49 <b_jonas> ais523: yeah
23:56:55 <ais523> !zjoust b_jonas_pause ()*-1
23:56:55 <zemhill> ais523.b_jonas_pause: points -32.14, score 2.99, rank 47/47
23:57:04 <ais523> wouldn't surprise me if some interps hanged on that
23:57:29 <Lymia> !bfjoust two_people_running_from_a_shark >+([+]) * -1=≡(>[-])> *-1=≡(>[-])>
23:57:32 <EgoBot> ​Score for Lymia_two_people_running_from_a_shark: 1.8
23:57:44 <b_jonas> !bfjoust pause ((({})*999999)*9999999)*999999
23:57:55 <prooftechnique> !bfjoust test (-[{>}+])%3
23:57:57 <ais523> I'm not sure you can put comments between the () and the *
23:57:58 <oerjan> ais523: yeah fizzie did some special code to catch empty loop blocks
23:58:02 <Lymia> !bfjoust two_people_running_from_a_shark >+([+]) *-1=≡(>[-])> *-1=≡(>[-])>
23:58:08 <oerjan> so it should not hang zemhill at least
23:58:29 <Lymia> !ztest two_people_running_from_a_shark >+([+]) *-1=≡(>[-])> *-1=≡(>[-])>
23:58:30 <zemhill> Lymia.two_people_running_from_a_shark: points -18.19, score 3.93, rank 47/47
23:58:43 <prooftechnique> !ztest test (-[{>}+])%3
23:58:43 <zemhill> prooftechnique.test: points -43.26, score 0.28, rank 47/47
23:58:45 <Lymia> !ztest two_people_running_from_a_shark >+([]+) *-1=≡(>[-])> *-1=≡(>[-])>
23:58:46 <zemhill> Lymia.two_people_running_from_a_shark: points -22.88, score 3.54, rank 47/47
23:58:47 <ais523> I just tested juiced
23:58:55 <b_jonas> did it reply to mine yet?
23:58:58 <prooftechnique> !ztest test (<{(+{(>)*5}-)%3})%5
23:58:58 <zemhill> prooftechnique.test: points -46.00, score 0.00, rank 47/47
23:59:01 <ais523> it appears to slow down noticeably, and outputs a debug message ()*10000001
23:59:06 <prooftechnique> Fascinatingly bad
23:59:13 <ais523> so I guess it's actually running 10 million empty loop iterations
23:59:18 <ais523> prooftechnique: it starts with a <
23:59:19 <Lymia> !ztest two_people_running_from_a_shark >+([+]) *8=≡(>[-])> *-1=≡(>[-])>
23:59:20 <zemhill> Lymia.two_people_running_from_a_shark: points -14.67, score 8.11, rank 47/47
23:59:23 <ais523> that is not normally a good way to do well
23:59:28 <Lymia> !ztest two_people_running_from_a_shark >+([]) *8=≡(>[-])> *-1=≡(>[-])>
23:59:29 <zemhill> Lymia.two_people_running_from_a_shark: points -33.48, score 2.77, rank 47/47
23:59:38 <ais523> in fact, editing a program to start with an < is the normal way to remove it from the hill
23:59:39 <Lymia> !ztest two_people_running_from_a_shark >+([+]) *8=≡(>[-])> *-1=≡(>[-])>
23:59:40 <zemhill> Lymia.two_people_running_from_a_shark: points -14.67, score 8.11, rank 47/47
23:59:45 <oerjan> !zjoust test (()*-1,)*-1<
23:59:46 <zemhill> oerjan.test: points -46.00, score 0.00, rank 47/47
←2016-03-05 2016-03-06 2016-03-07→ ↑2016 ↑all